route-engine-js 1.37.0 → 1.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RouteEngine.js +2 -2
- package/package.json +3 -2
package/dist/RouteEngine.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var xd=Object.defineProperty;var Ed=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Sd=(e,r)=>{for(var n in r)xd(e,n,{get:r[n],enumerable:!0})};var wu=Ed(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});function Iu(e){let r=e.length,n=0,o=0,a;for(;o<r;)n++,a=e.charCodeAt(o++),a>=55296&&a<=56319&&o<r&&(a=e.charCodeAt(o),(a&64512)===56320&&o++);return n}Si.default=Iu;Iu.code='require("ajv/dist/runtime/ucs2length").default'});var Ji=Symbol.for("immer-nothing"),Gi=Symbol.for("immer-draftable"),Re=Symbol.for("immer-state");function De(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Gr=Object.getPrototypeOf;function we(e){return!!e&&!!e[Re]}function Or(e){return e?Qi(e)||Array.isArray(e)||!!e[Gi]||!!e.constructor?.[Gi]||tn(e)||nn(e):!1}var Rd=Object.prototype.constructor.toString();function Qi(e){if(!e||typeof e!="object")return!1;let r=Gr(e);if(r===null)return!0;let n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return n===Object?!0:typeof n=="function"&&Function.toString.call(n)===Rd}function en(e){return we(e)||De(15,e),e[Re].base_}function Jt(e,r){rn(e)===0?Reflect.ownKeys(e).forEach(n=>{r(n,e[n],e)}):e.forEach((n,o)=>r(o,n,e))}function rn(e){let r=e[Re];return r?r.type_:Array.isArray(e)?1:tn(e)?2:nn(e)?3:0}function js(e,r){return rn(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Zi(e,r,n){let o=rn(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function Od(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function tn(e){return e instanceof Map}function nn(e){return e instanceof Set}function Rr(e){return e.copy_||e.base_}function Ns(e,r){if(tn(e))return new Map(e);if(nn(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=Qi(e);if(r===!0||r==="class_only"&&!n){let o=Object.getOwnPropertyDescriptors(e);delete o[Re];let a=Reflect.ownKeys(o);for(let t=0;t<a.length;t++){let s=a[t],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(Gr(e),o)}else{let o=Gr(e);if(o!==null&&n)return{...e};let a=Object.create(o);return Object.assign(a,e)}}function Vs(e,r=!1){return sn(e)||we(e)||!Or(e)||(rn(e)>1&&(e.set=e.add=e.clear=e.delete=Cd),Object.freeze(e),r&&Object.entries(e).forEach(([n,o])=>Vs(o,!0))),e}function Cd(){De(2)}function sn(e){return Object.isFrozen(e)}var $d={};function Cr(e){let r=$d[e];return r||De(0,e),r}var pt;function ea(){return pt}function _d(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Hi(e,r){r&&(Cr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function Ds(e){Ls(e),e.drafts_.forEach(Td),e.drafts_=null}function Ls(e){e===pt&&(pt=e.parent_)}function Xi(e){return pt=_d(pt,e)}function Td(e){let r=e[Re];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function Wi(e,r){r.unfinalizedDrafts_=r.drafts_.length;let n=r.drafts_[0];return e!==void 0&&e!==n?(n[Re].modified_&&(Ds(r),De(4)),Or(e)&&(e=Qt(r,e),r.parent_||Zt(r,e)),r.patches_&&Cr("Patches").generateReplacementPatches_(n[Re].base_,e,r.patches_,r.inversePatches_)):e=Qt(r,n,[]),Ds(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Ji?e:void 0}function Qt(e,r,n){if(sn(r))return r;let o=r[Re];if(!o)return Jt(r,(a,t)=>Ki(e,o,r,a,t,n)),r;if(o.scope_!==e)return r;if(!o.modified_)return Zt(e,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let a=o.copy_,t=a,s=!1;o.type_===3&&(t=new Set(a),a.clear(),s=!0),Jt(t,(i,l)=>Ki(e,o,a,i,l,n,s)),Zt(e,a,!1),n&&e.patches_&&Cr("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Ki(e,r,n,o,a,t,s){if(we(a)){let i=t&&r&&r.type_!==3&&!js(r.assigned_,o)?t.concat(o):void 0,l=Qt(e,a,i);if(Zi(n,o,l),we(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Or(a)&&!sn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Qt(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&Zt(e,a)}}function Zt(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Vs(r,n)}function jd(e,r){let n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:ea(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,t=Fs;n&&(a=[o],t=dt);let{revoke:s,proxy:i}=Proxy.revocable(a,t);return o.draft_=i,o.revoke_=s,i}var Fs={get(e,r){if(r===Re)return e;let n=Rr(e);if(!js(n,r))return Nd(e,n,r);let o=n[r];return e.finalized_||!Or(o)?o:o===_s(e.base_,r)?(Ts(e),e.copy_[r]=qs(o,e)):o},has(e,r){return r in Rr(e)},ownKeys(e){return Reflect.ownKeys(Rr(e))},set(e,r,n){let o=ra(Rr(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=_s(Rr(e),r),t=a?.[Re];if(t&&t.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(Od(n,a)&&(n!==void 0||js(e.base_,r)))return!0;Ts(e),Ms(e)}return e.copy_[r]===n&&(n!==void 0||r in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=n,e.assigned_[r]=!0),!0},deleteProperty(e,r){return _s(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,Ts(e),Ms(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){let n=Rr(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){De(11)},getPrototypeOf(e){return Gr(e.base_)},setPrototypeOf(){De(12)}},dt={};Jt(Fs,(e,r)=>{dt[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}});dt.deleteProperty=function(e,r){return dt.set.call(this,e,r,void 0)};dt.set=function(e,r,n){return Fs.set.call(this,e[0],r,n,e[0])};function _s(e,r){let n=e[Re];return(n?Rr(n):e)[r]}function Nd(e,r,n){let o=ra(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function ra(e,r){if(!(r in e))return;let n=Gr(e);for(;n;){let o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=Gr(n)}}function Ms(e){e.modified_||(e.modified_=!0,e.parent_&&Ms(e.parent_))}function Ts(e){e.copy_||(e.copy_=Ns(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Dd=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(r,n,o)=>{if(typeof r=="function"&&typeof n!="function"){let t=n;n=r;let s=this;return function(l=t,...u){return s.produce(l,c=>n.call(this,c,...u))}}typeof n!="function"&&De(6),o!==void 0&&typeof o!="function"&&De(7);let a;if(Or(r)){let t=Xi(this),s=qs(r,void 0),i=!0;try{a=n(s),i=!1}finally{i?Ds(t):Ls(t)}return Hi(t,o),Wi(a,t)}else if(!r||typeof r!="object"){if(a=n(r),a===void 0&&(a=r),a===Ji&&(a=void 0),this.autoFreeze_&&Vs(a,!0),o){let t=[],s=[];Cr("Patches").generateReplacementPatches_(r,a,t,s),o(t,s)}return a}else De(1,r)},this.produceWithPatches=(r,n)=>{if(typeof r=="function")return(s,...i)=>this.produceWithPatches(s,l=>r(l,...i));let o,a;return[this.produce(r,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){Or(e)||De(8),we(e)&&(e=ur(e));let r=Xi(this),n=qs(e,void 0);return n[Re].isManual_=!0,Ls(r),n}finishDraft(e,r){let n=e&&e[Re];(!n||!n.isManual_)&&De(9);let{scope_:o}=n;return Hi(o,r),Wi(void 0,o)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,r){let n;for(n=r.length-1;n>=0;n--){let a=r[n];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}n>-1&&(r=r.slice(n+1));let o=Cr("Patches").applyPatches_;return we(e)?o(e,r):this.produce(e,a=>o(a,r))}};function qs(e,r){let n=tn(e)?Cr("MapSet").proxyMap_(e,r):nn(e)?Cr("MapSet").proxySet_(e,r):jd(e,r);return(r?r.scope_:ea()).drafts_.push(n),n}function ur(e){return we(e)||De(10,e),ta(e)}function ta(e){if(!Or(e)||sn(e))return e;let r=e[Re],n;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=Ns(e,r.scope_.immer_.useStrictShallowCopy_)}else n=Ns(e,!0);return Jt(n,(o,a)=>{Zi(n,o,ta(a))}),r&&(r.finalized_=!1),n}var Ce=new Dd,on=Ce.produce,I0=Ce.produceWithPatches.bind(Ce),w0=Ce.setAutoFreeze.bind(Ce),k0=Ce.setUseStrictShallowCopy.bind(Ce),v0=Ce.applyPatches.bind(Ce),A0=Ce.createDraft.bind(Ce),P0=Ce.finishDraft.bind(Ce);var P={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},W={EQ:0,NEQ:1,GT:2,LT:3,GTE:4,LTE:5,AND:6,OR:7,IN:8,ADD:10,SUBTRACT:11},Hr={NOT:0};var j=class extends Error{constructor(r){super(`Parse Error: ${r}`),this.name="JemplParseError"}},Ee=class extends Error{constructor(r){super(`Render Error: ${r}`),this.name="JemplRenderError"}};var Us=e=>{if(!e||e.trim()==="")throw new j("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new j(`Invalid comparison operator '${e.includes("===")?"===":"!=="}' - did you mean '${n}'? (got: '${e}')`)}let r=["<",">","<=",">=","==","!="];for(let n of r)if(e.trim().endsWith(n))throw new j(`Incomplete comparison expression - missing right operand (got: '${e}')`)},na=e=>{if(e.trim().endsWith(" in"))throw new j(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new j(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[r,n]=e.split(" in ");if(!n||n.trim()==="")throw new j(`Missing iterable expression after 'in' (got: '$for ${e}')`);let o=r.includes(",")?r.split(",").map(a=>a.trim()):[r.trim()];for(let a of o){if(!a)throw new j(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new j(`Invalid loop syntax (got: '$for ${e}')`)}};var sa=(e,r,n=!1)=>{if(r===null)return new Ee(`Cannot iterate over null value at '$for ${e}'`);if(r===void 0)return new Ee(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof r;return n?new Ee(`Cannot iterate over non-array value in loop '${e}' - got ${o} instead`):new Ee(`Cannot iterate over non-array value (got: ${o}) at '$for ${e}'`)},oa=(e,r)=>{let n=r&&Object.keys(r).length>0?Object.keys(r).join(", "):"no custom functions provided";return new Ee(`Unknown function '${e}' (${n})`)};var Ld=(e,r,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=J(e,{functions:o,partials:a},r,{});return s===void 0?{}:s},J=(e,r,n,o)=>{let a=r.functions||r;if(e.var&&!e.type)return ge(e.var,n,o);if(e.type===P.LITERAL)return e.value;if(e.type===P.VARIABLE)return ge(e.path,n,o);if(e.type===P.INTERPOLATION)return qd(e.parts,r,n,o);switch(e.type){case P.FUNCTION:return aa(e,r,n,o);case P.BINARY:return la(e,r,n,o);case P.UNARY:return ca(e,r,n,o);case P.CONDITIONAL:return Fd(e,r,n,o);case P.LOOP:return Gd(e,r,n,o);case P.OBJECT:return Xd(e,r,n,o);case P.ARRAY:return Wd(e,r,n,o);case P.PARTIAL:return Kd(e,r,n,o);case P.PATH_REFERENCE:return Jd(e,r,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},ia=new Map,Md=e=>{let r=[],n="",o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(t==="[")n&&(r.push({type:"property",value:n}),n=""),o=!0;else if(t==="]"){if(o&&n){let s=n.trim();if(/^\d+$/.test(s))r.push({type:"index",value:parseInt(s,10)});else if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")){let i=s.slice(1,-1);r.push({type:"property",value:i})}else r.push({type:"property",value:s});n=""}o=!1}else n+=t}return n&&r.push({type:"property",value:n}),r},ge=(e,r,n)=>{if(!e)return;if(e in n)return n[e];let o=ia.get(e);if(!o){let t=[],s="",i=0;for(let l=0;l<e.length;l++){let u=e[l];u==="["?(i++,s+=u):u==="]"?(i--,s+=u):u==="."&&i===0?s&&(t.push(s),s=""):s+=u}s&&t.push(s),o=[];for(let l of t){let u=Md(l.trim());o.push(...u)}ia.set(e,o)}let a=r;for(let t=0;t<o.length;t++){let s=o[t];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},qd=(e,r,n,o)=>{let a=[];for(let t of e)if(typeof t=="string")a.push(t);else{let s=J(t,r,n,o);a.push(s!=null?String(s):"")}return a.join("")},aa=(e,r,n,o)=>{let a=r.functions||r,t=a[e.name];if(!t)throw oa(e.name,a);let s=e.args.map(i=>J(i,r,n,o));return t(...s)},pr=(e,r,n,o)=>{if(e.var&&!e.type)return ge(e.var,n,o);switch(e.type){case P.VARIABLE:return ge(e.path,n,o);case P.LITERAL:return e.value;case P.BINARY:return la(e,r,n,o);case P.UNARY:return ca(e,r,n,o);case P.FUNCTION:return aa(e,r,n,o);default:return J(e,r,n,o)}},la=(e,r,n,o)=>{if(e.op===W.AND||e.op===W.OR){let s=pr(e.left,r,n,o),i=pr(e.right,r,n,o);switch(e.op){case W.AND:return s&&i;case W.OR:return s||i}}let a=J(e.left,r,n,o),t=J(e.right,r,n,o);switch(e.op){case W.EQ:return a==t;case W.NEQ:return a!=t;case W.GT:return a>t;case W.LT:return a<t;case W.GTE:return a>=t;case W.LTE:return a<=t;case W.IN:return Array.isArray(t)?t.includes(a):!1;case W.ADD:if(typeof a!="number"||typeof t!="number")throw new Ee(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof t}`);return a+t;case W.SUBTRACT:if(typeof a!="number"||typeof t!="number")throw new Ee(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof t}`);return a-t;default:throw new Error(`Unknown binary operator: ${e.op}`)}},ca=(e,r,n,o)=>{let a=e.op===Hr.NOT?pr(e.operand,r,n,o):J(e.operand,r,n,o);if(e.op===Hr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},Vd=(e,r,n,o)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===P.VARIABLE)if(ge(a.path,n,o)){let s=e.bodies[0];if(s.type===P.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let u=l.parsedKey?J(l.parsedKey,r,n,o):l.key,c=l.value;if(c.type===P.LITERAL)i[u]=c.value;else if(c.type===P.VARIABLE)i[u]=ge(c.path,n,o);else if(c.type===P.INTERPOLATION){let p=[];for(let m of c.parts)if(typeof m=="string")p.push(m);else if(m.type===P.VARIABLE){let d=ge(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=J(m,r,n,o);p.push(d!=null?String(d):"")}i[u]=p.join("")}else i[u]=J(c,r,n,o)}return i}}else{let s=e.bodies[1];if(s.type===P.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let u=l.parsedKey?J(l.parsedKey,r,n,o):l.key,c=l.value;if(c.type===P.LITERAL)i[u]=c.value;else if(c.type===P.VARIABLE)i[u]=ge(c.path,n,o);else if(c.type===P.INTERPOLATION){let p=[];for(let m of c.parts)if(typeof m=="string")p.push(m);else if(m.type===P.VARIABLE){let d=ge(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=J(m,r,n,o);p.push(d!=null?String(d):"")}i[u]=p.join("")}else i[u]=J(c,r,n,o)}return i}}}return null},Fd=(e,r,n,o)=>{let a=Vd(e,r,n,o);if(a!==null)return a;for(let t=0;t<e.conditions.length;t++){let s=e.conditions[t];if(s===null||pr(s,r,n,o))return J(e.bodies[t],r,n,o)}return ua},Ud=(e,r)=>{let n=e.body,o=e.itemVar;if(n.type===P.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===P.VARIABLE){let a=n.conditions[0].path,t=n.bodies[0];if(a.startsWith(o+".")){let s=a.substring(o.length+1);if(t.type===P.OBJECT&&t.properties.length<=5){for(let l of t.properties)if(l.parsedKey)return null;let i=[];for(let l=0;l<r.length;l++){let u=r[l];if(u[s]){let c={};for(let p of t.properties){let m=p.key,d=p.value;if(d.type===P.LITERAL)c[m]=d.value;else if(d.type===P.VARIABLE){let f=d.path;if(f===o)c[m]=u;else if(f.startsWith(o+".")){let y=f.substring(o.length+1);c[m]=u[y]}else return null}else if(d.type===P.INTERPOLATION){let f=[],y=!0;for(let g of d.parts)if(typeof g=="string")f.push(g);else if(g.type===P.VARIABLE){let h=g.path;if(h===o)f.push(u!=null?String(u):"");else if(h.startsWith(o+".")){let w=h.substring(o.length+1),b=u[w];f.push(b!=null?String(b):"")}else{y=!1;break}}else{y=!1;break}if(!y)return null;c[m]=f.join("")}else return null}i.push(c)}}return i}}}return null},Bd=(e,r)=>{let n=e.body,o=e.itemVar,a=Ud(e,r);if(a!==null)return a;if(n.type===P.OBJECT&&n.properties.length<=5&&!n.whenCondition){for(let i of n.properties)if(i.parsedKey)return null;let t=[],s=!0;for(let i of n.properties){let l=i.key,u=i.value;if(u.type===P.LITERAL)t.push({key:l,type:"literal",value:u.value});else if(u.type===P.VARIABLE){let c=u.path;if(c===o)t.push({key:l,type:"item"});else if(c.startsWith(o+".")){let p=c.substring(o.length+1);if(!p.includes(".")&&!p.includes("["))t.push({key:l,type:"prop",prop:p});else{s=!1;break}}else{s=!1;break}}else if(u.type===P.INTERPOLATION&&u.parts.length===1){let c=u.parts[0];if(c.type===P.VARIABLE){let p=c.path;if(p===o)t.push({key:l,type:"item_string"});else if(p.startsWith(o+".")){let m=p.substring(o.length+1);if(!m.includes(".")&&!m.includes("["))t.push({key:l,type:"prop_string",prop:m});else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}if(s){let i=new Array(r.length);if(t.length===3&&t[0].type==="prop"&&t[0].key==="id"&&t[1].type==="prop_string"&&t[1].key==="title"&&t[2].type==="prop"&&t[2].key==="completed")for(let l=0;l<r.length;l++){let u=r[l];i[l]={id:u.id,title:u.title!=null?String(u.title):"",completed:u.completed}}else for(let l=0;l<r.length;l++){let u=r[l],c={};for(let p of t)if(p.type==="literal")c[p.key]=p.value;else if(p.type==="item")c[p.key]=u;else if(p.type==="prop")c[p.key]=u[p.prop];else if(p.type==="item_string")c[p.key]=u!=null?String(u):"";else if(p.type==="prop_string"){let m=u[p.prop];c[p.key]=m!=null?String(m):""}i[l]=c}return i}}return null},zd=(e,r,n,o,a)=>{let t=[],s=e.body;if(s.type===P.OBJECT&&s.fast!==!1){let i=e.itemVar,l=e.indexVar;for(let u=0;u<a.length;u++){let c=a[u],p={},m={...o,[i]:c,...l&&{[l]:u}};m.__paths__||(m.__paths__=o.__paths__||{});let d=e.iterable.path||"";if(o&&o.__paths__&&d){let f=d.split("."),y=f[0];y in o.__paths__&&(d=o.__paths__[y],f.length>1&&(d+="."+f.slice(1).join(".")))}m.__paths__={...m.__paths__,[i]:`${d}[${u}]`,...l&&{[l]:u}};for(let f of s.properties){let y=f.parsedKey?J(f.parsedKey,r,n,m):f.key,g=f.value;if(g.type===P.LITERAL)p[y]=g.value;else if(g.type===P.VARIABLE){let h=g.path;if(h===i)p[y]=c;else if(h===l)p[y]=u;else if(h.startsWith(i+".")){let w=h.substring(i.length+1);!w.includes(".")&&!w.includes("[")?p[y]=c[w]:p[y]=ge(h,n,{...o,[i]:c,...l&&{[l]:u}})}else p[y]=ge(h,n,{...o,[i]:c,...l&&{[l]:u}})}else if(g.type===P.INTERPOLATION){let h=[];for(let w of g.parts)if(typeof w=="string")h.push(w);else if(w.type===P.VARIABLE){let b=w.path,E;if(b===i)E=c;else if(b===l)E=u;else if(b.startsWith(i+".")){let k=b.substring(i.length+1);!k.includes(".")&&!k.includes("[")?E=c[k]:E=ge(b,n,{...o,[i]:c,...l&&{[l]:u}})}else E=ge(b,n,{...o,[i]:c,...l&&{[l]:u}});h.push(E!=null?String(E):"")}else{let b={...o,[i]:c,...l&&{[l]:u}},E=J(w,r,n,b);h.push(E!=null?String(E):"")}p[y]=h.join("")}else{let h={...o,[i]:c,...l&&{[l]:u}};p[y]=J(g,r,n,h)}}t.push(p)}return t}return null},Yd=(e,r,n)=>{let o=e.body;if(o.type===P.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let t=o.properties[0].value;if(t.type===P.CONDITIONAL&&t.conditions.length===1&&t.conditions[0].type===P.VARIABLE&&t.conditions[0].path==="item.visible"){let s=t.bodies[0];if(s.type===P.OBJECT&&s.properties.length===2){let i=s.properties[0],l=s.properties[1];if(i.key==="id"&&i.value.type===P.VARIABLE&&i.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===P.CONDITIONAL){let u=[];for(let c=0;c<r.length;c++){let p=r[c];if(p.visible){let m={id:p.id};p.highlighted?(m.highlight=!0,m.message=`This item is highlighted: ${p.name}`):(m.highlight=!1,m.message=p.name),u.push(m)}}return u}}}}return null},Gd=(e,r,n,o)=>{let a=J(e.iterable,r,n,o);if(!Array.isArray(a)){let u,c=!1;if(e.iterable.type===P.FUNCTION){c=!0;let m=e.iterable.args.map(d=>d.type===P.LITERAL?typeof d.value=="string"?`'${d.value}'`:String(d.value):d.type===P.VARIABLE?d.path:d.type===P.FUNCTION?`${d.name}(...)`:"?").join(", ");u=`${e.iterable.name}(${m})`}else u=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${u}`;throw sa(p,a,c)}if(!e.indexVar){let u=Yd(e,a,e.itemVar);if(u!==null)return u}if(!e.indexVar){let u=Bd(e,a);if(u!==null)return u}let t=zd(e,r,n,o,a);if(t!==null)return t;let s=[],i=e.iterable.path||"";if(o&&o.__paths__&&i){let u=i.split("."),c=u[0];c in o.__paths__&&(i=o.__paths__[c],u.length>1&&(i+="."+u.slice(1).join(".")))}let l=!1;e.body.type===P.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(u=>u.type===P.OBJECT&&u.properties.some(c=>c.key.startsWith("$if ")||c.key.startsWith("$when "))));for(let u=0;u<a.length;u++){let c=e.indexVar?{...o,[e.itemVar]:a[u],[e.indexVar]:u}:{...o,[e.itemVar]:a[u]};c.__paths__||(c.__paths__=o.__paths__||{}),c.__paths__={...c.__paths__,[e.itemVar]:`${i}[${u}]`},e.indexVar&&(c.__paths__[e.indexVar]=u);let p=J(e.body,r,n,c);if(Array.isArray(p)&&p.length===1&&!l){let m=p[0];s.push(m===void 0?{}:m)}else s.push(p===void 0?{}:p)}return s},Hd=(e,r,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],t=a.parsedKey?J(a.parsedKey,r,n,o):a.key,s=a.value;if(s.type===P.OBJECT&&s.properties.length<=10&&!s.whenCondition){let i={},l={},u=!0;for(let c of s.properties){let p=c.parsedKey?J(c.parsedKey,r,n,o):c.key,m=c.value;if(m.type===P.LITERAL)l[p]=m.value;else if(m.type===P.VARIABLE)l[p]=ge(m.path,n,o);else if(m.type===P.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===P.VARIABLE){let y=ge(f.path,n,o);d.push(y!=null?String(y):"")}else{u=!1;break}if(!u)break;l[p]=d.join("")}else if(m.type===P.OBJECT&&m.properties.length<=5){let d={};for(let f of m.properties){let y=f.key,g=f.value;if(g.type===P.LITERAL)d[y]=g.value;else if(g.type===P.VARIABLE)d[y]=ge(g.path,n,o);else if(g.type===P.INTERPOLATION){let h=[];for(let w of g.parts)if(typeof w=="string")h.push(w);else if(w.type===P.VARIABLE){let b=ge(w.path,n,o);h.push(b!=null?String(b):"")}else{u=!1;break}if(!u)break;d[y]=h.join("")}else{u=!1;break}}if(!u)break;l[p]=d}else{u=!1;break}}if(u)return i[t]=l,i}}return null},Xd=(e,r,n,o)=>{let a=r.functions||r;if(e.whenCondition&&!pr(e.whenCondition,a,n,o))return;let t=Hd(e,r,n,o);if(t!==null)return t;if(e.fast){let u={};for(let c of e.properties){let p=c.parsedKey?J(c.parsedKey,r,n,o):c.key,m=c.value;if(m.type===P.LITERAL)u[p]=m.value;else if(m.type===P.VARIABLE)u[p]=ge(m.path,n,o);else if(m.type===P.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===P.VARIABLE){let y=ge(f.path,n,o);d.push(y!=null?String(y):"")}else{let y=J(f,r,n,o);d.push(y!=null?String(y):"")}u[p]=d.join("")}else u[p]=J(m,r,n,o)}return u}let s={},i=null,l=!1;for(let u of e.properties)if(!u.key.startsWith("$if ")&&!u.key.match(/^\$if\s+\w+.*:?$/)&&!u.key.startsWith("$elif")&&!u.key.startsWith("$else")&&!u.key.startsWith("$for ")){l=!0;break}for(let u of e.properties)if(u.key.startsWith("$if ")||u.key.match(/^\$if\s+\w+.*:?$/)){let c=J(u.value,r,n,o);if(!l&&c!==null&&c!==void 0)return Array.isArray(c)&&c.length===1?c[0]:c;typeof c=="object"&&c!==null&&!Array.isArray(c)&&Object.assign(s,c)}else if(u.key.startsWith("$for ")){if(e.properties.length===1)return J(u.value,r,n,o)}else{let c=u.value;if(c&&c.type===P.OBJECT&&c.properties){let p=c.properties.find(m=>m.key.startsWith("$for "));if(p){let m=J(p.value,r,n,o);m!==void 0&&(s[u.key]=m)}else{let m=J(u.value,r,n,o);m!==void 0&&(s[u.key]=m)}}else{let p=u.parsedKey?J(u.parsedKey,r,n,o):u.key,m=J(u.value,r,n,o);m!==void 0&&(s[p]=m)}}return s},ua={},Wd=(e,r,n,o)=>{let a=[];for(let t of e.items)if(t.type===P.LOOP){let s=J(t,r,n,o);Array.isArray(s)&&t.flatten!==!1?a.push(...s):a.push(s)}else{let s=J(t,r,n,o);s!==ua&&s!==void 0&&a.push(s)}return a},Kd=(e,r,n,o)=>{let{name:a,data:t,whenCondition:s}=e,i=r.partials||{},l=r.functions||r;if(s&&!pr(s,l,n,o))return;if(!i[a])throw new Ee(`Partial '${a}' is not defined`);let u=o._partialStack||[];if(u.includes(a))throw new Ee(`Circular partial reference detected: ${a}`);let c=i[a],p=n,m={...o,_partialStack:[...u,a]};if(o){p={...n};for(let d of Object.keys(o))d.startsWith("_")||(p[d]=o[d])}if(t){let d=J(t,r,n,o);p={...p,...d}}return J(c,r,p,m)},Jd=(e,r,n,o)=>{let{path:a}=e,t=a.split("."),s=t[0],i=t.slice(1);if(!o||!(s in o))throw new Ee(`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 Ee(`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 Ee(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return i.length>0&&(l+="."+i.join(".")),l};var Bs=Ld;var Qd=/\$\{([^}]*)\}/g,Zd=/#\{([^}]*)\}/g,da=(e,r={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,t=ef(a,r);return{isFunction:!0,type:P.FUNCTION,name:o,args:t}},ef=(e,r={})=>e.trim()?rf(e).map(o=>tf(o.trim(),r)):[],rf=e=>{let r=[],n="",o=0,a=!1,t="";for(let s=0;s<e.length;s++){let i=e[s],l=s>0?e[s-1]:"";!a&&(i==='"'||i==="'")?(a=!0,t=i,n+=i):a&&i===t&&l!=="\\"?(a=!1,t="",n+=i):!a&&i==="("?(o++,n+=i):!a&&i===")"?(o--,n+=i):!a&&i===","&&o===0?(r.push(n),n=""):n+=i}return n&&r.push(n),r},tf=(e,r={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:P.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:P.LITERAL,value:parseFloat(e)};if(e==="true")return{type:P.LITERAL,value:!0};if(e==="false")return{type:P.LITERAL,value:!1};if(e==="null")return{type:P.LITERAL,value:null};let n=da(e,r);if(n.isFunction)return{type:n.type,name:n.name,args:n.args};let o=e.trim(),a=[{op:" + ",type:"ADD"},{op:" - ",type:"SUBTRACT"}],t=-1,s=null;for(let{op:i,type:l}of a){let u=0;for(;u<o.length;){let c=$r(o.substring(u),i);if(c===-1)break;let p=u+c;p>t&&(t=p,s={op:i,type:l}),u=p+i.length}}if(t!==-1)try{return ke(o,r)}catch{return{type:P.VARIABLE,path:o}}return{type:P.VARIABLE,path:o}},fa=/^\w+\(.*\)$/,nf=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,sf=e=>{if(!(!e||e.trim()===""||fa.test(e))&&nf.test(e))throw e.includes("?")&&e.includes(":")?new j(`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 j(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new j(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},pa=e=>{let r=e.trim();if(fa.test(r))throw new j(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("["))throw new j(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(r))throw new j(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(r))throw new j(`Logical operators not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("?")&&r.includes(":"))throw new j(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:P.PATH_REFERENCE,path:r}},ft=(e,r={})=>{let n=e.trim();sf(n);let o=da(n,r);if(o.isFunction)return{type:o.type,name:o.name,args:o.args};if(n.includes("[")&&!/[\s+\-*/%|&?:]/.test(n)){let a=0;for(let t of n)t==="["?a++:t==="]"&&a--;if(a!==0)throw new Error("Invalid array index syntax")}return{type:P.VARIABLE,path:n}},zs=(e,r={})=>{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,(u,c)=>{let p=`__ESCAPED_${o.length}__`;return o.push(c),p}),n=n.replace(/\\(#\{[^}]*\})/g,(u,c)=>{let p=`__ESCAPED_${o.length}__`;return o.push(c),p}),n=n.replace(/\\DOUBLE_ESC_VAR/g,"\\"),n=n.replace(/\\DOUBLE_ESC_PATH/g,"\\"));let a=[...n.matchAll(Qd)],t=[...n.matchAll(Zd)],s=[...a.map(u=>({match:u,type:"variable"})),...t.map(u=>({match:u,type:"pathref"}))].sort((u,c)=>u.match.index-c.match.index);if(s.length===0){let u=n;for(let c=0;c<o.length;c++)u=u.replace(`__ESCAPED_${c}__`,o[c]);return{type:P.LITERAL,value:u}}if(s.length===1&&s[0].match[0]===n&&o.length===0){let{match:u,type:c}=s[0];try{return c==="variable"?ft(u[1],r):pa(u[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:P.LITERAL,value:n};throw p}}let i=[],l=0;for(let{match:u,type:c}of s){let[p,m]=u,d=u.index;if(d>l){let f=n.substring(l,d);for(let y=0;y<o.length;y++)f=f.replace(`__ESCAPED_${y}__`,o[y]);f&&i.push(f)}try{let f;c==="variable"?f=ft(m.trim(),r):f=pa(m.trim()),i.push(f)}catch(f){if(f.message==="Invalid array index syntax")i.push(p);else throw f}l=d+p.length}if(l<n.length){let u=n.substring(l);for(let c=0;c<o.length;c++)u=u.replace(`__ESCAPED_${c}__`,o[c]);u&&i.push(u)}return{type:P.INTERPOLATION,parts:i}};var Hs=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ha=e=>Object.keys(e),xe=e=>e.join("."),dr=(e,r,n)=>{let o=ha(e).filter(a=>!r.has(a));if(o.length>0)throw new j(`Unexpected key '${o[0]}' in condition JSON at '${xe(n)}'`)},fr=(e,r)=>typeof e=="string"?zs(e,r):typeof e=="object"&&e!==null?Array.isArray(e)?af(e,r):lf(e,r):{type:P.LITERAL,value:e},of=e=>{let{$each:r,...n}=e;if(typeof r!="string")throw new j("$each value must be a non-empty string");let o=r.trim();if(o==="")throw new j("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new j("Empty $each body not allowed");if(n.$partial!==void 0)throw new j("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${o}`]:n}},af=(e,r)=>{let n=[],o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(t.$each!==void 0)try{let l=of(t),u=Object.keys(l);if(u.length===1&&/^\$for(?::\w+)?\s/.test(u[0])){let c=ya(u[0],l[u[0]],r,!0);n.push(c),o=!0;continue}}catch(l){throw l instanceof j?l:new j(l.message)}let i=Object.keys(t);if(i.length===1&&/^\$for(?::\w+)?\s/.test(i[0])){let l=ya(i[0],t[i[0]],r);n.push(l),o=!0;continue}}let s=fr(t,r);n.push(s),(s.type===P.FUNCTION||s.type===P.CONDITIONAL||s.type===P.LOOP||s.type===P.PARTIAL||s.type===P.OBJECT&&!s.fast||s.type===P.ARRAY&&!s.fast)&&(o=!0)}return{type:P.ARRAY,items:n,fast:!o}},lf=(e,r)=>{let n=[],o=!1,a=null,t=Object.entries(e),s=0;if(e.$partial!==void 0){if(typeof e.$partial!="string")throw new j("$partial value must be a string");if(e.$partial.trim()==="")throw new j("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],u=[];for(let[h]of t)for(let w of l)if(h===w||h.startsWith(w+" ")||h.startsWith(w+"#")){u.push(w);break}if(u.length>0)throw new j(`Cannot use $partial with ${u.join(", ")} at the same level. Wrap $partial in a parent object if you need conditionals.`);let{$partial:c,$when:p,...m}=e,d={},f=!1;for(let[h,w]of Object.entries(m)){let b=h;(h.startsWith("\\$")||h.startsWith("$$"))&&(b=h.slice(1)),d[b]=w,f=!0}let y=null;if(f&&(y=fr(d,r),y.type===P.OBJECT)){let h=!1;for(let w of y.properties)if(w.value.type===P.VARIABLE||w.value.type===P.INTERPOLATION||w.value.type===P.FUNCTION||w.value.type===P.CONDITIONAL||w.value.type===P.OBJECT&&!w.value.fast||w.value.type===P.ARRAY&&!w.value.fast){h=!0;break}h&&(y.fast=!1)}let g={type:P.PARTIAL,name:c,data:y};return p!==void 0&&(g.whenCondition=ma(p,r)),g}for(let[l,u]of t)if(l==="$when"){if(a!==null)throw new j("Multiple '$when' directives on the same object are not allowed");if(u==null)throw new j("Missing condition expression after '$when'");a=ma(u,r),o=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new j("'$when' does not support ID syntax or inline conditions - use '$when' as a property");for(;s<t.length;){let[l,u]=t[s];if(l==="$when"){s++;continue}if(l==="$each")throw new j("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let c=cf(t,s,r);n.push({key:l,value:c.node}),o=!0,s=c.nextIndex}else if(/^\$for(?::\w+)?\s/.test(l)){let c=l.match(/^\$for(?::(\w+))?\s/)?.[1]||"",p=c?`:${c}`:"";throw new j(`$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 j(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new j("Missing condition expression after '$if'");{let c=fr(u,r);(c.type===P.FUNCTION||c.type===P.CONDITIONAL||c.type===P.PARTIAL||c.type===P.OBJECT&&!c.fast||c.type===P.ARRAY&&!c.fast)&&(o=!0);let p=zs(l,r),m={key:l,value:c};(p.type!==P.LITERAL||p.value!==l)&&(m.parsedKey=p),n.push(m),s++}}}let i={type:P.OBJECT,properties:n,fast:!o};return a&&(i.whenCondition=a),i},cf=(e,r,n={})=>{let o=[],a=[],t=r,[s,i]=e[t],l=null,u;if(s.startsWith("$if#")){let p=s.match(/^\$if#(\w+)\s+(.+)$/);if(p)l=p[1],u=p[2];else throw new j(`Invalid conditional syntax: ${s}`)}else u=s.substring(4),u.endsWith(":")&&(u=u.slice(0,-1).trim());Us(u);let c=ke(u,n);for(o.push(c),a.push(fr(i,n)),t++;t<e.length;){let[p,m]=e[t],d=!1,f;if(l?p.startsWith(`$elif#${l} `)?(f=p.substring(`$elif#${l} `.length),f.endsWith(":")&&(f=f.slice(0,-1).trim()),d=!0):(p===`$else#${l}`||p===`$else#${l}:`)&&(d=!0,f=null):p.startsWith("$elif ")?(f=p.substring(6),f.endsWith(":")&&(f=f.slice(0,-1).trim()),d=!0):(p==="$else"||p==="$else:")&&(d=!0,f=null),d){if(f===null)o.push(null);else{Us(f);let y=ke(f,n);o.push(y)}if(a.push(fr(m,n)),t++,f===null)break}else break}return{node:{type:P.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:t}},Ys={eq:W.EQ,neq:W.NEQ,gt:W.GT,gte:W.GTE,lt:W.LT,lte:W.LTE,in:W.IN,add:W.ADD,sub:W.SUBTRACT},Gs={all:W.AND,any:W.OR},uf=new Set(["var","literal","call","not",...Object.keys(Ys),...Object.keys(Gs)]),pf=(e,r,n)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${xe(n)}' requires an array`);if(e.length!==2)throw new j(`Condition JSON operator '${r}' at '${xe(n)}' requires exactly 2 operands`);return e},df=(e,r,n,o,a)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${xe(a)}' requires an array`);if(e.length===0)throw new j(`Condition JSON operator '${r}' at '${xe(a)}' requires at least 1 condition`);return e.map((s,i)=>Oe(s,o,[...a,i])).reduce((s,i)=>({type:P.BINARY,op:n,left:s,right:i}))},ff=(e,r,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],dr(e,new Set(["call","args"]),n);else if(Hs(e.call))o=e.call.name,a=e.call.args??[],dr(e,new Set(["call"]),n),dr(e.call,new Set(["name","args"]),[...n,"call"]);else throw new j(`Condition JSON call at '${xe(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new j(`Condition JSON call at '${xe(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new j(`Invalid condition JSON function name '${o}' at '${xe(n)}'`);if(!Array.isArray(a))throw new j(`Condition JSON call '${o}' at '${xe(n)}' requires args to be an array`);return{type:P.FUNCTION,name:o,args:a.map((t,s)=>Oe(t,r,[...n,"args",s]))}},Oe=(e,r={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:P.LITERAL,value:e};if(Array.isArray(e))throw new j(`Condition JSON array at '${xe(n)}' must be wrapped in an operator or { literal: [...] }`);if(!Hs(e))throw new j(`Invalid condition JSON value at '${xe(n)}'`);let o=ha(e);if(o.length===0)throw new j(`Condition JSON object at '${xe(n)}' must contain an operator`);let a=o.filter(s=>uf.has(s));if(a.length===0)throw new j(`Unknown condition JSON operator '${o[0]}' at '${xe(n)}'`);if(a.length>1)throw new j(`Condition JSON at '${xe(n)}' must contain exactly one operator`);let t=a.includes("call")?"call":a[0];if(t==="var"){if(dr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new j(`Condition JSON var at '${xe(n)}' requires a non-empty path`);return{type:P.VARIABLE,path:e.var}}if(t==="literal")return dr(e,new Set(["literal"]),n),{type:P.LITERAL,value:e.literal};if(t==="call")return ff(e,r,n);if(t==="not")return dr(e,new Set(["not"]),n),{type:P.UNARY,op:Hr.NOT,operand:Oe(e.not,r,[...n,"not"])};if(t in Gs)return dr(e,new Set([t]),n),df(e[t],t,Gs[t],r,[...n,t]);if(t in Ys){dr(e,new Set([t]),n);let s=pf(e[t],t,[...n,t]);return{type:P.BINARY,op:Ys[t],left:Oe(s[0],r,[...n,t,0]),right:Oe(s[1],r,[...n,t,1])}}throw new j(`Unknown condition JSON operator '${t}' at '${xe(n)}'`)},ma=(e,r={})=>{if(e==null)throw new j("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression after '$when'");return ke(e,r)}return Hs(e)||Array.isArray(e)?Oe(e,r):{type:P.LITERAL,value:e}},ke=(e,r={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let u=e.slice(1,-1),c=0,p=!0;for(let m=0;m<u.length;m++)if(u[m]==="("?c++:u[m]===")"&&c--,c<0){p=!1;break}if(p&&c===0)return ke(u,r)}let n=$r(e,"||");if(n!==-1)return{type:P.BINARY,op:W.OR,left:ke(e.substring(0,n).trim(),r),right:ke(e.substring(n+2).trim(),r)};let o=$r(e,"&&");if(o!==-1)return{type:P.BINARY,op:W.AND,left:ke(e.substring(0,o).trim(),r),right:ke(e.substring(o+2).trim(),r)};let a=[{op:">=",type:W.GTE},{op:"<=",type:W.LTE},{op:"==",type:W.EQ},{op:"!=",type:W.NEQ},{op:">",type:W.GT},{op:"<",type:W.LT},{op:" in ",type:W.IN}];for(let{op:u,type:c}of a){let p=$r(e,u);if(p!==-1)return{type:P.BINARY,op:c,left:ke(e.substring(0,p).trim(),r),right:ke(e.substring(p+u.length).trim(),r)}}let t=-1,s=null,i=[{op:" + ",type:W.ADD},{op:" - ",type:W.SUBTRACT}];for(let{op:u,type:c}of i){let p=0;for(;p<e.length;){let m=$r(e.substring(p),u);if(m===-1)break;let d=p+m;d>t&&(t=d,s={op:u,type:c}),p=d+u.length}}if(t!==-1&&s)return{type:P.BINARY,op:s.type,left:ke(e.substring(0,t).trim(),r),right:ke(e.substring(t+s.op.length).trim(),r)};let l=[" * "," / "," % "];for(let u of l)if($r(e,u)!==-1)throw new j(`Arithmetic operations are not allowed in conditionals: "${u}"`);return e.startsWith("!")?{type:P.UNARY,op:Hr.NOT,operand:ke(e.substring(1).trim(),r)}:ga(e,r)},$r=(e,r)=>{let n=0,o=0;for(;o<=e.length-r.length;){if(e[o]==="(")n++;else if(e[o]===")")n--;else if(n===0&&e.substring(o,o+r.length)===r)return o;o++}return-1},mf=e=>{if(e=e.trim(),e==="true")return{type:P.LITERAL,value:!0};if(e==="false")return{type:P.LITERAL,value:!1};if(e==="null")return{type:P.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:P.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:P.LITERAL,value:""};if(e==="{}")return{type:P.LITERAL,value:{}};if(e==="[]")return{type:P.LITERAL,value:[]};let r=Number(e);return!isNaN(r)&&isFinite(r)?{type:P.LITERAL,value:r}:{type:P.VARIABLE,path:e}},ga=(e,r)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return ft(n,r);let a=mf(n);if(a.type===P.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:P.VARIABLE,path:n};try{return ft(n,r)}catch(t){if(t.message&&t.message.includes("not supported"))return a;throw t}},yf=(e,r=!1)=>{let n=r?"$each":"$for";try{na(e)}catch(o){if(o instanceof j&&r){let a=o.message.replace(/\$for/g,"$each");throw new j(a.replace("Parse Error: ",""))}throw o}},ya=(e,r,n,o=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,t=e.match(a);if(!t){let g=o?"$each":"$for";throw new j(`Invalid loop syntax (got: '${e.replace("$for",g)}')`)}let s=t[1],i=t[2].trim();yf(i,o);let l=i.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let g=o?"$each":"$for";throw new j(`Invalid loop syntax - missing 'in' keyword (got: '${g} ${i}')`)}let u=l[1].trim(),c=l[2].trim(),p,m=null;if(u.includes(",")){let g=u.split(",").map(h=>h.trim());if(g.length!==2)throw new j(`Invalid loop variables: ${u}. Expected format: "item" or "item, index"`);p=g[0],m=g[1]}else p=u;let d=["this","undefined","null","true","false"];if(d.includes(p))throw new j(`Reserved variable name: ${p}`);if(m&&d.includes(m))throw new j(`Reserved variable name: ${m}`);let f=ga(c,n),y=fr(r,n);return{type:P.LOOP,itemVar:p,indexVar:m,iterable:f,body:y,flatten:s!=="nested"}};var hf=(e,r={})=>{let{functions:n={}}=r;return fr(e,n)},an=hf;var mt={};Sd(mt,{now:()=>gf});var gf=()=>Date.now();var bf=(e,r,n={})=>{let{functions:o={},partials:a={}}=n,t={...mt,...o},s=an(e,{functions:t}),i={};for(let[l,u]of Object.entries(a))i[l]=an(u,{functions:t});return Bs(s,r,{functions:t,partials:i})},_r=bf;var If=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",wf=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,kf=(e,r)=>{if(If(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression");return ke(e,r)}return Oe(e,r)},vf=(e,r={},n={})=>{let o=wf(n),a={...mt,...o},t=kf(e,a);return!!pr(t,{functions:a,partials:{}},r,{})},Xs=vf;var no=Symbol("runStoreTransaction"),Qs="__routeEngineConditionComparison",ln=(e,r)=>typeof e=="number"&&typeof r=="number"&&Number.isFinite(e)&&Number.isFinite(r)||typeof e=="string"&&typeof r=="string",mr=Object.freeze({eq:(e,r)=>e===r,neq:(e,r)=>e!==r,gt:(e,r)=>ln(e,r)&&e>r,gte:(e,r)=>ln(e,r)&&e>=r,lt:(e,r)=>ln(e,r)&&e<r,lte:(e,r)=>ln(e,r)&&e<=r}),Pa=Object.freeze(Object.fromEntries(Object.keys(mr).map(e=>[e,`${Qs}${e}`]))),Af=Object.freeze(Object.fromEntries(Object.entries(Pa).map(([e,r])=>[r,mr[e]]))),ba=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Pf=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},cn=e=>{if(Array.isArray(e))return e.map(cn);if(e===null||typeof e!="object"||ba(e,"literal")||ba(e,"var"))return e;if(Pf(e)?.startsWith(Qs))throw new Error(`Condition function names beginning with "${Qs}" are reserved`);let n=Object.entries(e);if(n.length===1){let[[o,a]]=n,t=Pa[o];if(t)return{call:t,args:a.map(cn)}}return Object.fromEntries(n.map(([o,a])=>[o,cn(a)]))},ht=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Oe(e),Xs(cn(e),r,{functions:Af})},xf=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],xa=(e,r,n={})=>{let o={},a={},{transformSelectorFirstArgument:t=y=>y,transformActionFirstArgument:s=y=>y,createTransactionalMetadata:i,updateTransactionalMetadata:l,finalizeTransactionalMetadata:u}=n,c=typeof i=="function",p={state:structuredClone(e),...c?{transactionalMetadata:structuredClone(i())}:{}},m=0,d=(y,g)=>!c||!u?y:on(y,h=>{u({state:h.state,transactionalMetadata:h.transactionalMetadata,previousState:g.state,previousTransactionalMetadata:g.transactionalMetadata})});for(let[y,g]of Object.entries(r))y!=="createInitialState"&&(y.startsWith("select")?o[y]=(...h)=>g(t(p.state,p.transactionalMetadata),...h):a[y]=(...h)=>{let w,b=p,E=on(p,k=>{let v=g(s(k.state,k.transactionalMetadata),...h);w=v!==void 0&&!we(v)?v:void 0,c&&l&&l({actionName:y,args:h,state:k.state,transactionalMetadata:k.transactionalMetadata,previousState:b.state,previousTransactionalMetadata:b.transactionalMetadata})});return m===0&&(E=d(E,b)),p=E,w});let f=y=>{if(typeof y!="function")throw new Error("Store transaction requires a callback");let g=p,h=m===0;m+=1;let w;try{w=y()}catch(b){throw m-=1,p=g,b}if(m-=1,h)try{p=d(p,g)}catch(b){throw p=g,b}return w};return{...o,...a,[no]:f}},fn=(e,r)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return on(o,t=>{a.forEach(s=>{r.forEach(i=>{i(t,s)})})})};var Ef=(e,r)=>{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 ${r}. Expected one of: ${n.join(", ")}`);switch(e.type){case"number":return 0;case"boolean":return!1;case"string":return"";case"object":return{}}},G=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Zs=(e,r,n)=>{Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0})},be=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Sf=new Set(["pageSize","groups"]),Rf=new Set(["id","variants"]),Of=new Set(["id","imageId"]),Cf=new Set(["pageSize","tracks"]),$f=new Set(["id","soundId","title","artist","album","description","coverImageId"]),_f=new Set(["pageSize","replays"]),Tf=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),Tr=(e,r,n)=>{Object.keys(e).forEach(o=>{if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)})},Xr=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string`)},gt=(e={})=>{let r=e?.resources?.imageGallery;if(r===void 0)return;if(!be(r))throw new Error("resources.imageGallery must be an object");if(Tr(r,Sf,"resources.imageGallery"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.imageGallery.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.groups))throw new Error("resources.imageGallery.groups must be an array");let n=new Set;for(let[o,a]of r.groups.entries()){let t=`resources.imageGallery.groups[${o}]`;if(!be(a))throw new Error(`${t} must be an object`);if(Tr(a,Rf,t),Xr(a.id,`${t}.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(`${t}.variants must be a non-empty array`);let s=new Set;for(let[i,l]of a.variants.entries()){let u=`${t}.variants[${i}]`;if(!be(l))throw new Error(`${u} must be an object`);if(Tr(l,Of,u),Xr(l.id,`${u}.id`),Xr(l.imageId,`${u}.imageId`),s.has(l.id))throw new Error(`Duplicate image gallery variant id "${l.id}" in group "${a.id}"`);if(s.add(l.id),!G(e?.resources?.images,l.imageId))throw new Error(`Image gallery variant "${a.id}.${l.id}" references unknown image "${l.imageId}"`)}}},bt=(e={})=>{let r=e?.resources?.musicRoom;if(r===void 0)return;if(!be(r))throw new Error("resources.musicRoom must be an object");if(Tr(r,Cf,"resources.musicRoom"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.musicRoom.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.tracks))throw new Error("resources.musicRoom.tracks must be an array");let n=new Set;for(let[o,a]of r.tracks.entries()){let t=`resources.musicRoom.tracks[${o}]`;if(!be(a))throw new Error(`${t} must be an object`);Tr(a,$f,t);for(let l of["id","soundId","title"])Xr(a[l],`${t}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&Xr(a[l],`${t}.${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(!G(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!be(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&&!G(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},jf=(e,r,n)=>{let o=Array.isArray(n)?"array":typeof n;switch(r.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 "${r.type}"`)}},It=(e={})=>{let r=e?.resources?.sceneReplay;if(r===void 0)return;if(!be(r))throw new Error("resources.sceneReplay must be an object");if(Tr(r,_f,"resources.sceneReplay"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.sceneReplay.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.replays))throw new Error("resources.sceneReplay.replays must be an array");let n=e?.story?.scenes??{},o=new Set;for(let[a,t]of r.replays.entries()){let s=`resources.sceneReplay.replays[${a}]`;if(!be(t))throw new Error(`${s} must be an object`);Tr(t,Tf,s);for(let c of["sceneId","title","thumbnailImageId"])Xr(t[c],`${s}.${c}`);if(o.has(t.sceneId))throw new Error(`Duplicate scene replay sceneId "${t.sceneId}"`);if(o.add(t.sceneId),!G(e?.resources?.images,t.thumbnailImageId))throw new Error(`Scene replay scene "${t.sceneId}" references unknown thumbnail image "${t.thumbnailImageId}"`);let i=n[t.sceneId];if(!i)throw new Error(`Scene replay references unknown scene "${t.sceneId}"`);let l=i.initialSectionId,u=i.sections?.[l];if(!u)throw new Error(`Scene replay scene "${t.sceneId}" references unknown initial section "${l}"`);if(u.initialLineId!==void 0&&!u.lines?.some(c=>c.id===u.initialLineId))throw new Error(`Scene replay scene "${t.sceneId}" initial section "${l}" references unknown initial line "${u.initialLineId}"`);if(t.initialVariables!==void 0){if(!be(t.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[c,p]of Object.entries(t.initialVariables)){let m=e?.resources?.variables?.[c];if(!m)throw new Error(`Scene replay scene "${t.sceneId}" initialVariables references unknown variable "${c}"`);if($e(m))throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize computed variable "${c}"`);if(m.readonly===!0)throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize readonly variable "${c}"`);if(m.scope!=="context")throw new Error(`Scene replay scene "${t.sceneId}" can only initialize context variable "${c}"`);jf(c,m,p)}}}},Ea=e=>{let r=we(e)?ur(e):e;return structuredClone(r)},Nf=({characterId:e,resourceCharacter:r,variables:n={}}={})=>{if(!G(r,"nameVariableId"))return;let o=r.nameVariableId,a=n?.[o];if(typeof a!="string")throw new Error(`Character "${e}" nameVariableId "${o}" must resolve to a string variable`);return a},mn=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0;if(r?.name!==void 0)return r.name;if(n!==void 0)return n;let s=Nf({characterId:e,resourceCharacter:t,variables:a});return s!==void 0?s:t?.name||""},$e=e=>G(e,"computed"),so=(e,r)=>{switch(e?.type){case"number":return typeof r=="number"&&Number.isFinite(r);case"boolean":return typeof r=="boolean";case"string":return typeof r=="string";case"object":return r!==null&&typeof r=="object"&&!Array.isArray(r);default:return!1}},wt=(e={},r={},{allowedScopes:n,preserveUnknown:o=!1}={})=>Object.fromEntries(Object.entries(e??{}).filter(([a,t])=>{let s=r[a];return s===void 0?o:!$e(s)&&(!n||n.includes(s.scope))&&so(s,t)})),Me=(e,r)=>new Error(`${r} has invalid path: ${JSON.stringify(e)}`),Df=(e,r,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw Me(r,n)}let a="";for(let t=1;t<e.length-1;t+=1){let s=e[t];if(s!=="\\"){if(s.charCodeAt(0)<32)throw Me(r,n);a+=s;continue}if(t+=1,t>=e.length-1)throw Me(r,n);let i=e[t];if(i==="u"){let u=e.slice(t+1,t+5);if(u.length!==4||!/^[0-9a-fA-F]{4}$/.test(u))throw Me(r,n);a+=String.fromCharCode(Number.parseInt(u,16)),t+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
|
|
2
|
-
`,r:"\r",t:" ",b:"\b",f:"\f"};if(!G(l,i))throw Me(r,n);a+=l[i]}return a},Sa=(e,r="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw Me(e,r);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 Me(e,r);n.push(i)},t=()=>{for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;let s=e[o];if(/\d/.test(s??"")){let c=o;for(;o<e.length&&/\d/.test(e[o]);)o+=1;let p=e.slice(c,o);for(;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]"||p.length>1&&p.startsWith("0"))throw Me(e,r);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw Me(e,r);let i=s,l=o;o+=1;let u=!1;for(;o<e.length;){let c=e[o];if(u)u=!1;else if(c==="\\")u=!0;else if(c===i){let p=e.slice(l,o+1);for(o+=1;o<e.length&&/\s/.test(e[o]);)o+=1;if(e[o]!=="]")throw Me(e,r);o+=1,n.push(Df(p,e,r));return}o+=1}if(u||o>=e.length)throw Me(e,r)};for(a();o<e.length;){if(e[o]==="."){o+=1,a();continue}if(e[o]==="["){t();continue}throw Me(e,r)}return n},Ws=(e,r)=>{let n=e;for(let o of r){if(n==null||!G(n,o))return;n=n[o]}return n},Ra=(e,r={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=Sa(e),[o,a,...t]=n;if(o==="variables"){if(!a)return r.variables;let s=typeof r.resolveVariable=="function"?r.resolveVariable(a):r.variables?.[a];return Ws(s,t)}return o==="runtime"?Ws(r.runtime,n.slice(1)):Ws(r,n)},Oa=(e,r,n)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(n!==void 0&&r.length!==n)throw new Error(`Computed expression operator "${e}" requires ${n} operand(s)`)},eo=(e,r)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(r.length===0)throw new Error(`Computed expression operator "${e}" requires at least one operand`)},Lf=(e,r)=>{if(typeof r!="number"||!Number.isFinite(r))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Ue=(e,r,n,o)=>(Oa(e,r,o),r.map(a=>dn(a,n))),Le=(e,r,n,o)=>{let a=Ue(e,r,n,o);return a.forEach(t=>Lf(e,t)),a},Mf=(e,r,n)=>{switch(e){case"var":return Ra(r,n);case"add":{let[o,a]=Le(e,r,n,2);return o+a}case"sub":{let[o,a]=Le(e,r,n,2);return o-a}case"mul":{let[o,a]=Le(e,r,n,2);return o*a}case"div":{let[o,a]=Le(e,r,n,2);return o/a}case"mod":{let[o,a]=Le(e,r,n,2);return o%a}case"neg":{let[o]=Le(e,r,n,1);return-o}case"round":{let[o]=Le(e,r,n,1);return Math.round(o)}case"floor":{let[o]=Le(e,r,n,1);return Math.floor(o)}case"ceil":{let[o]=Le(e,r,n,1);return Math.ceil(o)}case"min":{let[o,a]=Le(e,r,n,2);return Math.min(o,a)}case"max":{let[o,a]=Le(e,r,n,2);return Math.max(o,a)}case"clamp":{let[o,a,t]=Le(e,r,n,3);return Math.min(t,Math.max(a,o))}case"eq":{let[o,a]=Ue(e,r,n,2);return mr.eq(o,a)}case"neq":{let[o,a]=Ue(e,r,n,2);return mr.neq(o,a)}case"gt":{let[o,a]=Ue(e,r,n,2);return mr.gt(o,a)}case"gte":{let[o,a]=Ue(e,r,n,2);return mr.gte(o,a)}case"lt":{let[o,a]=Ue(e,r,n,2);return mr.lt(o,a)}case"lte":{let[o,a]=Ue(e,r,n,2);return mr.lte(o,a)}case"in":{let[o,a]=Ue(e,r,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return eo(e,r),r.every(o=>!!dn(o,n));case"or":case"any":return eo(e,r),r.some(o=>!!dn(o,n));case"not":{let[o]=Ue(e,r,n,1);return!o}case"length":{let[o]=Ue(e,r,n,1);return typeof o=="string"||Array.isArray(o)?o.length:be(o)?Object.keys(o).length:0}case"includes":{let[o,a]=Ue(e,r,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return Ea(r);default:throw new Error(`Unknown computed expression operator: ${e}`)}},dn=(e,r={})=>{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 Mf(o,a,r)},ro=(e,r)=>{if(e===null||typeof e!="object"||G(e,"literal"))return e;if(G(e,"var"))return{literal:Ra(e.var,r)};if(G(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=>ro(a,r)):ro(o,r)]))},qf=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Oe(e),ht(ro(e,r))},Ca=(e,r)=>{if(!be(e))throw new Error(`${r} must be an object`);let n=G(e,"expr"),o=G(e,"value");if(n===o)throw new Error(`${r} must contain exactly one of expr or value`)},Ks=(e,r,n)=>(Ca(e,r),G(e,"value")?Ea(e.value):dn(e.expr,n)),Vf=(e,r={},n="unknown")=>{if(!be(e))throw new Error(`Computed variable "${n}" computed must be an object`);let o=G(e,"expr"),a=G(e,"value");if(G(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(!be(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(!be(i))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!G(i,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(qf(i.when,r))return Ks(i,`Computed variable "${n}" branch ${s}`,r)}return Ks(e.default,`Computed variable "${n}" default`,r)}if(o===a)throw new Error(`Computed variable "${n}" must contain exactly one of expr, value, or branches`);return Ks(e,`Computed variable "${n}"`,r)},$a=(e,r,n)=>{switch(r){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: ${r} for computed variable ${e}`)}},Ff=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}),Uf=new Set(["and","or","all","any"]),Bf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),zf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),Yf=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),Gf=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),_a=new WeakMap,Ia=e=>e===null?"null":Array.isArray(e)?"object":typeof e,un=(e,r,n)=>{for(let o of Object.keys(e))if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},Hf=(e,r,n,o)=>{if(n!==void 0&&n!==r)throw new Error(`Computed variable "${e}" ${o} expected type ${r}, got ${n}`)},Ta=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{let t=`Computed variable "${r}" ${a} var`,[s,i,...l]=Sa(e,t);if(s!=="variables"&&s!=="runtime")throw new Error(`${t} must reference variables.* or runtime.*, got ${JSON.stringify(e)}`);if(!i)throw new Error(`${t} must reference a concrete ${s} member, got ${JSON.stringify(e)}`);if(s==="runtime")return;if(!G(n,i))throw new Error(`Computed variable "${r}" ${a} references unknown variable "${i}"`);let u=n[i];return $e(u)&&o.add(i),l.length===0?u?.type:void 0},ja=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return Ia(e)}if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let t=Object.entries(e);if(t.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[s,i]]=t;if(s==="var"){if(typeof i!="string"||i.trim()==="")throw new Error("Computed expression var requires a non-empty string path");return Ta(i,{variableId:r,variableConfigs:n,dependencies:o,path:a})}if(s==="literal"){if(typeof i=="number"&&!Number.isFinite(i))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return Ia(i)}let l=Ff[s];if(l===void 0&&!Uf.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?eo(s,i):Oa(s,i,l);let u=i.map((c,p)=>ja(c,{variableId:r,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(zf.has(s)&&u.forEach(c=>{if(c!==void 0&&c!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),Bf.has(s))return"number";if(Yf.has(s))return"boolean"},Xf=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");try{Oe(e)}catch(s){throw new Error(`Computed variable "${r}" ${a} is invalid: ${s.message}`,{cause:s})}let t=(s,i)=>{if(s===null||typeof s!="object"||G(s,"literal"))return;if(G(s,"var")){Ta(s.var,{variableId:r,variableConfigs:n,dependencies:o,path:i});return}if(G(s,"call"))throw new Error(`Computed variable "${r}" ${i} function calls are not supported`);if(G(s,"not")){t(s.not,`${i}.not`);return}let l=Object.keys(s).find(u=>Gf.has(u));s[l].forEach((u,c)=>{t(u,`${i}.${l}[${c}]`)})};t(e,a)},Js=(e,{variableId:r,variableConfig:n,variableConfigs:o,dependencies:a,path:t,allowedKeys:s=new Set(["expr","value"])})=>{if(Ca(e,`Computed variable "${r}" ${t}`),un(e,s,t),G(e,"value")){$a(r,n.type,e.value);return}let i=ja(e.expr,{variableId:r,variableConfigs:o,dependencies:a,path:`${t}.expr`});Hf(r,n.type,i,`${t}.expr`)},Wf=(e,r,n)=>{let o=r.computed;if(!be(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,t=G(o,"expr"),s=G(o,"value");if(G(o,"branches")){if(un(o,new Set(["branches","default"]),`Computed variable "${e}" computed`),t||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(!be(o.default))throw new Error(`Computed variable "${e}" requires default`);return o.branches.forEach((l,u)=>{if(!be(l))throw new Error(`Computed variable "${e}" branch ${u} must be an object`);if(un(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${u}`),!G(l,"when"))throw new Error(`Computed variable "${e}" branch ${u} requires when`);Xf(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${u}].when`}),Js(l,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:`computed.branches[${u}]`,allowedKeys:new Set(["when","expr","value"])})}),Js(o.default,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(un(o,new Set(["expr","value"]),`Computed variable "${e}" computed`),t===s)throw new Error(`Computed variable "${e}" must contain exactly one of expr, value, or branches`);return Js(o,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed"}),a},jr=(e={})=>{if(!be(e))throw new Error("Variable configs must be an object");if(G(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(G(e,""))throw new Error("Variable ids must not be empty");let r=new Map;Object.entries(e).forEach(([t,s])=>{if($e(s)){if(!be(s))throw new Error(`Computed variable "${t}" must be an object`);if(!G(s,"type"))throw new Error(`Computed variable "${t}" requires type`);if(!G(s,"scope"))throw new Error(`Computed variable "${t}" requires scope`);if(G(s,"default"))throw new Error(`Computed variable "${t}" must not declare a top-level default`);if(kt(s.scope,t),!["number","boolean","string","object"].includes(s.type))throw new Error(`Invalid variable type: ${s.type} for computed variable ${t}`);r.set(t,Wf(t,s,e))}});let n=new Set,o=[];r.forEach((t,s)=>{if(n.has(s))return;let i=[{variableId:s,dependencies:[...r.get(s)??[]],nextDependencyIndex:0}],l=new Map([[s,0]]);for(;i.length>0;){let u=i.at(-1);if(u.nextDependencyIndex>=u.dependencies.length){i.pop(),l.delete(u.variableId),n.add(u.variableId),o.push(u.variableId);continue}let c=u.dependencies[u.nextDependencyIndex];if(u.nextDependencyIndex+=1,n.has(c))continue;let p=l.get(c);if(p!==void 0){let m=[...i.slice(p).map(({variableId:d})=>d),c].join(" -> ");throw new Error(`Computed variable cycle detected: ${m}`)}l.set(c,i.length),i.push({variableId:c,dependencies:[...r.get(c)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return _a.set(e,a),a},Wr=({variables:e={},runtime:r={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=_a.get(n)??jr(n),t=wt(e,n,{preserveUnknown:!0}),s=Object.entries(n).filter(([,g])=>$e(g)).map(([g])=>g),i=Object.create(null),l=[],u=new Map(a.map((g,h)=>[g,h])),c=-1,p=!1,m=g=>{if(G(i,g))return i[g];let h=n[g];if(!$e(h))return G(t,g)?t[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=Vf(h.computed,y,g);return $a(g,h.type,b),Zs(i,g,b),b}finally{l.pop()}},d=g=>{if(G(i,g))return i[g];let h=n[g];if(!$e(h))return G(t,g)?t[g]:void 0;let w=u.get(g);if(o&&!p&&w!==void 0&&w>c){p=!0;try{for(let b=c+1;b<=w;b+=1)m(a[b]),c=b}finally{p=!1}return i[g]}return m(g)},f=new Proxy({},{get:(g,h)=>{if(typeof h=="string")return d(h)},has:(g,h)=>typeof h=="string"&&(G(t,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(t),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!G(t,h)&&!s.includes(h)))return{enumerable:!0,configurable:!0}}}),y={variables:f,runtime:r,resolveVariable:d};return o?(s.forEach(g=>{d(g)}),{...t,...i}):f},Kf=({variables:e={},runtime:r={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return jr(a),Wr({variables:e,runtime:r,variableConfigs:a,eager:!0})},yn=e=>{let r={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if($e(a))return;let t=Ef(a,o);a.scope==="context"?Zs(r,o,t):Zs(n,o,t)}),{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}},kt=(e,r)=>{let n=["context","device","account"];if(!e)throw new Error(`Variable scope is required for variable: ${r}`);if(!n.includes(e))throw new Error(`Invalid variable scope: ${e} for variable ${r}. Expected one of: ${n.join(", ")}`)},vt=(e,r,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(r))throw new Error(`Unknown operation: ${r}`);if(!a.includes(r))throw new Error(`Operation "${r}" is not valid for variable "${n}" of type "${e}". Valid operations: ${a.join(", ")}`)},Jf=2,wa=12,Na=(e=Jf)=>{if(!Number.isInteger(e)||e<0||e>wa)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${wa}.`);return e},Qf=(e,r)=>{let n=10**r;return Math.round((e+Number.EPSILON)*n)/n},pn=e=>typeof e=="number"&&Number.isFinite(e),hn=(e,r,n,o,a={})=>{if(e==="number"){if(r==="set"&&!pn(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(r==="multiply"&&!pn(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(r==="divide"&&!pn(n))throw new Error(`Operation "divide" requires value to be a number for variable "${o}".`);if(r==="divide"){if(n===0)throw new Error(`Operation "divide" requires value to be a non-zero number for variable "${o}".`);Na(a.roundTo)}}},gn=(e,r,n,o={})=>{let a=(s,i,l)=>{let u=s??i;if(!pn(u))throw new Error(`Operation "${r}" requires ${l} to be a number.`);return u},t=s=>{let i=a(s,void 0,"value");if(i===0)throw new Error(`Operation "${r}" requires value to be a non-zero number.`);return i};switch(r){case"set":return n;case"multiply":return a(e,1,"current value")*a(n,void 0,"value");case"divide":return Qf(a(e,0,"current value")/t(n),Na(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: ${r}`)}};var oo=(e,r="DD/MM/YYYY - HH:mm")=>{if(!e)return"";let n=new Date(e),o=s=>String(s).padStart(2,"0"),a=String(n.getFullYear()),t={DD:o(n.getDate()),MM:o(n.getMonth()+1),MMM:xf[n.getMonth()],YYYY:a,YY:a.slice(-2),HH:o(n.getHours()),mm:o(n.getMinutes()),ss:o(n.getSeconds())};return r.replace(/YYYY|MMM|YY|MM|DD|HH|mm|ss/g,s=>t[s])},Zf=(e,r)=>{let n=t=>t?.ui,o=n(e),a=n(r);return JSON.stringify(o)===JSON.stringify(a)?null:o&&!a?{changeType:"delete",data:e}:a&&!o?{changeType:"add",data:r}:a&&o?{changeType:"update",data:r}:null},yt=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,em=(e,r)=>{let n=e?.character?.sprite,o=r?.character?.sprite,a=yt(n)?n:void 0,t=yt(o)?o:void 0;return JSON.stringify(a)===JSON.stringify(t)?null:a&&!t?{changeType:"delete",data:a}:t&&!a?{changeType:"add",data:t}:t&&a?{changeType:"update",data:t}:null},ka=e=>{if(e?.resourceId===void 0)return;let r={resourceId:e.resourceId};e.transformId!==void 0&&(r.transformId=e.transformId);for(let n of["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"])e[n]!==void 0&&(r[n]=e[n]);for(let n of["animationName","animationSpeed","loop"])e[n]!==void 0&&(r[n]=e[n]);return r},va=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},Aa=(e,r)=>r&&!e?{changeType:"add",data:r}:e&&!r?{changeType:"delete",data:e}:e&&r&&JSON.stringify(e)!==JSON.stringify(r)?{changeType:"update",data:r}:null,rm=(e,r)=>{let n={},o=Aa(ka(e),ka(r)),a=Aa(va(e),va(r));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},io=(e={},r={})=>{let n={},o=["sfx","voice"],a=l=>{let u=e[l],c=r[l];c&&!u?n[l]={changeType:"add",data:c}:u&&!c?o.includes(l)||(n[l]={changeType:"delete",data:u}):u&&c&&JSON.stringify(u)!==JSON.stringify(c)&&(n[l]={changeType:"update",data:c})},t=rm(e.background,r.background);t&&(n.background=t),a("screen"),a("bgm"),a("voice");let s=Zf(e.dialogue,r.dialogue);s&&(n.dialogue=s);let i=em(e.dialogue,r.dialogue);return i&&(n.dialogueSprite=i),a("choice"),a("form"),a("layout"),a("animation"),a("control"),a("character"),a("visual"),a("sfx"),n},ao=(e={})=>{let r=structuredClone(e);r.background&&(r.background.animations?.playback?.continuity!=="persistent"&&delete r.background.animations,!r.background.resourceId&&!r.background.colorId&&delete r.background);let n=a=>{r[a]&&(delete r[a].animations,Object.keys(r[a]).length===0&&delete r[a])};n("layout"),n("choice"),n("form"),n("screen"),r.dialogue?.ui&&(delete r.dialogue.ui.animations,Object.keys(r.dialogue.ui).length===0&&delete r.dialogue.ui,Object.keys(r.dialogue).length===0&&delete r.dialogue),r.dialogue?.character?.sprite&&(delete r.dialogue.character.sprite.animations,Object.keys(r.dialogue.character.sprite).length===0&&delete r.dialogue.character.sprite,Object.keys(r.dialogue.character).length===0&&delete r.dialogue.character,Object.keys(r.dialogue).length===0&&delete r.dialogue);let o=(a,t)=>{let s=r[a]?.items;Array.isArray(s)&&(r[a].items=s.map(i=>{let l={...i};return delete l.animations,t(l)?l:null}).filter(Boolean),r[a].items.length===0&&delete r[a])};return o("character",a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId),o("visual",a=>a.resourceId||a.transformId),r},tm=(e,r)=>{if(!e||!r)return;let n=e;for(let o of r.split(".")){if(n==null||!(o in Object(n)))return;n=n[o]}return n},nm=(e,r)=>{if(typeof e!="string")return e;if(e==="_event"){if(r==null)throw new Error('Action template binding "_event" requires event context "_event".');return r}if(!e.startsWith("_event."))return e;if(r==null)throw new Error(`Action template binding "${e}" requires event context "_event".`);let n=e.slice(7),o=tm(r,n);if(o===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "_event".`);return o},sm={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"])},om=(e,r)=>{let n=e[e.length-1];return n?sm[n]?.has(r)===!0:!1},to=(e,r,n=[])=>Array.isArray(e)?e.map(o=>to(o,r,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,om(n,o)?a:to(a,r,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?nm(e,r._event):_r(e,r):e,lo=(e,r)=>{if(!r)return e;if(Object.prototype.hasOwnProperty.call(r,"event"))throw new Error('Action template context key "event" is no longer supported. Use "_event".');return to(e,r)};var pe=e=>structuredClone(we(e)?ur(e):e),re=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Da=e=>e?.animations?.playback?.continuity==="persistent",ee=(e,r)=>re(e??{},r)&&e[r]!==void 0,At=(e,r)=>e?!r(e)&&e.animations?{animationsOnly:!0,state:{animations:pe(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},im=e=>ee(e,"opacity")||ee(e,"blur"),Ua=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Ba=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],co=["animationName","animationSpeed","loop"],am=e=>Ua.some(r=>ee(e,r)),za=e=>e?.text&&ee(e.text,"content")&&ee(e.text,"textStyleId"),Ya=e=>ee(e,"text"),lm=(e,r)=>e.resourceId?!0:za(e)?!r?.text:!1,cm=(e,r)=>{let n={...pe(e),...r};return r.text&&e.text&&(n.text={...pe(e.text),...pe(r.text)}),n},um=(e,r)=>{if(Ya(e)){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!za(e)&&!r?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`)}},La=e=>Ba.some(r=>ee(e,r)),Ma=e=>co.some(r=>ee(e,r)),pm=(e,r,{hasAuthoredTransformId:n=!1}={})=>{if(!r)return e;for(let o of Ba)!n&&!ee(e,o)&&ee(r,o)&&(e[o]=r[o]),re(e,o)&&e[o]===void 0&&delete e[o];return e},Ga=(e,r,n)=>{let o=e[n];return o?.id===r?.id?o:e.find(a=>a.id===r?.id)},dm=(e,r)=>{if(!r)return e;for(let n of Ua)!ee(e,n)&&ee(r,n)&&(e[n]=r[n]),re(e,n)&&e[n]===void 0&&delete e[n];return e},fm=(e,r)=>(r&&(!ee(e,"opacity")&&ee(r,"opacity")&&(e.opacity=r.opacity),!ee(e,"blur")&&ee(r,"blur")&&(e.blur=pe(r.blur)),re(e,"opacity")&&e.opacity===void 0&&delete e.opacity,re(e,"blur")&&e.blur===void 0&&delete e.blur),e),Ha=(e,r,n=[],{hasPatchFn:o=()=>!1,mergeItemFn:a}={})=>{if(!e||e.length===0)return{hasValidItems:!1,processedItems:[]};let t=e.map((s,i)=>{let l=Ga(n,s,i),u=r(s,l),c=im(s),p=am(s),m=o(s),d=re(s,"animations"),f=pe(s);return!u&&(c||p||m)&&l&&(f=a?a(l,f):{...pe(l),...f},d||delete f.animations),fm(dm(f,l),l)}).filter(s=>r(s)||s.animations);return{hasValidItems:t.length>0,processedItems:t}},mm=e=>{if(e){if(e.character&&re(e.character,"name"))return e.character.name;if(re(e,"characterName"))return e.characterName}},Xa=e=>!!e?.character&&re(e.character,"sprite"),ym=e=>{let r={},n=!1,o=mm(e);return o!==void 0&&(r.name=o,n=!0),Xa(e)&&(r.sprite=pe(e.character.sprite),n=!0),n?r:void 0},qa=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},Va=({dialogueState:e,dialogueAction:r,persistCharacter:n})=>re(r,"persistSprite")?r.persistSprite===!0:re(e,"persistSprite")?e.persistSprite===!0:n&&!re(r,"characterId"),Fa=({previousCharacter:e,characterFields:r,hasCharacterId:n,persistCharacter:o,persistSprite:a,hasExplicitPersistSprite:t,isAppendingAdvDialogueContent:s})=>{let i={},l=e??{},u=r??{},c=s&&!n,p=c&&!t;return re(u,"name")?i.name=u.name:(o&&!n||c)&&re(l,"name")&&(i.name=pe(l.name)),re(u,"sprite")?i.sprite=pe(u.sprite):(a||p)&&re(l,"sprite")&&(i.sprite=pe(l.sprite)),Object.keys(i).length>0?i:void 0},hm=({dialogueState:e,content:r,append:n=!1})=>{if(!n||!Array.isArray(r)){e.content=r,delete e.initialRevealedContent;return}let o=Array.isArray(e.content)?e.content:[];o.length>0?e.initialRevealedContent=o.map(a=>pe(a)):delete e.initialRevealedContent,e.content=[...o,...r]},gm=()=>({}),bm=(e,r)=>{if(!r.screen)return;let n=ee(r.screen,"opacity"),o=ee(r.screen,"blur"),a=re(r.screen,"animations");if(!n&&!o){a||delete e.screen;return}let t=e.screen,s={};if(n?s.opacity=r.screen.opacity:ee(t,"opacity")&&(s.opacity=t.opacity),o?s.blur=pe(r.screen.blur):ee(t,"blur")&&(s.blur=pe(t.blur)),re(s,"opacity")&&s.opacity===void 0&&delete s.opacity,re(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},Im=(e,r)=>{if(r.background){let n=ee(r.background,"resourceId"),o=ee(r.background,"colorId"),a=ee(r.background,"opacity"),t=ee(r.background,"blur"),s=ee(r.background,"transformId"),i=La(r.background),l=Ma(r.background),{animationsOnly:u,state:c}=At(r.background,d=>ee(d,"resourceId")||ee(d,"colorId")||ee(d,"opacity")||ee(d,"blur")||ee(d,"transformId")||La(d)||Ma(d));if(u){e.background=e.background?{...pe(e.background),...c}:c;return}if(!n&&!o&&!a&&!t&&!s&&!i&&!l){delete e.background;return}let p=e.background,m=pe(r.background);if(!n&&p?.resourceId){m.resourceId=p.resourceId,!re(m,"transformId")&&p.transformId&&(m.transformId=p.transformId);for(let d of co)!ee(m,d)&&ee(p,d)&&(m[d]=p[d])}pm(m,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(m.colorId=p.colorId),!a&&ee(p,"opacity")&&(m.opacity=p.opacity),!t&&ee(p,"blur")&&(m.blur=pe(p.blur)),re(m,"resourceId")&&m.resourceId===void 0&&delete m.resourceId,re(m,"colorId")&&m.colorId===void 0&&delete m.colorId,re(m,"animations")&&m.animations===void 0&&delete m.animations,re(m,"transformId")&&m.transformId===void 0&&delete m.transformId,re(m,"opacity")&&m.opacity===void 0&&delete m.opacity,re(m,"blur")&&m.blur===void 0&&delete m.blur;for(let d of co)re(m,d)&&m[d]===void 0&&delete m[d];if(!m.resourceId&&!m.colorId){delete e.background;return}p?.resourceId===m.resourceId&&p?.transformId===m.transformId&&!re(m,"animations")&&Da(p)&&(m.animations=pe(p.animations)),e.background=m}else e.background?.animations&&!Da(e.background)&&(e.background.animations={})},wm=(e,r)=>{if(!r.dialogue){if(e.dialogue&&(qa(e.dialogue),e.dialogue.mode==="adv")){e.dialogue.content=void 0,delete e.dialogue.initialRevealedContent,delete e.dialogue.textSpeed;let c=e.dialogue.persistCharacter===!0,p=Va({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:c});c||delete e.dialogue.characterId,e.dialogue.character=Fa({previousCharacter:e.dialogue.character,characterFields:{},hasCharacterId:!1,persistCharacter:c,persistSprite:p,hasExplicitPersistSprite:!1,isAppendingAdvDialogueContent:!1}),e.dialogue.character||delete e.dialogue.character}return}e.dialogue||(e.dialogue={});let n=e.dialogue.mode;if(r.dialogue.ui){let{animationsOnly:c,state:p}=At(r.dialogue.ui,m=>!!m.resourceId);c?e.dialogue.ui={...e.dialogue.ui,...p}:e.dialogue.ui={...r.dialogue.ui}}else e.dialogue?.ui?.animations&&(e.dialogue.ui.animations={});r.dialogue.mode==="adv"&&(e.dialogue.content=e.dialogue.content||void 0,e.dialogue.characterId=e.dialogue.characterId||void 0,e.dialogue.mode="adv"),r.dialogue.mode==="nvl"&&(e.dialogue?.mode!=="nvl"&&(e.dialogue.lines=[]),e.dialogue.mode="nvl");let o=r.dialogue.append===!0&&n!=="nvl"&&e.dialogue?.mode!=="nvl"&&Array.isArray(r.dialogue.content);r.dialogue.content!==void 0&&hm({dialogueState:e.dialogue,content:r.dialogue.content,append:o}),re(r.dialogue,"textSpeed")?e.dialogue.textSpeed=r.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=re(r.dialogue,"persistCharacter")?r.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let t=Va({dialogueState:e.dialogue,dialogueAction:r.dialogue,persistCharacter:a});re(r.dialogue,"persistSprite")&&(e.dialogue.persistSprite=t);let s=re(r.dialogue,"characterId"),i=ym(r.dialogue),l=Xa(r.dialogue);s?r.dialogue.characterId?e.dialogue.characterId=r.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let u=Fa({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:t,hasExplicitPersistSprite:re(r.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(u?e.dialogue.character=u:delete e.dialogue.character,l||qa(e.dialogue),r.dialogue.clear){delete e.dialogue;return}if(r.dialogue?.clearPage&&e.dialogue?.mode==="nvl"&&(e.dialogue.lines=[]),e.dialogue?.mode==="nvl"&&r.dialogue.content!==void 0){let c={content:r.dialogue.content,characterId:e.dialogue.characterId??null};e.dialogue.textSpeed!==void 0&&(c.textSpeed=e.dialogue.textSpeed),e.dialogue.character&&(c.character=pe(e.dialogue.character)),e.dialogue.lines.push(c)}},km=(e,r)=>{if(r.sfx){let n=Array.isArray(r.sfx.items)&&r.sfx.items.length>0,o=Array.isArray(r.sfx.channels)&&r.sfx.channels.length>0;if(!n&&!o){delete e.sfx;return}e.sfx=pe(r.sfx)}else e.sfx&&delete e.sfx},vm=(e,r)=>{if(r.bgm){let n=Array.isArray(r.bgm.sounds);if(!r.bgm.resourceId&&!n||n&&r.bgm.sounds.length===0){e.bgm=void 0;return}e.bgm=pe(r.bgm),r.bgm.resourceId&&(e.bgm.loop=r.bgm.loop??!0)}},Am=(e,r)=>{if(r.visual){let n=e.visual?.items||[];r.visual.items?.forEach((t,s)=>{um(t,Ga(n,t,s))});let{hasValidItems:o,processedItems:a}=Ha(r.visual.items,lm,n,{hasPatchFn:Ya,mergeItemFn:cm});o?e.visual={items:a}:delete e.visual}else e.visual?.items&&(e.visual.items=e.visual.items.map(n=>n.animations?{...n,animations:{}}:n))},Pm=(e,r)=>{if(!r.character){e.character?.items&&(e.character.items=e.character.items.map(a=>a.animations?{...a,animations:{}}:a));return}let{hasValidItems:n,processedItems:o}=Ha(r.character.items,a=>a.sprites&&a.sprites.length>0||a.transformId||a.resourceId,e.character?.items||[]);n?e.character={items:o}:delete e.character},xm=(e,r)=>{r.animation?e.animation=r.animation:e.animation&&delete e.animation},Em=(e,r)=>{if(r.layout){let{animationsOnly:n,state:o}=At(r.layout,a=>!!a.resourceId);if(n){e.layout=o;return}if(!r.layout.resourceId){delete e.layout;return}e.layout=r.layout}else e.layout&&delete e.layout},Sm=(e,r)=>{if(r.choice){let{animationsOnly:n,state:o}=At(r.choice,a=>!!a.resourceId);if(n){e.choice={...e.choice,...o};return}if(!r.choice.resourceId){delete e.choice;return}e.choice=r.choice}else e.choice&&delete e.choice},Rm=(e,r)=>{if(r.form){let{animationsOnly:n,state:o}=At(r.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!r.form.resourceId){delete e.form;return}e.form=pe(r.form)}else e.form&&delete e.form},Om=(e,r)=>{if(r.control){if(!r.control.resourceId){delete e.control;return}e.control=r.control}},Cm=(e,r)=>{if(r.voice){let n=Array.isArray(r.voice.sounds);if(!r.voice.resourceId&&!n||n&&r.voice.sounds.length===0){delete e.voice;return}e.voice=pe(r.voice)}else e.voice&&delete e.voice},$m=(e,r)=>{r.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},Nr=e=>fn(gm,[$m,bm,Im,km,vm,Am,wm,Pm,xm,Em,Sm,Rm,Om,Cm])(e);var Kr=(e,r)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=_r(e,r);return n&&typeof n=="object"?e:n};var _m=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"}}),yr=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}),Pt=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),Tm=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"}),uo=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),Wa=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),po=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),Ka=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),jm=(e,r)=>{let n=Tm[e];if(n==="number"){if(typeof r!="number"||!Number.isFinite(r))throw new Error(`${e} requires a finite numeric value`);return}if(n==="boolean"){if(typeof r!="boolean")throw new Error(`${e} requires a boolean value`);return}if(n==="string"){if(typeof r!="string")throw new Error(`${e} requires a string value`);return}if(n==="nullableString"){if(r!==null&&typeof r!="string")throw new Error(`${e} requires a string or null value`);return}throw new Error(`Unsupported runtime field "${e}"`)},bn=(e,r)=>{if(jm(e,r),e==="autoForwardDelay"&&r<0)throw new Error("autoForwardDelay requires a value greater than or equal to 0");if(["autoForwardSpeed","soundVolume","musicVolume"].includes(e)&&(r<0||r>100))throw new Error(`${e} requires a value between 0 and 100`);return e==="saveLoadPagination"?Math.max(1,Math.trunc(r)):r},fo=(e={})=>{let r=e?.config;if(r===void 0)return{...yr};if(!Ka(r))throw new Error("projectData.config must be an object");let n=Object.keys(r).find(i=>i!=="runtimeDefaults");if(n)throw new Error(`projectData.config contains unsupported field "${n}"`);let o=r.runtimeDefaults;if(o===void 0)return{...yr};if(!Ka(o))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set(Wa),t=Object.keys(o).find(i=>!a.has(i));if(t)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${t}"`);let s={...yr};return Wa.forEach(i=>{o[i]!==void 0&&(s[i]=bn(i,o[i]))}),s},Nm=(e,r)=>{if(r.startsWith("global.")){let n=r.slice(7);return e?.global?.[n]}if(r.startsWith("context.runtime.")){let n=r.slice(16),o=Array.isArray(e?.contexts)?e.contexts:[];return o[o.length-1]?.runtime?.[n]}},hr=e=>Object.fromEntries(Object.entries(_m).map(([r,n])=>{let o=Nm(e,n.source),a=o!==void 0?o:yr[r]??Pt[r];return[r,a]})),He=(e,r)=>hr(e)[r],Ja=(e={})=>Object.fromEntries(uo.map(r=>[r,e[r]??yr[r]]));var Jr=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}),er=Object.freeze({BEHIND_BACKGROUND:Jr.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:Jr.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:Jr.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:Jr.VISUAL_BEHIND_CHOICE,FOREGROUND:Jr.VISUAL_FOREGROUND}),mo=er.BEHIND_DIALOGUE,yo=Object.freeze(Object.values(er).sort((e,r)=>e-r));var Dm={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([r,n])=>({id:r,...n})),formatDate:oo},Lm=/^\$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(r=>{if(!r||typeof r!="object"||Array.isArray(r)||Object.keys(r).length!==1)return xt(r);let[n]=Object.keys(r),o=Lm.exec(n);if(!o)return xt(r);let[,a,t,s]=o,i=`$for ${a}${t?`, ${t}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(r[n])?r[n]:[];return{[i]:xt(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([r,n])=>[r,xt(n)])),tr=(e,r)=>{let n={functions:Dm};return _r(xt(e),r,n)},_o=({animationType:e,animationId:r,animationPath:n})=>{if(e!==void 0&&!(e==="update"||e==="transition"))throw new Error(`[${n}] Animation "${r}" has unsupported type "${e}". Use "update" or "transition".`)},Mm=({id:e,targetId:r,animation:n,playback:o,animationPath:a="animation"})=>{let t=structuredClone(n);if(_o({animationType:t.type,animationId:e,animationPath:a}),delete t.name,delete t.playback,t.id=e,t.targetId=r,o!==void 0){let s=Um(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?fl(t):null;if(s.loop===!0&&t.type!=="update")throw new Error(`[${a}.playback] playback.loop is only supported for type "update".`);if(s.loop===!0&&t.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.`);t.playback=s}}return t},qm=(e,{animationId:r="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return _o({animationType:e.type,animationId:r,animationPath:n}),e.type},Vm=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},Fm=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},Um=(e,r="animation.playback")=>{if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`[${r}] playback must be an object.`);if(e.continuity!==void 0&&e.continuity!=="render"&&e.continuity!=="persistent")throw new Error(`[${r}] 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(`[${r}] playback.speed must be a finite number greater than 0.`);if(e.loop!==void 0&&typeof e.loop!="boolean")throw new Error(`[${r}] 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},Bm=e=>{let r=e?.playback?.speed;return typeof r=="number"&&Number.isFinite(r)&&r>0?r:1},Dr=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ul=e=>e?.playback?.continuity==="persistent",Ao=e=>Array.isArray(e)?e.map(Ao):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((r,n)=>(r[n]=Ao(e[n]),r),{}),vn=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let r=structuredClone(e);return r.playback&&(delete r.playback.continuity,r.playback.speed===1&&delete r.playback.speed,Object.keys(r.playback).length===0&&delete r.playback),JSON.stringify(Ao(r))},pl=(e=[])=>e.filter(r=>ul(r)).map(r=>structuredClone(r)),dl=e=>Array.isArray(e?.keyframes)?e.keyframes.reduce((r,n)=>{let o=typeof n?.duration=="number"&&Number.isFinite(n.duration)?n.duration:0;return r+o},0):0,ho=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((r,n)=>Math.max(r,dl(n)),0),fl=e=>Math.max(ho(e?.tween),ho(e?.prev?.tween),ho(e?.next?.tween),dl(e?.mask?.progress)),ml=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:fl(e)/Bm(e),zm=e=>e.some(r=>r?.playback?.loop===!0),Qa=({animationInstances:e,activePersistentAnimations:r})=>{if(!Array.isArray(e)||e.length===0||!Array.isArray(r)||r.length===0)return!1;let n=new Set(r.map(vn).filter(Boolean));return e.some(o=>{if(!ul(o))return!1;let a=vn(o);return a?n.has(a):!1})},Be=({animationInstances:e,isLineCompleted:r,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:t=!0})=>!Array.isArray(e)||e.length===0||n?!1:zm(e)||t&&!r||Qa({animationInstances:e,activePersistentAnimations:o})?!0:t?!1:Qa({animationInstances:e,activePersistentAnimations:a}),Ym=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(r=>e[r]!==void 0),Gm=(e,r)=>{if(Ym(e))throw new Error(`[${r}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},Hm=({resources:e,animationId:r,playback:n,instanceId:o,targetId:a,animationPath:t="animation"})=>{if(!r||!a)return!1;let s=e?.animations?.[r];return s?Mm({id:o,targetId:a,animation:s,playback:n,animationPath:t}):null},Xm=(e,{defaultTargetId:r,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return _o({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=r,a},To=({animations:e,transitions:r,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{r.forEach((t,s)=>{e.push(Xm(t,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},Po=(e,r)=>{if(e===void 0)return[];if(!Array.isArray(e)||e.some(n=>n===null||typeof n!="object"||Array.isArray(n)))throw new Error(`${r} must be an array of objects`);return e},Wm=({content:e,path:r,variables:n})=>Po(e,r).reduce((o,a)=>{let t=Kr(a.text,{variables:n});return o+`${t??""}`.length},0),Za=(e=[])=>{let r=new Map;for(let n of e)n?.id&&r.set(n.id,(r.get(n.id)??0)+1);return new Set(Array.from(r.entries()).filter(([,n])=>n>1).map(([n])=>n))},In=(e,r=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}-${r}-${o.join("-")}`},Et=(e,r)=>{if(!r.transformId)throw new Error(`Visual item "${r.id}" requires transformId`);let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for visual item "${r.id}"`);return n},Km=(e,r={})=>{if(!r?.transformId)return;let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for background`);return n},Jm=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Qm=(e={})=>Jm.some(r=>Dr(e,r)),yl=(e={},r)=>{if(r){if(e.images?.[r])return"sprite";if(e.videos?.[r])return"video";if(e.spritesheets?.[r])return"spritesheet-animation";if(e.layouts?.[r])return"container"}},kn=({resourceId:e,kind:r})=>{if(e)return r?`bg-cg-background-${r}`:`bg-cg-${e}`},Zm=(e={})=>e.textStyles||{},ey=(e={})=>e.images||{},ry=.5,ty=(e={},r,n)=>{if(r){if(!e.animations?.[r])throw new Error(`Animation '${r}' not found in spritesheet resource '${n}'`);return r}return Object.keys(e.animations??{})[0]},jo=({id:e,resourceId:r,spritesheet:n,animationName:o,animationSpeed:a,loop:t,width:s,height:i,transform:l={}}={})=>{let u=ty(n,o,r),c=u?n.animations?.[u]:void 0;if(!c){console.warn(`Spritesheet animation not found: ${r}`);return}return{id:e,type:"spritesheet-animation",...l,width:s??n.width,height:i??n.height,src:n.fileId,atlas:n.jsonData,playback:{frames:c.frames,animationSpeed:a??c.animationSpeed??ry,loop:t??c.loop??!0}}},hl=({id:e,item:r,resources:n={}}={})=>{let o=n.images?.[r.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?.[r.resourceId];if(a)return jo({id:e,resourceId:r.resourceId,spritesheet:a,animationName:r.animationName,animationSpeed:r.animationSpeed,loop:r.loop,transform:{x:0,y:0}});console.warn(`Character sprite resource not found: ${r.resourceId}`)},ny=(e={})=>e.colors||{},sy=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Rt=(e,r)=>e==="root"?`${r}`:`${e}.${r}`,et=(e,r,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${r}" must resolve to a non-empty string`)},go=(e,r,n)=>{if(e===void 0)return 1;if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);if(e<0||e>1)throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);return e},bo=(e,r,n,o,{minimum:a}={})=>{if(e===void 0)return o;if(typeof e!="number"||!Number.isFinite(e)||a!==void 0&&e<a){let t=a===void 0?"a finite number":`a finite number >= ${a}`;throw new Error(`shadow.${r} for text style "${n}" must be ${t}`)}return e},xn=(e,r)=>{if(typeof e!="string"||!sy.test(e))throw new Error(`${r} must resolve to a hex color`);return e.length===4?`#${e.slice(1).split("").map(n=>n.repeat(2)).join("")}`:e},el=(e,r,n)=>{let o=xn(e,n);if(r===1)return o;let a=Number.parseInt(o.slice(1,3),16),t=Number.parseInt(o.slice(3,5),16),s=Number.parseInt(o.slice(5,7),16);return`rgba(${a}, ${t}, ${s}, ${r})`},oy=(e={},r)=>{let n=Zm(e)?.[r];if(!n)throw new Error(`Text style "${r}" not found`);let a=(Array.isArray(n.fontId)?n.fontId:[n.fontId]).map(l=>{let u=e.fonts?.[l];if(!u)throw new Error(`Font "${l}" not found for text style "${r}"`);return u.fileId}),t=e.colors?.[n.colorId];if(!t)throw new Error(`Color "${n.colorId}" not found for text style "${r}"`);let s=go(n.colorAlpha,"colorAlpha",r),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:el(t.hex,s,`Color "${n.colorId}" for text style "${r}"`)};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 "${r}"`);let u=go(n.strokeAlpha,"strokeAlpha",r);i.strokeColor=el(l.hex,u,`Stroke color "${n.strokeColorId}" for text style "${r}"`)}else if(n.strokeAlpha!==void 0)throw new Error(`strokeAlpha for text style "${r}" 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 "${r}"`);i.shadow={color:xn(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${r}"`),alpha:go(n.shadow.alpha,"shadow.alpha",r),blur:bo(n.shadow.blur,"blur",r,0,{minimum:0}),offsetX:bo(n.shadow.offsetX,"offsetX",r,2),offsetY:bo(n.shadow.offsetY,"offsetY",r,2)}}return i},xo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>xo(a,r,`${n}[${t}]`));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,t]of Object.entries(e))a!=="textStyleId"&&(o[a]=xo(t,r,Rt(n,a)));return e.textStyleId!==void 0&&(et(e.textStyleId,n,"textStyleId"),o.textStyle=oy(r,e.textStyleId)),o},No=(e={},r)=>{let n=ny(e)?.[r];if(!n)throw new Error(`Color "${r}" not found`);return xn(n.hex,`Color "${r}"`)},gl=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",Io=(e,r,n)=>{let o=e?.[r];if(!(!o||typeof o!="object"||Array.isArray(o))&&Object.prototype.hasOwnProperty.call(o,"fill"))throw new Error(`Inline ${r}.fill is not allowed in rect layout elements at "${n}". Use ${gl(`${r}.fill`)} instead`)},iy=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ot(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;let o={};for(let[a,t]of Object.entries(e))a!=="colorId"&&(o[a]=Ot(t,r,Rt(n,a)));return e.colorId!==void 0&&(et(e.colorId,n,"colorId"),o.fill=No(r,e.colorId)),o},Ot=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ot(a,r,`${n}[${t}]`));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 ${gl("fill")} instead`);Io(e,"hover",n),Io(e,"click",n),Io(e,"rightClick",n)}let o={};for(let[a,t]of Object.entries(e))if(!(e.type==="rect"&&a==="colorId")){if(e.type==="rect"&&(a==="hover"||a==="click"||a==="rightClick")){o[a]=iy(t,r,Rt(n,a));continue}o[a]=Ot(t,r,Rt(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(et(e.colorId,n,"colorId"),o.fill=No(r,e.colorId)),o},wo=(e={},r)=>{let n=ey(e)?.[r];return n||null},bl=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",rl=(e,r,n,o)=>{let a=e?.[r];if(!(!a||typeof a!="object"||Array.isArray(a))&&Object.prototype.hasOwnProperty.call(a,o))throw new Error(`Inline ${r}.${o} is not allowed in sprite layout elements at "${n}". Use ${bl(`${r}.${o}`)} instead`)},tl=(e,r,n)=>{let o=e[r];e[r]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},Eo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Eo(a,r,`${n}[${t}]`));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 ${bl(a)} instead`);rl(e,"hover",n,"src"),rl(e,"click",n,"src")}let o={};for(let[a,t]of Object.entries(e))e.type==="sprite"&&(a==="imageId"||a==="hoverImageId"||a==="clickImageId")||(o[a]=Eo(t,r,Rt(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){et(e.imageId,n,"imageId");let a=wo(r,e.imageId),t=a?.fileId??e.imageId;o.src=t,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&&(et(e.hoverImageId,n,"hoverImageId"),tl(o,"hover",wo(r,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(et(e.clickImageId,n,"clickImageId"),tl(o,"click",wo(r,e.clickImageId)?.fileId??e.clickImageId)),o},Do=(e,r={},n="root")=>Eo(Ot(xo(e,r,n),r,n),r,n),nr=Do,Lr=(e=[])=>e.find(r=>r.id==="story"),ay="#000000",So="bg-cg-background-color",ly=({resources:e={},background:r={},screen:n})=>r?.colorId===void 0?xn(n?.backgroundColor??ay,"screen.backgroundColor"):No(e,r.colorId),Il=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},cy=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},nl=(e={},{includeDefaultAlpha:r=!1}={})=>{let n=Il(e),o=cy(e),a={};return(r||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},uy=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},py=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},wl=(e={})=>{let r=uy(e),n=py(e),o={};return r!==void 0&&(o.alpha=r),n&&(o.blur=n),o},Zr=(e={})=>wl(e),rr=(e={},r={})=>{let n={x:r.x??e.x,y:r.y??e.y,anchorX:r.anchorX??e.anchorX,anchorY:r.anchorY??e.anchorY,rotation:r.rotation??e.rotation,scaleX:r.scaleX??e.scaleX,scaleY:r.scaleY??e.scaleY},o=r.originX??e.originX,a=r.originY??e.originY;return o!==void 0&&(n.originX=o),a!==void 0&&(n.originY=a),n},dy=["id","type","resourceId","transformId","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],Lo=(e={})=>e.text&&Dr(e.text,"content")&&Dr(e.text,"textStyleId"),sl=(e={})=>{if(e.resourceId)return e.resourceId;if(Lo(e))return"text"},ol=(e,r={})=>typeof e=="string"?r.images?.[e]?.fileId??e:!e||typeof e!="object"||Array.isArray(e)?e:e.imageId?r.images?.[e.imageId]?.fileId??e.imageId:Array.isArray(e.items)?{...e,items:e.items.map(n=>{if(typeof n=="string")return r.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:r.images?.[o]?.fileId??o}}return typeof n.src=="string"?{...n,src:r.images?.[n.src]?.fileId??n.src}:n})}:e,fy=({item:e,particle:r,resources:n})=>{let o=Et(n,e),a=structuredClone(r),t=a.modules?.appearance?.texture;t!==void 0&&(a.modules.appearance.texture=ol(t,n)),a.texture!==void 0&&(a.texture=ol(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...rr(o,e)};return Object.assign(s,Zr(e)),s},my=e=>{if(e.text){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!Lo(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);for(let r of dy)if(Dr(e.text,r))throw new Error(`Visual item "${e.id}" text.${r} is reserved for the visual item`)}},yy=({resources:e,background:r,screen:n={width:1920,height:1080},includeOpacity:o=!1})=>{let a={id:So,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:ly({resources:e,background:r,screen:n})};if(o){let t=Il(r);t!==void 0&&(a.alpha=t)}return a},hy=(e={},r)=>r?!!(e.images?.[r]||e.videos?.[r]||e.spritesheets?.[r]||e.layouts?.[r]):!1,il=({resources:e={},resourceId:r,colorId:n})=>{let o=yl(e,r);return r&&(o||n===void 0)?{resourceId:r,targetId:kn({resourceId:r,kind:o})}:n!==void 0?{resourceId:So,targetId:So}:{resourceId:void 0,targetId:void 0}},kl=100,gr=kl,gy="channel:bgm",by="channel:music-room",Iy="music-room:player",wy="channel:voice",ky="default",vy=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),St=(...e)=>e.map(vy).join(":"),An=(e,r,n)=>{let o=new Set;e.forEach(({id:a})=>{if(o.has(a)){let t=n?` in ${n}`:"";throw new Error(`Duplicate ${r} id "${a}"${t}.`)}o.add(a)})},Ay=(e,r)=>e*r/kl,vl=(e={},r)=>e?.[r]??yr[r],En=(e={},r,n=gr)=>Ay(n,vl(e,r)),Sn=({id:e,volume:r,muted:n,pan:o,loop:a,playback:t,interruption:s,children:i,runtime:l})=>{let u={id:e,type:"audio-channel",volume:r,muted:!!l?.muteAll||(n??!1),pan:o??0,children:i};return a!==void 0&&(u.loop=a),t!==void 0&&(u.playback=structuredClone(t)),s!==void 0&&(u.interruption=s),u},wn=(e,r,n,o)=>e[n]!==void 0?e[n]:r[n]!==void 0?r[n]:o,Py=["muted","pan","playbackRate","startAt","endAt"],Rn=({id:e,sound:r,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:wn(r,n,"loop",o),volume:wn(r,n,"volume",gr),startDelayMs:wn(r,n,"startDelayMs",0)};Py.forEach(s=>{let i=wn(r,n,s,void 0);i!==void 0&&(a[s]=i)}),r.playback!==void 0&&(a.playback=structuredClone(r.playback));let t=a.startAt??0;if(a.endAt!==void 0&&a.endAt!==null&&a.endAt<t)throw new Error(`Sound "${e}" endAt (${a.endAt}) must be greater than or equal to startAt (${t}).`);return a},qe=({variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,runtime:a,saveSlots:t=[],dialogueState:s,includeInactiveAdvDialogue:i=!1,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g=[],characters:h={},dialogueUIHidden:w,skipOnlyViewedLines:b,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??u??!1,skipMode:a?.skipMode??c??!1,dialogueUIHidden:a?.dialogueUIHidden??w??!1,isLineCompleted:a?.isLineCompleted??l??!1},v=Oy({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:k}),x={variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:k.localizationPackageId,runtime:k,saveSlots:t,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g,characters:h};return v&&(x.dialogue=v,x.dialogueLines=v.lines),x},al=100,Pn=(e,r)=>{if(Array.isArray(e))return e.map(o=>Pn(o,r));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(o=>{n[o]=Pn(n[o],r)}),n.type==="text-revealing"?r(n):n},xy=e=>Pn(e,r=>({...r,revealEffect:"none"})),Ey=e=>Pn(e,r=>{let n=Number(r.speed??r.displaySpeed),o=Number.isFinite(n)?Math.max(n,al):al;return{...r,speed:o,...Object.prototype.hasOwnProperty.call(r,"displaySpeed")?{displaySpeed:o}:{}}}),br=(e,{isLineCompleted:r=!1,skipMode:n=!1,skipTransitionsAndAnimations:o=!1}={})=>r||o?xy(e):n?Ey(e):e,Al=({id:e,screen:r={width:1920,height:1080}})=>({id:e,type:"rect",fill:"transparent",width:r.width,height:r.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 r={};for(let[t,s]of Object.entries(e))r[t]=Ro(s);let n=r.click?.payload;if(!n||typeof n!="object"||Array.isArray(n))return r;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{...r,click:{...r.click,payload:{...n,bypassChoice:!0,...a?{actions:{...o,nextLine:a}}:{}}}}},Sy=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),ll="submit",ko=(e,r,n={})=>{let o=e?.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},a=o.actions&&typeof o.actions=="object"?o.actions:{},t=n.replaceActions===!0?r:{...a,...r};return{...e||{},payload:{...o,actions:t}}},Oo=(e,r,n={})=>{if(Array.isArray(e))return e.map(u=>Oo(u,r,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===ll,t=o&&n.submitRoleAncestor,s=a||t?{submitRoleAncestor:!0}:{},i={};for(let[u,c]of Object.entries(e))i[u]=Oo(c,r,u==="children"?s:{});let l=i;if(l.type==="input"&&typeof l.field=="string"){let u=r?.fields?.[l.field];if(u){let c={updateFormField:{formKey:r.key,field:u.id,value:"_event.value"}};l={...l,value:u.value,placeholder:l.placeholder===void 0?u.placeholder:l.placeholder,multiline:l.multiline===void 0?u.multiline:l.multiline,...l.maxLength===void 0&&u.maxLength!==void 0?{maxLength:u.maxLength}:{},change:ko(l.change,c),submit:ko(l.submit,r.submitActions)}}}return l.formRole===ll||t?{...l,click:ko(l.click,r.submitActions,{replaceActions:!0})}:l},Co=(e,r)=>{if(Array.isArray(e))return e.map(o=>Co(o,r));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=Co(a,r);for(let o of Sy){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},$o=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0,s=mn({characterId:e,character:r,characterName:n,characters:o,variables:a});return{...t||{},...r||{},name:s}},Pl=(e=[],r={},n={})=>e.map(o=>{let a=$o({characterId:o.characterId,character:o.character,characterName:o.characterName,characters:r,variables:n}),t=typeof o.text=="string"?o.text:Array.isArray(o.content)?o.content.map(s=>s?.text??"").join(""):"";return{...o,text:t,character:a,characterName:a.name}}),Ry=e=>!(!e||e.mode==="adv"&&e.content===void 0),Oy=({dialogueState:e,includeInactiveAdvDialogue:r=!1,characters:n={},variables:o,runtime:a}={})=>{if(!r&&!Ry(e))return;let t=e.content===void 0?[{text:""}]:Po(e.content,"dialogue.content"),s=e.content===void 0?0:Wm({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:o}),i=a?.dialogueTextSpeed??yr.dialogueTextSpeed,l=e.textSpeed??i,u=(e.lines||[]).map((p,m)=>{let d=Po(p.content,`dialogue.lines[${m}].content`),f=$o({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:Kr(y.text,{variables:o})})),character:f,characterName:f.name}}),c=$o({characterId:e.characterId,character:e.character,characters:n,variables:o});return{characterId:e.characterId,persistCharacter:e.persistCharacter,persistSprite:e.persistSprite,character:c,textSpeed:l,content:t.map(p=>({...p,text:Kr(p.text,{variables:o})})),initialRevealedCharacters:s,lines:u}},xl=({container:e,resources:r,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:t=!1})=>{let s=tr(e,n);return nr(br(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:t}),r)},vo=(e,r={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(r),cl=({renderStateKeyboard:e,keyboard:r,phase:n})=>{!r||typeof r!="object"||Array.isArray(r)||Object.entries(r).forEach(([o,a])=>{let t=e[o]??{},s=n==="keydown"?a?.keydown:a?.keyup;if(n==="keydown"&&s&&typeof s=="object"){e[o]={...t,keydown:{payload:vo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:vo(a.keyup)});return}e[o]={...t,[n]:{payload:vo(a)}}})},Cy=(e={},r={})=>{let n={};return cl({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),cl({renderStateKeyboard:n,keyboard:r,phase:"keyup"}),Object.keys(n).length>0?n:void 0},sr=({animationsDef:e,resources:r,previousResourceId:n,currentResourceId:o,previousTargetId:a,currentTargetId:t,animationPath:s,idPrefix:i})=>{if(!e)return[];let l=[],u=({instanceId:h,targetId:w})=>{let b=Hm({resources:r,animationId:d,playback:f,instanceId:h,targetId:w,animationPath:s});b&&l.push(b)},c=n!=null&&n!==!1,p=o!=null&&o!==!1,m=a&&t&&a===t;Gm(e,s);let d=Vm(e),f=Fm(e),y=r?.animations?.[d],g=qm(y,{animationId:d,animationPath:s});if(g==="update")return p&&t?u({instanceId:`${i}-animation-update`,targetId:t}):c&&a&&u({instanceId:`${i}-animation-update`,targetId:a}),l;if(g==="transition"){let h=`${i}-animation-transition`,w=f?.continuity==="persistent"?h:`${i}-animation-in`;if(c&&p&&m)return u({instanceId:h,targetId:t}),l;c&&u({instanceId:`${i}-animation-out`,targetId:a}),p&&u({instanceId:w,targetId:t})}return l},$y=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),_y=(e,{presentationState:r,previousPresentationState:n,currentLineActions:o,resources:a={},screen:t={width:1920,height:1080},isLineCompleted:s,skipTransitionsAndAnimations:i,variables:l,imageGallery:u,musicRoom:c,sceneReplay:p,runtime:m,activePersistentAnimations:d,restoredPersistentAnimations:f,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,saveSlots:k=[]})=>{let{elements:v,animations:x}=e;if(r.background){let $=o===void 0?!0:Dr(o?.background??{},"animations"),T=v.find(Q=>Q.id==="story");if(!T)return e;let S=Km(a,r.background),D=S||Qm(r.background),U=n?.background?.resourceId,le=n?.background?.colorId,z=r.background.resourceId??(r.background.animations?U:void 0),ce=r.background.colorId??(r.background.animations?le:void 0),N=hy(a,z),se={...r.background,colorId:ce};if((ce!==void 0||N)&&T.children.push(yy({resources:a,background:se,screen:t,includeOpacity:!N})),z){let{images:Q={},videos:ne={},spritesheets:fe={}}=a,Z=yl(a,z),O;if(Z==="sprite"?O=Q[z]:Z==="video"?O=ne[z]:Z==="spritesheet-animation"&&(O=fe[z]),O){let _=Z==="video",F=Z==="spritesheet-animation",te={x:(t?.width??1920)/2,y:(t?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...S},he={...nl(r.background,{includeDefaultAlpha:!0}),...rr(te,r.background)},Pe;F?Pe=jo({id:kn({resourceId:z,kind:Z}),resourceId:z,spritesheet:O,animationName:r.background.animationName,animationSpeed:r.background.animationSpeed,loop:r.background.loop,transform:he}):Pe={id:kn({resourceId:z,kind:Z}),type:_?"video":"sprite",src:O.fileId,width:O.width,height:O.height,...he},_&&(Pe.loop=r.background.loop??!1,Pe.volume=O.volume??50),Pe&&T.children.push(Pe)}}if(z){let{layouts:Q={}}=a,ne=Q[z];if(ne){let fe={id:kn({resourceId:z,kind:"container"}),type:"container",children:ne.elements,...nl(r.background)};D&&Object.assign(fe,rr({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...S},r.background));let Z=tr(fe,qe({variables:l,imageGallery:u,musicRoom:c,sceneReplay:p,runtime:m,saveSlots:k,dialogueState:r.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,characters:a.characters||{},skipTransitionsAndAnimations:i}));T.children.push(nr(br(Z,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let X=il({resources:a,resourceId:U,colorId:le}),V=il({resources:a,resourceId:z,colorId:ce}),H=sr({animationsDef:r.background.animations,resources:a,previousResourceId:X.resourceId,currentResourceId:V.resourceId,previousTargetId:X.targetId,currentTargetId:V.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});Be({animationInstances:H,isLineCompleted:s,skipTransitionsAndAnimations:i,activePersistentAnimations:d,restoredPersistentAnimations:f,isAuthoredOnCurrentLine:$})&&x.push(...H)}return e},Ty=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{elements:i,animations:l}=e;if(r.character&&o){let u=i.find(f=>f.id==="story");if(!u)return e;let c=r.character.items||[],p=n?.character?.items||[],m=Za(c),d=Za(p);for(let f=0;f<c.length;f++){let y=c[f],{transformId:g,sprites:h}=y,w=p.find(D=>D.id===y.id),b=p.findIndex(D=>D.id===y.id),E=w?.sprites&&w.sprites.length>0,k=h&&h.length>0,v=b>=0?In(w,b,d):void 0,x=sr({animationsDef:y.animations,resources:o,previousResourceId:v,currentResourceId:k?In(y,f,m):void 0,previousTargetId:v,currentTargetId:k?In(y,f,m):void 0,animationPath:`character.items[${f}].animations`,idPrefix:"character"});if(y.animations&&!h&&!g&&E&&Be({animationInstances:x,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})){l.push(...x);continue}if(y.animations&&!h&&!g)continue;if(!h||h.length===0||!g){console.warn("Character item missing sprites or transformId:",y);continue}let $=In(y,f,m),T=o.transforms[g];if(!T){console.warn("Transform not found:",g);continue}let S={type:"container",id:$,...rr(T,y),...Zr(y),children:[]};for(let D of h){let U=hl({id:`${$}-${D.id}`,item:D,resources:o});U&&S.children.push(U)}u.children.push(S),Be({animationInstances:x,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&l.push(...x)}}return e},El=(e,r)=>{if(!yo.includes(e))throw new Error(`${r} must be one of: ${yo.join(", ")}.`)},jy=(e,r)=>{let n=!!e.resourceId||Lo(e),o=e.layer??(n?void 0:r?.layer)??mo;return El(o,`Visual item "${e.id}" layer`),o},Ny=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,variables:s,imageGallery:i,musicRoom:l,sceneReplay:u,runtime:c,activePersistentAnimations:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,saveSlots:w=[],visualLayer:b})=>{let{elements:E,animations:k}=e;if(r.visual&&o){let v=E.find(S=>S.id==="story");if(!v)return e;let x=r.visual.items,$=n?.visual?.items||[],T=qe({variables:s,imageGallery:i,musicRoom:l,sceneReplay:u,runtime:c,saveSlots:w,dialogueState:r.dialogue,isLineCompleted:a,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:t});b!==void 0&&El(b,"visualLayer");for(let S of x){let D=$.find(X=>X.id===S.id),U=jy(S,D);if(b!==void 0&&U!==b)continue;if(my(S),S.text){let X=Et(o,S),V={...structuredClone(S.text),id:`visual-${S.id}`,type:"text",...rr(X,S)};Object.assign(V,Zr(S)),v.children.push(nr(tr(V,T),o))}if(S.resourceId){let{images:X={},videos:V={},spritesheets:H={}}=o,Q=H[S.resourceId];if(Q){let ne=Et(o,S),fe=Zr(S),Z=jo({id:`visual-${S.id}`,resourceId:S.resourceId,spritesheet:Q,animationName:S.animationName,animationSpeed:S.animationSpeed,loop:S.loop,width:S.width,height:S.height,transform:{...rr(ne,S),alpha:fe.alpha??S.alpha??1,...fe.blur?{blur:fe.blur}:{}}});Z&&v.children.push(structuredClone(Z))}else{let ne=X[S.resourceId]||V[S.resourceId];if(ne){let fe=V[S.resourceId]!==void 0,Z=Et(o,S),O={id:`visual-${S.id}`,type:fe?"video":"sprite",src:ne.fileId,width:ne.width,height:ne.height,...rr(Z,S)};Object.assign(O,Zr(S)),fe&&(O.loop=ne.loop??!1,O.volume=ne.volume??50),v.children.push(O)}}}let le=!!(o.spritesheets?.[S.resourceId]||o.images?.[S.resourceId]||o.videos?.[S.resourceId]);if(S.resourceId&&!le){let X=o.particles?.[S.resourceId];X&&v.children.push(fy({item:S,particle:X,resources:o}))}let z=!!o.particles?.[S.resourceId];if(S.resourceId&&!le&&!z){let{layouts:X={}}=o,V=X[S.resourceId];if(V){let H=Et(o,S),Q={id:`visual-${S.id}`,type:"container",children:structuredClone(V.elements),...rr(H,S)};Object.assign(Q,Zr(S));let ne=tr(Q,T);v.children.push(nr(br(ne,{isLineCompleted:a,skipMode:d,skipTransitionsAndAnimations:t}),o))}}let ce=sl(D),N=sl(S),se=sr({animationsDef:S.animations,resources:o,previousResourceId:ce,currentResourceId:N,previousTargetId:ce?`visual-${S.id}`:void 0,currentTargetId:N?`visual-${S.id}`:void 0,animationPath:`visual.items[${S.id}].animations`,idPrefix:S.id});Be({animationInstances:se,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:p})&&k.push(...se)}}return e},Qr="dialogue-character-sprite",Dy=(e,{presentationState:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=Lr(e.elements);if(!l)return e;let u=r.dialogue?.character?.sprite,c=n?.dialogue?.character?.sprite,p=yt(u),m=yt(c),d=sr({animationsDef:u?.animations,resources:o,previousResourceId:m?Qr:void 0,currentResourceId:p?Qr:void 0,previousTargetId:m?Qr:void 0,currentTargetId:p?Qr:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return u?.animations&&m&&Be({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e;let f=o.transforms?.[u.transformId];if(!f)return console.warn("Transform not found:",u.transformId),e;let y={type:"container",id:Qr,...rr(f),children:[]};for(let g of u.items){let h=hl({id:`${Qr}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),Be({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e},Ly=(e,{presentationState:r,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:u,form:c,skipOnlyViewedLines:p,isLineCompleted:m,skipTransitionsAndAnimations:d,variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,activePersistentAnimations:b,saveSlots:E=[]})=>{let{elements:k,animations:v}=e;if(!r.dialogue||a)return e;let x=k.find(T=>T.id==="story");if(!x)return e;if(r.dialogue.ui&&r.dialogue.ui.resourceId){let{layouts:T={}}=o,S=T[r.dialogue.ui.resourceId];if(S){let D={elements:S.elements},U=qe({variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,saveSlots:E,dialogueState:r.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:m,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:u,form:c,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:d}),le=tr(D,U),z=nr(br(le?.elements,{isLineCompleted:m,skipMode:s,skipTransitionsAndAnimations:d}),o);if(Array.isArray(z))for(let ce of z)x.children.push(ce);else z&&x.children.push(z)}}Dy(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b});let $=sr({animationsDef:r.dialogue.ui?.animations,resources:o,previousResourceId:n?.dialogue?.ui?.resourceId,currentResourceId:r.dialogue.ui?.resourceId,previousTargetId:n?.dialogue?.ui?.resourceId?"dialogue-container":void 0,currentTargetId:r.dialogue.ui?.resourceId?"dialogue-container":void 0,animationPath:"dialogue.ui.animations",idPrefix:"dialogue-ui"});return Be({animationInstances:$,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b})&&v.push(...$),e},My=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,activePersistentAnimations:w,saveSlots:b=[]})=>{let{elements:E,animations:k}=e;if(r.choice&&o){let v=Lr(E);if(!v)return e;let x=o?.layouts?.[r.choice.resourceId];if(x&&x.elements){let T={elements:x.elements},S=tr(T,{...qe({variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,saveSlots:b,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f??!!r.choice,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:s}),choice:{items:r.choice?.items??[]}}),D=Ro(nr(br(S?.elements,{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o));if(Array.isArray(D))for(let U of D)v.children.push(U);else D&&v.children.push(D)}let $=sr({animationsDef:r.choice.animations,resources:o,previousResourceId:n?.choice?.resourceId,currentResourceId:r.choice.resourceId,previousTargetId:n?.choice?.resourceId?"choice-container":void 0,currentTargetId:r.choice.resourceId?"choice-container":void 0,animationPath:"choice.animations",idPrefix:"choice"});Be({animationInstances:$,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:w})&&k.push(...$)}return e},qy=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,activePersistentAnimations:h,saveSlots:w=[],form:b})=>{let{elements:E,animations:k}=e;if(!b?.resourceId||!o)return e;let v=Lr(E);if(!v)return e;let x=o?.layouts?.[b.resourceId];if(!x)return console.warn(`Form layout not found: ${b.resourceId}`),e;let $={id:"form-container",type:"container",x:0,y:0,children:x.elements||[]},T={...qe({variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,saveSlots:w,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},S=tr($,T),D=Co(nr(br(Oo(S,b),{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o),b);D&&v.children.push(D);let U=sr({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 Be({animationInstances:U,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&k.push(...U),e},Vy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],skipTransitionsAndAnimations:g})=>{if(!r.control?.resourceId)return e;let h=n.controls?.[r.control.resourceId];if(!h)return e;let w=Cy(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=Lr(e.elements);if(!b)return e;let E={id:`control-${r.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(xl({container:E,resources:n,templateData:qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:n.characters||{},skipTransitionsAndAnimations:g}),isLineCompleted:l,skipMode:c,skipTransitionsAndAnimations:g})),e},Fy=(e,{presentationState:r,resources:n,runtime:o,variables:a,musicRoomPlayer:t})=>{let{elements:s,audio:i}=e;if(r.bgm&&n){if(!Lr(s))return e;let u=r.bgm,c=!Array.isArray(u.sounds),p=c?u.resourceId?[{id:"default",resourceId:u.resourceId,loop:u.loop??!0,volume:u.volume,startDelayMs:u.startDelayMs??0}]:[]:u.sounds,m=!c&&u.loop===!0,d=[];if(c||An(p,"BGM sound"),m){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=m?{...y,loop:y.loop??!1}:y;d.push(Rn({id:St("bgm",c?"default":y.id),sound:h,resource:g,defaultLoop:!m}))}),d.length===0)return e;let f=qe({variables:a,runtime:o}).runtime;i.push(Sn({id:gy,volume:En(f,"musicVolume",c?gr:u.volume??gr),muted:u.muted,pan:u.pan,loop:c?void 0:u.loop,playback:t?.bgmPlayback,interruption:u.interruption,children:d,runtime:f}))}return e},Uy=(e,{resources:r={},runtime:n,variables:o,musicRoomPlayer:a})=>{let t=r.musicRoom;if(!t||!a?.trackId||!a.playback)return e;let s=t.tracks.find(c=>c.id===a.trackId),i=s?r.sounds?.[s.soundId]:void 0;if(!s||!i)return e;let l=qe({variables:o,runtime:n}).runtime,u=Rn({id:Iy,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(Sn({id:by,volume:En(l,"musicVolume",gr),children:[u],runtime:l})),e},By=(e,{presentationState:r,resources:n,runtime:o})=>{let{audio:a}=e;if(r.sfx&&n){let t=r.sfx,s=!Array.isArray(t.channels),i=s?[{id:ky,sounds:t.items??[]}]:t.channels;s||An(i,"SFX channel"),i.forEach(l=>{let u=!s&&l.loop===!0,c=[];if(s||An(l.sounds,"SFX sound",`SFX channel "${l.id}"`),u){let p=l.sounds.find(m=>m.loop===!0);if(p)throw new Error(`SFX sound "${p.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((p,m)=>{let d=n.sounds?.[p.resourceId];if(!d)return;let f=u?{...p,loop:p.loop??!1}:p;c.push(Rn({id:s?St("sfx","default",m,p.id):St("sfx",l.id,p.id),sound:f,resource:d,defaultLoop:u?!1:void 0}))}),c.length!==0&&a.push(Sn({id:St("channel","sfx",l.id),volume:En(o,"soundVolume",l.volume??gr),muted:l.muted,pan:l.pan,loop:s?void 0:l.loop,interruption:s?void 0:l.interruption,children:c,runtime:o}))})}return e},zy=(e,r,n)=>{if(!(!r||!n))return e?.voices?.[r]?.[n]},Yy=(e,{presentationState:r,resources:n,currentSceneId:o,runtime:a,variables:t})=>{let{audio:s}=e;if(!r?.voice)return e;let i=r.voice,l=!Array.isArray(i.sounds),u=l?i.resourceId?[{id:"default",resourceId:i.resourceId,loop:i.loop??!1,volume:gr,startDelayMs:i.startDelayMs??0}]:[]:i.sounds,c=!l&&i.loop===!0,p=[];if(l||An(u,"Voice sound"),c){let d=u.find(f=>f.loop===!0);if(d)throw new Error(`Voice sound "${d.id}" cannot loop inside a looping Voice channel.`)}if(u.forEach(d=>{let f=zy(n,o,d.resourceId);if(!f)return;let y=c?{...d,loop:d.loop??!1}:d;p.push(Rn({id:St("voice",o,l?"default":d.id),sound:y,resource:f,defaultLoop:c?!1:void 0}))}),p.length===0)return e;let m=qe({variables:t,runtime:a}).runtime;return s.push(Sn({id:wy,volume:l?i.volume??vl(m,"soundVolume"):En(m,"soundVolume",i.volume??gr),muted:i.muted,pan:i.pan,loop:l?void 0:i.loop,interruption:i.interruption,children:p,runtime:m})),e},Gy=(e,{presentationState:r,previousPresentationState:n,resources:o={},variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:w})=>{let{elements:b,animations:E}=e;if(r.layout){let $=Lr(b);if(!$)return e;let T=o.layouts?.[r.layout.resourceId];if(!T)return e;Array.isArray(T.transitions)&&!g&&!h&&To({animations:E,transitions:T.transitions,defaultTargetId:`layout-${r.layout.resourceId}`,idPrefix:`layout-${r.layout.resourceId}`,animationPathPrefix:"layout"});let S={id:`layout-${r.layout.resourceId}`,type:"container",x:0,y:0,children:T.elements||[]};$.children.push(xl({container:S,resources:o,templateData:qe({variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:g,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:o.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:g,skipMode:c,skipTransitionsAndAnimations:h}))}let k=n?.layout?.resourceId,v=r.layout?.resourceId,x=sr({animationsDef:r.layout?.animations,resources:o,previousResourceId:k,currentResourceId:v,previousTargetId:k?`layout-${k}`:void 0,currentTargetId:v?`layout-${v}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return Be({animationInstances:x,isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:w})&&E.push(...x),e},Hy=(e,{currentLineActions:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=r?.screen?.animations;if(!l)return e;let u=n!=null,c=sr({animationsDef:l,resources:o,previousResourceId:u?"story":void 0,currentResourceId:"story",previousTargetId:u?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return Be({animationInstances:c,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...c),e},Xy=(e,{presentationState:r})=>{let n=Lr(e.elements);return!n||!r?.screen||Object.assign(n,wl(r.screen)),e},Wy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,autoMode:l,skipMode:u,isChoiceVisible:c,isFormVisible:p,canRollback:m,form:d,overlayStack:f=[],dialogueHistory:y=[],saveSlots:g=[],screen:h,isLineCompleted:w,skipTransitionsAndAnimations:b})=>{let{elements:E,animations:k}=e;return f&&f.length>0&&f.forEach((v,x)=>{let $=n.layouts?.[v.resourceId];if(!$){console.warn(`Overlay layout not found: ${v.resourceId}`);return}Array.isArray($.transitions)&&(b||To({animations:k,transitions:$.transitions,defaultTargetId:`overlayStack-${x}`,idPrefix:`overlayStack-${x}`,animationPathPrefix:`overlayStack[${x}]`}));let T={id:`overlayStack-${x}`,type:"container",x:0,y:0,children:[Al({id:`overlayStack-${x}-blocker`,screen:h}),...$.elements||[]]},S=Pl(y,n.characters,o),D=qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:r?.dialogue,isLineCompleted:w,autoMode:l,skipMode:u,isChoiceVisible:c,isFormVisible:p,canRollback:m,form:d,historyDialogue:S,characters:n.characters||{},skipTransitionsAndAnimations:b}),U=tr(T,D),[le,...z]=U.children||[],ce=nr(br({...U,children:z},{isLineCompleted:w,skipMode:u,skipTransitionsAndAnimations:b}),n);E.push({...ce,children:le?[le,...ce.children||[]]:ce.children})}),e},Ky=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l=[],autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,dialogueHistory:g=[],screen:h,isLineCompleted:w,skipTransitionsAndAnimations:b})=>{let{elements:E,animations:k}=e;if(!y?.resourceId)return e;let v=n.layouts?.[y.resourceId];if(!v)return console.warn(`ConfirmDialog layout not found: ${y.resourceId}`),e;Array.isArray(v.transitions)&&!b&&To({animations:k,transitions:v.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let x={id:"confirmDialog",type:"container",x:0,y:0,children:[Al({id:"confirmDialog-blocker",screen:h}),...v.elements||[]]},$=Pl(g,n.characters,o),T=tr(x,qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:r?.dialogue,isLineCompleted:w,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,historyDialogue:$,characters:n.characters||{},skipTransitionsAndAnimations:b})),[S,...D]=T.children||[],U=nr(br({...T,children:D},{isLineCompleted:w,skipMode:c,skipTransitionsAndAnimations:b}),n);return E.push({...U,children:S?[S,...U.children||[]]:U.children}),e},Ct=e=>(r,n)=>Ny(r,{...n,visualLayer:e}),Jy=Ct(er.BEHIND_BACKGROUND),Qy=Ct(er.BEHIND_CHARACTER),Zy=Ct(er.BEHIND_DIALOGUE),eh=Ct(er.BEHIND_CHOICE),rh=Ct(er.FOREGROUND),Sl=e=>fn($y,[Vy,Jy,_y,Qy,Ty,Zy,Ly,eh,My,qy,Gy,rh,Xy,Hy,Fy,Uy,By,Yy,Wy,Ky])(e);function Rl(e,r=""){let n=[],o=e.length,a=0,t=0,s=-1,i=()=>{let l=0,u=0,c;do c=parseInt(e[a++],36),l+=(c&15)<<u,u+=4;while(c&16);return l};for(;a<o;){let l=s+1+i();s=l+i(),n.push([l,s,r?parseInt(r[t++],36):0])}return n}function Ol(e,r,n){let o=0,a=r.length-1;for(;o<=a;){let t=o+a>>>1,s=n[t];if(e<r[t])a=t-1;else if(e>s>>>5)o=t+1;else return s&31}return 0}var Cl="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",$l="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",_l="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var Tl=65535,Mo=40960,On=126976,Dl=new Uint8Array(12288),Ll=new Uint8Array(3072),Ml=new Uint8Array(2816),ql,Vl;{let e=(a,t,s,i,l)=>{let u=t+a.length-1;for(let c=s<t?t:s,p=i>u?u:i;c<=p;c++)a[c-t]=l},r=new Uint32Array(320),n=new Uint32Array(320),o=0;for(let[a,t,s]of Rl(Cl,$l))e(Dl,0,a,t,s),e(Ll,Mo,a,t,s),e(Ml,On,a,t,s),t>=65040&&!(a>=On&&t<=129791)&&(r[o]=a,n[o++]=t<<5|s);ql=r.slice(0,o),Vl=n.slice(0,o)}function jl(e){return e<12288?Dl[e]:e<Mo?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?Ll[e-Mo]: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>=On&&e<129792?Ml[e-On]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:Ol(e,ql,Vl)}var Fl=Uint8Array.from(_l,Number);function th(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 Nl(e,r,n){switch(r){case 3:return e&24?n===8204?e&6:(e&24)===16||th(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*Ul(e){let r=e.length;if(r===0)return;let n=e.codePointAt(0),o=n>Tl?2:1,a=jl(n),t=50200>>a&1?Nl(0,a,n):0,s=0,i=n,l=a;for(;o<r;){n=e.codePointAt(o);let u=n>Tl?2:1,c=jl(n),p=Fl[a<<4|c],m;p===0?m=!0:p===1?m=!1:p===2?m=!(t&1):p===3?m=!(t&4):m=(t&24)!==16,t=50200>>c&1&&(t!==0||c!==3)?Nl(t,c,n):0,m&&(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=c),o+=u,a=c}yield{segment:e.slice(s),index:s,input:e,_hd:i,_catBegin:l===15?0:l,_catEnd:a===15?0:a}}function*Bl(e){for(let r of Ul(e))yield r.segment}{let e=Ul("_");Fl._keep=[e,e.next()]}var zl=1e3,Xl=50,nh=0,Yl=100,Gl=50,sh=60,oh=3,ih=.5,ah=2e4,lh=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,ch=/^\s+$/u,Hl,uh=e=>{let r=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(Bl(r)):(Hl??=new n(void 0,{granularity:"grapheme"}),Array.from(Hl.segment(r),({segment:o})=>o))},ph=e=>uh(e).reduce((r,n)=>ch.test(n)?r+ih:lh.test(n)?r+oh:r+1,0),dh=e=>2**(((Number.isFinite(e)?Math.min(Yl,Math.max(nh,e)):Xl)-Gl)/(Yl-Gl)),qo=({text:e="",baseDelay:r=zl,speed:n=Xl}={})=>{let o=Number.isFinite(r)?Math.max(0,r):zl,a=dh(n),t=ph(e)*sh/a,s=Math.max(o,ah);return Math.min(o+t,s)};var Cn={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},tc=1,Ko=1,tt="choice",wr="form",jt=()=>({manual:{...Cn.manual},auto:{...Cn.auto},applyMode:Cn.applyMode}),Jo=()=>({groupId:null,variantId:null,pageIndex:0}),fh="music-room:player",mh=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),Tn=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),Qo=new Set,yh=new Set(["groupId","variantId"]),hh=new Set(["pageIndex"]),nt=new Set,gh=new Set(["trackId"]),bh=new Set(["positionMs"]),Ih=new Set(["pageIndex"]),Zo=new Set,wh=new Set(["sceneId"]),kh=new Set(["pageIndex"]),ei=()=>({pageIndex:0}),ri=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...jt()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Fo=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},L=e=>{let r=we(e)?ur(e):e;return structuredClone(r)},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),jn=e=>{let r=e.global.audioCommandId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal audio command counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Audio command counter is exhausted");return e.global.audioCommandId=r+1,e.global.audioCommandId},nc=e=>{let r=e.global.sceneReplayEntryId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal scene replay entry counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Scene replay entry counter is exhausted");return e.global.sceneReplayEntryId=r+1,e.global.sceneReplayEntryId},Nt=(e,r,n)=>({commandId:jn(e),operation:r,...n===void 0?{}:{positionMs:n}}),ti=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let r=e.global.musicRoomPlayer,n=r.bgmPlayback;r.trackId!==null&&(n={commandId:jn(e),operation:"resume"}),e.global.musicRoomPlayer=Tn({bgmPlayback:n})},sc=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error("Achievement action requires a non-empty resourceId");let n=e.projectData.resources?.achievements?.[r];if(!n)throw new Error(`Achievement resource "${r}" not found`);if(n.type!=="boolean"&&n.type!=="number")throw new Error(`Achievement resource "${r}" has invalid type "${n.type}"`);return n},oc=(e,r)=>{if(e==null||e==="")throw new Error(`${r} requires slotId`);let n=typeof e=="string"&&e.length>0,o=typeof e=="number"&&Number.isFinite(e);if(!n&&!o)throw new Error(`${r} requires a non-empty string or finite number slotId`)},Vr=e=>String(e),ic=()=>({sections:[],resources:[]}),ac=()=>({sceneIds:[]}),vh=e=>M(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):ic(),Ah=e=>M(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):ac(),Ph=e=>Array.isArray(e)?e.map(r=>r?.text??"").join(""):"",xh=({sectionId:e,lineId:r,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:r,content:n,text:Ph(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),lc=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Eh=e=>M(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,ni=e=>{if(!M(e?.dialogueHistory))return null;let r=e.dialogueHistory;return!Array.isArray(r.entries)||!Number.isInteger(r.currentLength)||!Array.isArray(r.checkpointLengths)?null:r},Sh=e=>{if(!M(e?.dialogueHistory))return e.dialogueHistory=lc(e?.rollback?.timeline?.length??0),e.dialogueHistory;let r=e.dialogueHistory;return Array.isArray(r.entries)||(r.entries=[]),Number.isInteger(r.currentLength)||(r.currentLength=r.entries.length),Array.isArray(r.checkpointLengths)||(r.checkpointLengths=Array(e?.rollback?.timeline?.length??0).fill(0)),r.currentLength=Math.min(Math.max(r.currentLength,0),r.entries.length),r},si=e=>{let r=ni(e);return r?(r.currentLength<r.entries.length&&(r.entries=r.entries.slice(0,r.currentLength)),r):null},Rh=()=>({resourceId:void 0}),Oh=e=>{if(!M(e))return e;let r={...e};return Object.prototype.hasOwnProperty.call(r,"requireComplete")&&!Object.prototype.hasOwnProperty.call(r,"requireLineCompleted")&&(r.requireLineCompleted=r.requireComplete),delete r.requireComplete,r},Xe=(e,r)=>{let n=e?.story?.scenes??{};for(let[o,a]of Object.entries(n))if(a?.sections?.[r])return{sceneId:o,section:a.sections[r]};return{sceneId:void 0,section:void 0}},cc=e=>{let r=e?.story?.scenes??{},n=new Map;for(let[o,a]of Object.entries(r)){let t=a?.sections??{};for(let s of Object.keys(t)){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)}}},uc=e=>e,pc=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==tc)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},Ch=(e,r={})=>{let n;try{n=pc(r.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...r,formatVersion:n,slotId:uc(r.slotId??r.slotKey??e),savedAt:typeof r.savedAt=="number"?r.savedAt:r.date};return delete o.slotKey,delete o.date,o},$h=(e={})=>Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Ch(r,n)])),_h=(e,r)=>{if(!M(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(o=>{if(!M(o))return!1;let{variableId:a,op:t,value:s,roundTo:i}=o,l=r?.resources?.variables?.[a];if(!l||$e(l)||l.readonly===!0||l.scope!=="context")return!1;try{return vt(l.type,t,a),hn(l.type,t,s,a,{roundTo:i}),t!=="set"||so(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},dc=(e,r)=>{if(!Array.isArray(e))return;let n=e.flatMap(o=>{if(!M(o)||!gI(o.type))return[];if(o.type!=="updateVariable"||r===void 0)return[o];let a=_h(o.payload,r);return a?[{...o,payload:a}]:[]});return n.length>0?n:void 0},Th=(e,r)=>{!M(e)||!Array.isArray(e.timeline)||(e.returnabilityVersion=Ko,e.timeline.forEach(n=>{if(!M(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let o=dc(n.executedActions,r);if(o){n.executedActions=o;return}delete n.executedActions}))},Wl=(e,r,n,o="viewedRegistry")=>{let a=r==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!M(e))throw new Error(`Malformed ${o}.${r}[${n}] entry.`);if(typeof e[a]!="string"||e[a].length===0)throw new Error(`Malformed ${o}.${r}[${n}] entry: missing ${a}.`);if(r==="sections"){let t={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&&(t.lastLineId=e.lastLineId),t}return{resourceId:e.resourceId}},jh=(e,r="viewedRegistry")=>{if(e===void 0)return ic();if(!M(e))throw new Error(`Malformed ${r}.`);if(e.sections!==void 0&&!Array.isArray(e.sections))throw new Error(`Malformed ${r}.sections.`);if(e.resources!==void 0&&!Array.isArray(e.resources))throw new Error(`Malformed ${r}.resources.`);let n=e.sections??[],o=e.resources??[];return{sections:Object.values(Object.fromEntries(n.map((a,t)=>{let s=Wl(a,"sections",t,r);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,t)=>{let s=Wl(a,"resources",t,r);return[s.resourceId,s]})))}},Nh=(e,r="accountReplayRegistry")=>{if(e===void 0)return ac();if(!M(e))throw new Error(`Malformed ${r}.`);if(e.sceneIds!==void 0&&!Array.isArray(e.sceneIds))throw new Error(`Malformed ${r}.sceneIds.`);let n=e.sceneIds??[];return{sceneIds:[...new Set(n.map((o,a)=>{if(typeof o!="string"||o.length===0)throw new Error(`Malformed ${r}.sceneIds[${a}] entry.`);return o}))]}},$t=(e,r,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:t,section:s}=Xe(r,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:t,sectionId:o,lineId:a}},fc=e=>{let r=e.story.initialSceneId,n=e.story.scenes[r],o=n.initialSectionId,a=n.sections[o];return $t({sceneId:r,sectionId:o,lineId:a.initialLineId??a.lines[0].id},e,"projectData initial pointer")},Dh=e=>{try{return fc(e),!0}catch{return!1}},Lh=(e,r,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 $t(o,r,n);try{return $t(o,r,n)}catch{let a=Array.isArray(e?.rollback?.timeline)?e.rollback.timeline:[],t=Number.isInteger(e?.rollback?.currentIndex)?Math.min(e.rollback.currentIndex,a.length-1):a.length-1;for(let s=t;s>=0;s-=1)try{return $t(a[s],r,`${n} compatibility checkpoint`)}catch{}return fc(r)}},mc=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,oi=(e,r)=>{let{section:n}=Xe(e,r?.sectionId);return n?.lines?.find(o=>o.id===r?.lineId)},Mh=(e,r,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],t=!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:u}=Xe(r,i.sectionId);if(!u?.lines?.some(p=>p.id===i.lineId)){t=!1,a.push(o.length);return}o.push({sectionId:i.sectionId,lineId:i.lineId,...i.appendToPrevious===!0&&t&&o.length>0?{appendToPrevious:!0}:{}}),t=!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}},qh=(e,r)=>M(oi(e,r)?.actions?.dialogue),yc=(e,r,n)=>{if(!r||r.sectionId!==n.sectionId)return!1;let{section:o}=Xe(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===r.lineId},Vh=(e,r)=>{let n=lc();return e.timeline.forEach(o=>{if(o.returnable!==!1&&qh(r,o)){let a=oi(r,o),t=n.entries.at(-1),s=a.actions.dialogue.append===!0&&yc(r,t,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},Fh=(e,r,n,o)=>{if(n.length!==r.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(t=>t===null?e.currentLength:e.checkpointLengths[t]);let a=0;return e.checkpointLengths.forEach((t,s)=>{if(t<a)throw new Error(`Malformed save slot dialogueHistory.checkpointLengths[${s}]: lengths must be chronological.`);a=t}),e},Uh=(e,r)=>{let{section:n}=Xe(e,r?.sectionId),o=n?.lines?.findIndex(t=>t.id===r?.lineId);if(typeof o!="number"||o<0)return null;let a=n.lines[o+1];return a?{sectionId:r.sectionId,lineId:a.id}:null},hc=(e,r,n)=>{if(typeof r?.sectionId!="string")return!1;let{section:o}=Xe(e,r.sectionId);return mc({sectionId:r.sectionId,lineId:o?.lines?.[0]?.id},n)},Bh=new Set(["jumpToLine","rollbackByOffset","rollbackToLine","sectionTransition","resetStoryAtSection"]),rt={always:"always",maybe:"maybe",never:"never"},zh=e=>{if(!Object.prototype.hasOwnProperty.call(e??{},"when"))return rt.always;let r=e.when,n;if(r===null||typeof r=="boolean"||typeof r=="number")n=r;else if(M(r)&&Object.keys(r).length===1&&Object.prototype.hasOwnProperty.call(r,"literal"))n=r.literal;else return rt.maybe;return n?rt.always:rt.never},gc=(e,r)=>{if(!Array.isArray(e?.branches))return!1;for(let n of e.branches){let o=zh(n);if(o!==rt.never){if(r(n))return!0;if(o===rt.always)return!1}}return!1},bc=e=>gc(e,r=>Object.entries(r?.actions??{}).some(([n,o])=>n==="conditional"?bc(o):Bh.has(n))),Ic=(e,r,n)=>gc(r,o=>Object.entries(o?.actions??{}).some(([a,t])=>a==="sectionTransition"?hc(e,t,n):a==="conditional"?Ic(e,t,n):!1)),Yh=(e,r,n)=>{if(!r)return!0;let o=oi(n,e)?.actions;if(!M(o))return!0;if(hc(n,o.sectionTransition,r))return!1;let a=o.conditional;return a?!(Ic(n,a,r)||!(o.choice?.resourceId||o.form?.resourceId)&&!bc(a)&&mc(Uh(n,e),r)):!0},Gh=(e,r,n)=>{if(!M(e)||!Array.isArray(e.timeline))return{rollback:Tt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=new WeakSet,a=[],t=e.timeline.flatMap((p,m)=>{if(!M(p))return[];try{let d=$t(p,n,`rollback.timeline[${m}]`),f=_n({sectionId:d.sectionId,lineId:d.lineId,rollbackPolicy:p.rollbackPolicy,returnable:p.returnable});typeof p.returnable=="boolean"&&o.add(f);let y=dc(L(p.executedActions),n);return y&&(f.executedActions=y),a.push(m),[f]}catch{return[]}});if(t.length===0)return{rollback:Tt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};e.returnabilityVersion!==Ko&&t.forEach((p,m)=>{!o.has(p)&&!Yh(p,t[m+1],n)&&(p.returnable=!1)});let i=typeof e.currentIndex=="number"?Math.trunc(e.currentIndex):e.timeline.length-1,l=a.indexOf(i);l<0&&(l=t.length-1);let u=t[l];if(u?.sectionId!==r.sectionId||u?.lineId!==r.lineId){let p=t.findLastIndex(m=>m.sectionId===r.sectionId&&m.lineId===r.lineId);p>=0?l=p:(t.push(_n({sectionId:r.sectionId,lineId:r.lineId})),a.push(null),l=t.length-1)}let c=typeof e.replayStartIndex=="number"?Math.min(Math.max(Math.trunc(e.replayStartIndex),0),l):0;return{rollback:{currentIndex:l,isRestoring:!1,replayStartIndex:c,timeline:t},sourceCheckpointIndexes:a,sourceTimelineLength:e.timeline.length}},wc=(e,r,n)=>{if(!M(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=ai(r),a=Lh(e,r,`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 t=e.variables?wt(L(e.variables),r.resources?.variables??{},{allowedScopes:["context"]}):{},s=og({loadedContextRuntime:M(e.runtime)?L(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:u}=Gh(e.rollback,a,r),c=e.dialogueHistory===void 0?Vh(i,r):Fh(Mh(e.dialogueHistory,r,`contexts[${n}].dialogueHistory`),i,l,u),p={currentPointerMode:"read",pointers:{read:a},configuration:M(e.configuration)?L(e.configuration):{},views:Array.isArray(e.views)?L(e.views):[],bgm:M(e.bgm)?L(e.bgm):{resourceId:void 0},variables:{...o,...t},...c?{dialogueHistory:c}:{},rollback:i};return s&&(p.runtime=s),p},Hh=(e,r)=>{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)=>wc(n,r,o))}},Xh=(e,r)=>{if(!M(e))throw new Error("Malformed save slot.");let n=pc(e.formatVersion);return{...e,formatVersion:n,state:Hh(e.state,r)}},Kl=(e,r,{required:n=!1}={})=>{if(e===void 0){if(n)throw new Error(`showConfirmDialog requires ${r}`);return{hideConfirmDialog:{}}}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`showConfirmDialog ${r} must be an action object`);let o=L(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},Wh=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:Kl(e.confirmActions,"confirmActions",{required:!0}),cancelActions:Kl(e.cancelActions,"cancelActions")}},st=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},Kh=e=>(M(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),ot=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},kc=e=>{if(!(!M(e)||!e.animations))return{animations:L(e.animations)}},Jh=(e,r)=>{let n=kc(r);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Qh=e=>{let r=e?.id??e?.resourceId;return typeof r=="string"&&r.length>0?r:void 0},Zh=(e,r)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!r))return`${n}:${o}:${r}`},$n=e=>String(e??""),vc=(e,r)=>{let n=$n(r);return e?.trim===!0?n.trim():n},eg=e=>M(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,r])=>M(r)).map(([r,n])=>[r,{id:r,...L(n)}])):{},rg=(e,r)=>{if(!r||!M(e.global.formDrafts))return;let n=e.global.formDrafts[r];return M(n)?n:void 0},Ac=(e,r)=>{let n=Kh(e);M(n[r])||(n[r]={values:{},touched:{},errors:{},submitted:!1});let o=n[r];return M(o.values)||(o.values={}),M(o.touched)||(o.touched={}),M(o.errors)||(o.errors={}),typeof o.submitted!="boolean"&&(o.submitted=!1),o},ii=(e,r)=>{let n=vc(e,r);return e?.required===!0&&n.length===0?"required":null},tg=({state:e,pointer:r})=>{if(!r?.sectionId||!r?.lineId)return{};let o=ve({state:e},{sectionId:r.sectionId})?.lines||[],a=o.findIndex(t=>t.id===r.lineId);return a<0?{}:Nr(o.slice(0,a+1).map(t=>t.actions||{}))},ng=({state:e,form:r,pointer:n})=>{if(!r?.resourceId)return null;let o=Qh(r),a=Zh(n,o);if(!o||!a)return null;let t=rg(e,a),s=eg(r),i=ki({state:e}),l={},u=[],c={},p=!0;return Object.entries(s).forEach(([m,d])=>{let f=$n(i?.[d.variableId]),y=Object.prototype.hasOwnProperty.call(t?.values??{},m)?$n(t.values[m]):f,g=t?.touched?.[m]===!0,h=ii(d,y),w=t?.submitted||g?h:null,b=typeof d.maxLength=="number"?Math.max(0,Math.round(d.maxLength)):void 0,E={id:m,variableId:d.variableId,value:y,initialValue:f,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[m]=E,u.push(E),c[m]=y}),{id:o,key:a,resourceId:r.resourceId,animations:r.animations,valid:p,submitted:t?.submitted===!0,fields:l,fieldList:u,values:c,submitActions:{submitForm:{formKey:a,actions:L(r.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:L(r.cancelActions??{})}}}},Jl="line",Ir="interaction",_n=({sectionId:e,lineId:r,rollbackPolicy:n,returnable:o})=>({sectionId:e,lineId:r,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{}}),ai=e=>{let r=we(e)?ur(e):e,{contextVariableDefaultValues:n}=yn(r??{});return L(n)},Pc=()=>({...L(Pt)}),xc=({loadedRuntime:e,runtimeIds:r,defaults:n={},path:o})=>{if(e===void 0)return{runtimeState:L(n),hasLoadedValues:!1};if(!M(e))throw new Error(`Malformed ${o}.`);let a=L(n),t=!1;return r.forEach(s=>{e[s]!==void 0&&(a[s]=bn(s,L(e[s])),t=!0)}),{runtimeState:a,hasLoadedValues:t}},sg=({projectData:e,loadedGlobalRuntime:r={}})=>xc({loadedRuntime:r,runtimeIds:uo,defaults:fo(e),path:"global.runtime"}).runtimeState,og=({loadedContextRuntime:e={}})=>{let{runtimeState:r,hasLoadedValues:n}=xc({loadedRuntime:e,runtimeIds:po,defaults:Pc(),path:"context.runtime"});return n?r:void 0},vr=e=>{let r=Array.isArray(e?.contexts)?e.contexts:[];return r[r.length-1]},de=e=>{let r=vr(e);return r?.kind==="sceneReplay"&&M(r.sceneReplay)?r:null},Ec=(e,r)=>{let n=r?.sceneReplay?.sceneId,o=e.projectData?.resources?.sceneReplay?.replays?.find(a=>a.sceneId===n);Object.entries(o?.initialVariables??{}).forEach(([a,t])=>{r.variables[a]=L(t)})},ig=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:L(e.global.nextLineConfig),overlayStack:L(e.global.overlayStack),confirmDialog:L(e.global.confirmDialog),formDrafts:L(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:L(e.global.pendingScreenTransition)}}),ag=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=jt(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},lg=(e,r)=>{e.global.autoMode=r.autoMode,e.global.skipMode=r.skipMode,e.global.dialogueUIHidden=r.dialogueUIHidden,e.global.nextLineConfig=L(r.nextLineConfig),e.global.overlayStack=L(r.overlayStack),e.global.confirmDialog=L(r.confirmDialog),e.global.formDrafts=L(r.formDrafts),e.global.isLineCompleted=r.isLineCompleted,r.isDialogueHistoryShowing===void 0?delete e.global.isDialogueHistoryShowing:e.global.isDialogueHistoryShowing=r.isDialogueHistoryShowing,r.pendingScreenTransition===void 0?delete e.global.pendingScreenTransition:e.global.pendingScreenTransition=L(r.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:or({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}})},cg=e=>e.runtime?(po.forEach(r=>{e.runtime[r]===void 0&&(e.runtime[r]=L(Pt[r]))}),e.runtime):(e.runtime=Pc(),e.runtime),ug=e=>Ja(e.global),Sc=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:ug(e)}})},li=(e,r,n)=>{let o=bn(r,n);if(r in Pt){let a=vr(e);if(!a)return o;let t=cg(a);return t[r]=o,o}return e.global[r]=o,o},ci=({pointer:e,projectData:r,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:L(o)},currentPointerMode:"read",pointers:{read:L(e)},configuration:{},views:[],bgm:Rh(),variables:ai(r),rollback:Tt({pointer:e})}),it=e=>e?(e.currentPointerMode="read",M(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,pg=(e,{queueRender:r=!0}={})=>{let n=e.contexts?.[e.contexts.length-1],o=n?.pointers?.read;if(!n||!o?.sectionId||!o?.lineId)return null;let a=ci({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,dg(e,{queueRender:r}),a},dg=(e,{queueRender:r=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,st(e),ot(e),e.global.nextLineConfig=jt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,ti(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),r&&e.global.pendingEffects.push({name:"render"})},Rc=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Tt=({pointer:e,replayStartIndex:r=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:r,timeline:n?[_n({sectionId:e.sectionId,lineId:e.lineId})]:[]}},Ar=(e,r={})=>{if(e?.rollback)return Rc(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=Tt({pointer:n,replayStartIndex:r.compatibilityAnchor?1:0}),e.rollback},ui=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=Ar(n);if(o.isRestoring)return;let a=si(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(_n(r)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},fg=({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}},mg=({state:e},r={})=>{let{checkpointIndex:n,checkpointIdentity:o,sectionId:a,lineId:t}=r,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)?en(l):l)!==o||l?.sectionId!==a||l?.lineId!==t||(l.returnable=!1),e},yg=({state:e},r={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:t,lineId:s}=r,i=Vr(n),l=e.global.saveSlots?.[i],u=we(l)?en(l):l;if(!l||u!==o)return e;let c=l.state?.contexts,p=Array.isArray(c)?c.at(-1):null,m=p?.rollback,d=m?.timeline?.[a];return!Number.isInteger(a)||m?.currentIndex!==a||p?.pointers?.read?.sectionId!==t||p?.pointers?.read?.lineId!==s||d?.sectionId!==t||d?.lineId!==s||(d.returnable=!1,m.returnabilityVersion=Ko,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},hg=(e,r)=>{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=r?.at(-1),t=typeof a?.checkpointIndex=="number"?a.checkpointIndex:o.currentIndex;if(t<0||t>=o.timeline.length)return null;if(typeof a?.checkpointIndex!="number"&&t<o.timeline.length-1){o.timeline=o.timeline.slice(0,t+1);let s=si(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t+1))}return o.timeline[t]??null},gg=({state:e,rollbackActionBatchStack:r},n={})=>{let o=n?.source===Jl?Jl:Ir,a=e.contexts?.[e.contexts.length-1],t=a?.rollback;if(!t||t.isRestoring||!Array.isArray(t.timeline)||typeof t.currentIndex!="number"||t.currentIndex<0||t.currentIndex>=t.timeline.length)return r.push({checkpointIndex:null,source:o}),e;if(t.currentIndex<t.timeline.length-1){t.timeline=t.timeline.slice(0,t.currentIndex+1);let s=si(a);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t.currentIndex+1))}return r.push({checkpointIndex:t.currentIndex,source:o}),e},bg=({state:e,rollbackActionBatchStack:r})=>(r.pop(),e),We=(e,r,n,o)=>{let t=o?.at(-1)?.source??Ir;if(!bI(r,t))return;let s=hg(e,o);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:r,payload:L(n)}))},Ql=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=r?.operations??[];for(let{variableId:a,op:t,value:s,roundTo:i}of o){let l=e.projectData.resources?.variables?.[a],u=l?.scope,c=l?.type;if($e(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);kt(u,a),vt(c,t,a),hn(c,t,s,a,{roundTo:i}),u==="context"&&(n.variables[a]=gn(n.variables[a],t,s,{roundTo:i}))}},Ig=(e,r)=>{Array.isArray(r?.executedActions)&&r.executedActions.forEach(({type:n,payload:o})=>{II(e,n,o)})},wg=(e,r)=>{let{sectionId:n,lineId:o}=r,s=ve({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Object.entries(s).forEach(([i,l])=>{uu(e,i,l)})},Oc=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=Ar(n),a=o.timeline[r];if(!a)return e;e.global.autoMode&&qt({state:e}),e.global.skipMode&&kr({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=r;try{n.variables=ai(e.projectData),n.kind==="sceneReplay"&&(Ec(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=L(Cn),e.global.overlayStack=[],st(e),ot(e),e.global.isLineCompleted=!0;let t=o.replayStartIndex??0;for(let l=t;l<=r;l++)l>t&&ri(e),wg(e,o.timeline[l]),Ig(e,o.timeline[l]);let s=it(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=ni(n);i&&(i.currentLength=Math.min(i.checkpointLengths[r]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=nc(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},kg=e=>{let{projectData:r}=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:t={},runtime:s={},accountViewedRegistry:i={},accountReplayRegistry:l={},localizationPackages:u=[{l10nId:null,language:null}]}=o;cc(r),gt(r),bt(r),It(r),jr(r?.resources?.variables??{});let c=r.story.initialSceneId,p=r.story.scenes[c],m=p.initialSectionId,d=p.sections[m],f={sceneId:c,sectionId:m,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:y}=yn(r),g={...y,...wt(t,r.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:r,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:jh(i,"accountViewedRegistry"),accountReplayRegistry:Nh(l),nextLineConfig:jt(),imageGalleryNavigation:Jo(),sceneReplayNavigation:ei(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:Tn(),saveSlots:$h(a),localizationPackages:L(u),overlayStack:[],variables:g,...sg({projectData:r,loadedGlobalRuntime:s})},contexts:[ci({pointer:f,projectData:r})]}},vg=({state:e})=>e.global.overlayStack||[],Ag=({state:e})=>e.global.pendingEffects,Cc=({state:e})=>e.global.skipMode,Pg=({state:e})=>e.global.autoMode,$c=({state:e})=>e.global.dialogueUIHidden,_c=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.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:u,lineId:c}=n.pointers.read,p=ve({state:e},{sectionId:u});if(!p?.lines||!Array.isArray(p.lines))return[];let m=p.lines.findIndex(d=>d.id===c);o=p.lines.slice(0,m+1).map(d=>({sectionId:u,lineId:d.id}))}let t=[],s=Wr({variables:{...e.global?.variables??{},...vr(e)?.variables??{}},runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),i=new Map,l=u=>{let c=i.get(u.sectionId);if(!c){let m=ve({state:e},{sectionId:u.sectionId}),d=Array.isArray(m?.lines)?m.lines:[];c={lines:d,lineIndexes:new Map(d.map((f,y)=>[f.id,y])),projections:new Map,nextLineIndex:0,presentationState:{}},i.set(u.sectionId,c)}let p=c.lineIndexes.get(u.lineId);if(p===void 0)return null;for(;c.nextLineIndex<=p;){let m=c.lines[c.nextLineIndex],d=m.actions||{};c.presentationState=Nr([c.presentationState,d]),c.projections.set(m.id,{line:m,lineActions:d,dialogueState:c.presentationState.dialogue||{}}),c.nextLineIndex+=1}return c.projections.get(u.lineId)??null};for(let u of o){if(!Eh(u))continue;let c=l(u);if(!c)continue;let{line:p,lineActions:m,dialogueState:d}=c;if(!m.dialogue)continue;let f=mn({characterId:d.characterId,character:d.character,characters:e.projectData.resources?.characters??{},variables:s}),y=xh({sectionId:u.sectionId,lineId:p.id,content:m.dialogue.append===!0?d.content:m.dialogue.content,dialogueState:d,characterName:f}),g=t[t.length-1];if((a?u.appendToPrevious===!0:m.dialogue.append===!0)&&g?.sectionId===u.sectionId){t[t.length-1]={...t[t.length-1],content:y.content,text:y.text,characterId:y.characterId,character:y.character,characterName:y.characterName};continue}t.push(y)}return t},xg=(e,r,n)=>{let o=!1;for(let a of r??[]){let{slotId:t,saveSlotIdentity:s,sectionId:i,lineId:l}=a,u=e.global.saveSlots?.[Vr(t)],c=we(u)?en(u):u,p=u?.state?.contexts?.at(-1);!u||c!==s||p?.pointers?.read?.sectionId!==i||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=L(n),o=!0)}o&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},Eg=({state:e},r={})=>{let n=vr(e),o=n?.pointers?.read,a=Lt({state:e});if(!n||!M(a?.actions?.dialogue))return e;let t=Ar(n),s=t.timeline?.[t.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=ni(n),u=l?.checkpointLengths?.[t.currentIndex],c=t.currentIndex>0?l?.checkpointLengths?.[t.currentIndex-1]??0:0,p=l?.entries?.[l.currentLength-1];if(r.reuseExistingOccurrence===!0&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId||r.forceNewOccurrence!==!0&&i&&l&&u===l.currentLength&&u>c&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId)return e;let m=Sh(n);m.currentLength<m.entries.length&&(m.entries=m.entries.slice(0,m.currentLength));let d=a.actions.dialogue.append===!0&&r.appendToPrevious===!0&&yc(e.projectData,p,o);if(m.entries.push({sectionId:o.sectionId,lineId:o.lineId,...d?{appendToPrevious:!0}:{}}),m.currentLength=m.entries.length,i){for(;m.checkpointLengths.length<t.timeline.length;)m.checkpointLengths.push(m.checkpointLengths.at(-1)??0);m.checkpointLengths[t.currentIndex]=m.currentLength}return xg(e,r.savedCheckpointOccurrences,m),e},Sg=({state:e})=>e.global.confirmDialog??null,Dt=({state:e},{pointer:r}={})=>{let n=r??_e({state:e})?.pointer,o=tg({state:e,pointer:n});return ng({state:e,form:o.form,pointer:n})},Rg=({state:e},{pointer:r}={})=>!!Dt({state:e},{pointer:r}),Ae=({state:e},{pointer:r}={})=>{let n=Dt({state:e},{pointer:r});if(n)return{source:wr,formId:n.id,formKey:n.key};let o=Mc({state:e,pointer:r});return o?{source:tt,resourceId:o}:null},Og=({state:e,registry:r},n)=>{let{sectionId:o,lineId:a}=n,s=(Array.isArray(r?.sections)?r.sections:[]).find(c=>c.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(c=>c.id===s.lastLineId),u=i.lines.findIndex(c=>c.id===a);return l===-1||u===-1?s.lastLineId===a:u<=l},pi=({registry:e},r)=>{let{resourceId:n}=r;return!!(Array.isArray(e?.resources)?e.resources:[]).find(t=>t.resourceId===n)},di=({state:e},r)=>Og({state:e,registry:e.global.accountViewedRegistry},r),Cg=({state:e},r)=>pi({registry:e.global.accountViewedRegistry},r),_t=(e,r)=>!pi({registry:e.global.accountViewedRegistry},{resourceId:r.imageId}),fi=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),mi=(e,r)=>{let n=fi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Uo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!_t(e,r[a]))return r[a]},$g=({state:e})=>{let r=e.projectData?.resources?.imageGallery;return r===void 0?void 0:L(r)},Tc=({state:e})=>{let r=e.projectData?.resources?.imageGallery;if(r===void 0)return null;let n=e.global.imageGalleryNavigation??Jo(),o=fi(r),a=mi(r,n),t=a*r.pageSize,s=r.groups.slice(t,t+r.pageSize).map(l=>({groupId:l.id,locked:_t(e,l.variants[0]),variants:l.variants.map(u=>({variantId:u.id,imageId:u.imageId,locked:_t(e,u)}))})),i=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=r.groups.findIndex(d=>d.id===n.groupId),u=r.groups[l],c=u?.variants.findIndex(d=>d.id===n.variantId),p=c===void 0||c<0?void 0:u.variants[c],m=l<0?-1:Math.floor(l/r.pageSize);p&&m===a&&!_t(e,p)&&(i={groupId:u.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:Uo(e,u.variants,c,-1)!==void 0,canMoveToNextVariant:Uo(e,u.variants,c,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},yi=(e,r)=>!pi({registry:e.global.accountViewedRegistry},{resourceId:r.soundId}),hi=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),gi=(e,r)=>{let n=hi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Bo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!yi(e,r[a]))return r[a]},jc=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}),_g=(e,r)=>({...jc(r),locked:yi(e,r)}),Zl=e=>{let r=Math.floor(e/1e3),n=r%60,o=Math.floor(r/60);if(o<60)return`${o}:${String(n).padStart(2,"0")}`;let a=Math.floor(o/60),t=o%60;return`${a}:${String(t).padStart(2,"0")}:${String(n).padStart(2,"0")}`},Tg=({state:e})=>{let r=e.projectData?.resources?.musicRoom;return r===void 0?void 0:L(r)},Nc=({state:e})=>{let r=e.projectData?.resources?.musicRoom;if(r===void 0)return null;let n=e.global.musicRoomPlayer??Tn(),o=hi(r),a=gi(r,n),t=a*r.pageSize,s=r.tracks.slice(t,t+r.pageSize).map(c=>_g(e,c)),i=r.tracks.findIndex(c=>c.id===n.trackId),l=r.tracks[i],u=l?{...jc(l),canPlayPreviousTrack:Bo(e,r.tracks,i,-1)!==void 0,canPlayNextTrack:Bo(e,r.tracks,i,1)!==void 0}:null;return{pageTracks:s,selection:u,playback:u?{status:n.status,readiness:n.readiness,positionMs:n.positionMs,durationMs:n.durationMs,positionText:Zl(n.positionMs),durationText:n.durationMs===null?null:Zl(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}}},bi=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),Ii=(e,r)=>{let n=bi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},jg=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;return r===void 0?void 0:L(r)},Ng=({state:e})=>de(e)!==null,Dg=({state:e})=>{let r=de(e);return r?{sceneId:r.sceneReplay.sceneId,entryId:r.sceneReplay.entryId}:null},Dc=(e,r)=>e.global.accountReplayRegistry?.sceneIds?.includes(r)===!0,Lc=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;if(r===void 0)return null;let n=e.global.sceneReplayNavigation??ei(),o=bi(r),a=Ii(r,n),t=a*r.pageSize,s=r.replays.slice(t,t+r.pageSize).map(l=>({sceneId:l.sceneId,title:l.title,thumbnailImageId:l.thumbnailImageId,locked:!Dc(e,l.sceneId)})),i=de(e);return{isActive:i!==null,activeSceneId:i?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Lg=({state:e})=>e.global.nextLineConfig,Mc=({state:e,pointer:r}={})=>{let n=r??_e({state:e})?.pointer;if(!n)return;let o=n?.sectionId,a=n?.lineId,s=ve({state:e},{sectionId:o})?.lines||[],i=s.findIndex(u=>u.id===a);if(i<0)return;let l;for(let u of s.slice(0,i+1)){let c=u?.actions;if(c?.cleanAll&&(l=void 0),!c||!Object.prototype.hasOwnProperty.call(c,"choice")){l=void 0;continue}let p=c.choice;if(p?.resourceId){l=p.resourceId;continue}p?.animations||(l=void 0)}return l},qc=({state:e})=>!!Mc({state:e}),Mg=({state:e})=>structuredClone(e),qg=({state:e})=>L(e.projectData.resources?.achievements??{}),Vg=({state:e},r)=>{let n=e.projectData.resources?.achievements?.[r?.resourceId];return n===void 0?void 0:L(n)},Vc=({state:e})=>e.global.saveSlots,Fg=({state:e},r)=>{let n=r?.slotId,o=Vr(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0},Fc=({state:e})=>L(e.global.localizationPackages),wi=({state:e})=>hr(e),Ug=({state:e},r)=>He(e,r?.runtimeId),ki=({state:e})=>{let r={...e.global?.variables??{},...vr(e)?.variables??{}};return Wr({variables:r,runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{}})},_e=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},ve=({state:e},r)=>{let{sectionId:n}=r;return Xe(e.projectData,n).section},Lt=({state:e})=>{let r=_e({state:e});if(!r?.pointer)return;let{sectionId:n,lineId:o}=r.pointer,a=ve({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(t=>t.id===o)},Uc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=ve({state:e},{sectionId:r})?.lines||[],t=a.findIndex(u=>u.id===n),i=a.slice(0,t+1).map(u=>{let c=u.actions||{},p={};return Object.keys(c).forEach(m=>{p[m]=c[m]}),p});return Nr(i)},Bc=e=>{let r=Lt({state:e})?.actions?.dialogue;if(r?.clear===!0||!Array.isArray(r?.content))return"";let n=Wr({variables:{...e.global?.variables??{},...vr(e)?.variables??{}},runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1});return r.content.map(o=>`${Kr(o?.text,{variables:n})??""}`).join("")},or=({state:e})=>qo({text:Bc(e),baseDelay:He(e,"autoForwardDelay"),speed:He(e,"autoForwardSpeed")}),Bg=({state:e})=>{let r=zc({state:e}),o=Lt({state:e})?.actions??{},a=Nr([r??{},o]);return io(r??{},a??{})},zg=({state:e},{sectionId:r})=>{let n=ve({state:e},{sectionId:r});if(!n?.lines)return[];let o=[],a={};for(let t of n.lines){let s=t.actions||{},i=Nr([a,s]),l=io(a,i);o.push({id:t.id,changes:l,presentationState:i}),a=ao(i)}return o},Yg=({state:e},{sectionId:r,includePresentationState:n=!1})=>{let o=zg({state:e},{sectionId:r});return n?{lines:o}:{lines:o.map(({presentationState:a,...t})=>t)}},zc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=ve({state:e},{sectionId:r})?.lines||[],t=a.findIndex(l=>l.id===n);if(t<=0)return null;let i=a.slice(0,t).map(l=>{let u=l.actions||{},c={};return Object.keys(u).forEach(p=>{c[p]=u[p]}),c});return ao(Nr(i))},vi=({state:e},{slotsPerPage:r=6}={})=>{let a=((wi({state:e}).saveLoadPagination??1)-1)*r+1,t=[];for(let s=0;s<r;s++){let i=a+s,l=e.global.saveSlots&&e.global.saveSlots[Vr(i)]||{};t.push({...l,slotId:i})}return{saveSlots:t}},Gg=Vc,Hg=vi,Xg=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},Wg=({state:e},r={})=>{let n=Uc({state:e}),o=zc({state:e}),a=Lt({state:e})?.actions??{},t=e.global.pendingScreenTransition,s=t?.animations?{...a,screen:L(t)}:a,i=t?.animations&&o===null?{}:o,{sectionId:l}=_e({state:e}).pointer,{sceneId:u}=Xe(e.projectData,l),c={...wi({state:e}),localizationPackages:Fc({state:e})},p=r?.activePersistentAnimations??[],m=r?.restoredPersistentAnimations??[],d=Dt({state:e}),f=qc({state:e}),y=Tc({state:e}),g=Nc({state:e}),h=Lc({state:e}),w=ki({state:e}),{saveSlots:b}=vi({state:e}),E=Xg(e);return Sl({presentationState:n,previousPresentationState:i,currentLineActions:s,resources:e.projectData.resources,currentSceneId:u,screen:e.projectData.screen,dialogueUIHidden:c.dialogueUIHidden,autoMode:c.autoMode,skipMode:c.skipMode,isChoiceVisible:f,isFormVisible:!!d,canRollback:fu({state:e}),skipOnlyViewedLines:!c.skipUnseenText,isLineCompleted:c.isLineCompleted,skipTransitionsAndAnimations:!!c.skipTransitionsAndAnimations||E,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:d,dialogueHistory:_c({state:e}),saveSlots:b,variables:w,runtime:c,activePersistentAnimations:p,restoredPersistentAnimations:m,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:L(e.global.musicRoomPlayer)})},Kg=({state:e},r)=>(e.global.confirmDialog=Wh(r),e.global.pendingEffects.push({name:"render"}),e),Jg=({state:e})=>(e.global.confirmDialog&&(st(e),e.global.pendingEffects.push({name:"render"})),e),Qg=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),We(e,"pushOverlay",n,r),e),Zg=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),We(e,"popOverlay",void 0,r),e),eb=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=n),e.global.pendingEffects.push({name:"render"}),We(e,"replaceLastOverlay",n,r),e),rb=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack=[],st(e),ot(e),e.global.pendingEffects.push({name:"render"}),We(e,"clearOverlays",void 0,r),e),tb=(e,{activeInteraction:r})=>{e.global.autoMode&&e.global.pendingEffects.push({name:"clearAutoNextTimer"}),r&&e.global.skipMode&&e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.nextLineConfig?.auto?.enabled&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Mt=(e,r,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,Jh(e,n),ot(e);let o=Ae({state:e},{pointer:r}),a=o?.source===tt,t=o?.source===wr;tb(e,{activeInteraction:o});let s=de(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=nc(e);s.sceneReplay.entryId=l,i.payload={sceneReplaySceneId:s.sceneReplay.sceneId,entryId:l}}return e.global.pendingEffects.push(i),{isChoiceVisible:a,isFormVisible:t,activeInteraction:o}},Nn=(e,r,n)=>{!(r?.source===tt||r?.source===wr)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},Yc=({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:or({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),qt=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),nb=({state:e})=>{let r=e.global.autoMode;return Ae({state:e})&&!r||(r?qt({state:e}):Yc({state:e})),e},Gc=({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),kr=({state:e})=>(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),sb=({state:e})=>{let r=Cc({state:e});return Ae({state:e})&&!r||(r?kr({state:e}):Gc({state:e})),e},Dn=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),We(e,"showDialogueUI",void 0,r),e),Hc=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),We(e,"hideDialogueUI",void 0,r),e),ob=e=>{let{state:r}=e;return $c({state:r})?Dn(e):Hc(e),r},Pr=(e,r,n)=>(li(e,r,n),Sc(e),e.global.pendingEffects.push({name:"render"}),e),Vt=(e,r,n,o,a)=>{let t=li(e,r,n);return e.global.pendingEffects.push({name:"render"}),We(e,o,{value:t},a),e},ib=({state:e},r)=>Pr(e,"dialogueTextSpeed",r?.value),ab=({state:e},r)=>(Pr(e,"autoForwardDelay",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e),lb=({state:e},r)=>(Pr(e,"autoForwardSpeed",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e),cb=({state:e},r)=>Pr(e,"skipUnseenText",r?.value),ub=({state:e},r)=>Pr(e,"skipTransitionsAndAnimations",r?.value),pb=({state:e},r)=>Pr(e,"soundVolume",r?.value),db=({state:e},r)=>Pr(e,"musicVolume",r?.value),fb=({state:e},r)=>Pr(e,"muteAll",r?.value),zo=({state:e,rollbackActionBatchStack:r},n)=>Vt(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",r),Yo=({state:e,rollbackActionBatchStack:r})=>{let n=He(e,"saveLoadPagination")+1;return Vt(e,"saveLoadPagination",n,"incrementSaveLoadPagination",r),e},Go=({state:e,rollbackActionBatchStack:r})=>{let n=He(e,"saveLoadPagination")-1;return Vt(e,"saveLoadPagination",n,"decrementSaveLoadPagination",r),e},Ho=({state:e,rollbackActionBatchStack:r},n)=>Vt(e,"menuPage",n?.value,"setMenuPage",r),Xo=({state:e,rollbackActionBatchStack:r},n)=>Vt(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",r),mb=({state:e})=>(e.global.pendingEffects=[],e),yb=({state:e},r)=>(e.global.pendingEffects.push(r),e),hb=({state:e},r)=>{if(de(e))return e;let n=r?.resourceId;return sc(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},gb=({state:e},r)=>{if(de(e))return e;let n=r?.resourceId,o=sc(e,n);if(o.type!=="number")throw new Error(`Achievement resource "${n}" does not support numeric progress`);let a=r?.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 t=Math.min(a,o.target);return e.global.pendingEffects.push({name:"setAchievementProgress",payload:{resourceId:n,current:t,target:o.target,completed:t>=o.target}}),e},Xc=e=>e?.lines?.[0],Wc=(e,{sectionId:r,resetStoryState:n=!1,screen:o})=>{let a=!!kc(o),t=ve({state:e},{sectionId:r});if(!t)return console.warn(`Section not found: ${r}`),e;let s=Xc(t);if(!s)return console.warn(`Section ${r} has no lines`),e;if(n&&!pg(e,{queueRender:!a}))return e;let i=Ae({state:e});n&&e.global.skipMode&&kr({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let c=it(l),p=c.read;n||qr(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||Ar(l,{compatibilityAnchor:!0}),c.read={sectionId:r,lineId:s.id},n?l.rollback=Tt({pointer:c.read}):ui(e,{sectionId:r,lineId:s.id})}let{activeInteraction:u}=Mt(e,l?.pointers?.read,{screenTransition:o});return Nn(e,i,u),e},bb=({state:e},r)=>{if(de(e))throw new Error("Cannot reset the story while a scene replay is active");return Wc(e,{sectionId:r?.sectionId,resetStoryState:!0,screen:r?.screen})},Kc=e=>(e.global.accountViewedRegistry=vh(e.global.accountViewedRegistry),e.global.accountViewedRegistry),Ln=(e,r)=>{!Array.isArray(r)||r.length===0||e.global.pendingEffects.push({name:"applyScopedDataUpdates",payload:{updates:r.map(n=>({scope:n.scope,path:n.path,op:n.op,value:L(n.value)}))}})},Jc=(e,r)=>{Ln(e,[{scope:"account",path:"viewedRegistry",op:"markViewed",value:{sections:(Array.isArray(r?.sections)?r.sections:[]).map(n=>({sectionId:n.sectionId,...n.lastLineId===void 0?{}:{lineId:n.lastLineId}})),resources:Array.isArray(r?.resources)?r.resources:[]}}])},Ib=(e,r,{sectionId:n,lineId:o})=>{if(!n||!o)return!1;let a=M(r)?r:{};Array.isArray(a.sections)||(a.sections=[]);let t=a.sections.find(s=>s.sectionId===n);if(t){if(t.lastLineId===void 0)return!1;let s=ve({state:e},{sectionId:n});if(s?.lines){let i=s.lines.findIndex(u=>u.id===t.lastLineId),l=s.lines.findIndex(u=>u.id===o);if(i===-1||l>i)return t.lastLineId===o?!1:(t.lastLineId=o,!0)}else return t.lastLineId===o?!1:(t.lastLineId=o,!0);return!1}else return a.sections.push({sectionId:n,lastLineId:o}),!0},qr=(e,r)=>{if(de(e)||e.global.accountViewedRegistry===void 0)return;Ib(e,Kc(e),r)&&Jc(e,{sections:[{sectionId:r.sectionId,lastLineId:r.lineId}],resources:[]})},wb=({state:e},r)=>(qr(e,r),e.global.pendingEffects.push({name:"render"}),e),kb=({state:e},r)=>{if(de(e))return e;let{resourceId:n}=r;if(e.global.accountViewedRegistry!==void 0){let o=Kc(e);o.resources.find(t=>t.resourceId===n)||(o.resources.push({resourceId:n}),Jc(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Ke=(e,r,n)=>{if(!M(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},Wo=(e,r,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${r}`)},Mn=(e,r)=>{let n=e.global.imageGalleryNavigation;n.groupId===r.groupId&&n.variantId===r.variantId&&n.pageIndex===r.pageIndex||(e.global.imageGalleryNavigation=r,e.global.pendingEffects.push({name:"render"}))},vb=({state:e},r)=>{let n="showImageGalleryVariant";Ke(n,r,yh),Wo(n,"groupId",r.groupId),Object.prototype.hasOwnProperty.call(r,"variantId")&&Wo(n,"variantId",r.variantId);let o=e.projectData?.resources?.imageGallery;if(o===void 0)return e;let a=o.groups.findIndex(i=>i.id===r.groupId),t=o.groups[a];if(!t)return e;let s=r.variantId===void 0?t.variants[0]:t.variants.find(i=>i.id===r.variantId);return!s||_t(e,s)||Mn(e,{groupId:t.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},Qc=(e,r,n,o)=>{Ke(o,r,Qo);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let t=e.global.imageGalleryNavigation;if(typeof t.groupId!="string"||typeof t.variantId!="string")return e;let s=a.groups.find(u=>u.id===t.groupId),i=s?.variants.findIndex(u=>u.id===t.variantId);if(!s||i===void 0||i<0)return e;let l=Uo(e,s.variants,i,n);return l&&Mn(e,{...t,variantId:l.id}),e},Ab=({state:e},r)=>Qc(e,r,-1,"moveToPreviousImageGalleryVariant"),Pb=({state:e},r)=>Qc(e,r,1,"moveToNextImageGalleryVariant"),xb=({state:e},r)=>{if(Ke("clearImageGallerySelection",r,Qo),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return Mn(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},Zc=(e,r)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=fi(n);if(r>=o)return e;let a=e.global.imageGalleryNavigation,t=mi(n,a);return r===t||Mn(e,{groupId:null,variantId:null,pageIndex:r}),e},Eb=({state:e},r)=>{if(Ke("moveToImageGalleryPage",r,hh),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return Zc(e,r.pageIndex)},eu=(e,r,n,o)=>{Ke(o,r,Qo);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=mi(a,e.global.imageGalleryNavigation)+n;return s<0?e:Zc(e,s)},Sb=({state:e},r)=>eu(e,r,1,"moveToNextImageGalleryPage"),Rb=({state:e},r)=>eu(e,r,-1,"moveToPreviousImageGalleryPage"),ir=(e,r,n)=>{if(!M(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},Ob=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error(`${e} requires a non-empty trackId`)},ze=e=>{e.global.pendingEffects.push({name:"render"})},ru=(e,r)=>{let n=e.projectData.resources.musicRoom,o=e.global.musicRoomPlayer,a=o.trackId!==null,t=o.trackId===r.id,s=o.bgmPlayback;a||(s={commandId:jn(e),operation:"pause"});let i=Nt(e,"play",0),l=n.tracks.indexOf(r),u=t?o.durationMs:null;e.global.musicRoomPlayer={trackId:r.id,pageIndex:Math.floor(l/n.pageSize),status:"playing",readiness:u===null?"loading":"ready",positionMs:0,durationMs:u,playback:i,seekFallback:null,bgmPlayback:s},ze(e)},Cb=({state:e},r)=>{let n="playMusicRoomTrack";ir(n,r,gh),Ob(n,r.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(t=>t.id===r.trackId);return!a||yi(e,a)||ru(e,a),e},$b=({state:e},r)=>{ir("playMusicRoom",r,nt);let o=e.global.musicRoomPlayer;if(o.trackId===null||o.status==="playing")return e;let a=o.status==="ended",t=o.readiness==="error",s=o.status==="paused"&&!t?"resume":"play",i=a?0:o.positionMs;return o.playback=Nt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,t&&(o.readiness=o.durationMs===null?"loading":"ready"),ze(e),e},_b=({state:e},r)=>{ir("pauseMusicRoom",r,nt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=Nt(e,"pause"),o.seekFallback=null,o.status="paused",ze(e)),e},Tb=({state:e},r)=>{ir("stopMusicRoom",r,nt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=Nt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,ze(e)),e},jb=({state:e},r)=>{if(ir("seekMusicRoom",r,bh),typeof r.positionMs!="number"||!Number.isFinite(r.positionMs)||r.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||r.positionMs>o.durationMs)return e;let a=Nt(e,"seek",r.positionMs);return o.seekFallback={commandId:a.commandId,status:o.status,positionMs:o.positionMs},o.playback=a,o.positionMs=r.positionMs,r.positionMs===o.durationMs?o.status="ended":o.status==="ended"&&(o.status="stopped"),ze(e),e},tu=(e,r,n,o)=>{ir(o,r,nt);let a=e.projectData?.resources?.musicRoom,t=e.global.musicRoomPlayer;if(!a||t.trackId===null)return e;let s=a.tracks.findIndex(l=>l.id===t.trackId);if(s<0)return e;let i=Bo(e,a.tracks,s,n);return i&&ru(e,i),e},Nb=({state:e},r)=>tu(e,r,-1,"playPreviousMusicRoomTrack"),Db=({state:e},r)=>tu(e,r,1,"playNextMusicRoomTrack"),Lb=({state:e},r)=>{ir("clearMusicRoomSelection",r,nt);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,t={commandId:jn(e),operation:"resume"};return e.global.musicRoomPlayer={...Tn({bgmPlayback:t}),pageIndex:a},ze(e),e},nu=(e,r)=>{let n=e.projectData?.resources?.musicRoom;if(!n||r>=hi(n))return e;let o=e.global.musicRoomPlayer,a=gi(n,o);return r===a||(o.pageIndex=r,ze(e)),e},Mb=({state:e},r)=>{if(ir("moveToMusicRoomPage",r,Ih),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return nu(e,r.pageIndex)},su=(e,r,n,o)=>{ir(o,r,nt);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let t=gi(a,e.global.musicRoomPlayer)+n;return t<0?e:nu(e,t)},qb=({state:e},r)=>su(e,r,1,"moveToNextMusicRoomPage"),Vb=({state:e},r)=>su(e,r,-1,"moveToPreviousMusicRoomPage"),Mr=e=>{let r=de(e);if(!r)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=L(r.sceneReplay.returnState),o=r.sceneReplay.sceneId;return e.global.pendingEffects=e.global.pendingEffects.filter(a=>a?.name!=="handleLineActions"||a?.payload?.sceneReplaySceneId!==o),e.contexts.pop(),lg(e,n),e.global.pendingEffects.push({name:"render"}),!0},Fb=({state:e},r)=>{let n="startSceneReplay";if(Ke(n,r,wh),Wo(n,"sceneId",r.sceneId),de(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===r.sceneId);if(!a||!Dc(e,a.sceneId))return e;let t=e.projectData.story.scenes[a.sceneId],s=t?.initialSectionId,i=t?.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 u=ig(e);ag(e);let c=ci({pointer:{sceneId:a.sceneId,sectionId:s,lineId:l},projectData:e.projectData,kind:"sceneReplay",sceneReplay:{sceneId:a.sceneId,entryId:0,finishOnNextAdvance:!1,exitOnLineCompleted:!1,returnState:u}});return Ec(e,c),e.contexts.push(c),Mt(e,c.pointers.read),e},ou=({state:e},r)=>{Ke("finishSceneReplay",r,Zo);let o=de(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(vr(e)?.rollback?.isRestoring===!0)return e;let t=_e({state:e})?.pointer,{sceneId:s}=Xe(e.projectData,t?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=Ah(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),Ln(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},Ub=({state:e},r)=>(Ke("exitSceneReplay",r,Zo),Mr(e),e),iu=(e,r)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||r>=bi(n))return e;let o=Ii(n,e.global.sceneReplayNavigation);return r===o||(e.global.sceneReplayNavigation.pageIndex=r,e.global.pendingEffects.push({name:"render"})),e},Bb=({state:e},r)=>{if(Ke("moveToSceneReplayPage",r,kh),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return iu(e,r.pageIndex)},au=(e,r,n,o)=>{Ke(o,r,Zo);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let t=Ii(a,e.global.sceneReplayNavigation)+n;return t<0?e:iu(e,t)},zb=({state:e},r)=>au(e,r,1,"moveToNextSceneReplayPage"),Yb=({state:e},r)=>au(e,r,-1,"moveToPreviousSceneReplayPage"),qn=(e,r)=>{let n=e.global.musicRoomPlayer;return!M(r)||r.id!==fh||n.trackId===null||!n.playback||r.commandId!==n.playback.commandId?null:n},Ai=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,lu=(e,r,n,{readiness:o=r.readiness}={})=>((r.readiness!==o||r.positionMs!==n.positionMs||r.durationMs!==n.durationMs||r.seekFallback!==null)&&(r.readiness=o,r.positionMs=n.positionMs,r.durationMs=n.durationMs,r.seekFallback=null,ze(e)),e),Gb=({state:e},r)=>{let n=qn(e,r);return!n||n.readiness!=="loading"||!Ai(r)?e:lu(e,n,r,{readiness:"ready"})},Hb=({state:e},r)=>{let n=qn(e,r);return!n||n.readiness!=="ready"||!Ai(r)||n.status==="stopped"&&r.positionMs!==0||n.status==="ended"&&r.positionMs!==r.durationMs?e:lu(e,n,r)},Xb=({state:e},r)=>{let n=qn(e,r);return!n||n.readiness!=="ready"||n.status!=="playing"||!Ai(r)||r.positionMs!==r.durationMs||(n.status="ended",n.positionMs=r.positionMs,n.durationMs=r.durationMs,n.seekFallback=null,ze(e)),e},Wb=({state:e},r)=>{let n=qn(e,r);if(!n||typeof r.errorCode!="string"||!mh.has(r.errorCode)||n.readiness==="error"&&n.status==="stopped")return e;if(r.errorCode==="invalid-position"){let o=n.seekFallback;if(n.playback.operation!=="seek"||o?.commandId!==r.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},cu=({state:e,rollbackActionBatchStack:r},n)=>{let o=Oh(n.manual),{auto:a,applyMode:t}=n,s=e.global.nextLineConfig.auto?.enabled,i=e.global.nextLineConfig.auto?.trigger,l=e.global.nextLineConfig.auto?.delay,u=e.global.nextLineConfig?.applyMode,c=e.contexts?.[e.contexts.length-1]?.rollback?.isRestoring===!0;o&&a?(e.global.nextLineConfig={manual:o,auto:a},t!==void 0?e.global.nextLineConfig.applyMode=t:u!==void 0&&(e.global.nextLineConfig.applyMode=u)):(o&&(e.global.nextLineConfig.manual=o),a&&(e.global.nextLineConfig.auto=a),t!==void 0&&(e.global.nextLineConfig.applyMode=t));let p=e.global.nextLineConfig.auto?.enabled,m=e.global.nextLineConfig.auto?.trigger,d=e.global.nextLineConfig.auto?.delay,f=Ae({state:e});return!c&&(a!==void 0&&(p!==s||m!==i||d!==l))&&(!f&&p===!0&&(m==="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"}),We(e,"setNextLineConfig",n,r),e},Kb=({state:e},r)=>{if(de(e))throw new Error("Cannot save while a scene replay is active");let n=r?.slotId;oc(n,"saveSlot");let{thumbnailImage:o}=r,a=r?.savedAt,t=Vr(n),s=L(e.contexts);s?.forEach(u=>{it(u),Rc(u.rollback),Th(u.rollback,e.projectData)});let i={contexts:s},l={formatVersion:tc,slotId:uc(n),savedAt:typeof a=="number"?a:Date.now(),image:o,state:i};return e.global.saveSlots[t]=l,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}},{name:"render"}),e},Jb=({state:e},r)=>{if(de(e))throw new Error("Cannot load while a scene replay is active");let n=r?.slotId;oc(n,"loadSlot");let o=Vr(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0;if(a){let t=Xh(a,e.projectData);e.contexts=t.state.contexts,e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=jt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,st(e),ot(e),ti(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},Qb=({state:e},r)=>{if(de(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=r;cc(n),gt(n),bt(n),It(n),jr(n?.resources?.variables??{}),fo(n);let o=Dh(n),a=o?e.contexts?.map((t,s)=>wc(L(t),n,s)):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=Jo(),e.global.sceneReplayNavigation=ei(),ti(e),o){let t=n?.resources?.variables??{},{globalVariablesDefaultValues:s}=yn(n??{});Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...s,...wt(e.global.variables,t,{allowedScopes:["device","account"]})}),e.contexts=a}return st(e),ot(e),e.global.pendingEffects.push({name:"render"}),e},Zb=({state:e},r)=>{let{l10nId:n,projectData:o}=r??{};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,li(e,"localizationPackageId",n),Sc(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},eI=({state:e},r)=>{let{sectionId:n,lineId:o}=r;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 t=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:t});if(!s?.lines||!Array.isArray(s.lines))return console.warn(`Section ${t} has no lines`),e;if(!s.lines.find(p=>p.id===o))return console.warn(`Line not found: ${o} in section ${t}`),e;let l=Ae({state:e}),u=it(a);u.read={sectionId:t,lineId:o};let{activeInteraction:c}=Mt(e,u.read);return Nn(e,l,c),e},rI=({state:e,rollbackActionBatchStack:r},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return Dn({state:e,rollbackActionBatchStack:r}),e;let o=Ae({state:e});if(o?.source===tt&&n?.bypassChoice!==!0||o?.source===wr&&n?._interactionSource!==wr)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,de(e)?.sceneReplay.exitOnLineCompleted)return Mr(e),e;let d=_e({state:e})?.pointer,f=d?.sectionId,y=d?.lineId;f&&y&&qr(e,{sectionId:f,lineId:y}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!o&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}});let g=e.global.nextLineConfig,h=ve({state:e},{sectionId:f});return Array.isArray(h?.lines)&&h.lines.at(-1)?.id===y?Fo(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(de(e)?.sceneReplay.finishOnNextAdvance)return Mr(e),e;let t=_e({state:e})?.pointer,s=t?.sectionId,i=ve({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],u=i?.lines||[],p=u.findIndex(m=>m.id===t?.lineId)+1;if(p<u.length){let m=u[p],d=!He(e,"skipUnseenText");if(e.global.skipMode&&d&&!di({state:e},{sectionId:s,lineId:m.id}))return kr({state:e}),e;if(l&&!l.rollback&&Ar(l,{compatibilityAnchor:!0}),l){let y=it(l),g=y.read?.lineId;g&&s&&qr(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:m.id}}ui(e,{sectionId:s,lineId:m.id}),ri(e);let{activeInteraction:f}=Mt(e,{sectionId:s,lineId:m.id});Nn(e,o,f)}else{if(de(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Mr(e),e;e.global.autoMode&&qt({state:e}),e.global.skipMode&&kr({state:e}),Fo(e)}return e},tI=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,de(e)?.sceneReplay.exitOnLineCompleted)return Mr(e),e;let n=Ae({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}});let o=_e({state:e})?.pointer,a=o?.sectionId,t=o?.lineId;a&&t&&qr(e,{sectionId:a,lineId:t});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},nI=({state:e},r)=>Wc(e,{sectionId:r?.sectionId,screen:r?.screen}),sI=({state:e,rollbackActionBatchStack:r},n)=>{let o=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!o)return Dn({state:e,rollbackActionBatchStack:r}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:or({state:e})}}),e;let a=Ae({state:e});if(a?.source===tt&&n?.bypassChoice!==!0||a?.source===wr&&n?._interactionSource!==wr||a&&a.source!==tt&&a.source!==wr)return e;let t=de(e);if(t?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Mr(e),e):(t.sceneReplay.exitOnLineCompleted=!0,e);let s=_e({state:e})?.pointer,i=s?.sectionId,l=ve({state:e},{sectionId:i}),u=e.contexts[e.contexts.length-1],c=l?.lines||[],m=c.findIndex(d=>d.id===s?.lineId)+1;if(m<c.length){let d=c[m],f=!He(e,"skipUnseenText");if(e.global.skipMode&&f&&!di({state:e},{sectionId:i,lineId:d.id})&&(kr({state:e}),!o))return e;if(u&&!u.rollback&&Ar(u,{compatibilityAnchor:!0}),u){let g=it(u),h=g.read?.lineId;h&&i&&qr(e,{sectionId:i,lineId:h}),g.read={sectionId:i,lineId:d.id}}ui(e,{sectionId:i,lineId:d.id}),ri(e);let{activeInteraction:y}=Mt(e,{sectionId:i,lineId:d.id});Nn(e,a,y)}else{if(de(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Mr(e),e;e.global.autoMode&&qt({state:e}),e.global.skipMode&&kr({state:e}),Fo(e)}return e},Pi=(e,r={})=>{let n=Dt({state:e});return!n||r.formKey&&r.formKey!==n.key||r.formId&&r.formId!==n.id?null:n},oI=(e,r)=>{if(!r.variableId)throw new Error(`form field "${r.id}" requires variableId`);let n=e.projectData.resources?.variables?.[r.variableId],o=n?.scope,a=n?.type;if($e(n))throw new Error(`Cannot update computed variable: ${r.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${r.variableId}`);if(kt(o,r.variableId),vt(a,"set",r.variableId),de(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${r.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},iI=(e,r)=>({id:e.id,key:e.key,valid:!0,values:L(r),fields:L(e.fields),fieldList:L(e.fieldList)}),aI=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let r=_e({state:e})?.pointer,n=r?.sectionId,o=r?.lineId;n&&o&&qr(e,{sectionId:n,lineId:o})},lI=({state:e},r={})=>{let n=Pi(e,r),o=r.field;if(!n?.fields?.[o])return e;let a=Ac(e,n.key),t=$n(r.value),s=n.fields[o],i=ii(s,t);return a.values[o]=t,a.touched[o]=!0,i?a.errors[o]=i:delete a.errors[o],e.global.pendingEffects.push({name:"render"}),e},cI=({state:e,rollbackActionBatchStack:r},n={})=>{let o=Pi(e,n);if(!o)return{submitted:!1,valid:!1,reason:"inactive"};let a=Ac(e,o.key);a.submitted=!0;let t={},s={};if(Object.entries(o.fields).forEach(([m,d])=>{let f=Object.prototype.hasOwnProperty.call(a.values,m)?a.values[m]:d.value,y=ii(d,f);a.touched[m]=!0,y&&(s[m]=y),t[m]=vc(d,f)}),a.errors=s,Object.keys(s).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:L(s),form:{id:o.id,key:o.key,values:L(t)}};let i=e.contexts[e.contexts.length-1];if(i?.rollback?.isRestoring)return{submitted:!1,valid:!1,reason:"restoring"};let l=!1,u=[],c=[];Object.entries(o.fields).forEach(([m,d])=>{let{scope:f}=oI(e,d),y=f==="context"?i.variables:e.global.variables,g=t[m];y[d.variableId]=gn(y[d.variableId],"set",g),f==="context"&&(l=!0,c.push({variableId:d.variableId,op:"set",value:g})),(f==="device"||f==="account")&&u.push({scope:f,path:`variables.${d.variableId}`,op:"set",value:L(y[d.variableId])})}),l&&We(e,"updateVariable",{id:"submitForm",operations:c},r),Ln(e,u);let p=iI(o,t);return aI(e),delete e.global.formDrafts[o.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},uI=({state:e},r={})=>{let n=Pi(e,r);return n?(delete e.global.formDrafts?.[n.key],e.global.pendingEffects.push({name:"render"}),{cancelled:!0,form:{id:n.id,key:n.key,values:L(n.values),fields:L(n.fields),fieldList:L(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},pI=({state:e,rollbackActionBatchStack:r},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 t=e.contexts[e.contexts.length-1];if(t?.rollback?.isRestoring)return e;let s=!1,i=[],l=[];return a.forEach(({variableId:u,op:c,value:p,roundTo:m})=>{let d=e.projectData.resources?.variables?.[u],f=d?.scope,y=d?.type;if($e(d))throw new Error(`Cannot update computed variable: ${u}`);if(d?.readonly===!0)throw new Error(`Cannot update readonly variable: ${u}`);if(kt(f,u),vt(y,c,u),hn(y,c,p,u,{roundTo:m}),de(e)&&f!=="context")throw new Error(`Cannot update ${f}-scoped variable "${u}" while a scene replay is active`);let g=f==="context"?t.variables:e.global.variables;if(f==="context"){s=!0;let h={variableId:u,op:c,value:p};m!==void 0&&(h.roundTo=m),l.push(h)}g[u]=gn(g[u],c,p,{roundTo:m}),(f==="device"||f==="account")&&i.push({scope:f,path:`variables.${u}`,op:"set",value:L(g[u])})}),s&&We(e,"updateVariable",{id:o,operations:l},r),Ln(e,i),e.global.pendingEffects.push({name:"render"}),e},Ve=e=>(r,n)=>e({state:r},n),dI=e=>({variables:Wr({variables:{...e.global?.variables??{},...vr(e)?.variables??{}},runtime:hr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:hr(e)}),fI=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")},mI=(e,r,n)=>{if(!M(e))throw new Error(`conditional branch at index ${r} must be an object`);if(!M(e.actions))throw new Error(`conditional branch at index ${r} requires actions object`);if(!Object.prototype.hasOwnProperty.call(e,"when")&&r!==n-1)throw new Error("conditional else branch must be the last branch")},yI=(e,r)=>{fI(r);for(let n=0;n<r.branches.length;n+=1){let o=r.branches[n];if(mI(o,n,r.branches.length),!(Object.prototype.hasOwnProperty.call(o,"when")&&!ht(o.when,dI(e)))){Object.entries(o.actions).forEach(([t,s])=>{uu(e,t,s)});return}}},hI={conditional:{replayLine:yI},updateVariable:{recordSources:[Ir],replayLine:Ql,replayRecorded:Ql,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Ve(cu)},setSaveLoadPagination:{recordSources:[Ir],replayLine:Ve(zo),replayRecorded:Ve(zo),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[Ir],replayLine:Ve(Yo),replayRecorded:Ve(Yo),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[Ir],replayLine:Ve(Go),replayRecorded:Ve(Go),persistInSaveSlot:!0},setMenuPage:{recordSources:[Ir],replayLine:Ve(Ho),replayRecorded:Ve(Ho),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[Ir],replayLine:Ve(Xo),replayRecorded:Ve(Xo),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Ve(ou)}},Vn=e=>hI[e]??null,gI=e=>Vn(e)?.persistInSaveSlot===!0,bI=(e,r)=>{let n=Vn(e)?.recordSources;return Array.isArray(n)&&n.includes(r)},II=(e,r,n)=>{Vn(r)?.replayRecorded?.(e,n)},uu=(e,r,n)=>{Vn(r)?.replayLine?.(e,n)},wI=e=>e?.returnable!==!1,pu=(e,r)=>{if(r>=0)return e.currentIndex+r;let n=Math.abs(r);for(let o=e.currentIndex-1;o>=0;o-=1)if(wI(e.timeline[o])&&(n-=1,n===0))return o;return-1},du=({state:e},r)=>{let{offset:n}=r;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 t=pu(a,n);if(t<0||t>=a.timeline.length)return null;let s=a.timeline[t];return{sectionId:s.sectionId,lineId:s.lineId}},fu=({state:e})=>du({state:e},{offset:-1})!==null,kI=({state:e},r)=>{let{offset:n=-1}=r;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=Ar(o,{compatibilityAnchor:!o.rollback}),t=pu(a,n);return t<0||t>=a.timeline.length?e:Oc(e,t)},vI=({state:e},r)=>{let{sectionId:n,lineId:o}=r,a=e.contexts[e.contexts.length-1];if(!a)throw new Error("No context available for rollbackToLine");let t=Ar(a,{compatibilityAnchor:!a.rollback}),i=t.timeline.slice(0,t.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===t.currentIndex?e:Oc(e,i)},AI=()=>({lineEntryId:1,autoSessionId:0,skipSessionId:0,rollbackAuthoredSuppression:null}),Vo=(e,r)=>{let n=e[r];if(!Number.isSafeInteger(n)||n<0)throw new RangeError(`Internal playback ${r} is invalid`);if(n===Number.MAX_SAFE_INTEGER)throw new RangeError(`Internal playback ${r} is exhausted`);return e[r]=n+1,e[r]},ec=e=>e.contexts?.[e.contexts.length-1]?.pointers?.read??null,rc=e=>{let r=e.contexts?.[e.contexts.length-1];return Number.isInteger(r?.rollback?.currentIndex)?r.rollback.currentIndex:null},PI=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,mu=e=>{let r=e.global?.nextLineConfig?.auto;return r?.enabled!==!0?{enabled:!1}:{enabled:!0,trigger:r.trigger==="fromStart"?"fromStart":"fromComplete",delayMs:r.delay??1e3}},xi=e=>JSON.stringify(mu(e)),xI=({actionName:e,args:r,state:n,previousState:o})=>{let a=ec(o),t=ec(n);if(!PI(a,t)||o.contexts?.length!==n.contexts?.length||(e==="rollbackByOffset"||e==="rollbackToLine")&&rc(o)!==rc(n))return!0;let s=r[0]??{};if(e==="jumpToLine"){let i=s.sectionId??a?.sectionId;return typeof s.lineId=="string"&&t?.sectionId===i&&t?.lineId===s.lineId&&n.global.isLineCompleted===!1}if(e==="sectionTransition"||e==="resetStoryAtSection"){let i=Xe(n.projectData,s.sectionId).section,l=Xc(i)?.id;return typeof l=="string"&&t?.sectionId===s.sectionId&&t?.lineId===l&&n.global.isLineCompleted===!1}if(e==="loadSlot"){let i=s.slotId;return Object.prototype.hasOwnProperty.call(o.global?.saveSlots??{},Vr(i))}return!1},EI=({actionName:e,args:r,state:n,transactionalMetadata:o,previousState:a})=>{if(xI({actionName:e,args:r,state:n,previousState:a})){let c=Vo(o,"lineEntryId");e==="rollbackByOffset"||e==="rollbackToLine"?o.rollbackAuthoredSuppression={lineEntryId:c,configKey:xi(n)}:o.rollbackAuthoredSuppression=null}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)&&Vo(o,"autoSessionId"),n.global.skipMode===!0&&(e==="startSkipMode"&&!i||e==="toggleSkipMode"&&a.global.skipMode!==!0||s&&a.global.skipMode!==!0)&&Vo(o,"skipSessionId")},SI=({state:e,transactionalMetadata:r})=>{let n=r.rollbackAuthoredSuppression;n&&(n.lineEntryId!==r.lineEntryId||n.configKey!==xi(e))&&(r.rollbackAuthoredSuppression=null)},RI=({state:e,playbackOwnership:r})=>{let n=Ae({state:e}),o=r.lineEntryId,a=!n&&e.global.autoMode===!0&&e.global.isLineCompleted===!0,t=!n&&e.global.skipMode===!0,s=mu(e),i=r.rollbackAuthoredSuppression,l=!n&&s.enabled&&(s.trigger==="fromStart"||e.global.isLineCompleted===!0)&&!(i?.lineEntryId===o&&i.configKey===xi(e)),u=a?Bc(e):null;return{auto:a?{owner:{sessionId:r.autoSessionId,lineEntryId:o},delayMs:qo({text:u,baseDelay:He(e,"autoForwardDelay"),speed:He(e,"autoForwardSpeed")}),contentKey:u}:null,skip:t?{owner:{sessionId:r.skipSessionId},delayMs:80}:null,authored:l?{owner:{lineEntryId:o},delayMs:s.delayMs,trigger:s.trigger}:null}},OI=({playbackOwnership:e})=>e.lineEntryId,yu=(e,r={})=>{let n=kg(e),o=[],a=r.createPlaybackOwnership??AI;if(typeof a!="function")throw new TypeError("createPlaybackOwnership must be a function");return xa(n,{selectPendingEffects:Ag,selectSkipMode:Cc,selectAutoMode:Pg,selectIsChoiceVisible:qc,selectIsFormVisible:Rg,selectActiveInteraction:Ae,selectActiveForm:Dt,selectDialogueUIHidden:$c,selectDialogueHistory:_c,selectConfirmDialog:Sg,selectIsLineAccountViewed:di,selectIsResourceAccountViewed:Cg,selectImageGalleryConfig:$g,selectImageGallery:Tc,selectMusicRoomConfig:Tg,selectMusicRoom:Nc,selectSceneReplayConfig:jg,selectSceneReplay:Lc,selectIsSceneReplayActive:Ng,selectActiveSceneReplayEntry:Dg,selectNextLineConfig:Lg,selectSystemState:Mg,selectAchievements:qg,selectAchievement:Vg,selectSaveSlotMap:Vc,selectSaveSlots:Gg,selectSaveSlot:Fg,selectLocalizationPackages:Fc,selectRuntime:wi,selectRuntimeValue:Ug,selectAllVariables:ki,selectCurrentPointer:_e,selectSection:ve,selectCurrentLine:Lt,selectPresentationState:Uc,selectAutoForwardTimerDelay:or,selectPresentationChanges:Bg,selectSectionLineChanges:Yg,selectSaveSlotPage:vi,selectCurrentPageSlots:Hg,selectRenderState:Wg,selectOverlayStack:vg,selectLineIdByOffset:du,selectCanRollback:fu,selectRollbackCursor:fg,selectDesiredPlaybackTimers:RI,selectPlaybackLineEntryId:OI,startAutoMode:Yc,stopAutoMode:qt,toggleAutoMode:nb,startSkipMode:Gc,stopSkipMode:kr,toggleSkipMode:sb,showDialogueUI:Dn,hideDialogueUI:Hc,toggleDialogueUI:ob,setDialogueTextSpeed:ib,setAutoForwardDelay:ab,setAutoForwardSpeed:lb,setSkipUnseenText:cb,setSkipTransitionsAndAnimations:ub,setSoundVolume:pb,setMusicVolume:db,setMuteAll:fb,setSaveLoadPagination:zo,incrementSaveLoadPagination:Yo,decrementSaveLoadPagination:Go,setMenuPage:Ho,setMenuEntryPoint:Xo,showConfirmDialog:Kg,hideConfirmDialog:Jg,resetStoryAtSection:bb,clearPendingEffects:mb,appendPendingEffect:yb,completeAchievement:hb,setAchievementProgress:gb,beginRollbackActionBatch:gg,endRollbackActionBatch:bg,markRollbackCheckpointTransient:mg,markSavedRollbackCheckpointTransient:yg,recordCurrentDialogueHistory:Eg,addViewedLine:wb,addViewedResource:kb,showImageGalleryVariant:vb,moveToPreviousImageGalleryVariant:Ab,moveToNextImageGalleryVariant:Pb,clearImageGallerySelection:xb,moveToImageGalleryPage:Eb,moveToNextImageGalleryPage:Sb,moveToPreviousImageGalleryPage:Rb,playMusicRoomTrack:Cb,playMusicRoom:$b,pauseMusicRoom:_b,stopMusicRoom:Tb,seekMusicRoom:jb,playPreviousMusicRoomTrack:Nb,playNextMusicRoomTrack:Db,clearMusicRoomSelection:Lb,moveToMusicRoomPage:Mb,moveToNextMusicRoomPage:qb,moveToPreviousMusicRoomPage:Vb,musicRoomSoundReady:Gb,musicRoomSoundProgress:Hb,musicRoomSoundComplete:Xb,musicRoomSoundError:Wb,startSceneReplay:Fb,finishSceneReplay:ou,exitSceneReplay:Ub,moveToSceneReplayPage:Bb,moveToNextSceneReplayPage:zb,moveToPreviousSceneReplayPage:Yb,setNextLineConfig:cu,saveSlot:Kb,loadSlot:Jb,updateProjectData:Qb,updateLocalizationPackage:Zb,sectionTransition:nI,jumpToLine:eI,nextLine:rI,markLineCompleted:tI,rollbackToLine:vI,rollbackByOffset:kI,pushOverlay:Qg,popOverlay:Zg,replaceLastOverlay:eb,clearOverlays:rb,updateFormField:lI,submitForm:cI,cancelForm:uI,updateVariable:pI,nextLineFromSystem:sI},{createTransactionalMetadata:a,updateTransactionalMetadata:EI,finalizeTransactionalMetadata:SI,transformActionFirstArgument:(s,i)=>({state:s,rollbackActionBatchStack:o,playbackOwnership:i}),transformSelectorFirstArgument:(s,i)=>({state:s,playbackOwnership:i})})};var CI="route-engine",$I="projectPersistence";var gu=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),me=e=>Object.prototype.toString.call(e)==="[object Object]",hu="variables.",_I=(e={})=>{let r=me(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!me(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(r.resources)?r.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!me(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},TI=(e={})=>{let r=me(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!me(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(r.resources)?r.resources:[]).map(n=>typeof n=="string"||typeof n=="number"?{resourceId:String(n)}:!me(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},jI=(e,r)=>{let n=TI(e),o=_I(r),a=n.sections.map(s=>({...s})),t=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=>{t.find(l=>l.resourceId===s.resourceId)||t.push({...s})}),{sections:a,resources:t}},NI=(e={})=>{let r=me(e)?e:{},n=Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},DI=(e,r)=>{let n=NI(e),o=me(r)&&Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},bu=(e={})=>{let r=me(e)?e:{};return{saveSlots:me(r.saveSlots)?r.saveSlots:{},globalDeviceVariables:me(r.globalDeviceVariables)?r.globalDeviceVariables:{},globalAccountVariables:me(r.globalAccountVariables)?r.globalAccountVariables:{},globalRuntime:me(r.globalRuntime)?r.globalRuntime:{},accountViewedRegistry:me(r.accountViewedRegistry)?r.accountViewedRegistry:{},accountReplayRegistry:me(r.accountReplayRegistry)?r.accountReplayRegistry:{}}},LI=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((r,n)=>{if(!me(r))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=r.path?.startsWith(hu)?r.path.slice(hu.length):null;if(o!==null){if(!["device","account"].includes(r.scope))throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(o.length===0)throw new Error(`Malformed applyScopedDataUpdates path "${r.path}" at updates[${n}].`);if(r.op!=="set")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return{scope:r.scope,path:r.path,op:r.op,value:r.value,variableId:o}}if(r.path==="viewedRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="markViewed")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return r}if(r.path==="replayRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="unlock")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);if(!me(r.value)||!Array.isArray(r.value.sceneIds)||r.value.sceneIds.length===0||r.value.sceneIds.some(a=>typeof a!="string"||a.length===0))throw new Error(`Malformed applyScopedDataUpdates replayRegistry value at updates[${n}].`);return{...r,value:{sceneIds:[...new Set(r.value.sceneIds)]}}}throw typeof r.path!="string"?new Error(`Malformed applyScopedDataUpdates path at updates[${n}].`):new Error(`Unsupported applyScopedDataUpdates path "${r.path}" at updates[${n}].`)})},MI=(e,r)=>{let n={};return LI(r).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=jI(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=DI(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},at=e=>{if(typeof e!="string")return null;let r=e.trim();return r.length>0?r:null},qI=e=>{let r=at(e);if(!r)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return r},VI=e=>{let r=e??globalThis.indexedDB;if(!r)throw new Error("IndexedDB is not available in this environment.");return r},FI=({indexedDB:e,databaseName:r,objectStoreName:n})=>new Promise((o,a)=>{let t=e.open(r,1);t.onupgradeneeded=()=>{let s=t.result;s.objectStoreNames.contains(n)||s.createObjectStore(n,{keyPath:"namespace"})},t.onsuccess=()=>{o(t.result)},t.onerror=()=>{a(t.error??new Error(`Failed to open IndexedDB database "${r}".`))}}),UI=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let l=o.transaction(r,"readonly").objectStore(r).get(n);l.onsuccess=()=>{a(l.result??null)},l.onerror=()=>{t(l.error??new Error(`Failed to read persisted namespace "${n}" from IndexedDB.`))}})},Ft=async({databasePromise:e,objectStoreName:r,namespace:n,patch:o})=>{let a=await e;return new Promise((t,s)=>{let i=a.transaction(r,"readwrite"),l=i.objectStore(r),u=l.get(n),c=!1,p=d=>{c||(c=!0,s(d))},m=()=>{c||(c=!0,t())};u.onerror=()=>{p(u.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},u.onsuccess=()=>{let d=bu(u.result),f=typeof o=="function"?o(d):o,y={namespace:n,version:1,...gu(),...d,...f},g=l.put(y);g.onerror=()=>{p(g.error??new Error(`Failed to persist namespace "${n}" to IndexedDB.`))}},i.oncomplete=()=>{m()},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}".`))}})},BI=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let s=o.transaction(r,"readwrite"),l=s.objectStore(r).delete(n),u=!1,c=m=>{u||(u=!0,t(m))},p=()=>{u||(u=!0,a())};l.onerror=()=>{c(l.error??new Error(`Failed to clear persisted namespace "${n}" from IndexedDB.`))},s.oncomplete=()=>{p()},s.onerror=()=>{c(s.error??new Error(`IndexedDB transaction failed while clearing namespace "${n}".`))},s.onabort=()=>{c(s.error??new Error(`IndexedDB transaction aborted while clearing namespace "${n}".`))}})},Ei=(e={})=>{let{indexedDB:r,databaseName:n=CI,objectStoreName:o=$I,namespace:a}=e,t=VI(r),s=qI(a),i=FI({indexedDB:t,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await UI({databasePromise:i,objectStoreName:o,namespace:s});return{...gu(),...bu(l)}},clear:async()=>BI({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:me(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:me(l)?l:{}}}),saveGlobalAccountVariables:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:me(l)?l:{}}}),saveGlobalRuntime:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:me(l)?l:{}}}),applyScopedDataUpdates:async l=>Ft({databasePromise:i,objectStoreName:o,namespace:s,patch:u=>MI(u,l)})}},zI=Ei;var Eu=Su;var YI={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},ar=Object.prototype.hasOwnProperty,GI={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 Ne(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=s;if(e!==null){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"null"},message:"must be null"};t===null?t=[p]:t.push(p),s++}var c=u===s;if(l=l||c,!l){let p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.x===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};t===null?t=[d]:t.push(d),s++}if(e.y===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};t===null?t=[d]:t.push(d),s++}for(let d in e)if(!(d==="x"||d==="y"||d==="quality"||d==="kernelSize"||d==="repeatEdgePixels")){let f={instancePath:r,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(e.x!==void 0){let d=e.x;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.y!==void 0){let d=e.y;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.quality!==void 0){let d=e.quality;if(typeof d=="number"){if(d<1||isNaN(d)){let f={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.kernelSize!==void 0){let d=e.kernelSize;if(!(typeof d=="number"&&!(d%1)&&!isNaN(d))){let f={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[f]:t.push(f),s++}if(!(d===5||d===7||d===9||d===11||d===13||d===15)){let f={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:GI.anyOf[1].properties.kernelSize.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),s++}}if(e.repeatEdgePixels!==void 0&&typeof e.repeatEdgePixels!="boolean"){let d={instancePath:r+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}var c=p===s;l=l||c}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return Ne.errors=t,s===0}var HI={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function Un(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.continuity!==void 0){let i=e.continuity;if(typeof i!="string"){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="render"||i==="persistent")){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/enum",keyword:"enum",params:{allowedValues:HI.properties.continuity.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.speed!==void 0){let i=e.speed;if(typeof i=="number"){if(i<=0||isNaN(i)){let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Un.errors=t,s===0}function ie(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="resourceId"||i==="playback")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.playback!==void 0&&(Un(e.playback,{instancePath:r+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(t=t===null?Un.errors:t.concat(Un.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ie.errors=t,s===0}function Bn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!ar.call(YI.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationName!==void 0&&typeof e.animationName!="string"){let i={instancePath:r+"/animationName",schemaPath:"#/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationSpeed!==void 0&&typeof e.animationSpeed!="number"){let i={instancePath:r+"/animationSpeed",schemaPath:"#/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.colorId!==void 0&&typeof e.colorId!="string"){let i={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.transformId!==void 0&&typeof e.transformId!="string"){let i={instancePath:r+"/transformId",schemaPath:"#/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(Ne(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Bn.errors=t,s===0}function Su(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Bn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Bn.errors:t.concat(Bn.errors),s=t.length),Su.errors=t,s===0}var Ru=Ou;var XI={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},ku={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},je=wu().default;function Te(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[i]:t.push(i),s++}if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!ar.call(ku.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0){let i=e.id;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.resourceId!==void 0){let i=e.resourceId;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:ku.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Te.errors=t,s===0}function zn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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 f={};t===null?t=[f]:t.push(f),s++}}var u=l===s;if(u){let d={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=i,t!==null&&(i?t.length=i:t=null);let c=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 f={};t===null?t=[f]:t.push(f),s++}}var m=p===s;if(m){let d={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=c,t!==null&&(c?t.length=c:t=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 f={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(e.sounds!==void 0){let d=e.sounds;if(Array.isArray(d)){let f=d.length;for(let y=0;y<f;y++)Te(d[y],{instancePath:r+"/sounds/"+y,parentData:d,parentDataProperty:y,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let f={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let d={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let d={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.interruption!==void 0){let d=e.interruption;if(typeof d!="string"){let f={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(!(d==="immediate"||d==="loopEnd")){let f={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:XI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[f]:t.push(f),s++}}if(e.volume!==void 0){let d=e.volume;if(typeof d=="number"){if(d>100||isNaN(d)){let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[f]:t.push(f),s++}if(d<0||isNaN(d)){let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let d={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.pan!==void 0){let d=e.pan;if(typeof d=="number"){if(d>1||isNaN(d)){let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[f]:t.push(f),s++}if(d<-1||isNaN(d)){let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}if(e.startDelayMs!==void 0){let d=e.startDelayMs;if(typeof d=="number"){if(d<0||isNaN(d)){let f={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}}}else{let d={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}return zn.errors=t,s===0}function Ou(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return zn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?zn.errors:t.concat(zn.errors),s=t.length),Ou.errors=t,s===0}var Cu=$u;var WI={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 Yn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let u={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let u=l.length;for(let c=0;c<u;c++){let p=l[c],m=s,d=!0,f=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let y;if(p.sprites===void 0&&(y="sprites")){let g={};t===null?t=[g]:t.push(g),s++}}var i=f===s;if(s=m,t!==null&&(m?t.length=m:t=null),i){let y=s;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.transformId===void 0){let h={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/then/required",keyword:"required",params:{missingProperty:"transformId"},message:"must have required property 'transformId'"};t===null?t=[h]:t.push(h),s++}var i=y===s;d=i}if(!d){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[y]:t.push(y),s++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[y]:t.push(y),s++}for(let y in p)if(!ar.call(WI.properties.items.items.properties,y)){let g={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};t===null?t=[g]:t.push(g),s++}if(p.id!==void 0&&typeof p.id!="string"){let y={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.transformId!==void 0&&typeof p.transformId!="string"){let y={instancePath:r+"/items/"+c+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.x!==void 0&&typeof p.x!="number"){let y={instancePath:r+"/items/"+c+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.y!==void 0&&typeof p.y!="number"){let y={instancePath:r+"/items/"+c+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let y={instancePath:r+"/items/"+c+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let y={instancePath:r+"/items/"+c+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let y={instancePath:r+"/items/"+c+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let y={instancePath:r+"/items/"+c+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let y={instancePath:r+"/items/"+c+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let y={instancePath:r+"/items/"+c+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let y={instancePath:r+"/items/"+c+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.opacity!==void 0){let y=p.opacity;if(typeof y=="number"){if(y>1||isNaN(y)){let g={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[g]:t.push(g),s++}if(y<0||isNaN(y)){let g={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[g]:t.push(g),s++}}if(p.blur!==void 0&&(Ne(p.blur,{instancePath:r+"/items/"+c+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.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:r+"/items/"+c+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(w.id!==void 0&&typeof w.id!="string"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/id",schemaPath:"#/properties/items/items/properties/sprites/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.resourceId!==void 0&&typeof w.resourceId!="string"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/resourceId",schemaPath:"#/properties/items/items/properties/sprites/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.animationName!==void 0&&typeof w.animationName!="string"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/animationName",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.animationSpeed!==void 0&&typeof w.animationSpeed!="number"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/animationSpeed",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(w.loop!==void 0&&typeof w.loop!="boolean"){let b={instancePath:r+"/items/"+c+"/sprites/"+h+"/loop",schemaPath:"#/properties/items/items/properties/sprites/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/items/"+c+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}}}else{let g={instancePath:r+"/items/"+c+"/sprites",schemaPath:"#/properties/items/items/properties/sprites/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[g]:t.push(g),s++}}p.animations!==void 0&&(ie(p.animations,{instancePath:r+"/items/"+c+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[y]:t.push(y),s++}}}else{let u={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return Yn.errors=t,s===0}function $u(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Yn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Yn.errors:t.concat(Yn.errors),s=t.length),$u.errors=t,s===0}var _u=Tu;function Gn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.items!==void 0){let i=e.items;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(c&&typeof c=="object"&&!Array.isArray(c)){for(let p in c)if(!(p==="id"||p==="content"||p==="events")){let m={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(c.id!==void 0&&typeof c.id!="string"){let p={instancePath:r+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(c.content!==void 0&&typeof c.content!="string"){let p={instancePath:r+"/items/"+u+"/content",schemaPath:"#/properties/items/items/properties/content/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(c.events!==void 0){let p=c.events;if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.click!==void 0){let m=p.click;if(!(m&&typeof m=="object"&&!Array.isArray(m))){let d={instancePath:r+"/items/"+u+"/events/click",schemaPath:"#/properties/items/items/properties/events/properties/click/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let m={instancePath:r+"/items/"+u+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Gn.errors=t,s===0}function Tu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Gn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Gn.errors:t.concat(Gn.errors),s=t.length),Tu.errors=t,s===0}var ju=Nu;function Hn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(i!=="mode"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.mode!==void 0&&typeof e.mode!="string"){let i={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Hn.errors=t,s===0}function Nu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Hn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Hn.errors:t.concat(Hn.errors),s=t.length),Nu.errors=t,s===0}var Du=Lu;function Xn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="resourceId"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Xn.errors=t,s===0}function Lu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Xn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Xn.errors:t.concat(Xn.errors),s=t.length),Lu.errors=t,s===0}var Mu=qu;var vu={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 Wn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!ar.call(vu.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.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 u={instancePath:r+"/ui",schemaPath:"#/properties/ui/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(i.resourceId!==void 0&&typeof i.resourceId!="string"){let l={instancePath:r+"/ui/resourceId",schemaPath:"#/properties/ui/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}i.animations!==void 0&&(ie(i.animations,{instancePath:r+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let l={instancePath:r+"/ui",schemaPath:"#/properties/ui/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.mode!==void 0){let i=e.mode;if(typeof i!="string"){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="adv"||i==="nvl")){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:vu.properties.mode.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.content!==void 0){let i=e.content;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.text!==void 0&&typeof c.text!="string"){let p={instancePath:r+"/content/"+u+"/text",schemaPath:"#/properties/content/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}}else{let p={instancePath:r+"/content/"+u,schemaPath:"#/properties/content/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/content",schemaPath:"#/properties/content/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}if(e.textSpeed!==void 0&&typeof e.textSpeed!="number"){let i={instancePath:r+"/textSpeed",schemaPath:"#/properties/textSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.append!==void 0&&typeof e.append!="boolean"){let i={instancePath:r+"/append",schemaPath:"#/properties/append/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.characterId!==void 0&&typeof e.characterId!="string"){let i={instancePath:r+"/characterId",schemaPath:"#/properties/characterId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.characterName!==void 0&&typeof e.characterName!="string"){let i={instancePath:r+"/characterName",schemaPath:"#/properties/characterName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.persistCharacter!==void 0&&typeof e.persistCharacter!="boolean"){let i={instancePath:r+"/persistCharacter",schemaPath:"#/properties/persistCharacter/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.persistSprite!==void 0&&typeof e.persistSprite!="boolean"){let i={instancePath:r+"/persistSprite",schemaPath:"#/properties/persistSprite/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.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 u={instancePath:r+"/character",schemaPath:"#/properties/character/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(i.name!==void 0&&typeof i.name!="string"){let l={instancePath:r+"/character/name",schemaPath:"#/properties/character/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(i.sprite!==void 0){let l=i.sprite;if(l&&typeof l=="object"&&!Array.isArray(l)){for(let u in l)if(!(u==="transformId"||u==="items"||u==="animations")){let c={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(l.transformId!==void 0&&typeof l.transformId!="string"){let u={instancePath:r+"/character/sprite/transformId",schemaPath:"#/properties/character/properties/sprite/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}if(l.items!==void 0){let u=l.items;if(Array.isArray(u)){let c=u.length;for(let p=0;p<c;p++){let m=u[p];if(m&&typeof m=="object"&&!Array.isArray(m)){if(m.id===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[d]:t.push(d),s++}if(m.resourceId===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[d]:t.push(d),s++}for(let d in m)if(!(d==="id"||d==="resourceId"||d==="animationName"||d==="animationSpeed"||d==="loop")){let f={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(m.id!==void 0&&typeof m.id!="string"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(m.resourceId!==void 0&&typeof m.resourceId!="string"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(m.animationName!==void 0&&typeof m.animationName!="string"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(m.animationSpeed!==void 0&&typeof m.animationSpeed!="number"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(m.loop!==void 0&&typeof m.loop!="boolean"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let c={instancePath:r+"/character/sprite/items",schemaPath:"#/properties/character/properties/sprite/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[c]:t.push(c),s++}}l.animations!==void 0&&(ie(l.animations,{instancePath:r+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let u={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r+"/character",schemaPath:"#/properties/character/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.clear!==void 0&&typeof e.clear!="boolean"){let i={instancePath:r+"/clear",schemaPath:"#/properties/clear/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.clearPage!==void 0&&typeof e.clearPage!="boolean"){let i={instancePath:r+"/clearPage",schemaPath:"#/properties/clearPage/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Wn.errors=t,s===0}function qu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Wn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Wn.errors:t.concat(Wn.errors),s=t.length),qu.errors=t,s===0}var Vu=Fu;function Kn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0&&typeof e.id!="string"){let i={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.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 u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.variableId===void 0){let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/required",keyword:"required",params:{missingProperty:"variableId"},message:"must have required property 'variableId'"};t===null?t=[c]:t.push(c),s++}for(let c in u)if(!(c==="variableId"||c==="required"||c==="trim"||c==="placeholder"||c==="multiline"||c==="maxLength")){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(u.variableId!==void 0&&typeof u.variableId!="string"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}if(u.required!==void 0&&typeof u.required!="boolean"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}if(u.trim!==void 0&&typeof u.trim!="boolean"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}if(u.placeholder!==void 0&&typeof u.placeholder!="string"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}if(u.multiline!==void 0&&typeof u.multiline!="boolean"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}if(u.maxLength!==void 0){let c=u.maxLength;if(!(typeof c=="number"&&!(c%1)&&!isNaN(c))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}if(typeof c=="number"&&(c<0||isNaN(c))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}else{let l={instancePath:r+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.submitActions!==void 0){let i=e.submitActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/submitActions",schemaPath:"#/properties/submitActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.cancelActions!==void 0){let i=e.cancelActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/cancelActions",schemaPath:"#/properties/cancelActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Kn.errors=t,s===0}function Fu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Kn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Kn.errors:t.concat(Kn.errors),s=t.length),Fu.errors=t,s===0}var Uu=Bu;function Jn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Jn.errors=t,s===0}function Bu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Jn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Jn.errors:t.concat(Jn.errors),s=t.length),Bu.errors=t,s===0}var zu=Yu;function Qn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(Ne(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),e.animations!==void 0&&(ie(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Qn.errors=t,s===0}function Yu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Qn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Qn.errors:t.concat(Qn.errors),s=t.length),Yu.errors=t,s===0}var Gu=Hu;var KI={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"]},sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}}},required:["id","sounds"],additionalProperties:!1}}},allOf:[{not:{required:["items","channels"]}}],additionalProperties:!1};function Zn(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let c;if(e.items===void 0&&(c="items")||e.channels===void 0&&(c="channels")){let p={};t===null?t=[p]:t.push(p),s++}}var u=l===s;if(u){let c={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[c]:t.push(c),s++}else s=i,t!==null&&(i?t.length=i:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let c in e)if(!(c==="items"||c==="channels")){let p={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(e.items!==void 0){let c=e.items;if(Array.isArray(c)){let p=c.length;for(let m=0;m<p;m++)Te(c[m],{instancePath:r+"/items/"+m,parentData:c,parentDataProperty:m,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let p={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}if(e.channels!==void 0){let c=e.channels;if(Array.isArray(c)){let p=c.length;for(let m=0;m<p;m++){let d=c[m];if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.id===void 0){let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[f]:t.push(f),s++}if(d.sounds===void 0){let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[f]:t.push(f),s++}for(let f in d)if(!(f==="id"||f==="volume"||f==="muted"||f==="pan"||f==="loop"||f==="interruption"||f==="sounds")){let y={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(d.id!==void 0){let f=d.id;if(typeof f=="string"){if(je(f)<1){let y={instancePath:r+"/channels/"+m+"/id",schemaPath:"#/properties/channels/items/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/id",schemaPath:"#/properties/channels/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}}if(d.volume!==void 0){let f=d.volume;if(typeof f=="number"){if(f>100||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[y]:t.push(y),s++}if(f<0||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/volume",schemaPath:"#/properties/channels/items/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.muted!==void 0&&typeof d.muted!="boolean"){let f={instancePath:r+"/channels/"+m+"/muted",schemaPath:"#/properties/channels/items/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(d.pan!==void 0){let f=d.pan;if(typeof f=="number"){if(f>1||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(f<-1||isNaN(f)){let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+m+"/pan",schemaPath:"#/properties/channels/items/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.loop!==void 0&&typeof d.loop!="boolean"){let f={instancePath:r+"/channels/"+m+"/loop",schemaPath:"#/properties/channels/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(d.interruption!==void 0){let f=d.interruption;if(typeof f!="string"){let y={instancePath:r+"/channels/"+m+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(!(f==="immediate"||f==="loopEnd")){let y={instancePath:r+"/channels/"+m+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:KI.properties.channels.items.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.push(y),s++}}if(d.sounds!==void 0){let f=d.sounds;if(Array.isArray(f)){let y=f.length;for(let g=0;g<y;g++)Te(f[g],{instancePath:r+"/channels/"+m+"/sounds/"+g,parentData:f,parentDataProperty:g,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let y={instancePath:r+"/channels/"+m+"/sounds",schemaPath:"#/properties/channels/items/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[y]:t.push(y),s++}}}else{let f={instancePath:r+"/channels/"+m,schemaPath:"#/properties/channels/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r+"/channels",schemaPath:"#/properties/channels/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}return Zn.errors=t,s===0}function Hu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Zn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Zn.errors:t.concat(Zn.errors),s=t.length),Hu.errors=t,s===0}var Xu=Wu;var Au={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"},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"},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"]}}],additionalProperties:!1}}},additionalProperties:!1};function es(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=s;if(typeof e!="string"){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}var c=u===s;if(l=l||c,!l){let p=s;if(Array.isArray(e)){let d=e.length;for(let f=0;f<d;f++){let y=e[f];if(y&&typeof y=="object"&&!Array.isArray(y)){if(y.text!==void 0&&typeof y.text!="string"){let g={instancePath:r+"/"+f+"/text",schemaPath:"#/anyOf/1/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.push(g),s++}if(y.textStyleId!==void 0&&typeof y.textStyleId!="string"){let g={instancePath:r+"/"+f+"/textStyleId",schemaPath:"#/anyOf/1/items/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.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:r+"/"+f+"/furigana/text",schemaPath:"#/anyOf/1/items/properties/furigana/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(g.textStyleId!==void 0&&typeof g.textStyleId!="string"){let h={instancePath:r+"/"+f+"/furigana/textStyleId",schemaPath:"#/anyOf/1/items/properties/furigana/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/"+f+"/furigana",schemaPath:"#/anyOf/1/items/properties/furigana/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}}}else{let g={instancePath:r+"/"+f,schemaPath:"#/anyOf/1/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),s++}var c=p===s;l=l||c}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return es.errors=t,s===0}function rs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=s,u=s,c=!1,p=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let w;if(e.id===void 0&&(w="id")){let b={};t===null?t=[b]:t.push(b),s++}}var m=p===s;if(c=c||m,!c){let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.type===void 0&&(E="type")){let k={};t===null?t=[k]:t.push(k),s++}}var m=w===s;if(c=c||m,!c){let E=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.resourceId===void 0&&(v="resourceId")){let x={};t===null?t=[x]:t.push(x),s++}}var m=E===s;if(c=c||m,!c){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let $;if(e.transformId===void 0&&($="transformId")){let T={};t===null?t=[T]:t.push(T),s++}}var m=v===s;if(c=c||m,!c){let $=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.x===void 0&&(S="x")){let D={};t===null?t=[D]:t.push(D),s++}}var m=$===s;if(c=c||m,!c){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let U;if(e.y===void 0&&(U="y")){let le={};t===null?t=[le]:t.push(le),s++}}var m=S===s;if(c=c||m,!c){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let z;if(e.anchorX===void 0&&(z="anchorX")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var m=U===s;if(c=c||m,!c){let z=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let N;if(e.anchorY===void 0&&(N="anchorY")){let se={};t===null?t=[se]:t.push(se),s++}}var m=z===s;if(c=c||m,!c){let N=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let X;if(e.scaleX===void 0&&(X="scaleX")){let V={};t===null?t=[V]:t.push(V),s++}}var m=N===s;if(c=c||m,!c){let X=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let H;if(e.scaleY===void 0&&(H="scaleY")){let Q={};t===null?t=[Q]:t.push(Q),s++}}var m=X===s;if(c=c||m,!c){let H=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ne;if(e.rotation===void 0&&(ne="rotation")){let fe={};t===null?t=[fe]:t.push(fe),s++}}var m=H===s;if(c=c||m,!c){let ne=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Z;if(e.originX===void 0&&(Z="originX")){let O={};t===null?t=[O]:t.push(O),s++}}var m=ne===s;if(c=c||m,!c){let Z=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let _;if(e.originY===void 0&&(_="originY")){let F={};t===null?t=[F]:t.push(F),s++}}var m=Z===s;if(c=c||m,!c){let _=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let te;if(e.layer===void 0&&(te="layer")){let he={};t===null?t=[he]:t.push(he),s++}}var m=_===s;if(c=c||m,!c){let te=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Pe;if(e.opacity===void 0&&(Pe="opacity")){let ye={};t===null?t=[ye]:t.push(ye),s++}}var m=te===s;if(c=c||m,!c){let Pe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ue;if(e.blur===void 0&&(ue="blur")){let Er={};t===null?t=[Er]:t.push(Er),s++}}var m=Pe===s;if(c=c||m,!c){let ue=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let cr;if(e.animations===void 0&&(cr="animations")){let Xt={};t===null?t=[Xt]:t.push(Xt),s++}}var m=ue===s;c=c||m}}}}}}}}}}}}}}}}if(c)s=u,t!==null&&(u?t.length=u:t=null);else{let w={};t===null?t=[w]:t.push(w),s++}var d=l===s;if(d){let w={instancePath:r,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[w]:t.push(w),s++}else s=i,t!==null&&(i?t.length=i:t=null);let f=s,y=!1,g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.content===void 0){let w={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};t===null?t=[w]:t.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:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};t===null?t=[E]:t.push(E),s++}var h=w===s;y=y||h}if(y)s=f,t!==null&&(f?t.length=f:t=null);else{let w={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[w]:t.push(w),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(es(e.content,{instancePath:r+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(t=t===null?es.errors:t.concat(es.errors),s=t.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let w={instancePath:r+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[w]:t.push(w),s++}if(e.width!==void 0&&typeof e.width!="number"){let w={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}if(e.height!==void 0&&typeof e.height!="number"){let w={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[w]:t.push(w),s++}return rs.errors=t,s===0}function ts(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let u={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(e.items!==void 0){let l=e.items;if(Array.isArray(l)){let u=l.length;for(let c=0;c<u;c++){let p=l[c],m=s,d=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let f;if(p.resourceId===void 0&&(f="resourceId")||p.text===void 0&&(f="text")){let y={};t===null?t=[y]:t.push(y),s++}}var i=d===s;if(i){let f={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[f]:t.push(f),s++}else s=m,t!==null&&(m?t.length=m:t=null);if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let f={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[f]:t.push(f),s++}for(let f in p)if(!ar.call(Au.properties.items.items.properties,f)){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(p.id!==void 0&&typeof p.id!="string"){let f={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.animationName!==void 0&&typeof p.animationName!="string"){let f={instancePath:r+"/items/"+c+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.animationSpeed!==void 0&&typeof p.animationSpeed!="number"){let f={instancePath:r+"/items/"+c+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.resourceId!==void 0&&typeof p.resourceId!="string"){let f={instancePath:r+"/items/"+c+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.text!==void 0&&(rs(p.text,{instancePath:r+"/items/"+c+"/text",parentData:p,parentDataProperty:"text",rootData:a})||(t=t===null?rs.errors:t.concat(rs.errors),s=t.length)),p.transformId!==void 0&&typeof p.transformId!="string"){let f={instancePath:r+"/items/"+c+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(p.x!==void 0&&typeof p.x!="number"){let f={instancePath:r+"/items/"+c+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.y!==void 0&&typeof p.y!="number"){let f={instancePath:r+"/items/"+c+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let f={instancePath:r+"/items/"+c+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let f={instancePath:r+"/items/"+c+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let f={instancePath:r+"/items/"+c+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let f={instancePath:r+"/items/"+c+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let f={instancePath:r+"/items/"+c+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let f={instancePath:r+"/items/"+c+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let f={instancePath:r+"/items/"+c+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),s++}if(p.layer!==void 0){let f=p.layer;if(typeof f!="number"){let y={instancePath:r+"/items/"+c+"/layer",schemaPath:"#/properties/items/items/properties/layer/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(!(f===10||f===30||f===50||f===70||f===90)){let y={instancePath:r+"/items/"+c+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:Au.properties.items.items.properties.layer.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.push(y),s++}}if(p.opacity!==void 0){let f=p.opacity;if(typeof f=="number"){if(f>1||isNaN(f)){let y={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(f<0||isNaN(f)){let y={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/items/"+c+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}p.blur!==void 0&&(Ne(p.blur,{instancePath:r+"/items/"+c+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)),p.animations!==void 0&&(ie(p.animations,{instancePath:r+"/items/"+c+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?ie.errors:t.concat(ie.errors),s=t.length))}else{let f={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let u={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return ts.errors=t,s===0}function Wu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ts(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ts.errors:t.concat(ts.errors),s=t.length),Wu.errors=t,s===0}var Ku=Ju;var JI={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 ns(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.resourceId===void 0){let h={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[h]:t.push(h),s++}var c=u===s;if(l=l||c,!l){let h=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.sounds===void 0){let b={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[b]:t.push(b),s++}var c=h===s;l=l||c}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let h={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[h]:t.push(h),s++}let p=s,m=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={};t===null?t=[w]:t.push(w),s++}}var d=m===s;if(d){let h={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=p,t!==null&&(p?t.length=p:t=null);let f=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={};t===null?t=[w]:t.push(w),s++}}var g=y===s;if(g){let h={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=f,t!==null&&(f?t.length=f:t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};t===null?t=[w]:t.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++)Te(h[b],{instancePath:r+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(t=t===null?Te.errors:t.concat(Te.errors),s=t.length)}else{let w={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[w]:t.push(w),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let h={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(e.volume!==void 0){let h=e.volume;if(typeof h=="number"){if(h>100||isNaN(h)){let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[w]:t.push(w),s++}if(h<0||isNaN(h)){let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let h={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.pan!==void 0){let h=e.pan;if(typeof h=="number"){if(h>1||isNaN(h)){let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[w]:t.push(w),s++}if(h<-1||isNaN(h)){let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let h={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.interruption!==void 0){let h=e.interruption;if(typeof h!="string"){let w={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[w]:t.push(w),s++}if(!(h==="immediate"||h==="loopEnd")){let w={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:JI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[w]:t.push(w),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let w={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}}else{let h={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}return ns.errors=t,s===0}function Ju(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ns(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ns.errors:t.concat(ns.errors),s=t.length),Ju.errors=t,s===0}var Qu=Zu;var QI={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 ss(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="number"){let g={};t===null?t=[g]:t.push(g),s++}var c=u===s;if(s=i,t!==null&&(i?t.length=i:t=null),c){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.target===void 0){let w={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};t===null?t=[w]:t.push(w),s++}var c=g===s;l=c}if(!l){let g={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}let p=s,m=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="boolean"){let g={};t===null?t=[g]:t.push(g),s++}var f=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),f){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 k={};t===null?t=[k]:t.push(k),s++}}var y=w===s;if(y){let E={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[E]:t.push(E),s++}else s=h,t!==null&&(h?t.length=h:t=null);var f=g===s;m=f}if(!m){let g={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[g]:t.push(g),s++}if(e.name===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};t===null?t=[g]:t.push(g),s++}if(e.description===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"description"},message:"must have required property 'description'"};t===null?t=[g]:t.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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};t===null?t=[h]:t.push(h),s++}if(e.type!==void 0){let g=e.type;if(typeof g!="string"){let h={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(!(g==="boolean"||g==="number")){let h={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:QI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[h]:t.push(h),s++}}if(e.target!==void 0){let g=e.target;if(!(typeof g=="number"&&!(g%1)&&!isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[h]:t.push(h),s++}if(typeof g=="number"&&(g<1||isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[h]:t.push(h),s++}}if(e.name!==void 0){let g=e.name;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.description!==void 0){let g=e.description;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/description",schemaPath:"#/properties/description/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedName!==void 0){let g=e.lockedName;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedDescription!==void 0){let g=e.lockedDescription;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.hidden!==void 0&&typeof e.hidden!="boolean"){let g={instancePath:r+"/hidden",schemaPath:"#/properties/hidden/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}return ss.errors=t,s===0}function Zu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ss(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ss.errors:t.concat(ss.errors),s=t.length),Zu.errors=t,s===0}var ep=rp;var ZI={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 ew={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 Ur(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};t===null?t=[i]:t.push(i),s++}if(e.duration===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="value"||i==="duration"||i==="easing"||i==="relative")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.value!==void 0&&typeof e.value!="number"){let i={instancePath:r+"/value",schemaPath:"#/properties/value/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.duration!==void 0&&typeof e.duration!="number"){let i={instancePath:r+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.easing!==void 0){let i=e.easing;if(typeof i!="string"){let l={instancePath:r+"/easing",schemaPath:"#/properties/easing/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.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:r+"/easing",schemaPath:"#/properties/easing/enum",keyword:"enum",params:{allowedValues:ew.properties.easing.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.relative!==void 0&&typeof e.relative!="boolean"){let i={instancePath:r+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ur.errors=t,s===0}function K(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let u={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[u]:t.push(u),s++}let l=i.length;for(let u=0;u<l;u++)Ur(i[u],{instancePath:r+"/keyframes/"+u,parentData:i,parentDataProperty:u,rootData:a})||(t=t===null?Ur.errors:t.concat(Ur.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return K.errors=t,s===0}function os(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="alpha"||i==="x"||i==="y"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.alpha!==void 0&&(K(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.x!==void 0&&(K(e.x,{instancePath:r+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.y!==void 0&&(K(e.y,{instancePath:r+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleX!==void 0&&(K(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleY!==void 0&&(K(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.rotation!==void 0&&(K(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return os.errors=t,s===0}function is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="translateX"||i==="translateY"||i==="alpha"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.translateX!==void 0&&(K(e.translateX,{instancePath:r+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.translateY!==void 0&&(K(e.translateY,{instancePath:r+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.alpha!==void 0&&(K(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleX!==void 0&&(K(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.scaleY!==void 0&&(K(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length)),e.rotation!==void 0&&(K(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?K.errors:t.concat(K.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return is.errors=t,s===0}function Fr(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.tween===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="tween"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.tween!==void 0&&(is(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?is.errors:t.concat(is.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Fr.errors=t,s===0}var Fn={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"]}}]},rw={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1};function as(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="texture"||i==="channel"||i==="invert")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.texture!==void 0&&typeof e.texture!="string"){let i={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.channel!==void 0){let i=e.channel;if(typeof i!="string"){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="red"||i==="green"||i==="blue"||i==="alpha")){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:rw.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.invert!==void 0&&typeof e.invert!="boolean"){let i={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return as.errors=t,s===0}function ls(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let u={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[u]:t.push(u),s++}let l=i.length;for(let u=0;u<l;u++)Ur(i[u],{instancePath:r+"/keyframes/"+u,parentData:i,parentDataProperty:u,rootData:a})||(t=t===null?Ur.errors:t.concat(Ur.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ls.errors=t,s===0}function cs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="single"){let b={};t===null?t=[b]:t.push(b),s++}var c=u===s;if(s=i,t!==null&&(i?t.length=i:t=null),c){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.texture===void 0){let k={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[k]:t.push(k),s++}var c=b===s;l=c}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let p=s,m=!0,d=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.kind!==void 0&&e.kind!=="sequence"){let b={};t===null?t=[b]:t.push(b),s++}var f=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),f){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textures===void 0){let k={instancePath:r,schemaPath:"#/allOf/1/then/required",keyword:"required",params:{missingProperty:"textures"},message:"must have required property 'textures'"};t===null?t=[k]:t.push(k),s++}var f=b===s;m=f}if(!m){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.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={};t===null?t=[b]:t.push(b),s++}var w=h===s;if(s=y,t!==null&&(y?t.length=y:t=null),w){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.items===void 0){let k={instancePath:r,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"items"},message:"must have required property 'items'"};t===null?t=[k]:t.push(k),s++}var w=b===s;g=w}if(!g){let b={instancePath:r,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};t===null?t=[b]:t.push(b),s++}for(let b in e)if(!ar.call(Fn.properties,b)){let E={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let E={instancePath:r+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let E={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:Fn.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.texture!==void 0&&typeof e.texture!="string"){let b={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.textures!==void 0){let b=e.textures;if(Array.isArray(b)){if(b.length<1){let k={instancePath:r+"/textures",schemaPath:"#/properties/textures/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[k]:t.push(k),s++}let E=b.length;for(let k=0;k<E;k++)if(typeof b[k]!="string"){let v={instancePath:r+"/textures/"+k,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[v]:t.push(v),s++}}else{let E={instancePath:r+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[E]:t.push(E),s++}}if(e.items!==void 0){let b=e.items;if(Array.isArray(b)){if(b.length<1){let k={instancePath:r+"/items",schemaPath:"#/properties/items/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[k]:t.push(k),s++}let E=b.length;for(let k=0;k<E;k++)as(b[k],{instancePath:r+"/items/"+k,parentData:b,parentDataProperty:k,rootData:a})||(t=t===null?as.errors:t.concat(as.errors),s=t.length)}else{let E={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[E]:t.push(E),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let E={instancePath:r+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let E={instancePath:r+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:Fn.properties.combine.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let E={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let E={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:Fn.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.softness!==void 0&&typeof e.softness!="number"){let b={instancePath:r+"/softness",schemaPath:"#/properties/softness/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(e.invert!==void 0&&typeof e.invert!="boolean"){let b={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}if(e.sample!==void 0&&typeof e.sample!="string"){let b={instancePath:r+"/sample",schemaPath:"#/properties/sample/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}e.progress!==void 0&&(ls(e.progress,{instancePath:r+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(t=t===null?ls.errors:t.concat(ls.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return cs.errors=t,s===0}function us(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!0,u=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="update"){let b={};t===null?t=[b]:t.push(b),s++}var c=u===s;if(s=i,t!==null&&(i?t.length=i:t=null),c){let b=s,E=s,k=s,v=s,x=!1,$=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.prev===void 0&&(S="prev")){let D={};t===null?t=[D]:t.push(D),s++}}var p=$===s;if(x=x||p,!x){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let U;if(e.next===void 0&&(U="next")){let le={};t===null?t=[le]:t.push(le),s++}}var p=S===s;if(x=x||p,!x){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let z;if(e.mask===void 0&&(z="mask")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var p=U===s;x=x||p}}if(x)s=v,t!==null&&(v?t.length=v:t=null);else{let S={};t===null?t=[S]:t.push(S),s++}var m=k===s;if(m){let S={instancePath:r,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[S]:t.push(S),s++}else s=E,t!==null&&(E?t.length=E:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let S={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[S]:t.push(S),s++}var c=b===s;l=c}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}let d=s,f=!0,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.type!==void 0&&e.type!=="transition"){let b={};t===null?t=[b]:t.push(b),s++}var g=y===s;if(s=d,t!==null&&(d?t.length=d:t=null),g){let b=s,E=s,k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.tween===void 0&&(S="tween")){let D={};t===null?t=[D]:t.push(D),s++}}var h=k===s;if(h){let S={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[S]:t.push(S),s++}else s=E,t!==null&&(E?t.length=E:t=null);let v=s,x=!1,$=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let S={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};t===null?t=[S]:t.push(S),s++}var w=$===s;if(x=x||w,!x){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let U={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};t===null?t=[U]:t.push(U),s++}var w=S===s;if(x=x||w,!x){let U=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let z={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};t===null?t=[z]:t.push(z),s++}var w=U===s;x=x||w}}if(x)s=v,t!==null&&(v?t.length=v:t=null);else{let S={instancePath:r,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[S]:t.push(S),s++}var g=b===s;f=g}if(!f){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[b]:t.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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(e.name!==void 0&&typeof e.name!="string"){let b={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.type!==void 0){let b=e.type;if(typeof b!="string"){let E={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="update"||b==="transition")){let E={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:ZI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.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 k={instancePath:r+"/complete/payload",schemaPath:"#/properties/complete/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}}else{let E={instancePath:r+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}e.tween!==void 0&&(os(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?os.errors:t.concat(os.errors),s=t.length)),e.prev!==void 0&&(Fr(e.prev,{instancePath:r+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.errors),s=t.length)),e.next!==void 0&&(Fr(e.next,{instancePath:r+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.errors),s=t.length)),e.mask!==void 0&&(cs(e.mask,{instancePath:r+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(t=t===null?cs.errors:t.concat(cs.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return us.errors=t,s===0}function rp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return us(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?us.errors:t.concat(us.errors),s=t.length),rp.errors=t,s===0}var tp=np;function ps(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="name"||i==="nameVariableId")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.name!==void 0&&typeof e.name!="string"){let i={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.nameVariableId!==void 0){let i=e.nameVariableId;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ps.errors=t,s===0}function np(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ps(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ps.errors:t.concat(ps.errors),s=t.length),np.errors=t,s===0}var sp=op;var tw=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function ds(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.hex===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"hex"},message:"must have required property 'hex'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="hex"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.hex!==void 0){let i=e.hex;if(typeof i=="string"){if(!tw.test(i)){let l={instancePath:r+"/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})$"'};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/hex",schemaPath:"#/properties/hex/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ds.errors=t,s===0}function op(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ds(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ds.errors:t.concat(ds.errors),s=t.length),op.errors=t,s===0}var ip=ap;function fs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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 u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.actions!==void 0){let c=u.actions;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(u.payload!==void 0){let c=u.payload;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(u.keydown!==void 0){let c=u.keydown;if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.payload!==void 0){let p=c.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let m={instancePath:r+"/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"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(u.keyup!==void 0){let c=u.keyup;if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.payload!==void 0){let p=c.payload;if(!(p&&typeof p=="object"&&!Array.isArray(p))){let m={instancePath:r+"/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"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyboard/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}else{let l={instancePath:r+"/keyboard",schemaPath:"#/properties/keyboard/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.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 u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.actions!==void 0){let c=u.actions;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(u.payload!==void 0){let c=u.payload;if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}}else{let c={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyup/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}else{let l={instancePath:r+"/keyup",schemaPath:"#/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.elements!==void 0){let i=e.elements;if(Array.isArray(i)){let l=i.length;for(let u=0;u<l;u++){let c=i[u];if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/elements/"+u,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return fs.errors=t,s===0}function ap(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return fs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?fs.errors:t.concat(fs.errors),s=t.length),ap.errors=t,s===0}var lp=cp;function ms(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ms.errors=t,s===0}function cp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ms(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ms.errors:t.concat(ms.errors),s=t.length),cp.errors=t,s===0}var up=pp;function ys(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ys.errors=t,s===0}function pp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ys(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ys.errors:t.concat(ys.errors),s=t.length),pp.errors=t,s===0}var dp=fp;function hs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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 u=0;u<l;u++){let c=i[u];if(!(c&&typeof c=="object"&&!Array.isArray(c))){let p={instancePath:r+"/elements/"+u,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return hs.errors=t,s===0}function fp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return hs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?hs.errors:t.concat(hs.errors),s=t.length),fp.errors=t,s===0}var mp=yp;function gs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,u=null,c=s,p=s,m=s,d=s,f=!1,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.count===void 0&&(k="count")){let v={};t===null?t=[v]:t.push(v),s++}}var g=y===s;if(f=f||g,!f){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.texture===void 0&&(x="texture")){let $={};t===null?t=[$]:t.push($),s++}}var g=k===s;if(f=f||g,!f){let x=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let T;if(e.behaviors===void 0&&(T="behaviors")){let S={};t===null?t=[S]:t.push(S),s++}}var g=x===s;if(f=f||g,!f){let T=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let D;if(e.emitter===void 0&&(D="emitter")){let U={};t===null?t=[U]:t.push(U),s++}}var g=T===s;f=f||g}}}if(f)s=d,t!==null&&(d?t.length=d:t=null);else{let k={};t===null?t=[k]:t.push(k),s++}var h=m===s;if(h){let k={instancePath:r,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[k]:t.push(k),s++}else s=p,t!==null&&(p?t.length=p:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.modules===void 0){let k={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"modules"},message:"must have required property 'modules'"};t===null?t=[k]:t.push(k),s++}var b=c===s;b&&(l=!0,u=0);let w=s;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let k={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[k]:t.push(k),s++}if(e.behaviors===void 0){let k={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"behaviors"},message:"must have required property 'behaviors'"};t===null?t=[k]:t.push(k),s++}if(e.emitter===void 0){let k={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"emitter"},message:"must have required property 'emitter'"};t===null?t=[k]:t.push(k),s++}}var b=w===s;if(b&&l?(l=!1,u=[u,1]):b&&(l=!0,u=1),l)s=i,t!==null&&(i?t.length=i:t=null);else{let k={instancePath:r,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:u},message:"must match exactly one schema in oneOf"};t===null?t=[k]:t.push(k),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.width===void 0){let k={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[k]:t.push(k),s++}if(e.height===void 0){let k={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[k]:t.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 v={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};t===null?t=[v]:t.push(v),s++}if(e.width!==void 0){let k=e.width;if(typeof k=="number"){if(k<=0||isNaN(k)){let v={instancePath:r+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[v]:t.push(v),s++}}else{let v={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[v]:t.push(v),s++}}if(e.height!==void 0){let k=e.height;if(typeof k=="number"){if(k<=0||isNaN(k)){let v={instancePath:r+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[v]:t.push(v),s++}}else{let v={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[v]:t.push(v),s++}}if(e.seed!==void 0&&typeof e.seed!="number"){let k={instancePath:r+"/seed",schemaPath:"#/properties/seed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.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 v={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};t===null?t=[v]:t.push(v),s++}if(k.appearance===void 0){let v={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};t===null?t=[v]:t.push(v),s++}for(let v in k)if(!(v==="emission"||v==="movement"||v==="appearance"||v==="bounds")){let x={instancePath:r+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(k.emission!==void 0){let v=k.emission;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}if(k.movement!==void 0){let v=k.movement;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}if(k.appearance!==void 0){let v=k.appearance;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}if(k.bounds!==void 0){let v=k.bounds;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let x={instancePath:r+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}}else{let v={instancePath:r+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}}if(e.count!==void 0){let k=e.count;if(!(typeof k=="number"&&!(k%1)&&!isNaN(k))){let v={instancePath:r+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[v]:t.push(v),s++}if(typeof k=="number"&&(k<1||isNaN(k))){let v={instancePath:r+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[v]:t.push(v),s++}}if(e.texture!==void 0){let k=e.texture,v=s,x=!1,$=null,T=s;if(typeof k=="string"){if(je(k)<1){let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[D]:t.push(D),s++}}else{let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[D]:t.push(D),s++}var E=T===s;E&&(x=!0,$=0);let S=s;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[D]:t.push(D),s++}var E=S===s;if(E&&x?(x=!1,$=[$,1]):E&&(x=!0,$=1),x)s=v,t!==null&&(v?t.length=v:t=null);else{let D={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:$},message:"must match exactly one schema in oneOf"};t===null?t=[D]:t.push(D),s++}}if(e.behaviors!==void 0){let k=e.behaviors;if(Array.isArray(k)){if(k.length<1){let x={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[x]:t.push(x),s++}let v=k.length;for(let x=0;x<v;x++){let $=k[x];if($&&typeof $=="object"&&!Array.isArray($)){if($.type===void 0){let T={instancePath:r+"/behaviors/"+x,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[T]:t.push(T),s++}for(let T in $)if(!(T==="type"||T==="config")){let S={instancePath:r+"/behaviors/"+x,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:T},message:"must NOT have additional properties"};t===null?t=[S]:t.push(S),s++}if($.type!==void 0){let T=$.type;if(typeof T=="string"){if(je(T)<1){let S={instancePath:r+"/behaviors/"+x+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[S]:t.push(S),s++}}else{let S={instancePath:r+"/behaviors/"+x+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[S]:t.push(S),s++}}if($.config!==void 0){let T=$.config;if(!(T&&typeof T=="object"&&!Array.isArray(T))){let S={instancePath:r+"/behaviors/"+x+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}}else{let T={instancePath:r+"/behaviors/"+x,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[T]:t.push(T),s++}}}else{let v={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[v]:t.push(v),s++}}if(e.emitter!==void 0){let k=e.emitter;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.lifetime===void 0){let v={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};t===null?t=[v]:t.push(v),s++}if(k.lifetime!==void 0){let v=k.lifetime;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.min===void 0){let x={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};t===null?t=[x]:t.push(x),s++}if(v.max===void 0){let x={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};t===null?t=[x]:t.push(x),s++}if(v.min!==void 0){let x=v.min;if(typeof x=="number"){if(x<0||isNaN(x)){let $={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[$]:t.push($),s++}}else{let $={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[$]:t.push($),s++}}if(v.max!==void 0){let x=v.max;if(typeof x=="number"){if(x<0||isNaN(x)){let $={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[$]:t.push($),s++}}else{let $={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[$]:t.push($),s++}}}else{let x={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}}else{let v={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}}}else{let k={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}return gs.errors=t,s===0}function yp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return gs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?gs.errors:t.concat(gs.errors),s=t.length),yp.errors=t,s===0}var hp=gp;var Pu={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 bs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!ar.call(Pu.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:Pu.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return bs.errors=t,s===0}function gp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return bs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?bs.errors:t.concat(bs.errors),s=t.length),gp.errors=t,s===0}var bp=Ip;var nw=new RegExp("^.+$","u");function Is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.jsonData===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"jsonData"},message:"must have required property 'jsonData'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="jsonData"||i==="width"||i==="height"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.jsonData!==void 0){let i=e.jsonData;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/jsonData",schemaPath:"#/properties/jsonData/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.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(nw.test(l)){let u=i[l];if(u&&typeof u=="object"&&!Array.isArray(u)){if(u.frames===void 0){let c={instancePath:r+"/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'"};t===null?t=[c]:t.push(c),s++}for(let c in u)if(!(c==="frames"||c==="animationSpeed"||c==="loop")){let p={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(u.frames!==void 0){let c=u.frames;if(Array.isArray(c)){let p=c.length;for(let m=0;m<p;m++)if(typeof c[m]!="number"){let d={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames/"+m,schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/items/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[d]:t.push(d),s++}}else{let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(u.animationSpeed!==void 0&&typeof u.animationSpeed!="number"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}if(u.loop!==void 0&&typeof u.loop!="boolean"){let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/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"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r+"/animations",schemaPath:"#/properties/animations/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Is.errors=t,s===0}function Ip(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Is(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Is.errors:t.concat(Is.errors),s=t.length),Ip.errors=t,s===0}var wp=kp;var xu={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 ws(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fontId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontId"},message:"must have required property 'fontId'"};t===null?t=[l]:t.push(l),s++}if(e.fontSize===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontSize"},message:"must have required property 'fontSize'"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontWeight"},message:"must have required property 'fontWeight'"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontStyle"},message:"must have required property 'fontStyle'"};t===null?t=[l]:t.push(l),s++}if(e.lineHeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lineHeight"},message:"must have required property 'lineHeight'"};t===null?t=[l]:t.push(l),s++}if(e.colorId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[l]:t.push(l),s++}for(let l in e)if(!ar.call(xu.properties,l)){let u={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(e.fontId!==void 0){let l=e.fontId,u=s,c=!1,p=null,m=s;if(typeof l=="string"){if(je(l)<1){let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}var i=m===s;i&&(c=!0,p=0);let d=s;if(Array.isArray(l)){if(l.length<1){let h={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[h]:t.push(h),s++}let f=l.length;for(let h=0;h<f;h++){let w=l[h];if(typeof w=="string"){if(je(w)<1){let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.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:r+"/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)"};t===null?t=[b]:t.push(b),s++;break}h[w]=y}}}}else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}var i=d===s;if(i&&c?(c=!1,p=[p,1]):i&&(c=!0,p=1),c)s=u,t!==null&&(u?t.length=u:t=null);else{let f={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf",keyword:"oneOf",params:{passingSchemas:p},message:"must match exactly one schema in oneOf"};t===null?t=[f]:t.push(f),s++}}if(e.colorId!==void 0&&typeof e.colorId!="string"){let l={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.colorAlpha!==void 0&&typeof e.colorAlpha!="number"){let l={instancePath:r+"/colorAlpha",schemaPath:"#/properties/colorAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontSize!==void 0&&typeof e.fontSize!="number"){let l={instancePath:r+"/fontSize",schemaPath:"#/properties/fontSize/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight!==void 0&&typeof e.fontWeight!="string"){let l={instancePath:r+"/fontWeight",schemaPath:"#/properties/fontWeight/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle!==void 0){let l=e.fontStyle;if(typeof l!="string"){let u={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}if(!(l==="normal"||l==="italic"||l==="oblique")){let u={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/enum",keyword:"enum",params:{allowedValues:xu.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};t===null?t=[u]:t.push(u),s++}}if(e.lineHeight!==void 0&&typeof e.lineHeight!="number"){let l={instancePath:r+"/lineHeight",schemaPath:"#/properties/lineHeight/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.align!==void 0&&typeof e.align!="string"){let l={instancePath:r+"/align",schemaPath:"#/properties/align/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.wordWrap!==void 0&&typeof e.wordWrap!="boolean"){let l={instancePath:r+"/wordWrap",schemaPath:"#/properties/wordWrap/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.breakWords!==void 0&&typeof e.breakWords!="boolean"){let l={instancePath:r+"/breakWords",schemaPath:"#/properties/breakWords/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.wordWrapWidth!==void 0&&typeof e.wordWrapWidth!="number"){let l={instancePath:r+"/wordWrapWidth",schemaPath:"#/properties/wordWrapWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeColorId!==void 0&&typeof e.strokeColorId!="string"){let l={instancePath:r+"/strokeColorId",schemaPath:"#/properties/strokeColorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.strokeAlpha!==void 0&&typeof e.strokeAlpha!="number"){let l={instancePath:r+"/strokeAlpha",schemaPath:"#/properties/strokeAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeWidth!==void 0&&typeof e.strokeWidth!="number"){let l={instancePath:r+"/strokeWidth",schemaPath:"#/properties/strokeWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.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 u={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[u]:t.push(u),s++}for(let u in l)if(!(u==="colorId"||u==="alpha"||u==="blur"||u==="offsetX"||u==="offsetY")){let c={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(l.colorId!==void 0){let u=l.colorId;if(typeof u=="string"){if(je(u)<1){let c={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}}if(l.alpha!==void 0){let u=l.alpha;if(typeof u=="number"){if(u>1||isNaN(u)){let c={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[c]:t.push(c),s++}if(u<0||isNaN(u)){let c={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}}if(l.blur!==void 0){let u=l.blur;if(typeof u=="number"){if(u<0||isNaN(u)){let c={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}}if(l.offsetX!==void 0&&typeof l.offsetX!="number"){let u={instancePath:r+"/shadow/offsetX",schemaPath:"#/properties/shadow/properties/offsetX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}if(l.offsetY!==void 0&&typeof l.offsetY!="number"){let u={instancePath:r+"/shadow/offsetY",schemaPath:"#/properties/shadow/properties/offsetY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return ws.errors=t,s===0}function kp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ws(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ws.errors:t.concat(ws.errors),s=t.length),kp.errors=t,s===0}var vp=Ap;var sw={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 ks(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!ar.call(sw.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.x!==void 0){let i=e.x;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.y!==void 0){let i=e.y;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ks.errors=t,s===0}function Ap(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ks(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ks.errors:t.concat(ks.errors),s=t.length),Ap.errors=t,s===0}var Pp=xp;function vs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return vs.errors=t,s===0}function xp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return vs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?vs.errors:t.concat(vs.errors),s=t.length),xp.errors=t,s===0}var zt=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Bt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),lr=e=>e===void 0?void 0:structuredClone(e),ow=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"}),iw=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),aw=Object.freeze({background:Eu,bgm:Ru,character:Cu,choice:_u,cleanAll:ju,control:Du,dialogue:Mu,form:Vu,layout:Uu,screen:zu,sfx:Gu,visual:Xu,voice:Ku}),lw=Object.freeze({achievement:Qu,animation:ep,character:tp,color:sp,control:ip,font:lp,image:up,layout:dp,particle:mp,sound:hp,spritesheet:bp,textStyle:wp,transform:vp,video:Pp}),cw=new Set(["files","language","patches"]),uw=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),pw=new Set(["lineId","mode","payload","type"]),dw=new Set(["mode","payload","sceneId","type"]),fw=new Set(["mode","operation","payload","resourceId","type"]),mw=new Set(["fileId","mimeType"]),B=(e,r)=>{throw new Error(`Invalid l10nData at ${e}: ${r}`)},Ye=(e,r)=>{Bt(e)||B(r,"expected an object")},Ri=(e,r)=>{Array.isArray(e)||B(r,"expected an array")},lt=(e,r)=>{(typeof e!="string"||e.length===0)&&B(r,"expected a non-empty string")},Op=(e,r)=>{typeof e!="string"&&B(r,"expected a string")},Qe=(e,r,n)=>{for(let o of Object.keys(e))r.has(o)||B(`${n}.${o}`,"unknown field")},Ze=(e,r,n)=>{for(let o of r)zt(e,o)||B(n,`missing required field "${o}"`)},yw=e=>e.replaceAll("~1","/").replaceAll("~0","~"),hw=(e,r)=>{let n=(r?.instancePath??"").split("/").slice(1).map(yw);return r?.keyword==="required"?n.push(r.params.missingProperty):r?.keyword==="additionalProperties"&&n.push(r.params.additionalProperty),n.reduce((o,a)=>/^\d+$/.test(a)?`${o}[${a}]`:`${o}.${a}`,e)},gw=(e=[])=>e.filter(r=>!["anyOf","if","not","oneOf"].includes(r.keyword)).reduce((r,n)=>{if(r===void 0)return n;let o=n.instancePath.split("/").length,a=r.instancePath.split("/").length;return o>a?n:r},void 0)??e[0],Cp=({value:e,validator:r,path:n,contract:o})=>{if(r(e))return;let a=gw(r.errors);B(hw(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},As=(e,r,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||B(r,"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)=>As(o,`${r}[${a}]`,n));return}Object.entries(e).forEach(([o,a])=>As(a,`${r}.${o}`,n))}},Je=(e,r)=>{e===""&&B(r,"expected a non-empty resourceId")},bw=(e,r,n)=>{let o=(s,i)=>Je(s?.resourceId,`${i}.resourceId`),a=(s,i)=>(s??[]).forEach((l,u)=>Je(l?.resourceId,`${i}[${u}].resourceId`)),t=(s,i)=>{Je(s?.resourceId,`${i}.resourceId`),a(s?.sounds,`${i}.sounds`)};switch(e){case"background":Je(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"bgm":case"voice":t(r,n);break;case"sfx":a(r.items,`${n}.items`),(r.channels??[]).forEach((s,i)=>a(s?.sounds,`${n}.channels[${i}].sounds`));break;case"character":(r.items??[]).forEach((s,i)=>{(s.sprites??[]).forEach((l,u)=>Je(l?.resourceId,`${n}.items[${i}].sprites[${u}].resourceId`)),o(s.animations,`${n}.items[${i}].animations`)});break;case"choice":case"form":case"layout":Je(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"control":Je(r.resourceId,`${n}.resourceId`);break;case"dialogue":Je(r.ui?.resourceId,`${n}.ui.resourceId`),o(r.ui?.animations,`${n}.ui.animations`),(r.character?.sprite?.items??[]).forEach((s,i)=>Je(s?.resourceId,`${n}.character.sprite.items[${i}].resourceId`)),o(r.character?.sprite?.animations,`${n}.character.sprite.animations`);break;case"screen":o(r.animations,`${n}.animations`);break;case"visual":(r.items??[]).forEach((s,i)=>{Je(s?.resourceId,`${n}.items[${i}].resourceId`),o(s?.animations,`${n}.items[${i}].animations`)});break;default:break}},ct=(e,r)=>{lt(e,r),(e==="__proto__"||e==="constructor"||e==="prototype")&&B(r,`"${e}" is not a safe ID`)},Iw=(e,r)=>{lt(e,r),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&B(r,"must be a safe single filename")},Ut=(e,r)=>{if(Object.is(e,r))return!0;if(Array.isArray(e)||Array.isArray(r))return!Array.isArray(e)||!Array.isArray(r)?!1:e.length===r.length&&e.every((a,t)=>Ut(a,r[t]));if(!Bt(e)||!Bt(r))return!1;let n=Object.keys(e).sort(),o=Object.keys(r).sort();return Ut(n,o)&&n.every(a=>Ut(e[a],r[a]))},Ps=(e,r=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(o=>Ps(o,r,n)),r;if(!Bt(e)||n.has(e))return r;n.add(e);for(let[o,a]of Object.entries(e))o==="fileId"&&typeof a=="string"&&r.add(a),Ps(a,r,n);return r},ww=e=>{let r=new Map;for(let[n,o]of Object.entries(e?.story?.scenes??{}))for(let[a,t]of Object.entries(o?.sections??{}))for(let[s,i]of(t?.lines??[]).entries()){if(typeof i?.id!="string")continue;let l=r.get(i.id)??[];l.push({sceneId:n,sectionId:a,lineIndex:s,line:i}),r.set(i.id,l)}return r},$p=(e,r,n)=>{let o=e.get(r)??[];return o.length===0&&B(n,`lineId "${r}" does not exist in projectData`),o.length>1&&B(n,`lineId "${r}" is not globally unique in projectData`),o[0]},_p=(e,r)=>e.story.scenes[r.sceneId].sections[r.sectionId].lines[r.lineIndex],Ep=e=>({items:(e?.items??[]).map(r=>({id:r?.id,events:r?.events}))}),Sp=e=>{let r=lr(e??{});delete r.resourceId,delete r.animations;for(let n of Object.values(r.fields??{}))Bt(n)&&delete n.placeholder;return r},kw=(e,r,n,o)=>{e==="choice"&&!Ut(Ep(r),Ep(n))&&B(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Ut(Sp(r),Sp(n))&&B(o,"form behavior must remain identical; only presentation fields and placeholders may change")},vw=({patch:e,path:r,lineIndex:n})=>{Qe(e,uw,r),Ze(e,["type","lineId","actionType","payload"],r),ct(e.lineId,`${r}.lineId`),lt(e.actionType,`${r}.actionType`),Ye(e.payload,`${r}.payload`),e.mode!==void 0&&e.mode!=="replace"&&B(`${r}.mode`,'line.action supports only "replace"'),iw.has(e.actionType)||B(`${r}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=$p(n,e.lineId,`${r}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&B(`${r}.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")&&B(`${r}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),zt(e.payload,"content")&&B(`${r}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&B(`${r}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),kw(e.actionType,a,e.payload,`${r}.payload`),Cp({value:e.payload,validator:aw[e.actionType],path:`${r}.payload`,contract:`the ${e.actionType} presentation-action schema`}),As(e.payload,`${r}.payload`),bw(e.actionType,e.payload,`${r}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},Aw=(e,r)=>{Ri(e,r),e.forEach((n,o)=>{Ye(n,`${r}[${o}]`),Qe(n,new Set(["text"]),`${r}[${o}]`),Ze(n,["text"],`${r}[${o}]`),Op(n.text,`${r}[${o}].text`)})},Pw=({patch:e,path:r,lineIndex:n})=>{Qe(e,pw,r),Ze(e,["type","lineId","payload"],r),ct(e.lineId,`${r}.lineId`),Ye(e.payload,`${r}.payload`),Qe(e.payload,new Set(["content"]),`${r}.payload`),Ze(e.payload,["content"],`${r}.payload`),Aw(e.payload.content,`${r}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&B(`${r}.mode`,'line.dialogue supports only "replace"');let o=$p(n,e.lineId,`${r}.lineId`);return o.line?.actions?.dialogue===void 0&&B(`${r}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},xw=({patch:e,path:r,projectData:n})=>(Qe(e,dw,r),Ze(e,["type","mode","sceneId","payload"],r),ct(e.sceneId,`${r}.sceneId`),Ye(e.payload,`${r}.payload`),Qe(e.payload,new Set(["name"]),`${r}.payload`),Ze(e.payload,["name"],`${r}.payload`),Op(e.payload.name,`${r}.payload.name`),e.mode!=="patch"&&B(`${r}.mode`,'story.scene requires "patch"'),zt(n?.story?.scenes??{},e.sceneId)||B(`${r}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),Ew=(e,r,n)=>{Ye(r,n),["font","image","sound","spritesheet","video"].includes(e)&<(r.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(r.width)||B(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||B(`${n}.height`,"expected an integer")),e==="spritesheet"&&(Ye(r.jsonData,`${n}.jsonData`),Number.isInteger(r.width)||B(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||B(`${n}.height`,"expected an integer")),e==="color"&&(typeof r.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(r.hex))&&B(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),Cp({value:r,validator:lw[e],path:n,contract:`the resource.${e} schema`}),As(r,n)},Sw=({patch:e,path:r,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{Qe(e,fw,r),Ze(e,["type","resourceId","payload"],r),ct(e.resourceId,`${r}.resourceId`);let t=e.type.slice(9),s=ow[t];s||B(`${r}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&B(`${r}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&B(`${r}.operation`,'the only resource operation is "add"'),Ew(t,e.payload,`${r}.payload`);let i=n?.resources?.[s]??{},l=zt(i,e.resourceId);e.operation==="add"&&l&&B(`${r}.resourceId`,`cannot add existing ${t} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&B(`${r}.resourceId`,`cannot replace missing ${t} resource "${e.resourceId}"`);for(let u of Ps(e.payload))!o.has(u)&&!a.has(u)&&B(`${r}.payload`,`fileId "${u}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,path:r,patch:e}},Rp=({resources:e,collectionName:r,resourceId:n,path:o,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!zt(e?.[r]??{},n))&&B(o,`${a} resource "${n}" was not found`)},Rw=(e,r)=>{let n=lr(e);for(let a of r.patches)a.kind==="resource"&&(n.resources[a.collectionName]??={},n.resources[a.collectionName][a.patch.resourceId]=lr(a.patch.payload));let o=n.resources??{};for(let a of r.patches){if(a.patch.type!=="resource.textStyle")continue;let t=a.patch.payload,s=Array.isArray(t.fontId)?t.fontId:[t.fontId];s.forEach((i,l)=>Rp({resources:o,collectionName:"fonts",resourceId:i,path:`${a.path}.payload.fontId${s.length>1?`[${l}]`:""}`,label:"font"}));for(let[i,l]of[["colorId",t.colorId],["strokeColorId",t.strokeColorId],["shadow.colorId",t.shadow?.colorId]])Rp({resources:o,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${i}`,label:"color"})}},Ow=({patch:e,path:r,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:t})=>{if(Ye(e,r),lt(e.type,`${r}.type`),e.type==="line.action")return vw({patch:e,path:r,lineIndex:o});if(e.type==="line.dialogue")return Pw({patch:e,path:r,lineIndex:o});if(e.type==="story.scene")return xw({patch:e,path:r,projectData:n});if(e.type.startsWith("resource."))return Sw({patch:e,path:r,projectData:n,packageFileIds:a,canonicalFileIds:t});B(`${r}.type`,`unsupported patch type "${e.type}"`)},Cw=(e,r)=>{Ri(e,r);let n=new Set;return e.forEach((o,a)=>{let t=`${r}[${a}]`;Ye(o,t),Qe(o,mw,t),Ze(o,["fileId"],t),Iw(o.fileId,`${t}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&B(`${t}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&B(`${t}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},$w=({packageId:e,packageData:r,path:n,projectData:o,lineIndex:a,canonicalFileIds:t})=>{Ye(r,n),Qe(r,cw,n),Ze(r,["language","files","patches"],n),lt(r.language,`${n}.language`);let s=Cw(r.files,`${n}.files`);Ri(r.patches,`${n}.patches`);let i=new Set,l=r.patches.map((u,c)=>{let p=Ow({patch:u,path:`${n}.patches[${c}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:t});return i.has(p.key)&&B(`${n}.patches[${c}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:r,fileIds:s,patches:l}},Tp=({projectData:e,l10nData:r})=>{if(r===void 0)return{packages:new Map};Ye(r,"l10nData"),Qe(r,new Set(["packages"]),"l10nData"),Ze(r,["packages"],"l10nData"),Ye(r.packages,"l10nData.packages");let n=ww(e),o=Ps(e?.resources??{}),a=new Map,t=new Map;for(let[s,i]of Object.entries(r.packages)){ct(s,`l10nData.packages.${s}`);let l=$w({packageId:s,packageData:i,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:o});for(let u of l.fileIds){o.has(u)&&B(`l10nData.packages.${s}.files`,`fileId "${u}" conflicts with a canonical project file`);let c=t.get(u);c!==void 0&&B(`l10nData.packages.${s}.files`,`fileId "${u}" is already declared by package "${c}"`),t.set(u,s)}Rw(e,l),a.set(s,l)}return{packages:a}},_w=(e,r)=>{let{collectionName:n,patch:o}=r;e.resources[n]??={},e.resources[n][o.resourceId]=lr(o.payload)},Tw=(e,r)=>{let{patch:n}=r,o=e.story.scenes[n.sceneId];o.name=n.payload.name},jw=(e,r)=>{let{location:n,patch:o}=r,a=_p(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=lr(o.payload);return}let t=lr(n.line.actions.dialogue.content);a.actions.dialogue=lr(o.payload),t!==void 0&&(a.actions.dialogue.content=t)},Nw=(e,r)=>{let{location:n,patch:o}=r,a=_p(e,n);a.actions.dialogue.content=lr(o.payload.content)},jp=({projectData:e,l10nData:r})=>{let n=Tp({projectData:e,l10nData:r});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},xs=({projectData:e,l10nData:r,l10nId:n=null})=>{let o=Tp({projectData:e,l10nData:r});if(n!==null&&(ct(n,"l10nId"),o.packages.has(n)||B("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=lr(e),t=o.packages.get(n).patches;return t.filter(s=>s.kind==="resource").forEach(s=>_w(a,s)),t.filter(s=>s.kind==="story.scene").forEach(s=>Tw(a,s)),t.filter(s=>s.kind==="line.action").forEach(s=>jw(a,s)),t.filter(s=>s.kind==="line.dialogue").forEach(s=>Nw(a,s)),a};var Oi=Object.freeze({auto:1e3,skip:80,authored:1e3}),Ht=new Set(["startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Np=new WeakMap,Dw=new ArrayBuffer(8),Ci=new DataView(Dw),Lw=e=>{let r=Np.get(e);if(r)return r;let n={dispatchDepth:0};return Np.set(e,n),n},Mw=e=>{if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=Object.getPrototypeOf(e);return r===Object.prototype||r===null},qw=(e,r)=>Object.keys(e).length===r.length&&r.every(o=>Object.prototype.hasOwnProperty.call(e,o)),xr=(e,r,n)=>{if(!Mw(e)||!qw(e,r))throw new TypeError(`${n} has an invalid shape`)},Yt=(e,r)=>{if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${r} must be a non-negative safe integer`)},Gt=(e,r)=>{if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new TypeError(`${r} must be a finite non-negative number`)},Dp=e=>{if(Gt(e,"duration"),e===0)return 0n;Ci.setFloat64(0,e,!1);let r=Ci.getUint32(0,!1),n=Ci.getUint32(4,!1),o=r>>>20&2047,a=BigInt(r&1048575)<<32n|BigInt(n);if(o===0)return a;let t=1n<<52n|a,s=o-1;return t<<BigInt(s)},Vw=e=>structuredClone(e),$i=(e,r)=>e===r?!0:!e||!r||e.mode!==r.mode||e.kind!==r.kind?!1:e.mode==="legacy"?e.instanceToken===r.instanceToken:e.delayMs!==r.delayMs?!1:e.kind==="auto"?e.contentKey===r.contentKey&&e.owner.sessionId===r.owner.sessionId&&e.owner.lineEntryId===r.owner.lineEntryId:e.kind==="skip"?e.owner.sessionId===r.owner.sessionId:e.trigger===r.trigger&&e.owner.lineEntryId===r.owner.lineEntryId,_i=(e,r,n)=>{if(r===null)return null;if(e==="auto"){if(xr(r,["owner","delayMs","contentKey"],"auto timer"),xr(r.owner,["sessionId","lineEntryId"],"auto timer owner"),Yt(r.owner.sessionId,"auto owner sessionId"),Yt(r.owner.lineEntryId,"auto owner lineEntryId"),r.owner.lineEntryId!==n)throw new TypeError("auto owner lineEntryId must match schedule lineEntryId");if(Gt(r.delayMs,"auto delayMs"),typeof r.contentKey!="string")throw new TypeError("auto contentKey must be a string")}else if(e==="skip")xr(r,["owner","delayMs"],"skip timer"),xr(r.owner,["sessionId"],"skip timer owner"),Yt(r.owner.sessionId,"skip owner sessionId"),Gt(r.delayMs,"skip delayMs");else{if(xr(r,["owner","delayMs","trigger"],"authored timer"),xr(r.owner,["lineEntryId"],"authored timer owner"),Yt(r.owner.lineEntryId,"authored owner lineEntryId"),r.owner.lineEntryId!==n)throw new TypeError("authored owner lineEntryId must match schedule lineEntryId");if(Gt(r.delayMs,"authored delayMs"),r.trigger!=="fromStart"&&r.trigger!=="fromComplete")throw new TypeError('authored trigger must be "fromStart" or "fromComplete"')}return{mode:"reconciled",kind:e,...Vw(r)}},Fw=e=>{if(xr(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(Yt(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}}xr(e.timers,["auto","skip","authored"],"playback schedule timers");let r={auto:_i("auto",e.timers.auto,e.lineEntryId),skip:_i("skip",e.timers.skip,e.lineEntryId),authored:_i("authored",e.timers.authored,e.lineEntryId)};if(r.auto&&r.skip)throw new TypeError("playback schedule cannot enable auto and skip together");return{contractVersion:1,status:"settled",lineEntryId:e.lineEntryId,timers:r}},Ti=e=>({descriptor:e,remainingQuanta:Dp(e.delayMs)}),Es=["auto","skip","authored"],Lp=({ticker:e,dispatchAutomaticAttempt:r,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 r!="function")throw new TypeError("playback scheduler requires dispatchAutomaticAttempt");let o=Lw(e),a=!0,t={},s={},i=null,l=null,u=null,c=null,p=!1,m=!1,d="legacy",f={auto:null,skip:null,authored:null},y={auto:null,skip:null,authored:null},g={auto:0,skip:0,authored:0},h=()=>Es.some(N=>f[N]),w=()=>{l=null,u=null},b=()=>{p||(p=!0,queueMicrotask(()=>{p=!1;let N=u;if(N){if(o.dispatchDepth>0||m){b();return}a&&t===N.lifecycleToken&&s===N.generationToken&&i===N.callback&&h()&&!c&&(l=N.registrationToken),u===N&&(u=null)}}))},E=()=>{if(!c)return;let N=c;e.remove(N),c===N&&(c=null)},k=()=>{let N=i;N&&(w(),i=null,c=N,e.remove(N),c===N&&(c=null))},v=()=>{f={auto:null,skip:null,authored:null}},x=()=>{v(),s={},m||k()},$=N=>{if(o.dispatchDepth>0||m){u=N,b();return}a&&t===N.lifecycleToken&&s===N.generationToken&&i===N.callback&&h()&&(l=N.registrationToken),u===N&&(u=null)},T=()=>{if(!a||!h()||i)return;E();let N=t,se=s,X={},V=Q=>{if(!a||N!==t||se!==s||X!==l||V!==i||m)return;if(!Q||typeof Q.deltaMS!="number"||!Number.isFinite(Q.deltaMS)||Q.deltaMS<0)throw new TypeError("playback ticker deltaMS must be a finite non-negative number");let ne=Dp(Q.deltaMS);m=!0,o.dispatchDepth+=1;let fe=s,Z=null;try{let O=[];for(let _ of Es){let F=f[_];F&&(F.remainingQuanta<=ne?(O.push({kind:_,descriptor:F.descriptor,revision:g[_]}),f[_]=null):F.remainingQuanta-=ne)}if(O.length>0){try{r({dueKinds:O.map(({kind:_})=>_)})}catch(_){let F=n(_);if(d==="reconciled"&&F==="preCommit")for(let{kind:te,descriptor:he}of O)y[te]=he;else d==="legacy"&&v();throw _}if(d==="legacy")for(let _ of O)_.kind==="skip"&&g.skip===_.revision&&f.skip===null&&(f.skip=Ti(_.descriptor))}}catch(O){Z=O}finally{o.dispatchDepth-=1,m=!1;try{fe===s?h()?T():k():i===V&&!h()&&k()}catch(O){throw Z?new AggregateError([Z,O],"Playback attempt and ticker cleanup both failed"):O}}if(Z)throw Z},H={callback:V,lifecycleToken:N,generationToken:se,registrationToken:X};i=V,u=H;try{e.add(V)}catch(Q){throw i=null,w(),v(),s={},c=V,Q}$(H)},S=N=>{g[N]+=1,f[N]=null,y[N]=null,!h()&&!m&&k()},D=(N,se)=>{Gt(se,`${N} delay`),d="legacy",g[N]+=1,y[N]=null,f[N]=Ti({mode:"legacy",kind:N,instanceToken:{},delayMs:se}),T()};return{handleLegacyEffect:N=>{switch(N.name){case"startAutoNextTimer":return D("auto",N.payload?.delay??Oi.auto),!0;case"clearAutoNextTimer":return S("auto"),!0;case"startSkipNextTimer":return D("skip",N.payload?.delay??Oi.skip),!0;case"clearSkipNextTimer":return S("skip"),!0;case"nextLineConfigTimer":return D("authored",N.payload?.delay??Oi.authored),!0;case"clearNextLineConfigTimer":return S("authored"),!0;default:return!1}},reconcilePlaybackScheduleV1:N=>{let se;try{se=Fw(N)}catch(V){try{x()}catch(H){throw new AggregateError([V,H],"Playback schedule validation and cleanup both failed")}throw V}if(d="reconciled",se.status==="unsettled"){v(),m||k();return}let X={};for(let V of Es){let H=se.timers[V],Q=y[V];if(Q&&(!H||!$i(Q,H))&&(y[V]=null),H&&y[V]&&$i(y[V],H)){X[V]=null;continue}let ne=f[V];X[V]=H&&ne&&$i(ne.descriptor,H)?ne:H?Ti(H):null}f=X,h()?T():m||k()},reset:()=>{let N=[i,c].filter((V,H,Q)=>V&&Q.indexOf(V)===H);t={},s={},w(),i=null,c=null,v(),y={auto:null,skip:null,authored:null};for(let V of Es)g[V]+=1;d="legacy",a=!0;let se=null,X=null;for(let V of N)try{e.remove(V)}catch(H){se??=H,X??=V}if(c=X,se)throw se},dispose:()=>{a=!1,t={},s={},w(),v(),y={auto:null,skip:null,authored:null};let N=[i,c].filter((V,H,Q)=>V&&Q.indexOf(V)===H);i=null,c=null;let se=null,X=null;for(let V of N)try{e.remove(V)}catch(H){se??=H,X??=V}if(c=X,se)throw se}}};var Uw=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),Bw=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Mp="conditional",Ni=Symbol("conditionalAutoContinue"),zw=new Set(["sectionTransition","resetStoryAtSection"]),Yw=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),Gw=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),Hw=new Set(["nextLine","nextLineFromSystem"]),Xw=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),ji="form",Ww=new Set(["submitForm","cancelForm"]),Kw="showImageGalleryVariant",Jw="playMusicRoomTrack",Qw="startSceneReplay",Zw=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"]),Ge=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),e0=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,Ss=e=>e?.type===Ni,Br=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,r0=(e,r)=>[...new Set([...Object.keys(e??{}),...Object.keys(r??{})])].some(o=>!Object.is(e?.[o],r?.[o]));function Di(e){let r=e0(),n,o=0,a=!1,t=0,s=null,i=0,l=!1,u=0,c=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g,h,w=null,b=!1,E=!1,k=0,v=new Map,{handlePendingEffects:x}=e;if(typeof x!="function")throw new TypeError("RouteEngine requires handlePendingEffects");let $=x.bind(x),T=typeof x.reconcilePlaybackScheduleV1=="function"?x.reconcilePlaybackScheduleV1.bind(x):null,S=typeof x.reset=="function"?x.reset.bind(x):null,D=typeof x.dispose=="function"?x.dispose.bind(x):null;if(T&&(!S||!D))throw new TypeError("reconcilePlaybackScheduleV1 requires reset and dispose capabilities");let U=I=>{if(E)throw new Error(`RouteEngine cannot ${I} during playback reconciliation`)},le=I=>{if(U(I),!a||!n)throw new Error(`RouteEngine ${I} requires an active engine`)},z=(I,A)=>{if(k===0)return;let R={preCommit:0,postCommitUnsettled:1,reconcileFailed:2},C=v.get(I);(C===void 0||R[A]>R[C])&&v.set(I,A)},ce=I=>{let A=v.get(I)??"preCommit";return v.delete(I),A},N=I=>{if(T){E=!0;try{let A=T(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}}},se=()=>({contractVersion:1,status:"unsettled",lineEntryId:n?.selectPlaybackLineEntryId?.()??0,timers:null}),X=I=>{if(!(!T||!a||!n)){b=!0;try{N(se())}catch(A){if(I){let R=new AggregateError([I,A],"Playback work and schedule invalidation both failed");throw v.delete(I),z(R,"reconcileFailed"),R}throw z(A,"reconcileFailed"),A}}},V=()=>{if(!T||!b||!a||!n||i>0||l)return;let I;try{I=n.selectDesiredPlaybackTimers()}catch(A){throw z(A,"reconcileFailed"),X(A),A}try{N({contractVersion:1,status:"settled",lineEntryId:n.selectPlaybackLineEntryId(),timers:I})}catch(A){throw z(A,"reconcileFailed"),X(A),A}b=!1},H=(I=new Map,A=Date.now())=>new Map(Array.from(I.entries()).filter(([,R])=>A<R.expiresAt).map(([R,C])=>[R,{animation:structuredClone(C.animation),startedAt:C.startedAt,expiresAt:C.expiresAt}])),Q=(I=new Map)=>Array.from(I.values()).map(A=>structuredClone(A.animation)),ne=(I=Date.now())=>{d=new Map(Array.from(d.entries()).filter(([,A])=>I<A.expiresAt))},fe=()=>{if(a&&!(i>0||l)){l=!0;try{for(;n.selectPendingEffects().length>0;){let I=n.selectCurrentPointer()?.pointer??null,A=[...n.selectPendingEffects()],R=A.map(C=>C.name!=="handleLineActions"?C:{...C,payload:{...C.payload,pointer:structuredClone(I)}});n.clearPendingEffects();try{let C=T?R.filter(q=>!Ht.has(q.name)):R;C.length>0&&$(C)}catch(C){throw n.clearPendingEffects(),A.forEach(q=>{n.appendPendingEffect(q)}),z(C,"postCommitUnsettled"),X(C),C}}}finally{l=!1}V()}},Z=I=>{i+=1;let A=!1;try{let R=I();return A=!0,R}finally{i-=1,A&&fe()}},O=({initialState:I,namespace:A})=>{U("initialize");let R=n?.selectSystemState?.()?.global?.audioCommandId??0,{l10nData:C,...q}=I,Y=C===void 0?void 0:structuredClone(C),oe=structuredClone(I.projectData),ae=jp({projectData:oe,l10nData:Y}),Ie=q.global??{};if(!Ge(Ie))throw new Error("Malformed global state.");let Fe=Ie.runtime??{};if(!Ge(Fe))throw new Error("Malformed global.runtime.");let Se=Fe.localizationPackageId;if(Se!=null&&typeof Se!="string")throw new Error("localizationPackageId requires a string or null value");let Sr=new Set(ae.map(({l10nId:Yr})=>Yr).filter(Yr=>Yr!==null)),zr=typeof Se=="string"&&Sr.has(Se)?Se:null,Kt=xs({projectData:oe,l10nData:Y,l10nId:zr}),$s=yu({...q,global:{...Ie,localizationPackages:ae,runtime:{...Fe,localizationPackageId:zr}},projectData:Kt,initialAudioCommandId:R});S?.(),n=$s,o+=1,a=!0,t=0,s=at(A),i=0,l=!1,u=0,c=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g=oe,h=Y,w=zr,b=!0,E=!1,k=0,v.clear(),n.appendPendingEffect({name:"handleLineActions"}),fe()},_=()=>{U("dispose"),a&&(a=!1,o+=1,n?.clearPendingEffects?.(),i=0,l=!1,c=[],p=null,m=null,d=new Map,f=new Map,y=new Map,b=!1,v.clear(),D?.())},F=()=>s,te=()=>n.selectPresentationState(),he=()=>n.selectPresentationChanges(),Pe=I=>n.selectSectionLineChanges(I),ye=(I={})=>{le("rendering"),t+=1;let A=Date.now();ne(A);let R=f.size>0,C=H(d,A),q=R?H(f,A):new Map,oe={...n.selectRenderState({activePersistentAnimations:Q(C),restoredPersistentAnimations:Q(q)}),id:`render-${r}-${o}-${t}`};return y.set(oe.id,{builtAt:A,persistentAnimationSessions:new Map([...q.entries(),...C.entries()]),usedRestoredPersistentAnimationSessions:R}),oe},ue=(I={})=>ye(I),Er=(I={})=>ye(I),cr=I=>{if(!a||!n)return;let A=typeof I?.id=="string"&&I.id.length>0?I.id:null,R=A?y.get(A):null;A&&y.delete(A);let C=new Map;pl(I?.animations).forEach(q=>{let Y=vn(q);if(!Y)return;let oe=R?.persistentAnimationSessions?.get(Y)??d.get(Y),ae=Math.max(0,ml(q)),Ie=oe?.startedAt??R?.builtAt??Date.now();C.set(Y,{animation:structuredClone(q),startedAt:Ie,expiresAt:Ie+ae})}),d=C,R?.usedRestoredPersistentAnimationSessions&&(f=new Map)},Xt=()=>n.selectSystemState(),Bp=()=>n.selectAchievements(),zp=I=>n.selectAchievement(I),Mi=()=>n.selectSaveSlotMap(),Yp=I=>n.selectSaveSlot(I),Gp=I=>n.selectSaveSlotPage(I),Hp=()=>n.selectImageGallery(),Xp=()=>n.selectMusicRoom(),Wp=()=>n.selectSceneReplay(),Kp=()=>n.selectIsSceneReplayActive(),m0=()=>n.selectSkipMode(),y0=()=>n.selectAutoMode(),Jp=()=>n.selectRuntime(),Qp=()=>n.selectIsChoiceVisible(),Zp=()=>n.selectIsFormVisible(),ed=()=>n.selectActiveInteraction(),rd=()=>n.selectPendingEffects().some(I=>I?.name==="handleLineActions"||I?.name==="render"),qi=(I,A,R={})=>!Ge(A)||I!=="nextLine"?A:R.bypassChoice===!0?{...A,bypassChoice:!0}:R.interactionSource===ji?{...A,_interactionSource:ji}:A,td=(I={})=>({type:Ni,payload:qi("nextLine",{_conditionalContinuation:!0},I)}),Vi=(I,A)=>Ss(I)?{type:Ni,payload:{...I.payload,...A.payload}}:A,nd=I=>{I.savedCheckpointOccurrences.forEach(A=>{n.markSavedRollbackCheckpointTransient(A)}),I.savedCheckpointOccurrences=[]},sd=(I,A)=>{let R=p;return p=null,!R||!Br(R.pointer,I)||R.checkpointIndex!==A?.checkpointIndex||R.checkpointIdentity!==A?.checkpoint?[]:R.savedCheckpointOccurrences},od=I=>{let A=m;return!A||!Br(A.pointer,I)?null:(m=null,A)},id=({actionType:I,pointerBeforeAction:A,pointerAfterAction:R,cursorBeforeAction:C,cursorAfterAction:q,wasSceneReplayActive:Y,isSceneReplayActive:oe})=>{!R||!(!Br(A,R)||C?.checkpoint!==q?.checkpoint||C?.checkpointIndex!==q?.checkpointIndex||I==="jumpToLine")||(m={pointer:R,appendToPrevious:Hw.has(I)&&Y===oe&&A?.sectionId===R.sectionId&&A?.lineId!==R.lineId,reuseExistingOccurrence:Xw.has(I),forceNewOccurrence:I==="jumpToLine"})},Fi=I=>{I.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:I.rollbackCursor?.checkpointIndex,checkpointIdentity:I.rollbackCursor?.checkpoint,sectionId:I.pointer?.sectionId,lineId:I.pointer?.lineId}),nd(I))},ad=(I,A,R)=>Yw.has(I)?I==="resetStoryAtSection"?R?.checkpoint!==A?.checkpoint:R?.checkpoint!==A?.checkpoint&&R?.checkpointIndex>A?.checkpointIndex:!1,ld=I=>{let A=c.at(-1);if(!A?.markCurrentCheckpointTransient)return;let R=n.selectSaveSlot({slotId:I?.slotId});R&&A.savedCheckpointOccurrences.push({slotId:I.slotId,saveSlotIdentity:R,checkpointIndex:A.rollbackCursor?.checkpointIndex,sectionId:A.pointer?.sectionId,lineId:A.pointer?.lineId})},cd=(I,A,R)=>{let C=c.at(-1);if(!C)return;let q=n.selectCurrentPointer()?.pointer,Y=ad(I,A,R);if(Br(C.pointer,q)){let oe=R?.checkpoint!==A?.checkpoint||R?.checkpointIndex!==A?.checkpointIndex;Y||oe&&Gw.has(I)?(Fi(C),C.pointer=q,C.rollbackCursor=R,C.markCurrentCheckpointTransient=Y,C.savedCheckpointOccurrences=[]):oe&&I==="updateProjectData"&&(C.rollbackCursor=R);return}Fi(C),C.pointer=q,C.rollbackCursor=n.selectRollbackCursor?.()??null,C.markCurrentCheckpointTransient=Y,C.savedCheckpointOccurrences=[]},Wt=(I,A)=>{if(le(`action "${I}"`),!n[I])return;let R=A,C,q;if(I==="updateProjectData")Ui(A),C=structuredClone(A.projectData),R={...A,projectData:xs({projectData:C,l10nData:h,l10nId:w})},Ui(R);else if(I==="updateLocalizationPackage"){if(q=ud(A),q===w)return;R={l10nId:q,projectData:xs({projectData:g,l10nData:h,l10nId:q})}}zw.has(I)&&(u+=1);let Y=n.selectAutoMode(),oe=Y?n.selectRuntime():null,ae=n.selectIsSceneReplayActive?.()===!0,Ie=Bw.has(I)?H(d):null,Fe=n.selectCurrentPointer()?.pointer??null,Se=n.selectRollbackCursor?.()??null,Sr=!1,zr;try{zr=n[I](R),Sr=!0}catch(ut){throw z(ut,"preCommit"),ut}C!==void 0&&(g=C),q!==void 0&&(w=q),Uw.has(I)&&(f=Ie??new Map,d=new Map);let Kt=n.selectIsSceneReplayActive?.()===!0;ae!==Kt&&(d=new Map,f=new Map);let $s=n.selectCurrentPointer()?.pointer??null,Yr=n.selectRollbackCursor?.()??null;I==="saveSlot"&&ld(A),cd(I,Se,Yr),id({actionType:I,pointerBeforeAction:Fe,pointerAfterAction:$s,cursorBeforeAction:Se,cursorAfterAction:Yr,wasSceneReplayActive:ae,isSceneReplayActive:Kt});let Pd=n.selectAutoMode()&&(I==="updateVariable"||Y&&r0(oe,n.selectRuntime()));(Zw.has(I)||Pd)&&(b=!0);try{fe()}catch(ut){throw Sr&&z(ut,"postCommitUnsettled"),ut}return zr},Ui=I=>{if(!Object.prototype.hasOwnProperty.call(I??{},"projectData"))throw new Error("updateProjectData requires projectData");jr(I?.projectData?.resources?.variables??{}),gt(I.projectData),bt(I.projectData),It(I.projectData)},ud=I=>{if(!Ge(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},pd=(I,A,R)=>{let C=n.selectCurrentPointer()?.pointer;A!==C||R!==u||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),Wt("nextLineFromSystem",I.payload))},dd=()=>({renderSequence:t,conditionalRoutingSequence:u,rollbackNavigationContexts:c.slice(),pendingRollbackLineEntrySaveHandoff:p,pendingDialogueHistoryLineEntry:m,persistentAnimationSessions:new Map(d),restoredPersistentAnimationSessions:new Map(f),renderPersistentAnimationMetadata:new Map(y),canonicalProjectData:g,localizationPackageId:w,playbackScheduleDirty:b}),fd=I=>{t=I.renderSequence,u=I.conditionalRoutingSequence,c=I.rollbackNavigationContexts.slice(),p=I.pendingRollbackLineEntrySaveHandoff,m=I.pendingDialogueHistoryLineEntry,d=new Map(I.persistentAnimationSessions),f=new Map(I.restoredPersistentAnimationSessions),y=new Map(I.renderPersistentAnimationMetadata),g=I.canonicalProjectData,w=I.localizationPackageId,b=I.playbackScheduleDirty},Bi=(I,A={})=>(le("action batch"),Z(()=>{let R=dd();try{return n[no](()=>{let C,q=n.selectCurrentPointer()?.pointer??null,Y=n.selectRollbackCursor?.()??null,oe=u,ae={pointer:q,rollbackCursor:Y,markCurrentCheckpointTransient:A.rollbackSource==="line",savedCheckpointOccurrences:A.savedCheckpointOccurrences?.slice()??[]};c.push(ae);try{n.beginRollbackActionBatch({source:A.rollbackSource});try{C=I()}finally{n.endRollbackActionBatch({})}Ss(C)&&pd(C,q,oe);let Ie=n.selectCurrentPointer()?.pointer??null;A.rollbackSource==="line"&&Br(q,Ie)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:ae.savedCheckpointOccurrences,appendToPrevious:A.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:A.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:A.dialogueHistoryForceNewOccurrence===!0})}finally{c.pop(),(!Br(q,ae.pointer)||Y?.checkpoint!==ae.rollbackCursor?.checkpoint)&&ae.markCurrentCheckpointTransient&&ae.savedCheckpointOccurrences.length>0&&(p={pointer:ae.pointer,checkpointIndex:ae.rollbackCursor?.checkpointIndex,checkpointIdentity:ae.rollbackCursor?.checkpoint,savedCheckpointOccurrences:ae.savedCheckpointOccurrences})}})}catch(C){throw fd(R),C}})),Rs=(I,A,R,C={})=>{if(I===Mp)return Bi(()=>{let q=Os(R),Y=lo({[I]:A},q);return zi(Y[I],R,C)},C);Wt(I,A)},md=(I,A)=>{if(I!=="nextLineFromSystem")return Rs(I,A);k+=1;try{return Rs(I,A)}finally{k=Math.max(0,k-1)}},Os=I=>{if(!I)return{variables:n.selectAllVariables?n.selectAllVariables():void 0,runtime:n.selectRuntime?n.selectRuntime():{}};if(Object.prototype.hasOwnProperty.call(I,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".');let{_event:A,...R}=I,C=n.selectAllVariables?n.selectAllVariables():void 0;return{...R,_event:A,variables:C,runtime:n.selectRuntime?n.selectRuntime():{}}},yd=I=>{if(!Ge(I))return{templatePayload:I,literalTargetIds:null};let A=n.selectImageGalleryConfig();if(!Array.isArray(A?.groups))return{templatePayload:I,literalTargetIds:null};let R=typeof I.groupId=="string"?A.groups.find(q=>q.id===I.groupId):void 0;if(!R)return{templatePayload:I,literalTargetIds:null};let C=typeof I.variantId=="string"&&R.variants.some(q=>q.id===I.variantId);return{templatePayload:{...I,groupId:null,...C?{variantId:null}:{}},literalTargetIds:{groupId:I.groupId,...C?{variantId:I.variantId}:{}}}},hd=I=>!Ge(I)||typeof I.trackId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectMusicRoomConfig()?.tracks?.some(C=>C.id===I.trackId)?{templatePayload:{...I,trackId:null},literalTargetIds:{trackId:I.trackId}}:{templatePayload:I,literalTargetIds:null},gd=I=>!Ge(I)||typeof I.sceneId!="string"?{templatePayload:I,literalTargetIds:null}:n.selectSceneReplayConfig()?.replays?.some(C=>C.sceneId===I.sceneId)?{templatePayload:{...I,sceneId:null},literalTargetIds:{sceneId:I.sceneId}}:{templatePayload:I,literalTargetIds:null},bd=I=>{if(!Ge(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")},Id=(I,A,R)=>{if(!Ge(I))throw new Error(`conditional branch at index ${A} must be an object`);if(!Ge(I.actions))throw new Error(`conditional branch at index ${A} requires actions object`);if(!Object.prototype.hasOwnProperty.call(I,"when")&&A!==R-1)throw new Error("conditional else branch must be the last branch")},zi=(I,A,R)=>{bd(I);let C=td(R);for(let q=0;q<I.branches.length;q+=1){let Y=I.branches[q];Id(Y,q,I.branches.length);let oe=Os(A);if(Object.prototype.hasOwnProperty.call(Y,"when")&&!ht(Y.when,oe))continue;let Ie=Cs(Y.actions,A,R);return Ss(Ie)?Vi(C,Ie):C}return C},wd=(I,A)=>({...I??{},_form:A}),kd=(I,A,R,C)=>{let q=Wt(I,A),Y=q?.submitted===!0&&q.valid===!0,oe=q?.cancelled===!0;if(!(!Y&&!oe)&&Ge(A.actions))return Cs(A.actions,wd(R,q.form),{...C,interactionSource:ji})},vd=(I,A,R,C)=>{let q=Os(R),Y={templatePayload:A,literalTargetIds:null};I===Kw?Y=yd(A):I===Jw?Y=hd(A):I===Qw&&(Y=gd(A));let{templatePayload:oe,literalTargetIds:ae}=Y,Fe=lo({[I]:oe},q)[I],Se=ae?{...Fe,...ae}:Fe;if(I===Mp)return zi(Se,R,C);let Sr=qi(I,Se,C);if(Ww.has(I))return kd(I,Sr,R,C);Wt(I,Sr)},Cs=(I,A,R)=>{let C;return Object.entries(I).forEach(([q,Y])=>{let oe=vd(q,Y,A,R);Ss(oe)&&(C=Vi(C,oe))}),C},Yi=(I,A,R={})=>Bi(()=>Cs(I,A,R),R),Ad=I=>{let A=n.selectCurrentPointer()?.pointer;if(I!==A||n.selectActiveInteraction())return;let R=n.selectNextLineConfig();R?.auto?.enabled&&R.auto.trigger==="fromStart"&&n.appendPendingEffect({name:"nextLineConfigTimer",payload:{delay:R.auto.delay}})};return{init:O,dispose:_,handleAction:Rs,handleInternalAction:md,handleActions:Yi,selectRenderState:ue,prepareRenderState:Er,commitRenderState:cr,selectPresentationState:te,selectPresentationChanges:he,selectSectionLineChanges:Pe,selectSystemState:Xt,selectAchievements:Bp,selectAchievement:zp,selectSaveSlotMap:Mi,selectSaveSlot:Yp,selectSaveSlotPage:Gp,selectSaveSlots:Mi,selectImageGallery:Hp,selectMusicRoom:Xp,selectSceneReplay:Wp,selectIsSceneReplayActive:Kp,selectRuntime:Jp,selectIsChoiceVisible:Qp,selectIsFormVisible:Zp,selectActiveInteraction:ed,selectHasPendingRenderWork:rd,handleLineActions:I=>{le("line action handling");let A=n.selectCurrentPointer()?.pointer;if(I?.pointer&&!Br(I.pointer,A))return!1;if(typeof I?.sceneReplaySceneId=="string"){let R=n.selectActiveSceneReplayEntry?.();if(R?.sceneId!==I.sceneReplaySceneId||R?.entryId!==I.entryId)return!1}return Z(()=>{let R=n.selectCurrentPointer()?.pointer,C=n.selectRollbackCursor?.()??null,q=p,Y=m,oe=sd(R,C),ae=od(R),Ie=n.selectCurrentLine(),Fe=!1;if(Ie?.actions){try{Yi(Ie.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:oe,dialogueHistoryAppendToPrevious:ae?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:ae?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:ae?.forceNewOccurrence===!0})}catch(Se){throw p=q,m=Y,Se}Fe=!0}return Ad(R),Fe})},getNamespace:F,classifyAutomaticAttemptError:ce}}var t0="music-room:player",Fp=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),qp=(e,r)=>Fp.has(e)&&r?._event?.id===t0,Up=({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{if(e.selectHasPendingRenderWork?.())return;let s=e.prepareRenderState?.(t)??e.selectRenderState(t);n?.(s),r.render(s),a(o)&&e.commitRenderState?.(s)},n0=({engine:e,routeGraphics:r,trackRenderDispatch:n,getRenderDispatchCount:o,lifecycleGeneration:a,isCurrentLifecycle:t},s)=>{let i=o?.()??0,l=e.handleLineActions(s);(o?.()??0)===i&&Up({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:t},s)},s0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveSlots(r?.saveSlots))},o0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalDeviceVariables(r?.globalDeviceVariables))},i0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalAccountVariables(r?.globalAccountVariables))},a0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalRuntime(r?.globalRuntime))},l0=({enqueuePersistenceWrite:e},r)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(r?.updates)})},Vp={render:Up,saveSlots:s0,saveGlobalDeviceVariables:o0,saveGlobalAccountVariables:i0,saveGlobalRuntime:a0,applyScopedDataUpdates:l0,handleLineActions:n0},c0=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Li=(e,r,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(r,n)},u0=(e=[])=>{let r=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(!c0.has(a.name)){n.unshift(a);continue}r.has(a.name)||(r.add(a.name),n.unshift(a))}return n},p0=({getEngine:e,routeGraphics:r,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:t,persistence:s,namespace:i})=>{let l=new Map,u=Promise.resolve(),c=null,p=null,m=!1,d=0,f=0,y=!0,g=Lp({ticker:n,dispatchAutomaticAttempt:()=>Li(e(),"nextLineFromSystem",{}),classifyAutomaticAttemptError:O=>e()?.classifyAutomaticAttemptError?.(O)??"preCommit"}),h=()=>{c=null,p=null,m=!1,d=0},w=()=>{g.reset(),f+=1,h(),y=!0},b=()=>{f+=1,y=!1,h(),g.dispose()},E=O=>y&&O===f,k=O=>{if(a){a(O);return}console.error("RouteEngine persistence write failed.",O)},v=O=>{if(s)return s;let _=at(O),F=l.get(_);if(F)return F;let te=Ei({indexedDB:t,namespace:_});return l.set(_,te),te},x=O=>{let _=s?null:at(i??e()?.getNamespace?.()),F;u=u.catch(()=>{}).then(()=>(F=v(_),O(F))).catch(te=>{!s&&l.get(_)===F&&l.delete(_),k(te)})},$=O=>{if(!y)return;let _=typeof O?.id=="string"&&O.id.length>0?O.id:null;d+=1,c=_,m=!1},T=()=>d,S=(O={})=>{if(!y||O?.aborted===!0)return!1;let _=typeof O?.id=="string"&&O.id.length>0?O.id:null;return _?_!==c||_===p?!1:(p=_,!0):c!==null||m?!1:(m=!0,!0)},D=(O,_={})=>{if(!y)return!1;if(qp(O,_)){let te=Fp.get(O),he=e();return Li(he,te,_?._event),!0}if(O!=="renderComplete"||!S(_))return!1;let F=e();return Li(F,"markLineCompleted",{}),!0},U=new Set(["updateFormField","submitForm","cancelForm"]),le=new Set(["updateVariable"]),z=O=>typeof O?.selectActiveInteraction=="function"?O.selectActiveInteraction():typeof O?.selectIsChoiceVisible=="function"&&O.selectIsChoiceVisible()?{source:"choice"}:null,ce=O=>O?._formKey??O?.formKey,N=(O,_)=>ce(O)===_?.formKey,se=(O,_)=>!O||typeof O!="object"||Array.isArray(O)?!1:O._interactionSource===_?.source,X=(O,_)=>se(O,_)?_.source==="form"?N(O,_):!0:!1,V=(O,_)=>!O||typeof O!="object"||Array.isArray(O)||_?.source!=="form"?!1:N(O,_),H=(O={},_)=>Object.keys(O).length>0&&Object.entries(O).every(([F,te])=>U.has(F)?V(te,_):le.has(F)),Q=(O={},_)=>{let F=O?.actions;return _?.source==="form"?!F||typeof F!="object"||Array.isArray(F)?!1:H(F,_):X(O,_)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(te=>X(te,_))},ne=(O,_={})=>{if(!_?.actions)return!1;let F=z(O);return!F||F.source==="choice"?!1:!Q(_,F)},fe=({preprocessPayload:O,onEvent:_}={})=>async(F,te={})=>{if(!y)return!1;if(qp(F,te))return D(F,te),_?.(F,te);let he=e(),Pe=f,ye=d;if(ne(he,te))return _?.(F,te);let ue=await O?.(F,te)??te;if(!E(Pe)||e()!==he||d!==ye)return!1;if(ne(he,ue))return _?.(F,ue);if(D(F,ue),ue?.actions){let Er=ue?._event?{_event:ue._event}:ue?.event?{_event:ue.event}:void 0,cr;ue?.bypassChoice===!0?cr={bypassChoice:!0}:ue?._interactionSource&&(cr={interactionSource:ue._interactionSource}),cr?he.handleActions(ue.actions,Er,cr):he.handleActions(ue.actions,Er)}return _?.(F,ue)},Z=O=>{if(!y)return;let _=f,F=e(),te=u0(O),he=te.some(ye=>ye.name==="handleLineActions");te.forEach(ye=>{if(!Vp[ye.name]&&!Ht.has(ye.name)&&!o)throw new Error(`Unhandled pending effect "${ye.name}".`)});let Pe={engine:F,routeGraphics:r,ticker:n,trackRenderDispatch:$,getRenderDispatchCount:T,enqueuePersistenceWrite:x,lifecycleGeneration:f,isCurrentLifecycle:E};for(let ye of te){if(!E(_))break;if(he&&ye.name==="render")continue;if(Ht.has(ye.name)){g.handleLegacyEffect(ye);continue}let ue=Vp[ye.name];if(ue){ue(Pe,ye.payload);continue}o(ye,Pe)}};return Z.handleRouteGraphicsEvent=D,Z.createRouteGraphicsEventHandler=fe,Z.reset=w,Z.dispose=b,Z.reconcilePlaybackScheduleV1=O=>g.reconcilePlaybackScheduleV1(O),Z},d0=p0;var f0=(e,r={})=>{let{resources:n={}}=r;return Do(e,n)};var tv=Di;export{mo as DEFAULT_VISUAL_LAYER,Jr as RENDER_LAYER,er as VISUAL_LAYER,d0 as createEffectsHandler,zI as createIndexedDbPersistence,tv as default,oo as formatDate,Kf as resolveComputedVariables,f0 as resolveLayoutReferences};
|
|
1
|
+
var uf=Object.defineProperty;var pf=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),df=(e,r)=>{for(var n in r)uf(e,n,{get:r[n],enumerable:!0})};var ip=pf(ea=>{"use strict";Object.defineProperty(ea,"__esModule",{value:!0});function op(e){let r=e.length,n=0,o=0,a;for(;o<r;)n++,a=e.charCodeAt(o++),a>=55296&&a<=56319&&o<r&&(a=e.charCodeAt(o),(a&64512)===56320&&o++);return n}ea.default=op;op.code='require("ajv/dist/runtime/ucs2length").default'});var Sa=Symbol.for("immer-nothing"),va=Symbol.for("immer-draftable"),Ce=Symbol.for("immer-state");function Me(e,...r){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?Oa(e)||Array.isArray(e)||!!e[va]||!!e.constructor?.[va]||hn(e)||gn(e):!1}var ff=Object.prototype.constructor.toString();function Oa(e){if(!e||typeof e!="object")return!1;let r=Wr(e);if(r===null)return!0;let n=Object.hasOwnProperty.call(r,"constructor")&&r.constructor;return n===Object?!0:typeof n=="function"&&Function.toString.call(n)===ff}function mn(e){return we(e)||Me(15,e),e[Ce].base_}function pn(e,r){yn(e)===0?Reflect.ownKeys(e).forEach(n=>{r(n,e[n],e)}):e.forEach((n,o)=>r(o,n,e))}function yn(e){let r=e[Ce];return r?r.type_:Array.isArray(e)?1:hn(e)?2:gn(e)?3:0}function ro(e,r){return yn(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Ra(e,r,n){let o=yn(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function mf(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function hn(e){return e instanceof Map}function gn(e){return e instanceof Set}function Cr(e){return e.copy_||e.base_}function to(e,r){if(hn(e))return new Map(e);if(gn(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=Oa(e);if(r===!0||r==="class_only"&&!n){let o=Object.getOwnPropertyDescriptors(e);delete o[Ce];let a=Reflect.ownKeys(o);for(let t=0;t<a.length;t++){let s=a[t],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 ao(e,r=!1){return bn(e)||we(e)||!$r(e)||(yn(e)>1&&(e.set=e.add=e.clear=e.delete=yf),Object.freeze(e),r&&Object.entries(e).forEach(([n,o])=>ao(o,!0))),e}function yf(){Me(2)}function bn(e){return Object.isFrozen(e)}var hf={};function _r(e){let r=hf[e];return r||Me(0,e),r}var It;function Ca(){return It}function gf(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Aa(e,r){r&&(_r("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function no(e){so(e),e.drafts_.forEach(bf),e.drafts_=null}function so(e){e===It&&(It=e.parent_)}function Pa(e){return It=gf(It,e)}function bf(e){let r=e[Ce];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function xa(e,r){r.unfinalizedDrafts_=r.drafts_.length;let n=r.drafts_[0];return e!==void 0&&e!==n?(n[Ce].modified_&&(no(r),Me(4)),$r(e)&&(e=dn(r,e),r.parent_||fn(r,e)),r.patches_&&_r("Patches").generateReplacementPatches_(n[Ce].base_,e,r.patches_,r.inversePatches_)):e=dn(r,n,[]),no(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Sa?e:void 0}function dn(e,r,n){if(bn(r))return r;let o=r[Ce];if(!o)return pn(r,(a,t)=>Ea(e,o,r,a,t,n)),r;if(o.scope_!==e)return r;if(!o.modified_)return fn(e,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;let a=o.copy_,t=a,s=!1;o.type_===3&&(t=new Set(a),a.clear(),s=!0),pn(t,(i,l)=>Ea(e,o,a,i,l,n,s)),fn(e,a,!1),n&&e.patches_&&_r("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Ea(e,r,n,o,a,t,s){if(we(a)){let i=t&&r&&r.type_!==3&&!ro(r.assigned_,o)?t.concat(o):void 0,l=dn(e,a,i);if(Ra(n,o,l),we(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if($r(a)&&!bn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;dn(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&fn(e,a)}}function fn(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&ao(r,n)}function If(e,r){let n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:Ca(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,t=lo;n&&(a=[o],t=wt);let{revoke:s,proxy:i}=Proxy.revocable(a,t);return o.draft_=i,o.revoke_=s,i}var lo={get(e,r){if(r===Ce)return e;let n=Cr(e);if(!ro(n,r))return wf(e,n,r);let o=n[r];return e.finalized_||!$r(o)?o:o===Zs(e.base_,r)?(eo(e),e.copy_[r]=io(o,e)):o},has(e,r){return r in Cr(e)},ownKeys(e){return Reflect.ownKeys(Cr(e))},set(e,r,n){let o=$a(Cr(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=Zs(Cr(e),r),t=a?.[Ce];if(t&&t.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(mf(n,a)&&(n!==void 0||ro(e.base_,r)))return!0;eo(e),oo(e)}return e.copy_[r]===n&&(n!==void 0||r in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[r])||(e.copy_[r]=n,e.assigned_[r]=!0),!0},deleteProperty(e,r){return Zs(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,eo(e),oo(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){let n=Cr(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){Me(11)},getPrototypeOf(e){return Wr(e.base_)},setPrototypeOf(){Me(12)}},wt={};pn(lo,(e,r)=>{wt[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}});wt.deleteProperty=function(e,r){return wt.set.call(this,e,r,void 0)};wt.set=function(e,r,n){return lo.set.call(this,e[0],r,n,e[0])};function Zs(e,r){let n=e[Ce];return(n?Cr(n):e)[r]}function wf(e,r,n){let o=$a(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function $a(e,r){if(!(r in e))return;let n=Wr(e);for(;n;){let o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=Wr(n)}}function oo(e){e.modified_||(e.modified_=!0,e.parent_&&oo(e.parent_))}function eo(e){e.copy_||(e.copy_=to(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var kf=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(r,n,o)=>{if(typeof r=="function"&&typeof n!="function"){let t=n;n=r;let s=this;return function(l=t,...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(r)){let t=Pa(this),s=io(r,void 0),i=!0;try{a=n(s),i=!1}finally{i?no(t):so(t)}return Aa(t,o),xa(a,t)}else if(!r||typeof r!="object"){if(a=n(r),a===void 0&&(a=r),a===Sa&&(a=void 0),this.autoFreeze_&&ao(a,!0),o){let t=[],s=[];_r("Patches").generateReplacementPatches_(r,a,t,s),o(t,s)}return a}else Me(1,r)},this.produceWithPatches=(r,n)=>{if(typeof r=="function")return(s,...i)=>this.produceWithPatches(s,l=>r(l,...i));let o,a;return[this.produce(r,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 r=Pa(this),n=io(e,void 0);return n[Ce].isManual_=!0,so(r),n}finishDraft(e,r){let n=e&&e[Ce];(!n||!n.isManual_)&&Me(9);let{scope_:o}=n;return Aa(o,r),xa(void 0,o)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,r){let n;for(n=r.length-1;n>=0;n--){let a=r[n];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}n>-1&&(r=r.slice(n+1));let o=_r("Patches").applyPatches_;return we(e)?o(e,r):this.produce(e,a=>o(a,r))}};function io(e,r){let n=hn(e)?_r("MapSet").proxyMap_(e,r):gn(e)?_r("MapSet").proxySet_(e,r):If(e,r);return(r?r.scope_:Ca()).drafts_.push(n),n}function pr(e){return we(e)||Me(10,e),_a(e)}function _a(e){if(!$r(e)||bn(e))return e;let r=e[Ce],n;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=to(e,r.scope_.immer_.useStrictShallowCopy_)}else n=to(e,!0);return pn(n,(o,a)=>{Ra(n,o,_a(a))}),r&&(r.finalized_=!1),n}var _e=new kf,In=_e.produce,gk=_e.produceWithPatches.bind(_e),bk=_e.setAutoFreeze.bind(_e),Ik=_e.setUseStrictShallowCopy.bind(_e),wk=_e.applyPatches.bind(_e),kk=_e.createDraft.bind(_e),vk=_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 j=class extends Error{constructor(r){super(`Parse Error: ${r}`),this.name="JemplParseError"}},Oe=class extends Error{constructor(r){super(`Render Error: ${r}`),this.name="JemplRenderError"}};var co=e=>{if(!e||e.trim()==="")throw new j("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new j(`Invalid comparison operator '${e.includes("===")?"===":"!=="}' - did you mean '${n}'? (got: '${e}')`)}let r=["<",">","<=",">=","==","!="];for(let n of r)if(e.trim().endsWith(n))throw new j(`Incomplete comparison expression - missing right operand (got: '${e}')`)},Ta=e=>{if(e.trim().endsWith(" in"))throw new j(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new j(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[r,n]=e.split(" in ");if(!n||n.trim()==="")throw new j(`Missing iterable expression after 'in' (got: '$for ${e}')`);let o=r.includes(",")?r.split(",").map(a=>a.trim()):[r.trim()];for(let a of o){if(!a)throw new j(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new j(`Invalid loop syntax (got: '$for ${e}')`)}};var Na=(e,r,n=!1)=>{if(r===null)return new Oe(`Cannot iterate over null value at '$for ${e}'`);if(r===void 0)return new Oe(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof r;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}'`)},ja=(e,r)=>{let n=r&&Object.keys(r).length>0?Object.keys(r).join(", "):"no custom functions provided";return new Oe(`Unknown function '${e}' (${n})`)};var vf=(e,r,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},r,{});return s===void 0?{}:s},ee=(e,r,n,o)=>{let a=r.functions||r;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 Pf(e.parts,r,n,o);switch(e.type){case x.FUNCTION:return La(e,r,n,o);case x.BINARY:return Ma(e,r,n,o);case x.UNARY:return Va(e,r,n,o);case x.CONDITIONAL:return Ef(e,r,n,o);case x.LOOP:return $f(e,r,n,o);case x.OBJECT:return Tf(e,r,n,o);case x.ARRAY:return Nf(e,r,n,o);case x.PARTIAL:return jf(e,r,n,o);case x.PATH_REFERENCE:return Df(e,r,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},Da=new Map,Af=e=>{let r=[],n="",o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(t==="[")n&&(r.push({type:"property",value:n}),n=""),o=!0;else if(t==="]"){if(o&&n){let s=n.trim();if(/^\d+$/.test(s))r.push({type:"index",value:parseInt(s,10)});else if(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'")){let i=s.slice(1,-1);r.push({type:"property",value:i})}else r.push({type:"property",value:s});n=""}o=!1}else n+=t}return n&&r.push({type:"property",value:n}),r},be=(e,r,n)=>{if(!e)return;if(e in n)return n[e];let o=Da.get(e);if(!o){let t=[],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&&(t.push(s),s=""):s+=c}s&&t.push(s),o=[];for(let l of t){let c=Af(l.trim());o.push(...c)}Da.set(e,o)}let a=r;for(let t=0;t<o.length;t++){let s=o[t];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},Pf=(e,r,n,o)=>{let a=[];for(let t of e)if(typeof t=="string")a.push(t);else{let s=ee(t,r,n,o);a.push(s!=null?String(s):"")}return a.join("")},La=(e,r,n,o)=>{let a=r.functions||r,t=a[e.name];if(!t)throw ja(e.name,a);let s=e.args.map(i=>ee(i,r,n,o));return t(...s)},dr=(e,r,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 Ma(e,r,n,o);case x.UNARY:return Va(e,r,n,o);case x.FUNCTION:return La(e,r,n,o);default:return ee(e,r,n,o)}},Ma=(e,r,n,o)=>{if(e.op===J.AND||e.op===J.OR){let s=dr(e.left,r,n,o),i=dr(e.right,r,n,o);switch(e.op){case J.AND:return s&&i;case J.OR:return s||i}}let a=ee(e.left,r,n,o),t=ee(e.right,r,n,o);switch(e.op){case J.EQ:return a==t;case J.NEQ:return a!=t;case J.GT:return a>t;case J.LT:return a<t;case J.GTE:return a>=t;case J.LTE:return a<=t;case J.IN:return Array.isArray(t)?t.includes(a):!1;case J.ADD:if(typeof a!="number"||typeof t!="number")throw new Oe(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof t}`);return a+t;case J.SUBTRACT:if(typeof a!="number"||typeof t!="number")throw new Oe(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof t}`);return a-t;default:throw new Error(`Unknown binary operator: ${e.op}`)}},Va=(e,r,n,o)=>{let a=e.op===Kr.NOT?dr(e.operand,r,n,o):ee(e.operand,r,n,o);if(e.op===Kr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},xf=(e,r,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,r,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,r,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=ee(u,r,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,r,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,r,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=ee(u,r,n,o)}return i}}}return null},Ef=(e,r,n,o)=>{let a=xf(e,r,n,o);if(a!==null)return a;for(let t=0;t<e.conditions.length;t++){let s=e.conditions[t];if(s===null||dr(s,r,n,o))return ee(e.bodies[t],r,n,o)}return qa},Sf=(e,r)=>{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,t=n.bodies[0];if(a.startsWith(o+".")){let s=a.substring(o.length+1);if(t.type===x.OBJECT&&t.properties.length<=5){for(let l of t.properties)if(l.parsedKey)return null;let i=[];for(let l=0;l<r.length;l++){let c=r[l];if(c[s]){let u={};for(let p of t.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},Of=(e,r)=>{let n=e.body,o=e.itemVar,a=Sf(e,r);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 t=[],s=!0;for(let i of n.properties){let l=i.key,c=i.value;if(c.type===x.LITERAL)t.push({key:l,type:"literal",value:c.value});else if(c.type===x.VARIABLE){let u=c.path;if(u===o)t.push({key:l,type:"item"});else if(u.startsWith(o+".")){let p=u.substring(o.length+1);if(!p.includes(".")&&!p.includes("["))t.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)t.push({key:l,type:"item_string"});else if(p.startsWith(o+".")){let f=p.substring(o.length+1);if(!f.includes(".")&&!f.includes("["))t.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(r.length);if(t.length===3&&t[0].type==="prop"&&t[0].key==="id"&&t[1].type==="prop_string"&&t[1].key==="title"&&t[2].type==="prop"&&t[2].key==="completed")for(let l=0;l<r.length;l++){let c=r[l];i[l]={id:c.id,title:c.title!=null?String(c.title):"",completed:c.completed}}else for(let l=0;l<r.length;l++){let c=r[l],u={};for(let p of t)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},Rf=(e,r,n,o,a)=>{let t=[],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,r,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,r,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,r,n,h)}}t.push(p)}return t}return null},Cf=(e,r,n)=>{let o=e.body;if(o.type===x.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let t=o.properties[0].value;if(t.type===x.CONDITIONAL&&t.conditions.length===1&&t.conditions[0].type===x.VARIABLE&&t.conditions[0].path==="item.visible"){let s=t.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<r.length;u++){let p=r[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},$f=(e,r,n,o)=>{let a=ee(e.iterable,r,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 Na(p,a,u)}if(!e.indexVar){let c=Cf(e,a,e.itemVar);if(c!==null)return c}if(!e.indexVar){let c=Of(e,a);if(c!==null)return c}let t=Rf(e,r,n,o,a);if(t!==null)return t;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,r,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},_f=(e,r,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],t=a.parsedKey?ee(a.parsedKey,r,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,r,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[t]=l,i}}return null},Tf=(e,r,n,o)=>{let a=r.functions||r;if(e.whenCondition&&!dr(e.whenCondition,a,n,o))return;let t=_f(e,r,n,o);if(t!==null)return t;if(e.fast){let c={};for(let u of e.properties){let p=u.parsedKey?ee(u.parsedKey,r,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,r,n,o);d.push(y!=null?String(y):"")}c[p]=d.join("")}else c[p]=ee(f,r,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,r,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,r,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,r,n,o);f!==void 0&&(s[c.key]=f)}else{let f=ee(c.value,r,n,o);f!==void 0&&(s[c.key]=f)}}else{let p=c.parsedKey?ee(c.parsedKey,r,n,o):c.key,f=ee(c.value,r,n,o);f!==void 0&&(s[p]=f)}}return s},qa={},Nf=(e,r,n,o)=>{let a=[];for(let t of e.items)if(t.type===x.LOOP){let s=ee(t,r,n,o);Array.isArray(s)&&t.flatten!==!1?a.push(...s):a.push(s)}else{let s=ee(t,r,n,o);s!==qa&&s!==void 0&&a.push(s)}return a},jf=(e,r,n,o)=>{let{name:a,data:t,whenCondition:s}=e,i=r.partials||{},l=r.functions||r;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(t){let d=ee(t,r,n,o);p={...p,...d}}return ee(u,r,p,f)},Df=(e,r,n,o)=>{let{path:a}=e,t=a.split("."),s=t[0],i=t.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 uo=vf;var Lf=/\$\{([^}]*)\}/g,Mf=/#\{([^}]*)\}/g,Ua=(e,r={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,t=Vf(a,r);return{isFunction:!0,type:x.FUNCTION,name:o,args:t}},Vf=(e,r={})=>e.trim()?qf(e).map(o=>Ff(o.trim(),r)):[],qf=e=>{let r=[],n="",o=0,a=!1,t="";for(let s=0;s<e.length;s++){let i=e[s],l=s>0?e[s-1]:"";!a&&(i==='"'||i==="'")?(a=!0,t=i,n+=i):a&&i===t&&l!=="\\"?(a=!1,t="",n+=i):!a&&i==="("?(o++,n+=i):!a&&i===")"?(o--,n+=i):!a&&i===","&&o===0?(r.push(n),n=""):n+=i}return n&&r.push(n),r},Ff=(e,r={})=>{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=Ua(e,r);if(n.isFunction)return{type:n.type,name:n.name,args:n.args};let o=e.trim(),a=[{op:" + ",type:"ADD"},{op:" - ",type:"SUBTRACT"}],t=-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>t&&(t=p,s={op:i,type:l}),c=p+i.length}}if(t!==-1)try{return ke(o,r)}catch{return{type:x.VARIABLE,path:o}}return{type:x.VARIABLE,path:o}},Ba=/^\w+\(.*\)$/,Uf=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,Bf=e=>{if(!(!e||e.trim()===""||Ba.test(e))&&Uf.test(e))throw e.includes("?")&&e.includes(":")?new j(`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 j(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new j(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},Fa=e=>{let r=e.trim();if(Ba.test(r))throw new j(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("["))throw new j(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(r))throw new j(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(r))throw new j(`Logical operators not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("?")&&r.includes(":"))throw new j(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:x.PATH_REFERENCE,path:r}},kt=(e,r={})=>{let n=e.trim();Bf(n);let o=Ua(n,r);if(o.isFunction)return{type:o.type,name:o.name,args:o.args};if(n.includes("[")&&!/[\s+\-*/%|&?:]/.test(n)){let a=0;for(let t of n)t==="["?a++:t==="]"&&a--;if(a!==0)throw new Error("Invalid array index syntax")}return{type:x.VARIABLE,path:n}},po=(e,r={})=>{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(Lf)],t=[...n.matchAll(Mf)],s=[...a.map(c=>({match:c,type:"variable"})),...t.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"?kt(c[1],r):Fa(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=kt(f.trim(),r):m=Fa(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 yo=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Ga=e=>Object.keys(e),Ee=e=>e.join("."),fr=(e,r,n)=>{let o=Ga(e).filter(a=>!r.has(a));if(o.length>0)throw new j(`Unexpected key '${o[0]}' in condition JSON at '${Ee(n)}'`)},mr=(e,r)=>typeof e=="string"?po(e,r):typeof e=="object"&&e!==null?Array.isArray(e)?zf(e,r):Gf(e,r):{type:x.LITERAL,value:e},Yf=e=>{let{$each:r,...n}=e;if(typeof r!="string")throw new j("$each value must be a non-empty string");let o=r.trim();if(o==="")throw new j("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new j("Empty $each body not allowed");if(n.$partial!==void 0)throw new j("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${o}`]:n}},zf=(e,r)=>{let n=[],o=!1;for(let a=0;a<e.length;a++){let t=e[a];if(typeof t=="object"&&t!==null&&!Array.isArray(t)){if(t.$each!==void 0)try{let l=Yf(t),c=Object.keys(l);if(c.length===1&&/^\$for(?::\w+)?\s/.test(c[0])){let u=za(c[0],l[c[0]],r,!0);n.push(u),o=!0;continue}}catch(l){throw l instanceof j?l:new j(l.message)}let i=Object.keys(t);if(i.length===1&&/^\$for(?::\w+)?\s/.test(i[0])){let l=za(i[0],t[i[0]],r);n.push(l),o=!0;continue}}let s=mr(t,r);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}},Gf=(e,r)=>{let n=[],o=!1,a=null,t=Object.entries(e),s=0;if(e.$partial!==void 0){if(typeof e.$partial!="string")throw new j("$partial value must be a string");if(e.$partial.trim()==="")throw new j("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],c=[];for(let[h]of t)for(let w of l)if(h===w||h.startsWith(w+" ")||h.startsWith(w+"#")){c.push(w);break}if(c.length>0)throw new j(`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,r),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=Ya(p,r)),g}for(let[l,c]of t)if(l==="$when"){if(a!==null)throw new j("Multiple '$when' directives on the same object are not allowed");if(c==null)throw new j("Missing condition expression after '$when'");a=Ya(c,r),o=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new j("'$when' does not support ID syntax or inline conditions - use '$when' as a property");for(;s<t.length;){let[l,c]=t[s];if(l==="$when"){s++;continue}if(l==="$each")throw new j("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let u=Hf(t,s,r);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 j(`$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 j(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new j("Missing condition expression after '$if'");{let u=mr(c,r);(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=po(l,r),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},Hf=(e,r,n={})=>{let o=[],a=[],t=r,[s,i]=e[t],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 j(`Invalid conditional syntax: ${s}`)}else c=s.substring(4),c.endsWith(":")&&(c=c.slice(0,-1).trim());co(c);let u=ke(c,n);for(o.push(u),a.push(mr(i,n)),t++;t<e.length;){let[p,f]=e[t],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{co(m);let y=ke(m,n);o.push(y)}if(a.push(mr(f,n)),t++,m===null)break}else break}return{node:{type:x.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:t}},fo={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},mo={all:J.AND,any:J.OR},Xf=new Set(["var","literal","call","not",...Object.keys(fo),...Object.keys(mo)]),Wf=(e,r,n)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${Ee(n)}' requires an array`);if(e.length!==2)throw new j(`Condition JSON operator '${r}' at '${Ee(n)}' requires exactly 2 operands`);return e},Kf=(e,r,n,o,a)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${Ee(a)}' requires an array`);if(e.length===0)throw new j(`Condition JSON operator '${r}' 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}))},Jf=(e,r,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],fr(e,new Set(["call","args"]),n);else if(yo(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 j(`Condition JSON call at '${Ee(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new j(`Condition JSON call at '${Ee(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new j(`Invalid condition JSON function name '${o}' at '${Ee(n)}'`);if(!Array.isArray(a))throw new j(`Condition JSON call '${o}' at '${Ee(n)}' requires args to be an array`);return{type:x.FUNCTION,name:o,args:a.map((t,s)=>$e(t,r,[...n,"args",s]))}},$e=(e,r={},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 j(`Condition JSON array at '${Ee(n)}' must be wrapped in an operator or { literal: [...] }`);if(!yo(e))throw new j(`Invalid condition JSON value at '${Ee(n)}'`);let o=Ga(e);if(o.length===0)throw new j(`Condition JSON object at '${Ee(n)}' must contain an operator`);let a=o.filter(s=>Xf.has(s));if(a.length===0)throw new j(`Unknown condition JSON operator '${o[0]}' at '${Ee(n)}'`);if(a.length>1)throw new j(`Condition JSON at '${Ee(n)}' must contain exactly one operator`);let t=a.includes("call")?"call":a[0];if(t==="var"){if(fr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new j(`Condition JSON var at '${Ee(n)}' requires a non-empty path`);return{type:x.VARIABLE,path:e.var}}if(t==="literal")return fr(e,new Set(["literal"]),n),{type:x.LITERAL,value:e.literal};if(t==="call")return Jf(e,r,n);if(t==="not")return fr(e,new Set(["not"]),n),{type:x.UNARY,op:Kr.NOT,operand:$e(e.not,r,[...n,"not"])};if(t in mo)return fr(e,new Set([t]),n),Kf(e[t],t,mo[t],r,[...n,t]);if(t in fo){fr(e,new Set([t]),n);let s=Wf(e[t],t,[...n,t]);return{type:x.BINARY,op:fo[t],left:$e(s[0],r,[...n,t,0]),right:$e(s[1],r,[...n,t,1])}}throw new j(`Unknown condition JSON operator '${t}' at '${Ee(n)}'`)},Ya=(e,r={})=>{if(e==null)throw new j("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression after '$when'");return ke(e,r)}return yo(e)||Array.isArray(e)?$e(e,r):{type:x.LITERAL,value:e}},ke=(e,r={})=>{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,r)}let n=Tr(e,"||");if(n!==-1)return{type:x.BINARY,op:J.OR,left:ke(e.substring(0,n).trim(),r),right:ke(e.substring(n+2).trim(),r)};let o=Tr(e,"&&");if(o!==-1)return{type:x.BINARY,op:J.AND,left:ke(e.substring(0,o).trim(),r),right:ke(e.substring(o+2).trim(),r)};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(),r),right:ke(e.substring(p+c.length).trim(),r)}}let t=-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>t&&(t=d,s={op:c,type:u}),p=d+c.length}}if(t!==-1&&s)return{type:x.BINARY,op:s.type,left:ke(e.substring(0,t).trim(),r),right:ke(e.substring(t+s.op.length).trim(),r)};let l=[" * "," / "," % "];for(let c of l)if(Tr(e,c)!==-1)throw new j(`Arithmetic operations are not allowed in conditionals: "${c}"`);return e.startsWith("!")?{type:x.UNARY,op:Kr.NOT,operand:ke(e.substring(1).trim(),r)}:Ha(e,r)},Tr=(e,r)=>{let n=0,o=0;for(;o<=e.length-r.length;){if(e[o]==="(")n++;else if(e[o]===")")n--;else if(n===0&&e.substring(o,o+r.length)===r)return o;o++}return-1},Qf=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 r=Number(e);return!isNaN(r)&&isFinite(r)?{type:x.LITERAL,value:r}:{type:x.VARIABLE,path:e}},Ha=(e,r)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return kt(n,r);let a=Qf(n);if(a.type===x.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:x.VARIABLE,path:n};try{return kt(n,r)}catch(t){if(t.message&&t.message.includes("not supported"))return a;throw t}},Zf=(e,r=!1)=>{let n=r?"$each":"$for";try{Ta(e)}catch(o){if(o instanceof j&&r){let a=o.message.replace(/\$for/g,"$each");throw new j(a.replace("Parse Error: ",""))}throw o}},za=(e,r,n,o=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,t=e.match(a);if(!t){let g=o?"$each":"$for";throw new j(`Invalid loop syntax (got: '${e.replace("$for",g)}')`)}let s=t[1],i=t[2].trim();Zf(i,o);let l=i.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let g=o?"$each":"$for";throw new j(`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 j(`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 j(`Reserved variable name: ${p}`);if(f&&d.includes(f))throw new j(`Reserved variable name: ${f}`);let m=Ha(u,n),y=mr(r,n);return{type:x.LOOP,itemVar:p,indexVar:f,iterable:m,body:y,flatten:s!=="nested"}};var em=(e,r={})=>{let{functions:n={}}=r;return mr(e,n)},wn=em;var vt={};df(vt,{now:()=>rm});var rm=()=>Date.now();var tm=(e,r,n={})=>{let{functions:o={},partials:a={}}=n,t={...vt,...o},s=wn(e,{functions:t}),i={};for(let[l,c]of Object.entries(a))i[l]=wn(c,{functions:t});return uo(s,r,{functions:t,partials:i})},Nr=tm;var nm=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",sm=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,om=(e,r)=>{if(nm(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression");return ke(e,r)}return $e(e,r)},im=(e,r={},n={})=>{let o=sm(n),a={...vt,...o},t=om(e,a);return!!dr(t,{functions:a,partials:{}},r,{})},ho=im;var xo=Symbol("runStoreTransaction"),wo="__routeEngineConditionComparison",kn=(e,r)=>typeof e=="number"&&typeof r=="number"&&Number.isFinite(e)&&Number.isFinite(r)||typeof e=="string"&&typeof r=="string",yr=Object.freeze({eq:(e,r)=>e===r,neq:(e,r)=>e!==r,gt:(e,r)=>kn(e,r)&&e>r,gte:(e,r)=>kn(e,r)&&e>=r,lt:(e,r)=>kn(e,r)&&e<r,lte:(e,r)=>kn(e,r)&&e<=r}),rl=Object.freeze(Object.fromEntries(Object.keys(yr).map(e=>[e,`${wo}${e}`]))),am=Object.freeze(Object.fromEntries(Object.entries(rl).map(([e,r])=>[r,yr[e]]))),Xa=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),lm=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},vn=e=>{if(Array.isArray(e))return e.map(vn);if(e===null||typeof e!="object"||Xa(e,"literal")||Xa(e,"var"))return e;if(lm(e)?.startsWith(wo))throw new Error(`Condition function names beginning with "${wo}" are reserved`);let n=Object.entries(e);if(n.length===1){let[[o,a]]=n,t=rl[o];if(t)return{call:t,args:a.map(vn)}}return Object.fromEntries(n.map(([o,a])=>[o,vn(a)]))},Pt=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return $e(e),ho(vn(e),r,{functions:am})},cm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tl=(e,r,n={})=>{let o={},a={},{transformSelectorFirstArgument:t=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:In(y,h=>{c({state:h.state,transactionalMetadata:h.transactionalMetadata,previousState:g.state,previousTransactionalMetadata:g.transactionalMetadata})});for(let[y,g]of Object.entries(r))y!=="createInitialState"&&(y.startsWith("select")?o[y]=(...h)=>g(t(p.state,p.transactionalMetadata),...h):a[y]=(...h)=>{let w,b=p,E=In(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,[xo]:m}},En=(e,r)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return In(o,t=>{a.forEach(s=>{r.forEach(i=>{i(t,s)})})})};var um=(e,r)=>{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 ${r}. Expected one of: ${n.join(", ")}`);switch(e.type){case"number":return 0;case"boolean":return!1;case"string":return"";case"object":return{}}},W=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),ko=(e,r,n)=>{Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0})},Ie=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),pm=new Set(["pageSize","groups"]),dm=new Set(["id","variants"]),fm=new Set(["id","imageId"]),mm=new Set(["pageSize","tracks"]),ym=new Set(["id","soundId","title","artist","album","description","coverImageId"]),hm=new Set(["pageSize","replays"]),gm=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),jr=(e,r,n)=>{Object.keys(e).forEach(o=>{if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)})},Jr=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string`)},xt=(e={})=>{let r=e?.resources?.imageGallery;if(r===void 0)return;if(!Ie(r))throw new Error("resources.imageGallery must be an object");if(jr(r,pm,"resources.imageGallery"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.imageGallery.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.groups))throw new Error("resources.imageGallery.groups must be an array");let n=new Set;for(let[o,a]of r.groups.entries()){let t=`resources.imageGallery.groups[${o}]`;if(!Ie(a))throw new Error(`${t} must be an object`);if(jr(a,dm,t),Jr(a.id,`${t}.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(`${t}.variants must be a non-empty array`);let s=new Set;for(let[i,l]of a.variants.entries()){let c=`${t}.variants[${i}]`;if(!Ie(l))throw new Error(`${c} must be an object`);if(jr(l,fm,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}"`)}}},Et=(e={})=>{let r=e?.resources?.musicRoom;if(r===void 0)return;if(!Ie(r))throw new Error("resources.musicRoom must be an object");if(jr(r,mm,"resources.musicRoom"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.musicRoom.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.tracks))throw new Error("resources.musicRoom.tracks must be an array");let n=new Set;for(let[o,a]of r.tracks.entries()){let t=`resources.musicRoom.tracks[${o}]`;if(!Ie(a))throw new Error(`${t} must be an object`);jr(a,ym,t);for(let l of["id","soundId","title"])Jr(a[l],`${t}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&Jr(a[l],`${t}.${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}"`)}},bm=(e,r,n)=>{let o=Array.isArray(n)?"array":typeof n;switch(r.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 "${r.type}"`)}},St=(e={})=>{let r=e?.resources?.sceneReplay;if(r===void 0)return;if(!Ie(r))throw new Error("resources.sceneReplay must be an object");if(jr(r,hm,"resources.sceneReplay"),!Number.isInteger(r.pageSize)||r.pageSize<1)throw new Error("resources.sceneReplay.pageSize must be an integer greater than or equal to 1");if(!Array.isArray(r.replays))throw new Error("resources.sceneReplay.replays must be an array");let n=e?.story?.scenes??{},o=new Set;for(let[a,t]of r.replays.entries()){let s=`resources.sceneReplay.replays[${a}]`;if(!Ie(t))throw new Error(`${s} must be an object`);jr(t,gm,s);for(let u of["sceneId","title","thumbnailImageId"])Jr(t[u],`${s}.${u}`);if(o.has(t.sceneId))throw new Error(`Duplicate scene replay sceneId "${t.sceneId}"`);if(o.add(t.sceneId),!W(e?.resources?.images,t.thumbnailImageId))throw new Error(`Scene replay scene "${t.sceneId}" references unknown thumbnail image "${t.thumbnailImageId}"`);let i=n[t.sceneId];if(!i)throw new Error(`Scene replay references unknown scene "${t.sceneId}"`);let l=i.initialSectionId,c=i.sections?.[l];if(!c)throw new Error(`Scene replay scene "${t.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 "${t.sceneId}" initial section "${l}" references unknown initial line "${c.initialLineId}"`);if(t.initialVariables!==void 0){if(!Ie(t.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[u,p]of Object.entries(t.initialVariables)){let f=e?.resources?.variables?.[u];if(!f)throw new Error(`Scene replay scene "${t.sceneId}" initialVariables references unknown variable "${u}"`);if(Se(f))throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize computed variable "${u}"`);if(f.readonly===!0)throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize readonly variable "${u}"`);if(f.scope!=="context")throw new Error(`Scene replay scene "${t.sceneId}" can only initialize context variable "${u}"`);bm(u,f,p)}}}},nl=e=>{let r=we(e)?pr(e):e;return structuredClone(r)},Im=({characterId:e,resourceCharacter:r,variables:n={}}={})=>{if(!W(r,"nameVariableId"))return;let o=r.nameVariableId,a=n?.[o];if(typeof a!="string")throw new Error(`Character "${e}" nameVariableId "${o}" must resolve to a string variable`);return a},Sn=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0;if(r?.name!==void 0)return r.name;if(n!==void 0)return n;let s=Im({characterId:e,resourceCharacter:t,variables:a});return s!==void 0?s:t?.name||""},Se=e=>W(e,"computed"),Eo=(e,r)=>{switch(e?.type){case"number":return typeof r=="number"&&Number.isFinite(r);case"boolean":return typeof r=="boolean";case"string":return typeof r=="string";case"object":return r!==null&&typeof r=="object"&&!Array.isArray(r);default:return!1}},Ot=(e={},r={},{allowedScopes:n,preserveUnknown:o=!1}={})=>Object.fromEntries(Object.entries(e??{}).filter(([a,t])=>{let s=r[a];return s===void 0?o:!Se(s)&&(!n||n.includes(s.scope))&&Eo(s,t)})),qe=(e,r)=>new Error(`${r} has invalid path: ${JSON.stringify(e)}`),wm=(e,r,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw qe(r,n)}let a="";for(let t=1;t<e.length-1;t+=1){let s=e[t];if(s!=="\\"){if(s.charCodeAt(0)<32)throw qe(r,n);a+=s;continue}if(t+=1,t>=e.length-1)throw qe(r,n);let i=e[t];if(i==="u"){let c=e.slice(t+1,t+5);if(c.length!==4||!/^[0-9a-fA-F]{4}$/.test(c))throw qe(r,n);a+=String.fromCharCode(Number.parseInt(c,16)),t+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
|
|
2
|
+
`,r:"\r",t:" ",b:"\b",f:"\f"};if(!W(l,i))throw qe(r,n);a+=l[i]}return a},sl=(e,r="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw qe(e,r);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,r);n.push(i)},t=()=>{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,r);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw qe(e,r);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,r);o+=1,n.push(wm(p,e,r));return}o+=1}if(c||o>=e.length)throw qe(e,r)};for(a();o<e.length;){if(e[o]==="."){o+=1,a();continue}if(e[o]==="["){t();continue}throw qe(e,r)}return n},go=(e,r)=>{let n=e;for(let o of r){if(n==null||!W(n,o))return;n=n[o]}return n},ol=(e,r={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=sl(e),[o,a,...t]=n;if(o==="variables"){if(!a)return r.variables;let s=typeof r.resolveVariable=="function"?r.resolveVariable(a):r.variables?.[a];return go(s,t)}return o==="runtime"?go(r.runtime,n.slice(1)):go(r,n)},il=(e,r,n)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(n!==void 0&&r.length!==n)throw new Error(`Computed expression operator "${e}" requires ${n} operand(s)`)},vo=(e,r)=>{if(!Array.isArray(r))throw new Error(`Computed expression operator "${e}" requires an array`);if(r.length===0)throw new Error(`Computed expression operator "${e}" requires at least one operand`)},km=(e,r)=>{if(typeof r!="number"||!Number.isFinite(r))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Be=(e,r,n,o)=>(il(e,r,o),r.map(a=>xn(a,n))),Ve=(e,r,n,o)=>{let a=Be(e,r,n,o);return a.forEach(t=>km(e,t)),a},vm=(e,r,n)=>{switch(e){case"var":return ol(r,n);case"add":{let[o,a]=Ve(e,r,n,2);return o+a}case"sub":{let[o,a]=Ve(e,r,n,2);return o-a}case"mul":{let[o,a]=Ve(e,r,n,2);return o*a}case"div":{let[o,a]=Ve(e,r,n,2);return o/a}case"mod":{let[o,a]=Ve(e,r,n,2);return o%a}case"neg":{let[o]=Ve(e,r,n,1);return-o}case"round":{let[o]=Ve(e,r,n,1);return Math.round(o)}case"floor":{let[o]=Ve(e,r,n,1);return Math.floor(o)}case"ceil":{let[o]=Ve(e,r,n,1);return Math.ceil(o)}case"min":{let[o,a]=Ve(e,r,n,2);return Math.min(o,a)}case"max":{let[o,a]=Ve(e,r,n,2);return Math.max(o,a)}case"clamp":{let[o,a,t]=Ve(e,r,n,3);return Math.min(t,Math.max(a,o))}case"eq":{let[o,a]=Be(e,r,n,2);return yr.eq(o,a)}case"neq":{let[o,a]=Be(e,r,n,2);return yr.neq(o,a)}case"gt":{let[o,a]=Be(e,r,n,2);return yr.gt(o,a)}case"gte":{let[o,a]=Be(e,r,n,2);return yr.gte(o,a)}case"lt":{let[o,a]=Be(e,r,n,2);return yr.lt(o,a)}case"lte":{let[o,a]=Be(e,r,n,2);return yr.lte(o,a)}case"in":{let[o,a]=Be(e,r,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return vo(e,r),r.every(o=>!!xn(o,n));case"or":case"any":return vo(e,r),r.some(o=>!!xn(o,n));case"not":{let[o]=Be(e,r,n,1);return!o}case"length":{let[o]=Be(e,r,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,r,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return nl(r);default:throw new Error(`Unknown computed expression operator: ${e}`)}},xn=(e,r={})=>{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 vm(o,a,r)},Ao=(e,r)=>{if(e===null||typeof e!="object"||W(e,"literal"))return e;if(W(e,"var"))return{literal:ol(e.var,r)};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=>Ao(a,r)):Ao(o,r)]))},Am=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return $e(e),Pt(Ao(e,r))},al=(e,r)=>{if(!Ie(e))throw new Error(`${r} must be an object`);let n=W(e,"expr"),o=W(e,"value");if(n===o)throw new Error(`${r} must contain exactly one of expr or value`)},bo=(e,r,n)=>(al(e,r),W(e,"value")?nl(e.value):xn(e.expr,n)),Pm=(e,r={},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(Am(i.when,r))return bo(i,`Computed variable "${n}" branch ${s}`,r)}return bo(e.default,`Computed variable "${n}" default`,r)}if(o===a)throw new Error(`Computed variable "${n}" must contain exactly one of expr, value, or branches`);return bo(e,`Computed variable "${n}"`,r)},ll=(e,r,n)=>{switch(r){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: ${r} for computed variable ${e}`)}},xm=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}),Em=new Set(["and","or","all","any"]),Sm=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),Om=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),Rm=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),Cm=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),cl=new WeakMap,Wa=e=>e===null?"null":Array.isArray(e)?"object":typeof e,An=(e,r,n)=>{for(let o of Object.keys(e))if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},$m=(e,r,n,o)=>{if(n!==void 0&&n!==r)throw new Error(`Computed variable "${e}" ${o} expected type ${r}, got ${n}`)},ul=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{let t=`Computed variable "${r}" ${a} var`,[s,i,...l]=sl(e,t);if(s!=="variables"&&s!=="runtime")throw new Error(`${t} must reference variables.* or runtime.*, got ${JSON.stringify(e)}`);if(!i)throw new Error(`${t} must reference a concrete ${s} member, got ${JSON.stringify(e)}`);if(s==="runtime")return;if(!W(n,i))throw new Error(`Computed variable "${r}" ${a} references unknown variable "${i}"`);let c=n[i];return Se(c)&&o.add(i),l.length===0?c?.type:void 0},pl=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{if(e===null||typeof e!="object"){if(typeof e=="number"&&!Number.isFinite(e))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return Wa(e)}if(Array.isArray(e))throw new Error("Computed expression arrays are not valid; use value for literal arrays");let t=Object.entries(e);if(t.length!==1)throw new Error("Computed expression objects must contain exactly one operator");let[[s,i]]=t;if(s==="var"){if(typeof i!="string"||i.trim()==="")throw new Error("Computed expression var requires a non-empty string path");return ul(i,{variableId:r,variableConfigs:n,dependencies:o,path:a})}if(s==="literal"){if(typeof i=="number"&&!Number.isFinite(i))throw new Error(`Computed variable "${r}" ${a} must use finite numeric literals`);return Wa(i)}let l=xm[s];if(l===void 0&&!Em.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?vo(s,i):il(s,i,l);let c=i.map((u,p)=>pl(u,{variableId:r,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(Om.has(s)&&c.forEach(u=>{if(u!==void 0&&u!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),Sm.has(s))return"number";if(Rm.has(s))return"boolean"},_m=(e,{variableId:r,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 "${r}" ${a} is invalid: ${s.message}`,{cause:s})}let t=(s,i)=>{if(s===null||typeof s!="object"||W(s,"literal"))return;if(W(s,"var")){ul(s.var,{variableId:r,variableConfigs:n,dependencies:o,path:i});return}if(W(s,"call"))throw new Error(`Computed variable "${r}" ${i} function calls are not supported`);if(W(s,"not")){t(s.not,`${i}.not`);return}let l=Object.keys(s).find(c=>Cm.has(c));s[l].forEach((c,u)=>{t(c,`${i}.${l}[${u}]`)})};t(e,a)},Io=(e,{variableId:r,variableConfig:n,variableConfigs:o,dependencies:a,path:t,allowedKeys:s=new Set(["expr","value"])})=>{if(al(e,`Computed variable "${r}" ${t}`),An(e,s,t),W(e,"value")){ll(r,n.type,e.value);return}let i=pl(e.expr,{variableId:r,variableConfigs:o,dependencies:a,path:`${t}.expr`});$m(r,n.type,i,`${t}.expr`)},Tm=(e,r,n)=>{let o=r.computed;if(!Ie(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,t=W(o,"expr"),s=W(o,"value");if(W(o,"branches")){if(An(o,new Set(["branches","default"]),`Computed variable "${e}" computed`),t||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(An(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${c}`),!W(l,"when"))throw new Error(`Computed variable "${e}" branch ${c} requires when`);_m(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${c}].when`}),Io(l,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:`computed.branches[${c}]`,allowedKeys:new Set(["when","expr","value"])})}),Io(o.default,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(An(o,new Set(["expr","value"]),`Computed variable "${e}" computed`),t===s)throw new Error(`Computed variable "${e}" must contain exactly one of expr, value, or branches`);return Io(o,{variableId:e,variableConfig:r,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 r=new Map;Object.entries(e).forEach(([t,s])=>{if(Se(s)){if(!Ie(s))throw new Error(`Computed variable "${t}" must be an object`);if(!W(s,"type"))throw new Error(`Computed variable "${t}" requires type`);if(!W(s,"scope"))throw new Error(`Computed variable "${t}" requires scope`);if(W(s,"default"))throw new Error(`Computed variable "${t}" must not declare a top-level default`);if(Rt(s.scope,t),!["number","boolean","string","object"].includes(s.type))throw new Error(`Invalid variable type: ${s.type} for computed variable ${t}`);r.set(t,Tm(t,s,e))}});let n=new Set,o=[];r.forEach((t,s)=>{if(n.has(s))return;let i=[{variableId:s,dependencies:[...r.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:[...r.get(u)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return cl.set(e,a),a},Qr=({variables:e={},runtime:r={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=cl.get(n)??Dr(n),t=Ot(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(t,g)?t[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=Pm(h.computed,y,g);return ll(g,h.type,b),ko(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(t,g)?t[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(t,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(t),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!W(t,h)&&!s.includes(h)))return{enumerable:!0,configurable:!0}}}),y={variables:m,runtime:r,resolveVariable:d};return o?(s.forEach(g=>{d(g)}),{...t,...i}):m},Nm=({variables:e={},runtime:r={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return Dr(a),Qr({variables:e,runtime:r,variableConfigs:a,eager:!0})},On=e=>{let r={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if(Se(a))return;let t=um(a,o);a.scope==="context"?ko(r,o,t):ko(n,o,t)}),{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}},Rt=(e,r)=>{let n=["context","device","account"];if(!e)throw new Error(`Variable scope is required for variable: ${r}`);if(!n.includes(e))throw new Error(`Invalid variable scope: ${e} for variable ${r}. Expected one of: ${n.join(", ")}`)},Ct=(e,r,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(r))throw new Error(`Unknown operation: ${r}`);if(!a.includes(r))throw new Error(`Operation "${r}" is not valid for variable "${n}" of type "${e}". Valid operations: ${a.join(", ")}`)},jm=2,Ka=12,dl=(e=jm)=>{if(!Number.isInteger(e)||e<0||e>Ka)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${Ka}.`);return e},Dm=(e,r)=>{let n=10**r;return Math.round((e+Number.EPSILON)*n)/n},Pn=e=>typeof e=="number"&&Number.isFinite(e),Rn=(e,r,n,o,a={})=>{if(e==="number"){if(r==="set"&&!Pn(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(r==="multiply"&&!Pn(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(r==="divide"&&!Pn(n))throw new Error(`Operation "divide" requires value to be a number for variable "${o}".`);if(r==="divide"){if(n===0)throw new Error(`Operation "divide" requires value to be a non-zero number for variable "${o}".`);dl(a.roundTo)}}},Cn=(e,r,n,o={})=>{let a=(s,i,l)=>{let c=s??i;if(!Pn(c))throw new Error(`Operation "${r}" requires ${l} to be a number.`);return c},t=s=>{let i=a(s,void 0,"value");if(i===0)throw new Error(`Operation "${r}" requires value to be a non-zero number.`);return i};switch(r){case"set":return n;case"multiply":return a(e,1,"current value")*a(n,void 0,"value");case"divide":return Dm(a(e,0,"current value")/t(n),dl(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: ${r}`)}};var So=(e,r="DD/MM/YYYY - HH:mm")=>{if(!e)return"";let n=new Date(e),o=s=>String(s).padStart(2,"0"),a=String(n.getFullYear()),t={DD:o(n.getDate()),MM:o(n.getMonth()+1),MMM:cm[n.getMonth()],YYYY:a,YY:a.slice(-2),HH:o(n.getHours()),mm:o(n.getMinutes()),ss:o(n.getSeconds())};return r.replace(/YYYY|MMM|YY|MM|DD|HH|mm|ss/g,s=>t[s])},Lm=(e,r)=>{let n=t=>t?.ui,o=n(e),a=n(r);return JSON.stringify(o)===JSON.stringify(a)?null:o&&!a?{changeType:"delete",data:e}:a&&!o?{changeType:"add",data:r}:a&&o?{changeType:"update",data:r}:null},At=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,Mm=(e,r)=>{let n=e?.character?.sprite,o=r?.character?.sprite,a=At(n)?n:void 0,t=At(o)?o:void 0;return JSON.stringify(a)===JSON.stringify(t)?null:a&&!t?{changeType:"delete",data:a}:t&&!a?{changeType:"add",data:t}:t&&a?{changeType:"update",data:t}:null},Ja=e=>{if(e?.resourceId===void 0)return;let r={resourceId:e.resourceId};e.transformId!==void 0&&(r.transformId=e.transformId);for(let n of["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"])e[n]!==void 0&&(r[n]=e[n]);for(let n of["animationName","animationSpeed","loop"])e[n]!==void 0&&(r[n]=e[n]);return r},Qa=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},Za=(e,r)=>r&&!e?{changeType:"add",data:r}:e&&!r?{changeType:"delete",data:e}:e&&r&&JSON.stringify(e)!==JSON.stringify(r)?{changeType:"update",data:r}:null,Vm=(e,r)=>{let n={},o=Za(Ja(e),Ja(r)),a=Za(Qa(e),Qa(r));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},Oo=(e={},r={})=>{let n={},o=["sfx","voice"],a=l=>{let c=e[l],u=r[l];u&&!c?n[l]={changeType:"add",data:u}:c&&!u?o.includes(l)||(n[l]={changeType:"delete",data:c}):c&&u&&JSON.stringify(c)!==JSON.stringify(u)&&(n[l]={changeType:"update",data:u})},t=Vm(e.background,r.background);t&&(n.background=t),a("screen"),a("bgm"),a("voice");let s=Lm(e.dialogue,r.dialogue);s&&(n.dialogue=s);let i=Mm(e.dialogue,r.dialogue);return i&&(n.dialogueSprite=i),a("choice"),a("form"),a("layout"),a("animation"),a("control"),a("character"),a("visual"),a("sfx"),n},Ro=(e={})=>{let r=structuredClone(e);r.background&&(r.background.animations?.playback?.continuity!=="persistent"&&delete r.background.animations,!r.background.resourceId&&!r.background.colorId&&delete r.background);let n=a=>{r[a]&&(delete r[a].animations,Object.keys(r[a]).length===0&&delete r[a])};n("layout"),n("choice"),n("form"),n("screen"),r.dialogue?.ui&&(delete r.dialogue.ui.animations,Object.keys(r.dialogue.ui).length===0&&delete r.dialogue.ui,Object.keys(r.dialogue).length===0&&delete r.dialogue),r.dialogue?.character?.sprite&&(delete r.dialogue.character.sprite.animations,Object.keys(r.dialogue.character.sprite).length===0&&delete r.dialogue.character.sprite,Object.keys(r.dialogue.character).length===0&&delete r.dialogue.character,Object.keys(r.dialogue).length===0&&delete r.dialogue);let o=(a,t)=>{let s=r[a]?.items;Array.isArray(s)&&(r[a].items=s.map(i=>{let l={...i};return l.animations?.playback?.continuity!=="persistent"&&delete l.animations,t(l)?l:null}).filter(Boolean),r[a].items.length===0&&delete r[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),r},qm=(e,r)=>{if(!e||!r)return;let n=e;for(let o of r.split(".")){if(n==null||o==="__proto__"||o==="prototype"||o==="constructor"||!Object.prototype.hasOwnProperty.call(Object(n),o))return;n=n[o]}return n},el=e=>e!==null&&typeof e=="object"?structuredClone(e):e,Fm=(e,r,n)=>{if(typeof e!="string")return e;let o=Object.prototype.hasOwnProperty.call(r??{},n)?r[n]:void 0;if(e===n){if(o==null)throw new Error(`Action template binding "${n}" requires event context "${n}".`);return el(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),t=qm(o,a);if(t===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "${n}".`);return el(t)},Um={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"])},Bm=(e,r)=>{let n=e[e.length-1];return n?Um[n]?.has(r)===!0:!1},Po=(e,r,n=[])=>Array.isArray(e)?e.map(o=>Po(o,r,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,Bm(n,o)?a:Po(a,r,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?Fm(e,r,"_event"):Nr(e,r):e,$t=(e,r)=>{if(!r)return e;if(Object.prototype.hasOwnProperty.call(r,"event"))throw new Error('Action template context key "event" is no longer supported. Use "_event".');return Po(e,r)};var Ym=11102230246251565e-32,fl=128,ml=1e3,yl=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),_t=(e,r,n)=>{let o=Object.keys(e).find(a=>!r.has(a));if(o!==void 0)throw new Error(`${n}.${o} is not supported`)},$n=(e,r)=>{if(!yl(e))throw new Error(`${r} must be an object`)},_n=(e,r,{min:n,max:o}={})=>{if(!Number.isSafeInteger(e))throw new Error(`${r} must be a safe integer`);if(n!==void 0&&e<n)throw new Error(`${r} must be at least ${n}`);if(o!==void 0&&e>o)throw new Error(`${r} must be at most ${o}`);return e},zm=(e,r,{min:n,max:o}={})=>{if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${r} must be a finite number`);if(n!==void 0&&e<n)throw new Error(`${r} must be at least ${n}`);if(o!==void 0&&e>o)throw new Error(`${r} must be at most ${o}`);return e},Co=e=>{let r=structuredClone(e),n=o=>(o&&typeof o=="object"&&!Object.isFrozen(o)&&(Object.values(o).forEach(n),Object.freeze(o)),o);return n(r)},Gm=()=>({nextUint32(){return typeof globalThis.crypto?.getRandomValues=="function"?globalThis.crypto.getRandomValues(new Uint32Array(1))[0]:Math.floor(Math.random()*4294967296)}}),hl=e=>{let r=e??Gm();if(!yl(r)||typeof r.nextUint32!="function")throw new TypeError("randomSource must provide nextUint32()");return{nextUint32(){let n=r.nextUint32();if(!Number.isInteger(n)||n<0||n>=4294967296)throw new Error("randomSource.nextUint32() must return an integer from 0 through 4294967295");return n}}},Hm=(e,r)=>{let n=4294967296-4294967296%r;for(let o=0;o<fl;o+=1){let a=e.nextUint32();if(a<n)return a%r}throw new Error(`random source exhausted after ${fl} rejected samples`)},Xm=e=>{let r=e.nextUint32()>>>5,n=e.nextUint32()>>>6;return(r*67108864+n)/9007199254740992},Wm=(e,r)=>{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 Co({type:"integer",value:a===1?n:n+Hm(r,a)})},Km=(e,r)=>{if(_t(e,new Set(["type","outcomes"]),"random.distribution"),!Array.isArray(e.outcomes)||e.outcomes.length<1||e.outcomes.length>ml)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($n(c,p),_t(c,new Set(["weight","actions"]),p),!Object.prototype.hasOwnProperty.call(c,"weight"))throw new Error(`${p}.weight is required`);return $n(c.actions,`${p}.actions`),{weight:zm(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})),t=a.reduce((c,u)=>c+u.weight,0);a.forEach((c,u)=>{if(n[u].weight>0&&(c.weight===0||c.weight/t<=Ym))throw new Error(`random.distribution.outcomes[${u}].weight is below the supported probability resolution`)});let s=Xm(r)*t,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 Co({type:"weighted",outcomeIndex:l})},gl=(e,{randomSource:r})=>{$n(e,"random.distribution");let o={integer:Wm,weighted:Km}[e.type];if(!o)throw new Error('random.distribution.type must be "integer" or "weighted"');return o(e,r)},Tn=(e,r)=>{if($n(e,"random result"),e.type!==r)throw new Error("random result type does not match its recorded type");if(r==="integer")_t(e,new Set(["type","value"]),"random result"),_n(e.value,"random result.value");else if(r==="weighted")_t(e,new Set(["type","outcomeIndex"]),"random result"),_n(e.outcomeIndex,"random result.outcomeIndex",{min:0,max:ml-1});else throw new Error(`unsupported recorded random result type: ${r}`);return Co(e)};var Lr=(e,r)=>Object.freeze({name:e,actions:Object.freeze(r)}),wl=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;wl.forEach(e=>{e.actions.forEach(r=>{if(Zr.has(r))throw new Error(`duplicate action execution key: ${r}`);Zr.set(r,Zr.size)})});var Jm=new Set(wl.find(({name:e})=>e==="navigation").actions),bl=Zr.get("saveSlot")-.5,Il=(e,r)=>e!=="random"?e:r?.distribution?.type==="weighted"?"random:weighted":"random:integer",Qm=(e,r)=>e<r?-1:e>r?1:0,Nn=e=>Object.entries(e).sort((r,n)=>{let o=Il(...r),a=Il(...n),t=Zr.get(o),s=Zr.get(a),i=t??bl,l=s??bl;return i!==l?i-l:t!==void 0&&s!==void 0?0:Qm(o,a)}),$o=e=>Jm.has(e),jn=e=>{let r=e.map(([n])=>n).filter($o);if(!(r.length<=1))throw new Error(`action batch cannot contain multiple navigation actions: ${r.join(", ")}`)};var ue=e=>structuredClone(we(e)?pr(e):e),se=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Tt=e=>e?.animations?.playback?.continuity==="persistent",X=(e,r)=>se(e??{},r)&&e[r]!==void 0,Nt=(e,r)=>e?!r(e)&&e.animations?{animationsOnly:!0,state:{animations:ue(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},Zm=e=>X(e,"opacity")||X(e,"blur"),To=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Ol=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],_o=["animationName","animationSpeed","loop"],ey=e=>X(e,"transformId")||X(e,"transform")||To.some(r=>X(e,r)),Rl=e=>e?.text&&X(e.text,"content")&&X(e.text,"textStyleId"),Cl=e=>e?.layout&&Array.isArray(e.layout.elements),ry=e=>X(e,"text")||X(e,"layout"),kl=(e,r)=>e.resourceId?!0:Rl(e)?!r?.text:Cl(e)?!r?.layout:!1,vl=e=>e?.sprites&&e.sprites.length>0||e?.transformId||e?.resourceId,ty=(e,r)=>{let n={...ue(e),...r};if(r.text&&e.text&&(n.text={...ue(e.text),...ue(r.text)}),r.transform&&e.transform&&(n.transform={...ue(e.transform),...ue(r.transform)}),X(r,"transform")){delete n.transformId;for(let o of To)X(r,o)||delete n[o]}else X(r,"transformId")&&delete n.transform;return n},ny=(e,r)=>{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(X(e,"text")&&!Rl(e)&&!r?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);if(X(e,"layout")&&!Cl(e))throw new Error(`Visual item "${e.id}" layout requires elements`)},Al=e=>Ol.some(r=>X(e,r)),Pl=e=>_o.some(r=>X(e,r)),sy=(e,r,{hasAuthoredTransformId:n=!1}={})=>{if(!r)return e;for(let o of Ol)!n&&!X(e,o)&&X(r,o)&&(e[o]=r[o]),se(e,o)&&e[o]===void 0&&delete e[o];return e},$l=(e,r,n)=>{let o=e[n];return o?.id===r?.id?o:e.find(a=>a.id===r?.id)},oy=(e,r)=>{if(!r)return e;for(let n of To)!X(e,n)&&X(r,n)&&(e[n]=r[n]),se(e,n)&&e[n]===void 0&&delete e[n];return e},iy=(e,r)=>(r&&(!X(e,"opacity")&&X(r,"opacity")&&(e.opacity=r.opacity),!X(e,"blur")&&X(r,"blur")&&(e.blur=ue(r.blur)),se(e,"opacity")&&e.opacity===void 0&&delete e.opacity,se(e,"blur")&&e.blur===void 0&&delete e.blur),e),_l=(e,r,n=[],{hasPatchFn:o=()=>!1,mergeItemFn:a}={})=>{if(!e||e.length===0)return{hasValidItems:!1,processedItems:[]};let t=e.map((s,i)=>{let l=$l(n,s,i),c=r(s,l),u=Zm(s),p=ey(s),f=o(s),d=se(s,"animations"),m=ue(s);if(!c&&(u||p||f)&&l&&(m=a?a(l,m):{...ue(l),...m}),!d){let y=l?r(l):!1,g=r(m);y&&g&&Tt(l)?m.animations=ue(l.animations):delete m.animations}return iy(oy(m,l),l)}).filter(s=>r(s)||s.animations);return{hasValidItems:t.length>0,processedItems:t}},ay=e=>{if(e){if(e.character&&se(e.character,"name"))return e.character.name;if(se(e,"characterName"))return e.characterName}},Tl=e=>!!e?.character&&se(e.character,"sprite"),ly=e=>{let r={},n=!1,o=ay(e);return o!==void 0&&(r.name=o,n=!0),Tl(e)&&(r.sprite=ue(e.character.sprite),n=!0),n?r:void 0},xl=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},El=({dialogueState:e,dialogueAction:r,persistCharacter:n})=>se(r,"persistSprite")?r.persistSprite===!0:se(e,"persistSprite")?e.persistSprite===!0:n&&!se(r,"characterId"),Sl=({previousCharacter:e,characterFields:r,hasCharacterId:n,persistCharacter:o,persistSprite:a,hasExplicitPersistSprite:t,isAppendingAdvDialogueContent:s})=>{let i={},l=e??{},c=r??{},u=s&&!n,p=u&&!t;return se(c,"name")?i.name=c.name:(o&&!n||u)&&se(l,"name")&&(i.name=ue(l.name)),se(c,"sprite")?i.sprite=ue(c.sprite):(a||p)&&se(l,"sprite")&&(i.sprite=ue(l.sprite)),Object.keys(i).length>0?i:void 0},cy=({dialogueState:e,content:r,append:n=!1})=>{if(!n||!Array.isArray(r)){e.content=r,delete e.initialRevealedContent;return}let o=Array.isArray(e.content)?e.content:[];o.length>0?e.initialRevealedContent=o.map(a=>ue(a)):delete e.initialRevealedContent,e.content=[...o,...r]},uy=()=>({}),py=(e,r)=>{if(!r.screen)return;let n=X(r.screen,"opacity"),o=X(r.screen,"blur"),a=se(r.screen,"animations");if(!n&&!o){a||delete e.screen;return}let t=e.screen,s={};if(n?s.opacity=r.screen.opacity:X(t,"opacity")&&(s.opacity=t.opacity),o?s.blur=ue(r.screen.blur):X(t,"blur")&&(s.blur=ue(t.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},dy=(e,r)=>{if(r.background){let n=X(r.background,"resourceId"),o=X(r.background,"colorId"),a=X(r.background,"opacity"),t=X(r.background,"blur"),s=X(r.background,"transformId"),i=Al(r.background),l=Pl(r.background),{animationsOnly:c,state:u}=Nt(r.background,d=>X(d,"resourceId")||X(d,"colorId")||X(d,"opacity")||X(d,"blur")||X(d,"transformId")||Al(d)||Pl(d));if(c){e.background=e.background?{...ue(e.background),...u}:u;return}if(!n&&!o&&!a&&!t&&!s&&!i&&!l){delete e.background;return}let p=e.background,f=ue(r.background);if(!n&&p?.resourceId){f.resourceId=p.resourceId,!se(f,"transformId")&&p.transformId&&(f.transformId=p.transformId);for(let d of _o)!X(f,d)&&X(p,d)&&(f[d]=p[d])}sy(f,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(f.colorId=p.colorId),!a&&X(p,"opacity")&&(f.opacity=p.opacity),!t&&X(p,"blur")&&(f.blur=ue(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")&&Tt(p)&&(f.animations=ue(p.animations)),e.background=f}else e.background?.animations&&!Tt(e.background)&&(e.background.animations={})},fy=(e,r)=>{if(!r.dialogue){if(e.dialogue&&(xl(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=El({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:u});u||delete e.dialogue.characterId,e.dialogue.character=Sl({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(r.dialogue.ui){let{animationsOnly:u,state:p}=Nt(r.dialogue.ui,f=>!!f.resourceId);u?e.dialogue.ui={...e.dialogue.ui,...p}:e.dialogue.ui={...r.dialogue.ui}}else e.dialogue?.ui?.animations&&(e.dialogue.ui.animations={});r.dialogue.mode==="adv"&&(e.dialogue.content=e.dialogue.content||void 0,e.dialogue.characterId=e.dialogue.characterId||void 0,e.dialogue.mode="adv"),r.dialogue.mode==="nvl"&&(e.dialogue?.mode!=="nvl"&&(e.dialogue.lines=[]),e.dialogue.mode="nvl");let o=r.dialogue.append===!0&&n!=="nvl"&&e.dialogue?.mode!=="nvl"&&Array.isArray(r.dialogue.content);r.dialogue.content!==void 0&&cy({dialogueState:e.dialogue,content:r.dialogue.content,append:o}),se(r.dialogue,"textSpeed")?e.dialogue.textSpeed=r.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=se(r.dialogue,"persistCharacter")?r.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let t=El({dialogueState:e.dialogue,dialogueAction:r.dialogue,persistCharacter:a});se(r.dialogue,"persistSprite")&&(e.dialogue.persistSprite=t);let s=se(r.dialogue,"characterId"),i=ly(r.dialogue),l=Tl(r.dialogue);s?r.dialogue.characterId?e.dialogue.characterId=r.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let c=Sl({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:t,hasExplicitPersistSprite:se(r.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(c?e.dialogue.character=c:delete e.dialogue.character,l||xl(e.dialogue),r.dialogue.clear){delete e.dialogue;return}if(r.dialogue?.clearPage&&e.dialogue?.mode==="nvl"&&(e.dialogue.lines=[]),e.dialogue?.mode==="nvl"&&r.dialogue.content!==void 0){let u={content:r.dialogue.content,characterId:e.dialogue.characterId??null};e.dialogue.textSpeed!==void 0&&(u.textSpeed=e.dialogue.textSpeed),e.dialogue.character&&(u.character=ue(e.dialogue.character)),e.dialogue.lines.push(u)}},my=(e,r)=>{if(r.sfx){let n=Array.isArray(r.sfx.items)&&r.sfx.items.length>0,o=Array.isArray(r.sfx.channels)&&r.sfx.channels.length>0;if(!n&&!o){delete e.sfx;return}e.sfx=ue(r.sfx)}else e.sfx&&delete e.sfx},yy=(e,r)=>{if(r.bgm){let n=Array.isArray(r.bgm.sounds);if(!r.bgm.resourceId&&!n||n&&r.bgm.sounds.length===0){e.bgm=void 0;return}e.bgm=ue(r.bgm),r.bgm.resourceId&&(e.bgm.loop=r.bgm.loop??!0)}},hy=(e,r)=>{if(r.visual){let n=e.visual?.items||[];r.visual.items?.forEach((t,s)=>{ny(t,$l(n,t,s))});let{hasValidItems:o,processedItems:a}=_l(r.visual.items,kl,n,{hasPatchFn:ry,mergeItemFn:ty});o?e.visual={items:a}:delete e.visual}else e.visual?.items&&(e.visual.items=e.visual.items.map(n=>n.animations&&(!kl(n)||!Tt(n))?{...n,animations:{}}:n))},gy=(e,r)=>{if(!r.character){e.character?.items&&(e.character.items=e.character.items.map(a=>a.animations&&(!vl(a)||!Tt(a))?{...a,animations:{}}:a));return}let{hasValidItems:n,processedItems:o}=_l(r.character.items,vl,e.character?.items||[]);n?e.character={items:o}:delete e.character},by=(e,r)=>{r.animation?e.animation=r.animation:e.animation&&delete e.animation},Iy=(e,r)=>{if(r.layout){let{animationsOnly:n,state:o}=Nt(r.layout,a=>!!a.resourceId);if(n){e.layout=o;return}if(!r.layout.resourceId){delete e.layout;return}e.layout=r.layout}else e.layout&&delete e.layout},wy=(e,r)=>{if(r.choice){let{animationsOnly:n,state:o}=Nt(r.choice,a=>!!a.resourceId);if(n){e.choice={...e.choice,...o};return}if(!r.choice.resourceId){delete e.choice;return}e.choice=r.choice}else e.choice&&delete e.choice},ky=(e,r)=>{if(r.form){let{animationsOnly:n,state:o}=Nt(r.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!r.form.resourceId){delete e.form;return}e.form=ue(r.form)}else e.form&&delete e.form},vy=(e,r)=>{if(r.control){if(!r.control.resourceId){delete e.control;return}e.control=r.control}},Ay=(e,r)=>{if(r.voice){let n=Array.isArray(r.voice.sounds);if(!r.voice.resourceId&&!n||n&&r.voice.sounds.length===0){delete e.voice;return}e.voice=ue(r.voice)}else e.voice&&delete e.voice},Py=(e,r)=>{r.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},Mr=e=>En(uy,[Py,py,dy,my,yy,hy,fy,gy,by,Iy,wy,ky,vy,Ay])(e);var et=(e,r)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=Nr(e,r);return n&&typeof n=="object"?e:n};var xy=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:""}),Ey=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"}),No=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),Nl=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),jo=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),jl=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Sy=(e,r)=>{let n=Ey[e];if(n==="number"){if(typeof r!="number"||!Number.isFinite(r))throw new Error(`${e} requires a finite numeric value`);return}if(n==="boolean"){if(typeof r!="boolean")throw new Error(`${e} requires a boolean value`);return}if(n==="string"){if(typeof r!="string")throw new Error(`${e} requires a string value`);return}if(n==="nullableString"){if(r!==null&&typeof r!="string")throw new Error(`${e} requires a string or null value`);return}throw new Error(`Unsupported runtime field "${e}"`)},Dn=(e,r)=>{if(Sy(e,r),e==="autoForwardDelay"&&r<0)throw new Error("autoForwardDelay requires a value greater than or equal to 0");if(["autoForwardSpeed","soundVolume","musicVolume"].includes(e)&&(r<0||r>100))throw new Error(`${e} requires a value between 0 and 100`);return e==="saveLoadPagination"?Math.max(1,Math.trunc(r)):r},Do=(e={})=>{let r=e?.config;if(r===void 0)return{...hr};if(!jl(r))throw new Error("projectData.config must be an object");let n=Object.keys(r).find(i=>i!=="runtimeDefaults");if(n)throw new Error(`projectData.config contains unsupported field "${n}"`);let o=r.runtimeDefaults;if(o===void 0)return{...hr};if(!jl(o))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set(Nl),t=Object.keys(o).find(i=>!a.has(i));if(t)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${t}"`);let s={...hr};return Nl.forEach(i=>{o[i]!==void 0&&(s[i]=Dn(i,o[i]))}),s},Oy=(e,r)=>{if(r.startsWith("global.")){let n=r.slice(7);return e?.global?.[n]}if(r.startsWith("context.runtime.")){let n=r.slice(16),o=Array.isArray(e?.contexts)?e.contexts:[];return o[o.length-1]?.runtime?.[n]}},gr=e=>Object.fromEntries(Object.entries(xy).map(([r,n])=>{let o=Oy(e,n.source),a=o!==void 0?o:hr[r]??jt[r];return[r,a]})),We=(e,r)=>gr(e)[r],Dl=(e={})=>Object.fromEntries(No.map(r=>[r,e[r]??hr[r]]));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}),nr=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}),Lo=nr.BEHIND_DIALOGUE,Mo=Object.freeze(Object.values(nr).sort((e,r)=>e-r));var Ry={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([r,n])=>({id:r,...n})),formatDate:So},Cy=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,Dt=e=>Array.isArray(e)?e.map(r=>{if(!r||typeof r!="object"||Array.isArray(r)||Object.keys(r).length!==1)return Dt(r);let[n]=Object.keys(r),o=Cy.exec(n);if(!o)return Dt(r);let[,a,t,s]=o,i=`$for ${a}${t?`, ${t}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(r[n])?r[n]:[];return{[i]:Dt(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Dt(n)])),sr=(e,r)=>{let n={functions:Ry};return Nr(Dt(e),r,n)},ri=({animationType:e,animationId:r,animationPath:n})=>{if(e!==void 0&&!(e==="update"||e==="transition"))throw new Error(`[${n}] Animation "${r}" has unsupported type "${e}". Use "update" or "transition".`)},$y=({id:e,targetId:r,animation:n,playback:o,animationPath:a="animation"})=>{let t=structuredClone(n);if(ri({animationType:t.type,animationId:e,animationPath:a}),delete t.name,delete t.playback,t.id=e,t.targetId=r,o!==void 0){let s=jy(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?Ql(t):null;if(s.loop===!0&&t.type!=="update")throw new Error(`[${a}.playback] playback.loop is only supported for type "update".`);if(s.loop===!0&&t.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.`);t.playback=s}}return t},_y=(e,{animationId:r="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return ri({animationType:e.type,animationId:r,animationPath:n}),e.type},Ty=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},Ny=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},jy=(e,r="animation.playback")=>{if(e===void 0)return;if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`[${r}] playback must be an object.`);if(e.continuity!==void 0&&e.continuity!=="render"&&e.continuity!=="persistent")throw new Error(`[${r}] 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(`[${r}] playback.speed must be a finite number greater than 0.`);if(e.loop!==void 0&&typeof e.loop!="boolean")throw new Error(`[${r}] 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},Dy=e=>{let r=e?.playback?.speed;return typeof r=="number"&&Number.isFinite(r)&&r>0?r:1},br=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Wl=e=>e?.playback?.continuity==="persistent",Go=e=>Array.isArray(e)?e.map(Go):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((r,n)=>(r[n]=Go(e[n]),r),{}),qn=e=>{if(!e||typeof e!="object"||Array.isArray(e))return null;let r=structuredClone(e);return r.playback&&(delete r.playback.continuity,r.playback.speed===1&&delete r.playback.speed,Object.keys(r.playback).length===0&&delete r.playback),JSON.stringify(Go(r))},Kl=(e=[])=>e.filter(r=>Wl(r)).map(r=>structuredClone(r)),Jl=e=>Array.isArray(e?.keyframes)?e.keyframes.reduce((r,n)=>{let o=typeof n?.duration=="number"&&Number.isFinite(n.duration)?n.duration:0;return r+o},0):0,Vo=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((r,n)=>Math.max(r,Jl(n)),0),Ql=e=>Math.max(Vo(e?.tween),Vo(e?.prev?.tween),Vo(e?.next?.tween),Jl(e?.mask?.progress)),Zl=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:Ql(e)/Dy(e),Ly=e=>e.some(r=>r?.playback?.loop===!0),Ll=({animationInstances:e,activePersistentAnimations:r})=>{if(!Array.isArray(e)||e.length===0||!Array.isArray(r)||r.length===0)return!1;let n=new Set(r.map(qn).filter(Boolean));return e.some(o=>{if(!Wl(o))return!1;let a=qn(o);return a?n.has(a):!1})},Ye=({animationInstances:e,isLineCompleted:r,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:t=!0})=>!Array.isArray(e)||e.length===0||n?!1:Ly(e)||t&&!r||Ll({animationInstances:e,activePersistentAnimations:o})?!0:t?!1:Ll({animationInstances:e,activePersistentAnimations:a}),ec=(e,r,n,o,a)=>{if(e===void 0)return!0;let t=a.slice(0,o).filter(i=>i?.id===n).length,s=e?.[r]?.items?.filter(i=>i?.id===n).at(t);return br(s??{},"animations")},My=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(r=>e[r]!==void 0),Vy=(e,r)=>{if(My(e))throw new Error(`[${r}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},qy=({resources:e,animationId:r,playback:n,instanceId:o,targetId:a,animationPath:t="animation"})=>{if(!r||!a)return!1;let s=e?.animations?.[r];return s?$y({id:o,targetId:a,animation:s,playback:n,animationPath:t}):null},Fy=(e,{defaultTargetId:r,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return ri({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=r,a},ti=({animations:e,transitions:r,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{r.forEach((t,s)=>{e.push(Fy(t,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},Ho=(e,r)=>{if(e===void 0)return[];if(!Array.isArray(e)||e.some(n=>n===null||typeof n!="object"||Array.isArray(n)))throw new Error(`${r} must be an array of objects`);return e},Uy=({content:e,path:r,variables:n})=>Ho(e,r).reduce((o,a)=>{let t=et(a.text,{variables:n});return o+`${t??""}`.length},0),Ml=(e=[])=>{let r=new Map;for(let n of e)n?.id&&r.set(n.id,(r.get(n.id)??0)+1);return new Set(Array.from(r.entries()).filter(([,n])=>n>1).map(([n])=>n))},Ln=(e,r=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}-${r}-${o.join("-")}`},nt=(e,r)=>{if(r.transformId&&r.transform)throw new Error(`Visual item "${r.id}" cannot define both transformId and transform`);if(r.transform)return r.transform;if(!r.transformId)throw new Error(`Visual item "${r.id}" requires transformId or transform`);let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for visual item "${r.id}"`);return n},By=(e,r={})=>{if(!r?.transformId)return;let n=e.transforms?.[r.transformId];if(!n)throw new Error(`Transform "${r.transformId}" not found for background`);return n},Yy=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],zy=(e={})=>Yy.some(r=>br(e,r)),rc=(e={},r)=>{if(r){if(e.images?.[r])return"sprite";if(e.videos?.[r])return"video";if(e.spritesheets?.[r])return"spritesheet-animation";if(e.layouts?.[r])return"container"}},Vn=({resourceId:e,kind:r})=>{if(e)return r?`bg-cg-background-${r}`:`bg-cg-${e}`},Gy=(e={})=>e.textStyles||{},Hy=(e={})=>e.images||{},Xy=.5,Wy=(e={},r,n)=>{if(r){if(!e.animations?.[r])throw new Error(`Animation '${r}' not found in spritesheet resource '${n}'`);return r}return Object.keys(e.animations??{})[0]},ni=({id:e,resourceId:r,spritesheet:n,animationName:o,animationSpeed:a,loop:t,width:s,height:i,transform:l={}}={})=>{let c=Wy(n,o,r),u=c?n.animations?.[c]:void 0;if(!u){console.warn(`Spritesheet animation not found: ${r}`);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??Xy,loop:t??u.loop??!0}}},tc=({id:e,item:r,resources:n={}}={})=>{let o=n.images?.[r.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?.[r.resourceId];if(a)return ni({id:e,resourceId:r.resourceId,spritesheet:a,animationName:r.animationName,animationSpeed:r.animationSpeed,loop:r.loop,transform:{x:0,y:0}});console.warn(`Character sprite resource not found: ${r.resourceId}`)},Ky=(e={})=>e.colors||{},Jy=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Mt=(e,r)=>e==="root"?`${r}`:`${e}.${r}`,st=(e,r,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${r}" must resolve to a non-empty string`)},qo=(e,r,n)=>{if(e===void 0)return 1;if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);if(e<0||e>1)throw new Error(`${r} for text style "${n}" must be a number between 0 and 1`);return e},Fo=(e,r,n,o,{minimum:a}={})=>{if(e===void 0)return o;if(typeof e!="number"||!Number.isFinite(e)||a!==void 0&&e<a){let t=a===void 0?"a finite number":`a finite number >= ${a}`;throw new Error(`shadow.${r} for text style "${n}" must be ${t}`)}return e},Bn=(e,r)=>{if(typeof e!="string"||!Jy.test(e))throw new Error(`${r} must resolve to a hex color`);return e.length===4?`#${e.slice(1).split("").map(n=>n.repeat(2)).join("")}`:e},Vl=(e,r,n)=>{let o=Bn(e,n);if(r===1)return o;let a=Number.parseInt(o.slice(1,3),16),t=Number.parseInt(o.slice(3,5),16),s=Number.parseInt(o.slice(5,7),16);return`rgba(${a}, ${t}, ${s}, ${r})`},Qy=(e={},r)=>{let n=Gy(e)?.[r];if(!n)throw new Error(`Text style "${r}" 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 "${r}"`);return c.fileId}),t=e.colors?.[n.colorId];if(!t)throw new Error(`Color "${n.colorId}" not found for text style "${r}"`);let s=qo(n.colorAlpha,"colorAlpha",r),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:Vl(t.hex,s,`Color "${n.colorId}" for text style "${r}"`)};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 "${r}"`);let c=qo(n.strokeAlpha,"strokeAlpha",r);i.strokeColor=Vl(l.hex,c,`Stroke color "${n.strokeColorId}" for text style "${r}"`)}else if(n.strokeAlpha!==void 0)throw new Error(`strokeAlpha for text style "${r}" 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 "${r}"`);i.shadow={color:Bn(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${r}"`),alpha:qo(n.shadow.alpha,"shadow.alpha",r),blur:Fo(n.shadow.blur,"blur",r,0,{minimum:0}),offsetX:Fo(n.shadow.offsetX,"offsetX",r,2),offsetY:Fo(n.shadow.offsetY,"offsetY",r,2)}}return i},Xo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Xo(a,r,`${n}[${t}]`));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,t]of Object.entries(e))a!=="textStyleId"&&(o[a]=Xo(t,r,Mt(n,a)));return e.textStyleId!==void 0&&(st(e.textStyleId,n,"textStyleId"),o.textStyle=Qy(r,e.textStyleId)),o},si=(e={},r)=>{let n=Ky(e)?.[r];if(!n)throw new Error(`Color "${r}" not found`);return Bn(n.hex,`Color "${r}"`)},nc=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",Uo=(e,r,n)=>{let o=e?.[r];if(!(!o||typeof o!="object"||Array.isArray(o))&&Object.prototype.hasOwnProperty.call(o,"fill"))throw new Error(`Inline ${r}.fill is not allowed in rect layout elements at "${n}". Use ${nc(`${r}.fill`)} instead`)},Zy=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Vt(a,r,`${n}[${t}]`));if(!e||typeof e!="object")return e;let o={};for(let[a,t]of Object.entries(e))a!=="colorId"&&(o[a]=Vt(t,r,Mt(n,a)));return e.colorId!==void 0&&(st(e.colorId,n,"colorId"),o.fill=si(r,e.colorId)),o},Vt=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Vt(a,r,`${n}[${t}]`));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 ${nc("fill")} instead`);Uo(e,"hover",n),Uo(e,"click",n),Uo(e,"rightClick",n)}let o={};for(let[a,t]of Object.entries(e))if(!(e.type==="rect"&&a==="colorId")){if(e.type==="rect"&&(a==="hover"||a==="click"||a==="rightClick")){o[a]=Zy(t,r,Mt(n,a));continue}o[a]=Vt(t,r,Mt(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(st(e.colorId,n,"colorId"),o.fill=si(r,e.colorId)),o},Bo=(e={},r)=>{let n=Hy(e)?.[r];return n||null},sc=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",ql=(e,r,n,o)=>{let a=e?.[r];if(!(!a||typeof a!="object"||Array.isArray(a))&&Object.prototype.hasOwnProperty.call(a,o))throw new Error(`Inline ${r}.${o} is not allowed in sprite layout elements at "${n}". Use ${sc(`${r}.${o}`)} instead`)},Fl=(e,r,n)=>{let o=e[r];e[r]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},Wo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Wo(a,r,`${n}[${t}]`));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 ${sc(a)} instead`);ql(e,"hover",n,"src"),ql(e,"click",n,"src")}let o={};for(let[a,t]of Object.entries(e))e.type==="sprite"&&(a==="imageId"||a==="hoverImageId"||a==="clickImageId")||(o[a]=Wo(t,r,Mt(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){st(e.imageId,n,"imageId");let a=Bo(r,e.imageId),t=a?.fileId??e.imageId;o.src=t,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"),Fl(o,"hover",Bo(r,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(st(e.clickImageId,n,"clickImageId"),Fl(o,"click",Bo(r,e.clickImageId)?.fileId??e.clickImageId)),o},oi=(e,r={},n="root")=>Wo(Vt(Xo(e,r,n),r,n),r,n),or=oi,qr=(e=[])=>e.find(r=>r.id==="story"),eh="#000000",Ko="bg-cg-background-color",rh=({resources:e={},background:r={},screen:n})=>r?.colorId===void 0?Bn(n?.backgroundColor??eh,"screen.backgroundColor"):si(e,r.colorId),oc=(e={})=>{if(br(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},th=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Ul=(e={},{includeDefaultAlpha:r=!1}={})=>{let n=oc(e),o=th(e),a={};return(r||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},nh=(e={})=>{if(br(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},sh=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},ic=(e={})=>{let r=nh(e),n=sh(e),o={};return r!==void 0&&(o.alpha=r),n&&(o.blur=n),o},Vr=(e={})=>ic(e),Ke=(e={},r={})=>{let n={x:r.x??e.x,y:r.y??e.y,anchorX:r.anchorX??e.anchorX,anchorY:r.anchorY??e.anchorY,rotation:r.rotation??e.rotation,scaleX:r.scaleX??e.scaleX,scaleY:r.scaleY??e.scaleY},o=r.originX??e.originX,a=r.originY??e.originY;return o!==void 0&&(n.originX=o),a!==void 0&&(n.originY=a),n},oh=["id","type","resourceId","layout","transformId","transform","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],ii=(e={})=>e.text&&br(e.text,"content")&&br(e.text,"textStyleId"),ai=(e={})=>e.layout&&Array.isArray(e.layout.elements),Bl=(e={})=>{if(e.resourceId)return e.resourceId;if(ii(e))return"text";if(ai(e))return"inline-layout"},Yl=(e,r={})=>typeof e=="string"?r.images?.[e]?.fileId??e:!e||typeof e!="object"||Array.isArray(e)?e:e.imageId?r.images?.[e.imageId]?.fileId??e.imageId:Array.isArray(e.items)?{...e,items:e.items.map(n=>{if(typeof n=="string")return r.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:r.images?.[o]?.fileId??o}}return typeof n.src=="string"?{...n,src:r.images?.[n.src]?.fileId??n.src}:n})}:e,ih=({item:e,particle:r,resources:n})=>{let o=nt(n,e),a=structuredClone(r),t=a.modules?.appearance?.texture;t!==void 0&&(a.modules.appearance.texture=Yl(t,n)),a.texture!==void 0&&(a.texture=Yl(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...Ke(o,e)};return Object.assign(s,Vr(e)),s},ah=e=>{let r=[e.resourceId,e.text,e.layout].filter(n=>n!==void 0).length;if(r>1)throw r===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&&!ii(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);if(e.layout&&!ai(e))throw new Error(`Visual item "${e.id}" layout requires elements`);if(e.text){for(let n of oh)if(br(e.text,n))throw new Error(`Visual item "${e.id}" text.${n} is reserved for the visual item`)}},lh=({resources:e,background:r,screen:n={width:1920,height:1080},includeOpacity:o=!1})=>{let a={id:Ko,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:rh({resources:e,background:r,screen:n})};if(o){let t=oc(r);t!==void 0&&(a.alpha=t)}return a},ch=(e={},r)=>r?!!(e.images?.[r]||e.videos?.[r]||e.spritesheets?.[r]||e.layouts?.[r]):!1,zl=({resources:e={},resourceId:r,colorId:n})=>{let o=rc(e,r);return r&&(o||n===void 0)?{resourceId:r,targetId:Vn({resourceId:r,kind:o})}:n!==void 0?{resourceId:Ko,targetId:Ko}:{resourceId:void 0,targetId:void 0}},ac=100,Ir=ac,uh="channel:bgm",ph="channel:music-room",dh="music-room:player",fh="channel:voice",mh="default",yh=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),Lt=(...e)=>e.map(yh).join(":"),Fn=(e,r,n)=>{let o=new Set;e.forEach(({id:a})=>{if(o.has(a)){let t=n?` in ${n}`:"";throw new Error(`Duplicate ${r} id "${a}"${t}.`)}o.add(a)})},hh=(e,r)=>e*r/ac,lc=(e={},r)=>e?.[r]??hr[r],Yn=(e={},r,n=Ir)=>hh(n,lc(e,r)),zn=({id:e,volume:r,muted:n,pan:o,loop:a,playback:t,interruption:s,children:i,runtime:l})=>{let c={id:e,type:"audio-channel",volume:r,muted:!!l?.muteAll||(n??!1),pan:o??0,children:i};return a!==void 0&&(c.loop=a),t!==void 0&&(c.playback=structuredClone(t)),s!==void 0&&(c.interruption=s),c},Mn=(e,r,n,o)=>e[n]!==void 0?e[n]:r[n]!==void 0?r[n]:o,gh=["muted","pan","playbackRate","startAt","endAt"],Gn=({id:e,sound:r,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:Mn(r,n,"loop",o),volume:Mn(r,n,"volume",Ir),startDelayMs:Mn(r,n,"startDelayMs",0)};gh.forEach(s=>{let i=Mn(r,n,s,void 0);i!==void 0&&(a[s]=i)}),r.playback!==void 0&&(a.playback=structuredClone(r.playback));let t=a.startAt??0;if(a.endAt!==void 0&&a.endAt!==null&&a.endAt<t)throw new Error(`Sound "${e}" endAt (${a.endAt}) must be greater than or equal to startAt (${t}).`);return a},Fe=({variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,runtime:a,saveSlots:t=[],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=vh({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:v}),k={variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:v.localizationPackageId,runtime:v,saveSlots:t,isChoiceVisible:p,isFormVisible:f,canRollback:d,confirmDialog:m,form:y,historyDialogue:g,characters:h};return P&&(k.dialogue=P,k.dialogueLines=P.lines),k},Gl=100,Un=(e,r)=>{if(Array.isArray(e))return e.map(o=>Un(o,r));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(o=>{n[o]=Un(n[o],r)}),n.type==="text-revealing"?r(n):n},bh=e=>Un(e,r=>({...r,revealEffect:"none"})),Ih=e=>Un(e,r=>{let n=Number(r.speed??r.displaySpeed),o=Number.isFinite(n)?Math.max(n,Gl):Gl;return{...r,speed:o,...Object.prototype.hasOwnProperty.call(r,"displaySpeed")?{displaySpeed:o}:{}}}),wr=(e,{isLineCompleted:r=!1,skipMode:n=!1,skipTransitionsAndAnimations:o=!1}={})=>r||o?bh(e):n?Ih(e):e,cc=({id:e,screen:r={width:1920,height:1080}})=>({id:e,type:"rect",fill:"transparent",width:r.width,height:r.height,x:0,y:0,click:{payload:{actions:{}}}}),Jo=e=>{if(Array.isArray(e))return e.map(Jo);if(!e||typeof e!="object")return e;let r={};for(let[t,s]of Object.entries(e))r[t]=Jo(s);let n=r.click?.payload;if(!n||typeof n!="object"||Array.isArray(n))return r;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{...r,click:{...r.click,payload:{...n,bypassChoice:!0,...a?{actions:{...o,nextLine:a}}:{}}}}},wh=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),Hl="submit",Yo=(e,r,n={})=>{let o=e?.payload&&typeof e.payload=="object"&&!Array.isArray(e.payload)?e.payload:{},a=o.actions&&typeof o.actions=="object"?o.actions:{},t=n.replaceActions===!0?r:{...a,...r};return{...e||{},payload:{...o,actions:t}}},Qo=(e,r,n={})=>{if(Array.isArray(e))return e.map(c=>Qo(c,r,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===Hl,t=o&&n.submitRoleAncestor,s=a||t?{submitRoleAncestor:!0}:{},i={};for(let[c,u]of Object.entries(e))i[c]=Qo(u,r,c==="children"?s:{});let l=i;if(l.type==="input"&&typeof l.field=="string"){let c=r?.fields?.[l.field];if(c){let u={updateFormField:{formKey:r.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:Yo(l.change,u),submit:Yo(l.submit,r.submitActions)}}}return l.formRole===Hl||t?{...l,click:Yo(l.click,r.submitActions,{replaceActions:!0})}:l},Zo=(e,r)=>{if(Array.isArray(e))return e.map(o=>Zo(o,r));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=Zo(a,r);for(let o of wh){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},ei=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0,s=Sn({characterId:e,character:r,characterName:n,characters:o,variables:a});return{...t||{},...r||{},name:s}},uc=(e=[],r={},n={})=>e.map(o=>{let a=ei({characterId:o.characterId,character:o.character,characterName:o.characterName,characters:r,variables:n}),t=typeof o.text=="string"?o.text:Array.isArray(o.content)?o.content.map(s=>s?.text??"").join(""):"";return{...o,text:t,character:a,characterName:a.name}}),kh=e=>!(!e||e.mode==="adv"&&e.content===void 0),vh=({dialogueState:e,includeInactiveAdvDialogue:r=!1,characters:n={},variables:o,runtime:a}={})=>{if(!r&&!kh(e))return;let t=e.content===void 0?[{text:""}]:Ho(e.content,"dialogue.content"),s=e.content===void 0?0:Uy({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=Ho(p.content,`dialogue.lines[${f}].content`),m=ei({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=ei({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:t.map(p=>({...p,text:et(p.text,{variables:o})})),initialRevealedCharacters:s,lines:c}},li=({container:e,resources:r,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:t=!1})=>{let s=sr(e,n);return or(wr(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:t}),r)},zo=(e,r={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(r),Xl=({renderStateKeyboard:e,keyboard:r,phase:n})=>{!r||typeof r!="object"||Array.isArray(r)||Object.entries(r).forEach(([o,a])=>{let t=e[o]??{},s=n==="keydown"?a?.keydown:a?.keyup;if(n==="keydown"&&s&&typeof s=="object"){e[o]={...t,keydown:{payload:zo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:zo(a.keyup)});return}e[o]={...t,[n]:{payload:zo(a)}}})},Ah=(e={},r={})=>{let n={};return Xl({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),Xl({renderStateKeyboard:n,keyboard:r,phase:"keyup"}),Object.keys(n).length>0?n:void 0},ir=({animationsDef:e,resources:r,previousResourceId:n,currentResourceId:o,previousTargetId:a,currentTargetId:t,animationPath:s,idPrefix:i})=>{if(!e)return[];let l=[],c=({instanceId:h,targetId:w})=>{let b=qy({resources:r,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&&t&&a===t;Vy(e,s);let d=Ty(e),m=Ny(e),y=r?.animations?.[d],g=_y(y,{animationId:d,animationPath:s});if(g==="update")return p&&t?c({instanceId:`${i}-animation-update`,targetId:t}):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:t}),l;u&&c({instanceId:`${i}-animation-out`,targetId:a}),p&&c({instanceId:w,targetId:t})}return l},Ph=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),xh=(e,{presentationState:r,previousPresentationState:n,currentLineActions:o,resources:a={},screen:t={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(r.background){let O=o===void 0?!0:br(o?.background??{},"animations"),D=P.find(oe=>oe.id==="story");if(!D)return e;let $=By(a,r.background),q=$||zy(r.background),Y=n?.background?.resourceId,T=n?.background?.colorId,U=r.background.resourceId??(r.background.animations?Y:void 0),ie=r.background.colorId??(r.background.animations?T:void 0),L=ch(a,U),ae={...r.background,colorId:ie};if((ie!==void 0||L)&&D.children.push(lh({resources:a,background:ae,screen:t,includeOpacity:!L})),U){let{images:oe={},videos:re={},spritesheets:pe={}}=a,te=rc(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:(t?.width??1920)/2,y:(t?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...$},de={...Ul(r.background,{includeDefaultAlpha:!0}),...Ke(K,r.background)},Pe;F?Pe=ni({id:Vn({resourceId:U,kind:te}),resourceId:U,spritesheet:C,animationName:r.background.animationName,animationSpeed:r.background.animationSpeed,loop:r.background.loop,transform:de}):Pe={id:Vn({resourceId:U,kind:te}),type:_?"video":"sprite",src:C.fileId,width:C.width,height:C.height,...de},_&&(Pe.loop=r.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:Vn({resourceId:U,kind:"container"}),type:"container",children:re.elements,...Ul(r.background)};q&&Object.assign(pe,Ke({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...$},r.background));let te=sr(pe,Fe({variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:f,saveSlots:v,dialogueState:r.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:w,canRollback:b,form:E,characters:a.characters||{},skipTransitionsAndAnimations:i}));D.children.push(or(wr(te,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let ce=zl({resources:a,resourceId:Y,colorId:T}),B=zl({resources:a,resourceId:U,colorId:ie}),Z=ir({animationsDef:r.background.animations,resources:a,previousResourceId:ce.resourceId,currentResourceId:B.resourceId,previousTargetId:ce.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},Eh=(e,{presentationState:r,previousPresentationState:n,currentLineActions:o,resources:a,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:i,restoredPersistentAnimations:l})=>{let{elements:c,animations:u}=e;if(r.character&&a){let p=c.find(g=>g.id==="story");if(!p)return e;let f=r.character.items||[],d=n?.character?.items||[],m=Ml(f),y=Ml(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?Ln(E,v,y):void 0,D=ec(o,"character",h.id,g,f),$=ir({animationsDef:h.animations,resources:a,previousResourceId:O,currentResourceId:k?Ln(h,g,m):void 0,previousTargetId:O,currentTargetId:k?Ln(h,g,m):void 0,animationPath:`character.items[${g}].animations`,idPrefix:"character"});if(h.animations&&!b&&!w&&P&&Ye({animationInstances:$,isLineCompleted:t,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=Ln(h,g,m),Y=a.transforms[w];if(!Y){console.warn("Transform not found:",w);continue}let T={type:"container",id:q,...Ke(Y,h),...Vr(h),children:[]};for(let U of b){let ie=tc({id:`${q}-${U.id}`,item:U,resources:a});ie&&T.children.push(ie)}p.children.push(T),Ye({animationInstances:$,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:i,restoredPersistentAnimations:l,isAuthoredOnCurrentLine:D})&&u.push(...$)}}return e},pc=(e,r)=>{if(!Mo.includes(e))throw new Error(`${r} must be one of: ${Mo.join(", ")}.`)},Sh=(e,r)=>{let n=!!e.resourceId||ii(e)||ai(e),o=e.layer??(n?void 0:r?.layer)??Lo;return pc(o,`Visual item "${e.id}" layer`),o},Oh=(e,{presentationState:r,previousPresentationState:n,currentLineActions:o,resources:a,isLineCompleted:t,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(r.visual&&a){let O=P.find(Y=>Y.id==="story");if(!O)return e;let D=r.visual.items,$=n?.visual?.items||[],q=Fe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:E,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:y,isChoiceVisible:g,isFormVisible:h,canRollback:w,form:b,characters:a.characters||{},skipTransitionsAndAnimations:s});v!==void 0&&pc(v,"visualLayer");for(let[Y,T]of D.entries()){let U=$.find(re=>re.id===T.id),ie=ec(o,"visual",T.id,Y,D),L=Sh(T,U);if(v!==void 0&&L!==v)continue;if(ah(T),T.layout){let re=nt(a,T),pe={id:`visual-${T.id}`,type:"container",children:structuredClone(T.layout.elements),...Ke(re,T)};Object.assign(pe,Vr(T)),O.children.push(li({container:pe,resources:a,templateData:q,isLineCompleted:t,skipMode:y,skipTransitionsAndAnimations:s}))}if(T.text){let re=nt(a,T),pe={...structuredClone(T.text),id:`visual-${T.id}`,type:"text",...Ke(re,T)};Object.assign(pe,Vr(T)),O.children.push(or(sr(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=ni({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:{...Ke(_,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,...Ke(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(ih({item:T,particle:re,resources:a}))}let ce=!!a.particles?.[T.resourceId];if(T.resourceId&&!ae&&!ce){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),...Ke(te,T)};Object.assign(C,Vr(T));let _=sr(C,q);O.children.push(or(wr(_,{isLineCompleted:t,skipMode:y,skipTransitionsAndAnimations:s}),a))}}let B=Bl(U),Z=Bl(T),oe=ir({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:t,skipTransitionsAndAnimations:s,activePersistentAnimations:f,restoredPersistentAnimations:d,isAuthoredOnCurrentLine:ie})&&k.push(...oe)}}return e},tt="dialogue-character-sprite",Rh=(e,{presentationState:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=qr(e.elements);if(!l)return e;let c=r.dialogue?.character?.sprite,u=n?.dialogue?.character?.sprite,p=At(c),f=At(u),d=ir({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:t,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,...Ke(m),children:[]};for(let g of c.items){let h=tc({id:`${tt}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),Ye({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e},Ch=(e,{presentationState:r,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:t,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(!r.dialogue||a)return e;let k=v.find(D=>D.id==="story");if(!k)return e;if(r.dialogue.ui&&r.dialogue.ui.resourceId){let{layouts:D={}}=o,$=D[r.dialogue.ui.resourceId];if($){let q={elements:$.elements},Y=Fe({variables:m,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:w,saveSlots:E,dialogueState:r.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:f,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:d}),T=sr(q,Y),U=or(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)}}Rh(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:f,skipTransitionsAndAnimations:d,activePersistentAnimations:b});let O=ir({animationsDef:r.dialogue.ui?.animations,resources:o,previousResourceId:n?.dialogue?.ui?.resourceId,currentResourceId:r.dialogue.ui?.resourceId,previousTargetId:n?.dialogue?.ui?.resourceId?"dialogue-container":void 0,currentTargetId:r.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},$h=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,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(r.choice&&o){let P=qr(E);if(!P)return e;let k=o?.layouts?.[r.choice.resourceId];if(k&&k.elements){let D={elements:k.elements},$=sr(D,{...Fe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:b,dialogueState:r.dialogue,isLineCompleted:t,autoMode:f,skipMode:d,isChoiceVisible:m??!!r.choice,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:s}),choice:{items:r.choice?.items??[]}}),q=Jo(or(wr($?.elements,{isLineCompleted:t,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=ir({animationsDef:r.choice.animations,resources:o,previousResourceId:n?.choice?.resourceId,currentResourceId:r.choice.resourceId,previousTargetId:n?.choice?.resourceId?"choice-container":void 0,currentTargetId:r.choice.resourceId?"choice-container":void 0,animationPath:"choice.animations",idPrefix:"choice"});Ye({animationInstances:O,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:w})&&v.push(...O)}return e},_h=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,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:r.dialogue,isLineCompleted:t,autoMode:f,skipMode:d,isChoiceVisible:m,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},$=sr(O,D),q=Zo(or(wr(Qo($,b),{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o),b);q&&P.children.push(q);let Y=ir({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:t,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&v.push(...Y),e},Th=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:f,canRollback:d,form:m,saveSlots:y=[],skipTransitionsAndAnimations:g})=>{if(!r.control?.resourceId)return e;let h=n.controls?.[r.control.resourceId];if(!h)return e;let w=Ah(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-${r.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(li({container:E,resources:n,templateData:Fe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:r.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},Nh=(e,{presentationState:r,resources:n,runtime:o,variables:a,musicRoomPlayer:t})=>{let{elements:s,audio:i}=e;if(r.bgm&&n){if(!qr(s))return e;let c=r.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||Fn(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(Gn({id:Lt("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(zn({id:uh,volume:Yn(m,"musicVolume",u?Ir:c.volume??Ir),muted:c.muted,pan:c.pan,loop:u?void 0:c.loop,playback:t?.bgmPlayback,interruption:c.interruption,children:d,runtime:m}))}return e},jh=(e,{resources:r={},runtime:n,variables:o,musicRoomPlayer:a})=>{let t=r.musicRoom;if(!t||!a?.trackId||!a.playback)return e;let s=t.tracks.find(u=>u.id===a.trackId),i=s?r.sounds?.[s.soundId]:void 0;if(!s||!i)return e;let l=Fe({variables:o,runtime:n}).runtime,c=Gn({id:dh,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(zn({id:ph,volume:Yn(l,"musicVolume",Ir),children:[c],runtime:l})),e},Dh=(e,{presentationState:r,resources:n,runtime:o})=>{let{audio:a}=e;if(r.sfx&&n){let t=r.sfx,s=!Array.isArray(t.channels),i=s?[{id:mh,sounds:t.items??[]}]:t.channels;s||Fn(i,"SFX channel"),i.forEach(l=>{let c=!s&&l.loop===!0,u=[];if(s||Fn(l.sounds,"SFX sound",`SFX channel "${l.id}"`),c){let p=l.sounds.find(f=>f.loop===!0);if(p)throw new Error(`SFX sound "${p.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((p,f)=>{let d=n.sounds?.[p.resourceId];if(!d)return;let m=c?{...p,loop:p.loop??!1}:p;u.push(Gn({id:s?Lt("sfx","default",f,p.id):Lt("sfx",l.id,p.id),sound:m,resource:d,defaultLoop:c?!1:void 0}))}),u.length!==0&&a.push(zn({id:Lt("channel","sfx",l.id),volume:Yn(o,"soundVolume",l.volume??Ir),muted:l.muted,pan:l.pan,loop:s?void 0:l.loop,interruption:s?void 0:l.interruption,children:u,runtime:o}))})}return e},Lh=(e,r,n)=>{if(!(!r||!n))return e?.voices?.[r]?.[n]},Mh=(e,{presentationState:r,resources:n,currentSceneId:o,runtime:a,variables:t})=>{let{audio:s}=e;if(!r?.voice)return e;let i=r.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||Fn(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=Lh(n,o,d.resourceId);if(!m)return;let y=u?{...d,loop:d.loop??!1}:d;p.push(Gn({id:Lt("voice",o,l?"default":d.id),sound:y,resource:m,defaultLoop:u?!1:void 0}))}),p.length===0)return e;let f=Fe({variables:t,runtime:a}).runtime;return s.push(zn({id:fh,volume:l?i.volume??lc(f,"soundVolume"):Yn(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},Vh=(e,{presentationState:r,previousPresentationState:n,resources:o={},variables:a,imageGallery:t,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(r.layout){let O=qr(b);if(!O)return e;let D=o.layouts?.[r.layout.resourceId];if(!D)return e;Array.isArray(D.transitions)&&!g&&!h&&ti({animations:E,transitions:D.transitions,defaultTargetId:`layout-${r.layout.resourceId}`,idPrefix:`layout-${r.layout.resourceId}`,animationPathPrefix:"layout"});let $={id:`layout-${r.layout.resourceId}`,type:"container",x:0,y:0,children:D.elements||[]};O.children.push(li({container:$,resources:o,templateData:Fe({variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:r.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=r.layout?.resourceId,k=ir({animationsDef:r.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},qh=(e,{currentLineActions:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=r?.screen?.animations;if(!l)return e;let c=n!=null,u=ir({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:t,activePersistentAnimations:s})&&i.push(...u),e},Fh=(e,{presentationState:r})=>{let n=qr(e.elements);return!n||!r?.screen||Object.assign(n,ic(r.screen)),e},Uh=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,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||ti({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:[cc({id:`overlayStack-${k}-blocker`,screen:h}),...O.elements||[]]},$=uc(y,n.characters,o),q=Fe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:r?.dialogue,isLineCompleted:w,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:f,form:d,historyDialogue:$,characters:n.characters||{},skipTransitionsAndAnimations:b}),Y=sr(D,q),[T,...U]=Y.children||[],ie=or(wr({...Y,children:U},{isLineCompleted:w,skipMode:c,skipTransitionsAndAnimations:b}),n);E.push({...ie,children:T?[T,...ie.children||[]]:ie.children})}),e},Bh=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,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&&ti({animations:v,transitions:P.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let k={id:"confirmDialog",type:"container",x:0,y:0,children:[cc({id:"confirmDialog-blocker",screen:h}),...P.elements||[]]},O=uc(g,n.characters,o),D=sr(k,Fe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:r?.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=or(wr({...D,children:q},{isLineCompleted:w,skipMode:u,skipTransitionsAndAnimations:b}),n);return E.push({...Y,children:$?[$,...Y.children||[]]:Y.children}),e},qt=e=>(r,n)=>Oh(r,{...n,visualLayer:e}),Yh=qt(nr.BEHIND_BACKGROUND),zh=qt(nr.BEHIND_CHARACTER),Gh=qt(nr.BEHIND_DIALOGUE),Hh=qt(nr.BEHIND_CHOICE),Xh=qt(nr.FOREGROUND),dc=e=>En(Ph,[Th,Yh,xh,zh,Eh,Gh,Ch,Hh,$h,_h,Vh,Xh,Fh,qh,Nh,jh,Dh,Mh,Uh,Bh])(e);function fc(e,r=""){let n=[],o=e.length,a=0,t=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,r?parseInt(r[t++],36):0])}return n}function mc(e,r,n){let o=0,a=r.length-1;for(;o<=a;){let t=o+a>>>1,s=n[t];if(e<r[t])a=t-1;else if(e>s>>>5)o=t+1;else return s&31}return 0}var yc="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",hc="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",gc="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var bc=65535,ci=40960,Hn=126976,kc=new Uint8Array(12288),vc=new Uint8Array(3072),Ac=new Uint8Array(2816),Pc,xc;{let e=(a,t,s,i,l)=>{let c=t+a.length-1;for(let u=s<t?t:s,p=i>c?c:i;u<=p;u++)a[u-t]=l},r=new Uint32Array(320),n=new Uint32Array(320),o=0;for(let[a,t,s]of fc(yc,hc))e(kc,0,a,t,s),e(vc,ci,a,t,s),e(Ac,Hn,a,t,s),t>=65040&&!(a>=Hn&&t<=129791)&&(r[o]=a,n[o++]=t<<5|s);Pc=r.slice(0,o),xc=n.slice(0,o)}function Ic(e){return e<12288?kc[e]:e<ci?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?vc[e-ci]: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>=Hn&&e<129792?Ac[e-Hn]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:mc(e,Pc,xc)}var Ec=Uint8Array.from(gc,Number);function Wh(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 wc(e,r,n){switch(r){case 3:return e&24?n===8204?e&6:(e&24)===16||Wh(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*Sc(e){let r=e.length;if(r===0)return;let n=e.codePointAt(0),o=n>bc?2:1,a=Ic(n),t=50200>>a&1?wc(0,a,n):0,s=0,i=n,l=a;for(;o<r;){n=e.codePointAt(o);let c=n>bc?2:1,u=Ic(n),p=Ec[a<<4|u],f;p===0?f=!0:p===1?f=!1:p===2?f=!(t&1):p===3?f=!(t&4):f=(t&24)!==16,t=50200>>u&1&&(t!==0||u!==3)?wc(t,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*Oc(e){for(let r of Sc(e))yield r.segment}{let e=Sc("_");Ec._keep=[e,e.next()]}var Rc=1e3,Tc=50,Kh=0,Cc=100,$c=50,Jh=60,Qh=3,Zh=.5,eg=2e4,rg=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,tg=/^\s+$/u,_c,ng=e=>{let r=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(Oc(r)):(_c??=new n(void 0,{granularity:"grapheme"}),Array.from(_c.segment(r),({segment:o})=>o))},sg=e=>ng(e).reduce((r,n)=>tg.test(n)?r+Zh:rg.test(n)?r+Qh:r+1,0),og=e=>2**(((Number.isFinite(e)?Math.min(Cc,Math.max(Kh,e)):Tc)-$c)/(Cc-$c)),ui=({text:e="",baseDelay:r=Rc,speed:n=Tc}={})=>{let o=Number.isFinite(r)?Math.max(0,r):Rc,a=og(n),t=sg(e)*Jh/a,s=Math.max(o,eg);return Math.min(o+t,s)};var Xn={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},Vc=1,vi=1,ar=1,at="choice",vr="form",Yt=()=>({manual:{...Xn.manual},auto:{...Xn.auto},applyMode:Xn.applyMode}),Ai=()=>({groupId:null,variantId:null,pageIndex:0}),ig="music-room:player",ag=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),Jn=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),Pi=new Set,lg=new Set(["groupId","variantId"]),cg=new Set(["pageIndex"]),lt=new Set,ug=new Set(["trackId"]),pg=new Set(["positionMs"]),dg=new Set(["pageIndex"]),xi=new Set,fg=new Set(["sceneId"]),mg=new Set(["pageIndex"]),Ei=()=>({pageIndex:0}),Si=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...Yt()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},di=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},V=e=>{let r=we(e)?pr(e):e;return structuredClone(r)},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Qn=e=>{let r=e.global.audioCommandId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal audio command counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Audio command counter is exhausted");return e.global.audioCommandId=r+1,e.global.audioCommandId},qc=e=>{let r=e.global.sceneReplayEntryId;if(!Number.isSafeInteger(r)||r<0)throw new Error("Internal scene replay entry counter is invalid");if(r===Number.MAX_SAFE_INTEGER)throw new Error("Scene replay entry counter is exhausted");return e.global.sceneReplayEntryId=r+1,e.global.sceneReplayEntryId},zt=(e,r,n)=>({commandId:Qn(e),operation:r,...n===void 0?{}:{positionMs:n}}),Oi=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let r=e.global.musicRoomPlayer,n=r.bgmPlayback;r.trackId!==null&&(n={commandId:Qn(e),operation:"resume"}),e.global.musicRoomPlayer=Jn({bgmPlayback:n})},Fc=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error("Achievement action requires a non-empty resourceId");let n=e.projectData.resources?.achievements?.[r];if(!n)throw new Error(`Achievement resource "${r}" not found`);if(n.type!=="boolean"&&n.type!=="number")throw new Error(`Achievement resource "${r}" has invalid type "${n.type}"`);return n},Uc=(e,r)=>{if(e==null||e==="")throw new Error(`${r} requires slotId`);let n=typeof e=="string"&&e.length>0,o=typeof e=="number"&&Number.isFinite(e);if(!n&&!o)throw new Error(`${r} requires a non-empty string or finite number slotId`)},Br=e=>String(e),Bc=()=>({sections:[],resources:[]}),Yc=()=>({sceneIds:[]}),yg=e=>M(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):Bc(),hg=e=>M(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):Yc(),gg=e=>Array.isArray(e)?e.map(r=>r?.text??"").join(""):"",bg=({sectionId:e,lineId:r,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:r,content:n,text:gg(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),zc=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Ig=e=>M(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,Ri=e=>{if(!M(e?.dialogueHistory))return null;let r=e.dialogueHistory;return!Array.isArray(r.entries)||!Number.isInteger(r.currentLength)||!Array.isArray(r.checkpointLengths)?null:r},wg=e=>{if(!M(e?.dialogueHistory))return e.dialogueHistory=zc(e?.rollback?.timeline?.length??0),e.dialogueHistory;let r=e.dialogueHistory;return Array.isArray(r.entries)||(r.entries=[]),Number.isInteger(r.currentLength)||(r.currentLength=r.entries.length),Array.isArray(r.checkpointLengths)||(r.checkpointLengths=Array(e?.rollback?.timeline?.length??0).fill(0)),r.currentLength=Math.min(Math.max(r.currentLength,0),r.entries.length),r},Ci=e=>{let r=Ri(e);return r?(r.currentLength<r.entries.length&&(r.entries=r.entries.slice(0,r.currentLength)),r):null},kg=()=>({resourceId:void 0}),vg=e=>{if(!M(e))return e;let r={...e};return Object.prototype.hasOwnProperty.call(r,"requireComplete")&&!Object.prototype.hasOwnProperty.call(r,"requireLineCompleted")&&(r.requireLineCompleted=r.requireComplete),delete r.requireComplete,r},Ge=(e,r)=>{let n=e?.story?.scenes??{};for(let[o,a]of Object.entries(n))if(a?.sections?.[r])return{sceneId:o,section:a.sections[r]};return{sceneId:void 0,section:void 0}},Gc=e=>{let r=e?.story?.scenes??{},n=new Map;for(let[o,a]of Object.entries(r)){let t=a?.sections??{};for(let s of Object.keys(t)){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)}}},Hc=e=>e,Xc=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==Vc)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},Ag=(e,r={})=>{let n;try{n=Xc(r.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...r,formatVersion:n,slotId:Hc(r.slotId??r.slotKey??e),savedAt:typeof r.savedAt=="number"?r.savedAt:r.date};return delete o.slotKey,delete o.date,o},Pg=(e={})=>Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Ag(r,n)])),xg=(e,r)=>{if(!M(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(o=>{if(!M(o))return!1;let{variableId:a,op:t,value:s,roundTo:i}=o,l=r?.resources?.variables?.[a];if(!l||Se(l)||l.readonly===!0||l.scope!=="context")return!1;try{return Ct(l.type,t,a),Rn(l.type,t,s,a,{roundTo:i}),t!=="set"||Eo(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},Wc=(e,r)=>{if(!Array.isArray(e))return;let n=e.flatMap(o=>{if(!M(o)||!fw(o.type))return[];if(o.type!=="updateVariable"||r===void 0)return[o];let a=xg(o.payload,r);return a?[{...o,payload:a}]:[]});return n.length>0?n:void 0},Eg=(e,r,n)=>{let{section:o}=Ge(e,r?.sectionId),t=o?.lines?.find(({id:i})=>i===r?.lineId)?.actions,s=n.split(".");for(let i of s){if(Array.isArray(t)){if(!/^(0|[1-9]\d*)$/.test(i))return;let l=Number(i);if(!Object.prototype.hasOwnProperty.call(t,l))return;t=t[l];continue}if(!M(t)||!Object.prototype.hasOwnProperty.call(t,i))return;t=t[i]}return s.at(-1)==="random"&&M(t?.distribution)?t:void 0},Kc=e=>{if(e?.type!=="integer"||!Number.isSafeInteger(e.min)||!Number.isSafeInteger(e.max))return!1;let r=e.max-e.min+1;return Number.isSafeInteger(r)&&r>=1&&r<=4294967296},Jc=(e,r,n)=>e.filter(({path:o,type:a,result:t})=>{let s=Eg(n,r,o);if(s?.distribution?.type!==a)return!1;if(a==="weighted")return M(s.distribution.outcomes?.[t.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)&&Kc(s.distribution)&&t.value>=s.distribution.min&&t.value<=s.distribution.max}return!1}),$i=(e,r)=>{if(!Object.prototype.hasOwnProperty.call(e??{},"randomOutcomeVersion"))return;if(e.randomOutcomeVersion!==ar)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,t)=>{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 ${t}`);return n.add(s),{path:a.path,ordinal:a.ordinal,type:a.type,result:Tn(V(a.result),a.type)}});return r===void 0?o:Jc(o,e,r)},Sg=(e,r)=>{!M(e)||!Array.isArray(e.timeline)||(e.returnabilityVersion=vi,e.timeline.forEach(n=>{if(!M(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let o=Wc(n.executedActions,r);o?n.executedActions=o:delete n.executedActions;let a=$i(n,r);a?(n.randomOutcomeVersion=ar,n.randomOutcomes=a):(delete n.randomOutcomeVersion,delete n.randomOutcomes)}))},Og=(e,r)=>{let n=e??{};return Object.values(n).forEach(o=>{let a=o?.state?.contexts;Array.isArray(a)&&a.forEach(t=>{let s=t?.rollback?.timeline;Array.isArray(s)&&s.forEach(i=>{if(!M(i))return;let l=$i(i,r);l?(i.randomOutcomeVersion=ar,JSON.stringify(i.randomOutcomes)!==JSON.stringify(l)&&(i.randomOutcomes=l)):(delete i.randomOutcomeVersion,delete i.randomOutcomes)})})}),n},Nc=(e,r,n,o="viewedRegistry")=>{let a=r==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!M(e))throw new Error(`Malformed ${o}.${r}[${n}] entry.`);if(typeof e[a]!="string"||e[a].length===0)throw new Error(`Malformed ${o}.${r}[${n}] entry: missing ${a}.`);if(r==="sections"){let t={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&&(t.lastLineId=e.lastLineId),t}return{resourceId:e.resourceId}},Rg=(e,r="viewedRegistry")=>{if(e===void 0)return Bc();if(!M(e))throw new Error(`Malformed ${r}.`);if(e.sections!==void 0&&!Array.isArray(e.sections))throw new Error(`Malformed ${r}.sections.`);if(e.resources!==void 0&&!Array.isArray(e.resources))throw new Error(`Malformed ${r}.resources.`);let n=e.sections??[],o=e.resources??[];return{sections:Object.values(Object.fromEntries(n.map((a,t)=>{let s=Nc(a,"sections",t,r);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,t)=>{let s=Nc(a,"resources",t,r);return[s.resourceId,s]})))}},Cg=(e,r="accountReplayRegistry")=>{if(e===void 0)return Yc();if(!M(e))throw new Error(`Malformed ${r}.`);if(e.sceneIds!==void 0&&!Array.isArray(e.sceneIds))throw new Error(`Malformed ${r}.sceneIds.`);let n=e.sceneIds??[];return{sceneIds:[...new Set(n.map((o,a)=>{if(typeof o!="string"||o.length===0)throw new Error(`Malformed ${r}.sceneIds[${a}] entry.`);return o}))]}},Ft=(e,r,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:t,section:s}=Ge(r,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:t,sectionId:o,lineId:a}},Qc=e=>{let r=e.story.initialSceneId,n=e.story.scenes[r],o=n.initialSectionId,a=n.sections[o];return Ft({sceneId:r,sectionId:o,lineId:a.initialLineId??a.lines[0].id},e,"projectData initial pointer")},$g=e=>{try{return Qc(e),!0}catch{return!1}},_g=(e,r,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 Ft(o,r,n);try{return Ft(o,r,n)}catch{let a=Array.isArray(e?.rollback?.timeline)?e.rollback.timeline:[],t=Number.isInteger(e?.rollback?.currentIndex)?Math.min(e.rollback.currentIndex,a.length-1):a.length-1;for(let s=t;s>=0;s-=1)try{return Ft(a[s],r,`${n} compatibility checkpoint`)}catch{}return Qc(r)}},Zc=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,_i=(e,r)=>{let{section:n}=Ge(e,r?.sectionId);return n?.lines?.find(o=>o.id===r?.lineId)},Tg=(e,r,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],t=!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}=Ge(r,i.sectionId);if(!c?.lines?.some(p=>p.id===i.lineId)){t=!1,a.push(o.length);return}o.push({sectionId:i.sectionId,lineId:i.lineId,...i.appendToPrevious===!0&&t&&o.length>0?{appendToPrevious:!0}:{}}),t=!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}},Ng=(e,r)=>M(_i(e,r)?.actions?.dialogue),eu=(e,r,n)=>{if(!r||r.sectionId!==n.sectionId)return!1;let{section:o}=Ge(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===r.lineId},jg=(e,r)=>{let n=zc();return e.timeline.forEach(o=>{if(o.returnable!==!1&&Ng(r,o)){let a=_i(r,o),t=n.entries.at(-1),s=a.actions.dialogue.append===!0&&eu(r,t,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},Dg=(e,r,n,o)=>{if(n.length!==r.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(t=>t===null?e.currentLength:e.checkpointLengths[t]);let a=0;return e.checkpointLengths.forEach((t,s)=>{if(t<a)throw new Error(`Malformed save slot dialogueHistory.checkpointLengths[${s}]: lengths must be chronological.`);a=t}),e},Lg=(e,r)=>{let{section:n}=Ge(e,r?.sectionId),o=n?.lines?.findIndex(t=>t.id===r?.lineId);if(typeof o!="number"||o<0)return null;let a=n.lines[o+1];return a?{sectionId:r.sectionId,lineId:a.id}:null},ru=(e,r,n)=>{if(typeof r?.sectionId!="string")return!1;let{section:o}=Ge(e,r.sectionId);return Zc({sectionId:r.sectionId,lineId:o?.lines?.[0]?.id},n)},Mg=new Set(["jumpToLine","rollbackByOffset","rollbackToLine","sectionTransition","resetStoryAtSection"]),ot={always:"always",maybe:"maybe",never:"never"},Vg=e=>{if(!Object.prototype.hasOwnProperty.call(e??{},"when"))return ot.always;let r=e.when,n;if(r===null||typeof r=="boolean"||typeof r=="number")n=r;else if(M(r)&&Object.keys(r).length===1&&Object.prototype.hasOwnProperty.call(r,"literal"))n=r.literal;else return ot.maybe;return n?ot.always:ot.never},tu=(e,r)=>{if(!Array.isArray(e?.branches))return!1;for(let n of e.branches){let o=Vg(n);if(o!==ot.never){if(r(n))return!0;if(o===ot.always)return!1}}return!1},nu=e=>tu(e,r=>Object.entries(r?.actions??{}).some(([n,o])=>n==="conditional"?nu(o):Mg.has(n))),su=(e,r,n)=>tu(r,o=>Object.entries(o?.actions??{}).some(([a,t])=>a==="sectionTransition"?ru(e,t,n):a==="conditional"?su(e,t,n):!1)),qg=(e,r,n)=>{if(!r)return!0;let o=_i(n,e)?.actions;if(!M(o))return!0;if(ru(n,o.sectionTransition,r))return!1;let a=o.conditional;return a?!(su(n,a,r)||!(o.choice?.resourceId||o.form?.resourceId)&&!nu(a)&&Zc(Lg(n,e),r)):!0},Fg=(e,r,n)=>{if(!M(e)||!Array.isArray(e.timeline))return{rollback:Bt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=new WeakSet,a=[],t=e.timeline.flatMap((p,f)=>{if(!M(p))return[];let d=$i(p);try{let m=Ft(p,n,`rollback.timeline[${f}]`),y=d?Jc(d,m,n):void 0,g=Kn({sectionId:m.sectionId,lineId:m.lineId,rollbackPolicy:p.rollbackPolicy,returnable:p.returnable,...y?{randomOutcomeVersion:ar,randomOutcomes:y}:{}});typeof p.returnable=="boolean"&&o.add(g);let h=Wc(V(p.executedActions),n);return h&&(g.executedActions=h),a.push(f),[g]}catch{return[]}});if(t.length===0)return{rollback:Bt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};e.returnabilityVersion!==vi&&t.forEach((p,f)=>{!o.has(p)&&!qg(p,t[f+1],n)&&(p.returnable=!1)});let i=typeof e.currentIndex=="number"?Math.trunc(e.currentIndex):e.timeline.length-1,l=a.indexOf(i);l<0&&(l=t.length-1);let c=t[l];if(c?.sectionId!==r.sectionId||c?.lineId!==r.lineId){let p=t.findLastIndex(f=>f.sectionId===r.sectionId&&f.lineId===r.lineId);p>=0?l=p:(t.push(Kn({sectionId:r.sectionId,lineId:r.lineId})),a.push(null),l=t.length-1)}let u=typeof e.replayStartIndex=="number"?Math.min(Math.max(Math.trunc(e.replayStartIndex),0),l):0;return{rollback:{currentIndex:l,isRestoring:!1,replayStartIndex:u,timeline:t},sourceCheckpointIndexes:a,sourceTimelineLength:e.timeline.length}},ou=(e,r,n)=>{if(!M(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=Ni(r),a=_g(e,r,`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 t=e.variables?Ot(V(e.variables),r.resources?.variables??{},{allowedScopes:["context"]}):{},s=eb({loadedContextRuntime:M(e.runtime)?V(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:c}=Fg(e.rollback,a,r),u=e.dialogueHistory===void 0?jg(i,r):Dg(Tg(e.dialogueHistory,r,`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,...t},...u?{dialogueHistory:u}:{},rollback:i};return s&&(p.runtime=s),p},Ug=(e,r)=>{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)=>ou(n,r,o))}},Bg=(e,r)=>{if(!M(e))throw new Error("Malformed save slot.");let n=Xc(e.formatVersion);return{...e,formatVersion:n,state:Ug(e.state,r)}},jc=(e,r,{required:n=!1}={})=>{if(e===void 0){if(n)throw new Error(`showConfirmDialog requires ${r}`);return{hideConfirmDialog:{}}}if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`showConfirmDialog ${r} must be an action object`);let o=V(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},Yg=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:jc(e.confirmActions,"confirmActions",{required:!0}),cancelActions:jc(e.cancelActions,"cancelActions")}},ct=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},zg=e=>(M(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),ut=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},iu=e=>{if(!(!M(e)||!e.animations))return{animations:V(e.animations)}},Gg=(e,r)=>{let n=iu(r);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Hg=e=>{let r=e?.id??e?.resourceId;return typeof r=="string"&&r.length>0?r:void 0},Xg=(e,r)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!r))return`${n}:${o}:${r}`},Wn=e=>String(e??""),au=(e,r)=>{let n=Wn(r);return e?.trim===!0?n.trim():n},Wg=e=>M(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,r])=>M(r)).map(([r,n])=>[r,{id:r,...V(n)}])):{},Kg=(e,r)=>{if(!r||!M(e.global.formDrafts))return;let n=e.global.formDrafts[r];return M(n)?n:void 0},lu=(e,r)=>{let n=zg(e);M(n[r])||(n[r]={values:{},touched:{},errors:{},submitted:!1});let o=n[r];return M(o.values)||(o.values={}),M(o.touched)||(o.touched={}),M(o.errors)||(o.errors={}),typeof o.submitted!="boolean"&&(o.submitted=!1),o},Ti=(e,r)=>{let n=au(e,r);return e?.required===!0&&n.length===0?"required":null},Jg=({state:e,pointer:r})=>{if(!r?.sectionId||!r?.lineId)return{};let o=ve({state:e},{sectionId:r.sectionId})?.lines||[],a=o.findIndex(t=>t.id===r.lineId);return a<0?{}:Mr(o.slice(0,a+1).map(t=>t.actions||{}))},Qg=({state:e,form:r,pointer:n})=>{if(!r?.resourceId)return null;let o=Hg(r),a=Xg(n,o);if(!o||!a)return null;let t=Kg(e,a),s=Wg(r),i=Hi({state:e}),l={},c=[],u={},p=!0;return Object.entries(s).forEach(([f,d])=>{let m=Wn(i?.[d.variableId]),y=Object.prototype.hasOwnProperty.call(t?.values??{},f)?Wn(t.values[f]):m,g=t?.touched?.[f]===!0,h=Ti(d,y),w=t?.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:r.resourceId,animations:r.animations,valid:p,submitted:t?.submitted===!0,fields:l,fieldList:c,values:u,submitActions:{submitForm:{formKey:a,actions:V(r.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:V(r.cancelActions??{})}}}},it="line",kr="interaction",Kn=({sectionId:e,lineId:r,rollbackPolicy:n,returnable:o,randomOutcomeVersion:a,randomOutcomes:t})=>({sectionId:e,lineId:r,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{},...a===ar?{randomOutcomeVersion:ar,randomOutcomes:V(t??[])}:{}}),Ni=e=>{let r=we(e)?pr(e):e,{contextVariableDefaultValues:n}=On(r??{});return V(n)},cu=()=>({...V(jt)}),uu=({loadedRuntime:e,runtimeIds:r,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),t=!1;return r.forEach(s=>{e[s]!==void 0&&(a[s]=Dn(s,V(e[s])),t=!0)}),{runtimeState:a,hasLoadedValues:t}},Zg=({projectData:e,loadedGlobalRuntime:r={}})=>uu({loadedRuntime:r,runtimeIds:No,defaults:Do(e),path:"global.runtime"}).runtimeState,eb=({loadedContextRuntime:e={}})=>{let{runtimeState:r,hasLoadedValues:n}=uu({loadedRuntime:e,runtimeIds:jo,defaults:cu(),path:"context.runtime"});return n?r:void 0},Pr=e=>{let r=Array.isArray(e?.contexts)?e.contexts:[];return r[r.length-1]},ye=e=>{let r=Pr(e);return r?.kind==="sceneReplay"&&M(r.sceneReplay)?r:null},pu=(e,r)=>{let n=r?.sceneReplay?.sceneId,o=e.projectData?.resources?.sceneReplay?.replays?.find(a=>a.sceneId===n);Object.entries(o?.initialVariables??{}).forEach(([a,t])=>{r.variables[a]=V(t)})},rb=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)}}),tb=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=Yt(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},nb=(e,r)=>{e.global.autoMode=r.autoMode,e.global.skipMode=r.skipMode,e.global.dialogueUIHidden=r.dialogueUIHidden,e.global.nextLineConfig=V(r.nextLineConfig),e.global.overlayStack=V(r.overlayStack),e.global.confirmDialog=V(r.confirmDialog),e.global.formDrafts=V(r.formDrafts),e.global.isLineCompleted=r.isLineCompleted,r.isDialogueHistoryShowing===void 0?delete e.global.isDialogueHistoryShowing:e.global.isDialogueHistoryShowing=r.isDialogueHistoryShowing,r.pendingScreenTransition===void 0?delete e.global.pendingScreenTransition:e.global.pendingScreenTransition=V(r.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}})},sb=e=>e.runtime?(jo.forEach(r=>{e.runtime[r]===void 0&&(e.runtime[r]=V(jt[r]))}),e.runtime):(e.runtime=cu(),e.runtime),ob=e=>Dl(e.global),du=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:ob(e)}})},ji=(e,r,n)=>{let o=Dn(r,n);if(r in jt){let a=Pr(e);if(!a)return o;let t=sb(a);return t[r]=o,o}return e.global[r]=o,o},Di=({pointer:e,projectData:r,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:V(o)},currentPointerMode:"read",pointers:{read:V(e)},configuration:{},views:[],bgm:kg(),variables:Ni(r),rollback:Bt({pointer:e})}),pt=e=>e?(e.currentPointerMode="read",M(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,ib=(e,{queueRender:r=!0}={})=>{let n=e.contexts?.[e.contexts.length-1],o=n?.pointers?.read;if(!n||!o?.sectionId||!o?.lineId)return null;let a=Di({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,ab(e,{queueRender:r}),a},ab=(e,{queueRender:r=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,ct(e),ut(e),e.global.nextLineConfig=Yt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,Oi(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),r&&e.global.pendingEffects.push({name:"render"})},fu=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Bt=({pointer:e,replayStartIndex:r=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:r,timeline:n?[Kn({sectionId:e.sectionId,lineId:e.lineId})]:[]}},xr=(e,r={})=>{if(e?.rollback)return fu(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=Bt({pointer:n,replayStartIndex:r.compatibilityAnchor?1:0}),e.rollback},Zn=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=xr(n);if(o.isRestoring)return;let a=Ci(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(Kn(r)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},lb=({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}},cb=({state:e},r={})=>{let{checkpointIndex:n,checkpointIdentity:o,sectionId:a,lineId:t}=r,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)?mn(l):l)!==o||l?.sectionId!==a||l?.lineId!==t||(l.returnable=!1),e},ub=({state:e},r={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:t,lineId:s}=r,i=Br(n),l=e.global.saveSlots?.[i],c=we(l)?mn(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!==t||p?.pointers?.read?.lineId!==s||d?.sectionId!==t||d?.lineId!==s||(d.returnable=!1,f.returnabilityVersion=vi,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},mu=(e,r)=>{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=r?.at(-1),t=typeof a?.checkpointIndex=="number"?a.checkpointIndex:o.currentIndex;if(t<0||t>=o.timeline.length)return null;if(typeof a?.checkpointIndex!="number"&&t<o.timeline.length-1){o.timeline=o.timeline.slice(0,t+1);let s=Ci(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t+1))}return o.timeline[t]??null},pb=({state:e,rollbackActionBatchStack:r,playbackOwnership:n},o={})=>{let a=o?.source===it?it:kr,t=e.contexts?.[e.contexts.length-1],s=t?.rollback;if(!s||s.isRestoring||!Array.isArray(s.timeline)||typeof s.currentIndex!="number"||s.currentIndex<0||s.currentIndex>=s.timeline.length)return r.push({checkpointIndex:null,source:a}),e;if(s.currentIndex<s.timeline.length-1){s.timeline=s.timeline.slice(0,s.currentIndex+1);let u=Ci(t);u&&(u.checkpointLengths=u.checkpointLengths.slice(0,s.currentIndex+1))}let i=t?.pointers?.read,l=n?.lineEntryId,c=a===it&&(n?.rollbackCheckpointLineEntryId===void 0?s.timeline[s.currentIndex]?.sectionId===i?.sectionId&&s.timeline[s.currentIndex]?.lineId===i?.lineId:n.rollbackCheckpointLineEntryId===l);return r.push({checkpointIndex:s.currentIndex,source:a,...a===it?{lineEntryId:l,sourcePointer:i?{sectionId:i.sectionId,lineId:i.lineId}:null,hasTrackedLineEntryCheckpoint:c}:{}}),e},db=({state:e,rollbackActionBatchStack:r})=>(r.pop(),e),fb=({state:e,rollbackActionBatchStack:r,playbackOwnership:n})=>{let o=r?.at(-1);if(o?.source!==it||o.hasTrackedLineEntryCheckpoint)return e;let a=o.sourcePointer;if(!a)return e;Zn(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},mb=({state:e,rollbackActionBatchStack:r},n)=>{if(r?.at(-1)?.source!==it)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=Tn(n.result,n.type),t=mu(e,r);if(!t)return e;if(t.randomOutcomeVersion!==ar&&(t.randomOutcomeVersion=ar,t.randomOutcomes=[]),t.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 t.randomOutcomes.push({path:n.path,ordinal:n.ordinal,type:n.type,result:a}),e},Je=(e,r,n,o)=>{let t=o?.at(-1)?.source??kr;if(!mw(r,t))return;let s=mu(e,o);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:r,payload:V(n)}))},fi=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=r?.operations??[];for(let{variableId:a,op:t,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}`);Rt(c,a),Ct(u,t,a),Rn(u,t,s,a,{roundTo:i}),c==="context"&&(n.variables[a]=Cn(n.variables[a],t,s,{roundTo:i}))}},yb=(e,r)=>{Array.isArray(r?.executedActions)&&r.executedActions.forEach(({type:n,payload:o})=>{yw(e,n,o)})},hb=(e,r)=>{let{sectionId:n,lineId:o}=r,s=ve({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Ji(e,s,{checkpoint:r,bindings:{},randomOutcomeOrdinals:new Map},[])},yu=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=xr(n),a=o.timeline[r];if(!a)return e;e.global.autoMode&&Wt({state:e}),e.global.skipMode&&Ar({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=r;try{n.variables=Ni(e.projectData),n.kind==="sceneReplay"&&(pu(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(Xn),e.global.overlayStack=[],ct(e),ut(e),e.global.isLineCompleted=!0;let t=o.replayStartIndex??0;for(let l=t;l<=r;l++)l>t&&Si(e),hb(e,o.timeline[l]),yb(e,o.timeline[l]);let s=pt(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=Ri(n);i&&(i.currentLength=Math.min(i.checkpointLengths[r]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=qc(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},gb=e=>{let{projectData:r}=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:t={},runtime:s={},accountViewedRegistry:i={},accountReplayRegistry:l={},localizationPackages:c=[{l10nId:null,language:null}]}=o;Gc(r),xt(r),Et(r),St(r),Dr(r?.resources?.variables??{});let u=r.story.initialSceneId,p=r.story.scenes[u],f=p.initialSectionId,d=p.sections[f],m={sceneId:u,sectionId:f,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:y}=On(r),g={...y,...Ot(t,r.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:r,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:Rg(i,"accountViewedRegistry"),accountReplayRegistry:Cg(l),nextLineConfig:Yt(),imageGalleryNavigation:Ai(),sceneReplayNavigation:Ei(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:Jn(),saveSlots:Pg(a),localizationPackages:V(c),overlayStack:[],variables:g,...Zg({projectData:r,loadedGlobalRuntime:s})},contexts:[Di({pointer:m,projectData:r})]}},bb=({state:e})=>e.global.overlayStack||[],Ib=({state:e})=>e.global.pendingEffects,hu=({state:e})=>e.global.skipMode,wb=({state:e})=>e.global.autoMode,gu=({state:e})=>e.global.dialogueUIHidden,bu=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.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 t=[],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(!Ig(c))continue;let u=l(c);if(!u)continue;let{line:p,lineActions:f,dialogueState:d}=u;if(!f.dialogue)continue;let m=Sn({characterId:d.characterId,character:d.character,characters:e.projectData.resources?.characters??{},variables:s}),y=bg({sectionId:c.sectionId,lineId:p.id,content:f.dialogue.append===!0?d.content:f.dialogue.content,dialogueState:d,characterName:m}),g=t[t.length-1];if((a?c.appendToPrevious===!0:f.dialogue.append===!0)&&g?.sectionId===c.sectionId){t[t.length-1]={...t[t.length-1],content:y.content,text:y.text,characterId:y.characterId,character:y.character,characterName:y.characterName};continue}t.push(y)}return t},kb=(e,r,n)=>{let o=!1;for(let a of r??[]){let{slotId:t,saveSlotIdentity:s,sectionId:i,lineId:l}=a,c=e.global.saveSlots?.[Br(t)],u=we(c)?mn(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}}})},vb=({state:e},r={})=>{let n=Pr(e),o=n?.pointers?.read,a=Ht({state:e});if(!n||!M(a?.actions?.dialogue))return e;let t=xr(n),s=t.timeline?.[t.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=Ri(n),c=l?.checkpointLengths?.[t.currentIndex],u=t.currentIndex>0?l?.checkpointLengths?.[t.currentIndex-1]??0:0,p=l?.entries?.[l.currentLength-1];if(r.reuseExistingOccurrence===!0&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId||r.forceNewOccurrence!==!0&&i&&l&&c===l.currentLength&&c>u&&p?.sectionId===o.sectionId&&p?.lineId===o.lineId)return e;let f=wg(n);f.currentLength<f.entries.length&&(f.entries=f.entries.slice(0,f.currentLength));let d=a.actions.dialogue.append===!0&&r.appendToPrevious===!0&&eu(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<t.timeline.length;)f.checkpointLengths.push(f.checkpointLengths.at(-1)??0);f.checkpointLengths[t.currentIndex]=f.currentLength}return kb(e,r.savedCheckpointOccurrences,f),e},Ab=({state:e})=>e.global.confirmDialog??null,Gt=({state:e},{pointer:r}={})=>{let n=r??Te({state:e})?.pointer,o=Jg({state:e,pointer:n});return Qg({state:e,form:o.form,pointer:n})},Pb=({state:e},{pointer:r}={})=>!!Gt({state:e},{pointer:r}),Ae=({state:e},{pointer:r}={})=>{let n=Gt({state:e},{pointer:r});if(n)return{source:vr,formId:n.id,formKey:n.key};let o=Pu({state:e,pointer:r});return o?{source:at,resourceId:o}:null},xb=({state:e,registry:r},n)=>{let{sectionId:o,lineId:a}=n,s=(Array.isArray(r?.sections)?r.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},Li=({registry:e},r)=>{let{resourceId:n}=r;return!!(Array.isArray(e?.resources)?e.resources:[]).find(t=>t.resourceId===n)},Mi=({state:e},r)=>xb({state:e,registry:e.global.accountViewedRegistry},r),Eb=({state:e},r)=>Li({registry:e.global.accountViewedRegistry},r),Ut=(e,r)=>!Li({registry:e.global.accountViewedRegistry},{resourceId:r.imageId}),Vi=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),qi=(e,r)=>{let n=Vi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},mi=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!Ut(e,r[a]))return r[a]},Sb=({state:e})=>{let r=e.projectData?.resources?.imageGallery;return r===void 0?void 0:V(r)},Iu=({state:e})=>{let r=e.projectData?.resources?.imageGallery;if(r===void 0)return null;let n=e.global.imageGalleryNavigation??Ai(),o=Vi(r),a=qi(r,n),t=a*r.pageSize,s=r.groups.slice(t,t+r.pageSize).map(l=>({groupId:l.id,locked:Ut(e,l.variants[0]),variants:l.variants.map(c=>({variantId:c.id,imageId:c.imageId,locked:Ut(e,c)}))})),i=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=r.groups.findIndex(d=>d.id===n.groupId),c=r.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/r.pageSize);p&&f===a&&!Ut(e,p)&&(i={groupId:c.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:mi(e,c.variants,u,-1)!==void 0,canMoveToNextVariant:mi(e,c.variants,u,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Fi=(e,r)=>!Li({registry:e.global.accountViewedRegistry},{resourceId:r.soundId}),Ui=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),Bi=(e,r)=>{let n=Ui(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},yi=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!Fi(e,r[a]))return r[a]},wu=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}),Ob=(e,r)=>({...wu(r),locked:Fi(e,r)}),Dc=e=>{let r=Math.floor(e/1e3),n=r%60,o=Math.floor(r/60);if(o<60)return`${o}:${String(n).padStart(2,"0")}`;let a=Math.floor(o/60),t=o%60;return`${a}:${String(t).padStart(2,"0")}:${String(n).padStart(2,"0")}`},Rb=({state:e})=>{let r=e.projectData?.resources?.musicRoom;return r===void 0?void 0:V(r)},ku=({state:e})=>{let r=e.projectData?.resources?.musicRoom;if(r===void 0)return null;let n=e.global.musicRoomPlayer??Jn(),o=Ui(r),a=Bi(r,n),t=a*r.pageSize,s=r.tracks.slice(t,t+r.pageSize).map(u=>Ob(e,u)),i=r.tracks.findIndex(u=>u.id===n.trackId),l=r.tracks[i],c=l?{...wu(l),canPlayPreviousTrack:yi(e,r.tracks,i,-1)!==void 0,canPlayNextTrack:yi(e,r.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:Dc(n.positionMs),durationText:n.durationMs===null?null:Dc(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}}},Yi=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),zi=(e,r)=>{let n=Yi(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Cb=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;return r===void 0?void 0:V(r)},$b=({state:e})=>ye(e)!==null,_b=({state:e})=>{let r=ye(e);return r?{sceneId:r.sceneReplay.sceneId,entryId:r.sceneReplay.entryId}:null},vu=(e,r)=>e.global.accountReplayRegistry?.sceneIds?.includes(r)===!0,Au=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;if(r===void 0)return null;let n=e.global.sceneReplayNavigation??Ei(),o=Yi(r),a=zi(r,n),t=a*r.pageSize,s=r.replays.slice(t,t+r.pageSize).map(l=>({sceneId:l.sceneId,title:l.title,thumbnailImageId:l.thumbnailImageId,locked:!vu(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}}},Tb=({state:e})=>e.global.nextLineConfig,Pu=({state:e,pointer:r}={})=>{let n=r??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},xu=({state:e})=>!!Pu({state:e}),Nb=({state:e})=>structuredClone(e),jb=({state:e})=>V(e.projectData.resources?.achievements??{}),Db=({state:e},r)=>{let n=e.projectData.resources?.achievements?.[r?.resourceId];return n===void 0?void 0:V(n)},Eu=({state:e})=>e.global.saveSlots,Lb=({state:e},r)=>{let n=r?.slotId,o=Br(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0},Su=({state:e})=>V(e.global.localizationPackages),Gi=({state:e})=>gr(e),Mb=({state:e},r)=>We(e,r?.runtimeId),Hi=({state:e})=>{let r={...e.global?.variables??{},...Pr(e)?.variables??{}};return Qr({variables:r,runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{}})},Te=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},ve=({state:e},r)=>{let{sectionId:n}=r;return Ge(e.projectData,n).section},Ht=({state:e})=>{let r=Te({state:e});if(!r?.pointer)return;let{sectionId:n,lineId:o}=r.pointer,a=ve({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(t=>t.id===o)},Ou=({state:e})=>{let{sectionId:r,lineId:n}=Te({state:e}).pointer,a=ve({state:e},{sectionId:r})?.lines||[],t=a.findIndex(c=>c.id===n),i=a.slice(0,t+1).map(c=>{let u=c.actions||{},p={};return Object.keys(u).forEach(f=>{p[f]=u[f]}),p});return Mr(i)},Ru=e=>{let r=Ht({state:e})?.actions?.dialogue;if(r?.clear===!0||!Array.isArray(r?.content))return"";let n=Qr({variables:{...e.global?.variables??{},...Pr(e)?.variables??{}},runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1});return r.content.map(o=>`${et(o?.text,{variables:n})??""}`).join("")},lr=({state:e})=>ui({text:Ru(e),baseDelay:We(e,"autoForwardDelay"),speed:We(e,"autoForwardSpeed")}),Vb=({state:e})=>{let r=Cu({state:e}),o=Ht({state:e})?.actions??{},a=Mr([r??{},o]);return Oo(r??{},a??{})},qb=({state:e},{sectionId:r})=>{let n=ve({state:e},{sectionId:r});if(!n?.lines)return[];let o=[],a={};for(let t of n.lines){let s=t.actions||{},i=Mr([a,s]),l=Oo(a,i);o.push({id:t.id,changes:l,presentationState:i}),a=Ro(i)}return o},Fb=({state:e},{sectionId:r,includePresentationState:n=!1})=>{let o=qb({state:e},{sectionId:r});return n?{lines:o}:{lines:o.map(({presentationState:a,...t})=>t)}},Cu=({state:e})=>{let{sectionId:r,lineId:n}=Te({state:e}).pointer,a=ve({state:e},{sectionId:r})?.lines||[],t=a.findIndex(l=>l.id===n);if(t<=0)return null;let i=a.slice(0,t).map(l=>{let c=l.actions||{},u={};return Object.keys(c).forEach(p=>{u[p]=c[p]}),u});return Ro(Mr(i))},Xi=({state:e},{slotsPerPage:r=6}={})=>{let a=((Gi({state:e}).saveLoadPagination??1)-1)*r+1,t=[];for(let s=0;s<r;s++){let i=a+s,l=e.global.saveSlots&&e.global.saveSlots[Br(i)]||{};t.push({...l,slotId:i})}return{saveSlots:t}},Ub=Eu,Bb=Xi,Yb=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},zb=({state:e},r={})=>{let n=Ou({state:e}),o=Cu({state:e}),a=Ht({state:e})?.actions??{},t=e.global.pendingScreenTransition,s=t?.animations?{...a,screen:V(t)}:a,i=t?.animations&&o===null?{}:o,{sectionId:l}=Te({state:e}).pointer,{sceneId:c}=Ge(e.projectData,l),u={...Gi({state:e}),localizationPackages:Su({state:e})},p=r?.activePersistentAnimations??[],f=r?.restoredPersistentAnimations??[],d=Gt({state:e}),m=xu({state:e}),y=Iu({state:e}),g=ku({state:e}),h=Au({state:e}),w=Hi({state:e}),{saveSlots:b}=Xi({state:e}),E=Yb(e);return dc({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:Zu({state:e}),skipOnlyViewedLines:!u.skipUnseenText,isLineCompleted:u.isLineCompleted,skipTransitionsAndAnimations:!!u.skipTransitionsAndAnimations||E,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:d,dialogueHistory:bu({state:e}),saveSlots:b,variables:w,runtime:u,activePersistentAnimations:p,restoredPersistentAnimations:f,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:V(e.global.musicRoomPlayer)})},Gb=({state:e},r)=>(e.global.confirmDialog=Yg(r),e.global.pendingEffects.push({name:"render"}),e),Hb=({state:e})=>(e.global.confirmDialog&&(ct(e),e.global.pendingEffects.push({name:"render"})),e),Xb=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),Je(e,"pushOverlay",n,r),e),Wb=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),Je(e,"popOverlay",void 0,r),e),Kb=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=n),e.global.pendingEffects.push({name:"render"}),Je(e,"replaceLastOverlay",n,r),e),Jb=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack=[],ct(e),ut(e),e.global.pendingEffects.push({name:"render"}),Je(e,"clearOverlays",void 0,r),e),Qb=(e,{activeInteraction:r})=>{e.global.autoMode&&e.global.pendingEffects.push({name:"clearAutoNextTimer"}),r&&e.global.skipMode&&e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.nextLineConfig?.auto?.enabled&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Xt=(e,r,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,Gg(e,n),ut(e);let o=Ae({state:e},{pointer:r}),a=o?.source===at,t=o?.source===vr;Qb(e,{activeInteraction:o});let s=ye(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=qc(e);s.sceneReplay.entryId=l,i.payload={sceneReplaySceneId:s.sceneReplay.sceneId,entryId:l}}return e.global.pendingEffects.push(i),{isChoiceVisible:a,isFormVisible:t,activeInteraction:o}},es=(e,r,n)=>{!(r?.source===at||r?.source===vr)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},$u=({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),Wt=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),Zb=({state:e})=>{let r=e.global.autoMode;return Ae({state:e})&&!r||(r?Wt({state:e}):$u({state:e})),e},_u=({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),eI=({state:e})=>{let r=hu({state:e});return Ae({state:e})&&!r||(r?Ar({state:e}):_u({state:e})),e},rs=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),Je(e,"showDialogueUI",void 0,r),e),Tu=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),Je(e,"hideDialogueUI",void 0,r),e),rI=e=>{let{state:r}=e;return gu({state:r})?rs(e):Tu(e),r},Er=(e,r,n)=>(ji(e,r,n),du(e),e.global.pendingEffects.push({name:"render"}),e),Kt=(e,r,n,o,a)=>{let t=ji(e,r,n);return e.global.pendingEffects.push({name:"render"}),Je(e,o,{value:t},a),e},tI=({state:e},r)=>Er(e,"dialogueTextSpeed",r?.value),nI=({state:e},r)=>(Er(e,"autoForwardDelay",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e),sI=({state:e},r)=>(Er(e,"autoForwardSpeed",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!Ae({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e),oI=({state:e},r)=>Er(e,"skipUnseenText",r?.value),iI=({state:e},r)=>Er(e,"skipTransitionsAndAnimations",r?.value),aI=({state:e},r)=>Er(e,"soundVolume",r?.value),lI=({state:e},r)=>Er(e,"musicVolume",r?.value),cI=({state:e},r)=>Er(e,"muteAll",r?.value),hi=({state:e,rollbackActionBatchStack:r},n)=>Kt(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",r),gi=({state:e,rollbackActionBatchStack:r})=>{let n=We(e,"saveLoadPagination")+1;return Kt(e,"saveLoadPagination",n,"incrementSaveLoadPagination",r),e},bi=({state:e,rollbackActionBatchStack:r})=>{let n=We(e,"saveLoadPagination")-1;return Kt(e,"saveLoadPagination",n,"decrementSaveLoadPagination",r),e},Ii=({state:e,rollbackActionBatchStack:r},n)=>Kt(e,"menuPage",n?.value,"setMenuPage",r),wi=({state:e,rollbackActionBatchStack:r},n)=>Kt(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",r),uI=({state:e})=>(e.global.pendingEffects=[],e),pI=({state:e},r)=>(e.global.pendingEffects.push(r),e),dI=({state:e},r)=>{if(ye(e))return e;let n=r?.resourceId;return Fc(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},fI=({state:e},r)=>{if(ye(e))return e;let n=r?.resourceId,o=Fc(e,n);if(o.type!=="number")throw new Error(`Achievement resource "${n}" does not support numeric progress`);let a=r?.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 t=Math.min(a,o.target);return e.global.pendingEffects.push({name:"setAchievementProgress",payload:{resourceId:n,current:t,target:o.target,completed:t>=o.target}}),e},Nu=e=>e?.lines?.[0],ju=(e,{sectionId:r,resetStoryState:n=!1,screen:o})=>{let a=!!iu(o),t=ve({state:e},{sectionId:r});if(!t)return console.warn(`Section not found: ${r}`),e;let s=Nu(t);if(!s)return console.warn(`Section ${r} has no lines`),e;if(n&&!ib(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=pt(l),p=u.read;n||Ur(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||xr(l,{compatibilityAnchor:!0}),u.read={sectionId:r,lineId:s.id},n?l.rollback=Bt({pointer:u.read}):Zn(e,{sectionId:r,lineId:s.id})}let{activeInteraction:c}=Xt(e,l?.pointers?.read,{screenTransition:o});return es(e,i,c),e},mI=({state:e},r)=>{if(ye(e))throw new Error("Cannot reset the story while a scene replay is active");return ju(e,{sectionId:r?.sectionId,resetStoryState:!0,screen:r?.screen})},Du=e=>(e.global.accountViewedRegistry=yg(e.global.accountViewedRegistry),e.global.accountViewedRegistry),ts=(e,r)=>{!Array.isArray(r)||r.length===0||e.global.pendingEffects.push({name:"applyScopedDataUpdates",payload:{updates:r.map(n=>({scope:n.scope,path:n.path,op:n.op,value:V(n.value)}))}})},Lu=(e,r)=>{ts(e,[{scope:"account",path:"viewedRegistry",op:"markViewed",value:{sections:(Array.isArray(r?.sections)?r.sections:[]).map(n=>({sectionId:n.sectionId,...n.lastLineId===void 0?{}:{lineId:n.lastLineId}})),resources:Array.isArray(r?.resources)?r.resources:[]}}])},yI=(e,r,{sectionId:n,lineId:o})=>{if(!n||!o)return!1;let a=M(r)?r:{};Array.isArray(a.sections)||(a.sections=[]);let t=a.sections.find(s=>s.sectionId===n);if(t){if(t.lastLineId===void 0)return!1;let s=ve({state:e},{sectionId:n});if(s?.lines){let i=s.lines.findIndex(c=>c.id===t.lastLineId),l=s.lines.findIndex(c=>c.id===o);if(i===-1||l>i)return t.lastLineId===o?!1:(t.lastLineId=o,!0)}else return t.lastLineId===o?!1:(t.lastLineId=o,!0);return!1}else return a.sections.push({sectionId:n,lastLineId:o}),!0},Ur=(e,r)=>{if(ye(e)||e.global.accountViewedRegistry===void 0)return;yI(e,Du(e),r)&&Lu(e,{sections:[{sectionId:r.sectionId,lastLineId:r.lineId}],resources:[]})},hI=({state:e},r)=>(Ur(e,r),e.global.pendingEffects.push({name:"render"}),e),gI=({state:e},r)=>{if(ye(e))return e;let{resourceId:n}=r;if(e.global.accountViewedRegistry!==void 0){let o=Du(e);o.resources.find(t=>t.resourceId===n)||(o.resources.push({resourceId:n}),Lu(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Qe=(e,r,n)=>{if(!M(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},ki=(e,r,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${r}`)},ns=(e,r)=>{let n=e.global.imageGalleryNavigation;n.groupId===r.groupId&&n.variantId===r.variantId&&n.pageIndex===r.pageIndex||(e.global.imageGalleryNavigation=r,e.global.pendingEffects.push({name:"render"}))},bI=({state:e},r)=>{let n="showImageGalleryVariant";Qe(n,r,lg),ki(n,"groupId",r.groupId),Object.prototype.hasOwnProperty.call(r,"variantId")&&ki(n,"variantId",r.variantId);let o=e.projectData?.resources?.imageGallery;if(o===void 0)return e;let a=o.groups.findIndex(i=>i.id===r.groupId),t=o.groups[a];if(!t)return e;let s=r.variantId===void 0?t.variants[0]:t.variants.find(i=>i.id===r.variantId);return!s||Ut(e,s)||ns(e,{groupId:t.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},Mu=(e,r,n,o)=>{Qe(o,r,Pi);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let t=e.global.imageGalleryNavigation;if(typeof t.groupId!="string"||typeof t.variantId!="string")return e;let s=a.groups.find(c=>c.id===t.groupId),i=s?.variants.findIndex(c=>c.id===t.variantId);if(!s||i===void 0||i<0)return e;let l=mi(e,s.variants,i,n);return l&&ns(e,{...t,variantId:l.id}),e},II=({state:e},r)=>Mu(e,r,-1,"moveToPreviousImageGalleryVariant"),wI=({state:e},r)=>Mu(e,r,1,"moveToNextImageGalleryVariant"),kI=({state:e},r)=>{if(Qe("clearImageGallerySelection",r,Pi),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return ns(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},Vu=(e,r)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=Vi(n);if(r>=o)return e;let a=e.global.imageGalleryNavigation,t=qi(n,a);return r===t||ns(e,{groupId:null,variantId:null,pageIndex:r}),e},vI=({state:e},r)=>{if(Qe("moveToImageGalleryPage",r,cg),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return Vu(e,r.pageIndex)},qu=(e,r,n,o)=>{Qe(o,r,Pi);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=qi(a,e.global.imageGalleryNavigation)+n;return s<0?e:Vu(e,s)},AI=({state:e},r)=>qu(e,r,1,"moveToNextImageGalleryPage"),PI=({state:e},r)=>qu(e,r,-1,"moveToPreviousImageGalleryPage"),cr=(e,r,n)=>{if(!M(r))throw new Error(`${e} payload must be an object`);Object.keys(r).forEach(o=>{if(!n.has(o))throw new Error(`${e} payload contains unsupported property "${o}"`)})},xI=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error(`${e} requires a non-empty trackId`)},ze=e=>{e.global.pendingEffects.push({name:"render"})},Fu=(e,r)=>{let n=e.projectData.resources.musicRoom,o=e.global.musicRoomPlayer,a=o.trackId!==null,t=o.trackId===r.id,s=o.bgmPlayback;a||(s={commandId:Qn(e),operation:"pause"});let i=zt(e,"play",0),l=n.tracks.indexOf(r),c=t?o.durationMs:null;e.global.musicRoomPlayer={trackId:r.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)},EI=({state:e},r)=>{let n="playMusicRoomTrack";cr(n,r,ug),xI(n,r.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(t=>t.id===r.trackId);return!a||Fi(e,a)||Fu(e,a),e},SI=({state:e},r)=>{cr("playMusicRoom",r,lt);let o=e.global.musicRoomPlayer;if(o.trackId===null||o.status==="playing")return e;let a=o.status==="ended",t=o.readiness==="error",s=o.status==="paused"&&!t?"resume":"play",i=a?0:o.positionMs;return o.playback=zt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,t&&(o.readiness=o.durationMs===null?"loading":"ready"),ze(e),e},OI=({state:e},r)=>{cr("pauseMusicRoom",r,lt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=zt(e,"pause"),o.seekFallback=null,o.status="paused",ze(e)),e},RI=({state:e},r)=>{cr("stopMusicRoom",r,lt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=zt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,ze(e)),e},CI=({state:e},r)=>{if(cr("seekMusicRoom",r,pg),typeof r.positionMs!="number"||!Number.isFinite(r.positionMs)||r.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||r.positionMs>o.durationMs)return e;let a=zt(e,"seek",r.positionMs);return o.seekFallback={commandId:a.commandId,status:o.status,positionMs:o.positionMs},o.playback=a,o.positionMs=r.positionMs,r.positionMs===o.durationMs?o.status="ended":o.status==="ended"&&(o.status="stopped"),ze(e),e},Uu=(e,r,n,o)=>{cr(o,r,lt);let a=e.projectData?.resources?.musicRoom,t=e.global.musicRoomPlayer;if(!a||t.trackId===null)return e;let s=a.tracks.findIndex(l=>l.id===t.trackId);if(s<0)return e;let i=yi(e,a.tracks,s,n);return i&&Fu(e,i),e},$I=({state:e},r)=>Uu(e,r,-1,"playPreviousMusicRoomTrack"),_I=({state:e},r)=>Uu(e,r,1,"playNextMusicRoomTrack"),TI=({state:e},r)=>{cr("clearMusicRoomSelection",r,lt);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,t={commandId:Qn(e),operation:"resume"};return e.global.musicRoomPlayer={...Jn({bgmPlayback:t}),pageIndex:a},ze(e),e},Bu=(e,r)=>{let n=e.projectData?.resources?.musicRoom;if(!n||r>=Ui(n))return e;let o=e.global.musicRoomPlayer,a=Bi(n,o);return r===a||(o.pageIndex=r,ze(e)),e},NI=({state:e},r)=>{if(cr("moveToMusicRoomPage",r,dg),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return Bu(e,r.pageIndex)},Yu=(e,r,n,o)=>{cr(o,r,lt);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let t=Bi(a,e.global.musicRoomPlayer)+n;return t<0?e:Bu(e,t)},jI=({state:e},r)=>Yu(e,r,1,"moveToNextMusicRoomPage"),DI=({state:e},r)=>Yu(e,r,-1,"moveToPreviousMusicRoomPage"),Fr=e=>{let r=ye(e);if(!r)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=V(r.sceneReplay.returnState),o=r.sceneReplay.sceneId;return e.global.pendingEffects=e.global.pendingEffects.filter(a=>a?.name!=="handleLineActions"||a?.payload?.sceneReplaySceneId!==o),e.contexts.pop(),nb(e,n),e.global.pendingEffects.push({name:"render"}),!0},LI=({state:e},r)=>{let n="startSceneReplay";if(Qe(n,r,fg),ki(n,"sceneId",r.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===r.sceneId);if(!a||!vu(e,a.sceneId))return e;let t=e.projectData.story.scenes[a.sceneId],s=t?.initialSectionId,i=t?.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=rb(e);tb(e);let u=Di({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 pu(e,u),e.contexts.push(u),Xt(e,u.pointers.read),e},zu=({state:e},r)=>{Qe("finishSceneReplay",r,xi);let o=ye(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(Pr(e)?.rollback?.isRestoring===!0)return e;let t=Te({state:e})?.pointer,{sceneId:s}=Ge(e.projectData,t?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=hg(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),ts(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},MI=({state:e},r)=>(Qe("exitSceneReplay",r,xi),Fr(e),e),Gu=(e,r)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||r>=Yi(n))return e;let o=zi(n,e.global.sceneReplayNavigation);return r===o||(e.global.sceneReplayNavigation.pageIndex=r,e.global.pendingEffects.push({name:"render"})),e},VI=({state:e},r)=>{if(Qe("moveToSceneReplayPage",r,mg),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return Gu(e,r.pageIndex)},Hu=(e,r,n,o)=>{Qe(o,r,xi);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let t=zi(a,e.global.sceneReplayNavigation)+n;return t<0?e:Gu(e,t)},qI=({state:e},r)=>Hu(e,r,1,"moveToNextSceneReplayPage"),FI=({state:e},r)=>Hu(e,r,-1,"moveToPreviousSceneReplayPage"),ss=(e,r)=>{let n=e.global.musicRoomPlayer;return!M(r)||r.id!==ig||n.trackId===null||!n.playback||r.commandId!==n.playback.commandId?null:n},Wi=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,Xu=(e,r,n,{readiness:o=r.readiness}={})=>((r.readiness!==o||r.positionMs!==n.positionMs||r.durationMs!==n.durationMs||r.seekFallback!==null)&&(r.readiness=o,r.positionMs=n.positionMs,r.durationMs=n.durationMs,r.seekFallback=null,ze(e)),e),UI=({state:e},r)=>{let n=ss(e,r);return!n||n.readiness!=="loading"||!Wi(r)?e:Xu(e,n,r,{readiness:"ready"})},BI=({state:e},r)=>{let n=ss(e,r);return!n||n.readiness!=="ready"||!Wi(r)||n.status==="stopped"&&r.positionMs!==0||n.status==="ended"&&r.positionMs!==r.durationMs?e:Xu(e,n,r)},YI=({state:e},r)=>{let n=ss(e,r);return!n||n.readiness!=="ready"||n.status!=="playing"||!Wi(r)||r.positionMs!==r.durationMs||(n.status="ended",n.positionMs=r.positionMs,n.durationMs=r.durationMs,n.seekFallback=null,ze(e)),e},zI=({state:e},r)=>{let n=ss(e,r);if(!n||typeof r.errorCode!="string"||!ag.has(r.errorCode)||n.readiness==="error"&&n.status==="stopped")return e;if(r.errorCode==="invalid-position"){let o=n.seekFallback;if(n.playback.operation!=="seek"||o?.commandId!==r.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},Wu=({state:e,rollbackActionBatchStack:r},n)=>{let o=vg(n.manual),{auto:a,applyMode:t}=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},t!==void 0?e.global.nextLineConfig.applyMode=t:c!==void 0&&(e.global.nextLineConfig.applyMode=c)):(o&&(e.global.nextLineConfig.manual=o),a&&(e.global.nextLineConfig.auto=a),t!==void 0&&(e.global.nextLineConfig.applyMode=t));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"}),Je(e,"setNextLineConfig",n,r),e},GI=({state:e},r)=>{if(ye(e))throw new Error("Cannot save while a scene replay is active");let n=r?.slotId;Uc(n,"saveSlot");let{thumbnailImage:o}=r,a=r?.savedAt,t=Br(n),s=V(e.contexts);s?.forEach(c=>{pt(c),fu(c.rollback),Sg(c.rollback,e.projectData)});let i={contexts:s},l={formatVersion:Vc,slotId:Hc(n),savedAt:typeof a=="number"?a:Date.now(),image:o,state:i};return e.global.saveSlots[t]=l,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}},{name:"render"}),e},HI=({state:e},r)=>{if(ye(e))throw new Error("Cannot load while a scene replay is active");let n=r?.slotId;Uc(n,"loadSlot");let o=Br(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0;if(a){let t=Bg(a,e.projectData);e.contexts=t.state.contexts,e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=Yt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,ct(e),ut(e),Oi(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},XI=({state:e},r)=>{if(ye(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=r;Gc(n),xt(n),Et(n),St(n),Dr(n?.resources?.variables??{}),Do(n);let o=$g(n),a=o?e.contexts?.map((s,i)=>ou(V(s),n,i)):void 0,t=o?Og(e.global.saveSlots,n):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=Ai(),e.global.sceneReplayNavigation=Ei(),Oi(e),o){let s=n?.resources?.variables??{},{globalVariablesDefaultValues:i}=On(n??{});Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...i,...Ot(e.global.variables,s,{allowedScopes:["device","account"]})}),e.contexts=a,e.global.saveSlots=t}return ct(e),ut(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},WI=({state:e},r)=>{let{l10nId:n,projectData:o}=r??{};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,ji(e,"localizationPackageId",n),du(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},KI=({state:e},r)=>{let{sectionId:n,lineId:o}=r;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 t=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:t});if(!s?.lines||!Array.isArray(s.lines))return console.warn(`Section ${t} has no lines`),e;if(!s.lines.find(p=>p.id===o))return console.warn(`Line not found: ${o} in section ${t}`),e;let l=Ae({state:e}),c=pt(a);c.read={sectionId:t,lineId:o};let{activeInteraction:u}=Xt(e,c.read);return es(e,l,u),e},JI=({state:e,rollbackActionBatchStack:r},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return rs({state:e,rollbackActionBatchStack:r}),e;let o=Ae({state:e});if(o?.source===at&&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?di(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 t=Te({state:e})?.pointer,s=t?.sectionId,i=ve({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],c=i?.lines||[],p=c.findIndex(f=>f.id===t?.lineId)+1;if(p<c.length){let f=c[p],d=!We(e,"skipUnseenText");if(e.global.skipMode&&d&&!Mi({state:e},{sectionId:s,lineId:f.id}))return Ar({state:e}),e;if(l&&!l.rollback&&xr(l,{compatibilityAnchor:!0}),l){let y=pt(l),g=y.read?.lineId;g&&s&&Ur(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:f.id}}Zn(e,{sectionId:s,lineId:f.id}),Si(e);let{activeInteraction:m}=Xt(e,{sectionId:s,lineId:f.id});es(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&&Wt({state:e}),e.global.skipMode&&Ar({state:e}),di(e)}return e},QI=({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,t=o?.lineId;a&&t&&Ur(e,{sectionId:a,lineId:t});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},ZI=({state:e},r)=>ju(e,{sectionId:r?.sectionId,screen:r?.screen}),ew=({state:e,rollbackActionBatchStack:r},n)=>{let o=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!o)return rs({state:e,rollbackActionBatchStack:r}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:lr({state:e})}}),e;let a=Ae({state:e});if(a?.source===at&&n?.bypassChoice!==!0||a?.source===vr&&n?._interactionSource!==vr||a&&a.source!==at&&a.source!==vr)return e;let t=ye(e);if(t?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Fr(e),e):(t.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=!We(e,"skipUnseenText");if(e.global.skipMode&&m&&!Mi({state:e},{sectionId:i,lineId:d.id})&&(Ar({state:e}),!o))return e;if(c&&!c.rollback&&xr(c,{compatibilityAnchor:!0}),c){let g=pt(c),h=g.read?.lineId;h&&i&&Ur(e,{sectionId:i,lineId:h}),g.read={sectionId:i,lineId:d.id}}Zn(e,{sectionId:i,lineId:d.id}),Si(e);let{activeInteraction:y}=Xt(e,{sectionId:i,lineId:d.id});es(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&&Wt({state:e}),e.global.skipMode&&Ar({state:e}),di(e)}return e},Ki=(e,r={})=>{let n=Gt({state:e});return!n||r.formKey&&r.formKey!==n.key||r.formId&&r.formId!==n.id?null:n},rw=(e,r)=>{if(!r.variableId)throw new Error(`form field "${r.id}" requires variableId`);let n=e.projectData.resources?.variables?.[r.variableId],o=n?.scope,a=n?.type;if(Se(n))throw new Error(`Cannot update computed variable: ${r.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${r.variableId}`);if(Rt(o,r.variableId),Ct(a,"set",r.variableId),ye(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${r.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},tw=(e,r)=>({id:e.id,key:e.key,valid:!0,values:V(r),fields:V(e.fields),fieldList:V(e.fieldList)}),nw=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let r=Te({state:e})?.pointer,n=r?.sectionId,o=r?.lineId;n&&o&&Ur(e,{sectionId:n,lineId:o})},sw=({state:e},r={})=>{let n=Ki(e,r),o=r.field;if(!n?.fields?.[o])return e;let a=lu(e,n.key),t=Wn(r.value),s=n.fields[o],i=Ti(s,t);return a.values[o]=t,a.touched[o]=!0,i?a.errors[o]=i:delete a.errors[o],e.global.pendingEffects.push({name:"render"}),e},ow=({state:e,rollbackActionBatchStack:r},n={})=>{let o=Ki(e,n);if(!o)return{submitted:!1,valid:!1,reason:"inactive"};let a=lu(e,o.key);a.submitted=!0;let t={},s={};if(Object.entries(o.fields).forEach(([f,d])=>{let m=Object.prototype.hasOwnProperty.call(a.values,f)?a.values[f]:d.value,y=Ti(d,m);a.touched[f]=!0,y&&(s[f]=y),t[f]=au(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(t)}};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}=rw(e,d),y=m==="context"?i.variables:e.global.variables,g=t[f];y[d.variableId]=Cn(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&&Je(e,"updateVariable",{id:"submitForm",operations:u},r),ts(e,c);let p=tw(o,t);return nw(e),delete e.global.formDrafts[o.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},iw=({state:e},r={})=>{let n=Ki(e,r);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"}},aw=({state:e,rollbackActionBatchStack:r},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 t=e.contexts[e.contexts.length-1];if(t?.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(Rt(m,c),Ct(y,u,c),Rn(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"?t.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]=Cn(g[c],u,p,{roundTo:f}),(m==="device"||m==="account")&&i.push({scope:m,path:`variables.${c}`,op:"set",value:V(g[c])})}),s&&Je(e,"updateVariable",{id:o,operations:l},r),ts(e,i),e.global.pendingEffects.push({name:"render"}),e},Ue=e=>(r,n)=>e({state:r},n),Ku=e=>({variables:Qr({variables:{...e.global?.variables??{},...Pr(e)?.variables??{}},runtime:gr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:gr(e)}),lw=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")},cw=(e,r,n)=>{if(!M(e))throw new Error(`conditional branch at index ${r} must be an object`);if(!M(e.actions))throw new Error(`conditional branch at index ${r} requires actions object`);if(!Object.prototype.hasOwnProperty.call(e,"when")&&r!==n-1)throw new Error("conditional else branch must be the last branch")},uw=(e,r,n,o)=>{lw(r);for(let a=0;a<r.branches.length;a+=1){let t=r.branches[a];if(cw(t,a,r.branches.length),!(Object.prototype.hasOwnProperty.call(t,"when")&&!Pt(t.when,{...Ku(e),...n?.bindings??{}}))){Ji(e,t.actions,n,[...o,"branches",String(a),"actions"]);return}}},pw=(e,r,n,o)=>{let a=n?.checkpoint;if(a?.randomOutcomeVersion!==ar)return;let t=o.join("."),s=n.randomOutcomeOrdinals,i=s.get(t)??0;s.set(t,i+1);let l=a.randomOutcomes?.find(p=>p.path===t&&p.ordinal===i);if(!l)return;if(r?.distribution?.type!==l.type)throw new Error(`recorded random outcome type does not match canonical action at ${t}`);let c=Tn(V(l.result),l.type);if(c.type==="integer"){if(!Kc(r.distribution)||c.value<r.distribution.min||c.value>r.distribution.max)throw new Error(`recorded random outcome does not match canonical action at ${t}`);fi(e,{id:"randomResult",operations:[{variableId:r.variableId,op:"set",value:c.value}]});return}let u=r.distribution.outcomes?.[c.outcomeIndex]?.actions;if(!M(u))throw new Error(`recorded random outcome does not match canonical action at ${t}`);Ji(e,u,n,[...o,"distribution","outcomes",String(c.outcomeIndex),"actions"])},dw={conditional:{replayLine:uw},random:{replayLine:pw},updateVariable:{recordSources:[kr],replayLine:fi,replayRecorded:fi,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Ue(Wu)},setSaveLoadPagination:{recordSources:[kr],replayLine:Ue(hi),replayRecorded:Ue(hi),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[kr],replayLine:Ue(gi),replayRecorded:Ue(gi),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[kr],replayLine:Ue(bi),replayRecorded:Ue(bi),persistInSaveSlot:!0},setMenuPage:{recordSources:[kr],replayLine:Ue(Ii),replayRecorded:Ue(Ii),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[kr],replayLine:Ue(wi),replayRecorded:Ue(wi),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Ue(zu)}},os=e=>dw[e]??null,fw=e=>os(e)?.persistInSaveSlot===!0,mw=(e,r)=>{let n=os(e)?.recordSources;return Array.isArray(n)&&n.includes(r)},yw=(e,r,n)=>{os(r)?.replayRecorded?.(e,n)},hw=(e,r,n,o,a)=>{let t=os(r);if(!t?.replayLine)return;if(r==="conditional"||r==="random"){t.replayLine(e,n,o,a);return}let s=o?.bindings??{},i=$t({[r]:n},{...Ku(e),...s})[r];t.replayLine(e,i)},Ji=(e,r,n,o)=>{let a=Nn(r);jn(a);for(let[t,s]of a)hw(e,t,s,n,[...o,t])},gw=e=>e?.returnable!==!1,Ju=(e,r)=>{if(r>=0)return e.currentIndex+r;let n=Math.abs(r);for(let o=e.currentIndex-1;o>=0;o-=1)if(gw(e.timeline[o])&&(n-=1,n===0))return o;return-1},Qu=({state:e},r)=>{let{offset:n}=r;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 t=Ju(a,n);if(t<0||t>=a.timeline.length)return null;let s=a.timeline[t];return{sectionId:s.sectionId,lineId:s.lineId}},Zu=({state:e})=>Qu({state:e},{offset:-1})!==null,bw=({state:e},r)=>{let{offset:n=-1}=r;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}),t=Ju(a,n);return t<0||t>=a.timeline.length?e:yu(e,t)},Iw=({state:e},r)=>{let{sectionId:n,lineId:o}=r,a=e.contexts[e.contexts.length-1];if(!a)throw new Error("No context available for rollbackToLine");let t=xr(a,{compatibilityAnchor:!a.rollback}),i=t.timeline.slice(0,t.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===t.currentIndex?e:yu(e,i)},ww=()=>({lineEntryId:1,rollbackCheckpointLineEntryId:1,autoSessionId:0,skipSessionId:0,rollbackAuthoredSuppression:null}),pi=(e,r)=>{let n=e[r];if(!Number.isSafeInteger(n)||n<0)throw new RangeError(`Internal playback ${r} is invalid`);if(n===Number.MAX_SAFE_INTEGER)throw new RangeError(`Internal playback ${r} is exhausted`);return e[r]=n+1,e[r]},Lc=e=>e.contexts?.[e.contexts.length-1]?.pointers?.read??null,Mc=e=>{let r=e.contexts?.[e.contexts.length-1];return Number.isInteger(r?.rollback?.currentIndex)?r.rollback.currentIndex:null},kw=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,ep=e=>{let r=e.global?.nextLineConfig?.auto;return r?.enabled!==!0?{enabled:!1}:{enabled:!0,trigger:r.trigger==="fromStart"?"fromStart":"fromComplete",delayMs:r.delay??1e3}},Qi=e=>JSON.stringify(ep(e)),vw=({actionName:e,args:r,state:n,previousState:o})=>{let a=Lc(o),t=Lc(n);if(!kw(a,t)||o.contexts?.length!==n.contexts?.length||(e==="rollbackByOffset"||e==="rollbackToLine")&&Mc(o)!==Mc(n))return!0;let s=r[0]??{};if(e==="jumpToLine"){let i=s.sectionId??a?.sectionId;return typeof s.lineId=="string"&&t?.sectionId===i&&t?.lineId===s.lineId&&n.global.isLineCompleted===!1}if(e==="sectionTransition"||e==="resetStoryAtSection"){let i=Ge(n.projectData,s.sectionId).section,l=Nu(i)?.id;return typeof l=="string"&&t?.sectionId===s.sectionId&&t?.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},Aw=({actionName:e,args:r,state:n,transactionalMetadata:o,previousState:a})=>{if(vw({actionName:e,args:r,state:n,previousState:a})){let u=pi(o,"lineEntryId");e==="rollbackByOffset"||e==="rollbackToLine"?o.rollbackAuthoredSuppression={lineEntryId:u,configKey:Qi(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)&&pi(o,"autoSessionId"),n.global.skipMode===!0&&(e==="startSkipMode"&&!i||e==="toggleSkipMode"&&a.global.skipMode!==!0||s&&a.global.skipMode!==!0)&&pi(o,"skipSessionId")},Pw=({state:e,transactionalMetadata:r})=>{let n=r.rollbackAuthoredSuppression;n&&(n.lineEntryId!==r.lineEntryId||n.configKey!==Qi(e))&&(r.rollbackAuthoredSuppression=null)},xw=({state:e,playbackOwnership:r})=>{let n=Ae({state:e}),o=r.lineEntryId,a=!n&&e.global.autoMode===!0&&e.global.isLineCompleted===!0,t=!n&&e.global.skipMode===!0,s=ep(e),i=r.rollbackAuthoredSuppression,l=!n&&s.enabled&&(s.trigger==="fromStart"||e.global.isLineCompleted===!0)&&!(i?.lineEntryId===o&&i.configKey===Qi(e)),c=a?Ru(e):null;return{auto:a?{owner:{sessionId:r.autoSessionId,lineEntryId:o},delayMs:ui({text:c,baseDelay:We(e,"autoForwardDelay"),speed:We(e,"autoForwardSpeed")}),contentKey:c}:null,skip:t?{owner:{sessionId:r.skipSessionId},delayMs:80}:null,authored:l?{owner:{lineEntryId:o},delayMs:s.delayMs,trigger:s.trigger}:null}},Ew=({playbackOwnership:e})=>e.lineEntryId,rp=(e,r={})=>{let n=gb(e),o=[],a=r.createPlaybackOwnership??ww;if(typeof a!="function")throw new TypeError("createPlaybackOwnership must be a function");return tl(n,{selectPendingEffects:Ib,selectSkipMode:hu,selectAutoMode:wb,selectIsChoiceVisible:xu,selectIsFormVisible:Pb,selectActiveInteraction:Ae,selectActiveForm:Gt,selectDialogueUIHidden:gu,selectDialogueHistory:bu,selectConfirmDialog:Ab,selectIsLineAccountViewed:Mi,selectIsResourceAccountViewed:Eb,selectImageGalleryConfig:Sb,selectImageGallery:Iu,selectMusicRoomConfig:Rb,selectMusicRoom:ku,selectSceneReplayConfig:Cb,selectSceneReplay:Au,selectIsSceneReplayActive:$b,selectActiveSceneReplayEntry:_b,selectNextLineConfig:Tb,selectSystemState:Nb,selectAchievements:jb,selectAchievement:Db,selectSaveSlotMap:Eu,selectSaveSlots:Ub,selectSaveSlot:Lb,selectLocalizationPackages:Su,selectRuntime:Gi,selectRuntimeValue:Mb,selectAllVariables:Hi,selectCurrentPointer:Te,selectSection:ve,selectCurrentLine:Ht,selectPresentationState:Ou,selectAutoForwardTimerDelay:lr,selectPresentationChanges:Vb,selectSectionLineChanges:Fb,selectSaveSlotPage:Xi,selectCurrentPageSlots:Bb,selectRenderState:zb,selectOverlayStack:bb,selectLineIdByOffset:Qu,selectCanRollback:Zu,selectRollbackCursor:lb,selectDesiredPlaybackTimers:xw,selectPlaybackLineEntryId:Ew,startAutoMode:$u,stopAutoMode:Wt,toggleAutoMode:Zb,startSkipMode:_u,stopSkipMode:Ar,toggleSkipMode:eI,showDialogueUI:rs,hideDialogueUI:Tu,toggleDialogueUI:rI,setDialogueTextSpeed:tI,setAutoForwardDelay:nI,setAutoForwardSpeed:sI,setSkipUnseenText:oI,setSkipTransitionsAndAnimations:iI,setSoundVolume:aI,setMusicVolume:lI,setMuteAll:cI,setSaveLoadPagination:hi,incrementSaveLoadPagination:gi,decrementSaveLoadPagination:bi,setMenuPage:Ii,setMenuEntryPoint:wi,showConfirmDialog:Gb,hideConfirmDialog:Hb,resetStoryAtSection:mI,clearPendingEffects:uI,appendPendingEffect:pI,completeAchievement:dI,setAchievementProgress:fI,beginRollbackActionBatch:pb,endRollbackActionBatch:db,ensureRandomReplayOccurrence:fb,recordRandomOutcome:mb,markRollbackCheckpointTransient:cb,markSavedRollbackCheckpointTransient:ub,recordCurrentDialogueHistory:vb,addViewedLine:hI,addViewedResource:gI,showImageGalleryVariant:bI,moveToPreviousImageGalleryVariant:II,moveToNextImageGalleryVariant:wI,clearImageGallerySelection:kI,moveToImageGalleryPage:vI,moveToNextImageGalleryPage:AI,moveToPreviousImageGalleryPage:PI,playMusicRoomTrack:EI,playMusicRoom:SI,pauseMusicRoom:OI,stopMusicRoom:RI,seekMusicRoom:CI,playPreviousMusicRoomTrack:$I,playNextMusicRoomTrack:_I,clearMusicRoomSelection:TI,moveToMusicRoomPage:NI,moveToNextMusicRoomPage:jI,moveToPreviousMusicRoomPage:DI,musicRoomSoundReady:UI,musicRoomSoundProgress:BI,musicRoomSoundComplete:YI,musicRoomSoundError:zI,startSceneReplay:LI,finishSceneReplay:zu,exitSceneReplay:MI,moveToSceneReplayPage:VI,moveToNextSceneReplayPage:qI,moveToPreviousSceneReplayPage:FI,setNextLineConfig:Wu,saveSlot:GI,loadSlot:HI,updateProjectData:XI,updateLocalizationPackage:WI,sectionTransition:ZI,jumpToLine:KI,nextLine:JI,markLineCompleted:QI,rollbackToLine:Iw,rollbackByOffset:bw,pushOverlay:Xb,popOverlay:Wb,replaceLastOverlay:Kb,clearOverlays:Jb,updateFormField:sw,submitForm:ow,cancelForm:iw,updateVariable:aw,nextLineFromSystem:ew},{createTransactionalMetadata:a,updateTransactionalMetadata:Aw,finalizeTransactionalMetadata:Pw,transformActionFirstArgument:(s,i)=>({state:s,rollbackActionBatchStack:o,playbackOwnership:i}),transformSelectorFirstArgument:(s,i)=>({state:s,playbackOwnership:i})})};var Sw="route-engine",Ow="projectPersistence";var np=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),he=e=>Object.prototype.toString.call(e)==="[object Object]",tp="variables.",Rw=(e={})=>{let r=he(e)?e:{};return{sections:(Array.isArray(r.sections)?r.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(r.resources)?r.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)}},Cw=(e={})=>{let r=he(e)?e:{};return{sections:(Array.isArray(r.sections)?r.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(r.resources)?r.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)}},$w=(e,r)=>{let n=Cw(e),o=Rw(r),a=n.sections.map(s=>({...s})),t=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=>{t.find(l=>l.resourceId===s.resourceId)||t.push({...s})}),{sections:a,resources:t}},_w=(e={})=>{let r=he(e)?e:{},n=Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},Tw=(e,r)=>{let n=_w(e),o=he(r)&&Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},sp=(e={})=>{let r=he(e)?e:{};return{saveSlots:he(r.saveSlots)?r.saveSlots:{},globalDeviceVariables:he(r.globalDeviceVariables)?r.globalDeviceVariables:{},globalAccountVariables:he(r.globalAccountVariables)?r.globalAccountVariables:{},globalRuntime:he(r.globalRuntime)?r.globalRuntime:{},accountViewedRegistry:he(r.accountViewedRegistry)?r.accountViewedRegistry:{},accountReplayRegistry:he(r.accountReplayRegistry)?r.accountReplayRegistry:{}}},Nw=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((r,n)=>{if(!he(r))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=r.path?.startsWith(tp)?r.path.slice(tp.length):null;if(o!==null){if(!["device","account"].includes(r.scope))throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(o.length===0)throw new Error(`Malformed applyScopedDataUpdates path "${r.path}" at updates[${n}].`);if(r.op!=="set")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return{scope:r.scope,path:r.path,op:r.op,value:r.value,variableId:o}}if(r.path==="viewedRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="markViewed")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);return r}if(r.path==="replayRegistry"){if(r.scope!=="account")throw new Error(`Unsupported applyScopedDataUpdates scope "${r.scope}" at updates[${n}].`);if(r.op!=="unlock")throw new Error(`Unsupported applyScopedDataUpdates operation "${r.op}" at updates[${n}].`);if(!he(r.value)||!Array.isArray(r.value.sceneIds)||r.value.sceneIds.length===0||r.value.sceneIds.some(a=>typeof a!="string"||a.length===0))throw new Error(`Malformed applyScopedDataUpdates replayRegistry value at updates[${n}].`);return{...r,value:{sceneIds:[...new Set(r.value.sceneIds)]}}}throw typeof r.path!="string"?new Error(`Malformed applyScopedDataUpdates path at updates[${n}].`):new Error(`Unsupported applyScopedDataUpdates path "${r.path}" at updates[${n}].`)})},jw=(e,r)=>{let n={};return Nw(r).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=$w(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=Tw(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},dt=e=>{if(typeof e!="string")return null;let r=e.trim();return r.length>0?r:null},Dw=e=>{let r=dt(e);if(!r)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return r},Lw=e=>{let r=e??globalThis.indexedDB;if(!r)throw new Error("IndexedDB is not available in this environment.");return r},Mw=({indexedDB:e,databaseName:r,objectStoreName:n})=>new Promise((o,a)=>{let t=e.open(r,1);t.onupgradeneeded=()=>{let s=t.result;s.objectStoreNames.contains(n)||s.createObjectStore(n,{keyPath:"namespace"})},t.onsuccess=()=>{o(t.result)},t.onerror=()=>{a(t.error??new Error(`Failed to open IndexedDB database "${r}".`))}}),Vw=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let l=o.transaction(r,"readonly").objectStore(r).get(n);l.onsuccess=()=>{a(l.result??null)},l.onerror=()=>{t(l.error??new Error(`Failed to read persisted namespace "${n}" from IndexedDB.`))}})},Jt=async({databasePromise:e,objectStoreName:r,namespace:n,patch:o})=>{let a=await e;return new Promise((t,s)=>{let i=a.transaction(r,"readwrite"),l=i.objectStore(r),c=l.get(n),u=!1,p=d=>{u||(u=!0,s(d))},f=()=>{u||(u=!0,t())};c.onerror=()=>{p(c.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},c.onsuccess=()=>{let d=sp(c.result),m=typeof o=="function"?o(d):o,y={namespace:n,version:1,...np(),...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}".`))}})},qw=async({databasePromise:e,objectStoreName:r,namespace:n})=>{let o=await e;return new Promise((a,t)=>{let s=o.transaction(r,"readwrite"),l=s.objectStore(r).delete(n),c=!1,u=f=>{c||(c=!0,t(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}".`))}})},Zi=(e={})=>{let{indexedDB:r,databaseName:n=Sw,objectStoreName:o=Ow,namespace:a}=e,t=Lw(r),s=Dw(a),i=Mw({indexedDB:t,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await Vw({databasePromise:i,objectStoreName:o,namespace:s});return{...np(),...sp(l)}},clear:async()=>qw({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Jt({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:he(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Jt({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:he(l)?l:{}}}),saveGlobalAccountVariables:async l=>Jt({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:he(l)?l:{}}}),saveGlobalRuntime:async l=>Jt({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:he(l)?l:{}}}),applyScopedDataUpdates:async l=>Jt({databasePromise:i,objectStoreName:o,namespace:s,patch:c=>jw(c,l)})}},Fw=Zi;var dp=fp;var Uw={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},Ze=Object.prototype.hasOwnProperty,Bw={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:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=s;if(e!==null){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"null"},message:"must be null"};t===null?t=[p]:t.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:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};t===null?t=[d]:t.push(d),s++}if(e.y===void 0){let d={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};t===null?t=[d]:t.push(d),s++}for(let d in e)if(!(d==="x"||d==="y"||d==="quality"||d==="kernelSize"||d==="repeatEdgePixels")){let m={instancePath:r,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(e.x!==void 0){let d=e.x;if(typeof d=="number"){if(d<0||isNaN(d)){let m={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/x",schemaPath:"#/anyOf/1/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}}if(e.y!==void 0){let d=e.y;if(typeof d=="number"){if(d<0||isNaN(d)){let m={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/y",schemaPath:"#/anyOf/1/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}}if(e.quality!==void 0){let d=e.quality;if(typeof d=="number"){if(d<1||isNaN(d)){let m={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/quality",schemaPath:"#/anyOf/1/properties/quality/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}}if(e.kernelSize!==void 0){let d=e.kernelSize;if(!(typeof d=="number"&&!(d%1)&&!isNaN(d))){let m={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[m]:t.push(m),s++}if(!(d===5||d===7||d===9||d===11||d===13||d===15)){let m={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:Bw.anyOf[1].properties.kernelSize.enum},message:"must be equal to one of the allowed values"};t===null?t=[m]:t.push(m),s++}}if(e.repeatEdgePixels!==void 0&&typeof e.repeatEdgePixels!="boolean"){let d={instancePath:r+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}var u=p===s;l=l||u}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return De.errors=t,s===0}var Yw={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function as(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.continuity!==void 0){let i=e.continuity;if(typeof i!="string"){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="render"||i==="persistent")){let l={instancePath:r+"/continuity",schemaPath:"#/properties/continuity/enum",keyword:"enum",params:{allowedValues:Yw.properties.continuity.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.speed!==void 0){let i=e.speed;if(typeof i=="number"){if(i<=0||isNaN(i)){let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/speed",schemaPath:"#/properties/speed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return as.errors=t,s===0}function le(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="resourceId"||i==="playback")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.playback!==void 0&&(as(e.playback,{instancePath:r+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(t=t===null?as.errors:t.concat(as.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return le.errors=t,s===0}function ls(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!Ze.call(Uw.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationName!==void 0&&typeof e.animationName!="string"){let i={instancePath:r+"/animationName",schemaPath:"#/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.animationSpeed!==void 0&&typeof e.animationSpeed!="number"){let i={instancePath:r+"/animationSpeed",schemaPath:"#/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.colorId!==void 0&&typeof e.colorId!="string"){let i={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.transformId!==void 0&&typeof e.transformId!="string"){let i={instancePath:r+"/transformId",schemaPath:"#/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(De(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),e.animations!==void 0&&(le(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ls.errors=t,s===0}function fp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ls(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ls.errors:t.concat(ls.errors),s=t.length),fp.errors=t,s===0}var mp=yp;var zw={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},ap={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},je=ip().default;function Ne(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.id===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[i]:t.push(i),s++}if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!Ze.call(ap.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0){let i=e.id;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/id",schemaPath:"#/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.resourceId!==void 0){let i=e.resourceId;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:ap.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ne.errors=t,s===0}function cs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[m]:t.push(m),s++}}var c=l===s;if(c){let d={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=i,t!==null&&(i?t.length=i:t=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={};t===null?t=[m]:t.push(m),s++}}var f=p===s;if(f){let d={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[d]:t.push(d),s++}else s=u,t!==null&&(u?t.length=u:t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[m]:t.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++)Ne(d[y],{instancePath:r+"/sounds/"+y,parentData:d,parentDataProperty:y,rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)}else{let m={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[m]:t.push(m),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let d={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[d]:t.push(d),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let d={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.interruption!==void 0){let d=e.interruption;if(typeof d!="string"){let m={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[m]:t.push(m),s++}if(!(d==="immediate"||d==="loopEnd")){let m={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:zw.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[m]:t.push(m),s++}}if(e.volume!==void 0){let d=e.volume;if(typeof d=="number"){if(d>100||isNaN(d)){let m={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[m]:t.push(m),s++}if(d<0||isNaN(d)){let m={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let d={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[d]:t.push(d),s++}if(e.pan!==void 0){let d=e.pan;if(typeof d=="number"){if(d>1||isNaN(d)){let m={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[m]:t.push(m),s++}if(d<-1||isNaN(d)){let m={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}}if(e.startDelayMs!==void 0){let d=e.startDelayMs;if(typeof d=="number"){if(d<0||isNaN(d)){let m={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}}}else{let d={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}return cs.errors=t,s===0}function yp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return cs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?cs.errors:t.concat(cs.errors),s=t.length),yp.errors=t,s===0}var hp=gp;var Gw={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 us(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let l in e)if(l!=="items"){let c={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.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={};t===null?t=[g]:t.push(g),s++}}var i=m===s;if(s=f,t!==null&&(f?t.length=f:t=null),i){let y=s;if(p&&typeof p=="object"&&!Array.isArray(p)&&p.transformId===void 0){let h={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/then/required",keyword:"required",params:{missingProperty:"transformId"},message:"must have required property 'transformId'"};t===null?t=[h]:t.push(h),s++}var i=y===s;d=i}if(!d){let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[y]:t.push(y),s++}if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[y]:t.push(y),s++}for(let y in p)if(!Ze.call(Gw.properties.items.items.properties,y)){let g={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:y},message:"must NOT have additional properties"};t===null?t=[g]:t.push(g),s++}if(p.id!==void 0&&typeof p.id!="string"){let y={instancePath:r+"/items/"+u+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.transformId!==void 0&&typeof p.transformId!="string"){let y={instancePath:r+"/items/"+u+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(p.x!==void 0&&typeof p.x!="number"){let y={instancePath:r+"/items/"+u+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.y!==void 0&&typeof p.y!="number"){let y={instancePath:r+"/items/"+u+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let y={instancePath:r+"/items/"+u+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let y={instancePath:r+"/items/"+u+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let y={instancePath:r+"/items/"+u+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let y={instancePath:r+"/items/"+u+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let y={instancePath:r+"/items/"+u+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let y={instancePath:r+"/items/"+u+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let y={instancePath:r+"/items/"+u+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}if(p.opacity!==void 0){let y=p.opacity;if(typeof y=="number"){if(y>1||isNaN(y)){let g={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[g]:t.push(g),s++}if(y<0||isNaN(y)){let g={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r+"/items/"+u+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[g]:t.push(g),s++}}if(p.blur!==void 0&&(De(p.blur,{instancePath:r+"/items/"+u+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.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:r+"/items/"+u+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(w.id!==void 0&&typeof w.id!="string"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/id",schemaPath:"#/properties/items/items/properties/sprites/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.resourceId!==void 0&&typeof w.resourceId!="string"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/resourceId",schemaPath:"#/properties/items/items/properties/sprites/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.animationName!==void 0&&typeof w.animationName!="string"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/animationName",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(w.animationSpeed!==void 0&&typeof w.animationSpeed!="number"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/animationSpeed",schemaPath:"#/properties/items/items/properties/sprites/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(w.loop!==void 0&&typeof w.loop!="boolean"){let b={instancePath:r+"/items/"+u+"/sprites/"+h+"/loop",schemaPath:"#/properties/items/items/properties/sprites/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/items/"+u+"/sprites/"+h,schemaPath:"#/properties/items/items/properties/sprites/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}}}else{let g={instancePath:r+"/items/"+u+"/sprites",schemaPath:"#/properties/items/items/properties/sprites/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[g]:t.push(g),s++}}p.animations!==void 0&&(le(p.animations,{instancePath:r+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let y={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[y]:t.push(y),s++}}}else{let c={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return us.errors=t,s===0}function gp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return us(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?us.errors:t.concat(us.errors),s=t.length),gp.errors=t,s===0}var bp=Ip;function ps(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.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:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[f]:t.push(f),s++}if(u.id!==void 0&&typeof u.id!="string"){let p={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}if(u.content!==void 0&&typeof u.content!="string"){let p={instancePath:r+"/items/"+c+"/content",schemaPath:"#/properties/items/items/properties/content/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.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:r+"/items/"+c+"/events/click",schemaPath:"#/properties/items/items/properties/events/properties/click/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let f={instancePath:r+"/items/"+c+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(le(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ps.errors=t,s===0}function Ip(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ps(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ps.errors:t.concat(ps.errors),s=t.length),Ip.errors=t,s===0}var wp=kp;function ds(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(i!=="mode"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.mode!==void 0&&typeof e.mode!="string"){let i={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ds.errors=t,s===0}function kp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ds(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ds.errors:t.concat(ds.errors),s=t.length),kp.errors=t,s===0}var vp=Ap;function fs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.resourceId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="resourceId"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return fs.errors=t,s===0}function Ap(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return fs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?fs.errors:t.concat(fs.errors),s=t.length),Ap.errors=t,s===0}var Pp=xp;var lp={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 ms(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!Ze.call(lp.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.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:r+"/ui",schemaPath:"#/properties/ui/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(i.resourceId!==void 0&&typeof i.resourceId!="string"){let l={instancePath:r+"/ui/resourceId",schemaPath:"#/properties/ui/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}i.animations!==void 0&&(le(i.animations,{instancePath:r+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let l={instancePath:r+"/ui",schemaPath:"#/properties/ui/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.mode!==void 0){let i=e.mode;if(typeof i!="string"){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="adv"||i==="nvl")){let l={instancePath:r+"/mode",schemaPath:"#/properties/mode/enum",keyword:"enum",params:{allowedValues:lp.properties.mode.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.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:r+"/content/"+c+"/text",schemaPath:"#/properties/content/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.push(p),s++}}else{let p={instancePath:r+"/content/"+c,schemaPath:"#/properties/content/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/content",schemaPath:"#/properties/content/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}if(e.textSpeed!==void 0&&typeof e.textSpeed!="number"){let i={instancePath:r+"/textSpeed",schemaPath:"#/properties/textSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.append!==void 0&&typeof e.append!="boolean"){let i={instancePath:r+"/append",schemaPath:"#/properties/append/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.characterId!==void 0&&typeof e.characterId!="string"){let i={instancePath:r+"/characterId",schemaPath:"#/properties/characterId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.characterName!==void 0&&typeof e.characterName!="string"){let i={instancePath:r+"/characterName",schemaPath:"#/properties/characterName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.persistCharacter!==void 0&&typeof e.persistCharacter!="boolean"){let i={instancePath:r+"/persistCharacter",schemaPath:"#/properties/persistCharacter/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.persistSprite!==void 0&&typeof e.persistSprite!="boolean"){let i={instancePath:r+"/persistSprite",schemaPath:"#/properties/persistSprite/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.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:r+"/character",schemaPath:"#/properties/character/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.push(c),s++}if(i.name!==void 0&&typeof i.name!="string"){let l={instancePath:r+"/character/name",schemaPath:"#/properties/character/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.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:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(l.transformId!==void 0&&typeof l.transformId!="string"){let c={instancePath:r+"/character/sprite/transformId",schemaPath:"#/properties/character/properties/sprite/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.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:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[d]:t.push(d),s++}if(f.resourceId===void 0){let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[d]:t.push(d),s++}for(let d in f)if(!(d==="id"||d==="resourceId"||d==="animationName"||d==="animationSpeed"||d==="loop")){let m={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:d},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(f.id!==void 0&&typeof f.id!="string"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(f.resourceId!==void 0&&typeof f.resourceId!="string"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(f.animationName!==void 0&&typeof f.animationName!="string"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(f.animationSpeed!==void 0&&typeof f.animationSpeed!="number"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}if(f.loop!==void 0&&typeof f.loop!="boolean"){let d={instancePath:r+"/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"};t===null?t=[d]:t.push(d),s++}}else{let d={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),s++}}}else{let u={instancePath:r+"/character/sprite/items",schemaPath:"#/properties/character/properties/sprite/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[u]:t.push(u),s++}}l.animations!==void 0&&(le(l.animations,{instancePath:r+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let c={instancePath:r+"/character/sprite",schemaPath:"#/properties/character/properties/sprite/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r+"/character",schemaPath:"#/properties/character/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.clear!==void 0&&typeof e.clear!="boolean"){let i={instancePath:r+"/clear",schemaPath:"#/properties/clear/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.clearPage!==void 0&&typeof e.clearPage!="boolean"){let i={instancePath:r+"/clearPage",schemaPath:"#/properties/clearPage/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ms.errors=t,s===0}function xp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ms(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ms.errors:t.concat(ms.errors),s=t.length),xp.errors=t,s===0}var Ep=Sp;function ys(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.id!==void 0&&typeof e.id!="string"){let i={instancePath:r+"/id",schemaPath:"#/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.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:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/required",keyword:"required",params:{missingProperty:"variableId"},message:"must have required property 'variableId'"};t===null?t=[u]:t.push(u),s++}for(let u in c)if(!(u==="variableId"||u==="required"||u==="trim"||u==="placeholder"||u==="multiline"||u==="maxLength")){let p={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[p]:t.push(p),s++}if(c.variableId!==void 0&&typeof c.variableId!="string"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}if(c.required!==void 0&&typeof c.required!="boolean"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}if(c.trim!==void 0&&typeof c.trim!="boolean"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}if(c.placeholder!==void 0&&typeof c.placeholder!="string"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}if(c.multiline!==void 0&&typeof c.multiline!="boolean"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}if(c.maxLength!==void 0){let u=c.maxLength;if(!(typeof u=="number"&&!(u%1)&&!isNaN(u))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}if(typeof u=="number"&&(u<0||isNaN(u))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r+"/fields/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/fields/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}else{let l={instancePath:r+"/fields",schemaPath:"#/properties/fields/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.submitActions!==void 0){let i=e.submitActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/submitActions",schemaPath:"#/properties/submitActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.cancelActions!==void 0){let i=e.cancelActions;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/cancelActions",schemaPath:"#/properties/cancelActions/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}e.animations!==void 0&&(le(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ys.errors=t,s===0}function Sp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return ys(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?ys.errors:t.concat(ys.errors),s=t.length),Sp.errors=t,s===0}var Op=Rp;function hs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="resourceId"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let i={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}e.animations!==void 0&&(le(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return hs.errors=t,s===0}function Rp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return hs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?hs.errors:t.concat(hs.errors),s=t.length),Rp.errors=t,s===0}var Cp=$p;function gs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.opacity!==void 0){let i=e.opacity;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/opacity",schemaPath:"#/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}e.blur!==void 0&&(De(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),e.animations!==void 0&&(le(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return gs.errors=t,s===0}function $p(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return gs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?gs.errors:t.concat(gs.errors),s=t.length),$p.errors=t,s===0}var _p=Tp;var Hw={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"]},sounds:{type:"array",items:{$ref:"#/definitions/audioSound"}}},required:["id","sounds"],additionalProperties:!1}}},allOf:[{not:{required:["items","channels"]}}],additionalProperties:!1};function bs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[p]:t.push(p),s++}}var c=l===s;if(c){let u={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[u]:t.push(u),s++}else s=i,t!==null&&(i?t.length=i:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let u in e)if(!(u==="items"||u==="channels")){let p={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:u},message:"must NOT have additional properties"};t===null?t=[p]:t.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++)Ne(u[f],{instancePath:r+"/items/"+f,parentData:u,parentDataProperty:f,rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)}else{let p={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.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:r+"/channels/"+f,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[m]:t.push(m),s++}if(d.sounds===void 0){let m={instancePath:r+"/channels/"+f,schemaPath:"#/properties/channels/items/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[m]:t.push(m),s++}for(let m in d)if(!(m==="id"||m==="volume"||m==="muted"||m==="pan"||m==="loop"||m==="interruption"||m==="sounds")){let y={instancePath:r+"/channels/"+f,schemaPath:"#/properties/channels/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:m},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(d.id!==void 0){let m=d.id;if(typeof m=="string"){if(je(m)<1){let y={instancePath:r+"/channels/"+f+"/id",schemaPath:"#/properties/channels/items/properties/id/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+f+"/id",schemaPath:"#/properties/channels/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}}if(d.volume!==void 0){let m=d.volume;if(typeof m=="number"){if(m>100||isNaN(m)){let y={instancePath:r+"/channels/"+f+"/volume",schemaPath:"#/properties/channels/items/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[y]:t.push(y),s++}if(m<0||isNaN(m)){let y={instancePath:r+"/channels/"+f+"/volume",schemaPath:"#/properties/channels/items/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+f+"/volume",schemaPath:"#/properties/channels/items/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.muted!==void 0&&typeof d.muted!="boolean"){let m={instancePath:r+"/channels/"+f+"/muted",schemaPath:"#/properties/channels/items/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[m]:t.push(m),s++}if(d.pan!==void 0){let m=d.pan;if(typeof m=="number"){if(m>1||isNaN(m)){let y={instancePath:r+"/channels/"+f+"/pan",schemaPath:"#/properties/channels/items/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[y]:t.push(y),s++}if(m<-1||isNaN(m)){let y={instancePath:r+"/channels/"+f+"/pan",schemaPath:"#/properties/channels/items/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[y]:t.push(y),s++}}else{let y={instancePath:r+"/channels/"+f+"/pan",schemaPath:"#/properties/channels/items/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[y]:t.push(y),s++}}if(d.loop!==void 0&&typeof d.loop!="boolean"){let m={instancePath:r+"/channels/"+f+"/loop",schemaPath:"#/properties/channels/items/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[m]:t.push(m),s++}if(d.interruption!==void 0){let m=d.interruption;if(typeof m!="string"){let y={instancePath:r+"/channels/"+f+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[y]:t.push(y),s++}if(!(m==="immediate"||m==="loopEnd")){let y={instancePath:r+"/channels/"+f+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:Hw.properties.channels.items.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[y]:t.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++)Ne(m[g],{instancePath:r+"/channels/"+f+"/sounds/"+g,parentData:m,parentDataProperty:g,rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)}else{let y={instancePath:r+"/channels/"+f+"/sounds",schemaPath:"#/properties/channels/items/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[y]:t.push(y),s++}}}else{let m={instancePath:r+"/channels/"+f,schemaPath:"#/properties/channels/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),s++}}}else{let p={instancePath:r+"/channels",schemaPath:"#/properties/channels/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}return bs.errors=t,s===0}function Tp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return bs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?bs.errors:t.concat(bs.errors),s=t.length),Tp.errors=t,s===0}var Np=jp;var cp={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 Is(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=s;if(typeof e!="string"){let p={instancePath:r,schemaPath:"#/anyOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[p]:t.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:r+"/"+m+"/text",schemaPath:"#/anyOf/1/items/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.push(g),s++}if(y.textStyleId!==void 0&&typeof y.textStyleId!="string"){let g={instancePath:r+"/"+m+"/textStyleId",schemaPath:"#/anyOf/1/items/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[g]:t.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:r+"/"+m+"/furigana/text",schemaPath:"#/anyOf/1/items/properties/furigana/properties/text/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(g.textStyleId!==void 0&&typeof g.textStyleId!="string"){let h={instancePath:r+"/"+m+"/furigana/textStyleId",schemaPath:"#/anyOf/1/items/properties/furigana/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/"+m+"/furigana",schemaPath:"#/anyOf/1/items/properties/furigana/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}}}else{let g={instancePath:r+"/"+m,schemaPath:"#/anyOf/1/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}}}else{let d={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[d]:t.push(d),s++}var u=p===s;l=l||u}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let p={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[p]:t.push(p),s++}return Is.errors=t,s===0}function ws(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[b]:t.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={};t===null?t=[v]:t.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={};t===null?t=[k]:t.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={};t===null?t=[D]:t.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={};t===null?t=[q]:t.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={};t===null?t=[T]:t.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={};t===null?t=[ie]:t.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={};t===null?t=[ae]:t.push(ae),s++}}var f=U===s;if(u=u||f,!u){let L=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ce;if(e.anchorX===void 0&&(ce="anchorX")){let B={};t===null?t=[B]:t.push(B),s++}}var f=L===s;if(u=u||f,!u){let ce=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Z;if(e.anchorY===void 0&&(Z="anchorY")){let oe={};t===null?t=[oe]:t.push(oe),s++}}var f=ce===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={};t===null?t=[pe]:t.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={};t===null?t=[C]:t.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={};t===null?t=[F]:t.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={};t===null?t=[de]:t.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={};t===null?t=[ge]:t.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={};t===null?t=[Or]:t.push(Or),s++}}var f=Pe===s;if(u=u||f,!u){let fe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Xe;if(e.opacity===void 0&&(Xe="opacity")){let an={};t===null?t=[an]:t.push(an),s++}}var f=fe===s;if(u=u||f,!u){let Xe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let yt;if(e.blur===void 0&&(yt="blur")){let ln={};t===null?t=[ln]:t.push(ln),s++}}var f=Xe===s;if(u=u||f,!u){let yt=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Xs;if(e.animations===void 0&&(Xs="animations")){let ht={};t===null?t=[ht]:t.push(ht),s++}}var f=yt===s;u=u||f}}}}}}}}}}}}}}}}}}if(u)s=c,t!==null&&(c?t.length=c:t=null);else{let w={};t===null?t=[w]:t.push(w),s++}var d=l===s;if(d){let w={instancePath:r,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[w]:t.push(w),s++}else s=i,t!==null&&(i?t.length=i:t=null);let m=s,y=!1,g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.content===void 0){let w={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};t===null?t=[w]:t.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:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};t===null?t=[E]:t.push(E),s++}var h=w===s;y=y||h}if(y)s=m,t!==null&&(m?t.length=m:t=null);else{let w={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[w]:t.push(w),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(Is(e.content,{instancePath:r+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(t=t===null?Is.errors:t.concat(Is.errors),s=t.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let w={instancePath:r+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[w]:t.push(w),s++}if(e.width!==void 0&&typeof e.width!="number"){let w={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}if(e.height!==void 0&&typeof e.height!="number"){let w={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[w]:t.push(w),s++}return ws.errors=t,s===0}function ks(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.elements===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"elements"},message:"must have required property 'elements'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="elements"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.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:r+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return ks.errors=t,s===0}var Xw={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 vs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!Ze.call(Xw.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.x!==void 0&&typeof e.x!="number"){let i={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.y!==void 0&&typeof e.y!="number"){let i={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return vs.errors=t,s===0}function As(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let p in e)if(p!=="items"){let f={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[f]:t.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={};t===null?t=[O]:t.push(O),s++}}var i=g===s;if(i){let k={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[k]:t.push(k),s++}else s=y,t!==null&&(y?t.length=y:t=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={};t===null?t=[O]:t.push(O),s++}}var l=w===s;if(l){let k={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[k]:t.push(k),s++}else s=h,t!==null&&(h?t.length=h:t=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={};t===null?t=[O]:t.push(O),s++}}var c=E===s;if(c){let k={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/allOf/2/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[k]:t.push(k),s++}else s=b,t!==null&&(b?t.length=b:t=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={};t===null?t=[O]:t.push(O),s++}}var u=P===s;if(u){let k={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/allOf/3/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[k]:t.push(k),s++}else s=v,t!==null&&(v?t.length=v:t=null);if(m&&typeof m=="object"&&!Array.isArray(m)){if(m.id===void 0){let k={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[k]:t.push(k),s++}for(let k in m)if(!Ze.call(cp.properties.items.items.properties,k)){let O={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};t===null?t=[O]:t.push(O),s++}if(m.id!==void 0&&typeof m.id!="string"){let k={instancePath:r+"/items/"+d+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}if(m.animationName!==void 0&&typeof m.animationName!="string"){let k={instancePath:r+"/items/"+d+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}if(m.animationSpeed!==void 0&&typeof m.animationSpeed!="number"){let k={instancePath:r+"/items/"+d+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.resourceId!==void 0&&typeof m.resourceId!="string"){let k={instancePath:r+"/items/"+d+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}if(m.text!==void 0&&(ws(m.text,{instancePath:r+"/items/"+d+"/text",parentData:m,parentDataProperty:"text",rootData:a})||(t=t===null?ws.errors:t.concat(ws.errors),s=t.length)),m.layout!==void 0&&(ks(m.layout,{instancePath:r+"/items/"+d+"/layout",parentData:m,parentDataProperty:"layout",rootData:a})||(t=t===null?ks.errors:t.concat(ks.errors),s=t.length)),m.transformId!==void 0&&typeof m.transformId!="string"){let k={instancePath:r+"/items/"+d+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}if(m.transform!==void 0&&(vs(m.transform,{instancePath:r+"/items/"+d+"/transform",parentData:m,parentDataProperty:"transform",rootData:a})||(t=t===null?vs.errors:t.concat(vs.errors),s=t.length)),m.x!==void 0&&typeof m.x!="number"){let k={instancePath:r+"/items/"+d+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.y!==void 0&&typeof m.y!="number"){let k={instancePath:r+"/items/"+d+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.anchorX!==void 0&&typeof m.anchorX!="number"){let k={instancePath:r+"/items/"+d+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.anchorY!==void 0&&typeof m.anchorY!="number"){let k={instancePath:r+"/items/"+d+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.scaleX!==void 0&&typeof m.scaleX!="number"){let k={instancePath:r+"/items/"+d+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.scaleY!==void 0&&typeof m.scaleY!="number"){let k={instancePath:r+"/items/"+d+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.rotation!==void 0&&typeof m.rotation!="number"){let k={instancePath:r+"/items/"+d+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.originX!==void 0&&typeof m.originX!="number"){let k={instancePath:r+"/items/"+d+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.originY!==void 0&&typeof m.originY!="number"){let k={instancePath:r+"/items/"+d+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}if(m.layer!==void 0){let k=m.layer;if(typeof k!="number"){let O={instancePath:r+"/items/"+d+"/layer",schemaPath:"#/properties/items/items/properties/layer/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[O]:t.push(O),s++}if(!(k===10||k===30||k===50||k===70||k===90)){let O={instancePath:r+"/items/"+d+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:cp.properties.items.items.properties.layer.enum},message:"must be equal to one of the allowed values"};t===null?t=[O]:t.push(O),s++}}if(m.opacity!==void 0){let k=m.opacity;if(typeof k=="number"){if(k>1||isNaN(k)){let O={instancePath:r+"/items/"+d+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[O]:t.push(O),s++}if(k<0||isNaN(k)){let O={instancePath:r+"/items/"+d+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[O]:t.push(O),s++}}else{let O={instancePath:r+"/items/"+d+"/opacity",schemaPath:"#/properties/items/items/properties/opacity/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[O]:t.push(O),s++}}m.blur!==void 0&&(De(m.blur,{instancePath:r+"/items/"+d+"/blur",parentData:m,parentDataProperty:"blur",rootData:a})||(t=t===null?De.errors:t.concat(De.errors),s=t.length)),m.animations!==void 0&&(le(m.animations,{instancePath:r+"/items/"+d+"/animations",parentData:m,parentDataProperty:"animations",rootData:a})||(t=t===null?le.errors:t.concat(le.errors),s=t.length))}else{let k={instancePath:r+"/items/"+d,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}}else{let f={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}return As.errors=t,s===0}function jp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return As(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?As.errors:t.concat(As.errors),s=t.length),jp.errors=t,s===0}var Dp=Lp;var Ww={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 Ps(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0,i=s,l=!1,c=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.resourceId===void 0){let h={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"resourceId"},message:"must have required property 'resourceId'"};t===null?t=[h]:t.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:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"sounds"},message:"must have required property 'sounds'"};t===null?t=[b]:t.push(b),s++}var u=h===s;l=l||u}if(l)s=i,t!==null&&(i?t.length=i:t=null);else{let h={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[h]:t.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={};t===null?t=[w]:t.push(w),s++}}var d=f===s;if(d){let h={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=p,t!==null&&(p?t.length=p:t=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={};t===null?t=[w]:t.push(w),s++}}var g=y===s;if(g){let h={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[h]:t.push(h),s++}else s=m,t!==null&&(m?t.length=m:t=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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};t===null?t=[w]:t.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++)Ne(h[b],{instancePath:r+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(t=t===null?Ne.errors:t.concat(Ne.errors),s=t.length)}else{let w={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[w]:t.push(w),s++}}if(e.resourceId!==void 0&&typeof e.resourceId!="string"){let h={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(e.volume!==void 0){let h=e.volume;if(typeof h=="number"){if(h>100||isNaN(h)){let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[w]:t.push(w),s++}if(h<0||isNaN(h)){let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let h={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.pan!==void 0){let h=e.pan;if(typeof h=="number"){if(h>1||isNaN(h)){let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[w]:t.push(w),s++}if(h<-1||isNaN(h)){let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}if(e.loop!==void 0&&typeof e.loop!="boolean"){let h={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[h]:t.push(h),s++}if(e.interruption!==void 0){let h=e.interruption;if(typeof h!="string"){let w={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[w]:t.push(w),s++}if(!(h==="immediate"||h==="loopEnd")){let w={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:Ww.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[w]:t.push(w),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let w={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[w]:t.push(w),s++}}else{let w={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[w]:t.push(w),s++}}}else{let h={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[h]:t.push(h),s++}return Ps.errors=t,s===0}function Lp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ps(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ps.errors:t.concat(Ps.errors),s=t.length),Lp.errors=t,s===0}var Mp=Vp;var Kw={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 xs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[g]:t.push(g),s++}var u=c===s;if(s=i,t!==null&&(i?t.length=i:t=null),u){let g=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.target===void 0){let w={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};t===null?t=[w]:t.push(w),s++}var u=g===s;l=u}if(!l){let g={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.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={};t===null?t=[g]:t.push(g),s++}var m=d===s;if(s=p,t!==null&&(p?t.length=p:t=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={};t===null?t=[v]:t.push(v),s++}}var y=w===s;if(y){let E={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[E]:t.push(E),s++}else s=h,t!==null&&(h?t.length=h:t=null);var m=g===s;f=m}if(!f){let g={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[g]:t.push(g),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[g]:t.push(g),s++}if(e.name===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"name"},message:"must have required property 'name'"};t===null?t=[g]:t.push(g),s++}if(e.description===void 0){let g={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"description"},message:"must have required property 'description'"};t===null?t=[g]:t.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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:g},message:"must NOT have additional properties"};t===null?t=[h]:t.push(h),s++}if(e.type!==void 0){let g=e.type;if(typeof g!="string"){let h={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}if(!(g==="boolean"||g==="number")){let h={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:Kw.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[h]:t.push(h),s++}}if(e.target!==void 0){let g=e.target;if(!(typeof g=="number"&&!(g%1)&&!isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[h]:t.push(h),s++}if(typeof g=="number"&&(g<1||isNaN(g))){let h={instancePath:r+"/target",schemaPath:"#/properties/target/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[h]:t.push(h),s++}}if(e.name!==void 0){let g=e.name;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/name",schemaPath:"#/properties/name/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.description!==void 0){let g=e.description;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/description",schemaPath:"#/properties/description/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/description",schemaPath:"#/properties/description/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedName!==void 0){let g=e.lockedName;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedName",schemaPath:"#/properties/lockedName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.lockedDescription!==void 0){let g=e.lockedDescription;if(typeof g=="string"){if(je(g)<1){let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[h]:t.push(h),s++}}else{let h={instancePath:r+"/lockedDescription",schemaPath:"#/properties/lockedDescription/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[h]:t.push(h),s++}}if(e.hidden!==void 0&&typeof e.hidden!="boolean"){let g={instancePath:r+"/hidden",schemaPath:"#/properties/hidden/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[g]:t.push(g),s++}}else{let g={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[g]:t.push(g),s++}return xs.errors=t,s===0}function Vp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return xs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?xs.errors:t.concat(xs.errors),s=t.length),Vp.errors=t,s===0}var qp=Fp;var Jw={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 Qw={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:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.value===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"value"},message:"must have required property 'value'"};t===null?t=[i]:t.push(i),s++}if(e.duration===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"duration"},message:"must have required property 'duration'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="value"||i==="duration"||i==="easing"||i==="relative")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.value!==void 0&&typeof e.value!="number"){let i={instancePath:r+"/value",schemaPath:"#/properties/value/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.duration!==void 0&&typeof e.duration!="number"){let i={instancePath:r+"/duration",schemaPath:"#/properties/duration/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.easing!==void 0){let i=e.easing;if(typeof i!="string"){let l={instancePath:r+"/easing",schemaPath:"#/properties/easing/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.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:r+"/easing",schemaPath:"#/properties/easing/enum",keyword:"enum",params:{allowedValues:Qw.properties.easing.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.relative!==void 0&&typeof e.relative!="boolean"){let i={instancePath:r+"/relative",schemaPath:"#/properties/relative/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return zr.errors=t,s===0}function Q(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let c={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[c]:t.push(c),s++}let l=i.length;for(let c=0;c<l;c++)zr(i[c],{instancePath:r+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(t=t===null?zr.errors:t.concat(zr.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Q.errors=t,s===0}function Es(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="alpha"||i==="x"||i==="y"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.alpha!==void 0&&(Q(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.x!==void 0&&(Q(e.x,{instancePath:r+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.y!==void 0&&(Q(e.y,{instancePath:r+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.scaleX!==void 0&&(Q(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.scaleY!==void 0&&(Q(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.rotation!==void 0&&(Q(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Es.errors=t,s===0}function Ss(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(Object.keys(e).length<1){let i={instancePath:r,schemaPath:"#/minProperties",keyword:"minProperties",params:{limit:1},message:"must NOT have fewer than 1 properties"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="translateX"||i==="translateY"||i==="alpha"||i==="scaleX"||i==="scaleY"||i==="rotation")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.translateX!==void 0&&(Q(e.translateX,{instancePath:r+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.translateY!==void 0&&(Q(e.translateY,{instancePath:r+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.alpha!==void 0&&(Q(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.scaleX!==void 0&&(Q(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.scaleY!==void 0&&(Q(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length)),e.rotation!==void 0&&(Q(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ss.errors=t,s===0}function Yr(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.tween===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="tween"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}e.tween!==void 0&&(Ss(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?Ss.errors:t.concat(Ss.errors),s=t.length))}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Yr.errors=t,s===0}var is={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 Os(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.texture===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="texture"||i==="channel"||i==="invert")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.texture!==void 0&&typeof e.texture!="string"){let i={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.channel!==void 0){let i=e.channel;if(typeof i!="string"){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(!(i==="red"||i==="green"||i==="blue"||i==="alpha")){let l={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:Zw.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[l]:t.push(l),s++}}if(e.invert!==void 0&&typeof e.invert!="boolean"){let i={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Os.errors=t,s===0}function Rs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.keyframes===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"keyframes"},message:"must have required property 'keyframes'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="initialValue"||i==="keyframes")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.initialValue!==void 0&&typeof e.initialValue!="number"){let i={instancePath:r+"/initialValue",schemaPath:"#/properties/initialValue/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.keyframes!==void 0){let i=e.keyframes;if(Array.isArray(i)){if(i.length<1){let c={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[c]:t.push(c),s++}let l=i.length;for(let c=0;c<l;c++)zr(i[c],{instancePath:r+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(t=t===null?zr.errors:t.concat(zr.errors),s=t.length)}else{let l={instancePath:r+"/keyframes",schemaPath:"#/properties/keyframes/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Rs.errors=t,s===0}function Cs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[b]:t.push(b),s++}var u=c===s;if(s=i,t!==null&&(i?t.length=i:t=null),u){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.texture===void 0){let v={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[v]:t.push(v),s++}var u=b===s;l=u}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.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={};t===null?t=[b]:t.push(b),s++}var m=d===s;if(s=p,t!==null&&(p?t.length=p:t=null),m){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textures===void 0){let v={instancePath:r,schemaPath:"#/allOf/1/then/required",keyword:"required",params:{missingProperty:"textures"},message:"must have required property 'textures'"};t===null?t=[v]:t.push(v),s++}var m=b===s;f=m}if(!f){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.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={};t===null?t=[b]:t.push(b),s++}var w=h===s;if(s=y,t!==null&&(y?t.length=y:t=null),w){let b=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.items===void 0){let v={instancePath:r,schemaPath:"#/allOf/2/then/required",keyword:"required",params:{missingProperty:"items"},message:"must have required property 'items'"};t===null?t=[v]:t.push(v),s++}var w=b===s;g=w}if(!g){let b={instancePath:r,schemaPath:"#/allOf/2/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.kind===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"kind"},message:"must have required property 'kind'"};t===null?t=[b]:t.push(b),s++}for(let b in e)if(!Ze.call(is.properties,b)){let E={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let E={instancePath:r+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let E={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:is.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.texture!==void 0&&typeof e.texture!="string"){let b={instancePath:r+"/texture",schemaPath:"#/properties/texture/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.textures!==void 0){let b=e.textures;if(Array.isArray(b)){if(b.length<1){let v={instancePath:r+"/textures",schemaPath:"#/properties/textures/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[v]:t.push(v),s++}let E=b.length;for(let v=0;v<E;v++)if(typeof b[v]!="string"){let P={instancePath:r+"/textures/"+v,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[P]:t.push(P),s++}}else{let E={instancePath:r+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[E]:t.push(E),s++}}if(e.items!==void 0){let b=e.items;if(Array.isArray(b)){if(b.length<1){let v={instancePath:r+"/items",schemaPath:"#/properties/items/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[v]:t.push(v),s++}let E=b.length;for(let v=0;v<E;v++)Os(b[v],{instancePath:r+"/items/"+v,parentData:b,parentDataProperty:v,rootData:a})||(t=t===null?Os.errors:t.concat(Os.errors),s=t.length)}else{let E={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[E]:t.push(E),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let E={instancePath:r+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let E={instancePath:r+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:is.properties.combine.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let E={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let E={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:is.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.push(E),s++}}if(e.softness!==void 0&&typeof e.softness!="number"){let b={instancePath:r+"/softness",schemaPath:"#/properties/softness/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[b]:t.push(b),s++}if(e.invert!==void 0&&typeof e.invert!="boolean"){let b={instancePath:r+"/invert",schemaPath:"#/properties/invert/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[b]:t.push(b),s++}if(e.sample!==void 0&&typeof e.sample!="string"){let b={instancePath:r+"/sample",schemaPath:"#/properties/sample/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}e.progress!==void 0&&(Rs(e.progress,{instancePath:r+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(t=t===null?Rs.errors:t.concat(Rs.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return Cs.errors=t,s===0}function $s(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[b]:t.push(b),s++}var u=c===s;if(s=i,t!==null&&(i?t.length=i:t=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={};t===null?t=[q]:t.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={};t===null?t=[T]:t.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={};t===null?t=[ie]:t.push(ie),s++}}var p=Y===s;k=k||p}}if(k)s=P,t!==null&&(P?t.length=P:t=null);else{let $={};t===null?t=[$]:t.push($),s++}var f=v===s;if(f){let $={instancePath:r,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[$]:t.push($),s++}else s=E,t!==null&&(E?t.length=E:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let $={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[$]:t.push($),s++}var u=b===s;l=u}if(!l){let b={instancePath:r,schemaPath:"#/allOf/0/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.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={};t===null?t=[b]:t.push(b),s++}var g=y===s;if(s=d,t!==null&&(d?t.length=d:t=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={};t===null?t=[q]:t.push(q),s++}}var h=v===s;if(h){let $={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[$]:t.push($),s++}else s=E,t!==null&&(E?t.length=E:t=null);let P=s,k=!1,O=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let $={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};t===null?t=[$]:t.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:r,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};t===null?t=[Y]:t.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:r,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};t===null?t=[U]:t.push(U),s++}var w=Y===s;k=k||w}}if(k)s=P,t!==null&&(P?t.length=P:t=null);else{let $={instancePath:r,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[$]:t.push($),s++}var g=b===s;m=g}if(!m){let b={instancePath:r,schemaPath:"#/allOf/1/if",keyword:"if",params:{failingKeyword:"then"},message:'must match "then" schema'};t===null?t=[b]:t.push(b),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.type===void 0){let b={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[b]:t.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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(e.name!==void 0&&typeof e.name!="string"){let b={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.push(b),s++}if(e.type!==void 0){let b=e.type;if(typeof b!="string"){let E={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[E]:t.push(E),s++}if(!(b==="update"||b==="transition")){let E={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:Jw.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[E]:t.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:r+"/complete/payload",schemaPath:"#/properties/complete/properties/payload/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}}}else{let E={instancePath:r+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}e.tween!==void 0&&(Es(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?Es.errors:t.concat(Es.errors),s=t.length)),e.prev!==void 0&&(Yr(e.prev,{instancePath:r+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(t=t===null?Yr.errors:t.concat(Yr.errors),s=t.length)),e.next!==void 0&&(Yr(e.next,{instancePath:r+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(t=t===null?Yr.errors:t.concat(Yr.errors),s=t.length)),e.mask!==void 0&&(Cs(e.mask,{instancePath:r+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(t=t===null?Cs.errors:t.concat(Cs.errors),s=t.length))}else{let b={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[b]:t.push(b),s++}return $s.errors=t,s===0}function Fp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return $s(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?$s.errors:t.concat($s.errors),s=t.length),Fp.errors=t,s===0}var Up=Bp;function _s(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!(i==="name"||i==="nameVariableId")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.name!==void 0&&typeof e.name!="string"){let i={instancePath:r+"/name",schemaPath:"#/properties/name/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.nameVariableId!==void 0){let i=e.nameVariableId;if(typeof i=="string"){if(je(i)<1){let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/nameVariableId",schemaPath:"#/properties/nameVariableId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return _s.errors=t,s===0}function Bp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return _s(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?_s.errors:t.concat(_s.errors),s=t.length),Bp.errors=t,s===0}var Yp=zp;var e0=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function Ts(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.hex===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"hex"},message:"must have required property 'hex'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(i!=="hex"){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.hex!==void 0){let i=e.hex;if(typeof i=="string"){if(!e0.test(i)){let l={instancePath:r+"/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})$"'};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/hex",schemaPath:"#/properties/hex/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ts.errors=t,s===0}function zp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ts(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ts.errors:t.concat(Ts.errors),s=t.length),zp.errors=t,s===0}var Gp=Hp;function Ns(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/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"};t===null?t=[p]:t.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:r+"/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"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r+"/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"};t===null?t=[p]:t.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:r+"/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"};t===null?t=[f]:t.push(f),s++}}}else{let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r+"/keyboard/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyboard/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}else{let l={instancePath:r+"/keyboard",schemaPath:"#/properties/keyboard/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.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:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(c.payload!==void 0){let u=c.payload;if(!(u&&typeof u=="object"&&!Array.isArray(u))){let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}}else{let u={instancePath:r+"/keyup/"+l.replace(/~/g,"~0").replace(/\//g,"~1"),schemaPath:"#/properties/keyup/additionalProperties/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}}else{let l={instancePath:r+"/keyup",schemaPath:"#/properties/keyup/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.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:r+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ns.errors=t,s===0}function Hp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ns(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ns.errors:t.concat(Ns.errors),s=t.length),Hp.errors=t,s===0}var Xp=Wp;function js(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return js.errors=t,s===0}function Wp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return js(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?js.errors:t.concat(js.errors),s=t.length),Wp.errors=t,s===0}var Kp=Jp;function Ds(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ds.errors=t,s===0}function Jp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ds(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ds.errors:t.concat(Ds.errors),s=t.length),Jp.errors=t,s===0}var Qp=Zp;function Ls(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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:r+"/elements/"+c,schemaPath:"#/properties/elements/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[p]:t.push(p),s++}}}else{let l={instancePath:r+"/elements",schemaPath:"#/properties/elements/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Ls.errors=t,s===0}function Zp(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ls(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ls.errors:t.concat(Ls.errors),s=t.length),Zp.errors=t,s===0}var ed=rd;function Ms(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=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={};t===null?t=[P]:t.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={};t===null?t=[O]:t.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 $={};t===null?t=[$]:t.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={};t===null?t=[Y]:t.push(Y),s++}}var g=D===s;m=m||g}}}if(m)s=d,t!==null&&(d?t.length=d:t=null);else{let v={};t===null?t=[v]:t.push(v),s++}var h=f===s;if(h){let v={instancePath:r,schemaPath:"#/oneOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[v]:t.push(v),s++}else s=p,t!==null&&(p?t.length=p:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.modules===void 0){let v={instancePath:r,schemaPath:"#/oneOf/0/required",keyword:"required",params:{missingProperty:"modules"},message:"must have required property 'modules'"};t===null?t=[v]:t.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:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"texture"},message:"must have required property 'texture'"};t===null?t=[v]:t.push(v),s++}if(e.behaviors===void 0){let v={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"behaviors"},message:"must have required property 'behaviors'"};t===null?t=[v]:t.push(v),s++}if(e.emitter===void 0){let v={instancePath:r,schemaPath:"#/oneOf/1/required",keyword:"required",params:{missingProperty:"emitter"},message:"must have required property 'emitter'"};t===null?t=[v]:t.push(v),s++}}var b=w===s;if(b&&l?(l=!1,c=[c,1]):b&&(l=!0,c=1),l)s=i,t!==null&&(i?t.length=i:t=null);else{let v={instancePath:r,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:c},message:"must match exactly one schema in oneOf"};t===null?t=[v]:t.push(v),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.width===void 0){let v={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[v]:t.push(v),s++}if(e.height===void 0){let v={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[v]:t.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:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};t===null?t=[P]:t.push(P),s++}if(e.width!==void 0){let v=e.width;if(typeof v=="number"){if(v<=0||isNaN(v)){let P={instancePath:r+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[P]:t.push(P),s++}}else{let P={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[P]:t.push(P),s++}}if(e.height!==void 0){let v=e.height;if(typeof v=="number"){if(v<=0||isNaN(v)){let P={instancePath:r+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[P]:t.push(P),s++}}else{let P={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[P]:t.push(P),s++}}if(e.seed!==void 0&&typeof e.seed!="number"){let v={instancePath:r+"/seed",schemaPath:"#/properties/seed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[v]:t.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:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};t===null?t=[P]:t.push(P),s++}if(v.appearance===void 0){let P={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};t===null?t=[P]:t.push(P),s++}for(let P in v)if(!(P==="emission"||P==="movement"||P==="appearance"||P==="bounds")){let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:P},message:"must NOT have additional properties"};t===null?t=[k]:t.push(k),s++}if(v.emission!==void 0){let P=v.emission;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:r+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}if(v.movement!==void 0){let P=v.movement;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:r+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}if(v.appearance!==void 0){let P=v.appearance;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:r+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}if(v.bounds!==void 0){let P=v.bounds;if(!(P&&typeof P=="object"&&!Array.isArray(P))){let k={instancePath:r+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}}else{let P={instancePath:r+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[P]:t.push(P),s++}}if(e.count!==void 0){let v=e.count;if(!(typeof v=="number"&&!(v%1)&&!isNaN(v))){let P={instancePath:r+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[P]:t.push(P),s++}if(typeof v=="number"&&(v<1||isNaN(v))){let P={instancePath:r+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[P]:t.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(je(v)<1){let q={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[q]:t.push(q),s++}}else{let q={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[q]:t.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:r+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[q]:t.push(q),s++}var E=$===s;if(E&&k?(k=!1,O=[O,1]):E&&(k=!0,O=1),k)s=P,t!==null&&(P?t.length=P:t=null);else{let q={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:O},message:"must match exactly one schema in oneOf"};t===null?t=[q]:t.push(q),s++}}if(e.behaviors!==void 0){let v=e.behaviors;if(Array.isArray(v)){if(v.length<1){let k={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[k]:t.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:r+"/behaviors/"+k,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[D]:t.push(D),s++}for(let D in O)if(!(D==="type"||D==="config")){let $={instancePath:r+"/behaviors/"+k,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:D},message:"must NOT have additional properties"};t===null?t=[$]:t.push($),s++}if(O.type!==void 0){let D=O.type;if(typeof D=="string"){if(je(D)<1){let $={instancePath:r+"/behaviors/"+k+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[$]:t.push($),s++}}else{let $={instancePath:r+"/behaviors/"+k+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[$]:t.push($),s++}}if(O.config!==void 0){let D=O.config;if(!(D&&typeof D=="object"&&!Array.isArray(D))){let $={instancePath:r+"/behaviors/"+k+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[$]:t.push($),s++}}}else{let D={instancePath:r+"/behaviors/"+k,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[D]:t.push(D),s++}}}else{let P={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[P]:t.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:r+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};t===null?t=[P]:t.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:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};t===null?t=[k]:t.push(k),s++}if(P.max===void 0){let k={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};t===null?t=[k]:t.push(k),s++}if(P.min!==void 0){let k=P.min;if(typeof k=="number"){if(k<0||isNaN(k)){let O={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[O]:t.push(O),s++}}else{let O={instancePath:r+"/emitter/lifetime/min",schemaPath:"#/properties/emitter/properties/lifetime/properties/min/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[O]:t.push(O),s++}}if(P.max!==void 0){let k=P.max;if(typeof k=="number"){if(k<0||isNaN(k)){let O={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[O]:t.push(O),s++}}else{let O={instancePath:r+"/emitter/lifetime/max",schemaPath:"#/properties/emitter/properties/lifetime/properties/max/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[O]:t.push(O),s++}}}else{let k={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}}else{let P={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[P]:t.push(P),s++}}}else{let v={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[v]:t.push(v),s++}return Ms.errors=t,s===0}function rd(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ms(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ms.errors:t.concat(Ms.errors),s=t.length),rd.errors=t,s===0}var td=nd;var up={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 Vs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!Ze.call(up.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let i={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.volume!==void 0){let i=e.volume;if(typeof i=="number"){if(i>100||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[l]:t.push(l),s++}if(i<0||isNaN(i)){let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.muted!==void 0&&typeof e.muted!="boolean"){let i={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[i]:t.push(i),s++}if(e.pan!==void 0){let i=e.pan;if(typeof i=="number"){if(i>1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[l]:t.push(l),s++}if(i<-1||isNaN(i)){let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/pan",schemaPath:"#/properties/pan/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startDelayMs!==void 0){let i=e.startDelayMs;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.playbackRate!==void 0){let i=e.playbackRate;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/playbackRate",schemaPath:"#/properties/playbackRate/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.startAt!==void 0){let i=e.startAt;if(typeof i=="number"){if(i<0||isNaN(i)){let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}else{let l={instancePath:r+"/startAt",schemaPath:"#/properties/startAt/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}}if(e.endAt!==void 0){let i=e.endAt;if(typeof i!="number"&&i!==null){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/type",keyword:"type",params:{type:up.properties.endAt.type},message:"must be number,null"};t===null?t=[l]:t.push(l),s++}if(typeof i=="number"&&(i<0||isNaN(i))){let l={instancePath:r+"/endAt",schemaPath:"#/properties/endAt/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Vs.errors=t,s===0}function nd(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Vs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Vs.errors:t.concat(Vs.errors),s=t.length),nd.errors=t,s===0}var sd=od;var r0=new RegExp("^.+$","u");function qs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.jsonData===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"jsonData"},message:"must have required property 'jsonData'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="jsonData"||i==="width"||i==="height"||i==="animations")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.jsonData!==void 0){let i=e.jsonData;if(!(i&&typeof i=="object"&&!Array.isArray(i))){let l={instancePath:r+"/jsonData",schemaPath:"#/properties/jsonData/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.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(r0.test(l)){let c=i[l];if(c&&typeof c=="object"&&!Array.isArray(c)){if(c.frames===void 0){let u={instancePath:r+"/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'"};t===null?t=[u]:t.push(u),s++}for(let u in c)if(!(u==="frames"||u==="animationSpeed"||u==="loop")){let p={instancePath:r+"/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"};t===null?t=[p]:t.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:r+"/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"};t===null?t=[d]:t.push(d),s++}}else{let p={instancePath:r+"/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"};t===null?t=[p]:t.push(p),s++}}if(c.animationSpeed!==void 0&&typeof c.animationSpeed!="number"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}if(c.loop!==void 0&&typeof c.loop!="boolean"){let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/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"};t===null?t=[u]:t.push(u),s++}}}else{let l={instancePath:r+"/animations",schemaPath:"#/properties/animations/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return qs.errors=t,s===0}function od(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return qs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?qs.errors:t.concat(qs.errors),s=t.length),od.errors=t,s===0}var id=ad;var pp={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 Fs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fontId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontId"},message:"must have required property 'fontId'"};t===null?t=[l]:t.push(l),s++}if(e.fontSize===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontSize"},message:"must have required property 'fontSize'"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontWeight"},message:"must have required property 'fontWeight'"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fontStyle"},message:"must have required property 'fontStyle'"};t===null?t=[l]:t.push(l),s++}if(e.lineHeight===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"lineHeight"},message:"must have required property 'lineHeight'"};t===null?t=[l]:t.push(l),s++}if(e.colorId===void 0){let l={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[l]:t.push(l),s++}for(let l in e)if(!Ze.call(pp.properties,l)){let c={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:l},message:"must NOT have additional properties"};t===null?t=[c]:t.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(je(l)<1){let m={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[m]:t.push(m),s++}}else{let m={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[m]:t.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:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[h]:t.push(h),s++}let m=l.length;for(let h=0;h<m;h++){let w=l[h];if(typeof w=="string"){if(je(w)<1){let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[b]:t.push(b),s++}}else{let b={instancePath:r+"/fontId/"+h,schemaPath:"#/properties/fontId/oneOf/1/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[b]:t.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:r+"/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)"};t===null?t=[b]:t.push(b),s++;break}h[w]=y}}}}else{let m={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[m]:t.push(m),s++}var i=d===s;if(i&&u?(u=!1,p=[p,1]):i&&(u=!0,p=1),u)s=c,t!==null&&(c?t.length=c:t=null);else{let m={instancePath:r+"/fontId",schemaPath:"#/properties/fontId/oneOf",keyword:"oneOf",params:{passingSchemas:p},message:"must match exactly one schema in oneOf"};t===null?t=[m]:t.push(m),s++}}if(e.colorId!==void 0&&typeof e.colorId!="string"){let l={instancePath:r+"/colorId",schemaPath:"#/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.colorAlpha!==void 0&&typeof e.colorAlpha!="number"){let l={instancePath:r+"/colorAlpha",schemaPath:"#/properties/colorAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontSize!==void 0&&typeof e.fontSize!="number"){let l={instancePath:r+"/fontSize",schemaPath:"#/properties/fontSize/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.fontWeight!==void 0&&typeof e.fontWeight!="string"){let l={instancePath:r+"/fontWeight",schemaPath:"#/properties/fontWeight/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.fontStyle!==void 0){let l=e.fontStyle;if(typeof l!="string"){let c={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[c]:t.push(c),s++}if(!(l==="normal"||l==="italic"||l==="oblique")){let c={instancePath:r+"/fontStyle",schemaPath:"#/properties/fontStyle/enum",keyword:"enum",params:{allowedValues:pp.properties.fontStyle.enum},message:"must be equal to one of the allowed values"};t===null?t=[c]:t.push(c),s++}}if(e.lineHeight!==void 0&&typeof e.lineHeight!="number"){let l={instancePath:r+"/lineHeight",schemaPath:"#/properties/lineHeight/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.align!==void 0&&typeof e.align!="string"){let l={instancePath:r+"/align",schemaPath:"#/properties/align/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.wordWrap!==void 0&&typeof e.wordWrap!="boolean"){let l={instancePath:r+"/wordWrap",schemaPath:"#/properties/wordWrap/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.breakWords!==void 0&&typeof e.breakWords!="boolean"){let l={instancePath:r+"/breakWords",schemaPath:"#/properties/breakWords/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[l]:t.push(l),s++}if(e.wordWrapWidth!==void 0&&typeof e.wordWrapWidth!="number"){let l={instancePath:r+"/wordWrapWidth",schemaPath:"#/properties/wordWrapWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeColorId!==void 0&&typeof e.strokeColorId!="string"){let l={instancePath:r+"/strokeColorId",schemaPath:"#/properties/strokeColorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[l]:t.push(l),s++}if(e.strokeAlpha!==void 0&&typeof e.strokeAlpha!="number"){let l={instancePath:r+"/strokeAlpha",schemaPath:"#/properties/strokeAlpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.push(l),s++}if(e.strokeWidth!==void 0&&typeof e.strokeWidth!="number"){let l={instancePath:r+"/strokeWidth",schemaPath:"#/properties/strokeWidth/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[l]:t.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:r+"/shadow",schemaPath:"#/properties/shadow/required",keyword:"required",params:{missingProperty:"colorId"},message:"must have required property 'colorId'"};t===null?t=[c]:t.push(c),s++}for(let c in l)if(!(c==="colorId"||c==="alpha"||c==="blur"||c==="offsetX"||c==="offsetY")){let u={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:c},message:"must NOT have additional properties"};t===null?t=[u]:t.push(u),s++}if(l.colorId!==void 0){let c=l.colorId;if(typeof c=="string"){if(je(c)<1){let u={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow/colorId",schemaPath:"#/properties/shadow/properties/colorId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[u]:t.push(u),s++}}if(l.alpha!==void 0){let c=l.alpha;if(typeof c=="number"){if(c>1||isNaN(c)){let u={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[u]:t.push(u),s++}if(c<0||isNaN(c)){let u={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow/alpha",schemaPath:"#/properties/shadow/properties/alpha/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}}if(l.blur!==void 0){let c=l.blur;if(typeof c=="number"){if(c<0||isNaN(c)){let u={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[u]:t.push(u),s++}}else{let u={instancePath:r+"/shadow/blur",schemaPath:"#/properties/shadow/properties/blur/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[u]:t.push(u),s++}}if(l.offsetX!==void 0&&typeof l.offsetX!="number"){let c={instancePath:r+"/shadow/offsetX",schemaPath:"#/properties/shadow/properties/offsetX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}if(l.offsetY!==void 0&&typeof l.offsetY!="number"){let c={instancePath:r+"/shadow/offsetY",schemaPath:"#/properties/shadow/properties/offsetY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[c]:t.push(c),s++}}else{let c={instancePath:r+"/shadow",schemaPath:"#/properties/shadow/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}}}else{let l={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[l]:t.push(l),s++}return Fs.errors=t,s===0}function ad(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Fs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Fs.errors:t.concat(Fs.errors),s=t.length),ad.errors=t,s===0}var ld=cd;var t0={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 Us(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){for(let i in e)if(!Ze.call(t0.properties,i)){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.x!==void 0){let i=e.x;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/x",schemaPath:"#/properties/x/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.y!==void 0){let i=e.y;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/y",schemaPath:"#/properties/y/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.anchorX!==void 0&&typeof e.anchorX!="number"){let i={instancePath:r+"/anchorX",schemaPath:"#/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.anchorY!==void 0&&typeof e.anchorY!="number"){let i={instancePath:r+"/anchorY",schemaPath:"#/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleX!==void 0&&typeof e.scaleX!="number"){let i={instancePath:r+"/scaleX",schemaPath:"#/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.scaleY!==void 0&&typeof e.scaleY!="number"){let i={instancePath:r+"/scaleY",schemaPath:"#/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.rotation!==void 0&&typeof e.rotation!="number"){let i={instancePath:r+"/rotation",schemaPath:"#/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originX!==void 0&&typeof e.originX!="number"){let i={instancePath:r+"/originX",schemaPath:"#/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}if(e.originY!==void 0&&typeof e.originY!="number"){let i={instancePath:r+"/originY",schemaPath:"#/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[i]:t.push(i),s++}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Us.errors=t,s===0}function cd(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Us(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Us.errors:t.concat(Us.errors),s=t.length),cd.errors=t,s===0}var ud=pd;function Bs(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.fileId===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"fileId"},message:"must have required property 'fileId'"};t===null?t=[i]:t.push(i),s++}if(e.width===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"width"},message:"must have required property 'width'"};t===null?t=[i]:t.push(i),s++}if(e.height===void 0){let i={instancePath:r,schemaPath:"#/required",keyword:"required",params:{missingProperty:"height"},message:"must have required property 'height'"};t===null?t=[i]:t.push(i),s++}for(let i in e)if(!(i==="fileId"||i==="fileType"||i==="width"||i==="height")){let l={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:i},message:"must NOT have additional properties"};t===null?t=[l]:t.push(l),s++}if(e.fileId!==void 0&&typeof e.fileId!="string"){let i={instancePath:r+"/fileId",schemaPath:"#/properties/fileId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.fileType!==void 0&&typeof e.fileType!="string"){let i={instancePath:r+"/fileType",schemaPath:"#/properties/fileType/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[i]:t.push(i),s++}if(e.width!==void 0){let i=e.width;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}if(e.height!==void 0){let i=e.height;if(!(typeof i=="number"&&!(i%1)&&!isNaN(i))){let l={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[l]:t.push(l),s++}}}else{let i={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[i]:t.push(i),s++}return Bs.errors=t,s===0}function pd(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Bs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Bs.errors:t.concat(Bs.errors),s=t.length),pd.errors=t,s===0}var en=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Zt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ur=e=>e===void 0?void 0:structuredClone(e),n0=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"}),s0=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),o0=Object.freeze({background:dp,bgm:mp,character:hp,choice:bp,cleanAll:wp,control:vp,dialogue:Pp,form:Ep,layout:Op,screen:Cp,sfx:_p,visual:Np,voice:Dp}),i0=Object.freeze({achievement:Mp,animation:qp,character:Up,color:Yp,control:Gp,font:Xp,image:Kp,layout:Qp,particle:ed,sound:td,spritesheet:sd,textStyle:id,transform:ld,video:ud}),a0=new Set(["files","language","patches"]),l0=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),c0=new Set(["lineId","mode","payload","type"]),u0=new Set(["mode","payload","sceneId","type"]),p0=new Set(["mode","operation","payload","resourceId","type"]),d0=new Set(["fileId","mimeType"]),z=(e,r)=>{throw new Error(`Invalid l10nData at ${e}: ${r}`)},He=(e,r)=>{Zt(e)||z(r,"expected an object")},ra=(e,r)=>{Array.isArray(e)||z(r,"expected an array")},ft=(e,r)=>{(typeof e!="string"||e.length===0)&&z(r,"expected a non-empty string")},yd=(e,r)=>{typeof e!="string"&&z(r,"expected a string")},rr=(e,r,n)=>{for(let o of Object.keys(e))r.has(o)||z(`${n}.${o}`,"unknown field")},tr=(e,r,n)=>{for(let o of r)en(e,o)||z(n,`missing required field "${o}"`)},f0=e=>e.replaceAll("~1","/").replaceAll("~0","~"),m0=(e,r)=>{let n=(r?.instancePath??"").split("/").slice(1).map(f0);return r?.keyword==="required"?n.push(r.params.missingProperty):r?.keyword==="additionalProperties"&&n.push(r.params.additionalProperty),n.reduce((o,a)=>/^\d+$/.test(a)?`${o}[${a}]`:`${o}.${a}`,e)},y0=(e=[])=>e.filter(r=>!["anyOf","if","not","oneOf"].includes(r.keyword)).reduce((r,n)=>{if(r===void 0)return n;let o=n.instancePath.split("/").length,a=r.instancePath.split("/").length;return o>a?n:r},void 0)??e[0],hd=({value:e,validator:r,path:n,contract:o})=>{if(r(e))return;let a=y0(r.errors);z(m0(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},Ys=(e,r,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||z(r,"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)=>Ys(o,`${r}[${a}]`,n));return}Object.entries(e).forEach(([o,a])=>Ys(a,`${r}.${o}`,n))}},er=(e,r)=>{e===""&&z(r,"expected a non-empty resourceId")},h0=(e,r,n)=>{let o=(s,i)=>er(s?.resourceId,`${i}.resourceId`),a=(s,i)=>(s??[]).forEach((l,c)=>er(l?.resourceId,`${i}[${c}].resourceId`)),t=(s,i)=>{er(s?.resourceId,`${i}.resourceId`),a(s?.sounds,`${i}.sounds`)};switch(e){case"background":er(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"bgm":case"voice":t(r,n);break;case"sfx":a(r.items,`${n}.items`),(r.channels??[]).forEach((s,i)=>a(s?.sounds,`${n}.channels[${i}].sounds`));break;case"character":(r.items??[]).forEach((s,i)=>{(s.sprites??[]).forEach((l,c)=>er(l?.resourceId,`${n}.items[${i}].sprites[${c}].resourceId`)),o(s.animations,`${n}.items[${i}].animations`)});break;case"choice":case"form":case"layout":er(r.resourceId,`${n}.resourceId`),o(r.animations,`${n}.animations`);break;case"control":er(r.resourceId,`${n}.resourceId`);break;case"dialogue":er(r.ui?.resourceId,`${n}.ui.resourceId`),o(r.ui?.animations,`${n}.ui.animations`),(r.character?.sprite?.items??[]).forEach((s,i)=>er(s?.resourceId,`${n}.character.sprite.items[${i}].resourceId`)),o(r.character?.sprite?.animations,`${n}.character.sprite.animations`);break;case"screen":o(r.animations,`${n}.animations`);break;case"visual":(r.items??[]).forEach((s,i)=>{er(s?.resourceId,`${n}.items[${i}].resourceId`),o(s?.animations,`${n}.items[${i}].animations`)});break;default:break}},mt=(e,r)=>{ft(e,r),(e==="__proto__"||e==="constructor"||e==="prototype")&&z(r,`"${e}" is not a safe ID`)},g0=(e,r)=>{ft(e,r),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&z(r,"must be a safe single filename")},Qt=(e,r)=>{if(Object.is(e,r))return!0;if(Array.isArray(e)||Array.isArray(r))return!Array.isArray(e)||!Array.isArray(r)?!1:e.length===r.length&&e.every((a,t)=>Qt(a,r[t]));if(!Zt(e)||!Zt(r))return!1;let n=Object.keys(e).sort(),o=Object.keys(r).sort();return Qt(n,o)&&n.every(a=>Qt(e[a],r[a]))},zs=(e,r=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(o=>zs(o,r,n)),r;if(!Zt(e)||n.has(e))return r;n.add(e);for(let[o,a]of Object.entries(e))o==="fileId"&&typeof a=="string"&&r.add(a),zs(a,r,n);return r},b0=e=>{let r=new Map;for(let[n,o]of Object.entries(e?.story?.scenes??{}))for(let[a,t]of Object.entries(o?.sections??{}))for(let[s,i]of(t?.lines??[]).entries()){if(typeof i?.id!="string")continue;let l=r.get(i.id)??[];l.push({sceneId:n,sectionId:a,lineIndex:s,line:i}),r.set(i.id,l)}return r},gd=(e,r,n)=>{let o=e.get(r)??[];return o.length===0&&z(n,`lineId "${r}" does not exist in projectData`),o.length>1&&z(n,`lineId "${r}" is not globally unique in projectData`),o[0]},bd=(e,r)=>e.story.scenes[r.sceneId].sections[r.sectionId].lines[r.lineIndex],dd=e=>({items:(e?.items??[]).map(r=>({id:r?.id,events:r?.events}))}),fd=e=>{let r=ur(e??{});delete r.resourceId,delete r.animations;for(let n of Object.values(r.fields??{}))Zt(n)&&delete n.placeholder;return r},I0=(e,r,n,o)=>{e==="choice"&&!Qt(dd(r),dd(n))&&z(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Qt(fd(r),fd(n))&&z(o,"form behavior must remain identical; only presentation fields and placeholders may change")},w0=({patch:e,path:r,lineIndex:n})=>{rr(e,l0,r),tr(e,["type","lineId","actionType","payload"],r),mt(e.lineId,`${r}.lineId`),ft(e.actionType,`${r}.actionType`),He(e.payload,`${r}.payload`),e.mode!==void 0&&e.mode!=="replace"&&z(`${r}.mode`,'line.action supports only "replace"'),s0.has(e.actionType)||z(`${r}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=gd(n,e.lineId,`${r}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&z(`${r}.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(`${r}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),en(e.payload,"content")&&z(`${r}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&z(`${r}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),I0(e.actionType,a,e.payload,`${r}.payload`),hd({value:e.payload,validator:o0[e.actionType],path:`${r}.payload`,contract:`the ${e.actionType} presentation-action schema`}),Ys(e.payload,`${r}.payload`),h0(e.actionType,e.payload,`${r}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},k0=(e,r)=>{ra(e,r),e.forEach((n,o)=>{He(n,`${r}[${o}]`),rr(n,new Set(["text"]),`${r}[${o}]`),tr(n,["text"],`${r}[${o}]`),yd(n.text,`${r}[${o}].text`)})},v0=({patch:e,path:r,lineIndex:n})=>{rr(e,c0,r),tr(e,["type","lineId","payload"],r),mt(e.lineId,`${r}.lineId`),He(e.payload,`${r}.payload`),rr(e.payload,new Set(["content"]),`${r}.payload`),tr(e.payload,["content"],`${r}.payload`),k0(e.payload.content,`${r}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&z(`${r}.mode`,'line.dialogue supports only "replace"');let o=gd(n,e.lineId,`${r}.lineId`);return o.line?.actions?.dialogue===void 0&&z(`${r}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},A0=({patch:e,path:r,projectData:n})=>(rr(e,u0,r),tr(e,["type","mode","sceneId","payload"],r),mt(e.sceneId,`${r}.sceneId`),He(e.payload,`${r}.payload`),rr(e.payload,new Set(["name"]),`${r}.payload`),tr(e.payload,["name"],`${r}.payload`),yd(e.payload.name,`${r}.payload.name`),e.mode!=="patch"&&z(`${r}.mode`,'story.scene requires "patch"'),en(n?.story?.scenes??{},e.sceneId)||z(`${r}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),P0=(e,r,n)=>{He(r,n),["font","image","sound","spritesheet","video"].includes(e)&&ft(r.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(r.width)||z(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||z(`${n}.height`,"expected an integer")),e==="spritesheet"&&(He(r.jsonData,`${n}.jsonData`),Number.isInteger(r.width)||z(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||z(`${n}.height`,"expected an integer")),e==="color"&&(typeof r.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(r.hex))&&z(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),hd({value:r,validator:i0[e],path:n,contract:`the resource.${e} schema`}),Ys(r,n)},x0=({patch:e,path:r,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{rr(e,p0,r),tr(e,["type","resourceId","payload"],r),mt(e.resourceId,`${r}.resourceId`);let t=e.type.slice(9),s=n0[t];s||z(`${r}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&z(`${r}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&z(`${r}.operation`,'the only resource operation is "add"'),P0(t,e.payload,`${r}.payload`);let i=n?.resources?.[s]??{},l=en(i,e.resourceId);e.operation==="add"&&l&&z(`${r}.resourceId`,`cannot add existing ${t} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&z(`${r}.resourceId`,`cannot replace missing ${t} resource "${e.resourceId}"`);for(let c of zs(e.payload))!o.has(c)&&!a.has(c)&&z(`${r}.payload`,`fileId "${c}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,path:r,patch:e}},md=({resources:e,collectionName:r,resourceId:n,path:o,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!en(e?.[r]??{},n))&&z(o,`${a} resource "${n}" was not found`)},E0=(e,r)=>{let n=ur(e);for(let a of r.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 r.patches){if(a.patch.type!=="resource.textStyle")continue;let t=a.patch.payload,s=Array.isArray(t.fontId)?t.fontId:[t.fontId];s.forEach((i,l)=>md({resources:o,collectionName:"fonts",resourceId:i,path:`${a.path}.payload.fontId${s.length>1?`[${l}]`:""}`,label:"font"}));for(let[i,l]of[["colorId",t.colorId],["strokeColorId",t.strokeColorId],["shadow.colorId",t.shadow?.colorId]])md({resources:o,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${i}`,label:"color"})}},S0=({patch:e,path:r,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:t})=>{if(He(e,r),ft(e.type,`${r}.type`),e.type==="line.action")return w0({patch:e,path:r,lineIndex:o});if(e.type==="line.dialogue")return v0({patch:e,path:r,lineIndex:o});if(e.type==="story.scene")return A0({patch:e,path:r,projectData:n});if(e.type.startsWith("resource."))return x0({patch:e,path:r,projectData:n,packageFileIds:a,canonicalFileIds:t});z(`${r}.type`,`unsupported patch type "${e.type}"`)},O0=(e,r)=>{ra(e,r);let n=new Set;return e.forEach((o,a)=>{let t=`${r}[${a}]`;He(o,t),rr(o,d0,t),tr(o,["fileId"],t),g0(o.fileId,`${t}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&z(`${t}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&z(`${t}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},R0=({packageId:e,packageData:r,path:n,projectData:o,lineIndex:a,canonicalFileIds:t})=>{He(r,n),rr(r,a0,n),tr(r,["language","files","patches"],n),ft(r.language,`${n}.language`);let s=O0(r.files,`${n}.files`);ra(r.patches,`${n}.patches`);let i=new Set,l=r.patches.map((c,u)=>{let p=S0({patch:c,path:`${n}.patches[${u}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:t});return i.has(p.key)&&z(`${n}.patches[${u}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:r,fileIds:s,patches:l}},Id=({projectData:e,l10nData:r})=>{if(r===void 0)return{packages:new Map};He(r,"l10nData"),rr(r,new Set(["packages"]),"l10nData"),tr(r,["packages"],"l10nData"),He(r.packages,"l10nData.packages");let n=b0(e),o=zs(e?.resources??{}),a=new Map,t=new Map;for(let[s,i]of Object.entries(r.packages)){mt(s,`l10nData.packages.${s}`);let l=R0({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=t.get(c);u!==void 0&&z(`l10nData.packages.${s}.files`,`fileId "${c}" is already declared by package "${u}"`),t.set(c,s)}E0(e,l),a.set(s,l)}return{packages:a}},C0=(e,r)=>{let{collectionName:n,patch:o}=r;e.resources[n]??={},e.resources[n][o.resourceId]=ur(o.payload)},$0=(e,r)=>{let{patch:n}=r,o=e.story.scenes[n.sceneId];o.name=n.payload.name},_0=(e,r)=>{let{location:n,patch:o}=r,a=bd(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=ur(o.payload);return}let t=ur(n.line.actions.dialogue.content);a.actions.dialogue=ur(o.payload),t!==void 0&&(a.actions.dialogue.content=t)},T0=(e,r)=>{let{location:n,patch:o}=r,a=bd(e,n);a.actions.dialogue.content=ur(o.payload.content)},wd=({projectData:e,l10nData:r})=>{let n=Id({projectData:e,l10nData:r});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},Gs=({projectData:e,l10nData:r,l10nId:n=null})=>{let o=Id({projectData:e,l10nData:r});if(n!==null&&(mt(n,"l10nId"),o.packages.has(n)||z("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=ur(e),t=o.packages.get(n).patches;return t.filter(s=>s.kind==="resource").forEach(s=>C0(a,s)),t.filter(s=>s.kind==="story.scene").forEach(s=>$0(a,s)),t.filter(s=>s.kind==="line.action").forEach(s=>_0(a,s)),t.filter(s=>s.kind==="line.dialogue").forEach(s=>T0(a,s)),a};var ta=Object.freeze({auto:1e3,skip:80,authored:1e3}),nn=new Set(["startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),kd=new WeakMap,N0=new ArrayBuffer(8),na=new DataView(N0),j0=e=>{let r=kd.get(e);if(r)return r;let n={dispatchDepth:0};return kd.set(e,n),n},D0=e=>{if(e===null||typeof e!="object"||Array.isArray(e))return!1;let r=Object.getPrototypeOf(e);return r===Object.prototype||r===null},L0=(e,r)=>Object.keys(e).length===r.length&&r.every(o=>Object.prototype.hasOwnProperty.call(e,o)),Sr=(e,r,n)=>{if(!D0(e)||!L0(e,r))throw new TypeError(`${n} has an invalid shape`)},rn=(e,r)=>{if(!Number.isSafeInteger(e)||e<0)throw new TypeError(`${r} must be a non-negative safe integer`)},tn=(e,r)=>{if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new TypeError(`${r} must be a finite non-negative number`)},vd=e=>{if(tn(e,"duration"),e===0)return 0n;na.setFloat64(0,e,!1);let r=na.getUint32(0,!1),n=na.getUint32(4,!1),o=r>>>20&2047,a=BigInt(r&1048575)<<32n|BigInt(n);if(o===0)return a;let t=1n<<52n|a,s=o-1;return t<<BigInt(s)},M0=e=>structuredClone(e),sa=(e,r)=>e===r?!0:!e||!r||e.mode!==r.mode||e.kind!==r.kind?!1:e.mode==="legacy"?e.instanceToken===r.instanceToken:e.delayMs!==r.delayMs?!1:e.kind==="auto"?e.contentKey===r.contentKey&&e.owner.sessionId===r.owner.sessionId&&e.owner.lineEntryId===r.owner.lineEntryId:e.kind==="skip"?e.owner.sessionId===r.owner.sessionId:e.trigger===r.trigger&&e.owner.lineEntryId===r.owner.lineEntryId,oa=(e,r,n)=>{if(r===null)return null;if(e==="auto"){if(Sr(r,["owner","delayMs","contentKey"],"auto timer"),Sr(r.owner,["sessionId","lineEntryId"],"auto timer owner"),rn(r.owner.sessionId,"auto owner sessionId"),rn(r.owner.lineEntryId,"auto owner lineEntryId"),r.owner.lineEntryId!==n)throw new TypeError("auto owner lineEntryId must match schedule lineEntryId");if(tn(r.delayMs,"auto delayMs"),typeof r.contentKey!="string")throw new TypeError("auto contentKey must be a string")}else if(e==="skip")Sr(r,["owner","delayMs"],"skip timer"),Sr(r.owner,["sessionId"],"skip timer owner"),rn(r.owner.sessionId,"skip owner sessionId"),tn(r.delayMs,"skip delayMs");else{if(Sr(r,["owner","delayMs","trigger"],"authored timer"),Sr(r.owner,["lineEntryId"],"authored timer owner"),rn(r.owner.lineEntryId,"authored owner lineEntryId"),r.owner.lineEntryId!==n)throw new TypeError("authored owner lineEntryId must match schedule lineEntryId");if(tn(r.delayMs,"authored delayMs"),r.trigger!=="fromStart"&&r.trigger!=="fromComplete")throw new TypeError('authored trigger must be "fromStart" or "fromComplete"')}return{mode:"reconciled",kind:e,...M0(r)}},V0=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(rn(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 r={auto:oa("auto",e.timers.auto,e.lineEntryId),skip:oa("skip",e.timers.skip,e.lineEntryId),authored:oa("authored",e.timers.authored,e.lineEntryId)};if(r.auto&&r.skip)throw new TypeError("playback schedule cannot enable auto and skip together");return{contractVersion:1,status:"settled",lineEntryId:e.lineEntryId,timers:r}},ia=e=>({descriptor:e,remainingQuanta:vd(e.delayMs)}),Hs=["auto","skip","authored"],Ad=({ticker:e,dispatchAutomaticAttempt:r,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 r!="function")throw new TypeError("playback scheduler requires dispatchAutomaticAttempt");let o=j0(e),a=!0,t={},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=()=>Hs.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&&t===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&&t===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=t,ae=s,ce={},B=oe=>{if(!a||L!==t||ae!==s||ce!==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=vd(oe.deltaMS);f=!0,o.dispatchDepth+=1;let pe=s,te=null;try{let C=[];for(let _ of Hs){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{r({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=ia(_.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:ce};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)=>{tn(ae,`${L} delay`),d="legacy",g[L]+=1,y[L]=null,m[L]=ia({mode:"legacy",kind:L,instanceToken:{},delayMs:ae}),D()};return{handleLegacyEffect:L=>{switch(L.name){case"startAutoNextTimer":return q("auto",L.payload?.delay??ta.auto),!0;case"clearAutoNextTimer":return $("auto"),!0;case"startSkipNextTimer":return q("skip",L.payload?.delay??ta.skip),!0;case"clearSkipNextTimer":return $("skip"),!0;case"nextLineConfigTimer":return q("authored",L.payload?.delay??ta.authored),!0;case"clearNextLineConfigTimer":return $("authored"),!0;default:return!1}},reconcilePlaybackScheduleV1:L=>{let ae;try{ae=V0(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 ce={};for(let B of Hs){let Z=ae.timers[B],oe=y[B];if(oe&&(!Z||!sa(oe,Z))&&(y[B]=null),Z&&y[B]&&sa(y[B],Z)){ce[B]=null;continue}let re=m[B];ce[B]=Z&&re&&sa(re.descriptor,Z)?re:Z?ia(Z):null}m=ce,h()?D():f||v()},reset:()=>{let L=[i,u].filter((B,Z,oe)=>B&&oe.indexOf(B)===Z);t={},s={},w(),i=null,u=null,P(),y={auto:null,skip:null,authored:null};for(let B of Hs)g[B]+=1;d="legacy",a=!0;let ae=null,ce=null;for(let B of L)try{e.remove(B)}catch(Z){ae??=Z,ce??=B}if(u=ce,ae)throw ae},dispose:()=>{a=!1,t={},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,ce=null;for(let B of L)try{e.remove(B)}catch(Z){ae??=Z,ce??=B}if(u=ce,ae)throw ae}}};var q0=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),F0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),aa="conditional",sn="random",ca=Symbol("conditionalAutoContinue"),U0=new Set(["sectionTransition","resetStoryAtSection"]),B0=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),Y0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),z0=new Set(["nextLine","nextLineFromSystem"]),G0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),la="form",H0=new Set(["submitForm","cancelForm"]),X0="showImageGalleryVariant",W0="playMusicRoomTrack",K0="startSceneReplay",J0=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),Q0=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,on=e=>e?.type===ca,Gr=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,Z0=(e,r)=>[...new Set([...Object.keys(e??{}),...Object.keys(r??{})])].some(o=>!Object.is(e?.[o],r?.[o]));function ua(e){let r=Q0(),n,o=0,a=!1,t=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=hl(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}}},ce=()=>({contractVersion:1,status:"unsettled",lineEntryId:n?.selectPlaybackLineEntryId?.()??0,timers:null}),B=I=>{if(!(!$||!a||!n)){b=!0;try{ae(ce())}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(N=>!nn.has(N.name)):S;R.length>0&&D(R)}catch(R){throw n.clearPendingEffects(),A.forEach(N=>{n.appendPendingEffect(N)}),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,...N}=I,G=R===void 0?void 0:structuredClone(R),H=structuredClone(I.projectData),ne=wd({projectData:H,l10nData:G}),me=N.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,un=Gs({projectData:H,l10nData:G,l10nId:Hr}),Qs=rp({...N,global:{...me,localizationPackages:ne,runtime:{...Re,localizationPackageId:Hr}},projectData:un,initialAudioCommandId:S});q?.(),n=Qs,o+=1,a=!0,t=0,s=dt(A),i=0,l=!1,c=0,u=[],p=null,f=null,d=new Map,m=new Map,y=new Map,g=H,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"),t+=1;let A=Date.now();pe(A);let S=m.size>0,R=oe(d,A),N=S?oe(m,A):new Map,H={...n.selectRenderState({activePersistentAnimations:re(R),restoredPersistentAnimations:re(N)}),id:`render-${r}-${o}-${t}`};return y.set(H.id,{builtAt:A,persistentAnimationSessions:new Map([...N.entries(),...R.entries()]),usedRestoredPersistentAnimationSessions:S}),H},Or=(I={})=>fe(I),Xe=(I={})=>fe(I),an=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;Kl(I?.animations).forEach(N=>{let G=qn(N);if(!G)return;let H=S?.persistentAnimationSessions?.get(G)??d.get(G),ne=Math.max(0,Zl(N)),me=H?.startedAt??S?.builtAt??Date.now();R.set(G,{animation:structuredClone(N),startedAt:me,expiresAt:me+ne})}),d=R,S?.usedRestoredPersistentAnimationSessions&&(m=new Map)},yt=()=>n.selectSystemState(),ln=()=>n.selectAchievements(),Xs=I=>n.selectAchievement(I),ht=()=>n.selectSaveSlotMap(),Od=I=>n.selectSaveSlot(I),Rd=I=>n.selectSaveSlotPage(I),Cd=()=>n.selectImageGallery(),$d=()=>n.selectMusicRoom(),_d=()=>n.selectSceneReplay(),Td=()=>n.selectIsSceneReplayActive(),dk=()=>n.selectSkipMode(),fk=()=>n.selectAutoMode(),Nd=()=>n.selectRuntime(),jd=()=>n.selectIsChoiceVisible(),Dd=()=>n.selectIsFormVisible(),Ld=()=>n.selectActiveInteraction(),Md=()=>n.selectPendingEffects().some(I=>I?.name==="handleLineActions"||I?.name==="render"),da=(I,A,S={})=>!Le(A)||I!=="nextLine"?A:S.bypassChoice===!0?{...A,bypassChoice:!0}:S.interactionSource===la?{...A,_interactionSource:la}:A,fa=(I={})=>({type:ca,payload:da("nextLine",{_conditionalContinuation:!0},I)}),Ws=(I,A)=>on(I)?{type:ca,payload:{...I.payload,...A.payload}}:A,Vd=I=>{I.savedCheckpointOccurrences.forEach(A=>{n.markSavedRollbackCheckpointTransient(A)}),I.savedCheckpointOccurrences=[]},qd=(I,A)=>{let S=p;return p=null,!S||!Gr(S.pointer,I)||S.checkpointIndex!==A?.checkpointIndex||S.checkpointIdentity!==A?.checkpoint?[]:S.savedCheckpointOccurrences},Fd=I=>{let A=f;return!A||!Gr(A.pointer,I)?null:(f=null,A)},Ud=({actionType:I,pointerBeforeAction:A,pointerAfterAction:S,cursorBeforeAction:R,cursorAfterAction:N,wasSceneReplayActive:G,isSceneReplayActive:H})=>{!S||!(!Gr(A,S)||R?.checkpoint!==N?.checkpoint||R?.checkpointIndex!==N?.checkpointIndex||I==="jumpToLine")||(f={pointer:S,appendToPrevious:z0.has(I)&&G===H&&A?.sectionId===S.sectionId&&A?.lineId!==S.lineId,reuseExistingOccurrence:G0.has(I),forceNewOccurrence:I==="jumpToLine"})},ma=I=>{I.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:I.rollbackCursor?.checkpointIndex,checkpointIdentity:I.rollbackCursor?.checkpoint,sectionId:I.pointer?.sectionId,lineId:I.pointer?.lineId}),Vd(I))},Bd=(I,A,S)=>B0.has(I)?I==="resetStoryAtSection"?S?.checkpoint!==A?.checkpoint:S?.checkpoint!==A?.checkpoint&&S?.checkpointIndex>A?.checkpointIndex:!1,Yd=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})},zd=()=>{u.at(-1)?.savedCheckpointOccurrences.forEach(A=>{let S=n.selectSaveSlot({slotId:A.slotId});S&&(A.saveSlotIdentity=S)})},Gd=()=>{let I=u.at(-1);I&&(I.rollbackCursor=n.selectRollbackCursor?.()??null)},Hd=(I,A,S)=>{let R=u.at(-1);if(!R)return;let N=n.selectCurrentPointer()?.pointer,G=Bd(I,A,S);if(Gr(R.pointer,N)){let H=S?.checkpoint!==A?.checkpoint||S?.checkpointIndex!==A?.checkpointIndex;G||H&&Y0.has(I)?(ma(R),R.pointer=N,R.rollbackCursor=S,R.markCurrentCheckpointTransient=G,R.savedCheckpointOccurrences=[]):H&&I==="updateProjectData"&&(R.rollbackCursor=S);return}ma(R),R.pointer=N,R.rollbackCursor=n.selectRollbackCursor?.()??null,R.markCurrentCheckpointTransient=G,R.savedCheckpointOccurrences=[]},gt=(I,A)=>{if(U(`action "${I}"`),!n[I])return;let S=A,R,N;if(I==="updateProjectData")ya(A),R=structuredClone(A.projectData),S={...A,projectData:Gs({projectData:R,l10nData:h,l10nId:w})},ya(S);else if(I==="updateLocalizationPackage"){if(N=Xd(A),N===w)return;S={l10nId:N,projectData:Gs({projectData:g,l10nData:h,l10nId:N})}}U0.has(I)&&(c+=1);let G=n.selectAutoMode(),H=G?n.selectRuntime():null,ne=n.selectIsSceneReplayActive?.()===!0,me=F0.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(bt){throw ie(bt,"preCommit"),bt}R!==void 0&&(g=R),N!==void 0&&(w=N),q0.has(I)&&(m=me??new Map,d=new Map);let un=n.selectIsSceneReplayActive?.()===!0;ne!==un&&(d=new Map,m=new Map);let Qs=n.selectCurrentPointer()?.pointer??null,Xr=n.selectRollbackCursor?.()??null;I==="saveSlot"?Yd(A):I==="updateProjectData"&&zd(),Hd(I,xe,Xr),Ud({actionType:I,pointerBeforeAction:Re,pointerAfterAction:Qs,cursorBeforeAction:xe,cursorAfterAction:Xr,wasSceneReplayActive:ne,isSceneReplayActive:un});let cf=n.selectAutoMode()&&(I==="updateVariable"||G&&Z0(H,n.selectRuntime()));(J0.has(I)||cf)&&(b=!0);try{te()}catch(bt){throw Rr&&ie(bt,"postCommitUnsettled"),bt}return Hr},ya=I=>{if(!Object.prototype.hasOwnProperty.call(I??{},"projectData"))throw new Error("updateProjectData requires projectData");Dr(I?.projectData?.resources?.variables??{}),xt(I.projectData),Et(I.projectData),St(I.projectData)},Xd=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},Wd=(I,A,S)=>{let R=n.selectCurrentPointer()?.pointer;A!==R||S!==c||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),gt("nextLineFromSystem",I.payload))},Kd=()=>({renderSequence:t,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}),Jd=I=>{t=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},ha=(I,A={})=>(U("action batch"),C(()=>{let S=Kd();try{return n[xo](()=>{let R,N=n.selectCurrentPointer()?.pointer??null,G=n.selectRollbackCursor?.()??null,H=c,ne={pointer:N,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({})}on(R)&&Wd(R,N,H);let me=n.selectCurrentPointer()?.pointer??null;A.rollbackSource==="line"&&Gr(N,me)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:ne.savedCheckpointOccurrences,appendToPrevious:A.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:A.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:A.dialogueHistoryForceNewOccurrence===!0})}finally{u.pop(),(!Gr(N,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 Jd(S),R}})),Ks=(I,A,S,R={})=>{if(I===aa||I===sn)return ha(()=>{let N={...R,executionContext:R.executionContext??{depth:0,pendingNavigation:null},actionPath:R.actionPath??[I],randomOutcomeOrdinals:R.randomOutcomeOrdinals??new Map};if(I===sn)return Ia(A,S,N);let G=Js(S),H=$t({[I]:A},G);return ba(H[I],S,N)},R);gt(I,A)},Qd=(I,A)=>{if(I!=="nextLineFromSystem")return Ks(I,A);v+=1;try{return Ks(I,A)}finally{v=Math.max(0,v-1)}},ga=I=>{if(I&&Object.prototype.hasOwnProperty.call(I,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".')},Js=I=>{if(ga(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():{}}},Zd=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(N=>N.id===I.groupId):void 0;if(!S)return{templatePayload:I,literalTargetIds:null};let R=typeof I.variantId=="string"&&S.variants.some(N=>N.id===I.variantId);return{templatePayload:{...I,groupId:null,...R?{variantId:null}:{}},literalTargetIds:{groupId:I.groupId,...R?{variantId:I.variantId}:{}}}},ef=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},rf=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},tf=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")},nf=(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")},ba=(I,A,S)=>{tf(I);let R=fa(S);for(let N=0;N<I.branches.length;N+=1){let G=I.branches[N];nf(G,N,I.branches.length);let H=Js(A);if(Object.prototype.hasOwnProperty.call(G,"when")&&!Pt(G.when,H))continue;let me=cn(G.actions,A,{...S,actionPath:[...S.actionPath??[aa],"branches",String(N),"actions"]});return on(me)?Ws(R,me):R}return R},sf=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}`)}},Ia=(I,A,S)=>{sf(I),ga(A);let R=gl(I.distribution,{randomSource:k});if(S.rollbackSource==="line"){n.ensureRandomReplayOccurrence({});let H=(S.actionPath??[sn]).join("."),ne=S.randomOutcomeOrdinals??new Map,me=ne.get(H)??0;ne.set(H,me+1),n.recordRandomOutcome({path:H,ordinal:me,type:R.type,result:R}),Gd()}let N;R.type==="integer"?gt("updateVariable",{id:"randomResult",operations:[{variableId:I.variableId,op:"set",value:R.value}]}):N=cn(I.distribution.outcomes[R.outcomeIndex].actions,A,{...S,actionPath:[...S.actionPath??[sn],"distribution","outcomes",String(R.outcomeIndex),"actions"]});let G=fa(S);return on(N)?Ws(G,N):G},of=(I,A)=>({...I??{},_form:A}),af=(I,A,S,R)=>{let N=gt(I,A),G=N?.submitted===!0&&N.valid===!0,H=N?.cancelled===!0;if(!(!G&&!H)&&Le(A.actions))return cn(A.actions,of(S,N.form),{...R,interactionSource:la})},wa=(I,A,S,R)=>{if(I===sn)return Ia(A,S,R);let N=Js(S),G={templatePayload:A,literalTargetIds:null};I===X0?G=Zd(A):I===W0?G=ef(A):I===K0&&(G=rf(A));let{templatePayload:H,literalTargetIds:ne}=G,Re=$t({[I]:H},N)[I],xe=ne?{...Re,...ne}:Re;if(I===aa)return ba(xe,S,R);let Rr=da(I,xe,R);if(H0.has(I))return af(I,Rr,S,R);gt(I,Rr)},cn=(I,A,S)=>{let R,N=S?.executionContext??{depth:0,pendingNavigation:null},G=Nn(I);jn(G),N.depth+=1;try{for(let[H,ne]of G){let me={...S,executionContext:N,actionPath:[...S?.actionPath??[],H]};if($o(H)){let xe=N.pendingNavigation;if(xe)throw new Error(`action batch cannot execute multiple navigation actions: ${xe.actionType}, ${H}`);N.pendingNavigation={actionType:H,payload:ne,eventContext:A,options:me};continue}let Re=wa(H,ne,A,me);on(Re)&&(R=Ws(R,Re))}}finally{N.depth-=1}if(N.depth===0&&N.pendingNavigation){let H=N.pendingNavigation;N.pendingNavigation=null,wa(H.actionType,H.payload,H.eventContext,H.options)}return R},ka=(I,A,S={})=>{let R={...S,executionContext:{depth:0,pendingNavigation:null},randomOutcomeOrdinals:new Map};return ha(()=>cn(I,A,R),R)},lf=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:Ks,handleInternalAction:Qd,handleActions:ka,selectRenderState:Or,prepareRenderState:Xe,commitRenderState:an,selectPresentationState:de,selectPresentationChanges:Pe,selectSectionLineChanges:ge,selectSystemState:yt,selectAchievements:ln,selectAchievement:Xs,selectSaveSlotMap:ht,selectSaveSlot:Od,selectSaveSlotPage:Rd,selectSaveSlots:ht,selectImageGallery:Cd,selectMusicRoom:$d,selectSceneReplay:_d,selectIsSceneReplayActive:Td,selectRuntime:Nd,selectIsChoiceVisible:jd,selectIsFormVisible:Dd,selectActiveInteraction:Ld,selectHasPendingRenderWork:Md,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,N=p,G=f,H=qd(S,R),ne=Fd(S),me=n.selectCurrentLine(),Re=!1;if(me?.actions){try{ka(me.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:H,dialogueHistoryAppendToPrevious:ne?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:ne?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:ne?.forceNewOccurrence===!0})}catch(xe){throw p=N,f=G,xe}Re=!0}return lf(S),Re})},getNamespace:K,classifyAutomaticAttemptError:L}}var ek="music-room:player",Ed=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),Pd=(e,r)=>Ed.has(e)&&r?._event?.id===ek,Sd=({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{if(e.selectHasPendingRenderWork?.())return;let s=e.prepareRenderState?.(t)??e.selectRenderState(t);n?.(s),r.render(s),a(o)&&e.commitRenderState?.(s)},rk=({engine:e,routeGraphics:r,trackRenderDispatch:n,getRenderDispatchCount:o,lifecycleGeneration:a,isCurrentLifecycle:t},s)=>{let i=o?.()??0,l=e.handleLineActions(s);(o?.()??0)===i&&Sd({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:t},s)},tk=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveSlots(r?.saveSlots))},nk=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalDeviceVariables(r?.globalDeviceVariables))},sk=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalAccountVariables(r?.globalAccountVariables))},ok=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalRuntime(r?.globalRuntime))},ik=({enqueuePersistenceWrite:e},r)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(r?.updates)})},xd={render:Sd,saveSlots:tk,saveGlobalDeviceVariables:nk,saveGlobalAccountVariables:sk,saveGlobalRuntime:ok,applyScopedDataUpdates:ik,handleLineActions:rk},ak=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),pa=(e,r,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(r,n)},lk=(e=[])=>{let r=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(!ak.has(a.name)){n.unshift(a);continue}r.has(a.name)||(r.add(a.name),n.unshift(a))}return n},ck=({getEngine:e,routeGraphics:r,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:t,persistence:s,namespace:i})=>{let l=new Map,c=Promise.resolve(),u=null,p=null,f=!1,d=0,m=0,y=!0,g=Ad({ticker:n,dispatchAutomaticAttempt:()=>pa(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 _=dt(C),F=l.get(_);if(F)return F;let K=Zi({indexedDB:t,namespace:_});return l.set(_,K),K},k=C=>{let _=s?null:dt(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(Pd(C,_)){let K=Ed.get(C),de=e();return pa(de,K,_?._event),!0}if(C!=="renderComplete"||!$(_))return!1;let F=e();return pa(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,ce=(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,_):ce(C,_)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(K=>ce(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(Pd(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,Xe;fe?.bypassChoice===!0?Xe={bypassChoice:!0}:fe?._interactionSource&&(Xe={interactionSource:fe._interactionSource}),Xe?de.handleActions(fe.actions,Or,Xe):de.handleActions(fe.actions,Or)}return _?.(F,fe)},te=C=>{if(!y)return;let _=m,F=e(),K=lk(C),de=K.some(ge=>ge.name==="handleLineActions");K.forEach(ge=>{if(!xd[ge.name]&&!nn.has(ge.name)&&!o)throw new Error(`Unhandled pending effect "${ge.name}".`)});let Pe={engine:F,routeGraphics:r,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(nn.has(ge.name)){g.handleLegacyEffect(ge);continue}let fe=xd[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},uk=ck;var pk=(e,r={})=>{let{resources:n={}}=r;return oi(e,n)};var iA=ua;export{Lo as DEFAULT_VISUAL_LAYER,rt as RENDER_LAYER,nr as VISUAL_LAYER,uk as createEffectsHandler,Fw as createIndexedDbPersistence,iA as default,So as formatDate,Nm as resolveComputedVariables,pk as resolveLayoutReferences};
|