route-engine-js 1.36.1 → 1.36.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- var Ep=Object.defineProperty;var Sp=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Rp=(e,r)=>{for(var n in r)Ep(e,n,{get:r[n],enumerable:!0})};var Fc=Sp(oi=>{"use strict";Object.defineProperty(oi,"__esModule",{value:!0});function Vc(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}oi.default=Vc;Vc.code='require("ajv/dist/runtime/ucs2length").default'});var Ai=Symbol.for("immer-nothing"),gi=Symbol.for("immer-draftable"),ke=Symbol.for("immer-state");function je(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Dr=Object.getPrototypeOf;function me(e){return!!e&&!!e[ke]}function gr(e){return e?ki(e)||Array.isArray(e)||!!e[gi]||!!e.constructor?.[gi]||Yt(e)||zt(e):!1}var Op=Object.prototype.constructor.toString();function ki(e){if(!e||typeof e!="object")return!1;let r=Dr(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)===Op}function Ut(e){return me(e)||je(15,e),e[ke].base_}function qt(e,r){Bt(e)===0?Reflect.ownKeys(e).forEach(n=>{r(n,e[n],e)}):e.forEach((n,o)=>r(o,n,e))}function Bt(e){let r=e[ke];return r?r.type_:Array.isArray(e)?1:Yt(e)?2:zt(e)?3:0}function ws(e,r){return Bt(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Pi(e,r,n){let o=Bt(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function Cp(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function Yt(e){return e instanceof Map}function zt(e){return e instanceof Set}function hr(e){return e.copy_||e.base_}function vs(e,r){if(Yt(e))return new Map(e);if(zt(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=ki(e);if(r===!0||r==="class_only"&&!n){let o=Object.getOwnPropertyDescriptors(e);delete o[ke];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(Dr(e),o)}else{let o=Dr(e);if(o!==null&&n)return{...e};let a=Object.create(o);return Object.assign(a,e)}}function Es(e,r=!1){return Ht(e)||me(e)||!gr(e)||(Bt(e)>1&&(e.set=e.add=e.clear=e.delete=$p),Object.freeze(e),r&&Object.entries(e).forEach(([n,o])=>Es(o,!0))),e}function $p(){je(2)}function Ht(e){return Object.isFrozen(e)}var _p={};function br(e){let r=_p[e];return r||je(0,e),r}var rt;function xi(){return rt}function jp(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function bi(e,r){r&&(br("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function As(e){ks(e),e.drafts_.forEach(Np),e.drafts_=null}function ks(e){e===rt&&(rt=e.parent_)}function Ii(e){return rt=jp(rt,e)}function Np(e){let r=e[ke];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[ke].modified_&&(As(r),je(4)),gr(e)&&(e=Vt(r,e),r.parent_||Ft(r,e)),r.patches_&&br("Patches").generateReplacementPatches_(n[ke].base_,e,r.patches_,r.inversePatches_)):e=Vt(r,n,[]),As(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Ai?e:void 0}function Vt(e,r,n){if(Ht(r))return r;let o=r[ke];if(!o)return qt(r,(a,t)=>vi(e,o,r,a,t,n)),r;if(o.scope_!==e)return r;if(!o.modified_)return Ft(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),qt(t,(i,l)=>vi(e,o,a,i,l,n,s)),Ft(e,a,!1),n&&e.patches_&&br("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function vi(e,r,n,o,a,t,s){if(me(a)){let i=t&&r&&r.type_!==3&&!ws(r.assigned_,o)?t.concat(o):void 0,l=Vt(e,a,i);if(Pi(n,o,l),me(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(gr(a)&&!Ht(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Vt(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&Ft(e,a)}}function Ft(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Es(r,n)}function Dp(e,r){let n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:xi(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,t=Ss;n&&(a=[o],t=tt);let{revoke:s,proxy:i}=Proxy.revocable(a,t);return o.draft_=i,o.revoke_=s,i}var Ss={get(e,r){if(r===ke)return e;let n=hr(e);if(!ws(n,r))return Tp(e,n,r);let o=n[r];return e.finalized_||!gr(o)?o:o===bs(e.base_,r)?(Is(e),e.copy_[r]=xs(o,e)):o},has(e,r){return r in hr(e)},ownKeys(e){return Reflect.ownKeys(hr(e))},set(e,r,n){let o=Ei(hr(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=bs(hr(e),r),t=a?.[ke];if(t&&t.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(Cp(n,a)&&(n!==void 0||ws(e.base_,r)))return!0;Is(e),Ps(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 bs(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,Is(e),Ps(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){let n=hr(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){je(11)},getPrototypeOf(e){return Dr(e.base_)},setPrototypeOf(){je(12)}},tt={};qt(Ss,(e,r)=>{tt[e]=function(){return arguments[0]=arguments[0][0],r.apply(this,arguments)}});tt.deleteProperty=function(e,r){return tt.set.call(this,e,r,void 0)};tt.set=function(e,r,n){return Ss.set.call(this,e[0],r,n,e[0])};function bs(e,r){let n=e[ke];return(n?hr(n):e)[r]}function Tp(e,r,n){let o=Ei(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function Ei(e,r){if(!(r in e))return;let n=Dr(e);for(;n;){let o=Object.getOwnPropertyDescriptor(n,r);if(o)return o;n=Dr(n)}}function Ps(e){e.modified_||(e.modified_=!0,e.parent_&&Ps(e.parent_))}function Is(e){e.copy_||(e.copy_=vs(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Lp=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"&&je(6),o!==void 0&&typeof o!="function"&&je(7);let a;if(gr(r)){let t=Ii(this),s=xs(r,void 0),i=!0;try{a=n(s),i=!1}finally{i?As(t):ks(t)}return bi(t,o),wi(a,t)}else if(!r||typeof r!="object"){if(a=n(r),a===void 0&&(a=r),a===Ai&&(a=void 0),this.autoFreeze_&&Es(a,!0),o){let t=[],s=[];br("Patches").generateReplacementPatches_(r,a,t,s),o(t,s)}return a}else je(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){gr(e)||je(8),me(e)&&(e=tr(e));let r=Ii(this),n=xs(e,void 0);return n[ke].isManual_=!0,ks(r),n}finishDraft(e,r){let n=e&&e[ke];(!n||!n.isManual_)&&je(9);let{scope_:o}=n;return bi(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=br("Patches").applyPatches_;return me(e)?o(e,r):this.produce(e,a=>o(a,r))}};function xs(e,r){let n=Yt(e)?br("MapSet").proxyMap_(e,r):zt(e)?br("MapSet").proxySet_(e,r):Dp(e,r);return(r?r.scope_:xi()).drafts_.push(n),n}function tr(e){return me(e)||je(10,e),Si(e)}function Si(e){if(!gr(e)||Ht(e))return e;let r=e[ke],n;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=vs(e,r.scope_.immer_.useStrictShallowCopy_)}else n=vs(e,!0);return qt(n,(o,a)=>{Pi(n,o,Si(a))}),r&&(r.finalized_=!1),n}var Re=new Lp,Rs=Re.produce,u0=Re.produceWithPatches.bind(Re),p0=Re.setAutoFreeze.bind(Re),d0=Re.setUseStrictShallowCopy.bind(Re),f0=Re.applyPatches.bind(Re),m0=Re.createDraft.bind(Re),y0=Re.finishDraft.bind(Re);var A={LITERAL:0,VARIABLE:1,INTERPOLATION:2,FUNCTION:3,BINARY:4,UNARY:5,CONDITIONAL:6,LOOP:7,OBJECT:8,ARRAY:9,PARTIAL:10,PATH_REFERENCE:11},z={EQ:0,NEQ:1,GT:2,LT:3,GTE:4,LTE:5,AND:6,OR:7,IN:8,ADD:10,SUBTRACT:11},Tr={NOT:0};var j=class extends Error{constructor(r){super(`Parse Error: ${r}`),this.name="JemplParseError"}},Ae=class extends Error{constructor(r){super(`Render Error: ${r}`),this.name="JemplRenderError"}};var Os=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}')`)},Ri=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 Oi=(e,r,n=!1)=>{if(r===null)return new Ae(`Cannot iterate over null value at '$for ${e}'`);if(r===void 0)return new Ae(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof r;return n?new Ae(`Cannot iterate over non-array value in loop '${e}' - got ${o} instead`):new Ae(`Cannot iterate over non-array value (got: ${o}) at '$for ${e}'`)},Ci=(e,r)=>{let n=r&&Object.keys(r).length>0?Object.keys(r).join(", "):"no custom functions provided";return new Ae(`Unknown function '${e}' (${n})`)};var Mp=(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=G(e,{functions:o,partials:a},r,{});return s===void 0?{}:s},G=(e,r,n,o)=>{let a=r.functions||r;if(e.var&&!e.type)return de(e.var,n,o);if(e.type===A.LITERAL)return e.value;if(e.type===A.VARIABLE)return de(e.path,n,o);if(e.type===A.INTERPOLATION)return Vp(e.parts,r,n,o);switch(e.type){case A.FUNCTION:return _i(e,r,n,o);case A.BINARY:return ji(e,r,n,o);case A.UNARY:return Ni(e,r,n,o);case A.CONDITIONAL:return Up(e,r,n,o);case A.LOOP:return Gp(e,r,n,o);case A.OBJECT:return Wp(e,r,n,o);case A.ARRAY:return Kp(e,r,n,o);case A.PARTIAL:return Jp(e,r,n,o);case A.PATH_REFERENCE:return Qp(e,r,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},$i=new Map,qp=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},de=(e,r,n)=>{if(!e)return;if(e in n)return n[e];let o=$i.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=qp(l.trim());o.push(...u)}$i.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},Vp=(e,r,n,o)=>{let a=[];for(let t of e)if(typeof t=="string")a.push(t);else{let s=G(t,r,n,o);a.push(s!=null?String(s):"")}return a.join("")},_i=(e,r,n,o)=>{let a=r.functions||r,t=a[e.name];if(!t)throw Ci(e.name,a);let s=e.args.map(i=>G(i,r,n,o));return t(...s)},nr=(e,r,n,o)=>{if(e.var&&!e.type)return de(e.var,n,o);switch(e.type){case A.VARIABLE:return de(e.path,n,o);case A.LITERAL:return e.value;case A.BINARY:return ji(e,r,n,o);case A.UNARY:return Ni(e,r,n,o);case A.FUNCTION:return _i(e,r,n,o);default:return G(e,r,n,o)}},ji=(e,r,n,o)=>{if(e.op===z.AND||e.op===z.OR){let s=nr(e.left,r,n,o),i=nr(e.right,r,n,o);switch(e.op){case z.AND:return s&&i;case z.OR:return s||i}}let a=G(e.left,r,n,o),t=G(e.right,r,n,o);switch(e.op){case z.EQ:return a==t;case z.NEQ:return a!=t;case z.GT:return a>t;case z.LT:return a<t;case z.GTE:return a>=t;case z.LTE:return a<=t;case z.IN:return Array.isArray(t)?t.includes(a):!1;case z.ADD:if(typeof a!="number"||typeof t!="number")throw new Ae(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof t}`);return a+t;case z.SUBTRACT:if(typeof a!="number"||typeof t!="number")throw new Ae(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof t}`);return a-t;default:throw new Error(`Unknown binary operator: ${e.op}`)}},Ni=(e,r,n,o)=>{let a=e.op===Tr.NOT?nr(e.operand,r,n,o):G(e.operand,r,n,o);if(e.op===Tr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},Fp=(e,r,n,o)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===A.VARIABLE)if(de(a.path,n,o)){let s=e.bodies[0];if(s.type===A.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let u=l.parsedKey?G(l.parsedKey,r,n,o):l.key,c=l.value;if(c.type===A.LITERAL)i[u]=c.value;else if(c.type===A.VARIABLE)i[u]=de(c.path,n,o);else if(c.type===A.INTERPOLATION){let p=[];for(let d of c.parts)if(typeof d=="string")p.push(d);else if(d.type===A.VARIABLE){let f=de(d.path,n,o);p.push(f!=null?String(f):"")}else{let f=G(d,r,n,o);p.push(f!=null?String(f):"")}i[u]=p.join("")}else i[u]=G(c,r,n,o)}return i}}else{let s=e.bodies[1];if(s.type===A.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let u=l.parsedKey?G(l.parsedKey,r,n,o):l.key,c=l.value;if(c.type===A.LITERAL)i[u]=c.value;else if(c.type===A.VARIABLE)i[u]=de(c.path,n,o);else if(c.type===A.INTERPOLATION){let p=[];for(let d of c.parts)if(typeof d=="string")p.push(d);else if(d.type===A.VARIABLE){let f=de(d.path,n,o);p.push(f!=null?String(f):"")}else{let f=G(d,r,n,o);p.push(f!=null?String(f):"")}i[u]=p.join("")}else i[u]=G(c,r,n,o)}return i}}}return null},Up=(e,r,n,o)=>{let a=Fp(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||nr(s,r,n,o))return G(e.bodies[t],r,n,o)}return Di},Bp=(e,r)=>{let n=e.body,o=e.itemVar;if(n.type===A.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===A.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===A.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 d=p.key,f=p.value;if(f.type===A.LITERAL)c[d]=f.value;else if(f.type===A.VARIABLE){let m=f.path;if(m===o)c[d]=u;else if(m.startsWith(o+".")){let y=m.substring(o.length+1);c[d]=u[y]}else return null}else if(f.type===A.INTERPOLATION){let m=[],y=!0;for(let g of f.parts)if(typeof g=="string")m.push(g);else if(g.type===A.VARIABLE){let h=g.path;if(h===o)m.push(u!=null?String(u):"");else if(h.startsWith(o+".")){let I=h.substring(o.length+1),b=u[I];m.push(b!=null?String(b):"")}else{y=!1;break}}else{y=!1;break}if(!y)return null;c[d]=m.join("")}else return null}i.push(c)}}return i}}}return null},Yp=(e,r)=>{let n=e.body,o=e.itemVar,a=Bp(e,r);if(a!==null)return a;if(n.type===A.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===A.LITERAL)t.push({key:l,type:"literal",value:u.value});else if(u.type===A.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===A.INTERPOLATION&&u.parts.length===1){let c=u.parts[0];if(c.type===A.VARIABLE){let p=c.path;if(p===o)t.push({key:l,type:"item_string"});else if(p.startsWith(o+".")){let d=p.substring(o.length+1);if(!d.includes(".")&&!d.includes("["))t.push({key:l,type:"prop_string",prop:d});else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}else{s=!1;break}}if(s){let 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 d=u[p.prop];c[p.key]=d!=null?String(d):""}i[l]=c}return i}}return null},zp=(e,r,n,o,a)=>{let t=[],s=e.body;if(s.type===A.OBJECT&&s.fast!==!1){let i=e.itemVar,l=e.indexVar;for(let u=0;u<a.length;u++){let c=a[u],p={},d={...o,[i]:c,...l&&{[l]:u}};d.__paths__||(d.__paths__=o.__paths__||{});let f=e.iterable.path||"";if(o&&o.__paths__&&f){let m=f.split("."),y=m[0];y in o.__paths__&&(f=o.__paths__[y],m.length>1&&(f+="."+m.slice(1).join(".")))}d.__paths__={...d.__paths__,[i]:`${f}[${u}]`,...l&&{[l]:u}};for(let m of s.properties){let y=m.parsedKey?G(m.parsedKey,r,n,d):m.key,g=m.value;if(g.type===A.LITERAL)p[y]=g.value;else if(g.type===A.VARIABLE){let h=g.path;if(h===i)p[y]=c;else if(h===l)p[y]=u;else if(h.startsWith(i+".")){let I=h.substring(i.length+1);!I.includes(".")&&!I.includes("[")?p[y]=c[I]:p[y]=de(h,n,{...o,[i]:c,...l&&{[l]:u}})}else p[y]=de(h,n,{...o,[i]:c,...l&&{[l]:u}})}else if(g.type===A.INTERPOLATION){let h=[];for(let I of g.parts)if(typeof I=="string")h.push(I);else if(I.type===A.VARIABLE){let b=I.path,x;if(b===i)x=c;else if(b===l)x=u;else if(b.startsWith(i+".")){let v=b.substring(i.length+1);!v.includes(".")&&!v.includes("[")?x=c[v]:x=de(b,n,{...o,[i]:c,...l&&{[l]:u}})}else x=de(b,n,{...o,[i]:c,...l&&{[l]:u}});h.push(x!=null?String(x):"")}else{let b={...o,[i]:c,...l&&{[l]:u}},x=G(I,r,n,b);h.push(x!=null?String(x):"")}p[y]=h.join("")}else{let h={...o,[i]:c,...l&&{[l]:u}};p[y]=G(g,r,n,h)}}t.push(p)}return t}return null},Hp=(e,r,n)=>{let o=e.body;if(o.type===A.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let t=o.properties[0].value;if(t.type===A.CONDITIONAL&&t.conditions.length===1&&t.conditions[0].type===A.VARIABLE&&t.conditions[0].path==="item.visible"){let s=t.bodies[0];if(s.type===A.OBJECT&&s.properties.length===2){let i=s.properties[0],l=s.properties[1];if(i.key==="id"&&i.value.type===A.VARIABLE&&i.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===A.CONDITIONAL){let u=[];for(let c=0;c<r.length;c++){let p=r[c];if(p.visible){let d={id:p.id};p.highlighted?(d.highlight=!0,d.message=`This item is highlighted: ${p.name}`):(d.highlight=!1,d.message=p.name),u.push(d)}}return u}}}}return null},Gp=(e,r,n,o)=>{let a=G(e.iterable,r,n,o);if(!Array.isArray(a)){let u,c=!1;if(e.iterable.type===A.FUNCTION){c=!0;let d=e.iterable.args.map(f=>f.type===A.LITERAL?typeof f.value=="string"?`'${f.value}'`:String(f.value):f.type===A.VARIABLE?f.path:f.type===A.FUNCTION?`${f.name}(...)`:"?").join(", ");u=`${e.iterable.name}(${d})`}else u=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${u}`;throw Oi(p,a,c)}if(!e.indexVar){let u=Hp(e,a,e.itemVar);if(u!==null)return u}if(!e.indexVar){let u=Yp(e,a);if(u!==null)return u}let t=zp(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===A.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(u=>u.type===A.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=G(e.body,r,n,c);if(Array.isArray(p)&&p.length===1&&!l){let d=p[0];s.push(d===void 0?{}:d)}else s.push(p===void 0?{}:p)}return s},Xp=(e,r,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],t=a.parsedKey?G(a.parsedKey,r,n,o):a.key,s=a.value;if(s.type===A.OBJECT&&s.properties.length<=10&&!s.whenCondition){let i={},l={},u=!0;for(let c of s.properties){let p=c.parsedKey?G(c.parsedKey,r,n,o):c.key,d=c.value;if(d.type===A.LITERAL)l[p]=d.value;else if(d.type===A.VARIABLE)l[p]=de(d.path,n,o);else if(d.type===A.INTERPOLATION){let f=[];for(let m of d.parts)if(typeof m=="string")f.push(m);else if(m.type===A.VARIABLE){let y=de(m.path,n,o);f.push(y!=null?String(y):"")}else{u=!1;break}if(!u)break;l[p]=f.join("")}else if(d.type===A.OBJECT&&d.properties.length<=5){let f={};for(let m of d.properties){let y=m.key,g=m.value;if(g.type===A.LITERAL)f[y]=g.value;else if(g.type===A.VARIABLE)f[y]=de(g.path,n,o);else if(g.type===A.INTERPOLATION){let h=[];for(let I of g.parts)if(typeof I=="string")h.push(I);else if(I.type===A.VARIABLE){let b=de(I.path,n,o);h.push(b!=null?String(b):"")}else{u=!1;break}if(!u)break;f[y]=h.join("")}else{u=!1;break}}if(!u)break;l[p]=f}else{u=!1;break}}if(u)return i[t]=l,i}}return null},Wp=(e,r,n,o)=>{let a=r.functions||r;if(e.whenCondition&&!nr(e.whenCondition,a,n,o))return;let t=Xp(e,r,n,o);if(t!==null)return t;if(e.fast){let u={};for(let c of e.properties){let p=c.parsedKey?G(c.parsedKey,r,n,o):c.key,d=c.value;if(d.type===A.LITERAL)u[p]=d.value;else if(d.type===A.VARIABLE)u[p]=de(d.path,n,o);else if(d.type===A.INTERPOLATION){let f=[];for(let m of d.parts)if(typeof m=="string")f.push(m);else if(m.type===A.VARIABLE){let y=de(m.path,n,o);f.push(y!=null?String(y):"")}else{let y=G(m,r,n,o);f.push(y!=null?String(y):"")}u[p]=f.join("")}else u[p]=G(d,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=G(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 G(u.value,r,n,o)}else{let c=u.value;if(c&&c.type===A.OBJECT&&c.properties){let p=c.properties.find(d=>d.key.startsWith("$for "));if(p){let d=G(p.value,r,n,o);d!==void 0&&(s[u.key]=d)}else{let d=G(u.value,r,n,o);d!==void 0&&(s[u.key]=d)}}else{let p=u.parsedKey?G(u.parsedKey,r,n,o):u.key,d=G(u.value,r,n,o);d!==void 0&&(s[p]=d)}}return s},Di={},Kp=(e,r,n,o)=>{let a=[];for(let t of e.items)if(t.type===A.LOOP){let s=G(t,r,n,o);Array.isArray(s)&&t.flatten!==!1?a.push(...s):a.push(s)}else{let s=G(t,r,n,o);s!==Di&&s!==void 0&&a.push(s)}return a},Jp=(e,r,n,o)=>{let{name:a,data:t,whenCondition:s}=e,i=r.partials||{},l=r.functions||r;if(s&&!nr(s,l,n,o))return;if(!i[a])throw new Ae(`Partial '${a}' is not defined`);let u=o._partialStack||[];if(u.includes(a))throw new Ae(`Circular partial reference detected: ${a}`);let c=i[a],p=n,d={...o,_partialStack:[...u,a]};if(o){p={...n};for(let f of Object.keys(o))f.startsWith("_")||(p[f]=o[f])}if(t){let f=G(t,r,n,o);p={...p,...f}}return G(c,r,p,d)},Qp=(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 Ae(`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 Ae(`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 Ae(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return i.length>0&&(l+="."+i.join(".")),l};var Cs=Mp;var Zp=/\$\{([^}]*)\}/g,ed=/#\{([^}]*)\}/g,Li=(e,r={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,t=rd(a,r);return{isFunction:!0,type:A.FUNCTION,name:o,args:t}},rd=(e,r={})=>e.trim()?td(e).map(o=>nd(o.trim(),r)):[],td=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},nd=(e,r={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:A.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:A.LITERAL,value:parseFloat(e)};if(e==="true")return{type:A.LITERAL,value:!0};if(e==="false")return{type:A.LITERAL,value:!1};if(e==="null")return{type:A.LITERAL,value:null};let n=Li(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=Ir(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 ye(o,r)}catch{return{type:A.VARIABLE,path:o}}return{type:A.VARIABLE,path:o}},Mi=/^\w+\(.*\)$/,sd=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,od=e=>{if(!(!e||e.trim()===""||Mi.test(e))&&sd.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}"`)},Ti=e=>{let r=e.trim();if(Mi.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:A.PATH_REFERENCE,path:r}},nt=(e,r={})=>{let n=e.trim();od(n);let o=Li(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:A.VARIABLE,path:n}},$s=(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(Zp)],t=[...n.matchAll(ed)],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:A.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"?nt(u[1],r):Ti(u[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:A.LITERAL,value:n};throw p}}let i=[],l=0;for(let{match:u,type:c}of s){let[p,d]=u,f=u.index;if(f>l){let m=n.substring(l,f);for(let y=0;y<o.length;y++)m=m.replace(`__ESCAPED_${y}__`,o[y]);m&&i.push(m)}try{let m;c==="variable"?m=nt(d.trim(),r):m=Ti(d.trim()),i.push(m)}catch(m){if(m.message==="Invalid array index syntax")i.push(p);else throw m}l=f+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:A.INTERPOLATION,parts:i}};var Ns=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Fi=e=>Object.keys(e),we=e=>e.join("."),sr=(e,r,n)=>{let o=Fi(e).filter(a=>!r.has(a));if(o.length>0)throw new j(`Unexpected key '${o[0]}' in condition JSON at '${we(n)}'`)},or=(e,r)=>typeof e=="string"?$s(e,r):typeof e=="object"&&e!==null?Array.isArray(e)?ad(e,r):ld(e,r):{type:A.LITERAL,value:e},id=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}},ad=(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=id(t),u=Object.keys(l);if(u.length===1&&/^\$for(?::\w+)?\s/.test(u[0])){let c=Vi(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=Vi(i[0],t[i[0]],r);n.push(l),o=!0;continue}}let s=or(t,r);n.push(s),(s.type===A.FUNCTION||s.type===A.CONDITIONAL||s.type===A.LOOP||s.type===A.PARTIAL||s.type===A.OBJECT&&!s.fast||s.type===A.ARRAY&&!s.fast)&&(o=!0)}return{type:A.ARRAY,items:n,fast:!o}},ld=(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 I of l)if(h===I||h.startsWith(I+" ")||h.startsWith(I+"#")){u.push(I);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,...d}=e,f={},m=!1;for(let[h,I]of Object.entries(d)){let b=h;(h.startsWith("\\$")||h.startsWith("$$"))&&(b=h.slice(1)),f[b]=I,m=!0}let y=null;if(m&&(y=or(f,r),y.type===A.OBJECT)){let h=!1;for(let I of y.properties)if(I.value.type===A.VARIABLE||I.value.type===A.INTERPOLATION||I.value.type===A.FUNCTION||I.value.type===A.CONDITIONAL||I.value.type===A.OBJECT&&!I.value.fast||I.value.type===A.ARRAY&&!I.value.fast){h=!0;break}h&&(y.fast=!1)}let g={type:A.PARTIAL,name:c,data:y};return p!==void 0&&(g.whenCondition=qi(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=qi(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=cd(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=or(u,r);(c.type===A.FUNCTION||c.type===A.CONDITIONAL||c.type===A.PARTIAL||c.type===A.OBJECT&&!c.fast||c.type===A.ARRAY&&!c.fast)&&(o=!0);let p=$s(l,r),d={key:l,value:c};(p.type!==A.LITERAL||p.value!==l)&&(d.parsedKey=p),n.push(d),s++}}}let i={type:A.OBJECT,properties:n,fast:!o};return a&&(i.whenCondition=a),i},cd=(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());Os(u);let c=ye(u,n);for(o.push(c),a.push(or(i,n)),t++;t<e.length;){let[p,d]=e[t],f=!1,m;if(l?p.startsWith(`$elif#${l} `)?(m=p.substring(`$elif#${l} `.length),m.endsWith(":")&&(m=m.slice(0,-1).trim()),f=!0):(p===`$else#${l}`||p===`$else#${l}:`)&&(f=!0,m=null):p.startsWith("$elif ")?(m=p.substring(6),m.endsWith(":")&&(m=m.slice(0,-1).trim()),f=!0):(p==="$else"||p==="$else:")&&(f=!0,m=null),f){if(m===null)o.push(null);else{Os(m);let y=ye(m,n);o.push(y)}if(a.push(or(d,n)),t++,m===null)break}else break}return{node:{type:A.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:t}},_s={eq:z.EQ,neq:z.NEQ,gt:z.GT,gte:z.GTE,lt:z.LT,lte:z.LTE,in:z.IN,add:z.ADD,sub:z.SUBTRACT},js={all:z.AND,any:z.OR},ud=new Set(["var","literal","call","not",...Object.keys(_s),...Object.keys(js)]),pd=(e,r,n)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${we(n)}' requires an array`);if(e.length!==2)throw new j(`Condition JSON operator '${r}' at '${we(n)}' requires exactly 2 operands`);return e},dd=(e,r,n,o,a)=>{if(!Array.isArray(e))throw new j(`Condition JSON operator '${r}' at '${we(a)}' requires an array`);if(e.length===0)throw new j(`Condition JSON operator '${r}' at '${we(a)}' requires at least 1 condition`);return e.map((s,i)=>Pe(s,o,[...a,i])).reduce((s,i)=>({type:A.BINARY,op:n,left:s,right:i}))},fd=(e,r,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],sr(e,new Set(["call","args"]),n);else if(Ns(e.call))o=e.call.name,a=e.call.args??[],sr(e,new Set(["call"]),n),sr(e.call,new Set(["name","args"]),[...n,"call"]);else throw new j(`Condition JSON call at '${we(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new j(`Condition JSON call at '${we(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new j(`Invalid condition JSON function name '${o}' at '${we(n)}'`);if(!Array.isArray(a))throw new j(`Condition JSON call '${o}' at '${we(n)}' requires args to be an array`);return{type:A.FUNCTION,name:o,args:a.map((t,s)=>Pe(t,r,[...n,"args",s]))}},Pe=(e,r={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:A.LITERAL,value:e};if(Array.isArray(e))throw new j(`Condition JSON array at '${we(n)}' must be wrapped in an operator or { literal: [...] }`);if(!Ns(e))throw new j(`Invalid condition JSON value at '${we(n)}'`);let o=Fi(e);if(o.length===0)throw new j(`Condition JSON object at '${we(n)}' must contain an operator`);let a=o.filter(s=>ud.has(s));if(a.length===0)throw new j(`Unknown condition JSON operator '${o[0]}' at '${we(n)}'`);if(a.length>1)throw new j(`Condition JSON at '${we(n)}' must contain exactly one operator`);let t=a.includes("call")?"call":a[0];if(t==="var"){if(sr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new j(`Condition JSON var at '${we(n)}' requires a non-empty path`);return{type:A.VARIABLE,path:e.var}}if(t==="literal")return sr(e,new Set(["literal"]),n),{type:A.LITERAL,value:e.literal};if(t==="call")return fd(e,r,n);if(t==="not")return sr(e,new Set(["not"]),n),{type:A.UNARY,op:Tr.NOT,operand:Pe(e.not,r,[...n,"not"])};if(t in js)return sr(e,new Set([t]),n),dd(e[t],t,js[t],r,[...n,t]);if(t in _s){sr(e,new Set([t]),n);let s=pd(e[t],t,[...n,t]);return{type:A.BINARY,op:_s[t],left:Pe(s[0],r,[...n,t,0]),right:Pe(s[1],r,[...n,t,1])}}throw new j(`Unknown condition JSON operator '${t}' at '${we(n)}'`)},qi=(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 ye(e,r)}return Ns(e)||Array.isArray(e)?Pe(e,r):{type:A.LITERAL,value:e}},ye=(e,r={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let u=e.slice(1,-1),c=0,p=!0;for(let d=0;d<u.length;d++)if(u[d]==="("?c++:u[d]===")"&&c--,c<0){p=!1;break}if(p&&c===0)return ye(u,r)}let n=Ir(e,"||");if(n!==-1)return{type:A.BINARY,op:z.OR,left:ye(e.substring(0,n).trim(),r),right:ye(e.substring(n+2).trim(),r)};let o=Ir(e,"&&");if(o!==-1)return{type:A.BINARY,op:z.AND,left:ye(e.substring(0,o).trim(),r),right:ye(e.substring(o+2).trim(),r)};let a=[{op:">=",type:z.GTE},{op:"<=",type:z.LTE},{op:"==",type:z.EQ},{op:"!=",type:z.NEQ},{op:">",type:z.GT},{op:"<",type:z.LT},{op:" in ",type:z.IN}];for(let{op:u,type:c}of a){let p=Ir(e,u);if(p!==-1)return{type:A.BINARY,op:c,left:ye(e.substring(0,p).trim(),r),right:ye(e.substring(p+u.length).trim(),r)}}let t=-1,s=null,i=[{op:" + ",type:z.ADD},{op:" - ",type:z.SUBTRACT}];for(let{op:u,type:c}of i){let p=0;for(;p<e.length;){let d=Ir(e.substring(p),u);if(d===-1)break;let f=p+d;f>t&&(t=f,s={op:u,type:c}),p=f+u.length}}if(t!==-1&&s)return{type:A.BINARY,op:s.type,left:ye(e.substring(0,t).trim(),r),right:ye(e.substring(t+s.op.length).trim(),r)};let l=[" * "," / "," % "];for(let u of l)if(Ir(e,u)!==-1)throw new j(`Arithmetic operations are not allowed in conditionals: "${u}"`);return e.startsWith("!")?{type:A.UNARY,op:Tr.NOT,operand:ye(e.substring(1).trim(),r)}:Ui(e,r)},Ir=(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},md=e=>{if(e=e.trim(),e==="true")return{type:A.LITERAL,value:!0};if(e==="false")return{type:A.LITERAL,value:!1};if(e==="null")return{type:A.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:A.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:A.LITERAL,value:""};if(e==="{}")return{type:A.LITERAL,value:{}};if(e==="[]")return{type:A.LITERAL,value:[]};let r=Number(e);return!isNaN(r)&&isFinite(r)?{type:A.LITERAL,value:r}:{type:A.VARIABLE,path:e}},Ui=(e,r)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return nt(n,r);let a=md(n);if(a.type===A.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:A.VARIABLE,path:n};try{return nt(n,r)}catch(t){if(t.message&&t.message.includes("not supported"))return a;throw t}},yd=(e,r=!1)=>{let n=r?"$each":"$for";try{Ri(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}},Vi=(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();yd(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,d=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],d=g[1]}else p=u;let f=["this","undefined","null","true","false"];if(f.includes(p))throw new j(`Reserved variable name: ${p}`);if(d&&f.includes(d))throw new j(`Reserved variable name: ${d}`);let m=Ui(c,n),y=or(r,n);return{type:A.LOOP,itemVar:p,indexVar:d,iterable:m,body:y,flatten:s!=="nested"}};var hd=(e,r={})=>{let{functions:n={}}=r;return or(e,n)},Gt=hd;var st={};Rp(st,{now:()=>gd});var gd=()=>Date.now();var bd=(e,r,n={})=>{let{functions:o={},partials:a={}}=n,t={...st,...o},s=Gt(e,{functions:t}),i={};for(let[l,u]of Object.entries(a))i[l]=Gt(u,{functions:t});return Cs(s,r,{functions:t,partials:i})},wr=bd;var Id=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",wd=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,vd=(e,r)=>{if(Id(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new j("Empty condition expression");return ye(e,r)}return Pe(e,r)},Ad=(e,r={},n={})=>{let o=wd(n),a={...st,...o},t=vd(e,a);return!!nr(t,{functions:a,partials:{}},r,{})},Ds=Ad;var Ys=Symbol("runStoreTransaction"),qs="__routeEngineConditionComparison",Xt=(e,r)=>typeof e=="number"&&typeof r=="number"&&Number.isFinite(e)&&Number.isFinite(r)||typeof e=="string"&&typeof r=="string",ir=Object.freeze({eq:(e,r)=>e===r,neq:(e,r)=>e!==r,gt:(e,r)=>Xt(e,r)&&e>r,gte:(e,r)=>Xt(e,r)&&e>=r,lt:(e,r)=>Xt(e,r)&&e<r,lte:(e,r)=>Xt(e,r)&&e<=r}),Wi=Object.freeze(Object.fromEntries(Object.keys(ir).map(e=>[e,`${qs}${e}`]))),kd=Object.freeze(Object.fromEntries(Object.entries(Wi).map(([e,r])=>[r,ir[e]]))),Bi=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Pd=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},Wt=e=>{if(Array.isArray(e))return e.map(Wt);if(e===null||typeof e!="object"||Bi(e,"literal")||Bi(e,"var"))return e;if(Pd(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=Wi[o];if(t)return{call:t,args:a.map(Wt)}}return Object.fromEntries(n.map(([o,a])=>[o,Wt(a)]))},it=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Pe(e),Ds(Wt(e),r,{functions:kd})},xd=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Ki=(e,r,n={})=>{let o=structuredClone(e),a={},t={},{transformSelectorFirstArgument:s=u=>u,transformActionFirstArgument:i=u=>u}=n;for(let[u,c]of Object.entries(r))u!=="createInitialState"&&(u.startsWith("select")?a[u]=(...p)=>c(s(o),...p):t[u]=(...p)=>{let d;return o=Rs(o,m=>{let y=c(i(m),...p);d=y!==void 0&&!me(y)?y:void 0}),d});let l=u=>{if(typeof u!="function")throw new Error("Store transaction requires a callback");let c=o;try{return u()}catch(p){throw o=c,p}};return{...a,...t,[Ys]:l}},Zt=(e,r)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return Rs(o,t=>{a.forEach(s=>{r.forEach(i=>{i(t,s)})})})};var Ed=(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{}}},B=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Vs=(e,r,n)=>{Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0})},fe=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Sd=new Set(["pageSize","groups"]),Rd=new Set(["id","variants"]),Od=new Set(["id","imageId"]),Cd=new Set(["pageSize","tracks"]),$d=new Set(["id","soundId","title","artist","album","description","coverImageId"]),_d=new Set(["pageSize","replays"]),jd=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),vr=(e,r,n)=>{Object.keys(e).forEach(o=>{if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)})},Lr=(e,r)=>{if(typeof e!="string"||e.length===0)throw new Error(`${r} must be a non-empty string`)},at=(e={})=>{let r=e?.resources?.imageGallery;if(r===void 0)return;if(!fe(r))throw new Error("resources.imageGallery must be an object");if(vr(r,Sd,"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(!fe(a))throw new Error(`${t} must be an object`);if(vr(a,Rd,t),Lr(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(!fe(l))throw new Error(`${u} must be an object`);if(vr(l,Od,u),Lr(l.id,`${u}.id`),Lr(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),!B(e?.resources?.images,l.imageId))throw new Error(`Image gallery variant "${a.id}.${l.id}" references unknown image "${l.imageId}"`)}}},lt=(e={})=>{let r=e?.resources?.musicRoom;if(r===void 0)return;if(!fe(r))throw new Error("resources.musicRoom must be an object");if(vr(r,Cd,"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(!fe(a))throw new Error(`${t} must be an object`);vr(a,$d,t);for(let l of["id","soundId","title"])Lr(a[l],`${t}.${l}`);for(let l of["artist","album","description","coverImageId"])a[l]!==void 0&&Lr(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(!B(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!fe(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&&!B(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},Nd=(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}"`)}},ct=(e={})=>{let r=e?.resources?.sceneReplay;if(r===void 0)return;if(!fe(r))throw new Error("resources.sceneReplay must be an object");if(vr(r,_d,"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(!fe(t))throw new Error(`${s} must be an object`);vr(t,jd,s);for(let c of["sceneId","title","thumbnailImageId"])Lr(t[c],`${s}.${c}`);if(o.has(t.sceneId))throw new Error(`Duplicate scene replay sceneId "${t.sceneId}"`);if(o.add(t.sceneId),!B(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(!fe(t.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[c,p]of Object.entries(t.initialVariables)){let d=e?.resources?.variables?.[c];if(!d)throw new Error(`Scene replay scene "${t.sceneId}" initialVariables references unknown variable "${c}"`);if(Te(d))throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize computed variable "${c}"`);if(d.readonly===!0)throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize readonly variable "${c}"`);if(d.scope!=="context")throw new Error(`Scene replay scene "${t.sceneId}" can only initialize context variable "${c}"`);Nd(c,d,p)}}}},Ji=e=>{let r=me(e)?tr(e):e;return structuredClone(r)},Dd=({characterId:e,resourceCharacter:r,variables:n={}}={})=>{if(!B(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},en=({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=Dd({characterId:e,resourceCharacter:t,variables:a});return s!==void 0?s:t?.name||""},Te=e=>B(e,"computed"),Mr=(e={},r={})=>Object.fromEntries(Object.entries(e??{}).filter(([n])=>!Te(r[n]))),De=(e,r)=>new Error(`${r} has invalid path: ${JSON.stringify(e)}`),Td=(e,r,n)=>{if(e[0]==='"')try{return JSON.parse(e)}catch{throw De(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 De(r,n);a+=s;continue}if(t+=1,t>=e.length-1)throw De(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 De(r,n);a+=String.fromCharCode(Number.parseInt(u,16)),t+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
2
- `,r:"\r",t:" ",b:"\b",f:"\f"};if(!B(l,i))throw De(r,n);a+=l[i]}return a},Qi=(e,r="Computed expression var")=>{if(typeof e!="string"||e.length===0||e.trim()!==e)throw De(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 De(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 De(e,r);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw De(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 De(e,r);o+=1,n.push(Td(p,e,r));return}o+=1}if(u||o>=e.length)throw De(e,r)};for(a();o<e.length;){if(e[o]==="."){o+=1,a();continue}if(e[o]==="["){t();continue}throw De(e,r)}return n},Ts=(e,r)=>{let n=e;for(let o of r){if(n==null||!B(n,o))return;n=n[o]}return n},Zi=(e,r={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=Qi(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 Ts(s,t)}return o==="runtime"?Ts(r.runtime,n.slice(1)):Ts(r,n)},ea=(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)`)},Fs=(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`)},Ld=(e,r)=>{if(typeof r!="number"||!Number.isFinite(r))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Me=(e,r,n,o)=>(ea(e,r,o),r.map(a=>Qt(a,n))),Ne=(e,r,n,o)=>{let a=Me(e,r,n,o);return a.forEach(t=>Ld(e,t)),a},Md=(e,r,n)=>{switch(e){case"var":return Zi(r,n);case"add":{let[o,a]=Ne(e,r,n,2);return o+a}case"sub":{let[o,a]=Ne(e,r,n,2);return o-a}case"mul":{let[o,a]=Ne(e,r,n,2);return o*a}case"div":{let[o,a]=Ne(e,r,n,2);return o/a}case"mod":{let[o,a]=Ne(e,r,n,2);return o%a}case"neg":{let[o]=Ne(e,r,n,1);return-o}case"round":{let[o]=Ne(e,r,n,1);return Math.round(o)}case"floor":{let[o]=Ne(e,r,n,1);return Math.floor(o)}case"ceil":{let[o]=Ne(e,r,n,1);return Math.ceil(o)}case"min":{let[o,a]=Ne(e,r,n,2);return Math.min(o,a)}case"max":{let[o,a]=Ne(e,r,n,2);return Math.max(o,a)}case"clamp":{let[o,a,t]=Ne(e,r,n,3);return Math.min(t,Math.max(a,o))}case"eq":{let[o,a]=Me(e,r,n,2);return ir.eq(o,a)}case"neq":{let[o,a]=Me(e,r,n,2);return ir.neq(o,a)}case"gt":{let[o,a]=Me(e,r,n,2);return ir.gt(o,a)}case"gte":{let[o,a]=Me(e,r,n,2);return ir.gte(o,a)}case"lt":{let[o,a]=Me(e,r,n,2);return ir.lt(o,a)}case"lte":{let[o,a]=Me(e,r,n,2);return ir.lte(o,a)}case"in":{let[o,a]=Me(e,r,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return Fs(e,r),r.every(o=>!!Qt(o,n));case"or":case"any":return Fs(e,r),r.some(o=>!!Qt(o,n));case"not":{let[o]=Me(e,r,n,1);return!o}case"length":{let[o]=Me(e,r,n,1);return typeof o=="string"||Array.isArray(o)?o.length:fe(o)?Object.keys(o).length:0}case"includes":{let[o,a]=Me(e,r,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return Ji(r);default:throw new Error(`Unknown computed expression operator: ${e}`)}},Qt=(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 Md(o,a,r)},Us=(e,r)=>{if(e===null||typeof e!="object"||B(e,"literal"))return e;if(B(e,"var"))return{literal:Zi(e.var,r)};if(B(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=>Us(a,r)):Us(o,r)]))},qd=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Pe(e),it(Us(e,r))},ra=(e,r)=>{if(!fe(e))throw new Error(`${r} must be an object`);let n=B(e,"expr"),o=B(e,"value");if(n===o)throw new Error(`${r} must contain exactly one of expr or value`)},Ls=(e,r,n)=>(ra(e,r),B(e,"value")?Ji(e.value):Qt(e.expr,n)),Vd=(e,r={},n="unknown")=>{if(!fe(e))throw new Error(`Computed variable "${n}" computed must be an object`);let o=B(e,"expr"),a=B(e,"value");if(B(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(!fe(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(!fe(i))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!B(i,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(qd(i.when,r))return Ls(i,`Computed variable "${n}" branch ${s}`,r)}return Ls(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 Ls(e,`Computed variable "${n}"`,r)},ta=(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}`)}},Fd=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}),Ud=new Set(["and","or","all","any"]),Bd=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),Yd=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),zd=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),Hd=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),na=new WeakMap,Yi=e=>e===null?"null":Array.isArray(e)?"object":typeof e,Kt=(e,r,n)=>{for(let o of Object.keys(e))if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},Gd=(e,r,n,o)=>{if(n!==void 0&&n!==r)throw new Error(`Computed variable "${e}" ${o} expected type ${r}, got ${n}`)},sa=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{let t=`Computed variable "${r}" ${a} var`,[s,i,...l]=Qi(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(!B(n,i))throw new Error(`Computed variable "${r}" ${a} references unknown variable "${i}"`);let u=n[i];return Te(u)&&o.add(i),l.length===0?u?.type:void 0},oa=(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 Yi(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 sa(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 Yi(i)}let l=Fd[s];if(l===void 0&&!Ud.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?Fs(s,i):ea(s,i,l);let u=i.map((c,p)=>oa(c,{variableId:r,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(Yd.has(s)&&u.forEach(c=>{if(c!==void 0&&c!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),Bd.has(s))return"number";if(zd.has(s))return"boolean"},Xd=(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{Pe(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"||B(s,"literal"))return;if(B(s,"var")){sa(s.var,{variableId:r,variableConfigs:n,dependencies:o,path:i});return}if(B(s,"call"))throw new Error(`Computed variable "${r}" ${i} function calls are not supported`);if(B(s,"not")){t(s.not,`${i}.not`);return}let l=Object.keys(s).find(u=>Hd.has(u));s[l].forEach((u,c)=>{t(u,`${i}.${l}[${c}]`)})};t(e,a)},Ms=(e,{variableId:r,variableConfig:n,variableConfigs:o,dependencies:a,path:t,allowedKeys:s=new Set(["expr","value"])})=>{if(ra(e,`Computed variable "${r}" ${t}`),Kt(e,s,t),B(e,"value")){ta(r,n.type,e.value);return}let i=oa(e.expr,{variableId:r,variableConfigs:o,dependencies:a,path:`${t}.expr`});Gd(r,n.type,i,`${t}.expr`)},Wd=(e,r,n)=>{let o=r.computed;if(!fe(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,t=B(o,"expr"),s=B(o,"value");if(B(o,"branches")){if(Kt(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(!fe(o.default))throw new Error(`Computed variable "${e}" requires default`);return o.branches.forEach((l,u)=>{if(!fe(l))throw new Error(`Computed variable "${e}" branch ${u} must be an object`);if(Kt(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${u}`),!B(l,"when"))throw new Error(`Computed variable "${e}" branch ${u} requires when`);Xd(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${u}].when`}),Ms(l,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:`computed.branches[${u}]`,allowedKeys:new Set(["when","expr","value"])})}),Ms(o.default,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(Kt(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 Ms(o,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed"}),a},Ar=(e={})=>{if(!fe(e))throw new Error("Variable configs must be an object");if(B(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(B(e,""))throw new Error("Variable ids must not be empty");let r=new Map;Object.entries(e).forEach(([t,s])=>{if(Te(s)){if(!fe(s))throw new Error(`Computed variable "${t}" must be an object`);if(!B(s,"type"))throw new Error(`Computed variable "${t}" requires type`);if(!B(s,"scope"))throw new Error(`Computed variable "${t}" requires scope`);if(B(s,"default"))throw new Error(`Computed variable "${t}" must not declare a top-level default`);if(pt(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,Wd(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 d=[...i.slice(p).map(({variableId:f})=>f),c].join(" -> ");throw new Error(`Computed variable cycle detected: ${d}`)}l.set(c,i.length),i.push({variableId:c,dependencies:[...r.get(c)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return na.set(e,a),a},ut=({variables:e={},runtime:r={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=na.get(n)??Ar(n),t=Mr(e,n),s=Object.entries(n).filter(([,g])=>Te(g)).map(([g])=>g),i=Object.create(null),l=[],u=new Map(a.map((g,h)=>[g,h])),c=-1,p=!1,d=g=>{if(B(i,g))return i[g];let h=n[g];if(!Te(h))return B(t,g)?t[g]:void 0;let I=l.indexOf(g);if(I>=0){let b=[...l.slice(I),g].join(" -> ");throw new Error(`Computed variable cycle detected: ${b}`)}l.push(g);try{let b=Vd(h.computed,y,g);return ta(g,h.type,b),Vs(i,g,b),b}finally{l.pop()}},f=g=>{if(B(i,g))return i[g];let h=n[g];if(!Te(h))return B(t,g)?t[g]:void 0;let I=u.get(g);if(o&&!p&&I!==void 0&&I>c){p=!0;try{for(let b=c+1;b<=I;b+=1)d(a[b]),c=b}finally{p=!1}return i[g]}return d(g)},m=new Proxy({},{get:(g,h)=>{if(typeof h=="string")return f(h)},has:(g,h)=>typeof h=="string"&&(B(t,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(t),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!B(t,h)&&!s.includes(h)))return{enumerable:!0,configurable:!0}}}),y={variables:m,runtime:r,resolveVariable:f};return o?(s.forEach(g=>{f(g)}),{...t,...i}):m},Kd=({variables:e={},runtime:r={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return Ar(a),ut({variables:e,runtime:r,variableConfigs:a,eager:!0})},rn=e=>{let r={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if(Te(a))return;let t=Ed(a,o);a.scope==="context"?Vs(r,o,t):Vs(n,o,t)}),{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}},pt=(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(", ")}`)},tn=(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(", ")}`)},Jd=2,zi=12,ia=(e=Jd)=>{if(!Number.isInteger(e)||e<0||e>zi)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${zi}.`);return e},Qd=(e,r)=>{let n=10**r;return Math.round((e+Number.EPSILON)*n)/n},Jt=e=>typeof e=="number"&&Number.isFinite(e),zs=(e,r,n,o,a={})=>{if(e==="number"){if(r==="set"&&!Jt(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(r==="multiply"&&!Jt(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(r==="divide"&&!Jt(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}".`);ia(a.roundTo)}}},nn=(e,r,n,o={})=>{let a=(s,i,l)=>{let u=s??i;if(!Jt(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 Qd(a(e,0,"current value")/t(n),ia(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 Hs=(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:xd[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])},Zd=(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},ot=e=>!!e?.transformId&&Array.isArray(e.items)&&e.items.length>0,ef=(e,r)=>{let n=e?.character?.sprite,o=r?.character?.sprite,a=ot(n)?n:void 0,t=ot(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},Hi=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},Gi=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},Xi=(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,rf=(e,r)=>{let n={},o=Xi(Hi(e),Hi(r)),a=Xi(Gi(e),Gi(r));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},Gs=(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=rf(e.background,r.background);t&&(n.background=t),a("screen"),a("bgm"),a("voice");let s=Zd(e.dialogue,r.dialogue);s&&(n.dialogue=s);let i=ef(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},Xs=(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},tf=(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},nf=(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=tf(r,n);if(o===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "_event".`);return o},sf={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"])},of=(e,r)=>{let n=e[e.length-1];return n?sf[n]?.has(r)===!0:!1},Bs=(e,r,n=[])=>Array.isArray(e)?e.map(o=>Bs(o,r,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,of(n,o)?a:Bs(a,r,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?nf(e,r._event):wr(e,r):e,Ws=(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 Bs(e,r)};var re=e=>structuredClone(me(e)?tr(e):e),W=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),aa=e=>e?.animations?.playback?.continuity==="persistent",X=(e,r)=>W(e??{},r)&&e[r]!==void 0,dt=(e,r)=>e?!r(e)&&e.animations?{animationsOnly:!0,state:{animations:re(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},af=e=>X(e,"opacity")||X(e,"blur"),fa=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],ma=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Ks=["animationName","animationSpeed","loop"],lf=e=>fa.some(r=>X(e,r)),ya=e=>e?.text&&X(e.text,"content")&&X(e.text,"textStyleId"),ha=e=>X(e,"text"),cf=(e,r)=>e.resourceId?!0:ya(e)?!r?.text:!1,uf=(e,r)=>{let n={...re(e),...r};return r.text&&e.text&&(n.text={...re(e.text),...re(r.text)}),n},pf=(e,r)=>{if(ha(e)){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!ya(e)&&!r?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`)}},la=e=>ma.some(r=>X(e,r)),ca=e=>Ks.some(r=>X(e,r)),df=(e,r,{hasAuthoredTransformId:n=!1}={})=>{if(!r)return e;for(let o of ma)!n&&!X(e,o)&&X(r,o)&&(e[o]=r[o]),W(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)},ff=(e,r)=>{if(!r)return e;for(let n of fa)!X(e,n)&&X(r,n)&&(e[n]=r[n]),W(e,n)&&e[n]===void 0&&delete e[n];return e},mf=(e,r)=>(r&&(!X(e,"opacity")&&X(r,"opacity")&&(e.opacity=r.opacity),!X(e,"blur")&&X(r,"blur")&&(e.blur=re(r.blur)),W(e,"opacity")&&e.opacity===void 0&&delete e.opacity,W(e,"blur")&&e.blur===void 0&&delete e.blur),e),ba=(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=af(s),p=lf(s),d=o(s),f=W(s,"animations"),m=re(s);return!u&&(c||p||d)&&l&&(m=a?a(l,m):{...re(l),...m},f||delete m.animations),mf(ff(m,l),l)}).filter(s=>r(s)||s.animations);return{hasValidItems:t.length>0,processedItems:t}},yf=e=>{if(e){if(e.character&&W(e.character,"name"))return e.character.name;if(W(e,"characterName"))return e.characterName}},Ia=e=>!!e?.character&&W(e.character,"sprite"),hf=e=>{let r={},n=!1,o=yf(e);return o!==void 0&&(r.name=o,n=!0),Ia(e)&&(r.sprite=re(e.character.sprite),n=!0),n?r:void 0},ua=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},pa=({dialogueState:e,dialogueAction:r,persistCharacter:n})=>W(r,"persistSprite")?r.persistSprite===!0:W(e,"persistSprite")?e.persistSprite===!0:n&&!W(r,"characterId"),da=({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 W(u,"name")?i.name=u.name:(o&&!n||c)&&W(l,"name")&&(i.name=re(l.name)),W(u,"sprite")?i.sprite=re(u.sprite):(a||p)&&W(l,"sprite")&&(i.sprite=re(l.sprite)),Object.keys(i).length>0?i:void 0},gf=({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=>re(a)):delete e.initialRevealedContent,e.content=[...o,...r]},bf=()=>({}),If=(e,r)=>{if(!r.screen)return;let n=X(r.screen,"opacity"),o=X(r.screen,"blur"),a=W(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=re(r.screen.blur):X(t,"blur")&&(s.blur=re(t.blur)),W(s,"opacity")&&s.opacity===void 0&&delete s.opacity,W(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},wf=(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=la(r.background),l=ca(r.background),{animationsOnly:u,state:c}=dt(r.background,f=>X(f,"resourceId")||X(f,"colorId")||X(f,"opacity")||X(f,"blur")||X(f,"transformId")||la(f)||ca(f));if(u){e.background=e.background?{...re(e.background),...c}:c;return}if(!n&&!o&&!a&&!t&&!s&&!i&&!l){delete e.background;return}let p=e.background,d=re(r.background);if(!n&&p?.resourceId){d.resourceId=p.resourceId,!W(d,"transformId")&&p.transformId&&(d.transformId=p.transformId);for(let f of Ks)!X(d,f)&&X(p,f)&&(d[f]=p[f])}df(d,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(d.colorId=p.colorId),!a&&X(p,"opacity")&&(d.opacity=p.opacity),!t&&X(p,"blur")&&(d.blur=re(p.blur)),W(d,"resourceId")&&d.resourceId===void 0&&delete d.resourceId,W(d,"colorId")&&d.colorId===void 0&&delete d.colorId,W(d,"animations")&&d.animations===void 0&&delete d.animations,W(d,"transformId")&&d.transformId===void 0&&delete d.transformId,W(d,"opacity")&&d.opacity===void 0&&delete d.opacity,W(d,"blur")&&d.blur===void 0&&delete d.blur;for(let f of Ks)W(d,f)&&d[f]===void 0&&delete d[f];if(!d.resourceId&&!d.colorId){delete e.background;return}p?.resourceId===d.resourceId&&p?.transformId===d.transformId&&!W(d,"animations")&&aa(p)&&(d.animations=re(p.animations)),e.background=d}else e.background?.animations&&!aa(e.background)&&(e.background.animations={})},vf=(e,r)=>{if(!r.dialogue){if(e.dialogue&&(ua(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=pa({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:c});c||delete e.dialogue.characterId,e.dialogue.character=da({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}=dt(r.dialogue.ui,d=>!!d.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&&gf({dialogueState:e.dialogue,content:r.dialogue.content,append:o}),W(r.dialogue,"textSpeed")?e.dialogue.textSpeed=r.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=W(r.dialogue,"persistCharacter")?r.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let t=pa({dialogueState:e.dialogue,dialogueAction:r.dialogue,persistCharacter:a});W(r.dialogue,"persistSprite")&&(e.dialogue.persistSprite=t);let s=W(r.dialogue,"characterId"),i=hf(r.dialogue),l=Ia(r.dialogue);s?r.dialogue.characterId?e.dialogue.characterId=r.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let u=da({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:t,hasExplicitPersistSprite:W(r.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(u?e.dialogue.character=u:delete e.dialogue.character,l||ua(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=re(e.dialogue.character)),e.dialogue.lines.push(c)}},Af=(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=re(r.sfx)}else e.sfx&&delete e.sfx},kf=(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=re(r.bgm),r.bgm.resourceId&&(e.bgm.loop=r.bgm.loop??!0)}},Pf=(e,r)=>{if(r.visual){let n=e.visual?.items||[];r.visual.items?.forEach((t,s)=>{pf(t,ga(n,t,s))});let{hasValidItems:o,processedItems:a}=ba(r.visual.items,cf,n,{hasPatchFn:ha,mergeItemFn:uf});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))},xf=(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}=ba(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},Ef=(e,r)=>{r.animation?e.animation=r.animation:e.animation&&delete e.animation},Sf=(e,r)=>{if(r.layout){let{animationsOnly:n,state:o}=dt(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},Rf=(e,r)=>{if(r.choice){let{animationsOnly:n,state:o}=dt(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},Of=(e,r)=>{if(r.form){let{animationsOnly:n,state:o}=dt(r.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!r.form.resourceId){delete e.form;return}e.form=re(r.form)}else e.form&&delete e.form},Cf=(e,r)=>{if(r.control){if(!r.control.resourceId){delete e.control;return}e.control=r.control}},$f=(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=re(r.voice)}else e.voice&&delete e.voice},_f=(e,r)=>{r.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},kr=e=>Zt(bf,[_f,If,wf,Af,kf,Pf,vf,xf,Ef,Sf,Rf,Of,Cf,$f])(e);var qr=(e,r)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=wr(e,r);return n&&typeof n=="object"?e:n};var jf=Object.freeze({dialogueTextSpeed:{source:"global.dialogueTextSpeed"},autoForwardDelay:{source:"global.autoForwardDelay"},autoForwardSpeed:{source:"global.autoForwardSpeed"},skipUnseenText:{source:"global.skipUnseenText"},skipTransitionsAndAnimations:{source:"global.skipTransitionsAndAnimations"},soundVolume:{source:"global.soundVolume"},musicVolume:{source:"global.musicVolume"},muteAll:{source:"global.muteAll"},localizationPackageId:{source:"global.localizationPackageId"},saveLoadPagination:{source:"context.runtime.saveLoadPagination"},menuPage:{source:"context.runtime.menuPage"},menuEntryPoint:{source:"context.runtime.menuEntryPoint"},autoMode:{source:"global.autoMode"},skipMode:{source:"global.skipMode"},dialogueUIHidden:{source:"global.dialogueUIHidden"},isLineCompleted:{source:"global.isLineCompleted"}}),ar=Object.freeze({dialogueTextSpeed:50,autoForwardDelay:1e3,autoForwardSpeed:50,skipUnseenText:!1,skipTransitionsAndAnimations:!1,soundVolume:50,musicVolume:50,muteAll:!1,localizationPackageId:null,autoMode:!1,skipMode:!1,dialogueUIHidden:!1,isLineCompleted:!1}),ft=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),Nf=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"}),Js=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),wa=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),Qs=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),va=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Df=(e,r)=>{let n=Nf[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}"`)},sn=(e,r)=>{if(Df(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},Zs=(e={})=>{let r=e?.config;if(r===void 0)return{...ar};if(!va(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{...ar};if(!va(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={...ar};return wa.forEach(i=>{o[i]!==void 0&&(s[i]=sn(i,o[i]))}),s},Tf=(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]}},Pr=e=>Object.fromEntries(Object.entries(jf).map(([r,n])=>{let o=Tf(e,n.source),a=o!==void 0?o:ar[r]??ft[r];return[r,a]})),lr=(e,r)=>Pr(e)[r],Aa=(e={})=>Object.fromEntries(Js.map(r=>[r,e[r]??ar[r]]));var Vr=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}),Ge=Object.freeze({BEHIND_BACKGROUND:Vr.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:Vr.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:Vr.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:Vr.VISUAL_BEHIND_CHOICE,FOREGROUND:Vr.VISUAL_FOREGROUND}),eo=Ge.BEHIND_DIALOGUE,ro=Object.freeze(Object.values(Ge).sort((e,r)=>e-r));var Lf={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([r,n])=>({id:r,...n})),formatDate:Hs},Mf=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,mt=e=>Array.isArray(e)?e.map(r=>{if(!r||typeof r!="object"||Array.isArray(r)||Object.keys(r).length!==1)return mt(r);let[n]=Object.keys(r),o=Mf.exec(n);if(!o)return mt(r);let[,a,t,s]=o,i=`$for ${a}${t?`, ${t}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(r[n])?r[n]:[];return{[i]:mt(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([r,n])=>[r,mt(n)])),We=(e,r)=>{let n={functions:Lf};return wr(mt(e),r,n)},Io=({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".`)},qf=({id:e,targetId:r,animation:n,playback:o,animationPath:a="animation"})=>{let t=structuredClone(n);if(Io({animationType:t.type,animationId:e,animationPath:a}),delete t.name,delete t.playback,t.id=e,t.targetId=r,o!==void 0){let s=Bf(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?Ma(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},Vf=(e,{animationId:r="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return Io({animationType:e.type,animationId:r,animationPath:n}),e.type},Ff=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},Uf=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},Bf=(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},Yf=e=>{let r=e?.playback?.speed;return typeof r=="number"&&Number.isFinite(r)&&r>0?r:1},xr=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Da=e=>e?.playback?.continuity==="persistent",co=e=>Array.isArray(e)?e.map(co):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((r,n)=>(r[n]=co(e[n]),r),{}),cn=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(co(r))},Ta=(e=[])=>e.filter(r=>Da(r)).map(r=>structuredClone(r)),La=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,to=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((r,n)=>Math.max(r,La(n)),0),Ma=e=>Math.max(to(e?.tween),to(e?.prev?.tween),to(e?.next?.tween),La(e?.mask?.progress)),qa=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:Ma(e)/Yf(e),zf=e=>e.some(r=>r?.playback?.loop===!0),ka=({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(cn).filter(Boolean));return e.some(o=>{if(!Da(o))return!1;let a=cn(o);return a?n.has(a):!1})},qe=({animationInstances:e,isLineCompleted:r,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:t=!0})=>!Array.isArray(e)||e.length===0||n?!1:zf(e)||t&&!r||ka({animationInstances:e,activePersistentAnimations:o})?!0:t?!1:ka({animationInstances:e,activePersistentAnimations:a}),Hf=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(r=>e[r]!==void 0),Gf=(e,r)=>{if(Hf(e))throw new Error(`[${r}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},Xf=({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?qf({id:o,targetId:a,animation:s,playback:n,animationPath:t}):null},Wf=(e,{defaultTargetId:r,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return Io({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=r,a},wo=({animations:e,transitions:r,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{r.forEach((t,s)=>{e.push(Wf(t,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},uo=(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},Kf=({content:e,path:r,variables:n})=>uo(e,r).reduce((o,a)=>{let t=qr(a.text,{variables:n});return o+`${t??""}`.length},0),Pa=(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))},on=(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("-")}`},yt=(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},Jf=(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},Qf=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Zf=(e={})=>Qf.some(r=>xr(e,r)),Va=(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"}},ln=({resourceId:e,kind:r})=>{if(e)return r?`bg-cg-background-${r}`:`bg-cg-${e}`},em=(e={})=>e.textStyles||{},rm=(e={})=>e.images||{},tm=.5,nm=(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]},Fa=({id:e,resourceId:r,spritesheet:n,animationName:o,animationSpeed:a,loop:t,transform:s={}}={})=>{let i=nm(n,o,r),l=i?n.animations?.[i]:void 0;if(!l){console.warn(`Spritesheet animation not found: ${r}`);return}return{id:e,type:"spritesheet-animation",...s,width:n.width,height:n.height,src:n.fileId,atlas:n.jsonData,playback:{frames:l.frames,animationSpeed:a??l.animationSpeed??tm,loop:t??l.loop??!0}}},Ua=({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 Fa({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}`)},sm=(e={})=>e.colors||{},om=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,gt=(e,r)=>e==="root"?`${r}`:`${e}.${r}`,Br=(e,r,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${r}" must resolve to a non-empty string`)},no=(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},so=(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},dn=(e,r)=>{if(typeof e!="string"||!om.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},xa=(e,r,n)=>{let o=dn(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})`},im=(e={},r)=>{let n=em(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=no(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:xa(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=no(n.strokeAlpha,"strokeAlpha",r);i.strokeColor=xa(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:dn(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${r}"`),alpha:no(n.shadow.alpha,"shadow.alpha",r),blur:so(n.shadow.blur,"blur",r,0,{minimum:0}),offsetX:so(n.shadow.offsetX,"offsetX",r,2),offsetY:so(n.shadow.offsetY,"offsetY",r,2)}}return i},po=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>po(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]=po(t,r,gt(n,a)));return e.textStyleId!==void 0&&(Br(e.textStyleId,n,"textStyleId"),o.textStyle=im(r,e.textStyleId)),o},vo=(e={},r)=>{let n=sm(e)?.[r];if(!n)throw new Error(`Color "${r}" not found`);return dn(n.hex,`Color "${r}"`)},Ba=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",oo=(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 ${Ba(`${r}.fill`)} instead`)},am=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>bt(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]=bt(t,r,gt(n,a)));return e.colorId!==void 0&&(Br(e.colorId,n,"colorId"),o.fill=vo(r,e.colorId)),o},bt=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>bt(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 ${Ba("fill")} instead`);oo(e,"hover",n),oo(e,"click",n),oo(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]=am(t,r,gt(n,a));continue}o[a]=bt(t,r,gt(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(Br(e.colorId,n,"colorId"),o.fill=vo(r,e.colorId)),o},io=(e={},r)=>{let n=rm(e)?.[r];return n||null},Ya=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",Ea=(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 ${Ya(`${r}.${o}`)} instead`)},Sa=(e,r,n)=>{let o=e[r];e[r]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},fo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>fo(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 ${Ya(a)} instead`);Ea(e,"hover",n,"src"),Ea(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]=fo(t,r,gt(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){Br(e.imageId,n,"imageId");let a=io(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&&(Br(e.hoverImageId,n,"hoverImageId"),Sa(o,"hover",io(r,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(Br(e.clickImageId,n,"clickImageId"),Sa(o,"click",io(r,e.clickImageId)?.fileId??e.clickImageId)),o},Ao=(e,r={},n="root")=>fo(bt(po(e,r,n),r,n),r,n),Ke=Ao,Er=(e=[])=>e.find(r=>r.id==="story"),lm="#000000",mo="bg-cg-background-color",cm=({resources:e={},background:r={},screen:n})=>r?.colorId===void 0?dn(n?.backgroundColor??lm,"screen.backgroundColor"):vo(e,r.colorId),za=(e={})=>{if(xr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},um=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Ra=(e={},{includeDefaultAlpha:r=!1}={})=>{let n=za(e),o=um(e),a={};return(r||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},pm=(e={})=>{if(xr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},dm=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Ha=(e={})=>{let r=pm(e),n=dm(e),o={};return r!==void 0&&(o.alpha=r),n&&(o.blur=n),o},Ur=(e={})=>Ha(e),Xe=(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},fm=["id","type","resourceId","transformId","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],ko=(e={})=>e.text&&xr(e.text,"content")&&xr(e.text,"textStyleId"),Oa=(e={})=>{if(e.resourceId)return e.resourceId;if(ko(e))return"text"},Ca=(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,mm=({item:e,particle:r,resources:n})=>{let o=yt(n,e),a=structuredClone(r),t=a.modules?.appearance?.texture;t!==void 0&&(a.modules.appearance.texture=Ca(t,n)),a.texture!==void 0&&(a.texture=Ca(a.texture,n));let s={id:`visual-${e.id}`,type:"container",children:[{...a,id:`visual-${e.id}-particles`,type:"particles",x:0,y:0}],...Xe(o,e)};return Object.assign(s,Ur(e)),s},ym=e=>{if(e.text){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!ko(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);for(let r of fm)if(xr(e.text,r))throw new Error(`Visual item "${e.id}" text.${r} is reserved for the visual item`)}},hm=({resources:e,background:r,screen:n={width:1920,height:1080},includeOpacity:o=!1})=>{let a={id:mo,type:"rect",x:0,y:0,width:n?.width??1920,height:n?.height??1080,fill:cm({resources:e,background:r,screen:n})};if(o){let t=za(r);t!==void 0&&(a.alpha=t)}return a},gm=(e={},r)=>r?!!(e.images?.[r]||e.videos?.[r]||e.spritesheets?.[r]||e.layouts?.[r]):!1,$a=({resources:e={},resourceId:r,colorId:n})=>{let o=Va(e,r);return r&&(o||n===void 0)?{resourceId:r,targetId:ln({resourceId:r,kind:o})}:n!==void 0?{resourceId:mo,targetId:mo}:{resourceId:void 0,targetId:void 0}},Ga=100,cr=Ga,bm="channel:bgm",Im="channel:music-room",wm="music-room:player",vm="channel:voice",Am="default",km=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),ht=(...e)=>e.map(km).join(":"),un=(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)})},Pm=(e,r)=>e*r/Ga,Xa=(e={},r)=>e?.[r]??ar[r],fn=(e={},r,n=cr)=>Pm(n,Xa(e,r)),mn=({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},an=(e,r,n,o)=>e[n]!==void 0?e[n]:r[n]!==void 0?r[n]:o,xm=["muted","pan","playbackRate","startAt","endAt"],yn=({id:e,sound:r,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:an(r,n,"loop",o),volume:an(r,n,"volume",cr),startDelayMs:an(r,n,"startDelayMs",0)};xm.forEach(s=>{let i=an(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},Le=({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:d,canRollback:f,confirmDialog:m,form:y,historyDialogue:g=[],characters:h={},dialogueUIHidden:I,skipOnlyViewedLines:b,skipTransitionsAndAnimations:x}={})=>{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??u??!1,skipMode:a?.skipMode??c??!1,dialogueUIHidden:a?.dialogueUIHidden??I??!1,isLineCompleted:a?.isLineCompleted??l??!1},k=Cm({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:v}),E={variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:v.localizationPackageId,runtime:v,saveSlots:t,isChoiceVisible:p,isFormVisible:d,canRollback:f,confirmDialog:m,form:y,historyDialogue:g,characters:h};return k&&(E.dialogue=k,E.dialogueLines=k.lines),E},_a=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},Em=e=>pn(e,r=>({...r,revealEffect:"none"})),Sm=e=>pn(e,r=>{let n=Number(r.speed??r.displaySpeed),o=Number.isFinite(n)?Math.max(n,_a):_a;return{...r,speed:o,...Object.prototype.hasOwnProperty.call(r,"displaySpeed")?{displaySpeed:o}:{}}}),ur=(e,{isLineCompleted:r=!1,skipMode:n=!1,skipTransitionsAndAnimations:o=!1}={})=>r||o?Em(e):n?Sm(e):e,Wa=({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:{}}}}),yo=e=>{if(Array.isArray(e))return e.map(yo);if(!e||typeof e!="object")return e;let r={};for(let[t,s]of Object.entries(e))r[t]=yo(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}}:{}}}}},Rm=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),ja="submit",ao=(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}}},ho=(e,r,n={})=>{if(Array.isArray(e))return e.map(u=>ho(u,r,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===ja,t=o&&n.submitRoleAncestor,s=a||t?{submitRoleAncestor:!0}:{},i={};for(let[u,c]of Object.entries(e))i[u]=ho(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:ao(l.change,c),submit:ao(l.submit,r.submitActions)}}}return l.formRole===ja||t?{...l,click:ao(l.click,r.submitActions,{replaceActions:!0})}:l},go=(e,r)=>{if(Array.isArray(e))return e.map(o=>go(o,r));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=go(a,r);for(let o of Rm){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},bo=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0,s=en({characterId:e,character:r,characterName:n,characters:o,variables:a});return{...t||{},...r||{},name:s}},Ka=(e=[],r={},n={})=>e.map(o=>{let a=bo({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}}),Om=e=>!(!e||e.mode==="adv"&&e.content===void 0),Cm=({dialogueState:e,includeInactiveAdvDialogue:r=!1,characters:n={},variables:o,runtime:a}={})=>{if(!r&&!Om(e))return;let t=e.content===void 0?[{text:""}]:uo(e.content,"dialogue.content"),s=e.content===void 0?0:Kf({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:o}),i=a?.dialogueTextSpeed??ar.dialogueTextSpeed,l=e.textSpeed??i,u=(e.lines||[]).map((p,d)=>{let f=uo(p.content,`dialogue.lines[${d}].content`),m=bo({characterId:p.characterId,character:p.character,characterName:p.characterName,characters:n,variables:o});return{...p,textSpeed:p.textSpeed??i,content:f.map(y=>({...y,text:qr(y.text,{variables:o})})),character:m,characterName:m.name}}),c=bo({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:qr(p.text,{variables:o})})),initialRevealedCharacters:s,lines:u}},Ja=({container:e,resources:r,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:t=!1})=>{let s=We(e,n);return Ke(ur(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:t}),r)},lo=(e,r={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(r),Na=({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:lo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:lo(a.keyup)});return}e[o]={...t,[n]:{payload:lo(a)}}})},$m=(e={},r={})=>{let n={};return Na({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),Na({renderStateKeyboard:n,keyboard:r,phase:"keyup"}),Object.keys(n).length>0?n:void 0},Je=({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:I})=>{let b=Xf({resources:r,animationId:f,playback:m,instanceId:h,targetId:I,animationPath:s});b&&l.push(b)},c=n!=null&&n!==!1,p=o!=null&&o!==!1,d=a&&t&&a===t;Gf(e,s);let f=Ff(e),m=Uf(e),y=r?.animations?.[f],g=Vf(y,{animationId:f,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`,I=m?.continuity==="persistent"?h:`${i}-animation-in`;if(c&&p&&d)return u({instanceId:h,targetId:t}),l;c&&u({instanceId:`${i}-animation-out`,targetId:a}),p&&u({instanceId:I,targetId:t})}return l},_m=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),jm=(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:d,activePersistentAnimations:f,restoredPersistentAnimations:m,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:I,canRollback:b,form:x,saveSlots:v=[]})=>{let{elements:k,animations:E}=e;if(r.background){let $=o===void 0?!0:xr(o?.background??{},"animations"),N=k.find(ue=>ue.id==="story");if(!N)return e;let S=Jf(a,r.background),T=S||Zf(r.background),V=n?.background?.resourceId,le=n?.background?.colorId,Y=r.background.resourceId??(r.background.animations?V:void 0),ne=r.background.colorId??(r.background.animations?le:void 0),oe=gm(a,Y),he={...r.background,colorId:ne};if((ne!==void 0||oe)&&N.children.push(hm({resources:a,background:he,screen:t,includeOpacity:!oe})),Y){let{images:ue={},videos:ie={},spritesheets:O={}}=a,_=Va(a,Y),q;if(_==="sprite"?q=ue[Y]:_==="video"?q=ie[Y]:_==="spritesheet-animation"&&(q=O[Y]),q){let ee=_==="video",Ie=_==="spritesheet-animation",K={x:(t?.width??1920)/2,y:(t?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...S},Ee={...Ra(r.background,{includeDefaultAlpha:!0}),...Xe(K,r.background)},ge;Ie?ge=Fa({id:ln({resourceId:Y,kind:_}),resourceId:Y,spritesheet:q,animationName:r.background.animationName,animationSpeed:r.background.animationSpeed,loop:r.background.loop,transform:Ee}):ge={id:ln({resourceId:Y,kind:_}),type:ee?"video":"sprite",src:q.fileId,width:q.width,height:q.height,...Ee},ee&&(ge.loop=r.background.loop??!1,ge.volume=q.volume??50),ge&&N.children.push(ge)}}if(Y){let{layouts:ue={}}=a,ie=ue[Y];if(ie){let O={id:ln({resourceId:Y,kind:"container"}),type:"container",children:ie.elements,...Ra(r.background)};T&&Object.assign(O,Xe({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...S},r.background));let _=We(O,Le({variables:l,imageGallery:u,musicRoom:c,sceneReplay:p,runtime:d,saveSlots:v,dialogueState:r.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:I,canRollback:b,form:x,characters:a.characters||{},skipTransitionsAndAnimations:i}));N.children.push(Ke(ur(_,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let ve=$a({resources:a,resourceId:V,colorId:le}),ce=$a({resources:a,resourceId:Y,colorId:ne}),se=Je({animationsDef:r.background.animations,resources:a,previousResourceId:ve.resourceId,currentResourceId:ce.resourceId,previousTargetId:ve.targetId,currentTargetId:ce.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});qe({animationInstances:se,isLineCompleted:s,skipTransitionsAndAnimations:i,activePersistentAnimations:f,restoredPersistentAnimations:m,isAuthoredOnCurrentLine:$})&&E.push(...se)}return e},Nm=(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(m=>m.id==="story");if(!u)return e;let c=r.character.items||[],p=n?.character?.items||[],d=Pa(c),f=Pa(p);for(let m=0;m<c.length;m++){let y=c[m],{transformId:g,sprites:h}=y,I=p.find(T=>T.id===y.id),b=p.findIndex(T=>T.id===y.id),x=I?.sprites&&I.sprites.length>0,v=h&&h.length>0,k=b>=0?on(I,b,f):void 0,E=Je({animationsDef:y.animations,resources:o,previousResourceId:k,currentResourceId:v?on(y,m,d):void 0,previousTargetId:k,currentTargetId:v?on(y,m,d):void 0,animationPath:`character.items[${m}].animations`,idPrefix:"character"});if(y.animations&&!h&&!g&&x&&qe({animationInstances:E,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})){l.push(...E);continue}if(y.animations&&!h&&!g)continue;if(!h||h.length===0||!g){console.warn("Character item missing sprites or transformId:",y);continue}let $=on(y,m,d),N=o.transforms[g];if(!N){console.warn("Transform not found:",g);continue}let S={type:"container",id:$,...Xe(N,y),...Ur(y),children:[]};for(let T of h){let V=Ua({id:`${$}-${T.id}`,item:T,resources:o});V&&S.children.push(V)}u.children.push(S),qe({animationInstances:E,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&l.push(...E)}}return e},Qa=(e,r)=>{if(!ro.includes(e))throw new Error(`${r} must be one of: ${ro.join(", ")}.`)},Dm=(e,r)=>{let n=!!e.resourceId||ko(e),o=e.layer??(n?void 0:r?.layer)??eo;return Qa(o,`Visual item "${e.id}" layer`),o},Tm=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,variables:s,imageGallery:i,musicRoom:l,sceneReplay:u,runtime:c,activePersistentAnimations:p,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:y,canRollback:g,form:h,saveSlots:I=[],visualLayer:b})=>{let{elements:x,animations:v}=e;if(r.visual&&o){let k=x.find(S=>S.id==="story");if(!k)return e;let E=r.visual.items,$=n?.visual?.items||[],N=Le({variables:s,imageGallery:i,musicRoom:l,sceneReplay:u,runtime:c,saveSlots:I,dialogueState:r.dialogue,isLineCompleted:a,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:t});b!==void 0&&Qa(b,"visualLayer");for(let S of E){let T=$.find(oe=>oe.id===S.id),V=Dm(S,T);if(b!==void 0&&V!==b)continue;if(ym(S),S.text){let oe=yt(o,S),he={...structuredClone(S.text),id:`visual-${S.id}`,type:"text",...Xe(oe,S)};Object.assign(he,Ur(S)),k.children.push(Ke(We(he,N),o))}if(S.resourceId){let{images:oe={},videos:he={},spritesheets:ve={}}=o,ce=ve[S.resourceId];if(ce){let se=yt(o,S),ue=S.animationName;if(ue){let ie=ce.animations?.[ue];if(!ie)throw new Error(`Animation '${ue}' not found in spritesheet resource '${S.resourceId}'`);let O=Ur(S),_={id:`visual-${S.id}`,type:"spritesheet-animation",...Xe(se,S),width:S.width??ce.width,height:S.height??ce.height,alpha:O.alpha??S.alpha??1,src:ce.fileId,atlas:ce.jsonData,playback:{frames:ie.frames,animationSpeed:S.animationSpeed??ie.animationSpeed??.5,loop:S.loop??ie.loop??!0}};O.blur&&(_.blur=O.blur),k.children.push(structuredClone(_))}}else{let se=oe[S.resourceId]||he[S.resourceId];if(se){let ue=he[S.resourceId]!==void 0,ie=yt(o,S),O={id:`visual-${S.id}`,type:ue?"video":"sprite",src:se.fileId,width:se.width,height:se.height,...Xe(ie,S)};Object.assign(O,Ur(S)),ue&&(O.loop=se.loop??!1,O.volume=se.volume??50),k.children.push(O)}}}if(S.resourceId){let oe=o.particles?.[S.resourceId];oe&&k.children.push(mm({item:S,particle:oe,resources:o}))}if(S.resourceId){let{layouts:oe={}}=o,he=oe[S.resourceId];if(he){let ve=yt(o,S),ce={id:`visual-${S.id}`,type:"container",children:structuredClone(he.elements),...Xe(ve,S)};Object.assign(ce,Ur(S));let se=We(ce,N);k.children.push(Ke(ur(se,{isLineCompleted:a,skipMode:f,skipTransitionsAndAnimations:t}),o))}}let le=Oa(T),Y=Oa(S),ne=Je({animationsDef:S.animations,resources:o,previousResourceId:le,currentResourceId:Y,previousTargetId:le?`visual-${S.id}`:void 0,currentTargetId:Y?`visual-${S.id}`:void 0,animationPath:`visual.items[${S.id}].animations`,idPrefix:S.id});qe({animationInstances:ne,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:p})&&v.push(...ne)}}return e},Fr="dialogue-character-sprite",Lm=(e,{presentationState:r,previousPresentationState:n,resources:o={},isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{animations:i}=e,l=Er(e.elements);if(!l)return e;let u=r.dialogue?.character?.sprite,c=n?.dialogue?.character?.sprite,p=ot(u),d=ot(c),f=Je({animationsDef:u?.animations,resources:o,previousResourceId:d?Fr:void 0,currentResourceId:p?Fr:void 0,previousTargetId:d?Fr:void 0,currentTargetId:p?Fr:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return u?.animations&&d&&qe({animationInstances:f,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...f),e;let m=o.transforms?.[u.transformId];if(!m)return console.warn("Transform not found:",u.transformId),e;let y={type:"container",id:Fr,...Xe(m),children:[]};for(let g of u.items){let h=Ua({id:`${Fr}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),qe({animationInstances:f,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...f),e},Mm=(e,{presentationState:r,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:u,form:c,skipOnlyViewedLines:p,isLineCompleted:d,skipTransitionsAndAnimations:f,variables:m,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:I,activePersistentAnimations:b,saveSlots:x=[]})=>{let{elements:v,animations:k}=e;if(!r.dialogue||a)return e;let E=v.find(N=>N.id==="story");if(!E)return e;if(r.dialogue.ui&&r.dialogue.ui.resourceId){let{layouts:N={}}=o,S=N[r.dialogue.ui.resourceId];if(S){let T={elements:S.elements},V=Le({variables:m,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:I,saveSlots:x,dialogueState:r.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:d,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:u,form:c,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:f}),le=We(T,V),Y=Ke(ur(le?.elements,{isLineCompleted:d,skipMode:s,skipTransitionsAndAnimations:f}),o);if(Array.isArray(Y))for(let ne of Y)E.children.push(ne);else Y&&E.children.push(Y)}}Lm(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:d,skipTransitionsAndAnimations:f,activePersistentAnimations:b});let $=Je({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 qe({animationInstances:$,isLineCompleted:d,skipTransitionsAndAnimations:f,activePersistentAnimations:b})&&k.push(...$),e},qm=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:y,canRollback:g,form:h,activePersistentAnimations:I,saveSlots:b=[]})=>{let{elements:x,animations:v}=e;if(r.choice&&o){let k=Er(x);if(!k)return e;let E=o?.layouts[r.choice.resourceId];if(E&&E.elements){let N={elements:E.elements},S=We(N,{...Le({variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,saveSlots:b,dialogueState:r.dialogue,isLineCompleted:t,autoMode:d,skipMode:f,isChoiceVisible:m??!!r.choice,isFormVisible:y,canRollback:g,form:h,characters:o.characters||{},skipTransitionsAndAnimations:s}),choice:{items:r.choice?.items??[]}}),T=yo(Ke(ur(S?.elements,{isLineCompleted:t,skipMode:f,skipTransitionsAndAnimations:s}),o));if(Array.isArray(T))for(let V of T)k.children.push(V);else T&&k.children.push(T)}let $=Je({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"});qe({animationInstances:$,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:I})&&v.push(...$)}return e},Vm=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:y,canRollback:g,activePersistentAnimations:h,saveSlots:I=[],form:b})=>{let{elements:x,animations:v}=e;if(!b?.resourceId||!o)return e;let k=Er(x);if(!k)return e;let E=o?.layouts?.[b.resourceId];if(!E)return console.warn(`Form layout not found: ${b.resourceId}`),e;let $={id:"form-container",type:"container",x:0,y:0,children:E.elements||[]},N={...Le({variables:i,imageGallery:l,musicRoom:u,sceneReplay:c,runtime:p,saveSlots:I,dialogueState:r.dialogue,isLineCompleted:t,autoMode:d,skipMode:f,isChoiceVisible:m,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},S=We($,N),T=go(Ke(ur(ho(S,b),{isLineCompleted:t,skipMode:f,skipTransitionsAndAnimations:s}),o),b);T&&k.children.push(T);let V=Je({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 qe({animationInstances:V,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&v.push(...V),e},Fm=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,saveSlots:y=[],skipTransitionsAndAnimations:g})=>{if(!r.control?.resourceId)return e;let h=n.controls?.[r.control.resourceId];if(!h)return e;let I=$m(h.keyboard,h.keyup);if(I&&Object.keys(I).length>0&&(e.global.keyboard=I),!Array.isArray(h.elements)||h.elements.length===0)return e;let b=Er(e.elements);if(!b)return e;let x={id:`control-${r.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(Ja({container:x,resources:n,templateData:Le({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,characters:n.characters||{},skipTransitionsAndAnimations:g}),isLineCompleted:l,skipMode:c,skipTransitionsAndAnimations:g})),e},Um=(e,{presentationState:r,resources:n,runtime:o,variables:a,musicRoomPlayer:t})=>{let{elements:s,audio:i}=e;if(r.bgm&&n){if(!Er(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,d=!c&&u.loop===!0,f=[];if(c||un(p,"BGM sound"),d){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=d?{...y,loop:y.loop??!1}:y;f.push(yn({id:ht("bgm",c?"default":y.id),sound:h,resource:g,defaultLoop:!d}))}),f.length===0)return e;let m=Le({variables:a,runtime:o}).runtime;i.push(mn({id:bm,volume:fn(m,"musicVolume",c?cr:u.volume??cr),muted:u.muted,pan:u.pan,loop:c?void 0:u.loop,playback:t?.bgmPlayback,interruption:u.interruption,children:f,runtime:m}))}return e},Bm=(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=Le({variables:o,runtime:n}).runtime,u=yn({id:wm,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(mn({id:Im,volume:fn(l,"musicVolume",cr),children:[u],runtime:l})),e},Ym=(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:Am,sounds:t.items??[]}]:t.channels;s||un(i,"SFX channel"),i.forEach(l=>{let u=!s&&l.loop===!0,c=[];if(s||un(l.sounds,"SFX sound",`SFX channel "${l.id}"`),u){let p=l.sounds.find(d=>d.loop===!0);if(p)throw new Error(`SFX sound "${p.id}" cannot loop inside looping SFX channel "${l.id}".`)}l.sounds.forEach((p,d)=>{let f=n.sounds?.[p.resourceId];if(!f)return;let m=u?{...p,loop:p.loop??!1}:p;c.push(yn({id:s?ht("sfx","default",d,p.id):ht("sfx",l.id,p.id),sound:m,resource:f,defaultLoop:u?!1:void 0}))}),c.length!==0&&a.push(mn({id:ht("channel","sfx",l.id),volume:fn(o,"soundVolume",l.volume??cr),muted:l.muted,pan:l.pan,loop:s?void 0:l.loop,interruption:s?void 0:l.interruption,children:c,runtime:o}))})}return e},zm=(e,r,n)=>{if(!(!r||!n))return e?.voices?.[r]?.[n]},Hm=(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:cr,startDelayMs:i.startDelayMs??0}]:[]:i.sounds,c=!l&&i.loop===!0,p=[];if(l||un(u,"Voice sound"),c){let f=u.find(m=>m.loop===!0);if(f)throw new Error(`Voice sound "${f.id}" cannot loop inside a looping Voice channel.`)}if(u.forEach(f=>{let m=zm(n,o,f.resourceId);if(!m)return;let y=c?{...f,loop:f.loop??!1}:f;p.push(yn({id:ht("voice",o,l?"default":f.id),sound:y,resource:m,defaultLoop:c?!1:void 0}))}),p.length===0)return e;let d=Le({variables:t,runtime:a}).runtime;return s.push(mn({id:vm,volume:l?i.volume??Xa(d,"soundVolume"):fn(d,"soundVolume",i.volume??cr),muted:i.muted,pan:i.pan,loop:l?void 0:i.loop,interruption:i.interruption,children:p,runtime:d})),e},Gm=(e,{presentationState:r,previousPresentationState:n,resources:o={},variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,saveSlots:y=[],isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:I})=>{let{elements:b,animations:x}=e;if(r.layout){let $=Er(b);if(!$)return e;let N=o.layouts[r.layout.resourceId];if(!N)return e;Array.isArray(N.transitions)&&!g&&!h&&wo({animations:x,transitions:N.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:N.elements||[]};$.children.push(Ja({container:S,resources:o,templateData:Le({variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:g,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,characters:o.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:g,skipMode:c,skipTransitionsAndAnimations:h}))}let v=n?.layout?.resourceId,k=r.layout?.resourceId,E=Je({animationsDef:r.layout?.animations,resources:o,previousResourceId:v,currentResourceId:k,previousTargetId:v?`layout-${v}`:void 0,currentTargetId:k?`layout-${k}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return qe({animationInstances:E,isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:I})&&x.push(...E),e},Xm=(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=Je({animationsDef:l,resources:o,previousResourceId:u?"story":void 0,currentResourceId:"story",previousTargetId:u?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return qe({animationInstances:c,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...c),e},Wm=(e,{presentationState:r})=>{let n=Er(e.elements);return!n||!r?.screen||Object.assign(n,Ha(r.screen)),e},Km=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,autoMode:l,skipMode:u,isChoiceVisible:c,isFormVisible:p,canRollback:d,form:f,overlayStack:m=[],dialogueHistory:y=[],saveSlots:g=[],screen:h,isLineCompleted:I,skipTransitionsAndAnimations:b})=>{let{elements:x,animations:v}=e;return m&&m.length>0&&m.forEach((k,E)=>{let $=n.layouts[k.resourceId];if(!$){console.warn(`Overlay layout not found: ${k.resourceId}`);return}Array.isArray($.transitions)&&(b||wo({animations:v,transitions:$.transitions,defaultTargetId:`overlayStack-${E}`,idPrefix:`overlayStack-${E}`,animationPathPrefix:`overlayStack[${E}]`}));let N={id:`overlayStack-${E}`,type:"container",x:0,y:0,children:[Wa({id:`overlayStack-${E}-blocker`,screen:h}),...$.elements||[]]},S=Ka(y,n.characters,o),T=Le({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:r?.dialogue,isLineCompleted:I,autoMode:l,skipMode:u,isChoiceVisible:c,isFormVisible:p,canRollback:d,form:f,historyDialogue:S,characters:n.characters||{},skipTransitionsAndAnimations:b}),V=We(N,T),[le,...Y]=V.children||[],ne=Ke(ur({...V,children:Y},{isLineCompleted:I,skipMode:u,skipTransitionsAndAnimations:b}),n);x.push({...ne,children:le?[le,...ne.children||[]]:ne.children})}),e},Jm=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l=[],autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,confirmDialog:y,dialogueHistory:g=[],screen:h,isLineCompleted:I,skipTransitionsAndAnimations:b})=>{let{elements:x,animations:v}=e;if(!y?.resourceId)return e;let k=n.layouts?.[y.resourceId];if(!k)return console.warn(`ConfirmDialog layout not found: ${y.resourceId}`),e;Array.isArray(k.transitions)&&!b&&wo({animations:v,transitions:k.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let E={id:"confirmDialog",type:"container",x:0,y:0,children:[Wa({id:"confirmDialog-blocker",screen:h}),...k.elements||[]]},$=Ka(g,n.characters,o),N=We(E,Le({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:r?.dialogue,isLineCompleted:I,autoMode:u,skipMode:c,isChoiceVisible:p,isFormVisible:d,canRollback:f,form:m,confirmDialog:y,historyDialogue:$,characters:n.characters||{},skipTransitionsAndAnimations:b})),[S,...T]=N.children||[],V=Ke(ur({...N,children:T},{isLineCompleted:I,skipMode:c,skipTransitionsAndAnimations:b}),n);return x.push({...V,children:S?[S,...V.children||[]]:V.children}),e},It=e=>(r,n)=>Tm(r,{...n,visualLayer:e}),Qm=It(Ge.BEHIND_BACKGROUND),Zm=It(Ge.BEHIND_CHARACTER),ey=It(Ge.BEHIND_DIALOGUE),ry=It(Ge.BEHIND_CHOICE),ty=It(Ge.FOREGROUND),Za=e=>Zt(_m,[Fm,Qm,jm,Zm,Nm,ey,Mm,ry,qm,Vm,Gm,ty,Wm,Xm,Um,Bm,Ym,Hm,Km,Jm])(e);function el(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 rl(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 tl="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",nl="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",sl="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var ol=65535,Po=40960,hn=126976,ll=new Uint8Array(12288),cl=new Uint8Array(3072),ul=new Uint8Array(2816),pl,dl;{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 el(tl,nl))e(ll,0,a,t,s),e(cl,Po,a,t,s),e(ul,hn,a,t,s),t>=65040&&!(a>=hn&&t<=129791)&&(r[o]=a,n[o++]=t<<5|s);pl=r.slice(0,o),dl=n.slice(0,o)}function il(e){return e<12288?ll[e]:e<Po?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?cl[e-Po]: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?ul[e-hn]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:rl(e,pl,dl)}var fl=Uint8Array.from(sl,Number);function ny(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 al(e,r,n){switch(r){case 3:return e&24?n===8204?e&6:(e&24)===16||ny(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*ml(e){let r=e.length;if(r===0)return;let n=e.codePointAt(0),o=n>ol?2:1,a=il(n),t=50200>>a&1?al(0,a,n):0,s=0,i=n,l=a;for(;o<r;){n=e.codePointAt(o);let u=n>ol?2:1,c=il(n),p=fl[a<<4|c],d;p===0?d=!0:p===1?d=!1:p===2?d=!(t&1):p===3?d=!(t&4):d=(t&24)!==16,t=50200>>c&1&&(t!==0||c!==3)?al(t,c,n):0,d&&(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*yl(e){for(let r of ml(e))yield r.segment}{let e=ml("_");fl._keep=[e,e.next()]}var hl=1e3,wl=50,sy=0,gl=100,bl=50,oy=60,iy=3,ay=.5,ly=2e4,cy=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,uy=/^\s+$/u,Il,py=e=>{let r=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(yl(r)):(Il??=new n(void 0,{granularity:"grapheme"}),Array.from(Il.segment(r),({segment:o})=>o))},dy=e=>py(e).reduce((r,n)=>uy.test(n)?r+ay:cy.test(n)?r+iy:r+1,0),fy=e=>2**(((Number.isFinite(e)?Math.min(gl,Math.max(sy,e)):wl)-bl)/(gl-bl)),vl=({text:e="",baseDelay:r=hl,speed:n=wl}={})=>{let o=Number.isFinite(r)?Math.max(0,r):hl,a=fy(n),t=dy(e)*oy/a,s=Math.max(o,ly);return Math.min(o+t,s)};var gn={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},Rl=1,Ro=1,zr="choice",pr="form",At=()=>({manual:{...gn.manual},auto:{...gn.auto},applyMode:gn.applyMode}),Oo=()=>({groupId:null,variantId:null,pageIndex:0}),my="music-room:player",yy=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),wn=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),Co=new Set,hy=new Set(["groupId","variantId"]),gy=new Set(["pageIndex"]),Hr=new Set,by=new Set(["trackId"]),Iy=new Set(["positionMs"]),wy=new Set(["pageIndex"]),$o=new Set,vy=new Set(["sceneId"]),Ay=new Set(["pageIndex"]),_o=()=>({pageIndex:0}),jo=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...At()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},D=e=>{let r=me(e)?tr(e):e;return structuredClone(r)},M=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),vn=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},Ol=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},kt=(e,r,n)=>({commandId:vn(e),operation:r,...n===void 0?{}:{positionMs:n}}),No=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let r=e.global.musicRoomPlayer,n=r.bgmPlayback;r.trackId!==null&&(n={commandId:vn(e),operation:"resume"}),e.global.musicRoomPlayer=wn({bgmPlayback:n})},Cl=(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},Gr=e=>String(e),$l=()=>({sections:[],resources:[]}),_l=()=>({sceneIds:[]}),ky=e=>M(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):$l(),Py=e=>M(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):_l(),xy=e=>Array.isArray(e)?e.map(r=>r?.text??"").join(""):"",Ey=({sectionId:e,lineId:r,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:r,content:n,text:xy(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),jl=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Sy=e=>M(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,Do=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},Ry=e=>{if(!M(e?.dialogueHistory))return e.dialogueHistory=jl(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},To=e=>{let r=Do(e);return r?(r.currentLength<r.entries.length&&(r.entries=r.entries.slice(0,r.currentLength)),r):null},Oy=()=>({resourceId:void 0}),Cy=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},Qe=(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}},Nl=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)}}},Dl=e=>{if(typeof e=="number"||typeof e!="string")return e;let r=Number(e);return Number.isFinite(r)?r:e},Tl=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==Rl)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},$y=(e,r={})=>{let n;try{n=Tl(r.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...r,formatVersion:n,slotId:Dl(r.slotId??r.slotKey??e),savedAt:typeof r.savedAt=="number"?r.savedAt:r.date};return delete o.slotKey,delete o.date,o},_y=(e={})=>Object.fromEntries(Object.entries(e).map(([r,n])=>[r,$y(r,n)])),Ll=e=>{if(!Array.isArray(e))return;let r=e.filter(({type:n})=>Ab(n));return r.length>0?r:void 0},jy=e=>{!M(e)||!Array.isArray(e.timeline)||(e.returnabilityVersion=Ro,e.timeline.forEach(r=>{if(!M(r))return;typeof r.returnable!="boolean"&&delete r.returnable;let n=Ll(r.executedActions);if(n){r.executedActions=n;return}delete r.executedActions}))},Al=(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}},Ny=(e,r="viewedRegistry")=>{if(e===void 0)return $l();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=Al(a,"sections",t,r);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,t)=>{let s=Al(a,"resources",t,r);return[s.resourceId,s]})))}},Dy=(e,r="accountReplayRegistry")=>{if(e===void 0)return _l();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}))]}},Ml=(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}=Qe(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}},ql=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,Lo=(e,r)=>{let{section:n}=Qe(e,r?.sectionId);return n?.lines?.find(o=>o.id===r?.lineId)},Ty=(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}=Qe(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}},Ly=(e,r)=>M(Lo(e,r)?.actions?.dialogue),Vl=(e,r,n)=>{if(!r||r.sectionId!==n.sectionId)return!1;let{section:o}=Qe(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},My=(e,r)=>{let n=jl();return e.timeline.forEach(o=>{if(o.returnable!==!1&&Ly(r,o)){let a=Lo(r,o),t=n.entries.at(-1),s=a.actions.dialogue.append===!0&&Vl(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},qy=(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},Vy=(e,r)=>{let{section:n}=Qe(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},Fl=(e,r,n)=>{if(typeof r?.sectionId!="string")return!1;let{section:o}=Qe(e,r.sectionId);return ql({sectionId:r.sectionId,lineId:o?.lines?.[0]?.id},n)},Fy=new Set(["jumpToLine","rollbackByOffset","rollbackToLine","sectionTransition","resetStoryAtSection"]),Yr={always:"always",maybe:"maybe",never:"never"},Uy=e=>{if(!Object.prototype.hasOwnProperty.call(e??{},"when"))return Yr.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 Yr.maybe;return n?Yr.always:Yr.never},Ul=(e,r)=>{if(!Array.isArray(e?.branches))return!1;for(let n of e.branches){let o=Uy(n);if(o!==Yr.never){if(r(n))return!0;if(o===Yr.always)return!1}}return!1},Bl=e=>Ul(e,r=>Object.entries(r?.actions??{}).some(([n,o])=>n==="conditional"?Bl(o):Fy.has(n))),Yl=(e,r,n)=>Ul(r,o=>Object.entries(o?.actions??{}).some(([a,t])=>a==="sectionTransition"?Fl(e,t,n):a==="conditional"?Yl(e,t,n):!1)),By=(e,r,n)=>{if(!r)return!0;let o=Lo(n,e)?.actions;if(!M(o))return!0;if(Fl(n,o.sectionTransition,r))return!1;let a=o.conditional;return a?!(Yl(n,a,r)||!(o.choice?.resourceId||o.form?.resourceId)&&!Bl(a)&&ql(Vy(n,e),r)):!0},Yy=(e,r,n)=>{if(!M(e)||!Array.isArray(e.timeline))return{rollback:vt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=new WeakSet,a=[],t=e.timeline.flatMap((p,d)=>{if(!M(p))return[];try{let f=Ml(p,n,`rollback.timeline[${d}]`),m=In({sectionId:f.sectionId,lineId:f.lineId,rollbackPolicy:p.rollbackPolicy,returnable:p.returnable});typeof p.returnable=="boolean"&&o.add(m);let y=Ll(D(p.executedActions));return y&&(m.executedActions=y),a.push(d),[m]}catch{return[]}});if(t.length===0)return{rollback:vt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};e.returnabilityVersion!==Ro&&t.forEach((p,d)=>{!o.has(p)&&!By(p,t[d+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(d=>d.sectionId===r.sectionId&&d.lineId===r.lineId);p>=0?l=p:(t.push(In({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}},zy=(e,r,n)=>{if(!M(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=Vo(r),a=Ml(e.pointers?.read,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?Mr(D(e.variables),r.resources?.variables??{}):{},s=sh({loadedContextRuntime:M(e.runtime)?D(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:u}=Yy(e.rollback,a,r),c=e.dialogueHistory===void 0?My(i,r):qy(Ty(e.dialogueHistory,r,`contexts[${n}].dialogueHistory`),i,l,u),p={currentPointerMode:"read",pointers:{read:a},configuration:M(e.configuration)?D(e.configuration):{},views:Array.isArray(e.views)?D(e.views):[],bgm:M(e.bgm)?D(e.bgm):{resourceId:void 0},variables:{...o,...t},...c?{dialogueHistory:c}:{},rollback:i};return s&&(p.runtime=s),p},Hy=(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)=>zy(n,r,o))}},Gy=(e,r)=>{if(!M(e))throw new Error("Malformed save slot.");let n=Tl(e.formatVersion);return{...e,formatVersion:n,state:Hy(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=D(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},Xy=(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")}},Xr=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},Wy=e=>(M(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),Wr=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},zl=e=>{if(!(!M(e)||!e.animations))return{animations:D(e.animations)}},Ky=(e,r)=>{let n=zl(r);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Jy=e=>{let r=e?.id??e?.resourceId;return typeof r=="string"&&r.length>0?r:void 0},Qy=(e,r)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!r))return`${n}:${o}:${r}`},bn=e=>String(e??""),Hl=(e,r)=>{let n=bn(r);return e?.trim===!0?n.trim():n},Zy=e=>M(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,r])=>M(r)).map(([r,n])=>[r,{id:r,...D(n)}])):{},eh=(e,r)=>{if(!r||!M(e.global.formDrafts))return;let n=e.global.formDrafts[r];return M(n)?n:void 0},Gl=(e,r)=>{let n=Wy(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},Mo=(e,r)=>{let n=Hl(e,r);return e?.required===!0&&n.length===0?"required":null},rh=({state:e,pointer:r})=>{if(!r?.sectionId||!r?.lineId)return{};let o=be({state:e},{sectionId:r.sectionId})?.lines||[],a=o.findIndex(t=>t.id===r.lineId);return a<0?{}:kr(o.slice(0,a+1).map(t=>t.actions||{}))},th=({state:e,form:r,pointer:n})=>{if(!r?.resourceId)return null;let o=Jy(r),a=Qy(n,o);if(!o||!a)return null;let t=eh(e,a),s=Zy(r),i=An({state:e}),l={},u=[],c={},p=!0;return Object.entries(s).forEach(([d,f])=>{let m=bn(i?.[f.variableId]),y=Object.prototype.hasOwnProperty.call(t?.values??{},d)?bn(t.values[d]):m,g=t?.touched?.[d]===!0,h=Mo(f,y),I=t?.submitted||g?h:null,b=typeof f.maxLength=="number"?Math.max(0,Math.round(f.maxLength)):void 0,x={id:d,variableId:f.variableId,value:y,initialValue:m,valid:!h,error:I,touched:g,required:f.required===!0,trim:f.trim===!0,placeholder:f.placeholder===void 0?"":String(f.placeholder),multiline:f.multiline===!0,...b!==void 0?{maxLength:b}:{}};h&&(p=!1),l[d]=x,u.push(x),c[d]=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:D(r.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:D(r.cancelActions??{})}}}},Rr=[],Pl="line",qo="interaction",In=({sectionId:e,lineId:r,rollbackPolicy:n,returnable:o})=>({sectionId:e,lineId:r,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{}}),Vo=e=>{let r=me(e)?tr(e):e,{contextVariableDefaultValues:n}=rn(r??{});return D(n)},Xl=()=>({...D(ft)}),Wl=({loadedRuntime:e,runtimeIds:r,defaults:n={},path:o})=>{if(e===void 0)return{runtimeState:D(n),hasLoadedValues:!1};if(!M(e))throw new Error(`Malformed ${o}.`);let a=D(n),t=!1;return r.forEach(s=>{e[s]!==void 0&&(a[s]=sn(s,D(e[s])),t=!0)}),{runtimeState:a,hasLoadedValues:t}},nh=({projectData:e,loadedGlobalRuntime:r={}})=>Wl({loadedRuntime:r,runtimeIds:Js,defaults:Zs(e),path:"global.runtime"}).runtimeState,sh=({loadedContextRuntime:e={}})=>{let{runtimeState:r,hasLoadedValues:n}=Wl({loadedRuntime:e,runtimeIds:Qs,defaults:Xl(),path:"context.runtime"});return n?r:void 0},Cr=e=>{let r=Array.isArray(e?.contexts)?e.contexts:[];return r[r.length-1]},te=e=>{let r=Cr(e);return r?.kind==="sceneReplay"&&M(r.sceneReplay)?r:null},Kl=(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]=D(t)})},oh=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:D(e.global.nextLineConfig),overlayStack:D(e.global.overlayStack),confirmDialog:D(e.global.confirmDialog),formDrafts:D(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:D(e.global.pendingScreenTransition)}}),ih=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=At(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},ah=(e,r)=>{e.global.autoMode=r.autoMode,e.global.skipMode=r.skipMode,e.global.dialogueUIHidden=r.dialogueUIHidden,e.global.nextLineConfig=D(r.nextLineConfig),e.global.overlayStack=D(r.overlayStack),e.global.confirmDialog=D(r.confirmDialog),e.global.formDrafts=D(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=D(r.pendingScreenTransition),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"});let n=xe({state:e});e.global.autoMode&&e.global.isLineCompleted&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:Jr({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}})},lh=e=>e.runtime?(Qs.forEach(r=>{e.runtime[r]===void 0&&(e.runtime[r]=D(ft[r]))}),e.runtime):(e.runtime=Xl(),e.runtime),ch=e=>Aa(e.global),Jl=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:ch(e)}})},Fo=(e,r,n)=>{let o=sn(r,n);if(r in ft){let a=Cr(e);if(!a)return o;let t=lh(a);return t[r]=o,o}return e.global[r]=o,o},Uo=({pointer:e,projectData:r,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:D(o)},currentPointerMode:"read",pointers:{read:D(e)},configuration:{},views:[],bgm:Oy(),variables:Vo(r),rollback:vt({pointer:e})}),Kr=e=>e?(e.currentPointerMode="read",M(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,uh=(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=Uo({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,ph(e,{queueRender:r}),a},ph=(e,{queueRender:r=!0}={})=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,Xr(e),Wr(e),e.global.nextLineConfig=At(),e.global.overlayStack=[],e.global.isLineCompleted=!0,No(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),r&&e.global.pendingEffects.push({name:"render"})},Ql=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},vt=({pointer:e,replayStartIndex:r=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:r,timeline:n?[In({sectionId:e.sectionId,lineId:e.lineId})]:[]}},fr=(e,r={})=>{if(e?.rollback)return Ql(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=vt({pointer:n,replayStartIndex:r.compatibilityAnchor?1:0}),e.rollback},Bo=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=fr(n);if(o.isRestoring)return;let a=To(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(In(r)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},dh=({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}},fh=({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(me(l)?Ut(l):l)!==o||l?.sectionId!==a||l?.lineId!==t||(l.returnable=!1),e},mh=({state:e},r={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:t,lineId:s}=r,i=Gr(n),l=e.global.saveSlots?.[i],u=me(l)?Ut(l):l;if(!l||u!==o)return e;let c=l.state?.contexts,p=Array.isArray(c)?c.at(-1):null,d=p?.rollback,f=d?.timeline?.[a];return!Number.isInteger(a)||d?.currentIndex!==a||p?.pointers?.read?.sectionId!==t||p?.pointers?.read?.lineId!==s||f?.sectionId!==t||f?.lineId!==s||(f.returnable=!1,d.returnabilityVersion=Ro,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},yh=e=>{let r=e.contexts?.[e.contexts.length-1],n=r?.rollback;if(!n||n.isRestoring||!Array.isArray(n.timeline)||typeof n.currentIndex!="number")return null;let o=Rr[Rr.length-1],a=typeof o?.checkpointIndex=="number"?o.checkpointIndex:n.currentIndex;if(a<0||a>=n.timeline.length)return null;if(typeof o?.checkpointIndex!="number"&&a<n.timeline.length-1){n.timeline=n.timeline.slice(0,a+1);let t=To(r);t&&(t.checkpointLengths=t.checkpointLengths.slice(0,a+1))}return n.timeline[a]??null},hh=({state:e},r={})=>{let n=r?.source===Pl?Pl:qo,o=e.contexts?.[e.contexts.length-1],a=o?.rollback;if(!a||a.isRestoring||!Array.isArray(a.timeline)||typeof a.currentIndex!="number"||a.currentIndex<0||a.currentIndex>=a.timeline.length)return Rr.push({checkpointIndex:null,source:n}),e;if(a.currentIndex<a.timeline.length-1){a.timeline=a.timeline.slice(0,a.currentIndex+1);let t=To(o);t&&(t.checkpointLengths=t.checkpointLengths.slice(0,a.currentIndex+1))}return Rr.push({checkpointIndex:a.currentIndex,source:n}),e},gh=({state:e})=>(Rr.pop(),e),Be=(e,r,n)=>{let a=Rr[Rr.length-1]?.source??qo;if(!kb(r,a))return;let t=yh(e);t&&(Array.isArray(t.executedActions)||(t.executedActions=[]),t.executedActions.push({type:r,payload:D(n)}))},xl=(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(Te(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);pt(u,a),tn(c,t,a),zs(c,t,s,a,{roundTo:i}),u==="context"&&(n.variables[a]=nn(n.variables[a],t,s,{roundTo:i}))}},bh=(e,r)=>{Array.isArray(r?.executedActions)&&r.executedActions.forEach(({type:n,payload:o})=>{Pb(e,n,o)})},Ih=(e,r)=>{let{sectionId:n,lineId:o}=r,s=be({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Object.entries(s).forEach(([i,l])=>{_c(e,i,l)})},Zl=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=fr(n),a=o.timeline[r];if(!a)return e;e.global.autoMode&&St({state:e}),e.global.skipMode&&dr({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=r;try{n.variables=Vo(e.projectData),n.kind==="sceneReplay"&&(Kl(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=D(gn),e.global.overlayStack=[],Xr(e),Wr(e),e.global.isLineCompleted=!0;let t=o.replayStartIndex??0;for(let l=t;l<=r;l++)l>t&&jo(e),Ih(e,o.timeline[l]),bh(e,o.timeline[l]);let s=Kr(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=Do(n);i&&(i.currentLength=Math.min(i.checkpointLengths[r]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=Ol(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},wh=e=>{let{projectData:r}=e,n=e.global??{},{saveSlots:o={},variables:a={},runtime:t={},accountViewedRegistry:s={},accountReplayRegistry:i={},localizationPackages:l=[{l10nId:null,language:null}]}=n;Nl(r),at(r),lt(r),ct(r),Ar(r?.resources?.variables??{});let u=r.story.initialSceneId,c=r.story.scenes[u],p=c.initialSectionId,d=c.sections[p],f={sceneId:u,sectionId:p,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:m}=rn(r),y={...m,...Mr(a,r.resources?.variables??{})};return{projectData:r,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:Ny(s,"accountViewedRegistry"),accountReplayRegistry:Dy(i),nextLineConfig:At(),imageGalleryNavigation:Oo(),sceneReplayNavigation:_o(),sceneReplayEntryId:0,audioCommandId:0,musicRoomPlayer:wn(),saveSlots:_y(o),localizationPackages:D(l),overlayStack:[],variables:y,...nh({projectData:r,loadedGlobalRuntime:t})},contexts:[Uo({pointer:f,projectData:r})]}},vh=({state:e})=>e.global.overlayStack||[],Ah=({state:e})=>e.global.pendingEffects,ec=({state:e})=>e.global.skipMode,kh=({state:e})=>e.global.autoMode,rc=({state:e})=>e.global.dialogueUIHidden,tc=({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=be({state:e},{sectionId:u});if(!p?.lines||!Array.isArray(p.lines))return[];let d=p.lines.findIndex(f=>f.id===c);o=p.lines.slice(0,d+1).map(f=>({sectionId:u,lineId:f.id}))}let t=[],s=ut({variables:{...e.global?.variables??{},...Cr(e)?.variables??{}},runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),i=new Map,l=u=>{let c=i.get(u.sectionId);if(!c){let d=be({state:e},{sectionId:u.sectionId}),f=Array.isArray(d?.lines)?d.lines:[];c={lines:f,lineIndexes:new Map(f.map((m,y)=>[m.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 d=c.lines[c.nextLineIndex],f=d.actions||{};c.presentationState=kr([c.presentationState,f]),c.projections.set(d.id,{line:d,lineActions:f,dialogueState:c.presentationState.dialogue||{}}),c.nextLineIndex+=1}return c.projections.get(u.lineId)??null};for(let u of o){if(!Sy(u))continue;let c=l(u);if(!c)continue;let{line:p,lineActions:d,dialogueState:f}=c;if(!d.dialogue)continue;let m=en({characterId:f.characterId,character:f.character,characters:e.projectData.resources?.characters??{},variables:s}),y=Ey({sectionId:u.sectionId,lineId:p.id,content:d.dialogue.append===!0?f.content:d.dialogue.content,dialogueState:f,characterName:m}),g=t[t.length-1];if((a?u.appendToPrevious===!0:d.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},Ph=(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?.[Gr(t)],c=me(u)?Ut(u):u,p=u?.state?.contexts?.at(-1);!u||c!==s||p?.pointers?.read?.sectionId!==i||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=D(n),o=!0)}o&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},xh=({state:e},r={})=>{let n=Cr(e),o=n?.pointers?.read,a=xt({state:e});if(!n||!M(a?.actions?.dialogue))return e;let t=fr(n),s=t.timeline?.[t.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=Do(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 d=Ry(n);d.currentLength<d.entries.length&&(d.entries=d.entries.slice(0,d.currentLength));let f=a.actions.dialogue.append===!0&&r.appendToPrevious===!0&&Vl(e.projectData,p,o);if(d.entries.push({sectionId:o.sectionId,lineId:o.lineId,...f?{appendToPrevious:!0}:{}}),d.currentLength=d.entries.length,i){for(;d.checkpointLengths.length<t.timeline.length;)d.checkpointLengths.push(d.checkpointLengths.at(-1)??0);d.checkpointLengths[t.currentIndex]=d.currentLength}return Ph(e,r.savedCheckpointOccurrences,d),e},Eh=({state:e})=>e.global.confirmDialog??null,Pt=({state:e},{pointer:r}={})=>{let n=r??Oe({state:e})?.pointer,o=rh({state:e,pointer:n});return th({state:e,form:o.form,pointer:n})},Sh=({state:e},{pointer:r}={})=>!!Pt({state:e},{pointer:r}),xe=({state:e},{pointer:r}={})=>{let n=Pt({state:e},{pointer:r});if(n)return{source:pr,formId:n.id,formKey:n.key};let o=lc({state:e,pointer:r});return o?{source:zr,resourceId:o}:null},Rh=({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=be({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},Yo=({registry:e},r)=>{let{resourceId:n}=r;return!!(Array.isArray(e?.resources)?e.resources:[]).find(t=>t.resourceId===n)},zo=({state:e},r)=>Rh({state:e,registry:e.global.accountViewedRegistry},r),Oh=({state:e},r)=>Yo({registry:e.global.accountViewedRegistry},r),wt=(e,r)=>!Yo({registry:e.global.accountViewedRegistry},{resourceId:r.imageId}),Ho=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),Go=(e,r)=>{let n=Ho(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},xo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!wt(e,r[a]))return r[a]},Ch=({state:e})=>{let r=e.projectData?.resources?.imageGallery;return r===void 0?void 0:D(r)},nc=({state:e})=>{let r=e.projectData?.resources?.imageGallery;if(r===void 0)return null;let n=e.global.imageGalleryNavigation??Oo(),o=Ho(r),a=Go(r,n),t=a*r.pageSize,s=r.groups.slice(t,t+r.pageSize).map(l=>({groupId:l.id,locked:wt(e,l.variants[0]),variants:l.variants.map(u=>({variantId:u.id,imageId:u.imageId,locked:wt(e,u)}))})),i=null;if(typeof n.groupId=="string"&&typeof n.variantId=="string"){let l=r.groups.findIndex(f=>f.id===n.groupId),u=r.groups[l],c=u?.variants.findIndex(f=>f.id===n.variantId),p=c===void 0||c<0?void 0:u.variants[c],d=l<0?-1:Math.floor(l/r.pageSize);p&&d===a&&!wt(e,p)&&(i={groupId:u.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:xo(e,u.variants,c,-1)!==void 0,canMoveToNextVariant:xo(e,u.variants,c,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Xo=(e,r)=>!Yo({registry:e.global.accountViewedRegistry},{resourceId:r.soundId}),Wo=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),Ko=(e,r)=>{let n=Wo(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Eo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!Xo(e,r[a]))return r[a]},sc=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}),$h=(e,r)=>({...sc(r),locked:Xo(e,r)}),El=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")}`},_h=({state:e})=>{let r=e.projectData?.resources?.musicRoom;return r===void 0?void 0:D(r)},oc=({state:e})=>{let r=e.projectData?.resources?.musicRoom;if(r===void 0)return null;let n=e.global.musicRoomPlayer??wn(),o=Wo(r),a=Ko(r,n),t=a*r.pageSize,s=r.tracks.slice(t,t+r.pageSize).map(c=>$h(e,c)),i=r.tracks.findIndex(c=>c.id===n.trackId),l=r.tracks[i],u=l?{...sc(l),canPlayPreviousTrack:Eo(e,r.tracks,i,-1)!==void 0,canPlayNextTrack:Eo(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:El(n.positionMs),durationText:n.durationMs===null?null:El(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}}},Jo=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),Qo=(e,r)=>{let n=Jo(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},jh=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;return r===void 0?void 0:D(r)},Nh=({state:e})=>te(e)!==null,Dh=({state:e})=>{let r=te(e);return r?{sceneId:r.sceneReplay.sceneId,entryId:r.sceneReplay.entryId}:null},ic=(e,r)=>e.global.accountReplayRegistry?.sceneIds?.includes(r)===!0,ac=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;if(r===void 0)return null;let n=e.global.sceneReplayNavigation??_o(),o=Jo(r),a=Qo(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:!ic(e,l.sceneId)})),i=te(e);return{isActive:i!==null,activeSceneId:i?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},Th=({state:e})=>e.global.nextLineConfig,lc=({state:e,pointer:r}={})=>{let n=r??Oe({state:e})?.pointer;if(!n)return;let o=n?.sectionId,a=n?.lineId,s=be({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},cc=({state:e})=>!!lc({state:e}),Lh=({state:e})=>structuredClone(e),Mh=({state:e})=>D(e.projectData.resources?.achievements??{}),qh=({state:e},r)=>{let n=e.projectData.resources?.achievements?.[r?.resourceId];return n===void 0?void 0:D(n)},uc=({state:e})=>e.global.saveSlots,Vh=({state:e},r)=>{let n=r?.slotId,o=Gr(n);return e.global.saveSlots[o]},pc=({state:e})=>D(e.global.localizationPackages),Zo=({state:e})=>Pr(e),Fh=({state:e},r)=>lr(e,r?.runtimeId),An=({state:e})=>{let r={...e.global?.variables??{},...Cr(e)?.variables??{}};return ut({variables:r,runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{}})},Oe=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(n)return{currentPointerMode:"read",pointer:n.pointers?.read}},be=({state:e},r)=>{let{sectionId:n}=r;return Qe(e.projectData,n).section},xt=({state:e})=>{let r=Oe({state:e});if(!r?.pointer)return;let{sectionId:n,lineId:o}=r.pointer,a=be({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(t=>t.id===o)},dc=({state:e})=>{let{sectionId:r,lineId:n}=Oe({state:e}).pointer,a=be({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(d=>{p[d]=c[d]}),p});return kr(i)},Uh=e=>{let r=xt({state:e})?.actions?.dialogue;if(r?.clear===!0||!Array.isArray(r?.content))return"";let n=An({state:e});return r.content.map(o=>`${qr(o?.text,{variables:n})??""}`).join("")},Jr=({state:e})=>vl({text:Uh(e),baseDelay:lr(e,"autoForwardDelay"),speed:lr(e,"autoForwardSpeed")}),Bh=({state:e})=>{let r=fc({state:e}),o=xt({state:e})?.actions??{},a=kr([r??{},o]);return Gs(r??{},a??{})},Yh=({state:e},{sectionId:r})=>{let n=be({state:e},{sectionId:r});if(!n?.lines)return[];let o=[],a={};for(let t of n.lines){let s=t.actions||{},i=kr([a,s]),l=Gs(a,i);o.push({id:t.id,changes:l,presentationState:i}),a=Xs(i)}return o},zh=({state:e},{sectionId:r,includePresentationState:n=!1})=>{let o=Yh({state:e},{sectionId:r});return n?{lines:o}:{lines:o.map(({presentationState:a,...t})=>t)}},fc=({state:e})=>{let{sectionId:r,lineId:n}=Oe({state:e}).pointer,a=be({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 Xs(kr(i))},ei=({state:e},{slotsPerPage:r=6}={})=>{let a=((Zo({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[Gr(i)]||{};t.push({...l,slotId:i})}return{saveSlots:t}},Hh=uc,Gh=ei,Xh=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},Wh=({state:e},r={})=>{let n=dc({state:e}),o=fc({state:e}),a=xt({state:e})?.actions??{},t=e.global.pendingScreenTransition,s=t?.animations?{...a,screen:D(t)}:a,i=t?.animations&&o===null?{}:o,{sectionId:l}=Oe({state:e}).pointer,{sceneId:u}=Qe(e.projectData,l),c={...Zo({state:e}),localizationPackages:pc({state:e})},p=r?.activePersistentAnimations??[],d=r?.restoredPersistentAnimations??[],f=Pt({state:e}),m=cc({state:e}),y=nc({state:e}),g=oc({state:e}),h=ac({state:e}),I=An({state:e}),{saveSlots:b}=ei({state:e}),x=Xh(e);return Za({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:m,isFormVisible:!!f,canRollback:Dc({state:e}),skipOnlyViewedLines:!c.skipUnseenText,isLineCompleted:c.isLineCompleted,skipTransitionsAndAnimations:!!c.skipTransitionsAndAnimations||x,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:f,dialogueHistory:tc({state:e}),saveSlots:b,variables:I,runtime:c,activePersistentAnimations:p,restoredPersistentAnimations:d,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:D(e.global.musicRoomPlayer)})},Kh=({state:e},r)=>(e.global.confirmDialog=Xy(r),e.global.pendingEffects.push({name:"render"}),e),Jh=({state:e})=>(e.global.confirmDialog&&(Xr(e),e.global.pendingEffects.push({name:"render"})),e),Qh=({state:e},r)=>(e.global.overlayStack.push(r),e.global.pendingEffects.push({name:"render"}),Be(e,"pushOverlay",r),e),Zh=({state:e})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),Be(e,"popOverlay",void 0),e),eg=({state:e},r)=>(e.global.overlayStack.length>0&&(e.global.overlayStack[e.global.overlayStack.length-1]=r),e.global.pendingEffects.push({name:"render"}),Be(e,"replaceLastOverlay",r),e),rg=({state:e})=>(e.global.overlayStack=[],Xr(e),Wr(e),e.global.pendingEffects.push({name:"render"}),Be(e,"clearOverlays",void 0),e),tg=(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"})},Et=(e,r,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,Ky(e,n),Wr(e);let o=xe({state:e},{pointer:r}),a=o?.source===zr,t=o?.source===pr;tg(e,{activeInteraction:o});let s=te(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=Ol(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}},kn=(e,r,n)=>{!(r?.source===zr||r?.source===pr)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},mc=({state:e})=>(xe({state:e})||(e.global.skipMode&&(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"})),e.global.autoMode=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.isLineCompleted&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:Jr({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),St=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),ng=({state:e})=>{let r=e.global.autoMode;return xe({state:e})&&!r||(r?St({state:e}):mc({state:e})),e},yc=({state:e})=>(xe({state:e})||(e.global.autoMode&&(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"})),e.global.skipMode=!0,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"startSkipNextTimer"}),e.global.pendingEffects.push({name:"render"})),e),dr=({state:e})=>(e.global.skipMode=!1,e.global.pendingEffects.push({name:"clearSkipNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),sg=({state:e})=>{let r=ec({state:e});return xe({state:e})&&!r||(r?dr({state:e}):yc({state:e})),e},Pn=({state:e})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),Be(e,"showDialogueUI",void 0),e),hc=({state:e})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),Be(e,"hideDialogueUI",void 0),e),og=({state:e})=>(rc({state:e})?Pn({state:e}):hc({state:e}),e),mr=(e,r,n)=>(Fo(e,r,n),Jl(e),e.global.pendingEffects.push({name:"render"}),e),Rt=(e,r,n,o)=>{let a=Fo(e,r,n);return e.global.pendingEffects.push({name:"render"}),Be(e,o,{value:a}),e},ig=({state:e},r)=>mr(e,"dialogueTextSpeed",r?.value),ag=({state:e},r)=>mr(e,"autoForwardDelay",r?.value),lg=({state:e},r)=>mr(e,"autoForwardSpeed",r?.value),cg=({state:e},r)=>mr(e,"skipUnseenText",r?.value),ug=({state:e},r)=>mr(e,"skipTransitionsAndAnimations",r?.value),pg=({state:e},r)=>mr(e,"soundVolume",r?.value),dg=({state:e},r)=>mr(e,"musicVolume",r?.value),fg=({state:e},r)=>mr(e,"muteAll",r?.value),mg=({state:e},r)=>Rt(e,"saveLoadPagination",r?.value,"setSaveLoadPagination"),yg=({state:e})=>{let r=lr(e,"saveLoadPagination")+1;return Rt(e,"saveLoadPagination",r,"incrementSaveLoadPagination"),e},hg=({state:e})=>{let r=lr(e,"saveLoadPagination")-1;return Rt(e,"saveLoadPagination",r,"decrementSaveLoadPagination"),e},gg=({state:e},r)=>Rt(e,"menuPage",r?.value,"setMenuPage"),bg=({state:e},r)=>Rt(e,"menuEntryPoint",r?.value,"setMenuEntryPoint"),Ig=({state:e})=>(e.global.pendingEffects=[],e),wg=({state:e},r)=>(e.global.pendingEffects.push(r),e),vg=({state:e},r)=>{if(te(e))return e;let n=r?.resourceId;return Cl(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},Ag=({state:e},r)=>{if(te(e))return e;let n=r?.resourceId,o=Cl(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},gc=(e,{sectionId:r,resetStoryState:n=!1,screen:o})=>{let a=!!zl(o),t=be({state:e},{sectionId:r});if(!t)return console.warn(`Section not found: ${r}`),e;let s=t.lines?.[0];if(!s)return console.warn(`Section ${r} has no lines`),e;if(n&&!uh(e,{queueRender:!a}))return e;let i=xe({state:e});n&&e.global.skipMode&&dr({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let c=Kr(l),p=c.read;n||Or(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||fr(l,{compatibilityAnchor:!0}),c.read={sectionId:r,lineId:s.id},n?l.rollback=vt({pointer:c.read}):Bo(e,{sectionId:r,lineId:s.id})}let{activeInteraction:u}=Et(e,l?.pointers?.read,{screenTransition:o});return kn(e,i,u),e},kg=({state:e},r)=>{if(te(e))throw new Error("Cannot reset the story while a scene replay is active");return gc(e,{sectionId:r?.sectionId,resetStoryState:!0,screen:r?.screen})},bc=e=>(e.global.accountViewedRegistry=ky(e.global.accountViewedRegistry),e.global.accountViewedRegistry),xn=(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:D(n.value)}))}})},Ic=(e,r)=>{xn(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:[]}}])},Pg=(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=be({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},Or=(e,r)=>{if(te(e)||e.global.accountViewedRegistry===void 0)return;Pg(e,bc(e),r)&&Ic(e,{sections:[{sectionId:r.sectionId,lastLineId:r.lineId}],resources:[]})},xg=({state:e},r)=>(Or(e,r),e.global.pendingEffects.push({name:"render"}),e),Eg=({state:e},r)=>{if(te(e))return e;let{resourceId:n}=r;if(e.global.accountViewedRegistry!==void 0){let o=bc(e);o.resources.find(t=>t.resourceId===n)||(o.resources.push({resourceId:n}),Ic(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Ye=(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}"`)})},So=(e,r,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${r}`)},En=(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"}))},Sg=({state:e},r)=>{let n="showImageGalleryVariant";Ye(n,r,hy),So(n,"groupId",r.groupId),Object.prototype.hasOwnProperty.call(r,"variantId")&&So(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||wt(e,s)||En(e,{groupId:t.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},wc=(e,r,n,o)=>{Ye(o,r,Co);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=xo(e,s.variants,i,n);return l&&En(e,{...t,variantId:l.id}),e},Rg=({state:e},r)=>wc(e,r,-1,"moveToPreviousImageGalleryVariant"),Og=({state:e},r)=>wc(e,r,1,"moveToNextImageGalleryVariant"),Cg=({state:e},r)=>{if(Ye("clearImageGallerySelection",r,Co),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return En(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},vc=(e,r)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=Ho(n);if(r>=o)return e;let a=e.global.imageGalleryNavigation,t=Go(n,a);return r===t||En(e,{groupId:null,variantId:null,pageIndex:r}),e},$g=({state:e},r)=>{if(Ye("moveToImageGalleryPage",r,gy),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return vc(e,r.pageIndex)},Ac=(e,r,n,o)=>{Ye(o,r,Co);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=Go(a,e.global.imageGalleryNavigation)+n;return s<0?e:vc(e,s)},_g=({state:e},r)=>Ac(e,r,1,"moveToNextImageGalleryPage"),jg=({state:e},r)=>Ac(e,r,-1,"moveToPreviousImageGalleryPage"),Ze=(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}"`)})},Ng=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error(`${e} requires a non-empty trackId`)},Ve=e=>{e.global.pendingEffects.push({name:"render"})},kc=(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:vn(e),operation:"pause"});let i=kt(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},Ve(e)},Dg=({state:e},r)=>{let n="playMusicRoomTrack";Ze(n,r,by),Ng(n,r.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(t=>t.id===r.trackId);return!a||Xo(e,a)||kc(e,a),e},Tg=({state:e},r)=>{Ze("playMusicRoom",r,Hr);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=kt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,t&&(o.readiness=o.durationMs===null?"loading":"ready"),Ve(e),e},Lg=({state:e},r)=>{Ze("pauseMusicRoom",r,Hr);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=kt(e,"pause"),o.seekFallback=null,o.status="paused",Ve(e)),e},Mg=({state:e},r)=>{Ze("stopMusicRoom",r,Hr);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=kt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,Ve(e)),e},qg=({state:e},r)=>{if(Ze("seekMusicRoom",r,Iy),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=kt(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"),Ve(e),e},Pc=(e,r,n,o)=>{Ze(o,r,Hr);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=Eo(e,a.tracks,s,n);return i&&kc(e,i),e},Vg=({state:e},r)=>Pc(e,r,-1,"playPreviousMusicRoomTrack"),Fg=({state:e},r)=>Pc(e,r,1,"playNextMusicRoomTrack"),Ug=({state:e},r)=>{Ze("clearMusicRoomSelection",r,Hr);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,t={commandId:vn(e),operation:"resume"};return e.global.musicRoomPlayer={...wn({bgmPlayback:t}),pageIndex:a},Ve(e),e},xc=(e,r)=>{let n=e.projectData?.resources?.musicRoom;if(!n||r>=Wo(n))return e;let o=e.global.musicRoomPlayer,a=Ko(n,o);return r===a||(o.pageIndex=r,Ve(e)),e},Bg=({state:e},r)=>{if(Ze("moveToMusicRoomPage",r,wy),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return xc(e,r.pageIndex)},Ec=(e,r,n,o)=>{Ze(o,r,Hr);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let t=Ko(a,e.global.musicRoomPlayer)+n;return t<0?e:xc(e,t)},Yg=({state:e},r)=>Ec(e,r,1,"moveToNextMusicRoomPage"),zg=({state:e},r)=>Ec(e,r,-1,"moveToPreviousMusicRoomPage"),Sr=e=>{let r=te(e);if(!r)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=D(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(),ah(e,n),e.global.pendingEffects.push({name:"render"}),!0},Hg=({state:e},r)=>{let n="startSceneReplay";if(Ye(n,r,vy),So(n,"sceneId",r.sceneId),te(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||!ic(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=oh(e);ih(e);let c=Uo({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 Kl(e,c),e.contexts.push(c),Et(e,c.pointers.read),e},Sc=({state:e},r)=>{Ye("finishSceneReplay",r,$o);let o=te(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(Cr(e)?.rollback?.isRestoring===!0)return e;let t=Oe({state:e})?.pointer,{sceneId:s}=Qe(e.projectData,t?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=Py(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),xn(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},Gg=({state:e},r)=>(Ye("exitSceneReplay",r,$o),Sr(e),e),Rc=(e,r)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||r>=Jo(n))return e;let o=Qo(n,e.global.sceneReplayNavigation);return r===o||(e.global.sceneReplayNavigation.pageIndex=r,e.global.pendingEffects.push({name:"render"})),e},Xg=({state:e},r)=>{if(Ye("moveToSceneReplayPage",r,Ay),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return Rc(e,r.pageIndex)},Oc=(e,r,n,o)=>{Ye(o,r,$o);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let t=Qo(a,e.global.sceneReplayNavigation)+n;return t<0?e:Rc(e,t)},Wg=({state:e},r)=>Oc(e,r,1,"moveToNextSceneReplayPage"),Kg=({state:e},r)=>Oc(e,r,-1,"moveToPreviousSceneReplayPage"),Sn=(e,r)=>{let n=e.global.musicRoomPlayer;return!M(r)||r.id!==my||n.trackId===null||!n.playback||r.commandId!==n.playback.commandId?null:n},ri=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,Cc=(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,Ve(e)),e),Jg=({state:e},r)=>{let n=Sn(e,r);return!n||n.readiness!=="loading"||!ri(r)?e:Cc(e,n,r,{readiness:"ready"})},Qg=({state:e},r)=>{let n=Sn(e,r);return!n||n.readiness!=="ready"||!ri(r)||n.status==="stopped"&&r.positionMs!==0||n.status==="ended"&&r.positionMs!==r.durationMs?e:Cc(e,n,r)},Zg=({state:e},r)=>{let n=Sn(e,r);return!n||n.readiness!=="ready"||n.status!=="playing"||!ri(r)||r.positionMs!==r.durationMs||(n.status="ended",n.positionMs=r.positionMs,n.durationMs=r.durationMs,n.seekFallback=null,Ve(e)),e},eb=({state:e},r)=>{let n=Sn(e,r);if(!n||typeof r.errorCode!="string"||!yy.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&&Ve(e),e}return n.readiness="error",n.status="stopped",n.positionMs=0,n.seekFallback=null,Ve(e),e},$c=({state:e},r)=>{let n=Cy(r.manual),{auto:o,applyMode:a}=r,t=e.global.nextLineConfig.auto?.enabled,s=e.global.nextLineConfig?.applyMode,i=e.contexts?.[e.contexts.length-1]?.rollback?.isRestoring===!0;n&&o?(e.global.nextLineConfig={manual:n,auto:o},a!==void 0?e.global.nextLineConfig.applyMode=a:s!==void 0&&(e.global.nextLineConfig.applyMode=s)):(n&&(e.global.nextLineConfig.manual=n),o&&(e.global.nextLineConfig.auto=o),a!==void 0&&(e.global.nextLineConfig.applyMode=a));let l=e.global.nextLineConfig.auto?.enabled,u=xe({state:e});return!i&&!u&&l===!0&&!t?e.global.nextLineConfig.auto?.trigger==="fromStart"?e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:e.global.nextLineConfig.auto.delay}}):e.global.isLineCompleted&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:e.global.nextLineConfig.auto.delay}}):!i&&l===!1&&t&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.pendingEffects.push({name:"render"}),Be(e,"setNextLineConfig",r),e},rb=({state:e},r)=>{if(te(e))throw new Error("Cannot save while a scene replay is active");let n=r?.slotId;if(n==null||n==="")throw new Error("saveSlot requires slotId");let{thumbnailImage:o}=r,a=r?.savedAt,t=Gr(n),s=D(e.contexts);s?.forEach(u=>{Kr(u),Ql(u.rollback),jy(u.rollback)});let i={contexts:s},l={formatVersion:Rl,slotId:Dl(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},tb=({state:e},r)=>{if(te(e))throw new Error("Cannot load while a scene replay is active");let n=r?.slotId;if(n==null||n==="")throw new Error("loadSlot requires slotId");let o=Gr(n),a=e.global.saveSlots[o];if(a){let t=Gy(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=At(),e.global.overlayStack=[],e.global.isLineCompleted=!0,Xr(e),Wr(e),No(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},nb=({state:e},r)=>{if(te(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=r;Nl(n),at(n),lt(n),ct(n),Ar(n?.resources?.variables??{}),Zs(n),e.projectData=n,e.global.imageGalleryNavigation=Oo(),e.global.sceneReplayNavigation=_o(),No(e);let o=n?.resources?.variables??{},{contextVariableDefaultValues:a,globalVariablesDefaultValues:t}=rn(n??{});return Object.prototype.hasOwnProperty.call(e.global??{},"variables")&&(e.global.variables={...t,...Mr(e.global.variables,o)}),e.contexts?.forEach(s=>{Object.prototype.hasOwnProperty.call(s??{},"variables")&&(s.variables={...a,...Mr(s.variables,o)})}),Xr(e),Wr(e),e.global.pendingEffects.push({name:"render"}),e},sb=({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,Fo(e,"localizationPackageId",n),Jl(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!xe({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:Jr({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},ob=({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&&!be({state:e},{sectionId:n}))return console.warn(`Section not found: ${n}`),e;let s=be({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=xe({state:e}),u=Kr(a);u.read={sectionId:t,lineId:o};let{activeInteraction:c}=Et(e,u.read);return kn(e,l,c),e},ib=({state:e},r)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return Pn({state:e}),e;let n=xe({state:e});if(n?.source===zr&&r?.bypassChoice!==!0||n?.source===pr&&r?._interactionSource!==pr)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,te(e)?.sceneReplay.exitOnLineCompleted)return Sr(e),e;let d=Oe({state:e})?.pointer,f=d?.sectionId,m=d?.lineId;f&&m&&Or(e,{sectionId:f,lineId:m}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:Jr({state:e})}});let y=e.global.nextLineConfig;return y?.auto?.enabled&&!n&&y.auto.trigger!=="fromStart"&&e.global.pendingEffects.push({name:"nextLineConfigTimer",payload:{delay:y.auto.delay}}),e.global.pendingEffects.push({name:"render"}),e}if(te(e)?.sceneReplay.finishOnNextAdvance)return Sr(e),e;let a=Oe({state:e})?.pointer,t=a?.sectionId,s=be({state:e},{sectionId:t}),i=e.contexts[e.contexts.length-1],l=s?.lines||[],c=l.findIndex(p=>p.id===a?.lineId)+1;if(c<l.length){let p=l[c],d=!lr(e,"skipUnseenText");if(e.global.skipMode&&d&&!zo({state:e},{sectionId:t,lineId:p.id}))return dr({state:e}),e;if(i&&!i.rollback&&fr(i,{compatibilityAnchor:!0}),i){let m=Kr(i),y=m.read?.lineId;y&&t&&Or(e,{sectionId:t,lineId:y}),m.read={sectionId:t,lineId:p.id}}Bo(e,{sectionId:t,lineId:p.id}),jo(e);let{activeInteraction:f}=Et(e,{sectionId:t,lineId:p.id});kn(e,n,f)}else{if(te(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Sr(e),e;e.global.autoMode&&St({state:e}),e.global.skipMode&&dr({state:e})}return e},ab=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,te(e)?.sceneReplay.exitOnLineCompleted)return Sr(e),e;let n=xe({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:Jr({state:e})}});let o=Oe({state:e})?.pointer,a=o?.sectionId,t=o?.lineId;a&&t&&Or(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},lb=({state:e},r)=>gc(e,{sectionId:r?.sectionId,screen:r?.screen}),cb=({state:e},r)=>{let n=r?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!n)return Pn({state:e}),e;let o=xe({state:e});if(o?.source===zr&&r?.bypassChoice!==!0||o?.source===pr&&r?._interactionSource!==pr||o&&o.source!==zr&&o.source!==pr)return e;let a=te(e);if(a?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Sr(e),e):(a.sceneReplay.exitOnLineCompleted=!0,e);let t=Oe({state:e})?.pointer,s=t?.sectionId,i=be({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],u=i?.lines||[],p=u.findIndex(d=>d.id===t?.lineId)+1;if(p<u.length){let d=u[p],f=!lr(e,"skipUnseenText");if(e.global.skipMode&&f&&!zo({state:e},{sectionId:s,lineId:d.id})&&(dr({state:e}),!n))return e;if(l&&!l.rollback&&fr(l,{compatibilityAnchor:!0}),l){let y=Kr(l),g=y.read?.lineId;g&&s&&Or(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:d.id}}Bo(e,{sectionId:s,lineId:d.id}),jo(e);let{activeInteraction:m}=Et(e,{sectionId:s,lineId:d.id});kn(e,o,m)}else{if(te(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Sr(e),e;e.global.autoMode&&St({state:e}),e.global.skipMode&&dr({state:e}),e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))}return e},ti=(e,r={})=>{let n=Pt({state:e});return!n||r.formKey&&r.formKey!==n.key||r.formId&&r.formId!==n.id?null:n},ub=(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(Te(n))throw new Error(`Cannot update computed variable: ${r.variableId}`);if(n?.readonly===!0)throw new Error(`Cannot update readonly variable: ${r.variableId}`);if(pt(o,r.variableId),tn(a,"set",r.variableId),te(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${r.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},pb=(e,r)=>({id:e.id,key:e.key,valid:!0,values:D(r),fields:D(e.fields),fieldList:D(e.fieldList)}),db=e=>{if(e.global.isLineCompleted)return;e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition;let r=Oe({state:e})?.pointer,n=r?.sectionId,o=r?.lineId;n&&o&&Or(e,{sectionId:n,lineId:o})},fb=({state:e},r={})=>{let n=ti(e,r),o=r.field;if(!n?.fields?.[o])return e;let a=Gl(e,n.key),t=bn(r.value),s=n.fields[o],i=Mo(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},mb=({state:e},r={})=>{let n=ti(e,r);if(!n)return{submitted:!1,valid:!1,reason:"inactive"};let o=Gl(e,n.key);o.submitted=!0;let a={},t={};if(Object.entries(n.fields).forEach(([p,d])=>{let f=Object.prototype.hasOwnProperty.call(o.values,p)?o.values[p]:d.value,m=Mo(d,f);o.touched[p]=!0,m&&(t[p]=m),a[p]=Hl(d,f)}),o.errors=t,Object.keys(t).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:D(t),form:{id:n.id,key:n.key,values:D(a)}};let s=e.contexts[e.contexts.length-1];if(s?.rollback?.isRestoring)return{submitted:!1,valid:!1,reason:"restoring"};let i=!1,l=[],u=[];Object.entries(n.fields).forEach(([p,d])=>{let{scope:f}=ub(e,d),m=f==="context"?s.variables:e.global.variables,y=a[p];m[d.variableId]=nn(m[d.variableId],"set",y),f==="context"&&(i=!0,u.push({variableId:d.variableId,op:"set",value:y})),(f==="device"||f==="account")&&l.push({scope:f,path:`variables.${d.variableId}`,op:"set",value:D(m[d.variableId])})}),i&&Be(e,"updateVariable",{id:"submitForm",operations:u}),xn(e,l);let c=pb(n,a);return db(e),delete e.global.formDrafts[n.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:c}},yb=({state:e},r={})=>{let n=ti(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:D(n.values),fields:D(n.fields),fieldList:D(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},hb=({state:e},r)=>{let{id:n,operations:o=[]}=r;if(!n)throw new Error("updateVariable requires an id field");if(typeof n!="string"||!/^[a-zA-Z0-9]+$/.test(n))throw new Error(`updateVariable id must be alphanumeric, got: "${n}"`);let a=e.contexts[e.contexts.length-1];if(a?.rollback?.isRestoring)return e;let t=!1,s=[],i=[];return o.forEach(({variableId:l,op:u,value:c,roundTo:p})=>{let d=e.projectData.resources?.variables?.[l],f=d?.scope,m=d?.type;if(Te(d))throw new Error(`Cannot update computed variable: ${l}`);if(d?.readonly===!0)throw new Error(`Cannot update readonly variable: ${l}`);if(pt(f,l),tn(m,u,l),zs(m,u,c,l,{roundTo:p}),te(e)&&f!=="context")throw new Error(`Cannot update ${f}-scoped variable "${l}" while a scene replay is active`);let y=f==="context"?a.variables:e.global.variables;if(f==="context"){t=!0;let g={variableId:l,op:u,value:c};p!==void 0&&(g.roundTo=p),i.push(g)}y[l]=nn(y[l],u,c,{roundTo:p}),(f==="device"||f==="account")&&s.push({scope:f,path:`variables.${l}`,op:"set",value:D(y[l])})}),t&&Be(e,"updateVariable",{id:n,operations:i}),xn(e,s),e.global.pendingEffects.push({name:"render"}),e},Sl=e=>(r,n)=>e({state:r},n),gb=e=>({variables:ut({variables:{...e.global?.variables??{},...Cr(e)?.variables??{}},runtime:Pr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:Pr(e)}),bb=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")},Ib=(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")},wb=(e,r)=>{bb(r);for(let n=0;n<r.branches.length;n+=1){let o=r.branches[n];if(Ib(o,n,r.branches.length),!(Object.prototype.hasOwnProperty.call(o,"when")&&!it(o.when,gb(e)))){Object.entries(o.actions).forEach(([t,s])=>{_c(e,t,s)});return}}},vb={conditional:{replayLine:wb},updateVariable:{recordSources:[qo],replayLine:xl,replayRecorded:xl,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Sl($c)},finishSceneReplay:{replayLine:Sl(Sc)}},Rn=e=>vb[e]??null,Ab=e=>Rn(e)?.persistInSaveSlot===!0,kb=(e,r)=>{let n=Rn(e)?.recordSources;return Array.isArray(n)&&n.includes(r)},Pb=(e,r,n)=>{Rn(r)?.replayRecorded?.(e,n)},_c=(e,r,n)=>{Rn(r)?.replayLine?.(e,n)},xb=e=>e?.returnable!==!1,jc=(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(xb(e.timeline[o])&&(n-=1,n===0))return o;return-1},Nc=({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=jc(a,n);if(t<0||t>=a.timeline.length)return null;let s=a.timeline[t];return{sectionId:s.sectionId,lineId:s.lineId}},Dc=({state:e})=>Nc({state:e},{offset:-1})!==null,Eb=({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=fr(o,{compatibilityAnchor:!o.rollback}),t=jc(a,n);return t<0||t>=a.timeline.length?e:Zl(e,t)},Sb=({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=fr(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:Zl(e,i)},Tc=e=>{let r=wh(e);return Ki(r,{selectPendingEffects:Ah,selectSkipMode:ec,selectAutoMode:kh,selectIsChoiceVisible:cc,selectIsFormVisible:Sh,selectActiveInteraction:xe,selectActiveForm:Pt,selectDialogueUIHidden:rc,selectDialogueHistory:tc,selectConfirmDialog:Eh,selectIsLineAccountViewed:zo,selectIsResourceAccountViewed:Oh,selectImageGalleryConfig:Ch,selectImageGallery:nc,selectMusicRoomConfig:_h,selectMusicRoom:oc,selectSceneReplayConfig:jh,selectSceneReplay:ac,selectIsSceneReplayActive:Nh,selectActiveSceneReplayEntry:Dh,selectNextLineConfig:Th,selectSystemState:Lh,selectAchievements:Mh,selectAchievement:qh,selectSaveSlotMap:uc,selectSaveSlots:Hh,selectSaveSlot:Vh,selectLocalizationPackages:pc,selectRuntime:Zo,selectRuntimeValue:Fh,selectAllVariables:An,selectCurrentPointer:Oe,selectSection:be,selectCurrentLine:xt,selectPresentationState:dc,selectAutoForwardTimerDelay:Jr,selectPresentationChanges:Bh,selectSectionLineChanges:zh,selectSaveSlotPage:ei,selectCurrentPageSlots:Gh,selectRenderState:Wh,selectOverlayStack:vh,selectLineIdByOffset:Nc,selectCanRollback:Dc,selectRollbackCursor:dh,startAutoMode:mc,stopAutoMode:St,toggleAutoMode:ng,startSkipMode:yc,stopSkipMode:dr,toggleSkipMode:sg,showDialogueUI:Pn,hideDialogueUI:hc,toggleDialogueUI:og,setDialogueTextSpeed:ig,setAutoForwardDelay:ag,setAutoForwardSpeed:lg,setSkipUnseenText:cg,setSkipTransitionsAndAnimations:ug,setSoundVolume:pg,setMusicVolume:dg,setMuteAll:fg,setSaveLoadPagination:mg,incrementSaveLoadPagination:yg,decrementSaveLoadPagination:hg,setMenuPage:gg,setMenuEntryPoint:bg,showConfirmDialog:Kh,hideConfirmDialog:Jh,resetStoryAtSection:kg,clearPendingEffects:Ig,appendPendingEffect:wg,completeAchievement:vg,setAchievementProgress:Ag,beginRollbackActionBatch:hh,endRollbackActionBatch:gh,markRollbackCheckpointTransient:fh,markSavedRollbackCheckpointTransient:mh,recordCurrentDialogueHistory:xh,addViewedLine:xg,addViewedResource:Eg,showImageGalleryVariant:Sg,moveToPreviousImageGalleryVariant:Rg,moveToNextImageGalleryVariant:Og,clearImageGallerySelection:Cg,moveToImageGalleryPage:$g,moveToNextImageGalleryPage:_g,moveToPreviousImageGalleryPage:jg,playMusicRoomTrack:Dg,playMusicRoom:Tg,pauseMusicRoom:Lg,stopMusicRoom:Mg,seekMusicRoom:qg,playPreviousMusicRoomTrack:Vg,playNextMusicRoomTrack:Fg,clearMusicRoomSelection:Ug,moveToMusicRoomPage:Bg,moveToNextMusicRoomPage:Yg,moveToPreviousMusicRoomPage:zg,musicRoomSoundReady:Jg,musicRoomSoundProgress:Qg,musicRoomSoundComplete:Zg,musicRoomSoundError:eb,startSceneReplay:Hg,finishSceneReplay:Sc,exitSceneReplay:Gg,moveToSceneReplayPage:Xg,moveToNextSceneReplayPage:Wg,moveToPreviousSceneReplayPage:Kg,setNextLineConfig:$c,saveSlot:rb,loadSlot:tb,updateProjectData:nb,updateLocalizationPackage:sb,sectionTransition:lb,jumpToLine:ob,nextLine:ib,markLineCompleted:ab,rollbackToLine:Sb,rollbackByOffset:Eb,pushOverlay:Qh,popOverlay:Zh,replaceLastOverlay:eg,clearOverlays:rg,updateFormField:fb,submitForm:mb,cancelForm:yb,updateVariable:hb,nextLineFromSystem:cb},{transformActionFirstArgument:o=>({state:o}),transformSelectorFirstArgument:o=>({state:o})})};var Rb="route-engine",Ob="projectPersistence";var Mc=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),ae=e=>Object.prototype.toString.call(e)==="[object Object]",Lc="variables.",Cb=(e={})=>{let r=ae(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!ae(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)}:!ae(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},$b=(e={})=>{let r=ae(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!ae(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)}:!ae(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},_b=(e,r)=>{let n=$b(e),o=Cb(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}},jb=(e={})=>{let r=ae(e)?e:{},n=Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},Nb=(e,r)=>{let n=jb(e),o=ae(r)&&Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},qc=(e={})=>{let r=ae(e)?e:{};return{saveSlots:ae(r.saveSlots)?r.saveSlots:{},globalDeviceVariables:ae(r.globalDeviceVariables)?r.globalDeviceVariables:{},globalAccountVariables:ae(r.globalAccountVariables)?r.globalAccountVariables:{},globalRuntime:ae(r.globalRuntime)?r.globalRuntime:{},accountViewedRegistry:ae(r.accountViewedRegistry)?r.accountViewedRegistry:{},accountReplayRegistry:ae(r.accountReplayRegistry)?r.accountReplayRegistry:{}}},Db=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((r,n)=>{if(!ae(r))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=r.path?.startsWith(Lc)?r.path.slice(Lc.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(!ae(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}].`)})},Tb=(e,r)=>{let n={};return Db(r).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=_b(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=Nb(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},ni=e=>{if(typeof e!="string")return null;let r=e.trim();return r.length>0?r:null},Lb=e=>{let r=ni(e);if(!r)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return r},Mb=e=>{let r=e??globalThis.indexedDB;if(!r)throw new Error("IndexedDB is not available in this environment.");return r},qb=({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}".`))}}),Vb=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.`))}})},Ot=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=f=>{c||(c=!0,s(f))},d=()=>{c||(c=!0,t())};u.onerror=()=>{p(u.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},u.onsuccess=()=>{let f=qc(u.result),m=typeof o=="function"?o(f):o,y={namespace:n,version:1,...Mc(),...f,...m},g=l.put(y);g.onerror=()=>{p(g.error??new Error(`Failed to persist namespace "${n}" to IndexedDB.`))}},i.oncomplete=()=>{d()},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}".`))}})},Fb=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=d=>{u||(u=!0,t(d))},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}".`))}})},si=(e={})=>{let{indexedDB:r,databaseName:n=Rb,objectStoreName:o=Ob,namespace:a}=e,t=Mb(r),s=Lb(a),i=qb({indexedDB:t,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await Vb({databasePromise:i,objectStoreName:o,namespace:s});return{...Mc(),...qc(l)}},clear:async()=>Fb({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Ot({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:ae(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Ot({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:ae(l)?l:{}}}),saveGlobalAccountVariables:async l=>Ot({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:ae(l)?l:{}}}),saveGlobalRuntime:async l=>Ot({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:ae(l)?l:{}}}),applyScopedDataUpdates:async l=>Ot({databasePromise:i,objectStoreName:o,namespace:s,patch:u=>Tb(u,l)})}},Ub=si;var Gc=Xc;var Bb={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},er=Object.prototype.hasOwnProperty,Yb={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 _e(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 f={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"x"},message:"must have required property 'x'"};t===null?t=[f]:t.push(f),s++}if(e.y===void 0){let f={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"y"},message:"must have required property 'y'"};t===null?t=[f]:t.push(f),s++}for(let f in e)if(!(f==="x"||f==="y"||f==="quality"||f==="kernelSize"||f==="repeatEdgePixels")){let m={instancePath:r,schemaPath:"#/anyOf/1/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(e.x!==void 0){let f=e.x;if(typeof f=="number"){if(f<0||isNaN(f)){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 f=e.y;if(typeof f=="number"){if(f<0||isNaN(f)){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 f=e.quality;if(typeof f=="number"){if(f<1||isNaN(f)){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 f=e.kernelSize;if(!(typeof f=="number"&&!(f%1)&&!isNaN(f))){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(!(f===5||f===7||f===9||f===11||f===13||f===15)){let m={instancePath:r+"/kernelSize",schemaPath:"#/anyOf/1/properties/kernelSize/enum",keyword:"enum",params:{allowedValues:Yb.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 f={instancePath:r+"/repeatEdgePixels",schemaPath:"#/anyOf/1/properties/repeatEdgePixels/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}}else{let f={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),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 _e.errors=t,s===0}var zb={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};function Cn(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:zb.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 Cn.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.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&&(Cn(e.playback,{instancePath:r+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(t=t===null?Cn.errors:t.concat(Cn.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 Q.errors=t,s===0}function $n(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(!er.call(Bb.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&&(_e(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?_e.errors:t.concat(_e.errors),s=t.length)),e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 $n.errors=t,s===0}function Xc(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return $n(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?$n.errors:t.concat($n.errors),s=t.length),Xc.errors=t,s===0}var Wc=Kc;var Hb={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},Uc={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},$e=Fc().default;function Ce(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(!er.call(Uc.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($e(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($e(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:Uc.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 Ce.errors=t,s===0}function _n(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 f;if(e.resourceId===void 0&&(f="resourceId")||e.sounds===void 0&&(f="sounds")){let m={};t===null?t=[m]:t.push(m),s++}}var u=l===s;if(u){let f={instancePath:r,schemaPath:"#/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[f]:t.push(f),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 f;if(e.startDelayMs===void 0&&(f="startDelayMs")||e.sounds===void 0&&(f="sounds")){let m={};t===null?t=[m]:t.push(m),s++}}var d=p===s;if(d){let f={instancePath:r,schemaPath:"#/allOf/1/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[f]:t.push(f),s++}else s=c,t!==null&&(c?t.length=c:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)){for(let f in e)if(!(f==="sounds"||f==="resourceId"||f==="loop"||f==="interruption"||f==="volume"||f==="muted"||f==="pan"||f==="startDelayMs")){let m={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(e.sounds!==void 0){let f=e.sounds;if(Array.isArray(f)){let m=f.length;for(let y=0;y<m;y++)Ce(f[y],{instancePath:r+"/sounds/"+y,parentData:f,parentDataProperty:y,rootData:a})||(t=t===null?Ce.errors:t.concat(Ce.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 f={instancePath:r+"/resourceId",schemaPath:"#/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[f]:t.push(f),s++}if(e.loop!==void 0&&typeof e.loop!="boolean"){let f={instancePath:r+"/loop",schemaPath:"#/properties/loop/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(e.interruption!==void 0){let f=e.interruption;if(typeof f!="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(!(f==="immediate"||f==="loopEnd")){let m={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:Hb.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 f=e.volume;if(typeof f=="number"){if(f>100||isNaN(f)){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(f<0||isNaN(f)){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 f={instancePath:r+"/muted",schemaPath:"#/properties/muted/type",keyword:"type",params:{type:"boolean"},message:"must be boolean"};t===null?t=[f]:t.push(f),s++}if(e.pan!==void 0){let f=e.pan;if(typeof f=="number"){if(f>1||isNaN(f)){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(f<-1||isNaN(f)){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 f=e.startDelayMs;if(typeof f=="number"){if(f<0||isNaN(f)){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 f={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),s++}return _n.errors=t,s===0}function Kc(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return _n(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?_n.errors:t.concat(_n.errors),s=t.length),Kc.errors=t,s===0}var Jc=Qc;var Gb={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 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 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],d=s,f=!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=d,t!==null&&(d?t.length=d: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;f=i}if(!f){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(!er.call(Gb.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&&(_e(p.blur,{instancePath:r+"/items/"+c+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?_e.errors:t.concat(_e.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 I=y[h];if(I&&typeof I=="object"&&!Array.isArray(I)){for(let b in I)if(!(b==="id"||b==="resourceId"||b==="animationName"||b==="animationSpeed"||b==="loop")){let x={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=[x]:t.push(x),s++}if(I.id!==void 0&&typeof I.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(I.resourceId!==void 0&&typeof I.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(I.animationName!==void 0&&typeof I.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(I.animationSpeed!==void 0&&typeof I.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(I.loop!==void 0&&typeof I.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&&(Q(p.animations,{instancePath:r+"/items/"+c+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.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 jn.errors=t,s===0}function Qc(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),Qc.errors=t,s===0}var Zc=eu;function Nn(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 d={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:p},message:"must NOT have additional properties"};t===null?t=[d]:t.push(d),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 d=p.click;if(!(d&&typeof d=="object"&&!Array.isArray(d))){let f={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=[f]:t.push(f),s++}}}else{let d={instancePath:r+"/items/"+u+"/events",schemaPath:"#/properties/items/items/properties/events/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[d]:t.push(d),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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Nn.errors=t,s===0}function eu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Nn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Nn.errors:t.concat(Nn.errors),s=t.length),eu.errors=t,s===0}var ru=tu;function Dn(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 Dn.errors=t,s===0}function tu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Dn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Dn.errors:t.concat(Dn.errors),s=t.length),tu.errors=t,s===0}var nu=su;function Tn(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 Tn.errors=t,s===0}function su(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Tn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Tn.errors:t.concat(Tn.errors),s=t.length),su.errors=t,s===0}var ou=iu;var Bc={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 Ln(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(!er.call(Bc.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&&(Q(i.animations,{instancePath:r+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.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:Bc.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 d=u[p];if(d&&typeof d=="object"&&!Array.isArray(d)){if(d.id===void 0){let f={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=[f]:t.push(f),s++}if(d.resourceId===void 0){let f={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=[f]:t.push(f),s++}for(let f in d)if(!(f==="id"||f==="resourceId"||f==="animationName"||f==="animationSpeed"||f==="loop")){let m={instancePath:r+"/character/sprite/items/"+p,schemaPath:"#/properties/character/properties/sprite/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:f},message:"must NOT have additional properties"};t===null?t=[m]:t.push(m),s++}if(d.id!==void 0&&typeof d.id!="string"){let f={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=[f]:t.push(f),s++}if(d.resourceId!==void 0&&typeof d.resourceId!="string"){let f={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=[f]:t.push(f),s++}if(d.animationName!==void 0&&typeof d.animationName!="string"){let f={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=[f]:t.push(f),s++}if(d.animationSpeed!==void 0&&typeof d.animationSpeed!="number"){let f={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=[f]:t.push(f),s++}if(d.loop!==void 0&&typeof d.loop!="boolean"){let f={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=[f]:t.push(f),s++}}else{let f={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=[f]:t.push(f),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&&(Q(l.animations,{instancePath:r+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.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 Ln.errors=t,s===0}function iu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Ln(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Ln.errors:t.concat(Ln.errors),s=t.length),iu.errors=t,s===0}var au=lu;function Mn(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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Mn.errors=t,s===0}function lu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Mn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Mn.errors:t.concat(Mn.errors),s=t.length),lu.errors=t,s===0}var cu=uu;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==="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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 qn.errors=t,s===0}function uu(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),uu.errors=t,s===0}var pu=du;function Vn(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&&(_e(e.blur,{instancePath:r+"/blur",parentData:e,parentDataProperty:"blur",rootData:a})||(t=t===null?_e.errors:t.concat(_e.errors),s=t.length)),e.animations!==void 0&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Vn.errors=t,s===0}function du(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Vn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Vn.errors:t.concat(Vn.errors),s=t.length),du.errors=t,s===0}var fu=mu;var Xb={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 Fn(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 d=0;d<p;d++)Ce(c[d],{instancePath:r+"/items/"+d,parentData:c,parentDataProperty:d,rootData:a})||(t=t===null?Ce.errors:t.concat(Ce.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 d=0;d<p;d++){let f=c[d];if(f&&typeof f=="object"&&!Array.isArray(f)){if(f.id===void 0){let m={instancePath:r+"/channels/"+d,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(f.sounds===void 0){let m={instancePath:r+"/channels/"+d,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 f)if(!(m==="id"||m==="volume"||m==="muted"||m==="pan"||m==="loop"||m==="interruption"||m==="sounds")){let y={instancePath:r+"/channels/"+d,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(f.id!==void 0){let m=f.id;if(typeof m=="string"){if($e(m)<1){let y={instancePath:r+"/channels/"+d+"/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/"+d+"/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(f.volume!==void 0){let m=f.volume;if(typeof m=="number"){if(m>100||isNaN(m)){let y={instancePath:r+"/channels/"+d+"/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/"+d+"/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/"+d+"/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(f.muted!==void 0&&typeof f.muted!="boolean"){let m={instancePath:r+"/channels/"+d+"/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(f.pan!==void 0){let m=f.pan;if(typeof m=="number"){if(m>1||isNaN(m)){let y={instancePath:r+"/channels/"+d+"/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/"+d+"/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/"+d+"/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(f.loop!==void 0&&typeof f.loop!="boolean"){let m={instancePath:r+"/channels/"+d+"/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(f.interruption!==void 0){let m=f.interruption;if(typeof m!="string"){let y={instancePath:r+"/channels/"+d+"/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/"+d+"/interruption",schemaPath:"#/properties/channels/items/properties/interruption/enum",keyword:"enum",params:{allowedValues:Xb.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(f.sounds!==void 0){let m=f.sounds;if(Array.isArray(m)){let y=m.length;for(let g=0;g<y;g++)Ce(m[g],{instancePath:r+"/channels/"+d+"/sounds/"+g,parentData:m,parentDataProperty:g,rootData:a})||(t=t===null?Ce.errors:t.concat(Ce.errors),s=t.length)}else{let y={instancePath:r+"/channels/"+d+"/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/"+d,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 c={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[c]:t.push(c),s++}return Fn.errors=t,s===0}function mu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Fn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Fn.errors:t.concat(Fn.errors),s=t.length),mu.errors=t,s===0}var yu=hu;var Yc={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 Un(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 f=e.length;for(let m=0;m<f;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 f={instancePath:r,schemaPath:"#/anyOf/1/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[f]:t.push(f),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 Un.errors=t,s===0}function Bn(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 I;if(e.id===void 0&&(I="id")){let b={};t===null?t=[b]:t.push(b),s++}}var d=p===s;if(c=c||d,!c){let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.type===void 0&&(x="type")){let v={};t===null?t=[v]:t.push(v),s++}}var d=I===s;if(c=c||d,!c){let x=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.resourceId===void 0&&(k="resourceId")){let E={};t===null?t=[E]:t.push(E),s++}}var d=x===s;if(c=c||d,!c){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let $;if(e.transformId===void 0&&($="transformId")){let N={};t===null?t=[N]:t.push(N),s++}}var d=k===s;if(c=c||d,!c){let $=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.x===void 0&&(S="x")){let T={};t===null?t=[T]:t.push(T),s++}}var d=$===s;if(c=c||d,!c){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let V;if(e.y===void 0&&(V="y")){let le={};t===null?t=[le]:t.push(le),s++}}var d=S===s;if(c=c||d,!c){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Y;if(e.anchorX===void 0&&(Y="anchorX")){let ne={};t===null?t=[ne]:t.push(ne),s++}}var d=V===s;if(c=c||d,!c){let Y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let oe;if(e.anchorY===void 0&&(oe="anchorY")){let he={};t===null?t=[he]:t.push(he),s++}}var d=Y===s;if(c=c||d,!c){let oe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ve;if(e.scaleX===void 0&&(ve="scaleX")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var d=oe===s;if(c=c||d,!c){let ve=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let se;if(e.scaleY===void 0&&(se="scaleY")){let ue={};t===null?t=[ue]:t.push(ue),s++}}var d=ve===s;if(c=c||d,!c){let se=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ie;if(e.rotation===void 0&&(ie="rotation")){let O={};t===null?t=[O]:t.push(O),s++}}var d=se===s;if(c=c||d,!c){let ie=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let _;if(e.originX===void 0&&(_="originX")){let q={};t===null?t=[q]:t.push(q),s++}}var d=ie===s;if(c=c||d,!c){let _=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ee;if(e.originY===void 0&&(ee="originY")){let Ie={};t===null?t=[Ie]:t.push(Ie),s++}}var d=_===s;if(c=c||d,!c){let ee=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let K;if(e.layer===void 0&&(K="layer")){let Ee={};t===null?t=[Ee]:t.push(Ee),s++}}var d=ee===s;if(c=c||d,!c){let K=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let ge;if(e.opacity===void 0&&(ge="opacity")){let jt={};t===null?t=[jt]:t.push(jt),s++}}var d=K===s;if(c=c||d,!c){let ge=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Nr;if(e.blur===void 0&&(Nr="blur")){let Nt={};t===null?t=[Nt]:t.push(Nt),s++}}var d=ge===s;if(c=c||d,!c){let Nr=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Dt;if(e.animations===void 0&&(Dt="animations")){let Tt={};t===null?t=[Tt]:t.push(Tt),s++}}var d=Nr===s;c=c||d}}}}}}}}}}}}}}}}if(c)s=u,t!==null&&(u?t.length=u:t=null);else{let I={};t===null?t=[I]:t.push(I),s++}var f=l===s;if(f){let I={instancePath:r,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[I]:t.push(I),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 I={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};t===null?t=[I]:t.push(I),s++}var h=g===s;if(y=y||h,!y){let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textStyleId===void 0){let x={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};t===null?t=[x]:t.push(x),s++}var h=I===s;y=y||h}if(y)s=m,t!==null&&(m?t.length=m:t=null);else{let I={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[I]:t.push(I),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(Un(e.content,{instancePath:r+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(t=t===null?Un.errors:t.concat(Un.errors),s=t.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let I={instancePath:r+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[I]:t.push(I),s++}if(e.width!==void 0&&typeof e.width!="number"){let I={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}if(e.height!==void 0&&typeof e.height!="number"){let I={instancePath:r+"/height",schemaPath:"#/properties/height/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 Bn.errors=t,s===0}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],d=s,f=s;if(p&&typeof p=="object"&&!Array.isArray(p)){let m;if(p.resourceId===void 0&&(m="resourceId")||p.text===void 0&&(m="text")){let y={};t===null?t=[y]:t.push(y),s++}}var i=f===s;if(i){let m={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/allOf/0/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[m]:t.push(m),s++}else s=d,t!==null&&(d?t.length=d:t=null);if(p&&typeof p=="object"&&!Array.isArray(p)){if(p.id===void 0){let m={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/required",keyword:"required",params:{missingProperty:"id"},message:"must have required property 'id'"};t===null?t=[m]:t.push(m),s++}for(let m in p)if(!er.call(Yc.properties.items.items.properties,m)){let y={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:m},message:"must NOT have additional properties"};t===null?t=[y]:t.push(y),s++}if(p.id!==void 0&&typeof p.id!="string"){let m={instancePath:r+"/items/"+c+"/id",schemaPath:"#/properties/items/items/properties/id/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[m]:t.push(m),s++}if(p.animationName!==void 0&&typeof p.animationName!="string"){let m={instancePath:r+"/items/"+c+"/animationName",schemaPath:"#/properties/items/items/properties/animationName/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[m]:t.push(m),s++}if(p.animationSpeed!==void 0&&typeof p.animationSpeed!="number"){let m={instancePath:r+"/items/"+c+"/animationSpeed",schemaPath:"#/properties/items/items/properties/animationSpeed/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.resourceId!==void 0&&typeof p.resourceId!="string"){let m={instancePath:r+"/items/"+c+"/resourceId",schemaPath:"#/properties/items/items/properties/resourceId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[m]:t.push(m),s++}if(p.text!==void 0&&(Bn(p.text,{instancePath:r+"/items/"+c+"/text",parentData:p,parentDataProperty:"text",rootData:a})||(t=t===null?Bn.errors:t.concat(Bn.errors),s=t.length)),p.transformId!==void 0&&typeof p.transformId!="string"){let m={instancePath:r+"/items/"+c+"/transformId",schemaPath:"#/properties/items/items/properties/transformId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[m]:t.push(m),s++}if(p.x!==void 0&&typeof p.x!="number"){let m={instancePath:r+"/items/"+c+"/x",schemaPath:"#/properties/items/items/properties/x/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.y!==void 0&&typeof p.y!="number"){let m={instancePath:r+"/items/"+c+"/y",schemaPath:"#/properties/items/items/properties/y/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.anchorX!==void 0&&typeof p.anchorX!="number"){let m={instancePath:r+"/items/"+c+"/anchorX",schemaPath:"#/properties/items/items/properties/anchorX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.anchorY!==void 0&&typeof p.anchorY!="number"){let m={instancePath:r+"/items/"+c+"/anchorY",schemaPath:"#/properties/items/items/properties/anchorY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.scaleX!==void 0&&typeof p.scaleX!="number"){let m={instancePath:r+"/items/"+c+"/scaleX",schemaPath:"#/properties/items/items/properties/scaleX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.scaleY!==void 0&&typeof p.scaleY!="number"){let m={instancePath:r+"/items/"+c+"/scaleY",schemaPath:"#/properties/items/items/properties/scaleY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.rotation!==void 0&&typeof p.rotation!="number"){let m={instancePath:r+"/items/"+c+"/rotation",schemaPath:"#/properties/items/items/properties/rotation/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.originX!==void 0&&typeof p.originX!="number"){let m={instancePath:r+"/items/"+c+"/originX",schemaPath:"#/properties/items/items/properties/originX/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.originY!==void 0&&typeof p.originY!="number"){let m={instancePath:r+"/items/"+c+"/originY",schemaPath:"#/properties/items/items/properties/originY/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[m]:t.push(m),s++}if(p.layer!==void 0){let m=p.layer;if(typeof m!="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(!(m===10||m===30||m===50||m===70||m===90)){let y={instancePath:r+"/items/"+c+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:Yc.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 m=p.opacity;if(typeof m=="number"){if(m>1||isNaN(m)){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(m<0||isNaN(m)){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&&(_e(p.blur,{instancePath:r+"/items/"+c+"/blur",parentData:p,parentDataProperty:"blur",rootData:a})||(t=t===null?_e.errors:t.concat(_e.errors),s=t.length)),p.animations!==void 0&&(Q(p.animations,{instancePath:r+"/items/"+c+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let m={instancePath:r+"/items/"+c,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[m]:t.push(m),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 hu(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),hu.errors=t,s===0}var gu=bu;var Wb={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 zn(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,d=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 I={};t===null?t=[I]:t.push(I),s++}}var f=d===s;if(f){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 I={};t===null?t=[I]:t.push(I),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 I={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};t===null?t=[I]:t.push(I),s++}if(e.sounds!==void 0){let h=e.sounds;if(Array.isArray(h)){let I=h.length;for(let b=0;b<I;b++)Ce(h[b],{instancePath:r+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(t=t===null?Ce.errors:t.concat(Ce.errors),s=t.length)}else{let I={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[I]:t.push(I),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 I={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[I]:t.push(I),s++}if(h<0||isNaN(h)){let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),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 I={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[I]:t.push(I),s++}if(h<-1||isNaN(h)){let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/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 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 I={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[I]:t.push(I),s++}if(!(h==="immediate"||h==="loopEnd")){let I={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:Wb.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[I]:t.push(I),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let I={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),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 zn.errors=t,s===0}function bu(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),bu.errors=t,s===0}var Iu=wu;var Kb={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 Hn(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 I={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};t===null?t=[I]:t.push(I),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,d=!0,f=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=f===s;if(s=p,t!==null&&(p?t.length=p:t=null),m){let g=s,h=s,I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.target===void 0&&(x="target")){let v={};t===null?t=[v]:t.push(v),s++}}var y=I===s;if(y){let x={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[x]:t.push(x),s++}else s=h,t!==null&&(h?t.length=h:t=null);var m=g===s;d=m}if(!d){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:Kb.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($e(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($e(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($e(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($e(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 Hn.errors=t,s===0}function wu(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),wu.errors=t,s===0}var vu=Au;var Jb={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 Qb={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 _r(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:Qb.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 _r.errors=t,s===0}function H(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++)_r(i[u],{instancePath:r+"/keyframes/"+u,parentData:i,parentDataProperty:u,rootData:a})||(t=t===null?_r.errors:t.concat(_r.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 H.errors=t,s===0}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)){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&&(H(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.x!==void 0&&(H(e.x,{instancePath:r+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.y!==void 0&&(H(e.y,{instancePath:r+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.scaleX!==void 0&&(H(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.scaleY!==void 0&&(H(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.rotation!==void 0&&(H(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?H.errors:t.concat(H.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 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(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&&(H(e.translateX,{instancePath:r+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.translateY!==void 0&&(H(e.translateY,{instancePath:r+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.alpha!==void 0&&(H(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.scaleX!==void 0&&(H(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.scaleY!==void 0&&(H(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?H.errors:t.concat(H.errors),s=t.length)),e.rotation!==void 0&&(H(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?H.errors:t.concat(H.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 Xn.errors=t,s===0}function $r(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&&(Xn(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?Xn.errors:t.concat(Xn.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 $r.errors=t,s===0}var On={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"]}}]},Zb={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{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)){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:Zb.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 Wn.errors=t,s===0}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)){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++)_r(i[u],{instancePath:r+"/keyframes/"+u,parentData:i,parentDataProperty:u,rootData:a})||(t=t===null?_r.errors:t.concat(_r.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 Kn.errors=t,s===0}function Jn(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 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 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,d=!0,f=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=f===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;d=m}if(!d){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 I=h===s;if(s=y,t!==null&&(y?t.length=y:t=null),I){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 I=b===s;g=I}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(!er.call(On.properties,b)){let x={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let x={instancePath:r+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let x={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:On.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),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 x=b.length;for(let v=0;v<x;v++)if(typeof b[v]!="string"){let k={instancePath:r+"/textures/"+v,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}}else{let x={instancePath:r+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[x]:t.push(x),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 x=b.length;for(let v=0;v<x;v++)Wn(b[v],{instancePath:r+"/items/"+v,parentData:b,parentDataProperty:v,rootData:a})||(t=t===null?Wn.errors:t.concat(Wn.errors),s=t.length)}else{let x={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[x]:t.push(x),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let x={instancePath:r+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let x={instancePath:r+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:On.properties.combine.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let x={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let x={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:On.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),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&&(Kn(e.progress,{instancePath:r+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(t=t===null?Kn.errors:t.concat(Kn.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 Jn.errors=t,s===0}function Qn(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,x=s,v=s,k=s,E=!1,$=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.prev===void 0&&(S="prev")){let T={};t===null?t=[T]:t.push(T),s++}}var p=$===s;if(E=E||p,!E){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let V;if(e.next===void 0&&(V="next")){let le={};t===null?t=[le]:t.push(le),s++}}var p=S===s;if(E=E||p,!E){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Y;if(e.mask===void 0&&(Y="mask")){let ne={};t===null?t=[ne]:t.push(ne),s++}}var p=V===s;E=E||p}}if(E)s=k,t!==null&&(k?t.length=k:t=null);else{let S={};t===null?t=[S]:t.push(S),s++}var d=v===s;if(d){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=x,t!==null&&(x?t.length=x: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 f=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=f,t!==null&&(f?t.length=f:t=null),g){let b=s,x=s,v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.tween===void 0&&(S="tween")){let T={};t===null?t=[T]:t.push(T),s++}}var h=v===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=x,t!==null&&(x?t.length=x:t=null);let k=s,E=!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 I=$===s;if(E=E||I,!E){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let V={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};t===null?t=[V]:t.push(V),s++}var I=S===s;if(E=E||I,!E){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let Y={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};t===null?t=[Y]:t.push(Y),s++}var I=V===s;E=E||I}}if(E)s=k,t!==null&&(k?t.length=k: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;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 x={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),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 x={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="update"||b==="transition")){let x={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:Jb.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.complete!==void 0){let b=e.complete;if(b&&typeof b=="object"&&!Array.isArray(b)){if(b.payload!==void 0){let x=b.payload;if(!(x&&typeof x=="object"&&!Array.isArray(x))){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 x={instancePath:r+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}e.tween!==void 0&&(Gn(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?Gn.errors:t.concat(Gn.errors),s=t.length)),e.prev!==void 0&&($r(e.prev,{instancePath:r+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(t=t===null?$r.errors:t.concat($r.errors),s=t.length)),e.next!==void 0&&($r(e.next,{instancePath:r+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(t=t===null?$r.errors:t.concat($r.errors),s=t.length)),e.mask!==void 0&&(Jn(e.mask,{instancePath:r+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(t=t===null?Jn.errors:t.concat(Jn.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 Qn.errors=t,s===0}function Au(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),Au.errors=t,s===0}var ku=Pu;function Zn(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($e(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 Zn.errors=t,s===0}function Pu(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),Pu.errors=t,s===0}var xu=Eu;var eI=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");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(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(!eI.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 es.errors=t,s===0}function Eu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return es(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?es.errors:t.concat(es.errors),s=t.length),Eu.errors=t,s===0}var Su=Ru;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.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 d={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=[d]:t.push(d),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 d={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=[d]:t.push(d),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 rs.errors=t,s===0}function Ru(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return rs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?rs.errors:t.concat(rs.errors),s=t.length),Ru.errors=t,s===0}var Ou=Cu;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.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 ts.errors=t,s===0}function Cu(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),Cu.errors=t,s===0}var $u=_u;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.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 ns.errors=t,s===0}function _u(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),_u.errors=t,s===0}var ju=Nu;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(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 ss.errors=t,s===0}function Nu(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),Nu.errors=t,s===0}var Du=Tu;function os(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,d=s,f=s,m=!1,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.count===void 0&&(v="count")){let k={};t===null?t=[k]:t.push(k),s++}}var g=y===s;if(m=m||g,!m){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let E;if(e.texture===void 0&&(E="texture")){let $={};t===null?t=[$]:t.push($),s++}}var g=v===s;if(m=m||g,!m){let E=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let N;if(e.behaviors===void 0&&(N="behaviors")){let S={};t===null?t=[S]:t.push(S),s++}}var g=E===s;if(m=m||g,!m){let N=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let T;if(e.emitter===void 0&&(T="emitter")){let V={};t===null?t=[V]:t.push(V),s++}}var g=N===s;m=m||g}}}if(m)s=f,t!==null&&(f?t.length=f:t=null);else{let v={};t===null?t=[v]:t.push(v),s++}var h=d===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=c===s;b&&(l=!0,u=0);let I=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=I===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 v={instancePath:r,schemaPath:"#/oneOf",keyword:"oneOf",params:{passingSchemas:u},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 k={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};t===null?t=[k]:t.push(k),s++}if(e.width!==void 0){let v=e.width;if(typeof v=="number"){if(v<=0||isNaN(v)){let k={instancePath:r+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[k]:t.push(k),s++}}else{let k={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}}if(e.height!==void 0){let v=e.height;if(typeof v=="number"){if(v<=0||isNaN(v)){let k={instancePath:r+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[k]:t.push(k),s++}}else{let k={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),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 k={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};t===null?t=[k]:t.push(k),s++}if(v.appearance===void 0){let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};t===null?t=[k]:t.push(k),s++}for(let k in v)if(!(k==="emission"||k==="movement"||k==="appearance"||k==="bounds")){let E={instancePath:r+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};t===null?t=[E]:t.push(E),s++}if(v.emission!==void 0){let k=v.emission;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let E={instancePath:r+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}if(v.movement!==void 0){let k=v.movement;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let E={instancePath:r+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}if(v.appearance!==void 0){let k=v.appearance;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let E={instancePath:r+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}if(v.bounds!==void 0){let k=v.bounds;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let E={instancePath:r+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}}else{let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}if(e.count!==void 0){let v=e.count;if(!(typeof v=="number"&&!(v%1)&&!isNaN(v))){let k={instancePath:r+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[k]:t.push(k),s++}if(typeof v=="number"&&(v<1||isNaN(v))){let k={instancePath:r+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[k]:t.push(k),s++}}if(e.texture!==void 0){let v=e.texture,k=s,E=!1,$=null,N=s;if(typeof v=="string"){if($e(v)<1){let T={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=[T]:t.push(T),s++}}else{let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[T]:t.push(T),s++}var x=N===s;x&&(E=!0,$=0);let S=s;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[T]:t.push(T),s++}var x=S===s;if(x&&E?(E=!1,$=[$,1]):x&&(E=!0,$=1),E)s=k,t!==null&&(k?t.length=k:t=null);else{let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:$},message:"must match exactly one schema in oneOf"};t===null?t=[T]:t.push(T),s++}}if(e.behaviors!==void 0){let v=e.behaviors;if(Array.isArray(v)){if(v.length<1){let E={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[E]:t.push(E),s++}let k=v.length;for(let E=0;E<k;E++){let $=v[E];if($&&typeof $=="object"&&!Array.isArray($)){if($.type===void 0){let N={instancePath:r+"/behaviors/"+E,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[N]:t.push(N),s++}for(let N in $)if(!(N==="type"||N==="config")){let S={instancePath:r+"/behaviors/"+E,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:N},message:"must NOT have additional properties"};t===null?t=[S]:t.push(S),s++}if($.type!==void 0){let N=$.type;if(typeof N=="string"){if($e(N)<1){let S={instancePath:r+"/behaviors/"+E+"/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/"+E+"/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 N=$.config;if(!(N&&typeof N=="object"&&!Array.isArray(N))){let S={instancePath:r+"/behaviors/"+E+"/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 N={instancePath:r+"/behaviors/"+E,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[N]:t.push(N),s++}}}else{let k={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[k]:t.push(k),s++}}if(e.emitter!==void 0){let v=e.emitter;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.lifetime===void 0){let k={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};t===null?t=[k]:t.push(k),s++}if(v.lifetime!==void 0){let k=v.lifetime;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.min===void 0){let E={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};t===null?t=[E]:t.push(E),s++}if(k.max===void 0){let E={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};t===null?t=[E]:t.push(E),s++}if(k.min!==void 0){let E=k.min;if(typeof E=="number"){if(E<0||isNaN(E)){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(k.max!==void 0){let E=k.max;if(typeof E=="number"){if(E<0||isNaN(E)){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 E={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[E]:t.push(E),s++}}}else{let k={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),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 os.errors=t,s===0}function Tu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return os(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?os.errors:t.concat(os.errors),s=t.length),Tu.errors=t,s===0}var Lu=Mu;var zc={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 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++}for(let i in e)if(!er.call(zc.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:zc.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 is.errors=t,s===0}function Mu(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),Mu.errors=t,s===0}var qu=Vu;var rI=new RegExp("^.+$","u");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.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(rI.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 d=0;d<p;d++)if(typeof c[d]!="number"){let f={instancePath:r+"/animations/"+l.replace(/~/g,"~0").replace(/\//g,"~1")+"/frames/"+d,schemaPath:"#/properties/animations/patternProperties/%5E.%2B%24/properties/frames/items/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[f]:t.push(f),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 as.errors=t,s===0}function Vu(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),Vu.errors=t,s===0}var Fu=Uu;var Hc={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 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.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(!er.call(Hc.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,d=s;if(typeof l=="string"){if($e(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=d===s;i&&(c=!0,p=0);let f=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 I=l[h];if(typeof I=="string"){if($e(I)<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 I=l[y];if(typeof I=="string"){if(typeof h[I]=="number"){g=h[I];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[I]=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=f===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 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 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:Hc.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($e(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 ls.errors=t,s===0}function Uu(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),Uu.errors=t,s===0}var Bu=Yu;var tI={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 cs(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(!er.call(tI.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 cs.errors=t,s===0}function Yu(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),Yu.errors=t,s===0}var zu=Hu;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)){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 us.errors=t,s===0}function Hu(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),Hu.errors=t,s===0}var ds=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),$t=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),jr=e=>e===void 0?void 0:structuredClone(e),nI=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"}),sI=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),oI=Object.freeze({background:Gc,bgm:Wc,character:Jc,choice:Zc,cleanAll:ru,control:nu,dialogue:ou,form:au,layout:cu,screen:pu,sfx:fu,visual:yu,voice:gu}),iI=Object.freeze({achievement:Iu,animation:vu,character:ku,color:xu,control:Su,font:Ou,image:$u,layout:ju,particle:Du,sound:Lu,spritesheet:qu,textStyle:Fu,transform:Bu,video:zu}),aI=new Set(["files","language","patches"]),lI=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),cI=new Set(["lineId","mode","payload","type"]),uI=new Set(["mode","payload","sceneId","type"]),pI=new Set(["mode","operation","payload","resourceId","type"]),dI=new Set(["fileId","mimeType"]),F=(e,r)=>{throw new Error(`Invalid l10nData at ${e}: ${r}`)},Fe=(e,r)=>{$t(e)||F(r,"expected an object")},ii=(e,r)=>{Array.isArray(e)||F(r,"expected an array")},Qr=(e,r)=>{(typeof e!="string"||e.length===0)&&F(r,"expected a non-empty string")},Wu=(e,r)=>{typeof e!="string"&&F(r,"expected a string")},ze=(e,r,n)=>{for(let o of Object.keys(e))r.has(o)||F(`${n}.${o}`,"unknown field")},He=(e,r,n)=>{for(let o of r)ds(e,o)||F(n,`missing required field "${o}"`)},fI=e=>e.replaceAll("~1","/").replaceAll("~0","~"),mI=(e,r)=>{let n=(r?.instancePath??"").split("/").slice(1).map(fI);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)},yI=(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],Ku=({value:e,validator:r,path:n,contract:o})=>{if(r(e))return;let a=yI(r.errors);F(mI(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},Zr=(e,r)=>{Qr(e,r),(e==="__proto__"||e==="constructor"||e==="prototype")&&F(r,`"${e}" is not a safe ID`)},hI=(e,r)=>{Qr(e,r),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&F(r,"must be a safe single filename")},Ct=(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)=>Ct(a,r[t]));if(!$t(e)||!$t(r))return!1;let n=Object.keys(e).sort(),o=Object.keys(r).sort();return Ct(n,o)&&n.every(a=>Ct(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(!$t(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},gI=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},Ju=(e,r,n)=>{let o=e.get(r)??[];return o.length===0&&F(n,`lineId "${r}" does not exist in projectData`),o.length>1&&F(n,`lineId "${r}" is not globally unique in projectData`),o[0]},Qu=(e,r)=>e.story.scenes[r.sceneId].sections[r.sectionId].lines[r.lineIndex],Gu=e=>({items:(e?.items??[]).map(r=>({id:r?.id,events:r?.events}))}),Xu=e=>{let r=jr(e??{});delete r.resourceId,delete r.animations;for(let n of Object.values(r.fields??{}))$t(n)&&delete n.placeholder;return r},bI=(e,r,n,o)=>{e==="choice"&&!Ct(Gu(r),Gu(n))&&F(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Ct(Xu(r),Xu(n))&&F(o,"form behavior must remain identical; only presentation fields and placeholders may change")},II=({patch:e,path:r,lineIndex:n})=>{ze(e,lI,r),He(e,["type","lineId","actionType","payload"],r),Zr(e.lineId,`${r}.lineId`),Qr(e.actionType,`${r}.actionType`),Fe(e.payload,`${r}.payload`),e.mode!==void 0&&e.mode!=="replace"&&F(`${r}.mode`,'line.action supports only "replace"'),sI.has(e.actionType)||F(`${r}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=Ju(n,e.lineId,`${r}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&F(`${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")&&F(`${r}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),ds(e.payload,"content")&&F(`${r}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&F(`${r}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),bI(e.actionType,a,e.payload,`${r}.payload`),Ku({value:e.payload,validator:oI[e.actionType],path:`${r}.payload`,contract:`the ${e.actionType} presentation-action schema`}),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},wI=(e,r)=>{ii(e,r),e.forEach((n,o)=>{Fe(n,`${r}[${o}]`),ze(n,new Set(["text"]),`${r}[${o}]`),He(n,["text"],`${r}[${o}]`),Wu(n.text,`${r}[${o}].text`)})},vI=({patch:e,path:r,lineIndex:n})=>{ze(e,cI,r),He(e,["type","lineId","payload"],r),Zr(e.lineId,`${r}.lineId`),Fe(e.payload,`${r}.payload`),ze(e.payload,new Set(["content"]),`${r}.payload`),He(e.payload,["content"],`${r}.payload`),wI(e.payload.content,`${r}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&F(`${r}.mode`,'line.dialogue supports only "replace"');let o=Ju(n,e.lineId,`${r}.lineId`);return o.line?.actions?.dialogue===void 0&&F(`${r}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},AI=({patch:e,path:r,projectData:n})=>(ze(e,uI,r),He(e,["type","mode","sceneId","payload"],r),Zr(e.sceneId,`${r}.sceneId`),Fe(e.payload,`${r}.payload`),ze(e.payload,new Set(["name"]),`${r}.payload`),He(e.payload,["name"],`${r}.payload`),Wu(e.payload.name,`${r}.payload.name`),e.mode!=="patch"&&F(`${r}.mode`,'story.scene requires "patch"'),ds(n?.story?.scenes??{},e.sceneId)||F(`${r}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),kI=(e,r,n)=>{Fe(r,n),["font","image","sound","spritesheet","video"].includes(e)&&Qr(r.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(r.width)||F(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||F(`${n}.height`,"expected an integer")),e==="spritesheet"&&(Fe(r.jsonData,`${n}.jsonData`),Number.isInteger(r.width)||F(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||F(`${n}.height`,"expected an integer")),e==="color"&&(typeof r.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(r.hex))&&F(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),Ku({value:r,validator:iI[e],path:n,contract:`the resource.${e} schema`})},PI=({patch:e,path:r,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{ze(e,pI,r),He(e,["type","resourceId","payload"],r),Zr(e.resourceId,`${r}.resourceId`);let t=e.type.slice(9),s=nI[t];s||F(`${r}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&F(`${r}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&F(`${r}.operation`,'the only resource operation is "add"'),kI(t,e.payload,`${r}.payload`);let i=n?.resources?.[s]??{},l=ds(i,e.resourceId);e.operation==="add"&&l&&F(`${r}.resourceId`,`cannot add existing ${t} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&F(`${r}.resourceId`,`cannot replace missing ${t} resource "${e.resourceId}"`);for(let u of ps(e.payload))!o.has(u)&&!a.has(u)&&F(`${r}.payload`,`fileId "${u}" is not declared by this package or the canonical project`);return{kind:"resource",key:`${e.type}:${e.resourceId}`,collectionName:s,patch:e}},xI=({patch:e,path:r,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:t})=>{if(Fe(e,r),Qr(e.type,`${r}.type`),e.type==="line.action")return II({patch:e,path:r,lineIndex:o});if(e.type==="line.dialogue")return vI({patch:e,path:r,lineIndex:o});if(e.type==="story.scene")return AI({patch:e,path:r,projectData:n});if(e.type.startsWith("resource."))return PI({patch:e,path:r,projectData:n,packageFileIds:a,canonicalFileIds:t});F(`${r}.type`,`unsupported patch type "${e.type}"`)},EI=(e,r)=>{ii(e,r);let n=new Set;return e.forEach((o,a)=>{let t=`${r}[${a}]`;Fe(o,t),ze(o,dI,t),He(o,["fileId"],t),hI(o.fileId,`${t}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&F(`${t}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&F(`${t}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},SI=({packageId:e,packageData:r,path:n,projectData:o,lineIndex:a,canonicalFileIds:t})=>{Fe(r,n),ze(r,aI,n),He(r,["language","files","patches"],n),Qr(r.language,`${n}.language`);let s=EI(r.files,`${n}.files`);ii(r.patches,`${n}.patches`);let i=new Set,l=r.patches.map((u,c)=>{let p=xI({patch:u,path:`${n}.patches[${c}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:t});return i.has(p.key)&&F(`${n}.patches[${c}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:r,fileIds:s,patches:l}},Zu=({projectData:e,l10nData:r})=>{if(r===void 0)return{packages:new Map};Fe(r,"l10nData"),ze(r,new Set(["packages"]),"l10nData"),He(r,["packages"],"l10nData"),Fe(r.packages,"l10nData.packages");let n=gI(e),o=ps(e?.resources??{}),a=new Map,t=new Map;for(let[s,i]of Object.entries(r.packages)){Zr(s,`l10nData.packages.${s}`);let l=SI({packageId:s,packageData:i,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:o});for(let u of l.fileIds){o.has(u)&&F(`l10nData.packages.${s}.files`,`fileId "${u}" conflicts with a canonical project file`);let c=t.get(u);c!==void 0&&F(`l10nData.packages.${s}.files`,`fileId "${u}" is already declared by package "${c}"`),t.set(u,s)}a.set(s,l)}return{packages:a}},RI=(e,r)=>{let{collectionName:n,patch:o}=r;e.resources[n]??={},e.resources[n][o.resourceId]=jr(o.payload)},OI=(e,r)=>{let{patch:n}=r,o=e.story.scenes[n.sceneId];o.name=n.payload.name},CI=(e,r)=>{let{location:n,patch:o}=r,a=Qu(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=jr(o.payload);return}let t=jr(n.line.actions.dialogue.content);a.actions.dialogue=jr(o.payload),t!==void 0&&(a.actions.dialogue.content=t)},$I=(e,r)=>{let{location:n,patch:o}=r,a=Qu(e,n);a.actions.dialogue.content=jr(o.payload.content)},ep=({projectData:e,l10nData:r})=>{let n=Zu({projectData:e,l10nData:r});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},fs=({projectData:e,l10nData:r,l10nId:n=null})=>{let o=Zu({projectData:e,l10nData:r});if(n!==null&&(Zr(n,"l10nId"),o.packages.has(n)||F("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=jr(e),t=o.packages.get(n).patches;return t.filter(s=>s.kind==="resource").forEach(s=>RI(a,s)),t.filter(s=>s.kind==="story.scene").forEach(s=>OI(a,s)),t.filter(s=>s.kind==="line.action").forEach(s=>CI(a,s)),t.filter(s=>s.kind==="line.dialogue").forEach(s=>$I(a,s)),a};var _I=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),jI=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),rp="conditional",li=Symbol("conditionalAutoContinue"),NI=new Set(["sectionTransition","resetStoryAtSection"]),DI=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),TI=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),LI=new Set(["nextLine","nextLineFromSystem"]),MI=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),ai="form",qI=new Set(["submitForm","cancelForm"]),VI="showImageGalleryVariant",FI="playMusicRoomTrack",UI="startSceneReplay",Ue=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),ms=e=>e?.type===li,et=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId;function ci(e){let r,n=0,o=null,a=0,t=!1,s=0,i=[],l=null,u=null,c=new Map,p=new Map,d=new Map,f,m,y=null,{handlePendingEffects:g}=e,h=(w=new Map,P=Date.now())=>new Map(Array.from(w.entries()).filter(([,R])=>P<R.expiresAt).map(([R,C])=>[R,{animation:structuredClone(C.animation),startedAt:C.startedAt,expiresAt:C.expiresAt}])),I=(w=new Map)=>Array.from(w.values()).map(P=>structuredClone(P.animation)),b=(w=Date.now())=>{c=new Map(Array.from(c.entries()).filter(([,P])=>w<P.expiresAt))},x=()=>{if(!(a>0||t)){t=!0;try{for(;r.selectPendingEffects().length>0;){let w=[...r.selectPendingEffects()];r.clearPendingEffects();try{g(w)}catch(P){throw r.clearPendingEffects(),w.forEach(R=>{r.appendPendingEffect(R)}),P}}}finally{t=!1}}},v=w=>{a+=1;let P=!1;try{let R=w();return P=!0,R}finally{a-=1,P&&x()}},k=({initialState:w,namespace:P})=>{let{l10nData:R,...C}=w,L=R===void 0?void 0:structuredClone(R),U=structuredClone(w.projectData),J=ep({projectData:U,l10nData:L}),Z=C.global??{};if(!Ue(Z))throw new Error("Malformed global state.");let pe=Z.runtime??{};if(!Ue(pe))throw new Error("Malformed global.runtime.");let Se=pe.localizationPackageId;if(Se!=null&&typeof Se!="string")throw new Error("localizationPackageId requires a string or null value");let yr=new Set(J.map(({l10nId:gs})=>gs).filter(gs=>gs!==null)),rr=typeof Se=="string"&&yr.has(Se)?Se:null,Mt=fs({projectData:U,l10nData:L,l10nId:rr});r=Tc({...C,global:{...Z,localizationPackages:J,runtime:{...pe,localizationPackageId:rr}},projectData:Mt}),n=0,o=ni(P),a=0,t=!1,s=0,i=[],l=null,u=null,c=new Map,p=new Map,d=new Map,f=U,m=L,y=rr,r.appendPendingEffect({name:"handleLineActions"}),x()},E=()=>o,$=()=>r.selectPresentationState(),N=()=>r.selectPresentationChanges(),S=w=>r.selectSectionLineChanges(w),T=(w={})=>{n+=1;let P=Date.now();b(P);let R=p.size>0,C=h(c,P),L=R?h(p,P):new Map,J={...r.selectRenderState({activePersistentAnimations:I(C),restoredPersistentAnimations:I(L)}),id:`render-${n}`};return d.set(J.id,{builtAt:P,persistentAnimationSessions:new Map([...L.entries(),...C.entries()]),usedRestoredPersistentAnimationSessions:R}),J},V=(w={})=>T(w),le=(w={})=>T(w),Y=w=>{let P=typeof w?.id=="string"&&w.id.length>0?w.id:null,R=P?d.get(P):null;P&&d.delete(P);let C=new Map;Ta(w?.animations).forEach(L=>{let U=cn(L);if(!U)return;let J=R?.persistentAnimationSessions?.get(U)??c.get(U),Z=Math.max(0,qa(L)),pe=J?.startedAt??R?.builtAt??Date.now();C.set(U,{animation:structuredClone(L),startedAt:pe,expiresAt:pe+Z})}),c=C,R?.usedRestoredPersistentAnimationSessions&&(p=new Map)},ne=()=>r.selectSystemState(),oe=()=>r.selectAchievements(),he=w=>r.selectAchievement(w),ve=()=>r.selectSaveSlotMap(),ce=w=>r.selectSaveSlot(w),se=w=>r.selectSaveSlotPage(w),ue=()=>r.selectImageGallery(),ie=()=>r.selectMusicRoom(),O=()=>r.selectSceneReplay(),_=()=>r.selectIsSceneReplayActive(),q=()=>r.selectSkipMode(),ee=()=>r.selectAutoMode(),Ie=()=>r.selectRuntime(),K=()=>r.selectIsChoiceVisible(),Ee=()=>r.selectIsFormVisible(),ge=()=>r.selectActiveInteraction(),jt=()=>r.selectPendingEffects().some(w=>w?.name==="handleLineActions"||w?.name==="render"),Nr=(w,P,R={})=>!Ue(P)||w!=="nextLine"?P:R.bypassChoice===!0?{...P,bypassChoice:!0}:R.interactionSource===ai?{...P,_interactionSource:ai}:P,Nt=(w={})=>({type:li,payload:Nr("nextLine",{_conditionalContinuation:!0},w)}),Dt=(w,P)=>ms(w)?{type:li,payload:{...w.payload,...P.payload}}:P,Tt=w=>{w.savedCheckpointOccurrences.forEach(P=>{r.markSavedRollbackCheckpointTransient(P)}),w.savedCheckpointOccurrences=[]},ip=(w,P)=>{let R=l;return l=null,!R||!et(R.pointer,w)||R.checkpointIndex!==P?.checkpointIndex||R.checkpointIdentity!==P?.checkpoint?[]:R.savedCheckpointOccurrences},ap=w=>{let P=u;return!P||!et(P.pointer,w)?null:(u=null,P)},lp=({actionType:w,pointerBeforeAction:P,pointerAfterAction:R,cursorBeforeAction:C,cursorAfterAction:L,wasSceneReplayActive:U,isSceneReplayActive:J})=>{!R||!(!et(P,R)||C?.checkpoint!==L?.checkpoint||C?.checkpointIndex!==L?.checkpointIndex||w==="jumpToLine")||(u={pointer:R,appendToPrevious:LI.has(w)&&U===J&&P?.sectionId===R.sectionId&&P?.lineId!==R.lineId,reuseExistingOccurrence:MI.has(w),forceNewOccurrence:w==="jumpToLine"})},pi=w=>{w.markCurrentCheckpointTransient&&(r.markRollbackCheckpointTransient({checkpointIndex:w.rollbackCursor?.checkpointIndex,checkpointIdentity:w.rollbackCursor?.checkpoint,sectionId:w.pointer?.sectionId,lineId:w.pointer?.lineId}),Tt(w))},cp=(w,P,R)=>DI.has(w)?w==="resetStoryAtSection"?R?.checkpoint!==P?.checkpoint:R?.checkpoint!==P?.checkpoint&&R?.checkpointIndex>P?.checkpointIndex:!1,up=w=>{let P=i.at(-1);if(!P?.markCurrentCheckpointTransient)return;let R=r.selectSaveSlot({slotId:w?.slotId});R&&P.savedCheckpointOccurrences.push({slotId:w.slotId,saveSlotIdentity:R,checkpointIndex:P.rollbackCursor?.checkpointIndex,sectionId:P.pointer?.sectionId,lineId:P.pointer?.lineId})},pp=(w,P,R)=>{let C=i.at(-1);if(!C)return;let L=r.selectCurrentPointer()?.pointer,U=cp(w,P,R);if(et(C.pointer,L)){let J=R?.checkpoint!==P?.checkpoint||R?.checkpointIndex!==P?.checkpointIndex;(U||J&&TI.has(w))&&(pi(C),C.pointer=L,C.rollbackCursor=R,C.markCurrentCheckpointTransient=U,C.savedCheckpointOccurrences=[]);return}pi(C),C.pointer=L,C.rollbackCursor=r.selectRollbackCursor?.()??null,C.markCurrentCheckpointTransient=U,C.savedCheckpointOccurrences=[]},Lt=(w,P)=>{if(!r[w])return;let R=P,C,L;if(w==="updateProjectData")di(P),C=structuredClone(P.projectData),R={...P,projectData:fs({projectData:C,l10nData:m,l10nId:y})},di(R);else if(w==="updateLocalizationPackage"){if(L=dp(P),L===y)return;R={l10nId:L,projectData:fs({projectData:f,l10nData:m,l10nId:L})}}NI.has(w)&&(s+=1);let U=r.selectIsSceneReplayActive?.()===!0,J=jI.has(w)?h(c):null,Z=r.selectCurrentPointer()?.pointer??null,pe=r.selectRollbackCursor?.()??null,Se=r[w](R);C!==void 0&&(f=C),L!==void 0&&(y=L),_I.has(w)&&(p=J??new Map,c=new Map);let yr=r.selectIsSceneReplayActive?.()===!0;U!==yr&&(c=new Map,p=new Map);let rr=r.selectCurrentPointer()?.pointer??null,Mt=r.selectRollbackCursor?.()??null;return w==="saveSlot"&&up(P),pp(w,pe,Mt),lp({actionType:w,pointerBeforeAction:Z,pointerAfterAction:rr,cursorBeforeAction:pe,cursorAfterAction:Mt,wasSceneReplayActive:U,isSceneReplayActive:yr}),x(),Se},di=w=>{if(!Object.prototype.hasOwnProperty.call(w??{},"projectData"))throw new Error("updateProjectData requires projectData");Ar(w?.projectData?.resources?.variables??{}),at(w.projectData),lt(w.projectData),ct(w.projectData)},dp=w=>{if(!Ue(w))throw new Error("updateLocalizationPackage requires an object payload");let P=Object.keys(w);if(P.length!==1||P[0]!=="l10nId")throw new Error("updateLocalizationPackage only accepts l10nId");if(w.l10nId!==null&&(typeof w.l10nId!="string"||w.l10nId.length===0))throw new Error("updateLocalizationPackage requires a non-empty l10nId or null");return w.l10nId},fp=(w,P,R)=>{let C=r.selectCurrentPointer()?.pointer;P!==C||R!==s||(r.appendPendingEffect({name:"clearAutoNextTimer"}),r.appendPendingEffect({name:"clearNextLineConfigTimer"}),Lt("nextLineFromSystem",w.payload))},mp=()=>({renderSequence:n,conditionalRoutingSequence:s,rollbackNavigationContexts:i.slice(),pendingRollbackLineEntrySaveHandoff:l,pendingDialogueHistoryLineEntry:u,persistentAnimationSessions:new Map(c),restoredPersistentAnimationSessions:new Map(p),renderPersistentAnimationMetadata:new Map(d),canonicalProjectData:f,localizationPackageId:y}),yp=w=>{n=w.renderSequence,s=w.conditionalRoutingSequence,i=w.rollbackNavigationContexts.slice(),l=w.pendingRollbackLineEntrySaveHandoff,u=w.pendingDialogueHistoryLineEntry,c=new Map(w.persistentAnimationSessions),p=new Map(w.restoredPersistentAnimationSessions),d=new Map(w.renderPersistentAnimationMetadata),f=w.canonicalProjectData,y=w.localizationPackageId},fi=(w,P={})=>v(()=>{let R=mp();try{return r[Ys](()=>{let C,L=r.selectCurrentPointer()?.pointer??null,U=r.selectRollbackCursor?.()??null,J=s,Z={pointer:L,rollbackCursor:U,markCurrentCheckpointTransient:P.rollbackSource==="line",savedCheckpointOccurrences:P.savedCheckpointOccurrences?.slice()??[]};i.push(Z);try{r.beginRollbackActionBatch({source:P.rollbackSource});try{C=w()}finally{r.endRollbackActionBatch({})}ms(C)&&fp(C,L,J);let pe=r.selectCurrentPointer()?.pointer??null;P.rollbackSource==="line"&&et(L,pe)&&r.recordCurrentDialogueHistory({savedCheckpointOccurrences:Z.savedCheckpointOccurrences,appendToPrevious:P.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:P.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:P.dialogueHistoryForceNewOccurrence===!0})}finally{i.pop(),(!et(L,Z.pointer)||U?.checkpoint!==Z.rollbackCursor?.checkpoint)&&Z.markCurrentCheckpointTransient&&Z.savedCheckpointOccurrences.length>0&&(l={pointer:Z.pointer,checkpointIndex:Z.rollbackCursor?.checkpointIndex,checkpointIdentity:Z.rollbackCursor?.checkpoint,savedCheckpointOccurrences:Z.savedCheckpointOccurrences})}})}catch(C){throw yp(R),C}}),mi=(w,P,R,C={})=>{if(w===rp)return fi(()=>{let L=ys(R),U=Ws({[w]:P},L);return yi(U[w],R,C)},C);Lt(w,P)},hp=(w,P)=>{mi(w,P)},ys=w=>{if(!w)return{variables:r.selectAllVariables?r.selectAllVariables():void 0,runtime:r.selectRuntime?r.selectRuntime():{}};if(Object.prototype.hasOwnProperty.call(w,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".');let{_event:P,...R}=w,C=r.selectAllVariables?r.selectAllVariables():void 0;return{...R,_event:P,variables:C,runtime:r.selectRuntime?r.selectRuntime():{}}},gp=w=>{if(!Ue(w))return{templatePayload:w,literalTargetIds:null};let P=r.selectImageGalleryConfig();if(!Array.isArray(P?.groups))return{templatePayload:w,literalTargetIds:null};let R=typeof w.groupId=="string"?P.groups.find(L=>L.id===w.groupId):void 0;if(!R)return{templatePayload:w,literalTargetIds:null};let C=typeof w.variantId=="string"&&R.variants.some(L=>L.id===w.variantId);return{templatePayload:{...w,groupId:null,...C?{variantId:null}:{}},literalTargetIds:{groupId:w.groupId,...C?{variantId:w.variantId}:{}}}},bp=w=>!Ue(w)||typeof w.trackId!="string"?{templatePayload:w,literalTargetIds:null}:r.selectMusicRoomConfig()?.tracks?.some(C=>C.id===w.trackId)?{templatePayload:{...w,trackId:null},literalTargetIds:{trackId:w.trackId}}:{templatePayload:w,literalTargetIds:null},Ip=w=>!Ue(w)||typeof w.sceneId!="string"?{templatePayload:w,literalTargetIds:null}:r.selectSceneReplayConfig()?.replays?.some(C=>C.sceneId===w.sceneId)?{templatePayload:{...w,sceneId:null},literalTargetIds:{sceneId:w.sceneId}}:{templatePayload:w,literalTargetIds:null},wp=w=>{if(!Ue(w))throw new Error("conditional action payload must be an object");if(!Array.isArray(w.branches))throw new Error("conditional action requires branches array");if(w.branches.length===0)throw new Error("conditional action requires at least one branch")},vp=(w,P,R)=>{if(!Ue(w))throw new Error(`conditional branch at index ${P} must be an object`);if(!Ue(w.actions))throw new Error(`conditional branch at index ${P} requires actions object`);if(!Object.prototype.hasOwnProperty.call(w,"when")&&P!==R-1)throw new Error("conditional else branch must be the last branch")},yi=(w,P,R)=>{wp(w);let C=Nt(R);for(let L=0;L<w.branches.length;L+=1){let U=w.branches[L];vp(U,L,w.branches.length);let J=ys(P);if(Object.prototype.hasOwnProperty.call(U,"when")&&!it(U.when,J))continue;let pe=hs(U.actions,P,R);return ms(pe)?Dt(C,pe):C}return C},Ap=(w,P)=>({...w??{},_form:P}),kp=(w,P,R,C)=>{let L=Lt(w,P),U=L?.submitted===!0&&L.valid===!0,J=L?.cancelled===!0;if(!(!U&&!J)&&Ue(P.actions))return hs(P.actions,Ap(R,L.form),{...C,interactionSource:ai})},Pp=(w,P,R,C)=>{let L=ys(R),U={templatePayload:P,literalTargetIds:null};w===VI?U=gp(P):w===FI?U=bp(P):w===UI&&(U=Ip(P));let{templatePayload:J,literalTargetIds:Z}=U,Se=Ws({[w]:J},L)[w],yr=Z?{...Se,...Z}:Se;if(w===rp)return yi(yr,R,C);let rr=Nr(w,yr,C);if(qI.has(w))return kp(w,rr,R,C);Lt(w,rr)},hs=(w,P,R)=>{let C;return Object.entries(w).forEach(([L,U])=>{let J=Pp(L,U,P,R);ms(J)&&(C=Dt(C,J))}),C},hi=(w,P,R={})=>fi(()=>hs(w,P,R),R),xp=w=>{let P=r.selectCurrentPointer()?.pointer;if(w!==P||r.selectActiveInteraction())return;let R=r.selectNextLineConfig();R?.auto?.enabled&&R.auto.trigger==="fromStart"&&r.appendPendingEffect({name:"nextLineConfigTimer",payload:{delay:R.auto.delay}})};return{init:k,handleAction:mi,handleInternalAction:hp,handleActions:hi,selectRenderState:V,prepareRenderState:le,commitRenderState:Y,selectPresentationState:$,selectPresentationChanges:N,selectSectionLineChanges:S,selectSystemState:ne,selectAchievements:oe,selectAchievement:he,selectSaveSlotMap:ve,selectSaveSlot:ce,selectSaveSlotPage:se,selectSaveSlots:ve,selectImageGallery:ue,selectMusicRoom:ie,selectSceneReplay:O,selectIsSceneReplayActive:_,selectRuntime:Ie,selectIsChoiceVisible:K,selectIsFormVisible:Ee,selectActiveInteraction:ge,selectHasPendingRenderWork:jt,handleLineActions:w=>{if(typeof w?.sceneReplaySceneId=="string"){let P=r.selectActiveSceneReplayEntry?.();if(P?.sceneId!==w.sceneReplaySceneId||P?.entryId!==w.entryId)return!1}return v(()=>{let P=r.selectCurrentPointer()?.pointer,R=r.selectRollbackCursor?.()??null,C=l,L=u,U=ip(P,R),J=ap(P),Z=r.selectCurrentLine(),pe=!1;if(Z?.actions){try{hi(Z.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:U,dialogueHistoryAppendToPrevious:J?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:J?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:J?.forceNewOccurrence===!0})}catch(Se){throw l=C,u=L,Se}pe=!0}return xp(P),pe})},getNamespace:E}}var ui=()=>{let e=0,r=null;return{getElapsed:()=>e,setElapsed:n=>{e=n},addElapsed:n=>{e+=n},getCallback:()=>r,setCallback:n=>{r=n}}},BI=80,YI="music-room:player",sp=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),tp=(e,r)=>sp.has(e)&&r?._event?.id===YI,op=({engine:e,routeGraphics:r,trackRenderDispatch:n},o)=>{if(e.selectHasPendingRenderWork?.())return;let a=e.prepareRenderState?.(o)??e.selectRenderState(o);n?.(a),r.render(a),e.commitRenderState?.(a)},zI=({engine:e,routeGraphics:r,trackRenderDispatch:n,getRenderDispatchCount:o},a)=>{let t=o?.()??0,s=e.handleLineActions(a);(o?.()??0)===t&&op({engine:e,routeGraphics:r,trackRenderDispatch:n},a)},HI=({engine:e,ticker:r,autoTimer:n},o)=>{let a=n.getCallback();a&&r.remove(a),n.setElapsed(0);let t=s=>{n.addElapsed(s.deltaMS);let i=o.delay??1e3;n.getElapsed()>=i&&(r.remove(t),n.setCallback(null),n.setElapsed(0),_t(e,"nextLineFromSystem",{}))};n.setCallback(t),r.add(t)},GI=({ticker:e,autoTimer:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},XI=({engine:e,ticker:r,skipTimer:n},o)=>{let a=n.getCallback();a&&r.remove(a),n.setElapsed(0);let t=s=>{n.addElapsed(s.deltaMS);let i=o?.delay??BI;n.getElapsed()>=i&&(n.setElapsed(0),_t(e,"nextLineFromSystem",{}))};n.setCallback(t),r.add(t)},WI=({ticker:e,skipTimer:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},KI=({engine:e,ticker:r,nextLineConfigTimerState:n},o)=>{let a=n.getCallback();a&&r.remove(a),n.setElapsed(0);let t=s=>{n.addElapsed(s.deltaMS);let i=o.delay??1e3;n.getElapsed()>=i&&(n.setElapsed(0),_t(e,"nextLineFromSystem",{}),r.remove(t),n.getCallback()===t&&n.setCallback(null))};n.setCallback(t),r.add(t)},JI=({ticker:e,nextLineConfigTimerState:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},QI=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveSlots(r?.saveSlots))},ZI=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalDeviceVariables(r?.globalDeviceVariables))},e0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalAccountVariables(r?.globalAccountVariables))},r0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalRuntime(r?.globalRuntime))},t0=({enqueuePersistenceWrite:e},r)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(r?.updates)})},np={render:op,saveSlots:QI,saveGlobalDeviceVariables:ZI,saveGlobalAccountVariables:e0,saveGlobalRuntime:r0,applyScopedDataUpdates:t0,handleLineActions:zI,startAutoNextTimer:HI,clearAutoNextTimer:GI,startSkipNextTimer:XI,clearSkipNextTimer:WI,nextLineConfigTimer:KI,clearNextLineConfigTimer:JI},n0=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),_t=(e,r,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(r,n)},s0=(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(!n0.has(a.name)){n.unshift(a);continue}r.has(a.name)||(r.add(a.name),n.unshift(a))}return n},o0=({getEngine:e,routeGraphics:r,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:t,persistence:s,namespace:i})=>{let l=ui(),u=ui(),c=ui(),p=s??null,d=Promise.resolve(),f=null,m=null,y=!1,g=0,h=O=>{if(a){a(O);return}console.error("RouteEngine persistence write failed.",O)},I=()=>{if(p)return p;let O=e();return p=si({indexedDB:t,namespace:i??O?.getNamespace?.()}),p},b=O=>{d=d.catch(()=>{}).then(()=>{let _=I();return O(_)}).catch(_=>{h(_)})},x=O=>{let _=typeof O?.id=="string"&&O.id.length>0?O.id:null;g+=1,f=_,y=!1},v=()=>g,k=(O={})=>{if(O?.aborted===!0)return!1;let _=typeof O?.id=="string"&&O.id.length>0?O.id:null;return _?_!==f||_===m?!1:(m=_,!0):f!==null||y?!1:(y=!0,!0)},E=(O,_={})=>{if(tp(O,_)){let ee=sp.get(O),Ie=e();return _t(Ie,ee,_?._event),!0}if(O!=="renderComplete"||!k(_))return!1;let q=e();return _t(q,"markLineCompleted",{}),!0},$=new Set(["updateFormField","submitForm","cancelForm"]),N=new Set(["updateVariable"]),S=O=>typeof O?.selectActiveInteraction=="function"?O.selectActiveInteraction():typeof O?.selectIsChoiceVisible=="function"&&O.selectIsChoiceVisible()?{source:"choice"}:null,T=O=>O?._formKey??O?.formKey,V=(O,_)=>T(O)===_?.formKey,le=(O,_)=>!O||typeof O!="object"||Array.isArray(O)?!1:O._interactionSource===_?.source,Y=(O,_)=>le(O,_)?_.source==="form"?V(O,_):!0:!1,ne=(O,_)=>!O||typeof O!="object"||Array.isArray(O)||_?.source!=="form"?!1:V(O,_),oe=(O={})=>Object.keys(O).some(_=>$.has(_)),he=(O={},_)=>Object.entries(O).some(([q,ee])=>$.has(q)&&ne(ee,_)),ve=(O={})=>Object.keys(O).length>0&&Object.keys(O).every(_=>N.has(_)),ce=(O={},_)=>{let q=O?.actions;return _?.source==="form"?!q||typeof q!="object"||Array.isArray(q)?!1:he(q,_)?!0:oe(q)?!1:ve(q):Y(O,_)?!0:!q||typeof q!="object"||Array.isArray(q)?!1:Object.values(q).some(ee=>Y(ee,_))},se=(O,_={})=>{if(!_?.actions)return!1;let q=S(O);return!q||q.source==="choice"?!1:!ce(_,q)},ue=({preprocessPayload:O,onEvent:_}={})=>async(q,ee={})=>{if(tp(q,ee))return E(q,ee),_?.(q,ee);let Ie=e();if(se(Ie,ee))return _?.(q,ee);let K=await O?.(q,ee)??ee;if(se(Ie,K))return _?.(q,K);if(E(q,K),K?.actions){let Ee=K?._event?{_event:K._event}:K?.event?{_event:K.event}:void 0,ge;K?.bypassChoice===!0?ge={bypassChoice:!0}:K?._interactionSource&&(ge={interactionSource:K._interactionSource}),ge?Ie.handleActions(K.actions,Ee,ge):Ie.handleActions(K.actions,Ee)}return _?.(q,K)},ie=O=>{let _=e(),q=s0(O),ee=q.some(K=>K.name==="handleLineActions");q.forEach(K=>{if(!np[K.name]&&!o)throw new Error(`Unhandled pending effect "${K.name}".`)});let Ie={engine:_,routeGraphics:r,ticker:n,autoTimer:l,skipTimer:u,nextLineConfigTimerState:c,trackRenderDispatch:x,getRenderDispatchCount:v,enqueuePersistenceWrite:b};for(let K of q){if(ee&&K.name==="render")continue;let Ee=np[K.name];if(Ee){Ee(Ie,K.payload);continue}o(K,Ie)}};return ie.handleRouteGraphicsEvent=E,ie.createRouteGraphicsEventHandler=ue,ie},i0=o0;var a0=(e,r={})=>{let{resources:n={}}=r;return Ao(e,n)};var Yw=ci;export{eo as DEFAULT_VISUAL_LAYER,Vr as RENDER_LAYER,Ge as VISUAL_LAYER,i0 as createEffectsHandler,Ub as createIndexedDbPersistence,Yw as default,Hs as formatDate,Kd as resolveComputedVariables,a0 as resolveLayoutReferences};
1
+ var Gp=Object.defineProperty;var Hp=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Xp=(e,r)=>{for(var n in r)Gp(e,n,{get:r[n],enumerable:!0})};var nu=Hp(Ii=>{"use strict";Object.defineProperty(Ii,"__esModule",{value:!0});function tu(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}Ii.default=tu;tu.code='require("ajv/dist/runtime/ucs2length").default'});var Mi=Symbol.for("immer-nothing"),ji=Symbol.for("immer-draftable"),Se=Symbol.for("immer-state");function Le(e,...r){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Gr=Object.getPrototypeOf;function he(e){return!!e&&!!e[Se]}function Sr(e){return e?qi(e)||Array.isArray(e)||!!e[ji]||!!e.constructor?.[ji]||Zt(e)||en(e):!1}var Wp=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)===Wp}function Jt(e){return he(e)||Le(15,e),e[Se].base_}function Xt(e,r){Qt(e)===0?Reflect.ownKeys(e).forEach(n=>{r(n,e[n],e)}):e.forEach((n,o)=>r(o,n,e))}function Qt(e){let r=e[Se];return r?r.type_:Array.isArray(e)?1:Zt(e)?2:en(e)?3:0}function Os(e,r){return Qt(e)===2?e.has(r):Object.prototype.hasOwnProperty.call(e,r)}function Vi(e,r,n){let o=Qt(e);o===2?e.set(r,n):o===3?e.add(n):e[r]=n}function Kp(e,r){return e===r?e!==0||1/e===1/r:e!==e&&r!==r}function Zt(e){return e instanceof Map}function en(e){return e instanceof Set}function Er(e){return e.copy_||e.base_}function Cs(e,r){if(Zt(e))return new Map(e);if(en(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[Se];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 Ds(e,r=!1){return rn(e)||he(e)||!Sr(e)||(Qt(e)>1&&(e.set=e.add=e.clear=e.delete=Jp),Object.freeze(e),r&&Object.entries(e).forEach(([n,o])=>Ds(o,!0))),e}function Jp(){Le(2)}function rn(e){return Object.isFrozen(e)}var Qp={};function Rr(e){let r=Qp[e];return r||Le(0,e),r}var pt;function Fi(){return pt}function Zp(e,r){return{drafts_:[],parent_:e,immer_:r,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Ni(e,r){r&&(Rr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=r)}function $s(e){_s(e),e.drafts_.forEach(ed),e.drafts_=null}function _s(e){e===pt&&(pt=e.parent_)}function Di(e){return pt=Zp(pt,e)}function ed(e){let r=e[Se];r.type_===0||r.type_===1?r.revoke_():r.revoked_=!0}function Li(e,r){r.unfinalizedDrafts_=r.drafts_.length;let n=r.drafts_[0];return e!==void 0&&e!==n?(n[Se].modified_&&($s(r),Le(4)),Sr(e)&&(e=Wt(r,e),r.parent_||Kt(r,e)),r.patches_&&Rr("Patches").generateReplacementPatches_(n[Se].base_,e,r.patches_,r.inversePatches_)):e=Wt(r,n,[]),$s(r),r.patches_&&r.patchListener_(r.patches_,r.inversePatches_),e!==Mi?e:void 0}function Wt(e,r,n){if(rn(r))return r;let o=r[Se];if(!o)return Xt(r,(a,t)=>Ti(e,o,r,a,t,n)),r;if(o.scope_!==e)return r;if(!o.modified_)return Kt(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),Xt(t,(i,l)=>Ti(e,o,a,i,l,n,s)),Kt(e,a,!1),n&&e.patches_&&Rr("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Ti(e,r,n,o,a,t,s){if(he(a)){let i=t&&r&&r.type_!==3&&!Os(r.assigned_,o)?t.concat(o):void 0,l=Wt(e,a,i);if(Vi(n,o,l),he(l))e.canAutoFreeze_=!1;else return}else s&&n.add(a);if(Sr(a)&&!rn(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Wt(e,a),(!r||!r.scope_.parent_)&&typeof o!="symbol"&&Object.prototype.propertyIsEnumerable.call(n,o)&&Kt(e,a)}}function Kt(e,r,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Ds(r,n)}function rd(e,r){let n=Array.isArray(e),o={type_:n?1:0,scope_:r?r.scope_:Fi(),modified_:!1,finalized_:!1,assigned_:{},parent_:r,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},a=o,t=Ls;n&&(a=[o],t=dt);let{revoke:s,proxy:i}=Proxy.revocable(a,t);return o.draft_=i,o.revoke_=s,i}var Ls={get(e,r){if(r===Se)return e;let n=Er(e);if(!Os(n,r))return td(e,n,r);let o=n[r];return e.finalized_||!Sr(o)?o:o===Ss(e.base_,r)?(Rs(e),e.copy_[r]=Ns(o,e)):o},has(e,r){return r in Er(e)},ownKeys(e){return Reflect.ownKeys(Er(e))},set(e,r,n){let o=Ui(Er(e),r);if(o?.set)return o.set.call(e.draft_,n),!0;if(!e.modified_){let a=Ss(Er(e),r),t=a?.[Se];if(t&&t.base_===n)return e.copy_[r]=n,e.assigned_[r]=!1,!0;if(Kp(n,a)&&(n!==void 0||Os(e.base_,r)))return!0;Rs(e),js(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 Ss(e.base_,r)!==void 0||r in e.base_?(e.assigned_[r]=!1,Rs(e),js(e)):delete e.assigned_[r],e.copy_&&delete e.copy_[r],!0},getOwnPropertyDescriptor(e,r){let n=Er(e),o=Reflect.getOwnPropertyDescriptor(n,r);return o&&{writable:!0,configurable:e.type_!==1||r!=="length",enumerable:o.enumerable,value:n[r]}},defineProperty(){Le(11)},getPrototypeOf(e){return Gr(e.base_)},setPrototypeOf(){Le(12)}},dt={};Xt(Ls,(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 Ls.set.call(this,e[0],r,n,e[0])};function Ss(e,r){let n=e[Se];return(n?Er(n):e)[r]}function td(e,r,n){let o=Ui(r,n);return o?"value"in o?o.value:o.get?.call(e.draft_):void 0}function Ui(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 js(e){e.modified_||(e.modified_=!0,e.parent_&&js(e.parent_))}function Rs(e){e.copy_||(e.copy_=Cs(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var nd=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"&&Le(6),o!==void 0&&typeof o!="function"&&Le(7);let a;if(Sr(r)){let t=Di(this),s=Ns(r,void 0),i=!0;try{a=n(s),i=!1}finally{i?$s(t):_s(t)}return Ni(t,o),Li(a,t)}else if(!r||typeof r!="object"){if(a=n(r),a===void 0&&(a=r),a===Mi&&(a=void 0),this.autoFreeze_&&Ds(a,!0),o){let t=[],s=[];Rr("Patches").generateReplacementPatches_(r,a,t,s),o(t,s)}return a}else Le(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){Sr(e)||Le(8),he(e)&&(e=dr(e));let r=Di(this),n=Ns(e,void 0);return n[Se].isManual_=!0,_s(r),n}finishDraft(e,r){let n=e&&e[Se];(!n||!n.isManual_)&&Le(9);let{scope_:o}=n;return Ni(o,r),Li(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=Rr("Patches").applyPatches_;return he(e)?o(e,r):this.produce(e,a=>o(a,r))}};function Ns(e,r){let n=Zt(e)?Rr("MapSet").proxyMap_(e,r):en(e)?Rr("MapSet").proxySet_(e,r):rd(e,r);return(r?r.scope_:Fi()).drafts_.push(n),n}function dr(e){return he(e)||Le(10,e),Bi(e)}function Bi(e){if(!Sr(e)||rn(e))return e;let r=e[Se],n;if(r){if(!r.modified_)return r.base_;r.finalized_=!0,n=Cs(e,r.scope_.immer_.useStrictShallowCopy_)}else n=Cs(e,!0);return Xt(n,(o,a)=>{Vi(n,o,Bi(a))}),r&&(r.finalized_=!1),n}var Ce=new nd,Ts=Ce.produce,C0=Ce.produceWithPatches.bind(Ce),$0=Ce.setAutoFreeze.bind(Ce),_0=Ce.setUseStrictShallowCopy.bind(Ce),j0=Ce.applyPatches.bind(Ce),N0=Ce.createDraft.bind(Ce),D0=Ce.finishDraft.bind(Ce);var A={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},Y={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 _=class extends Error{constructor(r){super(`Parse Error: ${r}`),this.name="JemplParseError"}},ke=class extends Error{constructor(r){super(`Render Error: ${r}`),this.name="JemplRenderError"}};var Ms=e=>{if(!e||e.trim()==="")throw new _("Missing condition expression after '$if'");if(e.includes("===")||e.includes("!==")){let n=e.includes("===")?"==":"!=";throw new _(`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 _(`Incomplete comparison expression - missing right operand (got: '${e}')`)},Yi=e=>{if(e.trim().endsWith(" in"))throw new _(`Missing iterable expression after 'in' (got: '$for ${e}')`);if(!e.includes(" in "))throw new _(`Invalid loop syntax - missing 'in' keyword (got: '$for ${e}')`);let[r,n]=e.split(" in ");if(!n||n.trim()==="")throw new _(`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 _(`Invalid loop variable - variable name cannot be empty (got: '$for ${e}')`);if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(a))throw new _(`Invalid loop syntax (got: '$for ${e}')`)}};var zi=(e,r,n=!1)=>{if(r===null)return new ke(`Cannot iterate over null value at '$for ${e}'`);if(r===void 0)return new ke(`Cannot iterate over undefined value at '$for ${e}'`);let o=typeof r;return n?new ke(`Cannot iterate over non-array value in loop '${e}' - got ${o} instead`):new ke(`Cannot iterate over non-array value (got: ${o}) at '$for ${e}'`)},Gi=(e,r)=>{let n=r&&Object.keys(r).length>0?Object.keys(r).join(", "):"no custom functions provided";return new ke(`Unknown function '${e}' (${n})`)};var sd=(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=H(e,{functions:o,partials:a},r,{});return s===void 0?{}:s},H=(e,r,n,o)=>{let a=r.functions||r;if(e.var&&!e.type)return de(e.var,n,o);if(e.type===A.LITERAL)return e.value;if(e.type===A.VARIABLE)return de(e.path,n,o);if(e.type===A.INTERPOLATION)return id(e.parts,r,n,o);switch(e.type){case A.FUNCTION:return Xi(e,r,n,o);case A.BINARY:return Wi(e,r,n,o);case A.UNARY:return Ki(e,r,n,o);case A.CONDITIONAL:return ld(e,r,n,o);case A.LOOP:return fd(e,r,n,o);case A.OBJECT:return yd(e,r,n,o);case A.ARRAY:return hd(e,r,n,o);case A.PARTIAL:return gd(e,r,n,o);case A.PATH_REFERENCE:return bd(e,r,n,o);default:throw new Error(`Unknown node type: ${e.type}`)}},Hi=new Map,od=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},de=(e,r,n)=>{if(!e)return;if(e in n)return n[e];let o=Hi.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=od(l.trim());o.push(...c)}Hi.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},id=(e,r,n,o)=>{let a=[];for(let t of e)if(typeof t=="string")a.push(t);else{let s=H(t,r,n,o);a.push(s!=null?String(s):"")}return a.join("")},Xi=(e,r,n,o)=>{let a=r.functions||r,t=a[e.name];if(!t)throw Gi(e.name,a);let s=e.args.map(i=>H(i,r,n,o));return t(...s)},fr=(e,r,n,o)=>{if(e.var&&!e.type)return de(e.var,n,o);switch(e.type){case A.VARIABLE:return de(e.path,n,o);case A.LITERAL:return e.value;case A.BINARY:return Wi(e,r,n,o);case A.UNARY:return Ki(e,r,n,o);case A.FUNCTION:return Xi(e,r,n,o);default:return H(e,r,n,o)}},Wi=(e,r,n,o)=>{if(e.op===Y.AND||e.op===Y.OR){let s=fr(e.left,r,n,o),i=fr(e.right,r,n,o);switch(e.op){case Y.AND:return s&&i;case Y.OR:return s||i}}let a=H(e.left,r,n,o),t=H(e.right,r,n,o);switch(e.op){case Y.EQ:return a==t;case Y.NEQ:return a!=t;case Y.GT:return a>t;case Y.LT:return a<t;case Y.GTE:return a>=t;case Y.LTE:return a<=t;case Y.IN:return Array.isArray(t)?t.includes(a):!1;case Y.ADD:if(typeof a!="number"||typeof t!="number")throw new ke(`Arithmetic operations require numbers. Got ${typeof a} + ${typeof t}`);return a+t;case Y.SUBTRACT:if(typeof a!="number"||typeof t!="number")throw new ke(`Arithmetic operations require numbers. Got ${typeof a} - ${typeof t}`);return a-t;default:throw new Error(`Unknown binary operator: ${e.op}`)}},Ki=(e,r,n,o)=>{let a=e.op===Hr.NOT?fr(e.operand,r,n,o):H(e.operand,r,n,o);if(e.op===Hr.NOT)return!a;throw new Error(`Unknown unary operator: ${e.op}`)},ad=(e,r,n,o)=>{if(e.conditions.length===2&&e.conditions[1]===null){let a=e.conditions[0];if(a.type===A.VARIABLE)if(de(a.path,n,o)){let s=e.bodies[0];if(s.type===A.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let c=l.parsedKey?H(l.parsedKey,r,n,o):l.key,u=l.value;if(u.type===A.LITERAL)i[c]=u.value;else if(u.type===A.VARIABLE)i[c]=de(u.path,n,o);else if(u.type===A.INTERPOLATION){let p=[];for(let m of u.parts)if(typeof m=="string")p.push(m);else if(m.type===A.VARIABLE){let d=de(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=H(m,r,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=H(u,r,n,o)}return i}}else{let s=e.bodies[1];if(s.type===A.OBJECT&&s.properties.length<=5){let i={};for(let l of s.properties){let c=l.parsedKey?H(l.parsedKey,r,n,o):l.key,u=l.value;if(u.type===A.LITERAL)i[c]=u.value;else if(u.type===A.VARIABLE)i[c]=de(u.path,n,o);else if(u.type===A.INTERPOLATION){let p=[];for(let m of u.parts)if(typeof m=="string")p.push(m);else if(m.type===A.VARIABLE){let d=de(m.path,n,o);p.push(d!=null?String(d):"")}else{let d=H(m,r,n,o);p.push(d!=null?String(d):"")}i[c]=p.join("")}else i[c]=H(u,r,n,o)}return i}}}return null},ld=(e,r,n,o)=>{let a=ad(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||fr(s,r,n,o))return H(e.bodies[t],r,n,o)}return Ji},cd=(e,r)=>{let n=e.body,o=e.itemVar;if(n.type===A.CONDITIONAL&&n.conditions.length===1&&n.conditions[0].type===A.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===A.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 m=p.key,d=p.value;if(d.type===A.LITERAL)u[m]=d.value;else if(d.type===A.VARIABLE){let f=d.path;if(f===o)u[m]=c;else if(f.startsWith(o+".")){let y=f.substring(o.length+1);u[m]=c[y]}else return null}else if(d.type===A.INTERPOLATION){let f=[],y=!0;for(let g of d.parts)if(typeof g=="string")f.push(g);else if(g.type===A.VARIABLE){let h=g.path;if(h===o)f.push(c!=null?String(c):"");else if(h.startsWith(o+".")){let I=h.substring(o.length+1),b=c[I];f.push(b!=null?String(b):"")}else{y=!1;break}}else{y=!1;break}if(!y)return null;u[m]=f.join("")}else return null}i.push(u)}}return i}}}return null},ud=(e,r)=>{let n=e.body,o=e.itemVar,a=cd(e,r);if(a!==null)return a;if(n.type===A.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===A.LITERAL)t.push({key:l,type:"literal",value:c.value});else if(c.type===A.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===A.INTERPOLATION&&c.parts.length===1){let u=c.parts[0];if(u.type===A.VARIABLE){let p=u.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 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 m=c[p.prop];u[p.key]=m!=null?String(m):""}i[l]=u}return i}}return null},pd=(e,r,n,o,a)=>{let t=[],s=e.body;if(s.type===A.OBJECT&&s.fast!==!1){let i=e.itemVar,l=e.indexVar;for(let c=0;c<a.length;c++){let u=a[c],p={},m={...o,[i]:u,...l&&{[l]:c}};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}[${c}]`,...l&&{[l]:c}};for(let f of s.properties){let y=f.parsedKey?H(f.parsedKey,r,n,m):f.key,g=f.value;if(g.type===A.LITERAL)p[y]=g.value;else if(g.type===A.VARIABLE){let h=g.path;if(h===i)p[y]=u;else if(h===l)p[y]=c;else if(h.startsWith(i+".")){let I=h.substring(i.length+1);!I.includes(".")&&!I.includes("[")?p[y]=u[I]:p[y]=de(h,n,{...o,[i]:u,...l&&{[l]:c}})}else p[y]=de(h,n,{...o,[i]:u,...l&&{[l]:c}})}else if(g.type===A.INTERPOLATION){let h=[];for(let I of g.parts)if(typeof I=="string")h.push(I);else if(I.type===A.VARIABLE){let b=I.path,x;if(b===i)x=u;else if(b===l)x=c;else if(b.startsWith(i+".")){let v=b.substring(i.length+1);!v.includes(".")&&!v.includes("[")?x=u[v]:x=de(b,n,{...o,[i]:u,...l&&{[l]:c}})}else x=de(b,n,{...o,[i]:u,...l&&{[l]:c}});h.push(x!=null?String(x):"")}else{let b={...o,[i]:u,...l&&{[l]:c}},x=H(I,r,n,b);h.push(x!=null?String(x):"")}p[y]=h.join("")}else{let h={...o,[i]:u,...l&&{[l]:c}};p[y]=H(g,r,n,h)}}t.push(p)}return t}return null},dd=(e,r,n)=>{let o=e.body;if(o.type===A.OBJECT&&o.properties.length===1&&o.properties[0].key==="$if item.visible"){let t=o.properties[0].value;if(t.type===A.CONDITIONAL&&t.conditions.length===1&&t.conditions[0].type===A.VARIABLE&&t.conditions[0].path==="item.visible"){let s=t.bodies[0];if(s.type===A.OBJECT&&s.properties.length===2){let i=s.properties[0],l=s.properties[1];if(i.key==="id"&&i.value.type===A.VARIABLE&&i.value.path==="item.id"&&l.key==="$if item.highlighted"&&l.value.type===A.CONDITIONAL){let c=[];for(let u=0;u<r.length;u++){let p=r[u];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),c.push(m)}}return c}}}}return null},fd=(e,r,n,o)=>{let a=H(e.iterable,r,n,o);if(!Array.isArray(a)){let c,u=!1;if(e.iterable.type===A.FUNCTION){u=!0;let m=e.iterable.args.map(d=>d.type===A.LITERAL?typeof d.value=="string"?`'${d.value}'`:String(d.value):d.type===A.VARIABLE?d.path:d.type===A.FUNCTION?`${d.name}(...)`:"?").join(", ");c=`${e.iterable.name}(${m})`}else c=e.iterable.path||"undefined";let p=`${e.itemVar}${e.indexVar?`, ${e.indexVar}`:""} in ${c}`;throw zi(p,a,u)}if(!e.indexVar){let c=dd(e,a,e.itemVar);if(c!==null)return c}if(!e.indexVar){let c=ud(e,a);if(c!==null)return c}let t=pd(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===A.ARRAY&&(e.body.items.length<=1?l=!1:l=e.body._shouldPreserveArray??=e.body.items.some(c=>c.type===A.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=H(e.body,r,n,u);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},md=(e,r,n,o)=>{if(e.whenCondition)return null;if(e.properties.length===1){let a=e.properties[0],t=a.parsedKey?H(a.parsedKey,r,n,o):a.key,s=a.value;if(s.type===A.OBJECT&&s.properties.length<=10&&!s.whenCondition){let i={},l={},c=!0;for(let u of s.properties){let p=u.parsedKey?H(u.parsedKey,r,n,o):u.key,m=u.value;if(m.type===A.LITERAL)l[p]=m.value;else if(m.type===A.VARIABLE)l[p]=de(m.path,n,o);else if(m.type===A.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===A.VARIABLE){let y=de(f.path,n,o);d.push(y!=null?String(y):"")}else{c=!1;break}if(!c)break;l[p]=d.join("")}else if(m.type===A.OBJECT&&m.properties.length<=5){let d={};for(let f of m.properties){let y=f.key,g=f.value;if(g.type===A.LITERAL)d[y]=g.value;else if(g.type===A.VARIABLE)d[y]=de(g.path,n,o);else if(g.type===A.INTERPOLATION){let h=[];for(let I of g.parts)if(typeof I=="string")h.push(I);else if(I.type===A.VARIABLE){let b=de(I.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},yd=(e,r,n,o)=>{let a=r.functions||r;if(e.whenCondition&&!fr(e.whenCondition,a,n,o))return;let t=md(e,r,n,o);if(t!==null)return t;if(e.fast){let c={};for(let u of e.properties){let p=u.parsedKey?H(u.parsedKey,r,n,o):u.key,m=u.value;if(m.type===A.LITERAL)c[p]=m.value;else if(m.type===A.VARIABLE)c[p]=de(m.path,n,o);else if(m.type===A.INTERPOLATION){let d=[];for(let f of m.parts)if(typeof f=="string")d.push(f);else if(f.type===A.VARIABLE){let y=de(f.path,n,o);d.push(y!=null?String(y):"")}else{let y=H(f,r,n,o);d.push(y!=null?String(y):"")}c[p]=d.join("")}else c[p]=H(m,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=H(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 H(c.value,r,n,o)}else{let u=c.value;if(u&&u.type===A.OBJECT&&u.properties){let p=u.properties.find(m=>m.key.startsWith("$for "));if(p){let m=H(p.value,r,n,o);m!==void 0&&(s[c.key]=m)}else{let m=H(c.value,r,n,o);m!==void 0&&(s[c.key]=m)}}else{let p=c.parsedKey?H(c.parsedKey,r,n,o):c.key,m=H(c.value,r,n,o);m!==void 0&&(s[p]=m)}}return s},Ji={},hd=(e,r,n,o)=>{let a=[];for(let t of e.items)if(t.type===A.LOOP){let s=H(t,r,n,o);Array.isArray(s)&&t.flatten!==!1?a.push(...s):a.push(s)}else{let s=H(t,r,n,o);s!==Ji&&s!==void 0&&a.push(s)}return a},gd=(e,r,n,o)=>{let{name:a,data:t,whenCondition:s}=e,i=r.partials||{},l=r.functions||r;if(s&&!fr(s,l,n,o))return;if(!i[a])throw new ke(`Partial '${a}' is not defined`);let c=o._partialStack||[];if(c.includes(a))throw new ke(`Circular partial reference detected: ${a}`);let u=i[a],p=n,m={...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=H(t,r,n,o);p={...p,...d}}return H(u,r,p,m)},bd=(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 ke(`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 ke(`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 ke(`Path reference '#{${a}}' - cannot access properties on index variable '${s}'`);return String(l)}return i.length>0&&(l+="."+i.join(".")),l};var qs=sd;var Id=/\$\{([^}]*)\}/g,wd=/#\{([^}]*)\}/g,Zi=(e,r={})=>{let n=e.match(/^(\w+)\((.*)\)$/);if(!n)return{isFunction:!1};let[,o,a]=n,t=vd(a,r);return{isFunction:!0,type:A.FUNCTION,name:o,args:t}},vd=(e,r={})=>e.trim()?Ad(e).map(o=>kd(o.trim(),r)):[],Ad=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},kd=(e,r={})=>{if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:A.LITERAL,value:e.slice(1,-1)};if(/^-?\d+(\.\d+)?$/.test(e))return{type:A.LITERAL,value:parseFloat(e)};if(e==="true")return{type:A.LITERAL,value:!0};if(e==="false")return{type:A.LITERAL,value:!1};if(e==="null")return{type:A.LITERAL,value:null};let n=Zi(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=Or(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 ge(o,r)}catch{return{type:A.VARIABLE,path:o}}return{type:A.VARIABLE,path:o}},ea=/^\w+\(.*\)$/,Pd=/\s[+\-*/%]\s|\|\||&&|\?\?|.*\?.*:/,xd=e=>{if(!(!e||e.trim()===""||ea.test(e))&&Pd.test(e))throw e.includes("?")&&e.includes(":")?new _(`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 _(`Logical operators not supported in variable replacements - consider calculating the value in your data instead (operators like ||, &&, ?? are not supported). Offending expression: "${e}"`):new _(`Arithmetic expressions not supported in variable replacements - consider calculating '${e}' in your data instead (expressions with +, -, *, /, % are not supported). Offending expression: "${e}"`)},Qi=e=>{let r=e.trim();if(ea.test(r))throw new _(`Functions are not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(r.includes("["))throw new _(`Array indices not supported in path references - use simple variable names or properties. Offending expression: "#{${e}}"`);if(/[+\-*/%]/.test(r))throw new _(`Arithmetic expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);if(/\|\||&&/.test(r))throw new _(`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 _(`Complex expressions not supported in path references - path references can only refer to loop variables. Offending expression: "#{${e}}"`);return{type:A.PATH_REFERENCE,path:r}},ft=(e,r={})=>{let n=e.trim();xd(n);let o=Zi(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:A.VARIABLE,path:n}},Vs=(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(Id)],t=[...n.matchAll(wd)],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:A.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"?ft(c[1],r):Qi(c[1])}catch(p){if(p.message==="Invalid array index syntax")return{type:A.LITERAL,value:n};throw p}}let i=[],l=0;for(let{match:c,type:u}of s){let[p,m]=c,d=c.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;u==="variable"?f=ft(m.trim(),r):f=Qi(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 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:A.INTERPOLATION,parts:i}};var Bs=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),na=e=>Object.keys(e),we=e=>e.join("."),mr=(e,r,n)=>{let o=na(e).filter(a=>!r.has(a));if(o.length>0)throw new _(`Unexpected key '${o[0]}' in condition JSON at '${we(n)}'`)},yr=(e,r)=>typeof e=="string"?Vs(e,r):typeof e=="object"&&e!==null?Array.isArray(e)?Sd(e,r):Rd(e,r):{type:A.LITERAL,value:e},Ed=e=>{let{$each:r,...n}=e;if(typeof r!="string")throw new _("$each value must be a non-empty string");let o=r.trim();if(o==="")throw new _("$each value must be a non-empty string");if(Object.keys(n).length===0)throw new _("Empty $each body not allowed");if(n.$partial!==void 0)throw new _("Cannot use $partial with $each at the same level. Wrap $partial in a parent object if you need conditionals.");return{[`$for ${o}`]:n}},Sd=(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=Ed(t),c=Object.keys(l);if(c.length===1&&/^\$for(?::\w+)?\s/.test(c[0])){let u=ta(c[0],l[c[0]],r,!0);n.push(u),o=!0;continue}}catch(l){throw l instanceof _?l:new _(l.message)}let i=Object.keys(t);if(i.length===1&&/^\$for(?::\w+)?\s/.test(i[0])){let l=ta(i[0],t[i[0]],r);n.push(l),o=!0;continue}}let s=yr(t,r);n.push(s),(s.type===A.FUNCTION||s.type===A.CONDITIONAL||s.type===A.LOOP||s.type===A.PARTIAL||s.type===A.OBJECT&&!s.fast||s.type===A.ARRAY&&!s.fast)&&(o=!0)}return{type:A.ARRAY,items:n,fast:!o}},Rd=(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 _("$partial value must be a string");if(e.$partial.trim()==="")throw new _("$partial value cannot be an empty string");let l=["$if","$elif","$else","$for"],c=[];for(let[h]of t)for(let I of l)if(h===I||h.startsWith(I+" ")||h.startsWith(I+"#")){c.push(I);break}if(c.length>0)throw new _(`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,...m}=e,d={},f=!1;for(let[h,I]of Object.entries(m)){let b=h;(h.startsWith("\\$")||h.startsWith("$$"))&&(b=h.slice(1)),d[b]=I,f=!0}let y=null;if(f&&(y=yr(d,r),y.type===A.OBJECT)){let h=!1;for(let I of y.properties)if(I.value.type===A.VARIABLE||I.value.type===A.INTERPOLATION||I.value.type===A.FUNCTION||I.value.type===A.CONDITIONAL||I.value.type===A.OBJECT&&!I.value.fast||I.value.type===A.ARRAY&&!I.value.fast){h=!0;break}h&&(y.fast=!1)}let g={type:A.PARTIAL,name:u,data:y};return p!==void 0&&(g.whenCondition=ra(p,r)),g}for(let[l,c]of t)if(l==="$when"){if(a!==null)throw new _("Multiple '$when' directives on the same object are not allowed");if(c==null)throw new _("Missing condition expression after '$when'");a=ra(c,r),o=!0}else if(l.startsWith("$when#")||l.startsWith("$when "))throw new _("'$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 _("$each can only be used inside arrays");if(l.startsWith("$if ")||l.match(/^\$if#\w+\s/)||l.match(/^\$if\s+\w+.*:$/)){let u=Od(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 _(`$for loops must be inside arrays - use '- $for${p} item in items:' instead of '$for${p} item in items:'. For cleaner object generation syntax, consider using $each.`)}else{if(l.startsWith("$elif ")||l.startsWith("$else"))throw new _(`'${l.split(" ")[0]}' without matching '$if'`);if(l==="$if"||l==="$if:")throw new _("Missing condition expression after '$if'");{let u=yr(c,r);(u.type===A.FUNCTION||u.type===A.CONDITIONAL||u.type===A.PARTIAL||u.type===A.OBJECT&&!u.fast||u.type===A.ARRAY&&!u.fast)&&(o=!0);let p=Vs(l,r),m={key:l,value:u};(p.type!==A.LITERAL||p.value!==l)&&(m.parsedKey=p),n.push(m),s++}}}let i={type:A.OBJECT,properties:n,fast:!o};return a&&(i.whenCondition=a),i},Od=(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 _(`Invalid conditional syntax: ${s}`)}else c=s.substring(4),c.endsWith(":")&&(c=c.slice(0,-1).trim());Ms(c);let u=ge(c,n);for(o.push(u),a.push(yr(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{Ms(f);let y=ge(f,n);o.push(y)}if(a.push(yr(m,n)),t++,f===null)break}else break}return{node:{type:A.CONDITIONAL,conditions:o,bodies:a,id:l},nextIndex:t}},Fs={eq:Y.EQ,neq:Y.NEQ,gt:Y.GT,gte:Y.GTE,lt:Y.LT,lte:Y.LTE,in:Y.IN,add:Y.ADD,sub:Y.SUBTRACT},Us={all:Y.AND,any:Y.OR},Cd=new Set(["var","literal","call","not",...Object.keys(Fs),...Object.keys(Us)]),$d=(e,r,n)=>{if(!Array.isArray(e))throw new _(`Condition JSON operator '${r}' at '${we(n)}' requires an array`);if(e.length!==2)throw new _(`Condition JSON operator '${r}' at '${we(n)}' requires exactly 2 operands`);return e},_d=(e,r,n,o,a)=>{if(!Array.isArray(e))throw new _(`Condition JSON operator '${r}' at '${we(a)}' requires an array`);if(e.length===0)throw new _(`Condition JSON operator '${r}' at '${we(a)}' requires at least 1 condition`);return e.map((s,i)=>Re(s,o,[...a,i])).reduce((s,i)=>({type:A.BINARY,op:n,left:s,right:i}))},jd=(e,r,n)=>{let o,a;if(typeof e.call=="string")o=e.call,a=e.args??[],mr(e,new Set(["call","args"]),n);else if(Bs(e.call))o=e.call.name,a=e.call.args??[],mr(e,new Set(["call"]),n),mr(e.call,new Set(["name","args"]),[...n,"call"]);else throw new _(`Condition JSON call at '${we(n)}' requires a function name`);if(typeof o!="string"||o.trim()==="")throw new _(`Condition JSON call at '${we(n)}' requires a non-empty function name`);if(!/^\w+$/.test(o))throw new _(`Invalid condition JSON function name '${o}' at '${we(n)}'`);if(!Array.isArray(a))throw new _(`Condition JSON call '${o}' at '${we(n)}' requires args to be an array`);return{type:A.FUNCTION,name:o,args:a.map((t,s)=>Re(t,r,[...n,"args",s]))}},Re=(e,r={},n=["$when"])=>{if(typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null)return{type:A.LITERAL,value:e};if(Array.isArray(e))throw new _(`Condition JSON array at '${we(n)}' must be wrapped in an operator or { literal: [...] }`);if(!Bs(e))throw new _(`Invalid condition JSON value at '${we(n)}'`);let o=na(e);if(o.length===0)throw new _(`Condition JSON object at '${we(n)}' must contain an operator`);let a=o.filter(s=>Cd.has(s));if(a.length===0)throw new _(`Unknown condition JSON operator '${o[0]}' at '${we(n)}'`);if(a.length>1)throw new _(`Condition JSON at '${we(n)}' must contain exactly one operator`);let t=a.includes("call")?"call":a[0];if(t==="var"){if(mr(e,new Set(["var"]),n),typeof e.var!="string"||e.var.trim()==="")throw new _(`Condition JSON var at '${we(n)}' requires a non-empty path`);return{type:A.VARIABLE,path:e.var}}if(t==="literal")return mr(e,new Set(["literal"]),n),{type:A.LITERAL,value:e.literal};if(t==="call")return jd(e,r,n);if(t==="not")return mr(e,new Set(["not"]),n),{type:A.UNARY,op:Hr.NOT,operand:Re(e.not,r,[...n,"not"])};if(t in Us)return mr(e,new Set([t]),n),_d(e[t],t,Us[t],r,[...n,t]);if(t in Fs){mr(e,new Set([t]),n);let s=$d(e[t],t,[...n,t]);return{type:A.BINARY,op:Fs[t],left:Re(s[0],r,[...n,t,0]),right:Re(s[1],r,[...n,t,1])}}throw new _(`Unknown condition JSON operator '${t}' at '${we(n)}'`)},ra=(e,r={})=>{if(e==null)throw new _("Missing condition expression after '$when'");if(typeof e=="string"){if(e.trim()==="")throw new _("Empty condition expression after '$when'");return ge(e,r)}return Bs(e)||Array.isArray(e)?Re(e,r):{type:A.LITERAL,value:e}},ge=(e,r={})=>{if(e=e.trim(),e.startsWith("(")&&e.endsWith(")")){let c=e.slice(1,-1),u=0,p=!0;for(let m=0;m<c.length;m++)if(c[m]==="("?u++:c[m]===")"&&u--,u<0){p=!1;break}if(p&&u===0)return ge(c,r)}let n=Or(e,"||");if(n!==-1)return{type:A.BINARY,op:Y.OR,left:ge(e.substring(0,n).trim(),r),right:ge(e.substring(n+2).trim(),r)};let o=Or(e,"&&");if(o!==-1)return{type:A.BINARY,op:Y.AND,left:ge(e.substring(0,o).trim(),r),right:ge(e.substring(o+2).trim(),r)};let a=[{op:">=",type:Y.GTE},{op:"<=",type:Y.LTE},{op:"==",type:Y.EQ},{op:"!=",type:Y.NEQ},{op:">",type:Y.GT},{op:"<",type:Y.LT},{op:" in ",type:Y.IN}];for(let{op:c,type:u}of a){let p=Or(e,c);if(p!==-1)return{type:A.BINARY,op:u,left:ge(e.substring(0,p).trim(),r),right:ge(e.substring(p+c.length).trim(),r)}}let t=-1,s=null,i=[{op:" + ",type:Y.ADD},{op:" - ",type:Y.SUBTRACT}];for(let{op:c,type:u}of i){let p=0;for(;p<e.length;){let m=Or(e.substring(p),c);if(m===-1)break;let d=p+m;d>t&&(t=d,s={op:c,type:u}),p=d+c.length}}if(t!==-1&&s)return{type:A.BINARY,op:s.type,left:ge(e.substring(0,t).trim(),r),right:ge(e.substring(t+s.op.length).trim(),r)};let l=[" * "," / "," % "];for(let c of l)if(Or(e,c)!==-1)throw new _(`Arithmetic operations are not allowed in conditionals: "${c}"`);return e.startsWith("!")?{type:A.UNARY,op:Hr.NOT,operand:ge(e.substring(1).trim(),r)}:sa(e,r)},Or=(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},Nd=e=>{if(e=e.trim(),e==="true")return{type:A.LITERAL,value:!0};if(e==="false")return{type:A.LITERAL,value:!1};if(e==="null")return{type:A.LITERAL,value:null};if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return{type:A.LITERAL,value:e.slice(1,-1)};if(e==='""'||e==="''")return{type:A.LITERAL,value:""};if(e==="{}")return{type:A.LITERAL,value:{}};if(e==="[]")return{type:A.LITERAL,value:[]};let r=Number(e);return!isNaN(r)&&isFinite(r)?{type:A.LITERAL,value:r}:{type:A.VARIABLE,path:e}},sa=(e,r)=>{let n=e.trim();if(n.match(/^(\w+)\((.*)\)$/))return ft(n,r);let a=Nd(n);if(a.type===A.LITERAL)return a;if(/^[a-zA-Z_$][\w.$]*$/.test(n))return{type:A.VARIABLE,path:n};try{return ft(n,r)}catch(t){if(t.message&&t.message.includes("not supported"))return a;throw t}},Dd=(e,r=!1)=>{let n=r?"$each":"$for";try{Yi(e)}catch(o){if(o instanceof _&&r){let a=o.message.replace(/\$for/g,"$each");throw new _(a.replace("Parse Error: ",""))}throw o}},ta=(e,r,n,o=!1)=>{let a=/^\$for(?::(\w+))?\s+(.+)$/,t=e.match(a);if(!t){let g=o?"$each":"$for";throw new _(`Invalid loop syntax (got: '${e.replace("$for",g)}')`)}let s=t[1],i=t[2].trim();Dd(i,o);let l=i.match(/^(.+?)\s+in\s+(.+)$/);if(!l){let g=o?"$each":"$for";throw new _(`Invalid loop syntax - missing 'in' keyword (got: '${g} ${i}')`)}let c=l[1].trim(),u=l[2].trim(),p,m=null;if(c.includes(",")){let g=c.split(",").map(h=>h.trim());if(g.length!==2)throw new _(`Invalid loop variables: ${c}. Expected format: "item" or "item, index"`);p=g[0],m=g[1]}else p=c;let d=["this","undefined","null","true","false"];if(d.includes(p))throw new _(`Reserved variable name: ${p}`);if(m&&d.includes(m))throw new _(`Reserved variable name: ${m}`);let f=sa(u,n),y=yr(r,n);return{type:A.LOOP,itemVar:p,indexVar:m,iterable:f,body:y,flatten:s!=="nested"}};var Ld=(e,r={})=>{let{functions:n={}}=r;return yr(e,n)},tn=Ld;var mt={};Xp(mt,{now:()=>Td});var Td=()=>Date.now();var Md=(e,r,n={})=>{let{functions:o={},partials:a={}}=n,t={...mt,...o},s=tn(e,{functions:t}),i={};for(let[l,c]of Object.entries(a))i[l]=tn(c,{functions:t});return qs(s,r,{functions:t,partials:i})},Cr=Md;var qd=e=>e!==null&&typeof e=="object"&&!Array.isArray(e)&&typeof e.type=="number",Vd=(e={})=>!e||typeof e!="object"?{}:Object.prototype.hasOwnProperty.call(e,"functions")||Object.prototype.hasOwnProperty.call(e,"partials")?e.functions||{}:e,Fd=(e,r)=>{if(qd(e))return e;if(typeof e=="string"){if(e.trim()==="")throw new _("Empty condition expression");return ge(e,r)}return Re(e,r)},Ud=(e,r={},n={})=>{let o=Vd(n),a={...mt,...o},t=Fd(e,a);return!!fr(t,{functions:a,partials:{}},r,{})},Ys=Ud;var Zs=Symbol("runStoreTransaction"),Xs="__routeEngineConditionComparison",nn=(e,r)=>typeof e=="number"&&typeof r=="number"&&Number.isFinite(e)&&Number.isFinite(r)||typeof e=="string"&&typeof r=="string",hr=Object.freeze({eq:(e,r)=>e===r,neq:(e,r)=>e!==r,gt:(e,r)=>nn(e,r)&&e>r,gte:(e,r)=>nn(e,r)&&e>=r,lt:(e,r)=>nn(e,r)&&e<r,lte:(e,r)=>nn(e,r)&&e<=r}),pa=Object.freeze(Object.fromEntries(Object.keys(hr).map(e=>[e,`${Xs}${e}`]))),Bd=Object.freeze(Object.fromEntries(Object.entries(pa).map(([e,r])=>[r,hr[e]]))),oa=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Yd=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},sn=e=>{if(Array.isArray(e))return e.map(sn);if(e===null||typeof e!="object"||oa(e,"literal")||oa(e,"var"))return e;if(Yd(e)?.startsWith(Xs))throw new Error(`Condition function names beginning with "${Xs}" 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(sn)}}return Object.fromEntries(n.map(([o,a])=>[o,sn(a)]))},ht=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Re(e),Ys(sn(e),r,{functions:Bd})},zd=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],da=(e,r,n={})=>{let o=structuredClone(e),a={},t={},{transformSelectorFirstArgument:s=c=>c,transformActionFirstArgument:i=c=>c}=n;for(let[c,u]of Object.entries(r))c!=="createInitialState"&&(c.startsWith("select")?a[c]=(...p)=>u(s(o),...p):t[c]=(...p)=>{let m;return o=Ts(o,f=>{let y=u(i(f),...p);m=y!==void 0&&!he(y)?y:void 0}),m});let l=c=>{if(typeof c!="function")throw new Error("Store transaction requires a callback");let u=o;try{return c()}catch(p){throw o=u,p}};return{...a,...t,[Zs]:l}},cn=(e,r)=>n=>{let o=e(),a=Array.isArray(n)?n:[n];return Ts(o,t=>{a.forEach(s=>{r.forEach(i=>{i(t,s)})})})};var Gd=(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{}}},B=(e,r)=>Object.prototype.hasOwnProperty.call(e??{},r),Ws=(e,r,n)=>{Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0})},fe=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Hd=new Set(["pageSize","groups"]),Xd=new Set(["id","variants"]),Wd=new Set(["id","imageId"]),Kd=new Set(["pageSize","tracks"]),Jd=new Set(["id","soundId","title","artist","album","description","coverImageId"]),Qd=new Set(["pageSize","replays"]),Zd=new Set(["sceneId","title","thumbnailImageId","initialVariables"]),$r=(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(!fe(r))throw new Error("resources.imageGallery must be an object");if($r(r,Hd,"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(!fe(a))throw new Error(`${t} must be an object`);if($r(a,Xd,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 c=`${t}.variants[${i}]`;if(!fe(l))throw new Error(`${c} must be an object`);if($r(l,Wd,c),Xr(l.id,`${c}.id`),Xr(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),!B(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(!fe(r))throw new Error("resources.musicRoom must be an object");if($r(r,Kd,"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(!fe(a))throw new Error(`${t} must be an object`);$r(a,Jd,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(!B(e?.resources?.sounds,a.soundId))throw new Error(`Music room track "${a.id}" references unknown sound "${a.soundId}"`);if(!fe(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&&!B(e?.resources?.images,a.coverImageId))throw new Error(`Music room track "${a.id}" references unknown cover image "${a.coverImageId}"`)}},ef=(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(!fe(r))throw new Error("resources.sceneReplay must be an object");if($r(r,Qd,"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(!fe(t))throw new Error(`${s} must be an object`);$r(t,Zd,s);for(let u of["sceneId","title","thumbnailImageId"])Xr(t[u],`${s}.${u}`);if(o.has(t.sceneId))throw new Error(`Duplicate scene replay sceneId "${t.sceneId}"`);if(o.add(t.sceneId),!B(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(!fe(t.initialVariables))throw new Error(`${s}.initialVariables must be an object`);for(let[u,p]of Object.entries(t.initialVariables)){let m=e?.resources?.variables?.[u];if(!m)throw new Error(`Scene replay scene "${t.sceneId}" initialVariables references unknown variable "${u}"`);if($e(m))throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize computed variable "${u}"`);if(m.readonly===!0)throw new Error(`Scene replay scene "${t.sceneId}" cannot initialize readonly variable "${u}"`);if(m.scope!=="context")throw new Error(`Scene replay scene "${t.sceneId}" can only initialize context variable "${u}"`);ef(u,m,p)}}}},fa=e=>{let r=he(e)?dr(e):e;return structuredClone(r)},rf=({characterId:e,resourceCharacter:r,variables:n={}}={})=>{if(!B(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},un=({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=rf({characterId:e,resourceCharacter:t,variables:a});return s!==void 0?s:t?.name||""},$e=e=>B(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}},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))&&eo(s,t)})),Me=(e,r)=>new Error(`${r} has invalid path: ${JSON.stringify(e)}`),tf=(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 c=e.slice(t+1,t+5);if(c.length!==4||!/^[0-9a-fA-F]{4}$/.test(c))throw Me(r,n);a+=String.fromCharCode(Number.parseInt(c,16)),t+=4;continue}let l={"\\":"\\",'"':'"',"'":"'","/":"/",n:`
2
+ `,r:"\r",t:" ",b:"\b",f:"\f"};if(!B(l,i))throw Me(r,n);a+=l[i]}return a},ma=(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 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 Me(e,r);o+=1,n.push(p);return}if(s!=='"'&&s!=="'")throw Me(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 Me(e,r);o+=1,n.push(tf(p,e,r));return}o+=1}if(c||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},zs=(e,r)=>{let n=e;for(let o of r){if(n==null||!B(n,o))return;n=n[o]}return n},ya=(e,r={})=>{if(typeof e!="string"||e.trim()==="")throw new Error("Computed expression var requires a non-empty string path");let n=ma(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 zs(s,t)}return o==="runtime"?zs(r.runtime,n.slice(1)):zs(r,n)},ha=(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)`)},Ks=(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`)},nf=(e,r)=>{if(typeof r!="number"||!Number.isFinite(r))throw new Error(`Computed expression operator "${e}" requires finite numeric operands`)},Ye=(e,r,n,o)=>(ha(e,r,o),r.map(a=>ln(a,n))),Te=(e,r,n,o)=>{let a=Ye(e,r,n,o);return a.forEach(t=>nf(e,t)),a},sf=(e,r,n)=>{switch(e){case"var":return ya(r,n);case"add":{let[o,a]=Te(e,r,n,2);return o+a}case"sub":{let[o,a]=Te(e,r,n,2);return o-a}case"mul":{let[o,a]=Te(e,r,n,2);return o*a}case"div":{let[o,a]=Te(e,r,n,2);return o/a}case"mod":{let[o,a]=Te(e,r,n,2);return o%a}case"neg":{let[o]=Te(e,r,n,1);return-o}case"round":{let[o]=Te(e,r,n,1);return Math.round(o)}case"floor":{let[o]=Te(e,r,n,1);return Math.floor(o)}case"ceil":{let[o]=Te(e,r,n,1);return Math.ceil(o)}case"min":{let[o,a]=Te(e,r,n,2);return Math.min(o,a)}case"max":{let[o,a]=Te(e,r,n,2);return Math.max(o,a)}case"clamp":{let[o,a,t]=Te(e,r,n,3);return Math.min(t,Math.max(a,o))}case"eq":{let[o,a]=Ye(e,r,n,2);return hr.eq(o,a)}case"neq":{let[o,a]=Ye(e,r,n,2);return hr.neq(o,a)}case"gt":{let[o,a]=Ye(e,r,n,2);return hr.gt(o,a)}case"gte":{let[o,a]=Ye(e,r,n,2);return hr.gte(o,a)}case"lt":{let[o,a]=Ye(e,r,n,2);return hr.lt(o,a)}case"lte":{let[o,a]=Ye(e,r,n,2);return hr.lte(o,a)}case"in":{let[o,a]=Ye(e,r,n,2);return Array.isArray(a)?a.includes(o):!1}case"and":case"all":return Ks(e,r),r.every(o=>!!ln(o,n));case"or":case"any":return Ks(e,r),r.some(o=>!!ln(o,n));case"not":{let[o]=Ye(e,r,n,1);return!o}case"length":{let[o]=Ye(e,r,n,1);return typeof o=="string"||Array.isArray(o)?o.length:fe(o)?Object.keys(o).length:0}case"includes":{let[o,a]=Ye(e,r,n,2);return typeof o=="string"?typeof a=="string"&&o.includes(a):Array.isArray(o)?o.includes(a):!1}case"literal":return fa(r);default:throw new Error(`Unknown computed expression operator: ${e}`)}},ln=(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 sf(o,a,r)},Js=(e,r)=>{if(e===null||typeof e!="object"||B(e,"literal"))return e;if(B(e,"var"))return{literal:ya(e.var,r)};if(B(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=>Js(a,r)):Js(o,r)]))},of=(e,r={})=>{if(typeof e=="string")throw new Error("String condition expressions are not supported; use semantic JSON conditions");return Re(e),ht(Js(e,r))},ga=(e,r)=>{if(!fe(e))throw new Error(`${r} must be an object`);let n=B(e,"expr"),o=B(e,"value");if(n===o)throw new Error(`${r} must contain exactly one of expr or value`)},Gs=(e,r,n)=>(ga(e,r),B(e,"value")?fa(e.value):ln(e.expr,n)),af=(e,r={},n="unknown")=>{if(!fe(e))throw new Error(`Computed variable "${n}" computed must be an object`);let o=B(e,"expr"),a=B(e,"value");if(B(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(!fe(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(!fe(i))throw new Error(`Computed variable "${n}" branch ${s} must be an object`);if(!B(i,"when"))throw new Error(`Computed variable "${n}" branch ${s} requires when`);if(of(i.when,r))return Gs(i,`Computed variable "${n}" branch ${s}`,r)}return Gs(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 Gs(e,`Computed variable "${n}"`,r)},ba=(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}`)}},lf=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}),cf=new Set(["and","or","all","any"]),uf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp","length"]),pf=new Set(["add","sub","mul","div","mod","neg","round","floor","ceil","min","max","clamp"]),df=new Set(["eq","neq","gt","gte","lt","lte","in","and","or","all","any","not","includes"]),ff=new Set(["all","any","eq","neq","gt","gte","lt","lte","in","add","sub"]),Ia=new WeakMap,ia=e=>e===null?"null":Array.isArray(e)?"object":typeof e,on=(e,r,n)=>{for(let o of Object.keys(e))if(!r.has(o))throw new Error(`${n} contains unsupported property "${o}"`)},mf=(e,r,n,o)=>{if(n!==void 0&&n!==r)throw new Error(`Computed variable "${e}" ${o} expected type ${r}, got ${n}`)},wa=(e,{variableId:r,variableConfigs:n,dependencies:o,path:a})=>{let t=`Computed variable "${r}" ${a} var`,[s,i,...l]=ma(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(!B(n,i))throw new Error(`Computed variable "${r}" ${a} references unknown variable "${i}"`);let c=n[i];return $e(c)&&o.add(i),l.length===0?c?.type:void 0},va=(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 wa(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=lf[s];if(l===void 0&&!cf.has(s))throw new Error(`Unknown computed expression operator: ${s}`);l===void 0?Ks(s,i):ha(s,i,l);let c=i.map((u,p)=>va(u,{variableId:r,variableConfigs:n,dependencies:o,path:`${a}.${s}[${p}]`}));if(pf.has(s)&&c.forEach(u=>{if(u!==void 0&&u!=="number")throw new Error(`Computed expression operator "${s}" requires numeric operands`)}),uf.has(s))return"number";if(df.has(s))return"boolean"},yf=(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{Re(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"||B(s,"literal"))return;if(B(s,"var")){wa(s.var,{variableId:r,variableConfigs:n,dependencies:o,path:i});return}if(B(s,"call"))throw new Error(`Computed variable "${r}" ${i} function calls are not supported`);if(B(s,"not")){t(s.not,`${i}.not`);return}let l=Object.keys(s).find(c=>ff.has(c));s[l].forEach((c,u)=>{t(c,`${i}.${l}[${u}]`)})};t(e,a)},Hs=(e,{variableId:r,variableConfig:n,variableConfigs:o,dependencies:a,path:t,allowedKeys:s=new Set(["expr","value"])})=>{if(ga(e,`Computed variable "${r}" ${t}`),on(e,s,t),B(e,"value")){ba(r,n.type,e.value);return}let i=va(e.expr,{variableId:r,variableConfigs:o,dependencies:a,path:`${t}.expr`});mf(r,n.type,i,`${t}.expr`)},hf=(e,r,n)=>{let o=r.computed;if(!fe(o))throw new Error(`Computed variable "${e}" computed must be an object`);let a=new Set,t=B(o,"expr"),s=B(o,"value");if(B(o,"branches")){if(on(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(!fe(o.default))throw new Error(`Computed variable "${e}" requires default`);return o.branches.forEach((l,c)=>{if(!fe(l))throw new Error(`Computed variable "${e}" branch ${c} must be an object`);if(on(l,new Set(["when","expr","value"]),`Computed variable "${e}" branch ${c}`),!B(l,"when"))throw new Error(`Computed variable "${e}" branch ${c} requires when`);yf(l.when,{variableId:e,variableConfigs:n,dependencies:a,path:`computed.branches[${c}].when`}),Hs(l,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:`computed.branches[${c}]`,allowedKeys:new Set(["when","expr","value"])})}),Hs(o.default,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed.default"}),a}if(on(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 Hs(o,{variableId:e,variableConfig:r,variableConfigs:n,dependencies:a,path:"computed"}),a},_r=(e={})=>{if(!fe(e))throw new Error("Variable configs must be an object");if(B(e,"__proto__"))throw new Error('Variable id "__proto__" is reserved');if(B(e,""))throw new Error("Variable ids must not be empty");let r=new Map;Object.entries(e).forEach(([t,s])=>{if($e(s)){if(!fe(s))throw new Error(`Computed variable "${t}" must be an object`);if(!B(s,"type"))throw new Error(`Computed variable "${t}" requires type`);if(!B(s,"scope"))throw new Error(`Computed variable "${t}" requires scope`);if(B(s,"default"))throw new Error(`Computed variable "${t}" must not declare a top-level default`);if(At(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,hf(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 m=[...i.slice(p).map(({variableId:d})=>d),u].join(" -> ");throw new Error(`Computed variable cycle detected: ${m}`)}l.set(u,i.length),i.push({variableId:u,dependencies:[...r.get(u)??[]],nextDependencyIndex:0})}});let a=Object.freeze({evaluationOrder:Object.freeze(o)});return Ia.set(e,a),a},vt=({variables:e={},runtime:r={},variableConfigs:n={},eager:o=!0}={})=>{let{evaluationOrder:a}=Ia.get(n)??_r(n),t=wt(e,n,{preserveUnknown:!0}),s=Object.entries(n).filter(([,g])=>$e(g)).map(([g])=>g),i=Object.create(null),l=[],c=new Map(a.map((g,h)=>[g,h])),u=-1,p=!1,m=g=>{if(B(i,g))return i[g];let h=n[g];if(!$e(h))return B(t,g)?t[g]:void 0;let I=l.indexOf(g);if(I>=0){let b=[...l.slice(I),g].join(" -> ");throw new Error(`Computed variable cycle detected: ${b}`)}l.push(g);try{let b=af(h.computed,y,g);return ba(g,h.type,b),Ws(i,g,b),b}finally{l.pop()}},d=g=>{if(B(i,g))return i[g];let h=n[g];if(!$e(h))return B(t,g)?t[g]:void 0;let I=c.get(g);if(o&&!p&&I!==void 0&&I>u){p=!0;try{for(let b=u+1;b<=I;b+=1)m(a[b]),u=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"&&(B(t,h)||s.includes(h)),ownKeys:()=>[...new Set([...Object.keys(t),...s])],getOwnPropertyDescriptor:(g,h)=>{if(!(typeof h!="string"||!B(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},gf=({variables:e={},runtime:r={},variableConfigs:n,projectData:o}={})=>{let a=n??o?.resources?.variables??{};return _r(a),vt({variables:e,runtime:r,variableConfigs:a,eager:!0})},pn=e=>{let r={},n={};return e.resources?.variables?(Object.entries(e.resources.variables).forEach(([o,a])=>{if($e(a))return;let t=Gd(a,o);a.scope==="context"?Ws(r,o,t):Ws(n,o,t)}),{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}):{contextVariableDefaultValues:r,globalVariablesDefaultValues:n}},At=(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(", ")}`)},kt=(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(", ")}`)},bf=2,aa=12,Aa=(e=bf)=>{if(!Number.isInteger(e)||e<0||e>aa)throw new Error(`Operation "divide" requires roundTo to be an integer between 0 and ${aa}.`);return e},If=(e,r)=>{let n=10**r;return Math.round((e+Number.EPSILON)*n)/n},an=e=>typeof e=="number"&&Number.isFinite(e),dn=(e,r,n,o,a={})=>{if(e==="number"){if(r==="set"&&!an(n))throw new Error(`Operation "set" requires value to be a number for variable "${o}".`);if(r==="multiply"&&!an(n))throw new Error(`Operation "multiply" requires value to be a number for variable "${o}".`);if(r==="divide"&&!an(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}".`);Aa(a.roundTo)}}},fn=(e,r,n,o={})=>{let a=(s,i,l)=>{let c=s??i;if(!an(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 If(a(e,0,"current value")/t(n),Aa(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 ro=(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:zd[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])},wf=(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,vf=(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},la=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},ca=e=>{if(e?.colorId!==void 0)return{colorId:e.colorId}},ua=(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,Af=(e,r)=>{let n={},o=ua(la(e),la(r)),a=ua(ca(e),ca(r));return o&&(n.resource=o),a&&(n.color=a),Object.keys(n).length>0?n:null},to=(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=Af(e.background,r.background);t&&(n.background=t),a("screen"),a("bgm"),a("voice");let s=wf(e.dialogue,r.dialogue);s&&(n.dialogue=s);let i=vf(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},no=(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},kf=(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},Pf=(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=kf(r,n);if(o===void 0)throw new Error(`Action template binding "${e}" could not be resolved from "_event".`);return o},xf={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"])},Ef=(e,r)=>{let n=e[e.length-1];return n?xf[n]?.has(r)===!0:!1},Qs=(e,r,n=[])=>Array.isArray(e)?e.map(o=>Qs(o,r,n)):e&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([o,a])=>[o,Ef(n,o)?a:Qs(a,r,[...n,o])])):typeof e=="string"?e==="_event"||e.startsWith("_event.")?Pf(e,r._event):Cr(e,r):e,so=(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 Qs(e,r)};var te=e=>structuredClone(he(e)?dr(e):e),W=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),ka=e=>e?.animations?.playback?.continuity==="persistent",X=(e,r)=>W(e??{},r)&&e[r]!==void 0,Pt=(e,r)=>e?!r(e)&&e.animations?{animationsOnly:!0,state:{animations:te(e.animations)}}:{animationsOnly:!1,state:null}:{animationsOnly:!1,state:null},Sf=e=>X(e,"opacity")||X(e,"blur"),Oa=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Ca=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],oo=["animationName","animationSpeed","loop"],Rf=e=>Oa.some(r=>X(e,r)),$a=e=>e?.text&&X(e.text,"content")&&X(e.text,"textStyleId"),_a=e=>X(e,"text"),Of=(e,r)=>e.resourceId?!0:$a(e)?!r?.text:!1,Cf=(e,r)=>{let n={...te(e),...r};return r.text&&e.text&&(n.text={...te(e.text),...te(r.text)}),n},$f=(e,r)=>{if(_a(e)){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!$a(e)&&!r?.text)throw new Error(`Visual item "${e.id}" text requires content and textStyleId`)}},Pa=e=>Ca.some(r=>X(e,r)),xa=e=>oo.some(r=>X(e,r)),_f=(e,r,{hasAuthoredTransformId:n=!1}={})=>{if(!r)return e;for(let o of Ca)!n&&!X(e,o)&&X(r,o)&&(e[o]=r[o]),W(e,o)&&e[o]===void 0&&delete e[o];return e},ja=(e,r,n)=>{let o=e[n];return o?.id===r?.id?o:e.find(a=>a.id===r?.id)},jf=(e,r)=>{if(!r)return e;for(let n of Oa)!X(e,n)&&X(r,n)&&(e[n]=r[n]),W(e,n)&&e[n]===void 0&&delete e[n];return e},Nf=(e,r)=>(r&&(!X(e,"opacity")&&X(r,"opacity")&&(e.opacity=r.opacity),!X(e,"blur")&&X(r,"blur")&&(e.blur=te(r.blur)),W(e,"opacity")&&e.opacity===void 0&&delete e.opacity,W(e,"blur")&&e.blur===void 0&&delete e.blur),e),Na=(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=ja(n,s,i),c=r(s,l),u=Sf(s),p=Rf(s),m=o(s),d=W(s,"animations"),f=te(s);return!c&&(u||p||m)&&l&&(f=a?a(l,f):{...te(l),...f},d||delete f.animations),Nf(jf(f,l),l)}).filter(s=>r(s)||s.animations);return{hasValidItems:t.length>0,processedItems:t}},Df=e=>{if(e){if(e.character&&W(e.character,"name"))return e.character.name;if(W(e,"characterName"))return e.characterName}},Da=e=>!!e?.character&&W(e.character,"sprite"),Lf=e=>{let r={},n=!1,o=Df(e);return o!==void 0&&(r.name=o,n=!0),Da(e)&&(r.sprite=te(e.character.sprite),n=!0),n?r:void 0},Ea=e=>{e?.character?.sprite?.animations&&(e.character.sprite.animations={})},Sa=({dialogueState:e,dialogueAction:r,persistCharacter:n})=>W(r,"persistSprite")?r.persistSprite===!0:W(e,"persistSprite")?e.persistSprite===!0:n&&!W(r,"characterId"),Ra=({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 W(c,"name")?i.name=c.name:(o&&!n||u)&&W(l,"name")&&(i.name=te(l.name)),W(c,"sprite")?i.sprite=te(c.sprite):(a||p)&&W(l,"sprite")&&(i.sprite=te(l.sprite)),Object.keys(i).length>0?i:void 0},Tf=({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=>te(a)):delete e.initialRevealedContent,e.content=[...o,...r]},Mf=()=>({}),qf=(e,r)=>{if(!r.screen)return;let n=X(r.screen,"opacity"),o=X(r.screen,"blur"),a=W(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=te(r.screen.blur):X(t,"blur")&&(s.blur=te(t.blur)),W(s,"opacity")&&s.opacity===void 0&&delete s.opacity,W(s,"blur")&&s.blur===void 0&&delete s.blur,Object.keys(s).length===0){delete e.screen;return}e.screen=s},Vf=(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=Pa(r.background),l=xa(r.background),{animationsOnly:c,state:u}=Pt(r.background,d=>X(d,"resourceId")||X(d,"colorId")||X(d,"opacity")||X(d,"blur")||X(d,"transformId")||Pa(d)||xa(d));if(c){e.background=e.background?{...te(e.background),...u}:u;return}if(!n&&!o&&!a&&!t&&!s&&!i&&!l){delete e.background;return}let p=e.background,m=te(r.background);if(!n&&p?.resourceId){m.resourceId=p.resourceId,!W(m,"transformId")&&p.transformId&&(m.transformId=p.transformId);for(let d of oo)!X(m,d)&&X(p,d)&&(m[d]=p[d])}_f(m,p,{hasAuthoredTransformId:s}),!o&&p?.colorId&&(m.colorId=p.colorId),!a&&X(p,"opacity")&&(m.opacity=p.opacity),!t&&X(p,"blur")&&(m.blur=te(p.blur)),W(m,"resourceId")&&m.resourceId===void 0&&delete m.resourceId,W(m,"colorId")&&m.colorId===void 0&&delete m.colorId,W(m,"animations")&&m.animations===void 0&&delete m.animations,W(m,"transformId")&&m.transformId===void 0&&delete m.transformId,W(m,"opacity")&&m.opacity===void 0&&delete m.opacity,W(m,"blur")&&m.blur===void 0&&delete m.blur;for(let d of oo)W(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&&!W(m,"animations")&&ka(p)&&(m.animations=te(p.animations)),e.background=m}else e.background?.animations&&!ka(e.background)&&(e.background.animations={})},Ff=(e,r)=>{if(!r.dialogue){if(e.dialogue&&(Ea(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=Sa({dialogueState:e.dialogue,dialogueAction:{},persistCharacter:u});u||delete e.dialogue.characterId,e.dialogue.character=Ra({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}=Pt(r.dialogue.ui,m=>!!m.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&&Tf({dialogueState:e.dialogue,content:r.dialogue.content,append:o}),W(r.dialogue,"textSpeed")?e.dialogue.textSpeed=r.dialogue.textSpeed:delete e.dialogue.textSpeed;let a=W(r.dialogue,"persistCharacter")?r.dialogue.persistCharacter===!0:e.dialogue.persistCharacter===!0;a?e.dialogue.persistCharacter=!0:delete e.dialogue.persistCharacter;let t=Sa({dialogueState:e.dialogue,dialogueAction:r.dialogue,persistCharacter:a});W(r.dialogue,"persistSprite")&&(e.dialogue.persistSprite=t);let s=W(r.dialogue,"characterId"),i=Lf(r.dialogue),l=Da(r.dialogue);s?r.dialogue.characterId?e.dialogue.characterId=r.dialogue.characterId:delete e.dialogue.characterId:!a&&!o&&delete e.dialogue.characterId;let c=Ra({previousCharacter:e.dialogue.character,characterFields:i,hasCharacterId:s,persistCharacter:a,persistSprite:t,hasExplicitPersistSprite:W(r.dialogue,"persistSprite"),isAppendingAdvDialogueContent:o});if(c?e.dialogue.character=c:delete e.dialogue.character,l||Ea(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=te(e.dialogue.character)),e.dialogue.lines.push(u)}},Uf=(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=te(r.sfx)}else e.sfx&&delete e.sfx},Bf=(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=te(r.bgm),r.bgm.resourceId&&(e.bgm.loop=r.bgm.loop??!0)}},Yf=(e,r)=>{if(r.visual){let n=e.visual?.items||[];r.visual.items?.forEach((t,s)=>{$f(t,ja(n,t,s))});let{hasValidItems:o,processedItems:a}=Na(r.visual.items,Of,n,{hasPatchFn:_a,mergeItemFn:Cf});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))},zf=(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}=Na(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},Gf=(e,r)=>{r.animation?e.animation=r.animation:e.animation&&delete e.animation},Hf=(e,r)=>{if(r.layout){let{animationsOnly:n,state:o}=Pt(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},Xf=(e,r)=>{if(r.choice){let{animationsOnly:n,state:o}=Pt(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},Wf=(e,r)=>{if(r.form){let{animationsOnly:n,state:o}=Pt(r.form,a=>!!a.resourceId);if(n){e.form={...e.form,...o};return}if(!r.form.resourceId){delete e.form;return}e.form=te(r.form)}else e.form&&delete e.form},Kf=(e,r)=>{if(r.control){if(!r.control.resourceId){delete e.control;return}e.control=r.control}},Jf=(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=te(r.voice)}else e.voice&&delete e.voice},Qf=(e,r)=>{r.cleanAll&&Object.keys(e).forEach(n=>{delete e[n]})},jr=e=>cn(Mf,[Qf,qf,Vf,Uf,Bf,Yf,Ff,zf,Gf,Hf,Xf,Wf,Kf,Jf])(e);var Wr=(e,r)=>{if(!e||typeof e!="string"||!e.includes("${"))return e;let n=Cr(e,r);return n&&typeof n=="object"?e:n};var Zf=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"}}),gr=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}),xt=Object.freeze({saveLoadPagination:1,menuPage:"",menuEntryPoint:""}),em=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"}),io=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll","localizationPackageId"]),La=Object.freeze(["dialogueTextSpeed","autoForwardDelay","autoForwardSpeed","skipUnseenText","skipTransitionsAndAnimations","soundVolume","musicVolume","muteAll"]),ao=Object.freeze(["saveLoadPagination","menuPage","menuEntryPoint"]),Ta=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),rm=(e,r)=>{let n=em[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}"`)},mn=(e,r)=>{if(rm(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},lo=(e={})=>{let r=e?.config;if(r===void 0)return{...gr};if(!Ta(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{...gr};if(!Ta(o))throw new Error("projectData.config.runtimeDefaults must be an object");let a=new Set(La),t=Object.keys(o).find(i=>!a.has(i));if(t)throw new Error(`projectData.config.runtimeDefaults contains unsupported field "${t}"`);let s={...gr};return La.forEach(i=>{o[i]!==void 0&&(s[i]=mn(i,o[i]))}),s},tm=(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]}},Nr=e=>Object.fromEntries(Object.entries(Zf).map(([r,n])=>{let o=tm(e,n.source),a=o!==void 0?o:gr[r]??xt[r];return[r,a]})),br=(e,r)=>Nr(e)[r],Ma=(e={})=>Object.fromEntries(io.map(r=>[r,e[r]??gr[r]]));var Kr=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:Kr.VISUAL_BEHIND_BACKGROUND,BEHIND_CHARACTER:Kr.VISUAL_BEHIND_CHARACTER,BEHIND_DIALOGUE:Kr.VISUAL_BEHIND_DIALOGUE,BEHIND_CHOICE:Kr.VISUAL_BEHIND_CHOICE,FOREGROUND:Kr.VISUAL_FOREGROUND}),co=er.BEHIND_DIALOGUE,uo=Object.freeze(Object.values(er).sort((e,r)=>e-r));var nm={__arrayOrEmpty:e=>Array.isArray(e)?e:[],objectValues:e=>Object.entries(e).map(([r,n])=>({id:r,...n})),formatDate:ro},sm=/^\$for\s+([A-Za-z_][A-Za-z0-9_]*)(?:\s*,\s*([A-Za-z_][A-Za-z0-9_]*))?\s+in\s+(.+?)(?::)?$/,Et=e=>Array.isArray(e)?e.map(r=>{if(!r||typeof r!="object"||Array.isArray(r)||Object.keys(r).length!==1)return Et(r);let[n]=Object.keys(r),o=sm.exec(n);if(!o)return Et(r);let[,a,t,s]=o,i=`$for ${a}${t?`, ${t}`:""} in __arrayOrEmpty(${s.trim()})`,l=Array.isArray(r[n])?r[n]:[];return{[i]:Et(l)}}):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Et(n)])),tr=(e,r)=>{let n={functions:nm};return Cr(Et(e),r,n)},Ro=({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".`)},om=({id:e,targetId:r,animation:n,playback:o,animationPath:a="animation"})=>{let t=structuredClone(n);if(Ro({animationType:t.type,animationId:e,animationPath:a}),delete t.name,delete t.playback,t.id=e,t.targetId=r,o!==void 0){let s=cm(o,`${a}.playback`);if(s!==void 0){let i=s.loop===!0?el(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},im=(e,{animationId:r="animation",animationPath:n="animation"}={})=>{if(!(!e||typeof e!="object"||Array.isArray(e))&&typeof e.type=="string")return Ro({animationType:e.type,animationId:r,animationPath:n}),e.type},am=e=>{if(typeof e=="string")return e;if(!(!e||typeof e!="object"||Array.isArray(e)))return e.resourceId},lm=e=>{if(!(!e||typeof e!="object"||Array.isArray(e)))return e.playback},cm=(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},um=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),Ja=e=>e?.playback?.continuity==="persistent",Io=e=>Array.isArray(e)?e.map(Io):!e||typeof e!="object"?e:Object.keys(e).sort().reduce((r,n)=>(r[n]=Io(e[n]),r),{}),bn=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(Io(r))},Qa=(e=[])=>e.filter(r=>Ja(r)).map(r=>structuredClone(r)),Za=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,po=e=>!e||typeof e!="object"||Array.isArray(e)?0:Object.values(e).reduce((r,n)=>Math.max(r,Za(n)),0),el=e=>Math.max(po(e?.tween),po(e?.prev?.tween),po(e?.next?.tween),Za(e?.mask?.progress)),rl=e=>!e||typeof e!="object"||Array.isArray(e)?0:e.playback?.loop===!0?Number.POSITIVE_INFINITY:el(e)/um(e),pm=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(bn).filter(Boolean));return e.some(o=>{if(!Ja(o))return!1;let a=bn(o);return a?n.has(a):!1})},ze=({animationInstances:e,isLineCompleted:r,skipTransitionsAndAnimations:n,activePersistentAnimations:o,restoredPersistentAnimations:a,isAuthoredOnCurrentLine:t=!0})=>!Array.isArray(e)||e.length===0||n?!1:pm(e)||t&&!r||qa({animationInstances:e,activePersistentAnimations:o})?!0:t?!1:qa({animationInstances:e,activePersistentAnimations:a}),dm=e=>!e||typeof e!="object"||Array.isArray(e)?!1:["in","out","update"].some(r=>e[r]!==void 0),fm=(e,r)=>{if(dm(e))throw new Error(`[${r}] Legacy animations.in/out/update is no longer supported. Use a single animations.resourceId reference.`)},mm=({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?om({id:o,targetId:a,animation:s,playback:n,animationPath:t}):null},ym=(e,{defaultTargetId:r,defaultId:n,animationPath:o="animation"}={})=>{if(!e||typeof e!="object"||Array.isArray(e))return e;let a=structuredClone(e);return Ro({animationType:a.type,animationId:a.id??n,animationPath:o}),a.id??=n,a.targetId??=r,a},Oo=({animations:e,transitions:r,defaultTargetId:n,idPrefix:o,animationPathPrefix:a=o})=>{r.forEach((t,s)=>{e.push(ym(t,{defaultTargetId:n,defaultId:`${o}-transition-${s}`,animationPath:`${a}.transitions[${s}]`}))})},wo=(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},hm=({content:e,path:r,variables:n})=>wo(e,r).reduce((o,a)=>{let t=Wr(a.text,{variables:n});return o+`${t??""}`.length},0),Va=(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))},yn=(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("-")}`},St=(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},gm=(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},bm=["x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY"],Im=(e={})=>bm.some(r=>Dr(e,r)),tl=(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"}},gn=({resourceId:e,kind:r})=>{if(e)return r?`bg-cg-background-${r}`:`bg-cg-${e}`},wm=(e={})=>e.textStyles||{},vm=(e={})=>e.images||{},Am=.5,km=(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]},Co=({id:e,resourceId:r,spritesheet:n,animationName:o,animationSpeed:a,loop:t,width:s,height:i,transform:l={}}={})=>{let c=km(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??Am,loop:t??u.loop??!0}}},nl=({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 Co({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}`)},Pm=(e={})=>e.colors||{},xm=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/,Ot=(e,r)=>e==="root"?`${r}`:`${e}.${r}`,Zr=(e,r,n)=>{if(typeof e!="string"||e.length===0)throw new Error(`${n} at "${r}" must resolve to a non-empty string`)},fo=(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},mo=(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},vn=(e,r)=>{if(typeof e!="string"||!xm.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},Fa=(e,r,n)=>{let o=vn(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})`},Em=(e={},r)=>{let n=wm(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=fo(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:Fa(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=fo(n.strokeAlpha,"strokeAlpha",r);i.strokeColor=Fa(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:vn(l.hex,`Shadow color "${n.shadow.colorId}" for text style "${r}"`),alpha:fo(n.shadow.alpha,"shadow.alpha",r),blur:mo(n.shadow.blur,"blur",r,0,{minimum:0}),offsetX:mo(n.shadow.offsetX,"offsetX",r,2),offsetY:mo(n.shadow.offsetY,"offsetY",r,2)}}return i},vo=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>vo(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]=vo(t,r,Ot(n,a)));return e.textStyleId!==void 0&&(Zr(e.textStyleId,n,"textStyleId"),o.textStyle=Em(r,e.textStyleId)),o},$o=(e={},r)=>{let n=Pm(e)?.[r];if(!n)throw new Error(`Color "${r}" not found`);return vn(n.hex,`Color "${r}"`)},sl=e=>e==="hover.fill"?"hover.colorId":e==="click.fill"?"click.colorId":e==="rightClick.fill"?"rightClick.colorId":"colorId",yo=(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 ${sl(`${r}.fill`)} instead`)},Sm=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ct(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]=Ct(t,r,Ot(n,a)));return e.colorId!==void 0&&(Zr(e.colorId,n,"colorId"),o.fill=$o(r,e.colorId)),o},Ct=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ct(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 ${sl("fill")} instead`);yo(e,"hover",n),yo(e,"click",n),yo(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]=Sm(t,r,Ot(n,a));continue}o[a]=Ct(t,r,Ot(n,a))}return e.type==="rect"&&e.colorId!==void 0&&(Zr(e.colorId,n,"colorId"),o.fill=$o(r,e.colorId)),o},ho=(e={},r)=>{let n=vm(e)?.[r];return n||null},ol=e=>e==="hoverUrl"||e==="hoverSrc"||e==="hover.src"?"hoverImageId":e==="clickUrl"||e==="clickSrc"||e==="click.src"?"clickImageId":"imageId",Ua=(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 ${ol(`${r}.${o}`)} instead`)},Ba=(e,r,n)=>{let o=e[r];e[r]={...o&&typeof o=="object"&&!Array.isArray(o)?o:{},src:n}},Ao=(e,r={},n="root")=>{if(Array.isArray(e))return e.map((a,t)=>Ao(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 ${ol(a)} instead`);Ua(e,"hover",n,"src"),Ua(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]=Ao(t,r,Ot(n,a)));if(e.type==="sprite"&&e.imageId!==void 0){Zr(e.imageId,n,"imageId");let a=ho(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&&(Zr(e.hoverImageId,n,"hoverImageId"),Ba(o,"hover",ho(r,e.hoverImageId)?.fileId??e.hoverImageId)),e.type==="sprite"&&e.clickImageId!==void 0&&(Zr(e.clickImageId,n,"clickImageId"),Ba(o,"click",ho(r,e.clickImageId)?.fileId??e.clickImageId)),o},_o=(e,r={},n="root")=>Ao(Ct(vo(e,r,n),r,n),r,n),nr=_o,Lr=(e=[])=>e.find(r=>r.id==="story"),Rm="#000000",ko="bg-cg-background-color",Om=({resources:e={},background:r={},screen:n})=>r?.colorId===void 0?vn(n?.backgroundColor??Rm,"screen.backgroundColor"):$o(e,r.colorId),il=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},Cm=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},Ya=(e={},{includeDefaultAlpha:r=!1}={})=>{let n=il(e),o=Cm(e),a={};return(r||n!==void 0)&&(a.alpha=n??1),o&&(a.blur=o),a},$m=(e={})=>{if(Dr(e,"opacity"))return typeof e.opacity=="number"?e.opacity:void 0},_m=(e={})=>{if(!(!e.blur||typeof e.blur!="object"||Array.isArray(e.blur)))return e.blur},al=(e={})=>{let r=$m(e),n=_m(e),o={};return r!==void 0&&(o.alpha=r),n&&(o.blur=n),o},Qr=(e={})=>al(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},jm=["id","type","resourceId","transformId","x","y","anchorX","anchorY","scaleX","scaleY","rotation","originX","originY","layer","opacity","blur","animations"],jo=(e={})=>e.text&&Dr(e.text,"content")&&Dr(e.text,"textStyleId"),za=(e={})=>{if(e.resourceId)return e.resourceId;if(jo(e))return"text"},Ga=(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,Nm=({item:e,particle:r,resources:n})=>{let o=St(n,e),a=structuredClone(r),t=a.modules?.appearance?.texture;t!==void 0&&(a.modules.appearance.texture=Ga(t,n)),a.texture!==void 0&&(a.texture=Ga(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,Qr(e)),s},Dm=e=>{if(e.text){if(e.resourceId)throw new Error(`Visual item "${e.id}" cannot define both resourceId and text`);if(!jo(e))throw new Error(`Visual item "${e.id}" text requires content and textStyleId`);for(let r of jm)if(Dr(e.text,r))throw new Error(`Visual item "${e.id}" text.${r} is reserved for the visual item`)}},Lm=({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:Om({resources:e,background:r,screen:n})};if(o){let t=il(r);t!==void 0&&(a.alpha=t)}return a},Tm=(e={},r)=>r?!!(e.images?.[r]||e.videos?.[r]||e.spritesheets?.[r]||e.layouts?.[r]):!1,Ha=({resources:e={},resourceId:r,colorId:n})=>{let o=tl(e,r);return r&&(o||n===void 0)?{resourceId:r,targetId:gn({resourceId:r,kind:o})}:n!==void 0?{resourceId:ko,targetId:ko}:{resourceId:void 0,targetId:void 0}},ll=100,Ir=ll,Mm="channel:bgm",qm="channel:music-room",Vm="music-room:player",Fm="channel:voice",Um="default",Bm=e=>String(e).replaceAll("%","%25").replaceAll(":","%3A"),Rt=(...e)=>e.map(Bm).join(":"),In=(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)})},Ym=(e,r)=>e*r/ll,cl=(e={},r)=>e?.[r]??gr[r],An=(e={},r,n=Ir)=>Ym(n,cl(e,r)),kn=({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},hn=(e,r,n,o)=>e[n]!==void 0?e[n]:r[n]!==void 0?r[n]:o,zm=["muted","pan","playbackRate","startAt","endAt"],Pn=({id:e,sound:r,resource:n,defaultLoop:o=!1})=>{let a={id:e,type:"sound",src:n.fileId,loop:hn(r,n,"loop",o),volume:hn(r,n,"volume",Ir),startDelayMs:hn(r,n,"startDelayMs",0)};zm.forEach(s=>{let i=hn(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:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g=[],characters:h={},dialogueUIHidden:I,skipOnlyViewedLines:b,skipTransitionsAndAnimations:x}={})=>{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??I??!1,isLineCompleted:a?.isLineCompleted??l??!1},k=Km({dialogueState:s,includeInactiveAdvDialogue:i,characters:h,variables:e,runtime:v}),S={variables:e,imageGallery:r,musicRoom:n,sceneReplay:o,localizationPackages:a?.localizationPackages??[],localizationPackageId:v.localizationPackageId,runtime:v,saveSlots:t,isChoiceVisible:p,isFormVisible:m,canRollback:d,confirmDialog:f,form:y,historyDialogue:g,characters:h};return k&&(S.dialogue=k,S.dialogueLines=k.lines),S},Xa=100,wn=(e,r)=>{if(Array.isArray(e))return e.map(o=>wn(o,r));if(!e||typeof e!="object")return e;let n={...e};return Object.keys(n).forEach(o=>{n[o]=wn(n[o],r)}),n.type==="text-revealing"?r(n):n},Gm=e=>wn(e,r=>({...r,revealEffect:"none"})),Hm=e=>wn(e,r=>{let n=Number(r.speed??r.displaySpeed),o=Number.isFinite(n)?Math.max(n,Xa):Xa;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?Gm(e):n?Hm(e):e,ul=({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:{}}}}),Po=e=>{if(Array.isArray(e))return e.map(Po);if(!e||typeof e!="object")return e;let r={};for(let[t,s]of Object.entries(e))r[t]=Po(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}}:{}}}}},Xm=new Set(["click","change","submit","focusEvent","blurEvent","selectionChange","compositionStart","compositionUpdate","compositionEnd"]),Wa="submit",go=(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}}},xo=(e,r,n={})=>{if(Array.isArray(e))return e.map(c=>xo(c,r,n));if(!e||typeof e!="object")return e;let o=typeof e.type=="string",a=o&&e.formRole===Wa,t=o&&n.submitRoleAncestor,s=a||t?{submitRoleAncestor:!0}:{},i={};for(let[c,u]of Object.entries(e))i[c]=xo(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:go(l.change,u),submit:go(l.submit,r.submitActions)}}}return l.formRole===Wa||t?{...l,click:go(l.click,r.submitActions,{replaceActions:!0})}:l},Eo=(e,r)=>{if(Array.isArray(e))return e.map(o=>Eo(o,r));if(!e||typeof e!="object")return e;let n={};for(let[o,a]of Object.entries(e))n[o]=Eo(a,r);for(let o of Xm){let a=n[o]?.payload;!a||typeof a!="object"||Array.isArray(a)||(n[o]={...n[o],payload:{...a,_interactionSource:"form"}})}return n},So=({characterId:e,character:r,characterName:n,characters:o={},variables:a={}}={})=>{let t=e?o?.[e]:void 0,s=un({characterId:e,character:r,characterName:n,characters:o,variables:a});return{...t||{},...r||{},name:s}},pl=(e=[],r={},n={})=>e.map(o=>{let a=So({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}}),Wm=e=>!(!e||e.mode==="adv"&&e.content===void 0),Km=({dialogueState:e,includeInactiveAdvDialogue:r=!1,characters:n={},variables:o,runtime:a}={})=>{if(!r&&!Wm(e))return;let t=e.content===void 0?[{text:""}]:wo(e.content,"dialogue.content"),s=e.content===void 0?0:hm({content:e.initialRevealedContent,path:"dialogue.initialRevealedContent",variables:o}),i=a?.dialogueTextSpeed??gr.dialogueTextSpeed,l=e.textSpeed??i,c=(e.lines||[]).map((p,m)=>{let d=wo(p.content,`dialogue.lines[${m}].content`),f=So({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:Wr(y.text,{variables:o})})),character:f,characterName:f.name}}),u=So({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:Wr(p.text,{variables:o})})),initialRevealedCharacters:s,lines:c}},dl=({container:e,resources:r,templateData:n,isLineCompleted:o=!1,skipMode:a=!1,skipTransitionsAndAnimations:t=!1})=>{let s=tr(e,n);return nr(wr(s,{isLineCompleted:o,skipMode:a,skipTransitionsAndAnimations:t}),r)},bo=(e,r={})=>e?.payload&&typeof e.payload=="object"?structuredClone(e.payload):e?.actions&&typeof e.actions=="object"?{actions:structuredClone(e.actions)}:structuredClone(r),Ka=({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:bo(s)}},a?.keyup&&typeof a.keyup=="object"&&(e[o].keyup={payload:bo(a.keyup)});return}e[o]={...t,[n]:{payload:bo(a)}}})},Jm=(e={},r={})=>{let n={};return Ka({renderStateKeyboard:n,keyboard:e,phase:"keydown"}),Ka({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=[],c=({instanceId:h,targetId:I})=>{let b=mm({resources:r,animationId:d,playback:f,instanceId:h,targetId:I,animationPath:s});b&&l.push(b)},u=n!=null&&n!==!1,p=o!=null&&o!==!1,m=a&&t&&a===t;fm(e,s);let d=am(e),f=lm(e),y=r?.animations?.[d],g=im(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`,I=f?.continuity==="persistent"?h:`${i}-animation-in`;if(u&&p&&m)return c({instanceId:h,targetId:t}),l;u&&c({instanceId:`${i}-animation-out`,targetId:a}),p&&c({instanceId:I,targetId:t})}return l},Qm=()=>({elements:[{id:"story",type:"container",x:0,y:0,children:[]}],animations:[],audio:[],global:{}}),Zm=(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:m,activePersistentAnimations:d,restoredPersistentAnimations:f,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:I,canRollback:b,form:x,saveSlots:v=[]})=>{let{elements:k,animations:S}=e;if(r.background){let C=o===void 0?!0:Dr(o?.background??{},"animations"),N=k.find(ye=>ye.id==="story");if(!N)return e;let P=gm(a,r.background),T=P||Im(r.background),V=n?.background?.resourceId,le=n?.background?.colorId,G=r.background.resourceId??(r.background.animations?V:void 0),ee=r.background.colorId??(r.background.animations?le:void 0),Pe=Tm(a,G),Fe={...r.background,colorId:ee};if((ee!==void 0||Pe)&&N.children.push(Lm({resources:a,background:Fe,screen:t,includeOpacity:!Pe})),G){let{images:ye={},videos:re={},spritesheets:ce={}}=a,se=tl(a,G),ie;if(se==="sprite"?ie=ye[G]:se==="video"?ie=re[G]:se==="spritesheet-animation"&&(ie=ce[G]),ie){let Ue=se==="video",ur=se==="spritesheet-animation",Oe={x:(t?.width??1920)/2,y:(t?.height??1080)/2,anchorX:.5,anchorY:.5,rotation:0,scaleX:1,scaleY:1,...P},$={...Ya(r.background,{includeDefaultAlpha:!0}),...rr(Oe,r.background)},j;ur?j=Co({id:gn({resourceId:G,kind:se}),resourceId:G,spritesheet:ie,animationName:r.background.animationName,animationSpeed:r.background.animationSpeed,loop:r.background.loop,transform:$}):j={id:gn({resourceId:G,kind:se}),type:Ue?"video":"sprite",src:ie.fileId,width:ie.width,height:ie.height,...$},Ue&&(j.loop=r.background.loop??!1,j.volume=ie.volume??50),j&&N.children.push(j)}}if(G){let{layouts:ye={}}=a,re=ye[G];if(re){let ce={id:gn({resourceId:G,kind:"container"}),type:"container",children:re.elements,...Ya(r.background)};T&&Object.assign(ce,rr({x:0,y:0,anchorX:0,anchorY:0,rotation:0,scaleX:1,scaleY:1,...P},r.background));let se=tr(ce,qe({variables:l,imageGallery:c,musicRoom:u,sceneReplay:p,runtime:m,saveSlots:v,dialogueState:r.dialogue,isLineCompleted:s,autoMode:y,skipMode:g,isChoiceVisible:h,isFormVisible:I,canRollback:b,form:x,characters:a.characters||{},skipTransitionsAndAnimations:i}));N.children.push(nr(wr(se,{isLineCompleted:s,skipMode:g,skipTransitionsAndAnimations:i}),a))}}let oe=Ha({resources:a,resourceId:V,colorId:le}),me=Ha({resources:a,resourceId:G,colorId:ee}),Ae=sr({animationsDef:r.background.animations,resources:a,previousResourceId:oe.resourceId,currentResourceId:me.resourceId,previousTargetId:oe.targetId,currentTargetId:me.targetId,animationPath:"background.animations",idPrefix:"bg-cg"});ze({animationInstances:Ae,isLineCompleted:s,skipTransitionsAndAnimations:i,activePersistentAnimations:d,restoredPersistentAnimations:f,isAuthoredOnCurrentLine:C})&&S.push(...Ae)}return e},ey=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})=>{let{elements:i,animations:l}=e;if(r.character&&o){let c=i.find(f=>f.id==="story");if(!c)return e;let u=r.character.items||[],p=n?.character?.items||[],m=Va(u),d=Va(p);for(let f=0;f<u.length;f++){let y=u[f],{transformId:g,sprites:h}=y,I=p.find(T=>T.id===y.id),b=p.findIndex(T=>T.id===y.id),x=I?.sprites&&I.sprites.length>0,v=h&&h.length>0,k=b>=0?yn(I,b,d):void 0,S=sr({animationsDef:y.animations,resources:o,previousResourceId:k,currentResourceId:v?yn(y,f,m):void 0,previousTargetId:k,currentTargetId:v?yn(y,f,m):void 0,animationPath:`character.items[${f}].animations`,idPrefix:"character"});if(y.animations&&!h&&!g&&x&&ze({animationInstances:S,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})){l.push(...S);continue}if(y.animations&&!h&&!g)continue;if(!h||h.length===0||!g){console.warn("Character item missing sprites or transformId:",y);continue}let C=yn(y,f,m),N=o.transforms[g];if(!N){console.warn("Transform not found:",g);continue}let P={type:"container",id:C,...rr(N,y),...Qr(y),children:[]};for(let T of h){let V=nl({id:`${C}-${T.id}`,item:T,resources:o});V&&P.children.push(V)}c.children.push(P),ze({animationInstances:S,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&l.push(...S)}}return e},fl=(e,r)=>{if(!uo.includes(e))throw new Error(`${r} must be one of: ${uo.join(", ")}.`)},ry=(e,r)=>{let n=!!e.resourceId||jo(e),o=e.layer??(n?void 0:r?.layer)??co;return fl(o,`Visual item "${e.id}" layer`),o},ty=(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:a,skipTransitionsAndAnimations:t,variables:s,imageGallery:i,musicRoom:l,sceneReplay:c,runtime:u,activePersistentAnimations:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,saveSlots:I=[],visualLayer:b})=>{let{elements:x,animations:v}=e;if(r.visual&&o){let k=x.find(P=>P.id==="story");if(!k)return e;let S=r.visual.items,C=n?.visual?.items||[],N=qe({variables:s,imageGallery:i,musicRoom:l,sceneReplay:c,runtime:u,saveSlots:I,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&&fl(b,"visualLayer");for(let P of S){let T=C.find(oe=>oe.id===P.id),V=ry(P,T);if(b!==void 0&&V!==b)continue;if(Dm(P),P.text){let oe=St(o,P),me={...structuredClone(P.text),id:`visual-${P.id}`,type:"text",...rr(oe,P)};Object.assign(me,Qr(P)),k.children.push(nr(tr(me,N),o))}if(P.resourceId){let{images:oe={},videos:me={},spritesheets:Ae={}}=o,ye=Ae[P.resourceId];if(ye){let re=St(o,P),ce=Qr(P),se=Co({id:`visual-${P.id}`,resourceId:P.resourceId,spritesheet:ye,animationName:P.animationName,animationSpeed:P.animationSpeed,loop:P.loop,width:P.width,height:P.height,transform:{...rr(re,P),alpha:ce.alpha??P.alpha??1,...ce.blur?{blur:ce.blur}:{}}});se&&k.children.push(structuredClone(se))}else{let re=oe[P.resourceId]||me[P.resourceId];if(re){let ce=me[P.resourceId]!==void 0,se=St(o,P),ie={id:`visual-${P.id}`,type:ce?"video":"sprite",src:re.fileId,width:re.width,height:re.height,...rr(se,P)};Object.assign(ie,Qr(P)),ce&&(ie.loop=re.loop??!1,ie.volume=re.volume??50),k.children.push(ie)}}}let le=!!(o.spritesheets?.[P.resourceId]||o.images?.[P.resourceId]||o.videos?.[P.resourceId]);if(P.resourceId&&!le){let oe=o.particles?.[P.resourceId];oe&&k.children.push(Nm({item:P,particle:oe,resources:o}))}let G=!!o.particles?.[P.resourceId];if(P.resourceId&&!le&&!G){let{layouts:oe={}}=o,me=oe[P.resourceId];if(me){let Ae=St(o,P),ye={id:`visual-${P.id}`,type:"container",children:structuredClone(me.elements),...rr(Ae,P)};Object.assign(ye,Qr(P));let re=tr(ye,N);k.children.push(nr(wr(re,{isLineCompleted:a,skipMode:d,skipTransitionsAndAnimations:t}),o))}}let ee=za(T),Pe=za(P),Fe=sr({animationsDef:P.animations,resources:o,previousResourceId:ee,currentResourceId:Pe,previousTargetId:ee?`visual-${P.id}`:void 0,currentTargetId:Pe?`visual-${P.id}`:void 0,animationPath:`visual.items[${P.id}].animations`,idPrefix:P.id});ze({animationInstances:Fe,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:p})&&v.push(...Fe)}}return e},Jr="dialogue-character-sprite",ny=(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 c=r.dialogue?.character?.sprite,u=n?.dialogue?.character?.sprite,p=yt(c),m=yt(u),d=sr({animationsDef:c?.animations,resources:o,previousResourceId:m?Jr:void 0,currentResourceId:p?Jr:void 0,previousTargetId:m?Jr:void 0,currentTargetId:p?Jr:void 0,animationPath:"dialogue.character.sprite.animations",idPrefix:"dialogue-character-sprite"});if(!p)return c?.animations&&m&&ze({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e;let f=o.transforms?.[c.transformId];if(!f)return console.warn("Transform not found:",c.transformId),e;let y={type:"container",id:Jr,...rr(f),children:[]};for(let g of c.items){let h=nl({id:`${Jr}-${g.id}`,item:g,resources:o});h&&y.children.push(h)}return l.children.push(y),ze({animationInstances:d,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...d),e},sy=(e,{presentationState:r,previousPresentationState:n,resources:o={},dialogueUIHidden:a,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,skipOnlyViewedLines:p,isLineCompleted:m,skipTransitionsAndAnimations:d,variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:I,activePersistentAnimations:b,saveSlots:x=[]})=>{let{elements:v,animations:k}=e;if(!r.dialogue||a)return e;let S=v.find(N=>N.id==="story");if(!S)return e;if(r.dialogue.ui&&r.dialogue.ui.resourceId){let{layouts:N={}}=o,P=N[r.dialogue.ui.resourceId];if(P){let T={elements:P.elements},V=qe({variables:f,imageGallery:y,musicRoom:g,sceneReplay:h,runtime:I,saveSlots:x,dialogueState:r.dialogue,includeInactiveAdvDialogue:!0,isLineCompleted:m,autoMode:t,skipMode:s,isChoiceVisible:i,isFormVisible:l,canRollback:c,form:u,characters:o.characters||{},dialogueUIHidden:a,skipOnlyViewedLines:p,skipTransitionsAndAnimations:d}),le=tr(T,V),G=nr(wr(le?.elements,{isLineCompleted:m,skipMode:s,skipTransitionsAndAnimations:d}),o);if(Array.isArray(G))for(let ee of G)S.children.push(ee);else G&&S.children.push(G)}}ny(e,{presentationState:r,previousPresentationState:n,resources:o,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b});let C=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 ze({animationInstances:C,isLineCompleted:m,skipTransitionsAndAnimations:d,activePersistentAnimations:b})&&k.push(...C),e},oy=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,form:h,activePersistentAnimations:I,saveSlots:b=[]})=>{let{elements:x,animations:v}=e;if(r.choice&&o){let k=Lr(x);if(!k)return e;let S=o?.layouts?.[r.choice.resourceId];if(S&&S.elements){let N={elements:S.elements},P=tr(N,{...qe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,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??[]}}),T=Po(nr(wr(P?.elements,{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o));if(Array.isArray(T))for(let V of T)k.children.push(V);else T&&k.children.push(T)}let C=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"});ze({animationInstances:C,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:I})&&v.push(...C)}return e},iy=(e,{presentationState:r,previousPresentationState:n,resources:o,screen:a,isLineCompleted:t,skipTransitionsAndAnimations:s,variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,activePersistentAnimations:h,saveSlots:I=[],form:b})=>{let{elements:x,animations:v}=e;if(!b?.resourceId||!o)return e;let k=Lr(x);if(!k)return e;let S=o?.layouts?.[b.resourceId];if(!S)return console.warn(`Form layout not found: ${b.resourceId}`),e;let C={id:"form-container",type:"container",x:0,y:0,children:S.elements||[]},N={...qe({variables:i,imageGallery:l,musicRoom:c,sceneReplay:u,runtime:p,saveSlots:I,dialogueState:r.dialogue,isLineCompleted:t,autoMode:m,skipMode:d,isChoiceVisible:f,isFormVisible:y,canRollback:g,characters:o.characters||{},skipTransitionsAndAnimations:s,form:b}),form:b},P=tr(C,N),T=Eo(nr(wr(xo(P,b),{isLineCompleted:t,skipMode:d,skipTransitionsAndAnimations:s}),o),b);T&&k.children.push(T);let V=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 ze({animationInstances:V,isLineCompleted:t,skipTransitionsAndAnimations:s,activePersistentAnimations:h})&&v.push(...V),e},ay=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,isLineCompleted:l,autoMode:c,skipMode:u,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 I=Jm(h.keyboard,h.keyup);if(I&&Object.keys(I).length>0&&(e.global.keyboard=I),!Array.isArray(h.elements)||h.elements.length===0)return e;let b=Lr(e.elements);if(!b)return e;let x={id:`control-${r.control.resourceId}`,type:"container",x:0,y:0,children:h.elements};return b.children.push(dl({container:x,resources:n,templateData:qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:n.characters||{},skipTransitionsAndAnimations:g}),isLineCompleted:l,skipMode:u,skipTransitionsAndAnimations:g})),e},ly=(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 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,m=!u&&c.loop===!0,d=[];if(u||In(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(Pn({id:Rt("bgm",u?"default":y.id),sound:h,resource:g,defaultLoop:!m}))}),d.length===0)return e;let f=qe({variables:a,runtime:o}).runtime;i.push(kn({id:Mm,volume:An(f,"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:f}))}return e},cy=(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=qe({variables:o,runtime:n}).runtime,c=Pn({id:Vm,sound:{loop:!1,startDelayMs:0,playback:a.playback},resource:i});return e.audio.push(kn({id:qm,volume:An(l,"musicVolume",Ir),children:[c],runtime:l})),e},uy=(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:Um,sounds:t.items??[]}]:t.channels;s||In(i,"SFX channel"),i.forEach(l=>{let c=!s&&l.loop===!0,u=[];if(s||In(l.sounds,"SFX sound",`SFX channel "${l.id}"`),c){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=c?{...p,loop:p.loop??!1}:p;u.push(Pn({id:s?Rt("sfx","default",m,p.id):Rt("sfx",l.id,p.id),sound:f,resource:d,defaultLoop:c?!1:void 0}))}),u.length!==0&&a.push(kn({id:Rt("channel","sfx",l.id),volume:An(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},py=(e,r,n)=>{if(!(!r||!n))return e?.voices?.[r]?.[n]},dy=(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||In(c,"Voice sound"),u){let d=c.find(f=>f.loop===!0);if(d)throw new Error(`Voice sound "${d.id}" cannot loop inside a looping Voice channel.`)}if(c.forEach(d=>{let f=py(n,o,d.resourceId);if(!f)return;let y=u?{...d,loop:d.loop??!1}:d;p.push(Pn({id:Rt("voice",o,l?"default":d.id),sound:y,resource:f,defaultLoop:u?!1:void 0}))}),p.length===0)return e;let m=qe({variables:t,runtime:a}).runtime;return s.push(kn({id:Fm,volume:l?i.volume??cl(m,"soundVolume"):An(m,"soundVolume",i.volume??Ir),muted:i.muted,pan:i.pan,loop:l?void 0:i.loop,interruption:i.interruption,children:p,runtime:m})),e},fy=(e,{presentationState:r,previousPresentationState:n,resources:o={},variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,saveSlots:y=[],isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:I})=>{let{elements:b,animations:x}=e;if(r.layout){let C=Lr(b);if(!C)return e;let N=o.layouts?.[r.layout.resourceId];if(!N)return e;Array.isArray(N.transitions)&&!g&&!h&&Oo({animations:x,transitions:N.transitions,defaultTargetId:`layout-${r.layout.resourceId}`,idPrefix:`layout-${r.layout.resourceId}`,animationPathPrefix:"layout"});let P={id:`layout-${r.layout.resourceId}`,type:"container",x:0,y:0,children:N.elements||[]};C.children.push(dl({container:P,resources:o,templateData:qe({variables:a,imageGallery:t,musicRoom:s,sceneReplay:i,runtime:l,saveSlots:y,dialogueState:r.dialogue,isLineCompleted:g,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,characters:o.characters||{},skipTransitionsAndAnimations:h}),isLineCompleted:g,skipMode:u,skipTransitionsAndAnimations:h}))}let v=n?.layout?.resourceId,k=r.layout?.resourceId,S=sr({animationsDef:r.layout?.animations,resources:o,previousResourceId:v,currentResourceId:k,previousTargetId:v?`layout-${v}`:void 0,currentTargetId:k?`layout-${k}`:void 0,animationPath:"layout.animations",idPrefix:"layout"});return ze({animationInstances:S,isLineCompleted:g,skipTransitionsAndAnimations:h,activePersistentAnimations:I})&&x.push(...S),e},my=(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=sr({animationsDef:l,resources:o,previousResourceId:c?"story":void 0,currentResourceId:"story",previousTargetId:c?"story":void 0,currentTargetId:"story",animationPath:"screen.animations",idPrefix:"screen"});return ze({animationInstances:u,isLineCompleted:a,skipTransitionsAndAnimations:t,activePersistentAnimations:s})&&i.push(...u),e},yy=(e,{presentationState:r})=>{let n=Lr(e.elements);return!n||!r?.screen||Object.assign(n,al(r.screen)),e},hy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:m,form:d,overlayStack:f=[],dialogueHistory:y=[],saveSlots:g=[],screen:h,isLineCompleted:I,skipTransitionsAndAnimations:b})=>{let{elements:x,animations:v}=e;return f&&f.length>0&&f.forEach((k,S)=>{let C=n.layouts?.[k.resourceId];if(!C){console.warn(`Overlay layout not found: ${k.resourceId}`);return}Array.isArray(C.transitions)&&(b||Oo({animations:v,transitions:C.transitions,defaultTargetId:`overlayStack-${S}`,idPrefix:`overlayStack-${S}`,animationPathPrefix:`overlayStack[${S}]`}));let N={id:`overlayStack-${S}`,type:"container",x:0,y:0,children:[ul({id:`overlayStack-${S}-blocker`,screen:h}),...C.elements||[]]},P=pl(y,n.characters,o),T=qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:g,dialogueState:r?.dialogue,isLineCompleted:I,autoMode:l,skipMode:c,isChoiceVisible:u,isFormVisible:p,canRollback:m,form:d,historyDialogue:P,characters:n.characters||{},skipTransitionsAndAnimations:b}),V=tr(N,T),[le,...G]=V.children||[],ee=nr(wr({...V,children:G},{isLineCompleted:I,skipMode:c,skipTransitionsAndAnimations:b}),n);x.push({...ee,children:le?[le,...ee.children||[]]:ee.children})}),e},gy=(e,{presentationState:r,resources:n={},variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l=[],autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,dialogueHistory:g=[],screen:h,isLineCompleted:I,skipTransitionsAndAnimations:b})=>{let{elements:x,animations:v}=e;if(!y?.resourceId)return e;let k=n.layouts?.[y.resourceId];if(!k)return console.warn(`ConfirmDialog layout not found: ${y.resourceId}`),e;Array.isArray(k.transitions)&&!b&&Oo({animations:v,transitions:k.transitions,defaultTargetId:"confirmDialog",idPrefix:"confirmDialog",animationPathPrefix:"confirmDialog"});let S={id:"confirmDialog",type:"container",x:0,y:0,children:[ul({id:"confirmDialog-blocker",screen:h}),...k.elements||[]]},C=pl(g,n.characters,o),N=tr(S,qe({variables:o,imageGallery:a,musicRoom:t,sceneReplay:s,runtime:i,saveSlots:l,dialogueState:r?.dialogue,isLineCompleted:I,autoMode:c,skipMode:u,isChoiceVisible:p,isFormVisible:m,canRollback:d,form:f,confirmDialog:y,historyDialogue:C,characters:n.characters||{},skipTransitionsAndAnimations:b})),[P,...T]=N.children||[],V=nr(wr({...N,children:T},{isLineCompleted:I,skipMode:u,skipTransitionsAndAnimations:b}),n);return x.push({...V,children:P?[P,...V.children||[]]:V.children}),e},$t=e=>(r,n)=>ty(r,{...n,visualLayer:e}),by=$t(er.BEHIND_BACKGROUND),Iy=$t(er.BEHIND_CHARACTER),wy=$t(er.BEHIND_DIALOGUE),vy=$t(er.BEHIND_CHOICE),Ay=$t(er.FOREGROUND),ml=e=>cn(Qm,[ay,by,Zm,Iy,ey,wy,sy,vy,oy,iy,fy,Ay,yy,my,ly,cy,uy,dy,hy,gy])(e);function yl(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 hl(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 gl="090001000h1v5g2903000hl2v6jh16ng1s210111110o35aa10u2k1g10l6600152113h2010u1q1r5aq3890o13181214r22k3158q2n1000v100h1k20000001207030001160721k171001h1j11610332010010321210090411021c1c02100o301201412230u1130b100h1j116111420120411001100k11l10051001h1j11611142011000321210072411021d0g10r3000000132120090o200200g1j11f2012031213711271t1001o301001000001121371b1f0c101h1l2011001031212000080a1t1001m40400102101600i11t301006c7i601008b6p41r10101041h3d0004115a1j290p3q223000511010100g1501010302003172030c0010016000e0i6v50n40n5tl12ir33s12t11u11cj30100060700010a90t220000l71i20m7203010241000502rd101004k300000006101027050920g3t22bk1300616g209030207u18c1000t10003010501b2o20000102000004g37070101o921c000640602001mcv3rg20000001o16d0c0m1fg6g2h30m10q55f1vm11c0ma0p1a42nc0ne1a090q3314902021204020112030318250105bb1201110i1021i15101131502141b15120511011k1155132040202510201010603060a1f02040104210b1g3290e0e0kn11vs12j11j3040pp12t80g6v1vmo7319g21g51gh103040n11010040j51i3f01q1h1d0m27p1a0000cs13200523j200010301010100v140018a4q2501010101c08000i1f12601011g3012215110u1a0001015000pcq181000100011000iji5fvc0u91g5bhg20ie0l94lo6002115303121s12240la1tj23h44tj11t45m4ah33q700000l3ep2021a200t220301012040a0i320j2040007f00100r20c100g3208000011531000s520201036020t900207l1101n311000000321210090a12634b910201l22001051020120011020000e1i520701020000n10h5001050000010000010001re0010323010001r11i520701000001q6000000107l600000230004gg12080001lc62027111n1000411230000000000t820321030030r10090n205001380800501020n2050c0001mc00002000000nc006150000i5l1100600010001q753011160000i441111000000rl11019100000c1h201043102n10ltk1f006eoss2b0202gs94r36si2033ku101m373h50b1rqs4113sli1t22m1uh2435070726u13k92rr7m34h380e0m141egl561g1261114k60ga6nn10t33sv13uf1jf0207150qt16t66pr60n23k6bf1f0e1l29g71c1e029j1n30p11ea0k1028139m16rb2v621122i52213040tf1u3b51n17127c0232041d120819052c28220104060306l5g3l4572g130152cqdl2c3o37a5o27u11c32d9m2cu2191obo57eh9gg1tv3",bl="262122424333333393233393339333333333393393bf3b3b3b3b3f3f3bffff33b3bb33ff3f33b3b3333333bffff3b33bb33f33bffff33b3bb33ff3f33b3bbb333b3ff33b333f33b3b3b3b3333b3bf33b3bb39333b33b33b3b3b333b333333b3b33333f3b33b3ffb3f3fff3f3b33f35dc33333f3b3b3b33323333b3bb3b33b3fb3b3333b33333bff3b3f33bfb3b3ff3b3b3b3b3b333b333b3323e22442344444444444444444444444444444444444444444444444444444444444444444444444444444443333333333b3b3bb33333b353bff3b3b3b3f3ff3b3b333bfff3f33333fb3bb3fb3b3bb33232333f333fff333333333b3b3333bb3b39393f3b3fbf33bb3b393b3b3b3333b33b33b3bbb33b33ffff3b3333bb3933b3b3b333b3b3b3b3b33b3b3b33b3b3b33b3b33b33b3b3b3fffff3bb39b9b3b33b3bf3f3b33f3b3f93b33b3b3bb33b33b3b3b3333393b3b3b33b39bffb3b332333b333dd3b3333233332333333333333333333333333333444444444444a4444444444444344444444444444444444444444444444444444444444",Il="0001000000010010000000100000000000000000000000000001000000010014000100000001001000010101100101100000000000000000000100000001111000010000000110101001110111111111000100000021001000010000000100100001000000011010000100000001111000013000000100140001000000010010";var wl=65535,No=40960,xn=126976,kl=new Uint8Array(12288),Pl=new Uint8Array(3072),xl=new Uint8Array(2816),El,Sl;{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 yl(gl,bl))e(kl,0,a,t,s),e(Pl,No,a,t,s),e(xl,xn,a,t,s),t>=65040&&!(a>=xn&&t<=129791)&&(r[o]=a,n[o++]=t<<5|s);El=r.slice(0,o),Sl=n.slice(0,o)}function vl(e){return e<12288?kl[e]:e<No?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?Pl[e-No]: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>=xn&&e<129792?xl[e-xn]:e>=917504?e>921599?0:e>=917536&&e<917632||e>=917760&&e<918e3?3:2:hl(e,El,Sl)}var Rl=Uint8Array.from(Il,Number);function ky(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 Al(e,r,n){switch(r){case 3:return e&24?n===8204?e&6:(e&24)===16||ky(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*Ol(e){let r=e.length;if(r===0)return;let n=e.codePointAt(0),o=n>wl?2:1,a=vl(n),t=50200>>a&1?Al(0,a,n):0,s=0,i=n,l=a;for(;o<r;){n=e.codePointAt(o);let c=n>wl?2:1,u=vl(n),p=Rl[a<<4|u],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>>u&1&&(t!==0||u!==3)?Al(t,u,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=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*Cl(e){for(let r of Ol(e))yield r.segment}{let e=Ol("_");Rl._keep=[e,e.next()]}var $l=1e3,Dl=50,Py=0,_l=100,jl=50,xy=60,Ey=3,Sy=.5,Ry=2e4,Oy=/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}]/u,Cy=/^\s+$/u,Nl,$y=e=>{let r=`${e??""}`.normalize("NFC"),n=globalThis.Intl?.Segmenter;return typeof n!="function"?Array.from(Cl(r)):(Nl??=new n(void 0,{granularity:"grapheme"}),Array.from(Nl.segment(r),({segment:o})=>o))},_y=e=>$y(e).reduce((r,n)=>Cy.test(n)?r+Sy:Oy.test(n)?r+Ey:r+1,0),jy=e=>2**(((Number.isFinite(e)?Math.min(_l,Math.max(Py,e)):Dl)-jl)/(_l-jl)),Ll=({text:e="",baseDelay:r=$l,speed:n=Dl}={})=>{let o=Number.isFinite(r)?Math.max(0,r):$l,a=jy(n),t=_y(e)*xy/a,s=Math.max(o,Ry);return Math.min(o+t,s)};var En={manual:{enabled:!0,requireLineCompleted:!1},auto:{enabled:!1},applyMode:"persistent"},Ul=1,Yo=1,rt="choice",Ar="form",Dt=()=>({manual:{...En.manual},auto:{...En.auto},applyMode:En.applyMode}),zo=()=>({groupId:null,variantId:null,pageIndex:0}),Ny="music-room:player",Dy=new Set(["asset-unavailable","decode-failed","invalid-segment","invalid-position","playback-failed"]),On=({bgmPlayback:e={commandId:0,operation:"resume"}}={})=>({trackId:null,pageIndex:0,status:"stopped",readiness:"idle",positionMs:0,durationMs:null,playback:null,seekFallback:null,bgmPlayback:e}),Go=new Set,Ly=new Set(["groupId","variantId"]),Ty=new Set(["pageIndex"]),tt=new Set,My=new Set(["trackId"]),qy=new Set(["positionMs"]),Vy=new Set(["pageIndex"]),Ho=new Set,Fy=new Set(["sceneId"]),Uy=new Set(["pageIndex"]),Xo=()=>({pageIndex:0}),Wo=e=>{if((e.global.nextLineConfig?.applyMode??"persistent")!=="singleLine")return;let n=e.global.nextLineConfig?.auto?.enabled===!0;e.global.nextLineConfig={...Dt()},n&&e.global.pendingEffects.push({name:"clearNextLineConfigTimer"})},Do=e=>{e.global.nextLineConfig.auto?.enabled&&(e.global.nextLineConfig.auto.enabled=!1,e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}))},D=e=>{let r=he(e)?dr(e):e;return structuredClone(r)},L=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),Cn=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},Bl=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},Lt=(e,r,n)=>({commandId:Cn(e),operation:r,...n===void 0?{}:{positionMs:n}}),Ko=e=>{if(!Object.prototype.hasOwnProperty.call(e.global??{},"musicRoomPlayer"))return;let r=e.global.musicRoomPlayer,n=r.bgmPlayback;r.trackId!==null&&(n={commandId:Cn(e),operation:"resume"}),e.global.musicRoomPlayer=On({bgmPlayback:n})},Yl=(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},zl=(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`)},nt=e=>String(e),Gl=()=>({sections:[],resources:[]}),Hl=()=>({sceneIds:[]}),By=e=>L(e)?(Array.isArray(e.sections)||(e.sections=[]),Array.isArray(e.resources)||(e.resources=[]),e):Gl(),Yy=e=>L(e)?(Array.isArray(e.sceneIds)||(e.sceneIds=[]),e):Hl(),zy=e=>Array.isArray(e)?e.map(r=>r?.text??"").join(""):"",Gy=({sectionId:e,lineId:r,content:n,dialogueState:o,characterName:a})=>({sectionId:e,lineId:r,content:n,text:zy(n),characterId:o.characterId,character:{...o.character||{},name:a},characterName:a}),Xl=(e=0)=>({entries:[],currentLength:0,checkpointLengths:Array(e).fill(0)}),Hy=e=>L(e)&&typeof e.sectionId=="string"&&e.sectionId.length>0&&typeof e.lineId=="string"&&e.lineId.length>0,Jo=e=>{if(!L(e?.dialogueHistory))return null;let r=e.dialogueHistory;return!Array.isArray(r.entries)||!Number.isInteger(r.currentLength)||!Array.isArray(r.checkpointLengths)?null:r},Xy=e=>{if(!L(e?.dialogueHistory))return e.dialogueHistory=Xl(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},Qo=e=>{let r=Jo(e);return r?(r.currentLength<r.entries.length&&(r.entries=r.entries.slice(0,r.currentLength)),r):null},Wy=()=>({resourceId:void 0}),Ky=e=>{if(!L(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},or=(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}},Wl=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)}}},Kl=e=>e,Jl=e=>{if(!Number.isInteger(e)||e<1)throw new Error("Malformed save slot formatVersion.");if(e!==Ul)throw new Error(`Unsupported save slot formatVersion "${e}".`);return e},Jy=(e,r={})=>{let n;try{n=Jl(r.formatVersion)}catch(a){throw new Error(`Hydrated save slot "${e}" failed validation: ${a.message}`)}let o={...r,formatVersion:n,slotId:Kl(r.slotId??r.slotKey??e),savedAt:typeof r.savedAt=="number"?r.savedAt:r.date};return delete o.slotKey,delete o.date,o},Qy=(e={})=>Object.fromEntries(Object.entries(e).map(([r,n])=>[r,Jy(r,n)])),Zy=(e,r)=>{if(!L(e)||!Array.isArray(e.operations))return null;let n=e.operations.filter(o=>{if(!L(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 kt(l.type,t,a),dn(l.type,t,s,a,{roundTo:i}),t!=="set"||eo(l,s)}catch{return!1}});return n.length>0?{...e,operations:n}:null},Ql=(e,r)=>{if(!Array.isArray(e))return;let n=e.flatMap(o=>{if(!L(o)||!qb(o.type))return[];if(o.type!=="updateVariable"||r===void 0)return[o];let a=Zy(o.payload,r);return a?[{...o,payload:a}]:[]});return n.length>0?n:void 0},eh=(e,r)=>{!L(e)||!Array.isArray(e.timeline)||(e.returnabilityVersion=Yo,e.timeline.forEach(n=>{if(!L(n))return;typeof n.returnable!="boolean"&&delete n.returnable;let o=Ql(n.executedActions,r);if(o){n.executedActions=o;return}delete n.executedActions}))},Tl=(e,r,n,o="viewedRegistry")=>{let a=r==="sections"?"sectionId":"resourceId";if(typeof e=="string"||typeof e=="number")return{[a]:String(e)};if(!L(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}},rh=(e,r="viewedRegistry")=>{if(e===void 0)return Gl();if(!L(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=Tl(a,"sections",t,r);return[s.sectionId,s]}))),resources:Object.values(Object.fromEntries(o.map((a,t)=>{let s=Tl(a,"resources",t,r);return[s.resourceId,s]})))}},th=(e,r="accountReplayRegistry")=>{if(e===void 0)return Hl();if(!L(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(!L(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}=or(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}},Zl=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")},nh=e=>{try{return Zl(e),!0}catch{return!1}},sh=(e,r,n)=>{let o=e?.pointers?.read;if(!L(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 Zl(r)}},ec=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId,Zo=(e,r)=>{let{section:n}=or(e,r?.sectionId);return n?.lines?.find(o=>o.id===r?.lineId)},oh=(e,r,n)=>{if(!L(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(!L(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}=or(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}},ih=(e,r)=>L(Zo(e,r)?.actions?.dialogue),rc=(e,r,n)=>{if(!r||r.sectionId!==n.sectionId)return!1;let{section:o}=or(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=>L(s.actions?.dialogue))?.id===r.lineId},ah=(e,r)=>{let n=Xl();return e.timeline.forEach(o=>{if(o.returnable!==!1&&ih(r,o)){let a=Zo(r,o),t=n.entries.at(-1),s=a.actions.dialogue.append===!0&&rc(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},lh=(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},ch=(e,r)=>{let{section:n}=or(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},tc=(e,r,n)=>{if(typeof r?.sectionId!="string")return!1;let{section:o}=or(e,r.sectionId);return ec({sectionId:r.sectionId,lineId:o?.lines?.[0]?.id},n)},uh=new Set(["jumpToLine","rollbackByOffset","rollbackToLine","sectionTransition","resetStoryAtSection"]),et={always:"always",maybe:"maybe",never:"never"},ph=e=>{if(!Object.prototype.hasOwnProperty.call(e??{},"when"))return et.always;let r=e.when,n;if(r===null||typeof r=="boolean"||typeof r=="number")n=r;else if(L(r)&&Object.keys(r).length===1&&Object.prototype.hasOwnProperty.call(r,"literal"))n=r.literal;else return et.maybe;return n?et.always:et.never},nc=(e,r)=>{if(!Array.isArray(e?.branches))return!1;for(let n of e.branches){let o=ph(n);if(o!==et.never){if(r(n))return!0;if(o===et.always)return!1}}return!1},sc=e=>nc(e,r=>Object.entries(r?.actions??{}).some(([n,o])=>n==="conditional"?sc(o):uh.has(n))),oc=(e,r,n)=>nc(r,o=>Object.entries(o?.actions??{}).some(([a,t])=>a==="sectionTransition"?tc(e,t,n):a==="conditional"?oc(e,t,n):!1)),dh=(e,r,n)=>{if(!r)return!0;let o=Zo(n,e)?.actions;if(!L(o))return!0;if(tc(n,o.sectionTransition,r))return!1;let a=o.conditional;return a?!(oc(n,a,r)||!(o.choice?.resourceId||o.form?.resourceId)&&!sc(a)&&ec(ch(n,e),r)):!0},fh=(e,r,n)=>{if(!L(e)||!Array.isArray(e.timeline))return{rollback:Nt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:0};let o=new WeakSet,a=[],t=e.timeline.flatMap((p,m)=>{if(!L(p))return[];try{let d=_t(p,n,`rollback.timeline[${m}]`),f=Rn({sectionId:d.sectionId,lineId:d.lineId,rollbackPolicy:p.rollbackPolicy,returnable:p.returnable});typeof p.returnable=="boolean"&&o.add(f);let y=Ql(D(p.executedActions),n);return y&&(f.executedActions=y),a.push(m),[f]}catch{return[]}});if(t.length===0)return{rollback:Nt({pointer:r,replayStartIndex:1}),sourceCheckpointIndexes:[null],sourceTimelineLength:e.timeline.length};e.returnabilityVersion!==Yo&&t.forEach((p,m)=>{!o.has(p)&&!dh(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 c=t[l];if(c?.sectionId!==r.sectionId||c?.lineId!==r.lineId){let p=t.findLastIndex(m=>m.sectionId===r.sectionId&&m.lineId===r.lineId);p>=0?l=p:(t.push(Rn({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}},ic=(e,r,n)=>{if(!L(e))throw new Error(`Malformed save slot contexts[${n}] entry.`);let o=ri(r),a=sh(e,r,`contexts[${n}].pointers.read`);if(e.variables!==void 0&&!L(e.variables))throw new Error(`Malformed save slot contexts[${n}].variables entry.`);if(e.runtime!==void 0&&!L(e.runtime))throw new Error(`Malformed save slot contexts[${n}].runtime entry.`);let t=e.variables?wt(D(e.variables),r.resources?.variables??{},{allowedScopes:["context"]}):{},s=Eh({loadedContextRuntime:L(e.runtime)?D(e.runtime):{}}),{rollback:i,sourceCheckpointIndexes:l,sourceTimelineLength:c}=fh(e.rollback,a,r),u=e.dialogueHistory===void 0?ah(i,r):lh(oh(e.dialogueHistory,r,`contexts[${n}].dialogueHistory`),i,l,c),p={currentPointerMode:"read",pointers:{read:a},configuration:L(e.configuration)?D(e.configuration):{},views:Array.isArray(e.views)?D(e.views):[],bgm:L(e.bgm)?D(e.bgm):{resourceId:void 0},variables:{...o,...t},...u?{dialogueHistory:u}:{},rollback:i};return s&&(p.runtime=s),p},mh=(e,r)=>{if(!L(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)=>ic(n,r,o))}},yh=(e,r)=>{if(!L(e))throw new Error("Malformed save slot.");let n=Jl(e.formatVersion);return{...e,formatVersion:n,state:mh(e.state,r)}},Ml=(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=D(e),a=o.hideConfirmDialog??{};return delete o.hideConfirmDialog,{hideConfirmDialog:a,...o}},hh=(e={})=>{if(!e?.resourceId)throw new Error("showConfirmDialog requires resourceId");return{resourceId:e.resourceId,confirmActions:Ml(e.confirmActions,"confirmActions",{required:!0}),cancelActions:Ml(e.cancelActions,"cancelActions")}},st=e=>{Object.prototype.hasOwnProperty.call(e.global,"confirmDialog")&&(e.global.confirmDialog=null)},gh=e=>(L(e.global.formDrafts)||(e.global.formDrafts={}),e.global.formDrafts),ot=e=>{Object.prototype.hasOwnProperty.call(e.global,"formDrafts")&&(e.global.formDrafts={})},ac=e=>{if(!(!L(e)||!e.animations))return{animations:D(e.animations)}},bh=(e,r)=>{let n=ac(r);if(n){e.global.pendingScreenTransition=n;return}delete e.global.pendingScreenTransition},Ih=e=>{let r=e?.id??e?.resourceId;return typeof r=="string"&&r.length>0?r:void 0},wh=(e,r)=>{let n=e?.sectionId,o=e?.lineId;if(!(!n||!o||!r))return`${n}:${o}:${r}`},Sn=e=>String(e??""),lc=(e,r)=>{let n=Sn(r);return e?.trim===!0?n.trim():n},vh=e=>L(e?.fields)?Object.fromEntries(Object.entries(e.fields).filter(([,r])=>L(r)).map(([r,n])=>[r,{id:r,...D(n)}])):{},Ah=(e,r)=>{if(!r||!L(e.global.formDrafts))return;let n=e.global.formDrafts[r];return L(n)?n:void 0},cc=(e,r)=>{let n=gh(e);L(n[r])||(n[r]={values:{},touched:{},errors:{},submitted:!1});let o=n[r];return L(o.values)||(o.values={}),L(o.touched)||(o.touched={}),L(o.errors)||(o.errors={}),typeof o.submitted!="boolean"&&(o.submitted=!1),o},ei=(e,r)=>{let n=lc(e,r);return e?.required===!0&&n.length===0?"required":null},kh=({state:e,pointer:r})=>{if(!r?.sectionId||!r?.lineId)return{};let o=be({state:e},{sectionId:r.sectionId})?.lines||[],a=o.findIndex(t=>t.id===r.lineId);return a<0?{}:jr(o.slice(0,a+1).map(t=>t.actions||{}))},Ph=({state:e,form:r,pointer:n})=>{if(!r?.resourceId)return null;let o=Ih(r),a=wh(n,o);if(!o||!a)return null;let t=Ah(e,a),s=vh(r),i=$n({state:e}),l={},c=[],u={},p=!0;return Object.entries(s).forEach(([m,d])=>{let f=Sn(i?.[d.variableId]),y=Object.prototype.hasOwnProperty.call(t?.values??{},m)?Sn(t.values[m]):f,g=t?.touched?.[m]===!0,h=ei(d,y),I=t?.submitted||g?h:null,b=typeof d.maxLength=="number"?Math.max(0,Math.round(d.maxLength)):void 0,x={id:m,variableId:d.variableId,value:y,initialValue:f,valid:!h,error:I,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]=x,c.push(x),u[m]=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:D(r.submitActions??{})}},cancelActions:{cancelForm:{formKey:a,actions:D(r.cancelActions??{})}}}},ql="line",vr="interaction",Rn=({sectionId:e,lineId:r,rollbackPolicy:n,returnable:o})=>({sectionId:e,lineId:r,rollbackPolicy:n??"free",...typeof o=="boolean"?{returnable:o}:{}}),ri=e=>{let r=he(e)?dr(e):e,{contextVariableDefaultValues:n}=pn(r??{});return D(n)},uc=()=>({...D(xt)}),pc=({loadedRuntime:e,runtimeIds:r,defaults:n={},path:o})=>{if(e===void 0)return{runtimeState:D(n),hasLoadedValues:!1};if(!L(e))throw new Error(`Malformed ${o}.`);let a=D(n),t=!1;return r.forEach(s=>{e[s]!==void 0&&(a[s]=mn(s,D(e[s])),t=!0)}),{runtimeState:a,hasLoadedValues:t}},xh=({projectData:e,loadedGlobalRuntime:r={}})=>pc({loadedRuntime:r,runtimeIds:io,defaults:lo(e),path:"global.runtime"}).runtimeState,Eh=({loadedContextRuntime:e={}})=>{let{runtimeState:r,hasLoadedValues:n}=pc({loadedRuntime:e,runtimeIds:ao,defaults:uc(),path:"context.runtime"});return n?r:void 0},qr=e=>{let r=Array.isArray(e?.contexts)?e.contexts:[];return r[r.length-1]},ne=e=>{let r=qr(e);return r?.kind==="sceneReplay"&&L(r.sceneReplay)?r:null},dc=(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]=D(t)})},Sh=e=>({autoMode:e.global.autoMode,skipMode:e.global.skipMode,dialogueUIHidden:e.global.dialogueUIHidden,nextLineConfig:D(e.global.nextLineConfig),overlayStack:D(e.global.overlayStack),confirmDialog:D(e.global.confirmDialog),formDrafts:D(e.global.formDrafts),isLineCompleted:e.global.isLineCompleted,...e.global.isDialogueHistoryShowing===void 0?{}:{isDialogueHistoryShowing:e.global.isDialogueHistoryShowing},...e.global.pendingScreenTransition===void 0?{}:{pendingScreenTransition:D(e.global.pendingScreenTransition)}}),Rh=e=>{e.global.autoMode=!1,e.global.skipMode=!1,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,delete e.global.pendingScreenTransition,e.global.nextLineConfig=Dt(),e.global.overlayStack=[],e.global.confirmDialog=null,e.global.formDrafts={},e.global.isLineCompleted=!0,e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"})},Oh=(e,r)=>{e.global.autoMode=r.autoMode,e.global.skipMode=r.skipMode,e.global.dialogueUIHidden=r.dialogueUIHidden,e.global.nextLineConfig=D(r.nextLineConfig),e.global.overlayStack=D(r.overlayStack),e.global.confirmDialog=D(r.confirmDialog),e.global.formDrafts=D(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=D(r.pendingScreenTransition),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"});let n=ve({state:e});e.global.autoMode&&e.global.isLineCompleted&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({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}})},Ch=e=>e.runtime?(ao.forEach(r=>{e.runtime[r]===void 0&&(e.runtime[r]=D(xt[r]))}),e.runtime):(e.runtime=uc(),e.runtime),$h=e=>Ma(e.global),fc=e=>{e.global.pendingEffects.push({name:"saveGlobalRuntime",payload:{globalRuntime:$h(e)}})},ti=(e,r,n)=>{let o=mn(r,n);if(r in xt){let a=qr(e);if(!a)return o;let t=Ch(a);return t[r]=o,o}return e.global[r]=o,o},ni=({pointer:e,projectData:r,kind:n,sceneReplay:o})=>({...n===void 0?{}:{kind:n},...o===void 0?{}:{sceneReplay:D(o)},currentPointerMode:"read",pointers:{read:D(e)},configuration:{},views:[],bgm:Wy(),variables:ri(r),rollback:Nt({pointer:e})}),it=e=>e?(e.currentPointerMode="read",L(e.pointers)||(e.pointers={}),Object.prototype.hasOwnProperty.call(e.pointers,"history")&&delete e.pointers.history,e.pointers):null,_h=(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=ni({pointer:o,projectData:e.projectData});return e.contexts[e.contexts.length-1]=a,jh(e,{queueRender:r}),a},jh=(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=Dt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,Ko(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"}),r&&e.global.pendingEffects.push({name:"render"})},mc=e=>{!e||!("baselineVariables"in e)||delete e.baselineVariables},Nt=({pointer:e,replayStartIndex:r=0})=>{let n=e?.sectionId&&e?.lineId;return{currentIndex:n?0:-1,isRestoring:!1,replayStartIndex:r,timeline:n?[Rn({sectionId:e.sectionId,lineId:e.lineId})]:[]}},Pr=(e,r={})=>{if(e?.rollback)return mc(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=Nt({pointer:n,replayStartIndex:r.compatibilityAnchor?1:0}),e.rollback},si=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return;let o=Pr(n);if(o.isRestoring)return;let a=Qo(n);o.currentIndex<o.timeline.length-1&&(o.timeline=o.timeline.slice(0,o.currentIndex+1)),o.timeline.push(Rn(r)),o.currentIndex=o.timeline.length-1,a&&(a.checkpointLengths=a.checkpointLengths.slice(0,o.currentIndex),a.checkpointLengths.push(a.currentLength))},Nh=({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}},Dh=({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(he(l)?Jt(l):l)!==o||l?.sectionId!==a||l?.lineId!==t||(l.returnable=!1),e},Lh=({state:e},r={})=>{let{slotId:n,saveSlotIdentity:o,checkpointIndex:a,sectionId:t,lineId:s}=r,i=nt(n),l=e.global.saveSlots?.[i],c=he(l)?Jt(l):l;if(!l||c!==o)return e;let u=l.state?.contexts,p=Array.isArray(u)?u.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=Yo,e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})),e},Th=(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=Qo(n);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t+1))}return o.timeline[t]??null},Mh=({state:e,rollbackActionBatchStack:r},n={})=>{let o=n?.source===ql?ql:vr,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=Qo(a);s&&(s.checkpointLengths=s.checkpointLengths.slice(0,t.currentIndex+1))}return r.push({checkpointIndex:t.currentIndex,source:o}),e},qh=({state:e,rollbackActionBatchStack:r})=>(r.pop(),e),We=(e,r,n,o)=>{let t=o?.at(-1)?.source??vr;if(!Vb(r,t))return;let s=Th(e,o);s&&(Array.isArray(s.executedActions)||(s.executedActions=[]),s.executedActions.push({type:r,payload:D(n)}))},Vl=(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($e(l))throw new Error(`Cannot update computed variable: ${a}`);if(l?.readonly===!0)throw new Error(`Cannot update readonly variable: ${a}`);At(c,a),kt(u,t,a),dn(u,t,s,a,{roundTo:i}),c==="context"&&(n.variables[a]=fn(n.variables[a],t,s,{roundTo:i}))}},Vh=(e,r)=>{Array.isArray(r?.executedActions)&&r.executedActions.forEach(({type:n,payload:o})=>{Fb(e,n,o)})},Fh=(e,r)=>{let{sectionId:n,lineId:o}=r,s=be({state:e},{sectionId:n})?.lines?.find(i=>i.id===o)?.actions;s&&Object.entries(s).forEach(([i,l])=>{Xc(e,i,l)})},yc=(e,r)=>{let n=e.contexts?.[e.contexts.length-1];if(!n)return e;let o=Pr(n),a=o.timeline[r];if(!a)return e;e.global.autoMode&&Vt({state:e}),e.global.skipMode&&kr({state:e}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),o.isRestoring=!0,o.currentIndex=r;try{n.variables=ri(e.projectData),n.kind==="sceneReplay"&&(dc(e,n),n.sceneReplay.finishOnNextAdvance=!1,n.sceneReplay.exitOnLineCompleted=!1),delete n.runtime,e.global.dialogueUIHidden=!1,delete e.global.isDialogueHistoryShowing,e.global.nextLineConfig=D(En),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&&Wo(e),Fh(e,o.timeline[l]),Vh(e,o.timeline[l]);let s=it(n);s.read={sectionId:a.sectionId,lineId:a.lineId};let i=Jo(n);i&&(i.currentLength=Math.min(i.checkpointLengths[r]??0,i.entries.length)),n.kind==="sceneReplay"&&(n.sceneReplay.entryId=Bl(e)),e.global.pendingEffects=e.global.pendingEffects.filter(l=>l?.name!=="render"),e.global.pendingEffects.push({name:"render"})}finally{o.isRestoring=!1}return e},Uh=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;Wl(r),gt(r),bt(r),It(r),_r(r?.resources?.variables??{});let u=r.story.initialSceneId,p=r.story.scenes[u],m=p.initialSectionId,d=p.sections[m],f={sceneId:u,sectionId:m,lineId:d.initialLineId??d.lines[0].id},{globalVariablesDefaultValues:y}=pn(r),g={...y,...wt(t,r.resources?.variables??{},{allowedScopes:["device","account"],preserveUnknown:!0})};return{projectData:r,global:{pendingEffects:[],confirmDialog:null,formDrafts:{},accountViewedRegistry:rh(i,"accountViewedRegistry"),accountReplayRegistry:th(l),nextLineConfig:Dt(),imageGalleryNavigation:zo(),sceneReplayNavigation:Xo(),sceneReplayEntryId:0,audioCommandId:n,musicRoomPlayer:On(),saveSlots:Qy(a),localizationPackages:D(c),overlayStack:[],variables:g,...xh({projectData:r,loadedGlobalRuntime:s})},contexts:[ni({pointer:f,projectData:r})]}},Bh=({state:e})=>e.global.overlayStack||[],Yh=({state:e})=>e.global.pendingEffects,hc=({state:e})=>e.global.skipMode,zh=({state:e})=>e.global.autoMode,gc=({state:e})=>e.global.dialogueUIHidden,bc=({state:e})=>{let r=Array.isArray(e.contexts)?e.contexts:[],n=r[r.length-1];if(!n)return[];let o,a=L(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=be({state:e},{sectionId:c});if(!p?.lines||!Array.isArray(p.lines))return[];let m=p.lines.findIndex(d=>d.id===u);o=p.lines.slice(0,m+1).map(d=>({sectionId:c,lineId:d.id}))}let t=[],s=vt({variables:{...e.global?.variables??{},...qr(e)?.variables??{}},runtime:Nr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),i=new Map,l=c=>{let u=i.get(c.sectionId);if(!u){let m=be({state:e},{sectionId:c.sectionId}),d=Array.isArray(m?.lines)?m.lines:[];u={lines:d,lineIndexes:new Map(d.map((f,y)=>[f.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 m=u.lines[u.nextLineIndex],d=m.actions||{};u.presentationState=jr([u.presentationState,d]),u.projections.set(m.id,{line:m,lineActions:d,dialogueState:u.presentationState.dialogue||{}}),u.nextLineIndex+=1}return u.projections.get(c.lineId)??null};for(let c of o){if(!Hy(c))continue;let u=l(c);if(!u)continue;let{line:p,lineActions:m,dialogueState:d}=u;if(!m.dialogue)continue;let f=un({characterId:d.characterId,character:d.character,characters:e.projectData.resources?.characters??{},variables:s}),y=Gy({sectionId:c.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?c.appendToPrevious===!0:m.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},Gh=(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?.[nt(t)],u=he(c)?Jt(c):c,p=c?.state?.contexts?.at(-1);!c||u!==s||p?.pointers?.read?.sectionId!==i||p?.pointers?.read?.lineId!==l||(p.dialogueHistory=D(n),o=!0)}o&&e.global.pendingEffects.push({name:"saveSlots",payload:{saveSlots:{...e.global.saveSlots}}})},Hh=({state:e},r={})=>{let n=qr(e),o=n?.pointers?.read,a=Mt({state:e});if(!n||!L(a?.actions?.dialogue))return e;let t=Pr(n),s=t.timeline?.[t.currentIndex],i=s?.sectionId===o?.sectionId&&s?.lineId===o?.lineId,l=Jo(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 m=Xy(n);m.currentLength<m.entries.length&&(m.entries=m.entries.slice(0,m.currentLength));let d=a.actions.dialogue.append===!0&&r.appendToPrevious===!0&&rc(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 Gh(e,r.savedCheckpointOccurrences,m),e},Xh=({state:e})=>e.global.confirmDialog??null,Tt=({state:e},{pointer:r}={})=>{let n=r??_e({state:e})?.pointer,o=kh({state:e,pointer:n});return Ph({state:e,form:o.form,pointer:n})},Wh=({state:e},{pointer:r}={})=>!!Tt({state:e},{pointer:r}),ve=({state:e},{pointer:r}={})=>{let n=Tt({state:e},{pointer:r});if(n)return{source:Ar,formId:n.id,formKey:n.key};let o=Pc({state:e,pointer:r});return o?{source:rt,resourceId:o}:null},Kh=({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=be({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},oi=({registry:e},r)=>{let{resourceId:n}=r;return!!(Array.isArray(e?.resources)?e.resources:[]).find(t=>t.resourceId===n)},ii=({state:e},r)=>Kh({state:e,registry:e.global.accountViewedRegistry},r),Jh=({state:e},r)=>oi({registry:e.global.accountViewedRegistry},r),jt=(e,r)=>!oi({registry:e.global.accountViewedRegistry},{resourceId:r.imageId}),ai=e=>e.groups.length===0?0:Math.ceil(e.groups.length/e.pageSize),li=(e,r)=>{let n=ai(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},Lo=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!jt(e,r[a]))return r[a]},Qh=({state:e})=>{let r=e.projectData?.resources?.imageGallery;return r===void 0?void 0:D(r)},Ic=({state:e})=>{let r=e.projectData?.resources?.imageGallery;if(r===void 0)return null;let n=e.global.imageGalleryNavigation??zo(),o=ai(r),a=li(r,n),t=a*r.pageSize,s=r.groups.slice(t,t+r.pageSize).map(l=>({groupId:l.id,locked:jt(e,l.variants[0]),variants:l.variants.map(c=>({variantId:c.id,imageId:c.imageId,locked:jt(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],m=l<0?-1:Math.floor(l/r.pageSize);p&&m===a&&!jt(e,p)&&(i={groupId:c.id,variantId:p.id,imageId:p.imageId,canMoveToPreviousVariant:Lo(e,c.variants,u,-1)!==void 0,canMoveToNextVariant:Lo(e,c.variants,u,1)!==void 0})}return{pageGroups:s,selection:i,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},ci=(e,r)=>!oi({registry:e.global.accountViewedRegistry},{resourceId:r.soundId}),ui=e=>e.tracks.length===0?0:Math.ceil(e.tracks.length/e.pageSize),pi=(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)},To=(e,r,n,o)=>{for(let a=n+o;a>=0&&a<r.length;a+=o)if(!ci(e,r[a]))return r[a]},wc=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}),Zh=(e,r)=>({...wc(r),locked:ci(e,r)}),Fl=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")}`},eg=({state:e})=>{let r=e.projectData?.resources?.musicRoom;return r===void 0?void 0:D(r)},vc=({state:e})=>{let r=e.projectData?.resources?.musicRoom;if(r===void 0)return null;let n=e.global.musicRoomPlayer??On(),o=ui(r),a=pi(r,n),t=a*r.pageSize,s=r.tracks.slice(t,t+r.pageSize).map(u=>Zh(e,u)),i=r.tracks.findIndex(u=>u.id===n.trackId),l=r.tracks[i],c=l?{...wc(l),canPlayPreviousTrack:To(e,r.tracks,i,-1)!==void 0,canPlayNextTrack:To(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:Fl(n.positionMs),durationText:n.durationMs===null?null:Fl(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}}},di=e=>e.replays.length===0?0:Math.ceil(e.replays.length/e.pageSize),fi=(e,r)=>{let n=di(e);if(n===0)return 0;let o=Number.isInteger(r?.pageIndex)?r.pageIndex:0;return Math.min(Math.max(o,0),n-1)},rg=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;return r===void 0?void 0:D(r)},tg=({state:e})=>ne(e)!==null,ng=({state:e})=>{let r=ne(e);return r?{sceneId:r.sceneReplay.sceneId,entryId:r.sceneReplay.entryId}:null},Ac=(e,r)=>e.global.accountReplayRegistry?.sceneIds?.includes(r)===!0,kc=({state:e})=>{let r=e.projectData?.resources?.sceneReplay;if(r===void 0)return null;let n=e.global.sceneReplayNavigation??Xo(),o=di(r),a=fi(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:!Ac(e,l.sceneId)})),i=ne(e);return{isActive:i!==null,activeSceneId:i?.sceneReplay.sceneId??null,pageReplays:s,pagination:{pageIndex:a,pageCount:o,canMoveToPreviousPage:a>0,canMoveToNextPage:a+1<o}}},sg=({state:e})=>e.global.nextLineConfig,Pc=({state:e,pointer:r}={})=>{let n=r??_e({state:e})?.pointer;if(!n)return;let o=n?.sectionId,a=n?.lineId,s=be({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},xc=({state:e})=>!!Pc({state:e}),og=({state:e})=>structuredClone(e),ig=({state:e})=>D(e.projectData.resources?.achievements??{}),ag=({state:e},r)=>{let n=e.projectData.resources?.achievements?.[r?.resourceId];return n===void 0?void 0:D(n)},Ec=({state:e})=>e.global.saveSlots,lg=({state:e},r)=>{let n=r?.slotId,o=nt(n);return Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0},Sc=({state:e})=>D(e.global.localizationPackages),mi=({state:e})=>Nr(e),cg=({state:e},r)=>br(e,r?.runtimeId),$n=({state:e})=>{let r={...e.global?.variables??{},...qr(e)?.variables??{}};return vt({variables:r,runtime:Nr(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}},be=({state:e},r)=>{let{sectionId:n}=r;return or(e.projectData,n).section},Mt=({state:e})=>{let r=_e({state:e});if(!r?.pointer)return;let{sectionId:n,lineId:o}=r.pointer,a=be({state:e},{sectionId:n});if(!(!a?.lines||!Array.isArray(a.lines)))return a.lines.find(t=>t.id===o)},Rc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=be({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(m=>{p[m]=u[m]}),p});return jr(i)},ug=e=>{let r=Mt({state:e})?.actions?.dialogue;if(r?.clear===!0||!Array.isArray(r?.content))return"";let n=$n({state:e});return r.content.map(o=>`${Wr(o?.text,{variables:n})??""}`).join("")},ir=({state:e})=>Ll({text:ug(e),baseDelay:br(e,"autoForwardDelay"),speed:br(e,"autoForwardSpeed")}),pg=({state:e})=>{let r=Oc({state:e}),o=Mt({state:e})?.actions??{},a=jr([r??{},o]);return to(r??{},a??{})},dg=({state:e},{sectionId:r})=>{let n=be({state:e},{sectionId:r});if(!n?.lines)return[];let o=[],a={};for(let t of n.lines){let s=t.actions||{},i=jr([a,s]),l=to(a,i);o.push({id:t.id,changes:l,presentationState:i}),a=no(i)}return o},fg=({state:e},{sectionId:r,includePresentationState:n=!1})=>{let o=dg({state:e},{sectionId:r});return n?{lines:o}:{lines:o.map(({presentationState:a,...t})=>t)}},Oc=({state:e})=>{let{sectionId:r,lineId:n}=_e({state:e}).pointer,a=be({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 no(jr(i))},yi=({state:e},{slotsPerPage:r=6}={})=>{let a=((mi({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[nt(i)]||{};t.push({...l,slotId:i})}return{saveSlots:t}},mg=Ec,yg=yi,hg=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},gg=({state:e},r={})=>{let n=Rc({state:e}),o=Oc({state:e}),a=Mt({state:e})?.actions??{},t=e.global.pendingScreenTransition,s=t?.animations?{...a,screen:D(t)}:a,i=t?.animations&&o===null?{}:o,{sectionId:l}=_e({state:e}).pointer,{sceneId:c}=or(e.projectData,l),u={...mi({state:e}),localizationPackages:Sc({state:e})},p=r?.activePersistentAnimations??[],m=r?.restoredPersistentAnimations??[],d=Tt({state:e}),f=xc({state:e}),y=Ic({state:e}),g=vc({state:e}),h=kc({state:e}),I=$n({state:e}),{saveSlots:b}=yi({state:e}),x=hg(e);return ml({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:f,isFormVisible:!!d,canRollback:Jc({state:e}),skipOnlyViewedLines:!u.skipUnseenText,isLineCompleted:u.isLineCompleted,skipTransitionsAndAnimations:!!u.skipTransitionsAndAnimations||x,overlayStack:e.global.overlayStack,confirmDialog:e.global.confirmDialog,form:d,dialogueHistory:bc({state:e}),saveSlots:b,variables:I,runtime:u,activePersistentAnimations:p,restoredPersistentAnimations:m,imageGallery:y,musicRoom:g,sceneReplay:h,musicRoomPlayer:D(e.global.musicRoomPlayer)})},bg=({state:e},r)=>(e.global.confirmDialog=hh(r),e.global.pendingEffects.push({name:"render"}),e),Ig=({state:e})=>(e.global.confirmDialog&&(st(e),e.global.pendingEffects.push({name:"render"})),e),wg=({state:e,rollbackActionBatchStack:r},n)=>(e.global.overlayStack.push(n),e.global.pendingEffects.push({name:"render"}),We(e,"pushOverlay",n,r),e),vg=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack.pop(),e.global.pendingEffects.push({name:"render"}),We(e,"popOverlay",void 0,r),e),Ag=({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),kg=({state:e,rollbackActionBatchStack:r})=>(e.global.overlayStack=[],st(e),ot(e),e.global.pendingEffects.push({name:"render"}),We(e,"clearOverlays",void 0,r),e),Pg=(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"})},qt=(e,r,{screenTransition:n}={})=>{e.global.isLineCompleted=!1,bh(e,n),ot(e);let o=ve({state:e},{pointer:r}),a=o?.source===rt,t=o?.source===Ar;Pg(e,{activeInteraction:o});let s=ne(e),i={name:"handleLineActions"};if(typeof s?.sceneReplay?.sceneId=="string"){let l=Bl(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}},_n=(e,r,n)=>{!(r?.source===rt||r?.source===Ar)||n||!e.global.skipMode||e.global.pendingEffects.push({name:"startSkipNextTimer"})},Cc=({state:e})=>(ve({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:ir({state:e})}}),e.global.pendingEffects.push({name:"render"})),e),Vt=({state:e})=>(e.global.autoMode=!1,e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.pendingEffects.push({name:"render"}),e),xg=({state:e})=>{let r=e.global.autoMode;return ve({state:e})&&!r||(r?Vt({state:e}):Cc({state:e})),e},$c=({state:e})=>(ve({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),Eg=({state:e})=>{let r=hc({state:e});return ve({state:e})&&!r||(r?kr({state:e}):$c({state:e})),e},jn=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!1,e.global.pendingEffects.push({name:"render"}),We(e,"showDialogueUI",void 0,r),e),_c=({state:e,rollbackActionBatchStack:r})=>(e.global.dialogueUIHidden=!0,e.global.pendingEffects.push({name:"render"}),We(e,"hideDialogueUI",void 0,r),e),Sg=e=>{let{state:r}=e;return gc({state:r})?jn(e):_c(e),r},xr=(e,r,n)=>(ti(e,r,n),fc(e),e.global.pendingEffects.push({name:"render"}),e),Ft=(e,r,n,o,a)=>{let t=ti(e,r,n);return e.global.pendingEffects.push({name:"render"}),We(e,o,{value:t},a),e},Rg=({state:e},r)=>xr(e,"dialogueTextSpeed",r?.value),Og=({state:e},r)=>(xr(e,"autoForwardDelay",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!ve({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e),Cg=({state:e},r)=>(xr(e,"autoForwardSpeed",r?.value),e.global.autoMode&&e.global.isLineCompleted&&!ve({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e),$g=({state:e},r)=>xr(e,"skipUnseenText",r?.value),_g=({state:e},r)=>xr(e,"skipTransitionsAndAnimations",r?.value),jg=({state:e},r)=>xr(e,"soundVolume",r?.value),Ng=({state:e},r)=>xr(e,"musicVolume",r?.value),Dg=({state:e},r)=>xr(e,"muteAll",r?.value),Mo=({state:e,rollbackActionBatchStack:r},n)=>Ft(e,"saveLoadPagination",n?.value,"setSaveLoadPagination",r),qo=({state:e,rollbackActionBatchStack:r})=>{let n=br(e,"saveLoadPagination")+1;return Ft(e,"saveLoadPagination",n,"incrementSaveLoadPagination",r),e},Vo=({state:e,rollbackActionBatchStack:r})=>{let n=br(e,"saveLoadPagination")-1;return Ft(e,"saveLoadPagination",n,"decrementSaveLoadPagination",r),e},Fo=({state:e,rollbackActionBatchStack:r},n)=>Ft(e,"menuPage",n?.value,"setMenuPage",r),Uo=({state:e,rollbackActionBatchStack:r},n)=>Ft(e,"menuEntryPoint",n?.value,"setMenuEntryPoint",r),Lg=({state:e})=>(e.global.pendingEffects=[],e),Tg=({state:e},r)=>(e.global.pendingEffects.push(r),e),Mg=({state:e},r)=>{if(ne(e))return e;let n=r?.resourceId;return Yl(e,n),e.global.pendingEffects.push({name:"completeAchievement",payload:{resourceId:n}}),e},qg=({state:e},r)=>{if(ne(e))return e;let n=r?.resourceId,o=Yl(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},jc=(e,{sectionId:r,resetStoryState:n=!1,screen:o})=>{let a=!!ac(o),t=be({state:e},{sectionId:r});if(!t)return console.warn(`Section not found: ${r}`),e;let s=t.lines?.[0];if(!s)return console.warn(`Section ${r} has no lines`),e;if(n&&!_h(e,{queueRender:!a}))return e;let i=ve({state:e});n&&e.global.skipMode&&kr({state:e});let l=e.contexts?.[e.contexts.length-1];if(l){let u=it(l),p=u.read;n||Mr(e,{sectionId:p?.sectionId,lineId:p?.lineId}),l.rollback||Pr(l,{compatibilityAnchor:!0}),u.read={sectionId:r,lineId:s.id},n?l.rollback=Nt({pointer:u.read}):si(e,{sectionId:r,lineId:s.id})}let{activeInteraction:c}=qt(e,l?.pointers?.read,{screenTransition:o});return _n(e,i,c),e},Vg=({state:e},r)=>{if(ne(e))throw new Error("Cannot reset the story while a scene replay is active");return jc(e,{sectionId:r?.sectionId,resetStoryState:!0,screen:r?.screen})},Nc=e=>(e.global.accountViewedRegistry=By(e.global.accountViewedRegistry),e.global.accountViewedRegistry),Nn=(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:D(n.value)}))}})},Dc=(e,r)=>{Nn(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:[]}}])},Fg=(e,r,{sectionId:n,lineId:o})=>{if(!n||!o)return!1;let a=L(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=be({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},Mr=(e,r)=>{if(ne(e)||e.global.accountViewedRegistry===void 0)return;Fg(e,Nc(e),r)&&Dc(e,{sections:[{sectionId:r.sectionId,lastLineId:r.lineId}],resources:[]})},Ug=({state:e},r)=>(Mr(e,r),e.global.pendingEffects.push({name:"render"}),e),Bg=({state:e},r)=>{if(ne(e))return e;let{resourceId:n}=r;if(e.global.accountViewedRegistry!==void 0){let o=Nc(e);o.resources.find(t=>t.resourceId===n)||(o.resources.push({resourceId:n}),Dc(e,{sections:[],resources:[{resourceId:n}]}))}return e.global.pendingEffects.push({name:"render"}),e},Ke=(e,r,n)=>{if(!L(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}"`)})},Bo=(e,r,n)=>{if(typeof n!="string"||n.length===0)throw new Error(`${e} requires a non-empty ${r}`)},Dn=(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"}))},Yg=({state:e},r)=>{let n="showImageGalleryVariant";Ke(n,r,Ly),Bo(n,"groupId",r.groupId),Object.prototype.hasOwnProperty.call(r,"variantId")&&Bo(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||jt(e,s)||Dn(e,{groupId:t.id,variantId:s.id,pageIndex:Math.floor(a/o.pageSize)}),e},Lc=(e,r,n,o)=>{Ke(o,r,Go);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=Lo(e,s.variants,i,n);return l&&Dn(e,{...t,variantId:l.id}),e},zg=({state:e},r)=>Lc(e,r,-1,"moveToPreviousImageGalleryVariant"),Gg=({state:e},r)=>Lc(e,r,1,"moveToNextImageGalleryVariant"),Hg=({state:e},r)=>{if(Ke("clearImageGallerySelection",r,Go),e.projectData?.resources?.imageGallery===void 0)return e;let o=e.global.imageGalleryNavigation;return Dn(e,{groupId:null,variantId:null,pageIndex:o.pageIndex}),e},Tc=(e,r)=>{let n=e.projectData?.resources?.imageGallery;if(n===void 0)return e;let o=ai(n);if(r>=o)return e;let a=e.global.imageGalleryNavigation,t=li(n,a);return r===t||Dn(e,{groupId:null,variantId:null,pageIndex:r}),e},Xg=({state:e},r)=>{if(Ke("moveToImageGalleryPage",r,Ty),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToImageGalleryPage requires a non-negative integer pageIndex");return Tc(e,r.pageIndex)},Mc=(e,r,n,o)=>{Ke(o,r,Go);let a=e.projectData?.resources?.imageGallery;if(a===void 0)return e;let s=li(a,e.global.imageGalleryNavigation)+n;return s<0?e:Tc(e,s)},Wg=({state:e},r)=>Mc(e,r,1,"moveToNextImageGalleryPage"),Kg=({state:e},r)=>Mc(e,r,-1,"moveToPreviousImageGalleryPage"),ar=(e,r,n)=>{if(!L(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}"`)})},Jg=(e,r)=>{if(typeof r!="string"||r.length===0)throw new Error(`${e} requires a non-empty trackId`)},Ge=e=>{e.global.pendingEffects.push({name:"render"})},qc=(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:Cn(e),operation:"pause"});let i=Lt(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},Ge(e)},Qg=({state:e},r)=>{let n="playMusicRoomTrack";ar(n,r,My),Jg(n,r.trackId);let a=e.projectData?.resources?.musicRoom?.tracks.find(t=>t.id===r.trackId);return!a||ci(e,a)||qc(e,a),e},Zg=({state:e},r)=>{ar("playMusicRoom",r,tt);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=Lt(e,s,s==="play"?i:void 0),o.seekFallback=null,o.status="playing",o.positionMs=i,t&&(o.readiness=o.durationMs===null?"loading":"ready"),Ge(e),e},eb=({state:e},r)=>{ar("pauseMusicRoom",r,tt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status!=="playing"||(o.playback=Lt(e,"pause"),o.seekFallback=null,o.status="paused",Ge(e)),e},rb=({state:e},r)=>{ar("stopMusicRoom",r,tt);let o=e.global.musicRoomPlayer;return o.trackId===null||o.status==="stopped"&&o.positionMs===0||(o.playback=Lt(e,"stop"),o.seekFallback=null,o.status="stopped",o.positionMs=0,Ge(e)),e},tb=({state:e},r)=>{if(ar("seekMusicRoom",r,qy),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=Lt(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"),Ge(e),e},Vc=(e,r,n,o)=>{ar(o,r,tt);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=To(e,a.tracks,s,n);return i&&qc(e,i),e},nb=({state:e},r)=>Vc(e,r,-1,"playPreviousMusicRoomTrack"),sb=({state:e},r)=>Vc(e,r,1,"playNextMusicRoomTrack"),ob=({state:e},r)=>{ar("clearMusicRoomSelection",r,tt);let o=e.global.musicRoomPlayer;if(o.trackId===null)return e;let a=o.pageIndex,t={commandId:Cn(e),operation:"resume"};return e.global.musicRoomPlayer={...On({bgmPlayback:t}),pageIndex:a},Ge(e),e},Fc=(e,r)=>{let n=e.projectData?.resources?.musicRoom;if(!n||r>=ui(n))return e;let o=e.global.musicRoomPlayer,a=pi(n,o);return r===a||(o.pageIndex=r,Ge(e)),e},ib=({state:e},r)=>{if(ar("moveToMusicRoomPage",r,Vy),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToMusicRoomPage requires a non-negative integer pageIndex");return Fc(e,r.pageIndex)},Uc=(e,r,n,o)=>{ar(o,r,tt);let a=e.projectData?.resources?.musicRoom;if(!a)return e;let t=pi(a,e.global.musicRoomPlayer)+n;return t<0?e:Fc(e,t)},ab=({state:e},r)=>Uc(e,r,1,"moveToNextMusicRoomPage"),lb=({state:e},r)=>Uc(e,r,-1,"moveToPreviousMusicRoomPage"),Tr=e=>{let r=ne(e);if(!r)return!1;if(e.contexts.length<2)throw new Error("Scene replay context has no caller context to restore");let n=D(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(),Oh(e,n),e.global.pendingEffects.push({name:"render"}),!0},cb=({state:e},r)=>{let n="startSceneReplay";if(Ke(n,r,Fy),Bo(n,"sceneId",r.sceneId),ne(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||!Ac(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=Sh(e);Rh(e);let u=ni({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 dc(e,u),e.contexts.push(u),qt(e,u.pointers.read),e},Bc=({state:e},r)=>{Ke("finishSceneReplay",r,Ho);let o=ne(e);if(o)return o.sceneReplay.finishOnNextAdvance=!0,e;if(qr(e)?.rollback?.isRestoring===!0)return e;let t=_e({state:e})?.pointer,{sceneId:s}=or(e.projectData,t?.sectionId);return!(typeof s=="string"&&e.projectData?.resources?.sceneReplay?.replays?.some(l=>l.sceneId===s))||(e.global.accountReplayRegistry=Yy(e.global.accountReplayRegistry),e.global.accountReplayRegistry.sceneIds.includes(s))||(e.global.accountReplayRegistry.sceneIds.push(s),Nn(e,[{scope:"account",path:"replayRegistry",op:"unlock",value:{sceneIds:[s]}}]),e.global.pendingEffects.push({name:"render"})),e},ub=({state:e},r)=>(Ke("exitSceneReplay",r,Ho),Tr(e),e),Yc=(e,r)=>{let n=e.projectData?.resources?.sceneReplay;if(!n||r>=di(n))return e;let o=fi(n,e.global.sceneReplayNavigation);return r===o||(e.global.sceneReplayNavigation.pageIndex=r,e.global.pendingEffects.push({name:"render"})),e},pb=({state:e},r)=>{if(Ke("moveToSceneReplayPage",r,Uy),!Number.isInteger(r.pageIndex)||r.pageIndex<0)throw new Error("moveToSceneReplayPage requires a non-negative integer pageIndex");return Yc(e,r.pageIndex)},zc=(e,r,n,o)=>{Ke(o,r,Ho);let a=e.projectData?.resources?.sceneReplay;if(!a)return e;let t=fi(a,e.global.sceneReplayNavigation)+n;return t<0?e:Yc(e,t)},db=({state:e},r)=>zc(e,r,1,"moveToNextSceneReplayPage"),fb=({state:e},r)=>zc(e,r,-1,"moveToPreviousSceneReplayPage"),Ln=(e,r)=>{let n=e.global.musicRoomPlayer;return!L(r)||r.id!==Ny||n.trackId===null||!n.playback||r.commandId!==n.playback.commandId?null:n},hi=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,Gc=(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,Ge(e)),e),mb=({state:e},r)=>{let n=Ln(e,r);return!n||n.readiness!=="loading"||!hi(r)?e:Gc(e,n,r,{readiness:"ready"})},yb=({state:e},r)=>{let n=Ln(e,r);return!n||n.readiness!=="ready"||!hi(r)||n.status==="stopped"&&r.positionMs!==0||n.status==="ended"&&r.positionMs!==r.durationMs?e:Gc(e,n,r)},hb=({state:e},r)=>{let n=Ln(e,r);return!n||n.readiness!=="ready"||n.status!=="playing"||!hi(r)||r.positionMs!==r.durationMs||(n.status="ended",n.positionMs=r.positionMs,n.durationMs=r.durationMs,n.seekFallback=null,Ge(e)),e},gb=({state:e},r)=>{let n=Ln(e,r);if(!n||typeof r.errorCode!="string"||!Dy.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&&Ge(e),e}return n.readiness="error",n.status="stopped",n.positionMs=0,n.seekFallback=null,Ge(e),e},Hc=({state:e,rollbackActionBatchStack:r},n)=>{let o=Ky(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,m=e.global.nextLineConfig.auto?.trigger,d=e.global.nextLineConfig.auto?.delay,f=ve({state:e});return!u&&(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},bb=({state:e},r)=>{if(ne(e))throw new Error("Cannot save while a scene replay is active");let n=r?.slotId;zl(n,"saveSlot");let{thumbnailImage:o}=r,a=r?.savedAt,t=nt(n),s=D(e.contexts);s?.forEach(c=>{it(c),mc(c.rollback),eh(c.rollback,e.projectData)});let i={contexts:s},l={formatVersion:Ul,slotId:Kl(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},Ib=({state:e},r)=>{if(ne(e))throw new Error("Cannot load while a scene replay is active");let n=r?.slotId;zl(n,"loadSlot");let o=nt(n),a=Object.prototype.hasOwnProperty.call(e.global.saveSlots??{},o)?e.global.saveSlots[o]:void 0;if(a){let t=yh(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=Dt(),e.global.overlayStack=[],e.global.isLineCompleted=!0,st(e),ot(e),Ko(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"},{name:"clearSkipNextTimer"},{name:"clearNextLineConfigTimer"},{name:"render"})}return e},wb=({state:e},r)=>{if(ne(e))throw new Error("Cannot update project data while a scene replay is active");let{projectData:n}=r;Wl(n),gt(n),bt(n),It(n),_r(n?.resources?.variables??{}),lo(n);let o=nh(n),a=o?e.contexts?.map((t,s)=>ic(D(t),n,s)):void 0;if(e.projectData=n,e.global.imageGalleryNavigation=zo(),e.global.sceneReplayNavigation=Xo(),Ko(e),o){let t=n?.resources?.variables??{},{globalVariablesDefaultValues:s}=pn(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},vb=({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(!L(o))throw new Error("updateLocalizationPackage requires resolved projectData internally");return e.projectData=o,ti(e,"localizationPackageId",n),fc(e),e.global.pendingEffects.push({name:"clearAutoNextTimer"}),e.global.autoMode&&e.global.isLineCompleted&&!ve({state:e})&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e.global.pendingEffects.push({name:"render"}),e},Ab=({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&&!be({state:e},{sectionId:n}))return console.warn(`Section not found: ${n}`),e;let s=be({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=ve({state:e}),c=it(a);c.read={sectionId:t,lineId:o};let{activeInteraction:u}=qt(e,c.read);return _n(e,l,u),e},kb=({state:e,rollbackActionBatchStack:r},n)=>{if(!e.global.nextLineConfig.manual.enabled)return e;if(e.global.dialogueUIHidden)return jn({state:e,rollbackActionBatchStack:r}),e;let o=ve({state:e});if(o?.source===rt&&n?.bypassChoice!==!0||o?.source===Ar&&n?._interactionSource!==Ar)return e;if(!e.global.isLineCompleted){if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,ne(e)?.sceneReplay.exitOnLineCompleted)return Tr(e),e;let d=_e({state:e})?.pointer,f=d?.sectionId,y=d?.lineId;f&&y&&Mr(e,{sectionId:f,lineId:y}),e.global.pendingEffects.push({name:"clearNextLineConfigTimer"}),e.global.autoMode&&!o&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}});let g=e.global.nextLineConfig,h=be({state:e},{sectionId:f});return Array.isArray(h?.lines)&&h.lines.at(-1)?.id===y?Do(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(ne(e)?.sceneReplay.finishOnNextAdvance)return Tr(e),e;let t=_e({state:e})?.pointer,s=t?.sectionId,i=be({state:e},{sectionId:s}),l=e.contexts[e.contexts.length-1],c=i?.lines||[],p=c.findIndex(m=>m.id===t?.lineId)+1;if(p<c.length){let m=c[p],d=!br(e,"skipUnseenText");if(e.global.skipMode&&d&&!ii({state:e},{sectionId:s,lineId:m.id}))return kr({state:e}),e;if(l&&!l.rollback&&Pr(l,{compatibilityAnchor:!0}),l){let y=it(l),g=y.read?.lineId;g&&s&&Mr(e,{sectionId:s,lineId:g}),y.read={sectionId:s,lineId:m.id}}si(e,{sectionId:s,lineId:m.id}),Wo(e);let{activeInteraction:f}=qt(e,{sectionId:s,lineId:m.id});_n(e,o,f)}else{if(ne(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Tr(e),e;e.global.autoMode&&Vt({state:e}),e.global.skipMode&&kr({state:e}),Do(e)}return e},Pb=({state:e})=>{if(e.global.isLineCompleted)return e;if(e.global.isLineCompleted=!0,delete e.global.pendingScreenTransition,ne(e)?.sceneReplay.exitOnLineCompleted)return Tr(e),e;let n=ve({state:e});e.global.autoMode&&!n&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}});let o=_e({state:e})?.pointer,a=o?.sectionId,t=o?.lineId;a&&t&&Mr(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},xb=({state:e},r)=>jc(e,{sectionId:r?.sectionId,screen:r?.screen}),Eb=({state:e,rollbackActionBatchStack:r},n)=>{let o=n?._conditionalContinuation===!0;if(e.global.dialogueUIHidden&&!o)return jn({state:e,rollbackActionBatchStack:r}),e.global.autoMode&&e.global.pendingEffects.push({name:"startAutoNextTimer",payload:{delay:ir({state:e})}}),e;let a=ve({state:e});if(a?.source===rt&&n?.bypassChoice!==!0||a?.source===Ar&&n?._interactionSource!==Ar||a&&a.source!==rt&&a.source!==Ar)return e;let t=ne(e);if(t?.sceneReplay.finishOnNextAdvance)return e.global.isLineCompleted?(Tr(e),e):(t.sceneReplay.exitOnLineCompleted=!0,e);let s=_e({state:e})?.pointer,i=s?.sectionId,l=be({state:e},{sectionId:i}),c=e.contexts[e.contexts.length-1],u=l?.lines||[],m=u.findIndex(d=>d.id===s?.lineId)+1;if(m<u.length){let d=u[m],f=!br(e,"skipUnseenText");if(e.global.skipMode&&f&&!ii({state:e},{sectionId:i,lineId:d.id})&&(kr({state:e}),!o))return e;if(c&&!c.rollback&&Pr(c,{compatibilityAnchor:!0}),c){let g=it(c),h=g.read?.lineId;h&&i&&Mr(e,{sectionId:i,lineId:h}),g.read={sectionId:i,lineId:d.id}}si(e,{sectionId:i,lineId:d.id}),Wo(e);let{activeInteraction:y}=qt(e,{sectionId:i,lineId:d.id});_n(e,a,y)}else{if(ne(e))return console.warn("Scene replay reached the end of a section without finishSceneReplay; exiting replay."),Tr(e),e;e.global.autoMode&&Vt({state:e}),e.global.skipMode&&kr({state:e}),Do(e)}return e},gi=(e,r={})=>{let n=Tt({state:e});return!n||r.formKey&&r.formKey!==n.key||r.formId&&r.formId!==n.id?null:n},Sb=(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(At(o,r.variableId),kt(a,"set",r.variableId),ne(e)&&o!=="context")throw new Error(`Cannot update ${o}-scoped variable "${r.variableId}" while a scene replay is active`);return{variableConfig:n,scope:o}},Rb=(e,r)=>({id:e.id,key:e.key,valid:!0,values:D(r),fields:D(e.fields),fieldList:D(e.fieldList)}),Ob=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&&Mr(e,{sectionId:n,lineId:o})},Cb=({state:e},r={})=>{let n=gi(e,r),o=r.field;if(!n?.fields?.[o])return e;let a=cc(e,n.key),t=Sn(r.value),s=n.fields[o],i=ei(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},$b=({state:e,rollbackActionBatchStack:r},n={})=>{let o=gi(e,n);if(!o)return{submitted:!1,valid:!1,reason:"inactive"};let a=cc(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=ei(d,f);a.touched[m]=!0,y&&(s[m]=y),t[m]=lc(d,f)}),a.errors=s,Object.keys(s).length>0)return e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!1,errors:D(s),form:{id:o.id,key:o.key,values:D(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(([m,d])=>{let{scope:f}=Sb(e,d),y=f==="context"?i.variables:e.global.variables,g=t[m];y[d.variableId]=fn(y[d.variableId],"set",g),f==="context"&&(l=!0,u.push({variableId:d.variableId,op:"set",value:g})),(f==="device"||f==="account")&&c.push({scope:f,path:`variables.${d.variableId}`,op:"set",value:D(y[d.variableId])})}),l&&We(e,"updateVariable",{id:"submitForm",operations:u},r),Nn(e,c);let p=Rb(o,t);return Ob(e),delete e.global.formDrafts[o.key],e.global.pendingEffects.push({name:"render"}),{submitted:!0,valid:!0,form:p}},_b=({state:e},r={})=>{let n=gi(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:D(n.values),fields:D(n.fields),fieldList:D(n.fieldList)}}):{cancelled:!1,reason:"inactive"}},jb=({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:m})=>{let d=e.projectData.resources?.variables?.[c],f=d?.scope,y=d?.type;if($e(d))throw new Error(`Cannot update computed variable: ${c}`);if(d?.readonly===!0)throw new Error(`Cannot update readonly variable: ${c}`);if(At(f,c),kt(y,u,c),dn(y,u,p,c,{roundTo:m}),ne(e)&&f!=="context")throw new Error(`Cannot update ${f}-scoped variable "${c}" while a scene replay is active`);let g=f==="context"?t.variables:e.global.variables;if(f==="context"){s=!0;let h={variableId:c,op:u,value:p};m!==void 0&&(h.roundTo=m),l.push(h)}g[c]=fn(g[c],u,p,{roundTo:m}),(f==="device"||f==="account")&&i.push({scope:f,path:`variables.${c}`,op:"set",value:D(g[c])})}),s&&We(e,"updateVariable",{id:o,operations:l},r),Nn(e,i),e.global.pendingEffects.push({name:"render"}),e},Ve=e=>(r,n)=>e({state:r},n),Nb=e=>({variables:vt({variables:{...e.global?.variables??{},...qr(e)?.variables??{}},runtime:Nr(e),variableConfigs:e.projectData.resources?.variables??{},eager:!1}),runtime:Nr(e)}),Db=e=>{if(!L(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")},Lb=(e,r,n)=>{if(!L(e))throw new Error(`conditional branch at index ${r} must be an object`);if(!L(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")},Tb=(e,r)=>{Db(r);for(let n=0;n<r.branches.length;n+=1){let o=r.branches[n];if(Lb(o,n,r.branches.length),!(Object.prototype.hasOwnProperty.call(o,"when")&&!ht(o.when,Nb(e)))){Object.entries(o.actions).forEach(([t,s])=>{Xc(e,t,s)});return}}},Mb={conditional:{replayLine:Tb},updateVariable:{recordSources:[vr],replayLine:Vl,replayRecorded:Vl,persistInSaveSlot:!0},setNextLineConfig:{replayLine:Ve(Hc)},setSaveLoadPagination:{recordSources:[vr],replayLine:Ve(Mo),replayRecorded:Ve(Mo),persistInSaveSlot:!0},incrementSaveLoadPagination:{recordSources:[vr],replayLine:Ve(qo),replayRecorded:Ve(qo),persistInSaveSlot:!0},decrementSaveLoadPagination:{recordSources:[vr],replayLine:Ve(Vo),replayRecorded:Ve(Vo),persistInSaveSlot:!0},setMenuPage:{recordSources:[vr],replayLine:Ve(Fo),replayRecorded:Ve(Fo),persistInSaveSlot:!0},setMenuEntryPoint:{recordSources:[vr],replayLine:Ve(Uo),replayRecorded:Ve(Uo),persistInSaveSlot:!0},finishSceneReplay:{replayLine:Ve(Bc)}},Tn=e=>Mb[e]??null,qb=e=>Tn(e)?.persistInSaveSlot===!0,Vb=(e,r)=>{let n=Tn(e)?.recordSources;return Array.isArray(n)&&n.includes(r)},Fb=(e,r,n)=>{Tn(r)?.replayRecorded?.(e,n)},Xc=(e,r,n)=>{Tn(r)?.replayLine?.(e,n)},Ub=e=>e?.returnable!==!1,Wc=(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(Ub(e.timeline[o])&&(n-=1,n===0))return o;return-1},Kc=({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=Wc(a,n);if(t<0||t>=a.timeline.length)return null;let s=a.timeline[t];return{sectionId:s.sectionId,lineId:s.lineId}},Jc=({state:e})=>Kc({state:e},{offset:-1})!==null,Bb=({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=Pr(o,{compatibilityAnchor:!o.rollback}),t=Wc(a,n);return t<0||t>=a.timeline.length?e:yc(e,t)},Yb=({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=Pr(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:yc(e,i)},Qc=e=>{let r=Uh(e),n=[];return da(r,{selectPendingEffects:Yh,selectSkipMode:hc,selectAutoMode:zh,selectIsChoiceVisible:xc,selectIsFormVisible:Wh,selectActiveInteraction:ve,selectActiveForm:Tt,selectDialogueUIHidden:gc,selectDialogueHistory:bc,selectConfirmDialog:Xh,selectIsLineAccountViewed:ii,selectIsResourceAccountViewed:Jh,selectImageGalleryConfig:Qh,selectImageGallery:Ic,selectMusicRoomConfig:eg,selectMusicRoom:vc,selectSceneReplayConfig:rg,selectSceneReplay:kc,selectIsSceneReplayActive:tg,selectActiveSceneReplayEntry:ng,selectNextLineConfig:sg,selectSystemState:og,selectAchievements:ig,selectAchievement:ag,selectSaveSlotMap:Ec,selectSaveSlots:mg,selectSaveSlot:lg,selectLocalizationPackages:Sc,selectRuntime:mi,selectRuntimeValue:cg,selectAllVariables:$n,selectCurrentPointer:_e,selectSection:be,selectCurrentLine:Mt,selectPresentationState:Rc,selectAutoForwardTimerDelay:ir,selectPresentationChanges:pg,selectSectionLineChanges:fg,selectSaveSlotPage:yi,selectCurrentPageSlots:yg,selectRenderState:gg,selectOverlayStack:Bh,selectLineIdByOffset:Kc,selectCanRollback:Jc,selectRollbackCursor:Nh,startAutoMode:Cc,stopAutoMode:Vt,toggleAutoMode:xg,startSkipMode:$c,stopSkipMode:kr,toggleSkipMode:Eg,showDialogueUI:jn,hideDialogueUI:_c,toggleDialogueUI:Sg,setDialogueTextSpeed:Rg,setAutoForwardDelay:Og,setAutoForwardSpeed:Cg,setSkipUnseenText:$g,setSkipTransitionsAndAnimations:_g,setSoundVolume:jg,setMusicVolume:Ng,setMuteAll:Dg,setSaveLoadPagination:Mo,incrementSaveLoadPagination:qo,decrementSaveLoadPagination:Vo,setMenuPage:Fo,setMenuEntryPoint:Uo,showConfirmDialog:bg,hideConfirmDialog:Ig,resetStoryAtSection:Vg,clearPendingEffects:Lg,appendPendingEffect:Tg,completeAchievement:Mg,setAchievementProgress:qg,beginRollbackActionBatch:Mh,endRollbackActionBatch:qh,markRollbackCheckpointTransient:Dh,markSavedRollbackCheckpointTransient:Lh,recordCurrentDialogueHistory:Hh,addViewedLine:Ug,addViewedResource:Bg,showImageGalleryVariant:Yg,moveToPreviousImageGalleryVariant:zg,moveToNextImageGalleryVariant:Gg,clearImageGallerySelection:Hg,moveToImageGalleryPage:Xg,moveToNextImageGalleryPage:Wg,moveToPreviousImageGalleryPage:Kg,playMusicRoomTrack:Qg,playMusicRoom:Zg,pauseMusicRoom:eb,stopMusicRoom:rb,seekMusicRoom:tb,playPreviousMusicRoomTrack:nb,playNextMusicRoomTrack:sb,clearMusicRoomSelection:ob,moveToMusicRoomPage:ib,moveToNextMusicRoomPage:ab,moveToPreviousMusicRoomPage:lb,musicRoomSoundReady:mb,musicRoomSoundProgress:yb,musicRoomSoundComplete:hb,musicRoomSoundError:gb,startSceneReplay:cb,finishSceneReplay:Bc,exitSceneReplay:ub,moveToSceneReplayPage:pb,moveToNextSceneReplayPage:db,moveToPreviousSceneReplayPage:fb,setNextLineConfig:Hc,saveSlot:bb,loadSlot:Ib,updateProjectData:wb,updateLocalizationPackage:vb,sectionTransition:xb,jumpToLine:Ab,nextLine:kb,markLineCompleted:Pb,rollbackToLine:Yb,rollbackByOffset:Bb,pushOverlay:wg,popOverlay:vg,replaceLastOverlay:Ag,clearOverlays:kg,updateFormField:Cb,submitForm:$b,cancelForm:_b,updateVariable:jb,nextLineFromSystem:Eb},{transformActionFirstArgument:a=>({state:a,rollbackActionBatchStack:n}),transformSelectorFirstArgument:a=>({state:a})})};var zb="route-engine",Gb="projectPersistence";var eu=()=>({saveSlots:{},globalDeviceVariables:{},globalAccountVariables:{},globalRuntime:{},accountViewedRegistry:{},accountReplayRegistry:{}}),ae=e=>Object.prototype.toString.call(e)==="[object Object]",Zc="variables.",Hb=(e={})=>{let r=ae(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!ae(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)}:!ae(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},Xb=(e={})=>{let r=ae(e)?e:{};return{sections:(Array.isArray(r.sections)?r.sections:[]).map(n=>typeof n=="string"||typeof n=="number"?{sectionId:String(n)}:!ae(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)}:!ae(n)||typeof n.resourceId!="string"||n.resourceId.length===0?null:{resourceId:n.resourceId}).filter(Boolean)}},Wb=(e,r)=>{let n=Xb(e),o=Hb(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}},Kb=(e={})=>{let r=ae(e)?e:{},n=Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set(n.filter(o=>typeof o=="string"&&o.length>0))]}},Jb=(e,r)=>{let n=Kb(e),o=ae(r)&&Array.isArray(r.sceneIds)?r.sceneIds:[];return{sceneIds:[...new Set([...n.sceneIds,...o.filter(a=>typeof a=="string"&&a.length>0)])]}},ru=(e={})=>{let r=ae(e)?e:{};return{saveSlots:ae(r.saveSlots)?r.saveSlots:{},globalDeviceVariables:ae(r.globalDeviceVariables)?r.globalDeviceVariables:{},globalAccountVariables:ae(r.globalAccountVariables)?r.globalAccountVariables:{},globalRuntime:ae(r.globalRuntime)?r.globalRuntime:{},accountViewedRegistry:ae(r.accountViewedRegistry)?r.accountViewedRegistry:{},accountReplayRegistry:ae(r.accountReplayRegistry)?r.accountReplayRegistry:{}}},Qb=(e=[])=>{if(e===void 0)return[];if(!Array.isArray(e))throw new Error("applyScopedDataUpdates requires an updates array.");return e.map((r,n)=>{if(!ae(r))throw new Error(`Malformed applyScopedDataUpdates.updates[${n}] entry.`);let o=r.path?.startsWith(Zc)?r.path.slice(Zc.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(!ae(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}].`)})},Zb=(e,r)=>{let n={};return Qb(r).forEach(o=>{if(o.path==="viewedRegistry"){n.accountViewedRegistry=Wb(n.accountViewedRegistry??e.accountViewedRegistry,o.value);return}if(o.path==="replayRegistry"){n.accountReplayRegistry=Jb(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},eI=e=>{let r=at(e);if(!r)throw new Error("createIndexedDbPersistence requires a non-empty namespace.");return r},rI=e=>{let r=e??globalThis.indexedDB;if(!r)throw new Error("IndexedDB is not available in this environment.");return r},tI=({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}".`))}}),nI=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.`))}})},Ut=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))},m=()=>{u||(u=!0,t())};c.onerror=()=>{p(c.error??new Error(`Failed to read persisted namespace "${n}" before updating IndexedDB.`))},c.onsuccess=()=>{let d=ru(c.result),f=typeof o=="function"?o(d):o,y={namespace:n,version:1,...eu(),...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}".`))}})},sI=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=m=>{c||(c=!0,t(m))},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}".`))}})},bi=(e={})=>{let{indexedDB:r,databaseName:n=zb,objectStoreName:o=Gb,namespace:a}=e,t=rI(r),s=eI(a),i=tI({indexedDB:t,databaseName:n,objectStoreName:o});return{namespace:s,load:async()=>{let l=await nI({databasePromise:i,objectStoreName:o,namespace:s});return{...eu(),...ru(l)}},clear:async()=>sI({databasePromise:i,objectStoreName:o,namespace:s}),saveSlots:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{saveSlots:ae(l)?l:{}}}),saveGlobalDeviceVariables:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalDeviceVariables:ae(l)?l:{}}}),saveGlobalAccountVariables:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalAccountVariables:ae(l)?l:{}}}),saveGlobalRuntime:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:{globalRuntime:ae(l)?l:{}}}),applyScopedDataUpdates:async l=>Ut({databasePromise:i,objectStoreName:o,namespace:s,patch:c=>Zb(c,l)})}},oI=bi;var cu=uu;var iI={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},lr=Object.prototype.hasOwnProperty,aI={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 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:aI.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 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 lI={type:"object",properties:{continuity:{type:"string",enum:["render","persistent"]},speed:{type:"number",exclusiveMinimum:0},loop:{type:"boolean"}},additionalProperties:!1};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==="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:lI.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 qn.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.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&&(qn(e.playback,{instancePath:r+"/playback",parentData:e,parentDataProperty:"playback",rootData:a})||(t=t===null?qn.errors:t.concat(qn.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 Q.errors=t,s===0}function Vn(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(!lr.call(iI.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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Vn.errors=t,s===0}function uu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Vn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Vn.errors:t.concat(Vn.errors),s=t.length),uu.errors=t,s===0}var pu=du;var cI={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},su={type:"object",properties:{id:{type:"string",minLength:1},resourceId:{type:"string",minLength:1},loop:{type:"boolean"},volume:{type:"number",minimum:0,maximum:100},muted:{type:"boolean"},pan:{type:"number",minimum:-1,maximum:1},startDelayMs:{type:"number",minimum:0},playbackRate:{type:"number",minimum:0},startAt:{type:"number",minimum:0},endAt:{type:["number","null"],minimum:0}},required:["id","resourceId"],additionalProperties:!1},Ne=nu().default;function je(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(!lr.call(su.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(Ne(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(Ne(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:su.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 je.errors=t,s===0}function Fn(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 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 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=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 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++)je(d[y],{instancePath:r+"/sounds/"+y,parentData:d,parentDataProperty:y,rootData:a})||(t=t===null?je.errors:t.concat(je.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:cI.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 Fn.errors=t,s===0}function du(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Fn(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Fn.errors:t.concat(Fn.errors),s=t.length),du.errors=t,s===0}var fu=mu;var uI={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 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 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],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/"+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(!lr.call(uI.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 I=y[h];if(I&&typeof I=="object"&&!Array.isArray(I)){for(let b in I)if(!(b==="id"||b==="resourceId"||b==="animationName"||b==="animationSpeed"||b==="loop")){let x={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=[x]:t.push(x),s++}if(I.id!==void 0&&typeof I.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(I.resourceId!==void 0&&typeof I.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(I.animationName!==void 0&&typeof I.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(I.animationSpeed!==void 0&&typeof I.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(I.loop!==void 0&&typeof I.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&&(Q(p.animations,{instancePath:r+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.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 Un.errors=t,s===0}function mu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return Un(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?Un.errors:t.concat(Un.errors),s=t.length),mu.errors=t,s===0}var yu=hu;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(!(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 m={instancePath:r+"/items/"+c,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(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 m=p.click;if(!(m&&typeof m=="object"&&!Array.isArray(m))){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 m={instancePath:r+"/items/"+c+"/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/"+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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Bn.errors=t,s===0}function hu(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),hu.errors=t,s===0}var gu=bu;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 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 Yn.errors=t,s===0}function bu(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),bu.errors=t,s===0}var Iu=wu;function zn(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 zn.errors=t,s===0}function wu(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),wu.errors=t,s===0}var vu=Au;var ou={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 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(!lr.call(ou.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&&(Q(i.animations,{instancePath:r+"/ui/animations",parentData:i,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.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:ou.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 m=c[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 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&&(Q(l.animations,{instancePath:r+"/character/sprite/animations",parentData:l,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.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 Gn.errors=t,s===0}function Au(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),Au.errors=t,s===0}var ku=Pu;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==="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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Hn.errors=t,s===0}function Pu(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),Pu.errors=t,s===0}var xu=Eu;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)){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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Xn.errors=t,s===0}function Eu(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),Eu.errors=t,s===0}var Su=Ru;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(!(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&&(Q(e.animations,{instancePath:r+"/animations",parentData:e,parentDataProperty:"animations",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 Wn.errors=t,s===0}function Ru(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),Ru.errors=t,s===0}var Ou=Cu;var pI={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 Kn(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 m=0;m<p;m++)je(u[m],{instancePath:r+"/items/"+m,parentData:u,parentDataProperty:m,rootData:a})||(t=t===null?je.errors:t.concat(je.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 m=0;m<p;m++){let d=u[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(Ne(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:pI.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++)je(f[g],{instancePath:r+"/channels/"+m+"/sounds/"+g,parentData:f,parentDataProperty:g,rootData:a})||(t=t===null?je.errors:t.concat(je.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 u={instancePath:r,schemaPath:"#/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[u]:t.push(u),s++}return Kn.errors=t,s===0}function Cu(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),Cu.errors=t,s===0}var $u=_u;var iu={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 Jn(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 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 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 Jn.errors=t,s===0}function Qn(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 I;if(e.id===void 0&&(I="id")){let b={};t===null?t=[b]:t.push(b),s++}}var m=p===s;if(u=u||m,!u){let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.type===void 0&&(x="type")){let v={};t===null?t=[v]:t.push(v),s++}}var m=I===s;if(u=u||m,!u){let x=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let k;if(e.resourceId===void 0&&(k="resourceId")){let S={};t===null?t=[S]:t.push(S),s++}}var m=x===s;if(u=u||m,!u){let k=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let C;if(e.transformId===void 0&&(C="transformId")){let N={};t===null?t=[N]:t.push(N),s++}}var m=k===s;if(u=u||m,!u){let C=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.x===void 0&&(P="x")){let T={};t===null?t=[T]:t.push(T),s++}}var m=C===s;if(u=u||m,!u){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let V;if(e.y===void 0&&(V="y")){let le={};t===null?t=[le]:t.push(le),s++}}var m=P===s;if(u=u||m,!u){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let G;if(e.anchorX===void 0&&(G="anchorX")){let ee={};t===null?t=[ee]:t.push(ee),s++}}var m=V===s;if(u=u||m,!u){let G=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Pe;if(e.anchorY===void 0&&(Pe="anchorY")){let Fe={};t===null?t=[Fe]:t.push(Fe),s++}}var m=G===s;if(u=u||m,!u){let Pe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let oe;if(e.scaleX===void 0&&(oe="scaleX")){let me={};t===null?t=[me]:t.push(me),s++}}var m=Pe===s;if(u=u||m,!u){let oe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Ae;if(e.scaleY===void 0&&(Ae="scaleY")){let ye={};t===null?t=[ye]:t.push(ye),s++}}var m=oe===s;if(u=u||m,!u){let Ae=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let re;if(e.rotation===void 0&&(re="rotation")){let ce={};t===null?t=[ce]:t.push(ce),s++}}var m=Ae===s;if(u=u||m,!u){let re=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let se;if(e.originX===void 0&&(se="originX")){let ie={};t===null?t=[ie]:t.push(ie),s++}}var m=re===s;if(u=u||m,!u){let se=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Ue;if(e.originY===void 0&&(Ue="originY")){let ur={};t===null?t=[ur]:t.push(ur),s++}}var m=se===s;if(u=u||m,!u){let Ue=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let Oe;if(e.layer===void 0&&(Oe="layer")){let $={};t===null?t=[$]:t.push($),s++}}var m=Ue===s;if(u=u||m,!u){let Oe=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let j;if(e.opacity===void 0&&(j="opacity")){let F={};t===null?t=[F]:t.push(F),s++}}var m=Oe===s;if(u=u||m,!u){let j=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let K;if(e.blur===void 0&&(K="blur")){let xe={};t===null?t=[xe]:t.push(xe),s++}}var m=j===s;if(u=u||m,!u){let K=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let pr;if(e.animations===void 0&&(pr="animations")){let Ie={};t===null?t=[Ie]:t.push(Ie),s++}}var m=K===s;u=u||m}}}}}}}}}}}}}}}}if(u)s=c,t!==null&&(c?t.length=c:t=null);else{let I={};t===null?t=[I]:t.push(I),s++}var d=l===s;if(d){let I={instancePath:r,schemaPath:"#/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[I]:t.push(I),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 I={instancePath:r,schemaPath:"#/anyOf/0/required",keyword:"required",params:{missingProperty:"content"},message:"must have required property 'content'"};t===null?t=[I]:t.push(I),s++}var h=g===s;if(y=y||h,!y){let I=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.textStyleId===void 0){let x={instancePath:r,schemaPath:"#/anyOf/1/required",keyword:"required",params:{missingProperty:"textStyleId"},message:"must have required property 'textStyleId'"};t===null?t=[x]:t.push(x),s++}var h=I===s;y=y||h}if(y)s=f,t!==null&&(f?t.length=f:t=null);else{let I={instancePath:r,schemaPath:"#/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[I]:t.push(I),s++}if(e&&typeof e=="object"&&!Array.isArray(e)){if(e.content!==void 0&&(Jn(e.content,{instancePath:r+"/content",parentData:e,parentDataProperty:"content",rootData:a})||(t=t===null?Jn.errors:t.concat(Jn.errors),s=t.length)),e.textStyleId!==void 0&&typeof e.textStyleId!="string"){let I={instancePath:r+"/textStyleId",schemaPath:"#/properties/textStyleId/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[I]:t.push(I),s++}if(e.width!==void 0&&typeof e.width!="number"){let I={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),s++}if(e.height!==void 0&&typeof e.height!="number"){let I={instancePath:r+"/height",schemaPath:"#/properties/height/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 Qn.errors=t,s===0}function Zn(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],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/"+u,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/"+u,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(!lr.call(iu.properties.items.items.properties,f)){let y={instancePath:r+"/items/"+u,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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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&&(Qn(p.text,{instancePath:r+"/items/"+u+"/text",parentData:p,parentDataProperty:"text",rootData:a})||(t=t===null?Qn.errors:t.concat(Qn.errors),s=t.length)),p.transformId!==void 0&&typeof p.transformId!="string"){let f={instancePath:r+"/items/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/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/"+u+"/layer",schemaPath:"#/properties/items/items/properties/layer/enum",keyword:"enum",params:{allowedValues:iu.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/"+u+"/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/"+u+"/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/"+u+"/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&&(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.animations!==void 0&&(Q(p.animations,{instancePath:r+"/items/"+u+"/animations",parentData:p,parentDataProperty:"animations",rootData:a})||(t=t===null?Q.errors:t.concat(Q.errors),s=t.length))}else{let f={instancePath:r+"/items/"+u,schemaPath:"#/properties/items/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[f]:t.push(f),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 Zn.errors=t,s===0}function _u(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),_u.errors=t,s===0}var ju=Nu;var dI={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 es(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,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 I={};t===null?t=[I]:t.push(I),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 I={};t===null?t=[I]:t.push(I),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 I={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:h},message:"must NOT have additional properties"};t===null?t=[I]:t.push(I),s++}if(e.sounds!==void 0){let h=e.sounds;if(Array.isArray(h)){let I=h.length;for(let b=0;b<I;b++)je(h[b],{instancePath:r+"/sounds/"+b,parentData:h,parentDataProperty:b,rootData:a})||(t=t===null?je.errors:t.concat(je.errors),s=t.length)}else{let I={instancePath:r+"/sounds",schemaPath:"#/properties/sounds/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[I]:t.push(I),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 I={instancePath:r+"/volume",schemaPath:"#/properties/volume/maximum",keyword:"maximum",params:{comparison:"<=",limit:100},message:"must be <= 100"};t===null?t=[I]:t.push(I),s++}if(h<0||isNaN(h)){let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/volume",schemaPath:"#/properties/volume/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),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 I={instancePath:r+"/pan",schemaPath:"#/properties/pan/maximum",keyword:"maximum",params:{comparison:"<=",limit:1},message:"must be <= 1"};t===null?t=[I]:t.push(I),s++}if(h<-1||isNaN(h)){let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/minimum",keyword:"minimum",params:{comparison:">=",limit:-1},message:"must be >= -1"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/pan",schemaPath:"#/properties/pan/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 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 I={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[I]:t.push(I),s++}if(!(h==="immediate"||h==="loopEnd")){let I={instancePath:r+"/interruption",schemaPath:"#/properties/interruption/enum",keyword:"enum",params:{allowedValues:dI.properties.interruption.enum},message:"must be equal to one of the allowed values"};t===null?t=[I]:t.push(I),s++}}if(e.startDelayMs!==void 0){let h=e.startDelayMs;if(typeof h=="number"){if(h<0||isNaN(h)){let I={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/minimum",keyword:"minimum",params:{comparison:">=",limit:0},message:"must be >= 0"};t===null?t=[I]:t.push(I),s++}}else{let I={instancePath:r+"/startDelayMs",schemaPath:"#/properties/startDelayMs/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[I]:t.push(I),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 es.errors=t,s===0}function Nu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return es(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?es.errors:t.concat(es.errors),s=t.length),Nu.errors=t,s===0}var Du=Lu;var fI={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 rs(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 I={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"target"},message:"must have required property 'target'"};t===null?t=[I]:t.push(I),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,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,I=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let x;if(e.target===void 0&&(x="target")){let v={};t===null?t=[v]:t.push(v),s++}}var y=I===s;if(y){let x={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[x]:t.push(x),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:fI.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(Ne(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(Ne(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(Ne(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(Ne(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 rs.errors=t,s===0}function Lu(e,{instancePath:r="",parentData:n,parentDataProperty:o,rootData:a=e}={}){let t=null,s=0;return rs(e,{instancePath:r,parentData:n,parentDataProperty:o,rootData:a})||(t=t===null?rs.errors:t.concat(rs.errors),s=t.length),Lu.errors=t,s===0}var Tu=Mu;var mI={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 yI={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 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.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:yI.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 Fr.errors=t,s===0}function z(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++)Fr(i[c],{instancePath:r+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.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 z.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)){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&&(z(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.x!==void 0&&(z(e.x,{instancePath:r+"/x",parentData:e,parentDataProperty:"x",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.y!==void 0&&(z(e.y,{instancePath:r+"/y",parentData:e,parentDataProperty:"y",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleX!==void 0&&(z(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleY!==void 0&&(z(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.rotation!==void 0&&(z(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?z.errors:t.concat(z.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 ts.errors=t,s===0}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(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&&(z(e.translateX,{instancePath:r+"/translateX",parentData:e,parentDataProperty:"translateX",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.translateY!==void 0&&(z(e.translateY,{instancePath:r+"/translateY",parentData:e,parentDataProperty:"translateY",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.alpha!==void 0&&(z(e.alpha,{instancePath:r+"/alpha",parentData:e,parentDataProperty:"alpha",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleX!==void 0&&(z(e.scaleX,{instancePath:r+"/scaleX",parentData:e,parentDataProperty:"scaleX",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.scaleY!==void 0&&(z(e.scaleY,{instancePath:r+"/scaleY",parentData:e,parentDataProperty:"scaleY",rootData:a})||(t=t===null?z.errors:t.concat(z.errors),s=t.length)),e.rotation!==void 0&&(z(e.rotation,{instancePath:r+"/rotation",parentData:e,parentDataProperty:"rotation",rootData:a})||(t=t===null?z.errors:t.concat(z.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 ns.errors=t,s===0}function Vr(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&&(ns(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?ns.errors:t.concat(ns.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 Vr.errors=t,s===0}var Mn={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"]}}]},hI={type:"object",required:["texture"],properties:{texture:{type:"string"},channel:{type:"string",enum:["red","green","blue","alpha"]},invert:{type:"boolean"}},additionalProperties:!1};function ss(e,{instancePath: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:hI.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 ss.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(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++)Fr(i[c],{instancePath:r+"/keyframes/"+c,parentData:i,parentDataProperty:c,rootData:a})||(t=t===null?Fr.errors:t.concat(Fr.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 os.errors=t,s===0}function is(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,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 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 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 I=h===s;if(s=y,t!==null&&(y?t.length=y:t=null),I){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 I=b===s;g=I}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(!lr.call(Mn.properties,b)){let x={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),s++}if(e.kind!==void 0){let b=e.kind;if(typeof b!="string"){let x={instancePath:r+"/kind",schemaPath:"#/properties/kind/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="single"||b==="sequence"||b==="composite")){let x={instancePath:r+"/kind",schemaPath:"#/properties/kind/enum",keyword:"enum",params:{allowedValues:Mn.properties.kind.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),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 x=b.length;for(let v=0;v<x;v++)if(typeof b[v]!="string"){let k={instancePath:r+"/textures/"+v,schemaPath:"#/properties/textures/items/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[k]:t.push(k),s++}}else{let x={instancePath:r+"/textures",schemaPath:"#/properties/textures/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[x]:t.push(x),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 x=b.length;for(let v=0;v<x;v++)ss(b[v],{instancePath:r+"/items/"+v,parentData:b,parentDataProperty:v,rootData:a})||(t=t===null?ss.errors:t.concat(ss.errors),s=t.length)}else{let x={instancePath:r+"/items",schemaPath:"#/properties/items/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[x]:t.push(x),s++}}if(e.combine!==void 0){let b=e.combine;if(typeof b!="string"){let x={instancePath:r+"/combine",schemaPath:"#/properties/combine/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="max"||b==="min"||b==="multiply"||b==="add")){let x={instancePath:r+"/combine",schemaPath:"#/properties/combine/enum",keyword:"enum",params:{allowedValues:Mn.properties.combine.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.channel!==void 0){let b=e.channel;if(typeof b!="string"){let x={instancePath:r+"/channel",schemaPath:"#/properties/channel/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="red"||b==="green"||b==="blue"||b==="alpha")){let x={instancePath:r+"/channel",schemaPath:"#/properties/channel/enum",keyword:"enum",params:{allowedValues:Mn.properties.channel.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),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&&(os(e.progress,{instancePath:r+"/progress",parentData:e,parentDataProperty:"progress",rootData:a})||(t=t===null?os.errors:t.concat(os.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 is.errors=t,s===0}function as(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,x=s,v=s,k=s,S=!1,C=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.prev===void 0&&(P="prev")){let T={};t===null?t=[T]:t.push(T),s++}}var p=C===s;if(S=S||p,!S){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let V;if(e.next===void 0&&(V="next")){let le={};t===null?t=[le]:t.push(le),s++}}var p=P===s;if(S=S||p,!S){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let G;if(e.mask===void 0&&(G="mask")){let ee={};t===null?t=[ee]:t.push(ee),s++}}var p=V===s;S=S||p}}if(S)s=k,t!==null&&(k?t.length=k:t=null);else{let P={};t===null?t=[P]:t.push(P),s++}var m=v===s;if(m){let P={instancePath:r,schemaPath:"#/allOf/0/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[P]:t.push(P),s++}else s=x,t!==null&&(x?t.length=x:t=null);if(e&&typeof e=="object"&&!Array.isArray(e)&&e.tween===void 0){let P={instancePath:r,schemaPath:"#/allOf/0/then/required",keyword:"required",params:{missingProperty:"tween"},message:"must have required property 'tween'"};t===null?t=[P]:t.push(P),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,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,x=s,v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let P;if(e.tween===void 0&&(P="tween")){let T={};t===null?t=[T]:t.push(T),s++}}var h=v===s;if(h){let P={instancePath:r,schemaPath:"#/allOf/1/then/not",keyword:"not",params:{},message:"must NOT be valid"};t===null?t=[P]:t.push(P),s++}else s=x,t!==null&&(x?t.length=x:t=null);let k=s,S=!1,C=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.prev===void 0){let P={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/0/required",keyword:"required",params:{missingProperty:"prev"},message:"must have required property 'prev'"};t===null?t=[P]:t.push(P),s++}var I=C===s;if(S=S||I,!S){let P=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.next===void 0){let V={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/1/required",keyword:"required",params:{missingProperty:"next"},message:"must have required property 'next'"};t===null?t=[V]:t.push(V),s++}var I=P===s;if(S=S||I,!S){let V=s;if(e&&typeof e=="object"&&!Array.isArray(e)&&e.mask===void 0){let G={instancePath:r,schemaPath:"#/allOf/1/then/anyOf/2/required",keyword:"required",params:{missingProperty:"mask"},message:"must have required property 'mask'"};t===null?t=[G]:t.push(G),s++}var I=V===s;S=S||I}}if(S)s=k,t!==null&&(k?t.length=k:t=null);else{let P={instancePath:r,schemaPath:"#/allOf/1/then/anyOf",keyword:"anyOf",params:{},message:"must match a schema in anyOf"};t===null?t=[P]:t.push(P),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 x={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:b},message:"must NOT have additional properties"};t===null?t=[x]:t.push(x),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 x={instancePath:r+"/type",schemaPath:"#/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[x]:t.push(x),s++}if(!(b==="update"||b==="transition")){let x={instancePath:r+"/type",schemaPath:"#/properties/type/enum",keyword:"enum",params:{allowedValues:mI.properties.type.enum},message:"must be equal to one of the allowed values"};t===null?t=[x]:t.push(x),s++}}if(e.complete!==void 0){let b=e.complete;if(b&&typeof b=="object"&&!Array.isArray(b)){if(b.payload!==void 0){let x=b.payload;if(!(x&&typeof x=="object"&&!Array.isArray(x))){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 x={instancePath:r+"/complete",schemaPath:"#/properties/complete/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[x]:t.push(x),s++}}e.tween!==void 0&&(ts(e.tween,{instancePath:r+"/tween",parentData:e,parentDataProperty:"tween",rootData:a})||(t=t===null?ts.errors:t.concat(ts.errors),s=t.length)),e.prev!==void 0&&(Vr(e.prev,{instancePath:r+"/prev",parentData:e,parentDataProperty:"prev",rootData:a})||(t=t===null?Vr.errors:t.concat(Vr.errors),s=t.length)),e.next!==void 0&&(Vr(e.next,{instancePath:r+"/next",parentData:e,parentDataProperty:"next",rootData:a})||(t=t===null?Vr.errors:t.concat(Vr.errors),s=t.length)),e.mask!==void 0&&(is(e.mask,{instancePath:r+"/mask",parentData:e,parentDataProperty:"mask",rootData:a})||(t=t===null?is.errors:t.concat(is.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 as.errors=t,s===0}function Mu(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),Mu.errors=t,s===0}var qu=Vu;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(!(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(Ne(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 ls.errors=t,s===0}function Vu(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),Vu.errors=t,s===0}var Fu=Uu;var gI=new RegExp("^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$","u");function cs(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(!gI.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 cs.errors=t,s===0}function Uu(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),Uu.errors=t,s===0}var Bu=Yu;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)){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 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(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 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 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 us.errors=t,s===0}function Yu(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),Yu.errors=t,s===0}var zu=Gu;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)){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 ps.errors=t,s===0}function Gu(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),Gu.errors=t,s===0}var Hu=Xu;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 Xu(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),Xu.errors=t,s===0}var Wu=Ku;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.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 fs.errors=t,s===0}function Ku(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),Ku.errors=t,s===0}var Ju=Qu;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,m=s,d=s,f=!1,y=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let v;if(e.count===void 0&&(v="count")){let k={};t===null?t=[k]:t.push(k),s++}}var g=y===s;if(f=f||g,!f){let v=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let S;if(e.texture===void 0&&(S="texture")){let C={};t===null?t=[C]:t.push(C),s++}}var g=v===s;if(f=f||g,!f){let S=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let N;if(e.behaviors===void 0&&(N="behaviors")){let P={};t===null?t=[P]:t.push(P),s++}}var g=S===s;if(f=f||g,!f){let N=s;if(e&&typeof e=="object"&&!Array.isArray(e)){let T;if(e.emitter===void 0&&(T="emitter")){let V={};t===null?t=[V]:t.push(V),s++}}var g=N===s;f=f||g}}}if(f)s=d,t!==null&&(d?t.length=d:t=null);else{let v={};t===null?t=[v]:t.push(v),s++}var h=m===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 I=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=I===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 k={instancePath:r,schemaPath:"#/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:v},message:"must NOT have additional properties"};t===null?t=[k]:t.push(k),s++}if(e.width!==void 0){let v=e.width;if(typeof v=="number"){if(v<=0||isNaN(v)){let k={instancePath:r+"/width",schemaPath:"#/properties/width/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[k]:t.push(k),s++}}else{let k={instancePath:r+"/width",schemaPath:"#/properties/width/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),s++}}if(e.height!==void 0){let v=e.height;if(typeof v=="number"){if(v<=0||isNaN(v)){let k={instancePath:r+"/height",schemaPath:"#/properties/height/exclusiveMinimum",keyword:"exclusiveMinimum",params:{comparison:">",limit:0},message:"must be > 0"};t===null?t=[k]:t.push(k),s++}}else{let k={instancePath:r+"/height",schemaPath:"#/properties/height/type",keyword:"type",params:{type:"number"},message:"must be number"};t===null?t=[k]:t.push(k),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 k={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"emission"},message:"must have required property 'emission'"};t===null?t=[k]:t.push(k),s++}if(v.appearance===void 0){let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/required",keyword:"required",params:{missingProperty:"appearance"},message:"must have required property 'appearance'"};t===null?t=[k]:t.push(k),s++}for(let k in v)if(!(k==="emission"||k==="movement"||k==="appearance"||k==="bounds")){let S={instancePath:r+"/modules",schemaPath:"#/properties/modules/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:k},message:"must NOT have additional properties"};t===null?t=[S]:t.push(S),s++}if(v.emission!==void 0){let k=v.emission;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/emission",schemaPath:"#/properties/modules/properties/emission/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}if(v.movement!==void 0){let k=v.movement;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/movement",schemaPath:"#/properties/modules/properties/movement/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}if(v.appearance!==void 0){let k=v.appearance;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/appearance",schemaPath:"#/properties/modules/properties/appearance/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}if(v.bounds!==void 0){let k=v.bounds;if(!(k&&typeof k=="object"&&!Array.isArray(k))){let S={instancePath:r+"/modules/bounds",schemaPath:"#/properties/modules/properties/bounds/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}}else{let k={instancePath:r+"/modules",schemaPath:"#/properties/modules/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),s++}}if(e.count!==void 0){let v=e.count;if(!(typeof v=="number"&&!(v%1)&&!isNaN(v))){let k={instancePath:r+"/count",schemaPath:"#/properties/count/type",keyword:"type",params:{type:"integer"},message:"must be integer"};t===null?t=[k]:t.push(k),s++}if(typeof v=="number"&&(v<1||isNaN(v))){let k={instancePath:r+"/count",schemaPath:"#/properties/count/minimum",keyword:"minimum",params:{comparison:">=",limit:1},message:"must be >= 1"};t===null?t=[k]:t.push(k),s++}}if(e.texture!==void 0){let v=e.texture,k=s,S=!1,C=null,N=s;if(typeof v=="string"){if(Ne(v)<1){let T={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=[T]:t.push(T),s++}}else{let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/0/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[T]:t.push(T),s++}var x=N===s;x&&(S=!0,C=0);let P=s;if(!(v&&typeof v=="object"&&!Array.isArray(v))){let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf/1/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[T]:t.push(T),s++}var x=P===s;if(x&&S?(S=!1,C=[C,1]):x&&(S=!0,C=1),S)s=k,t!==null&&(k?t.length=k:t=null);else{let T={instancePath:r+"/texture",schemaPath:"#/properties/texture/oneOf",keyword:"oneOf",params:{passingSchemas:C},message:"must match exactly one schema in oneOf"};t===null?t=[T]:t.push(T),s++}}if(e.behaviors!==void 0){let v=e.behaviors;if(Array.isArray(v)){if(v.length<1){let S={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/minItems",keyword:"minItems",params:{limit:1},message:"must NOT have fewer than 1 items"};t===null?t=[S]:t.push(S),s++}let k=v.length;for(let S=0;S<k;S++){let C=v[S];if(C&&typeof C=="object"&&!Array.isArray(C)){if(C.type===void 0){let N={instancePath:r+"/behaviors/"+S,schemaPath:"#/properties/behaviors/items/required",keyword:"required",params:{missingProperty:"type"},message:"must have required property 'type'"};t===null?t=[N]:t.push(N),s++}for(let N in C)if(!(N==="type"||N==="config")){let P={instancePath:r+"/behaviors/"+S,schemaPath:"#/properties/behaviors/items/additionalProperties",keyword:"additionalProperties",params:{additionalProperty:N},message:"must NOT have additional properties"};t===null?t=[P]:t.push(P),s++}if(C.type!==void 0){let N=C.type;if(typeof N=="string"){if(Ne(N)<1){let P={instancePath:r+"/behaviors/"+S+"/type",schemaPath:"#/properties/behaviors/items/properties/type/minLength",keyword:"minLength",params:{limit:1},message:"must NOT have fewer than 1 characters"};t===null?t=[P]:t.push(P),s++}}else{let P={instancePath:r+"/behaviors/"+S+"/type",schemaPath:"#/properties/behaviors/items/properties/type/type",keyword:"type",params:{type:"string"},message:"must be string"};t===null?t=[P]:t.push(P),s++}}if(C.config!==void 0){let N=C.config;if(!(N&&typeof N=="object"&&!Array.isArray(N))){let P={instancePath:r+"/behaviors/"+S+"/config",schemaPath:"#/properties/behaviors/items/properties/config/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[P]:t.push(P),s++}}}else{let N={instancePath:r+"/behaviors/"+S,schemaPath:"#/properties/behaviors/items/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[N]:t.push(N),s++}}}else{let k={instancePath:r+"/behaviors",schemaPath:"#/properties/behaviors/type",keyword:"type",params:{type:"array"},message:"must be array"};t===null?t=[k]:t.push(k),s++}}if(e.emitter!==void 0){let v=e.emitter;if(v&&typeof v=="object"&&!Array.isArray(v)){if(v.lifetime===void 0){let k={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/required",keyword:"required",params:{missingProperty:"lifetime"},message:"must have required property 'lifetime'"};t===null?t=[k]:t.push(k),s++}if(v.lifetime!==void 0){let k=v.lifetime;if(k&&typeof k=="object"&&!Array.isArray(k)){if(k.min===void 0){let S={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"min"},message:"must have required property 'min'"};t===null?t=[S]:t.push(S),s++}if(k.max===void 0){let S={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/required",keyword:"required",params:{missingProperty:"max"},message:"must have required property 'max'"};t===null?t=[S]:t.push(S),s++}if(k.min!==void 0){let S=k.min;if(typeof S=="number"){if(S<0||isNaN(S)){let C={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=[C]:t.push(C),s++}}else{let C={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=[C]:t.push(C),s++}}if(k.max!==void 0){let S=k.max;if(typeof S=="number"){if(S<0||isNaN(S)){let C={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=[C]:t.push(C),s++}}else{let C={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=[C]:t.push(C),s++}}}else{let S={instancePath:r+"/emitter/lifetime",schemaPath:"#/properties/emitter/properties/lifetime/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[S]:t.push(S),s++}}}else{let k={instancePath:r+"/emitter",schemaPath:"#/properties/emitter/type",keyword:"type",params:{type:"object"},message:"must be object"};t===null?t=[k]:t.push(k),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 Qu(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),Qu.errors=t,s===0}var Zu=ep;var au={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 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++}for(let i in e)if(!lr.call(au.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:au.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 ys.errors=t,s===0}function ep(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),ep.errors=t,s===0}var rp=tp;var bI=new RegExp("^.+$","u");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.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(bI.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 m=0;m<p;m++)if(typeof u[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(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 hs.errors=t,s===0}function tp(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),tp.errors=t,s===0}var np=sp;var lu={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 gs(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(!lr.call(lu.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,m=s;if(typeof l=="string"){if(Ne(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&&(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 f=l.length;for(let h=0;h<f;h++){let I=l[h];if(typeof I=="string"){if(Ne(I)<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 I=l[y];if(typeof I=="string"){if(typeof h[I]=="number"){g=h[I];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[I]=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&&u?(u=!1,p=[p,1]):i&&(u=!0,p=1),u)s=c,t!==null&&(c?t.length=c: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 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:lu.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(Ne(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 gs.errors=t,s===0}function sp(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),sp.errors=t,s===0}var op=ip;var II={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 bs(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(!lr.call(II.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 bs.errors=t,s===0}function ip(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),ip.errors=t,s===0}var ap=lp;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.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 Is.errors=t,s===0}function lp(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),lp.errors=t,s===0}var zt=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),Yt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),cr=e=>e===void 0?void 0:structuredClone(e),wI=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"}),vI=new Set(["background","bgm","character","choice","cleanAll","control","dialogue","form","layout","screen","sfx","visual","voice"]),AI=Object.freeze({background:cu,bgm:pu,character:fu,choice:yu,cleanAll:gu,control:Iu,dialogue:vu,form:ku,layout:xu,screen:Su,sfx:Ou,visual:$u,voice:ju}),kI=Object.freeze({achievement:Du,animation:Tu,character:qu,color:Fu,control:Bu,font:zu,image:Hu,layout:Wu,particle:Ju,sound:Zu,spritesheet:rp,textStyle:np,transform:op,video:ap}),PI=new Set(["files","language","patches"]),xI=new Set(["actionType","ignoreFields","lineId","mode","payload","type"]),EI=new Set(["lineId","mode","payload","type"]),SI=new Set(["mode","payload","sceneId","type"]),RI=new Set(["mode","operation","payload","resourceId","type"]),OI=new Set(["fileId","mimeType"]),q=(e,r)=>{throw new Error(`Invalid l10nData at ${e}: ${r}`)},He=(e,r)=>{Yt(e)||q(r,"expected an object")},wi=(e,r)=>{Array.isArray(e)||q(r,"expected an array")},lt=(e,r)=>{(typeof e!="string"||e.length===0)&&q(r,"expected a non-empty string")},dp=(e,r)=>{typeof e!="string"&&q(r,"expected a string")},Qe=(e,r,n)=>{for(let o of Object.keys(e))r.has(o)||q(`${n}.${o}`,"unknown field")},Ze=(e,r,n)=>{for(let o of r)zt(e,o)||q(n,`missing required field "${o}"`)},CI=e=>e.replaceAll("~1","/").replaceAll("~0","~"),$I=(e,r)=>{let n=(r?.instancePath??"").split("/").slice(1).map(CI);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)},_I=(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],fp=({value:e,validator:r,path:n,contract:o})=>{if(r(e))return;let a=_I(r.errors);q($I(n,a),`does not match ${o}: ${a?.message??"schema validation failed"}`)},ws=(e,r,n=new WeakSet)=>{if(typeof e=="number"){Number.isFinite(e)||q(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)=>ws(o,`${r}[${a}]`,n));return}Object.entries(e).forEach(([o,a])=>ws(a,`${r}.${o}`,n))}},Je=(e,r)=>{e===""&&q(r,"expected a non-empty resourceId")},jI=(e,r,n)=>{let o=(s,i)=>Je(s?.resourceId,`${i}.resourceId`),a=(s,i)=>(s??[]).forEach((l,c)=>Je(l?.resourceId,`${i}[${c}].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,c)=>Je(l?.resourceId,`${n}.items[${i}].sprites[${c}].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")&&q(r,`"${e}" is not a safe ID`)},NI=(e,r)=>{lt(e,r),(e==="."||e===".."||e.includes("/")||e.includes("\\")||e.includes("\0"))&&q(r,"must be a safe single filename")},Bt=(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)=>Bt(a,r[t]));if(!Yt(e)||!Yt(r))return!1;let n=Object.keys(e).sort(),o=Object.keys(r).sort();return Bt(n,o)&&n.every(a=>Bt(e[a],r[a]))},vs=(e,r=new Set,n=new WeakSet)=>{if(Array.isArray(e))return e.forEach(o=>vs(o,r,n)),r;if(!Yt(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),vs(a,r,n);return r},DI=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},mp=(e,r,n)=>{let o=e.get(r)??[];return o.length===0&&q(n,`lineId "${r}" does not exist in projectData`),o.length>1&&q(n,`lineId "${r}" is not globally unique in projectData`),o[0]},yp=(e,r)=>e.story.scenes[r.sceneId].sections[r.sectionId].lines[r.lineIndex],cp=e=>({items:(e?.items??[]).map(r=>({id:r?.id,events:r?.events}))}),up=e=>{let r=cr(e??{});delete r.resourceId,delete r.animations;for(let n of Object.values(r.fields??{}))Yt(n)&&delete n.placeholder;return r},LI=(e,r,n,o)=>{e==="choice"&&!Bt(cp(r),cp(n))&&q(o,"choice item IDs and events must remain identical to the source action"),e==="form"&&!Bt(up(r),up(n))&&q(o,"form behavior must remain identical; only presentation fields and placeholders may change")},TI=({patch:e,path:r,lineIndex:n})=>{Qe(e,xI,r),Ze(e,["type","lineId","actionType","payload"],r),ct(e.lineId,`${r}.lineId`),lt(e.actionType,`${r}.actionType`),He(e.payload,`${r}.payload`),e.mode!==void 0&&e.mode!=="replace"&&q(`${r}.mode`,'line.action supports only "replace"'),vI.has(e.actionType)||q(`${r}.actionType`,`"${e.actionType}" is not a localizable presentation action`);let o=mp(n,e.lineId,`${r}.lineId`),a=o.line?.actions?.[e.actionType];return a===void 0&&q(`${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")&&q(`${r}.ignoreFields`,'dialogue action replacement requires exactly ["content"]'),zt(e.payload,"content")&&q(`${r}.payload.content`,"dialogue content must use a separate line.dialogue patch")):e.ignoreFields!==void 0&&q(`${r}.ignoreFields`,"ignoreFields is supported only for dialogue actions"),LI(e.actionType,a,e.payload,`${r}.payload`),fp({value:e.payload,validator:AI[e.actionType],path:`${r}.payload`,contract:`the ${e.actionType} presentation-action schema`}),ws(e.payload,`${r}.payload`),jI(e.actionType,e.payload,`${r}.payload`),{kind:"line.action",key:`line.action:${e.lineId}:${e.actionType}`,location:o,patch:e}},MI=(e,r)=>{wi(e,r),e.forEach((n,o)=>{He(n,`${r}[${o}]`),Qe(n,new Set(["text"]),`${r}[${o}]`),Ze(n,["text"],`${r}[${o}]`),dp(n.text,`${r}[${o}].text`)})},qI=({patch:e,path:r,lineIndex:n})=>{Qe(e,EI,r),Ze(e,["type","lineId","payload"],r),ct(e.lineId,`${r}.lineId`),He(e.payload,`${r}.payload`),Qe(e.payload,new Set(["content"]),`${r}.payload`),Ze(e.payload,["content"],`${r}.payload`),MI(e.payload.content,`${r}.payload.content`),e.mode!==void 0&&e.mode!=="replace"&&q(`${r}.mode`,'line.dialogue supports only "replace"');let o=mp(n,e.lineId,`${r}.lineId`);return o.line?.actions?.dialogue===void 0&&q(`${r}.lineId`,`source line "${e.lineId}" does not contain a dialogue action`),{kind:"line.dialogue",key:`line.dialogue:${e.lineId}`,location:o,patch:e}},VI=({patch:e,path:r,projectData:n})=>(Qe(e,SI,r),Ze(e,["type","mode","sceneId","payload"],r),ct(e.sceneId,`${r}.sceneId`),He(e.payload,`${r}.payload`),Qe(e.payload,new Set(["name"]),`${r}.payload`),Ze(e.payload,["name"],`${r}.payload`),dp(e.payload.name,`${r}.payload.name`),e.mode!=="patch"&&q(`${r}.mode`,'story.scene requires "patch"'),zt(n?.story?.scenes??{},e.sceneId)||q(`${r}.sceneId`,`sceneId "${e.sceneId}" does not exist`),{kind:"story.scene",key:`story.scene:${e.sceneId}`,patch:e}),FI=(e,r,n)=>{He(r,n),["font","image","sound","spritesheet","video"].includes(e)&&lt(r.fileId,`${n}.fileId`),["image","video"].includes(e)&&(Number.isInteger(r.width)||q(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||q(`${n}.height`,"expected an integer")),e==="spritesheet"&&(He(r.jsonData,`${n}.jsonData`),Number.isInteger(r.width)||q(`${n}.width`,"expected an integer"),Number.isInteger(r.height)||q(`${n}.height`,"expected an integer")),e==="color"&&(typeof r.hex!="string"||!/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(r.hex))&&q(`${n}.hex`,"expected an opaque #RGB or #RRGGBB color"),fp({value:r,validator:kI[e],path:n,contract:`the resource.${e} schema`}),ws(r,n)},UI=({patch:e,path:r,projectData:n,packageFileIds:o,canonicalFileIds:a})=>{Qe(e,RI,r),Ze(e,["type","resourceId","payload"],r),ct(e.resourceId,`${r}.resourceId`);let t=e.type.slice(9),s=wI[t];s||q(`${r}.type`,`unsupported resource patch type "${e.type}"`),e.mode!==void 0&&e.mode!=="replace"&&q(`${r}.mode`,'resource patches support only "replace"'),e.operation!==void 0&&e.operation!=="add"&&q(`${r}.operation`,'the only resource operation is "add"'),FI(t,e.payload,`${r}.payload`);let i=n?.resources?.[s]??{},l=zt(i,e.resourceId);e.operation==="add"&&l&&q(`${r}.resourceId`,`cannot add existing ${t} resource "${e.resourceId}"`),e.operation!=="add"&&!l&&q(`${r}.resourceId`,`cannot replace missing ${t} resource "${e.resourceId}"`);for(let c of vs(e.payload))!o.has(c)&&!a.has(c)&&q(`${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}},pp=({resources:e,collectionName:r,resourceId:n,path:o,label:a})=>{n!==void 0&&(typeof n!="string"||n.length===0||!zt(e?.[r]??{},n))&&q(o,`${a} resource "${n}" was not found`)},BI=(e,r)=>{let n=cr(e);for(let a of r.patches)a.kind==="resource"&&(n.resources[a.collectionName]??={},n.resources[a.collectionName][a.patch.resourceId]=cr(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)=>pp({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]])pp({resources:o,collectionName:"colors",resourceId:l,path:`${a.path}.payload.${i}`,label:"color"})}},YI=({patch:e,path:r,projectData:n,lineIndex:o,packageFileIds:a,canonicalFileIds:t})=>{if(He(e,r),lt(e.type,`${r}.type`),e.type==="line.action")return TI({patch:e,path:r,lineIndex:o});if(e.type==="line.dialogue")return qI({patch:e,path:r,lineIndex:o});if(e.type==="story.scene")return VI({patch:e,path:r,projectData:n});if(e.type.startsWith("resource."))return UI({patch:e,path:r,projectData:n,packageFileIds:a,canonicalFileIds:t});q(`${r}.type`,`unsupported patch type "${e.type}"`)},zI=(e,r)=>{wi(e,r);let n=new Set;return e.forEach((o,a)=>{let t=`${r}[${a}]`;He(o,t),Qe(o,OI,t),Ze(o,["fileId"],t),NI(o.fileId,`${t}.fileId`),o.mimeType!==void 0&&(typeof o.mimeType!="string"||o.mimeType.length===0)&&q(`${t}.mimeType`,"expected a non-empty string"),n.has(o.fileId)&&q(`${t}.fileId`,`duplicate fileId "${o.fileId}"`),n.add(o.fileId)}),n},GI=({packageId:e,packageData:r,path:n,projectData:o,lineIndex:a,canonicalFileIds:t})=>{He(r,n),Qe(r,PI,n),Ze(r,["language","files","patches"],n),lt(r.language,`${n}.language`);let s=zI(r.files,`${n}.files`);wi(r.patches,`${n}.patches`);let i=new Set,l=r.patches.map((c,u)=>{let p=YI({patch:c,path:`${n}.patches[${u}]`,projectData:o,lineIndex:a,packageFileIds:s,canonicalFileIds:t});return i.has(p.key)&&q(`${n}.patches[${u}]`,`duplicate patch target "${p.key}"`),i.add(p.key),p});return{id:e,data:r,fileIds:s,patches:l}},hp=({projectData:e,l10nData:r})=>{if(r===void 0)return{packages:new Map};He(r,"l10nData"),Qe(r,new Set(["packages"]),"l10nData"),Ze(r,["packages"],"l10nData"),He(r.packages,"l10nData.packages");let n=DI(e),o=vs(e?.resources??{}),a=new Map,t=new Map;for(let[s,i]of Object.entries(r.packages)){ct(s,`l10nData.packages.${s}`);let l=GI({packageId:s,packageData:i,path:`l10nData.packages.${s}`,projectData:e,lineIndex:n,canonicalFileIds:o});for(let c of l.fileIds){o.has(c)&&q(`l10nData.packages.${s}.files`,`fileId "${c}" conflicts with a canonical project file`);let u=t.get(c);u!==void 0&&q(`l10nData.packages.${s}.files`,`fileId "${c}" is already declared by package "${u}"`),t.set(c,s)}BI(e,l),a.set(s,l)}return{packages:a}},HI=(e,r)=>{let{collectionName:n,patch:o}=r;e.resources[n]??={},e.resources[n][o.resourceId]=cr(o.payload)},XI=(e,r)=>{let{patch:n}=r,o=e.story.scenes[n.sceneId];o.name=n.payload.name},WI=(e,r)=>{let{location:n,patch:o}=r,a=yp(e,n);if(o.actionType!=="dialogue"){a.actions[o.actionType]=cr(o.payload);return}let t=cr(n.line.actions.dialogue.content);a.actions.dialogue=cr(o.payload),t!==void 0&&(a.actions.dialogue.content=t)},KI=(e,r)=>{let{location:n,patch:o}=r,a=yp(e,n);a.actions.dialogue.content=cr(o.payload.content)},gp=({projectData:e,l10nData:r})=>{let n=hp({projectData:e,l10nData:r});return[{l10nId:null,language:null},...Array.from(n.packages.values(),o=>({l10nId:o.id,language:o.data.language}))]},As=({projectData:e,l10nData:r,l10nId:n=null})=>{let o=hp({projectData:e,l10nData:r});if(n!==null&&(ct(n,"l10nId"),o.packages.has(n)||q("l10nId",`package "${n}" was not imported`)),n===null)return e;let a=cr(e),t=o.packages.get(n).patches;return t.filter(s=>s.kind==="resource").forEach(s=>HI(a,s)),t.filter(s=>s.kind==="story.scene").forEach(s=>XI(a,s)),t.filter(s=>s.kind==="line.action").forEach(s=>WI(a,s)),t.filter(s=>s.kind==="line.dialogue").forEach(s=>KI(a,s)),a};var JI=new Set(["loadSlot","resetStoryAtSection","rollbackByOffset","rollbackToLine","updateLocalizationPackage","updateProjectData"]),QI=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),bp="conditional",Ai=Symbol("conditionalAutoContinue"),ZI=new Set(["sectionTransition","resetStoryAtSection"]),e0=new Set(["nextLine","nextLineFromSystem","resetStoryAtSection","sectionTransition"]),r0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),t0=new Set(["nextLine","nextLineFromSystem"]),n0=new Set(["loadSlot","rollbackByOffset","rollbackToLine"]),vi="form",s0=new Set(["submitForm","cancelForm"]),o0="showImageGalleryVariant",i0="playMusicRoomTrack",a0="startSceneReplay",Xe=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),l0=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`,ks=e=>e?.type===Ai,Ur=(e,r)=>e?.sectionId===r?.sectionId&&e?.lineId===r?.lineId;function ki(e){let r=l0(),n,o=0,a=!1,t=0,s=null,i=0,l=!1,c=0,u=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g,h,I=null,{handlePendingEffects:b}=e,x=w=>{if(!a||!n)throw new Error(`RouteEngine ${w} requires an active engine`)},v=(w=new Map,E=Date.now())=>new Map(Array.from(w.entries()).filter(([,R])=>E<R.expiresAt).map(([R,O])=>[R,{animation:structuredClone(O.animation),startedAt:O.startedAt,expiresAt:O.expiresAt}])),k=(w=new Map)=>Array.from(w.values()).map(E=>structuredClone(E.animation)),S=(w=Date.now())=>{d=new Map(Array.from(d.entries()).filter(([,E])=>w<E.expiresAt))},C=()=>{if(a&&!(i>0||l)){l=!0;try{for(;n.selectPendingEffects().length>0;){let w=n.selectCurrentPointer()?.pointer??null,E=[...n.selectPendingEffects()],R=E.map(O=>O.name!=="handleLineActions"?O:{...O,payload:{...O.payload,pointer:structuredClone(w)}});n.clearPendingEffects();try{b(R)}catch(O){throw n.clearPendingEffects(),E.forEach(M=>{n.appendPendingEffect(M)}),O}}}finally{l=!1}}},N=w=>{i+=1;let E=!1;try{let R=w();return E=!0,R}finally{i-=1,E&&C()}},P=({initialState:w,namespace:E})=>{let R=n?.selectSystemState?.()?.global?.audioCommandId??0,{l10nData:O,...M}=w,U=O===void 0?void 0:structuredClone(O),J=structuredClone(w.projectData),Z=gp({projectData:J,l10nData:U}),pe=M.global??{};if(!Xe(pe))throw new Error("Malformed global state.");let Be=pe.runtime??{};if(!Xe(Be))throw new Error("Malformed global.runtime.");let Ee=Be.localizationPackageId;if(Ee!=null&&typeof Ee!="string")throw new Error("localizationPackageId requires a string or null value");let Yr=new Set(Z.map(({l10nId:Es})=>Es).filter(Es=>Es!==null)),zr=typeof Ee=="string"&&Yr.has(Ee)?Ee:null,Yp=As({projectData:J,l10nData:U,l10nId:zr}),zp=Qc({...M,global:{...pe,localizationPackages:Z,runtime:{...Be,localizationPackageId:zr}},projectData:Yp,initialAudioCommandId:R});b.reset?.(),n=zp,o+=1,a=!0,t=0,s=at(E),i=0,l=!1,c=0,u=[],p=null,m=null,d=new Map,f=new Map,y=new Map,g=J,h=U,I=zr,n.appendPendingEffect({name:"handleLineActions"}),C()},T=()=>{a&&(a=!1,o+=1,n?.clearPendingEffects?.(),i=0,l=!1,u=[],p=null,m=null,d=new Map,f=new Map,y=new Map,b.dispose?.())},V=()=>s,le=()=>n.selectPresentationState(),G=()=>n.selectPresentationChanges(),ee=w=>n.selectSectionLineChanges(w),Pe=(w={})=>{x("rendering"),t+=1;let E=Date.now();S(E);let R=f.size>0,O=v(d,E),M=R?v(f,E):new Map,J={...n.selectRenderState({activePersistentAnimations:k(O),restoredPersistentAnimations:k(M)}),id:`render-${r}-${o}-${t}`};return y.set(J.id,{builtAt:E,persistentAnimationSessions:new Map([...M.entries(),...O.entries()]),usedRestoredPersistentAnimationSessions:R}),J},Fe=(w={})=>Pe(w),oe=(w={})=>Pe(w),me=w=>{if(!a||!n)return;let E=typeof w?.id=="string"&&w.id.length>0?w.id:null,R=E?y.get(E):null;E&&y.delete(E);let O=new Map;Qa(w?.animations).forEach(M=>{let U=bn(M);if(!U)return;let J=R?.persistentAnimationSessions?.get(U)??d.get(U),Z=Math.max(0,rl(M)),pe=J?.startedAt??R?.builtAt??Date.now();O.set(U,{animation:structuredClone(M),startedAt:pe,expiresAt:pe+Z})}),d=O,R?.usedRestoredPersistentAnimationSessions&&(f=new Map)},Ae=()=>n.selectSystemState(),ye=()=>n.selectAchievements(),re=w=>n.selectAchievement(w),ce=()=>n.selectSaveSlotMap(),se=w=>n.selectSaveSlot(w),ie=w=>n.selectSaveSlotPage(w),Ue=()=>n.selectImageGallery(),ur=()=>n.selectMusicRoom(),Oe=()=>n.selectSceneReplay(),$=()=>n.selectIsSceneReplayActive(),j=()=>n.selectSkipMode(),F=()=>n.selectAutoMode(),K=()=>n.selectRuntime(),xe=()=>n.selectIsChoiceVisible(),pr=()=>n.selectIsFormVisible(),Ie=()=>n.selectActiveInteraction(),ue=()=>n.selectPendingEffects().some(w=>w?.name==="handleLineActions"||w?.name==="render"),ut=(w,E,R={})=>!Xe(E)||w!=="nextLine"?E:R.bypassChoice===!0?{...E,bypassChoice:!0}:R.interactionSource===vi?{...E,_interactionSource:vi}:E,Br=(w={})=>({type:Ai,payload:ut("nextLine",{_conditionalContinuation:!0},w)}),Ei=(w,E)=>ks(w)?{type:Ai,payload:{...w.payload,...E.payload}}:E,kp=w=>{w.savedCheckpointOccurrences.forEach(E=>{n.markSavedRollbackCheckpointTransient(E)}),w.savedCheckpointOccurrences=[]},Pp=(w,E)=>{let R=p;return p=null,!R||!Ur(R.pointer,w)||R.checkpointIndex!==E?.checkpointIndex||R.checkpointIdentity!==E?.checkpoint?[]:R.savedCheckpointOccurrences},xp=w=>{let E=m;return!E||!Ur(E.pointer,w)?null:(m=null,E)},Ep=({actionType:w,pointerBeforeAction:E,pointerAfterAction:R,cursorBeforeAction:O,cursorAfterAction:M,wasSceneReplayActive:U,isSceneReplayActive:J})=>{!R||!(!Ur(E,R)||O?.checkpoint!==M?.checkpoint||O?.checkpointIndex!==M?.checkpointIndex||w==="jumpToLine")||(m={pointer:R,appendToPrevious:t0.has(w)&&U===J&&E?.sectionId===R.sectionId&&E?.lineId!==R.lineId,reuseExistingOccurrence:n0.has(w),forceNewOccurrence:w==="jumpToLine"})},Si=w=>{w.markCurrentCheckpointTransient&&(n.markRollbackCheckpointTransient({checkpointIndex:w.rollbackCursor?.checkpointIndex,checkpointIdentity:w.rollbackCursor?.checkpoint,sectionId:w.pointer?.sectionId,lineId:w.pointer?.lineId}),kp(w))},Sp=(w,E,R)=>e0.has(w)?w==="resetStoryAtSection"?R?.checkpoint!==E?.checkpoint:R?.checkpoint!==E?.checkpoint&&R?.checkpointIndex>E?.checkpointIndex:!1,Rp=w=>{let E=u.at(-1);if(!E?.markCurrentCheckpointTransient)return;let R=n.selectSaveSlot({slotId:w?.slotId});R&&E.savedCheckpointOccurrences.push({slotId:w.slotId,saveSlotIdentity:R,checkpointIndex:E.rollbackCursor?.checkpointIndex,sectionId:E.pointer?.sectionId,lineId:E.pointer?.lineId})},Op=(w,E,R)=>{let O=u.at(-1);if(!O)return;let M=n.selectCurrentPointer()?.pointer,U=Sp(w,E,R);if(Ur(O.pointer,M)){let J=R?.checkpoint!==E?.checkpoint||R?.checkpointIndex!==E?.checkpointIndex;U||J&&r0.has(w)?(Si(O),O.pointer=M,O.rollbackCursor=R,O.markCurrentCheckpointTransient=U,O.savedCheckpointOccurrences=[]):J&&w==="updateProjectData"&&(O.rollbackCursor=R);return}Si(O),O.pointer=M,O.rollbackCursor=n.selectRollbackCursor?.()??null,O.markCurrentCheckpointTransient=U,O.savedCheckpointOccurrences=[]},Ht=(w,E)=>{if(x(`action "${w}"`),!n[w])return;let R=E,O,M;if(w==="updateProjectData")Ri(E),O=structuredClone(E.projectData),R={...E,projectData:As({projectData:O,l10nData:h,l10nId:I})},Ri(R);else if(w==="updateLocalizationPackage"){if(M=Cp(E),M===I)return;R={l10nId:M,projectData:As({projectData:g,l10nData:h,l10nId:M})}}ZI.has(w)&&(c+=1);let U=n.selectIsSceneReplayActive?.()===!0,J=QI.has(w)?v(d):null,Z=n.selectCurrentPointer()?.pointer??null,pe=n.selectRollbackCursor?.()??null,Be=n[w](R);O!==void 0&&(g=O),M!==void 0&&(I=M),JI.has(w)&&(f=J??new Map,d=new Map);let Ee=n.selectIsSceneReplayActive?.()===!0;U!==Ee&&(d=new Map,f=new Map);let Yr=n.selectCurrentPointer()?.pointer??null,zr=n.selectRollbackCursor?.()??null;return w==="saveSlot"&&Rp(E),Op(w,pe,zr),Ep({actionType:w,pointerBeforeAction:Z,pointerAfterAction:Yr,cursorBeforeAction:pe,cursorAfterAction:zr,wasSceneReplayActive:U,isSceneReplayActive:Ee}),C(),Be},Ri=w=>{if(!Object.prototype.hasOwnProperty.call(w??{},"projectData"))throw new Error("updateProjectData requires projectData");_r(w?.projectData?.resources?.variables??{}),gt(w.projectData),bt(w.projectData),It(w.projectData)},Cp=w=>{if(!Xe(w))throw new Error("updateLocalizationPackage requires an object payload");let E=Object.keys(w);if(E.length!==1||E[0]!=="l10nId")throw new Error("updateLocalizationPackage only accepts l10nId");if(w.l10nId!==null&&(typeof w.l10nId!="string"||w.l10nId.length===0))throw new Error("updateLocalizationPackage requires a non-empty l10nId or null");return w.l10nId},$p=(w,E,R)=>{let O=n.selectCurrentPointer()?.pointer;E!==O||R!==c||(n.appendPendingEffect({name:"clearAutoNextTimer"}),n.appendPendingEffect({name:"clearNextLineConfigTimer"}),Ht("nextLineFromSystem",w.payload))},_p=()=>({renderSequence:t,conditionalRoutingSequence:c,rollbackNavigationContexts:u.slice(),pendingRollbackLineEntrySaveHandoff:p,pendingDialogueHistoryLineEntry:m,persistentAnimationSessions:new Map(d),restoredPersistentAnimationSessions:new Map(f),renderPersistentAnimationMetadata:new Map(y),canonicalProjectData:g,localizationPackageId:I}),jp=w=>{t=w.renderSequence,c=w.conditionalRoutingSequence,u=w.rollbackNavigationContexts.slice(),p=w.pendingRollbackLineEntrySaveHandoff,m=w.pendingDialogueHistoryLineEntry,d=new Map(w.persistentAnimationSessions),f=new Map(w.restoredPersistentAnimationSessions),y=new Map(w.renderPersistentAnimationMetadata),g=w.canonicalProjectData,I=w.localizationPackageId},Oi=(w,E={})=>(x("action batch"),N(()=>{let R=_p();try{return n[Zs](()=>{let O,M=n.selectCurrentPointer()?.pointer??null,U=n.selectRollbackCursor?.()??null,J=c,Z={pointer:M,rollbackCursor:U,markCurrentCheckpointTransient:E.rollbackSource==="line",savedCheckpointOccurrences:E.savedCheckpointOccurrences?.slice()??[]};u.push(Z);try{n.beginRollbackActionBatch({source:E.rollbackSource});try{O=w()}finally{n.endRollbackActionBatch({})}ks(O)&&$p(O,M,J);let pe=n.selectCurrentPointer()?.pointer??null;E.rollbackSource==="line"&&Ur(M,pe)&&n.recordCurrentDialogueHistory({savedCheckpointOccurrences:Z.savedCheckpointOccurrences,appendToPrevious:E.dialogueHistoryAppendToPrevious===!0,reuseExistingOccurrence:E.dialogueHistoryReuseExistingOccurrence===!0,forceNewOccurrence:E.dialogueHistoryForceNewOccurrence===!0})}finally{u.pop(),(!Ur(M,Z.pointer)||U?.checkpoint!==Z.rollbackCursor?.checkpoint)&&Z.markCurrentCheckpointTransient&&Z.savedCheckpointOccurrences.length>0&&(p={pointer:Z.pointer,checkpointIndex:Z.rollbackCursor?.checkpointIndex,checkpointIdentity:Z.rollbackCursor?.checkpoint,savedCheckpointOccurrences:Z.savedCheckpointOccurrences})}})}catch(O){throw jp(R),O}})),Ci=(w,E,R,O={})=>{if(w===bp)return Oi(()=>{let M=Ps(R),U=so({[w]:E},M);return $i(U[w],R,O)},O);Ht(w,E)},Np=(w,E)=>{Ci(w,E)},Ps=w=>{if(!w)return{variables:n.selectAllVariables?n.selectAllVariables():void 0,runtime:n.selectRuntime?n.selectRuntime():{}};if(Object.prototype.hasOwnProperty.call(w,"event"))throw new Error('eventContext key "event" is no longer supported. Use "_event".');let{_event:E,...R}=w,O=n.selectAllVariables?n.selectAllVariables():void 0;return{...R,_event:E,variables:O,runtime:n.selectRuntime?n.selectRuntime():{}}},Dp=w=>{if(!Xe(w))return{templatePayload:w,literalTargetIds:null};let E=n.selectImageGalleryConfig();if(!Array.isArray(E?.groups))return{templatePayload:w,literalTargetIds:null};let R=typeof w.groupId=="string"?E.groups.find(M=>M.id===w.groupId):void 0;if(!R)return{templatePayload:w,literalTargetIds:null};let O=typeof w.variantId=="string"&&R.variants.some(M=>M.id===w.variantId);return{templatePayload:{...w,groupId:null,...O?{variantId:null}:{}},literalTargetIds:{groupId:w.groupId,...O?{variantId:w.variantId}:{}}}},Lp=w=>!Xe(w)||typeof w.trackId!="string"?{templatePayload:w,literalTargetIds:null}:n.selectMusicRoomConfig()?.tracks?.some(O=>O.id===w.trackId)?{templatePayload:{...w,trackId:null},literalTargetIds:{trackId:w.trackId}}:{templatePayload:w,literalTargetIds:null},Tp=w=>!Xe(w)||typeof w.sceneId!="string"?{templatePayload:w,literalTargetIds:null}:n.selectSceneReplayConfig()?.replays?.some(O=>O.sceneId===w.sceneId)?{templatePayload:{...w,sceneId:null},literalTargetIds:{sceneId:w.sceneId}}:{templatePayload:w,literalTargetIds:null},Mp=w=>{if(!Xe(w))throw new Error("conditional action payload must be an object");if(!Array.isArray(w.branches))throw new Error("conditional action requires branches array");if(w.branches.length===0)throw new Error("conditional action requires at least one branch")},qp=(w,E,R)=>{if(!Xe(w))throw new Error(`conditional branch at index ${E} must be an object`);if(!Xe(w.actions))throw new Error(`conditional branch at index ${E} requires actions object`);if(!Object.prototype.hasOwnProperty.call(w,"when")&&E!==R-1)throw new Error("conditional else branch must be the last branch")},$i=(w,E,R)=>{Mp(w);let O=Br(R);for(let M=0;M<w.branches.length;M+=1){let U=w.branches[M];qp(U,M,w.branches.length);let J=Ps(E);if(Object.prototype.hasOwnProperty.call(U,"when")&&!ht(U.when,J))continue;let pe=xs(U.actions,E,R);return ks(pe)?Ei(O,pe):O}return O},Vp=(w,E)=>({...w??{},_form:E}),Fp=(w,E,R,O)=>{let M=Ht(w,E),U=M?.submitted===!0&&M.valid===!0,J=M?.cancelled===!0;if(!(!U&&!J)&&Xe(E.actions))return xs(E.actions,Vp(R,M.form),{...O,interactionSource:vi})},Up=(w,E,R,O)=>{let M=Ps(R),U={templatePayload:E,literalTargetIds:null};w===o0?U=Dp(E):w===i0?U=Lp(E):w===a0&&(U=Tp(E));let{templatePayload:J,literalTargetIds:Z}=U,Be=so({[w]:J},M)[w],Ee=Z?{...Be,...Z}:Be;if(w===bp)return $i(Ee,R,O);let Yr=ut(w,Ee,O);if(s0.has(w))return Fp(w,Yr,R,O);Ht(w,Yr)},xs=(w,E,R)=>{let O;return Object.entries(w).forEach(([M,U])=>{let J=Up(M,U,E,R);ks(J)&&(O=Ei(O,J))}),O},_i=(w,E,R={})=>Oi(()=>xs(w,E,R),R),Bp=w=>{let E=n.selectCurrentPointer()?.pointer;if(w!==E||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:P,dispose:T,handleAction:Ci,handleInternalAction:Np,handleActions:_i,selectRenderState:Fe,prepareRenderState:oe,commitRenderState:me,selectPresentationState:le,selectPresentationChanges:G,selectSectionLineChanges:ee,selectSystemState:Ae,selectAchievements:ye,selectAchievement:re,selectSaveSlotMap:ce,selectSaveSlot:se,selectSaveSlotPage:ie,selectSaveSlots:ce,selectImageGallery:Ue,selectMusicRoom:ur,selectSceneReplay:Oe,selectIsSceneReplayActive:$,selectRuntime:K,selectIsChoiceVisible:xe,selectIsFormVisible:pr,selectActiveInteraction:Ie,selectHasPendingRenderWork:ue,handleLineActions:w=>{x("line action handling");let E=n.selectCurrentPointer()?.pointer;if(w?.pointer&&!Ur(w.pointer,E))return!1;if(typeof w?.sceneReplaySceneId=="string"){let R=n.selectActiveSceneReplayEntry?.();if(R?.sceneId!==w.sceneReplaySceneId||R?.entryId!==w.entryId)return!1}return N(()=>{let R=n.selectCurrentPointer()?.pointer,O=n.selectRollbackCursor?.()??null,M=p,U=m,J=Pp(R,O),Z=xp(R),pe=n.selectCurrentLine(),Be=!1;if(pe?.actions){try{_i(pe.actions,void 0,{rollbackSource:"line",savedCheckpointOccurrences:J,dialogueHistoryAppendToPrevious:Z?.appendToPrevious===!0,dialogueHistoryReuseExistingOccurrence:Z?.reuseExistingOccurrence===!0,dialogueHistoryForceNewOccurrence:Z?.forceNewOccurrence===!0})}catch(Ee){throw p=M,m=U,Ee}Be=!0}return Bp(R),Be})},getNamespace:V}}var Pi=()=>{let e=0,r=null;return{getElapsed:()=>e,setElapsed:n=>{e=n},addElapsed:n=>{e+=n},getCallback:()=>r,setCallback:n=>{r=n}}},c0=80,u0="music-room:player",vp=new Map([["soundReady","musicRoomSoundReady"],["soundProgress","musicRoomSoundProgress"],["soundComplete","musicRoomSoundComplete"],["soundError","musicRoomSoundError"]]),Ip=(e,r)=>vp.has(e)&&r?._event?.id===u0,Ap=({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)},p0=({engine:e,routeGraphics:r,trackRenderDispatch:n,getRenderDispatchCount:o,lifecycleGeneration:a,isCurrentLifecycle:t},s)=>{let i=o?.()??0,l=e.handleLineActions(s);(o?.()??0)===i&&Ap({engine:e,routeGraphics:r,trackRenderDispatch:n,lifecycleGeneration:a,isCurrentLifecycle:t},s)},xi=({ticker:e,timerState:r,callback:n})=>{e.remove(n),r.getCallback()===n&&(r.setCallback(null),r.setElapsed(0))},d0=({engine:e,ticker:r,autoTimer:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{let s=n.getCallback();s&&r.remove(s),n.setElapsed(0);let i=l=>{if(!a(o)){xi({ticker:r,timerState:n,callback:i});return}n.addElapsed(l.deltaMS);let c=t.delay??1e3;n.getElapsed()>=c&&(r.remove(i),n.setCallback(null),n.setElapsed(0),Gt(e,"nextLineFromSystem",{}))};n.setCallback(i),r.add(i)},f0=({ticker:e,autoTimer:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},m0=({engine:e,ticker:r,skipTimer:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{let s=n.getCallback();s&&r.remove(s),n.setElapsed(0);let i=l=>{if(!a(o)){xi({ticker:r,timerState:n,callback:i});return}n.addElapsed(l.deltaMS);let c=t?.delay??c0;n.getElapsed()>=c&&(n.setElapsed(0),Gt(e,"nextLineFromSystem",{}))};n.setCallback(i),r.add(i)},y0=({ticker:e,skipTimer:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},h0=({engine:e,ticker:r,nextLineConfigTimerState:n,lifecycleGeneration:o,isCurrentLifecycle:a},t)=>{let s=n.getCallback();s&&r.remove(s),n.setElapsed(0);let i=l=>{if(!a(o)){xi({ticker:r,timerState:n,callback:i});return}n.addElapsed(l.deltaMS);let c=t.delay??1e3;n.getElapsed()>=c&&(n.setElapsed(0),Gt(e,"nextLineFromSystem",{}),r.remove(i),n.getCallback()===i&&n.setCallback(null))};n.setCallback(i),r.add(i)},g0=({ticker:e,nextLineConfigTimerState:r},n)=>{let o=r.getCallback();o&&(e.remove(o),r.setCallback(null)),r.setElapsed(0)},b0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveSlots(r?.saveSlots))},I0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalDeviceVariables(r?.globalDeviceVariables))},w0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalAccountVariables(r?.globalAccountVariables))},v0=({enqueuePersistenceWrite:e},r)=>{e(n=>n.saveGlobalRuntime(r?.globalRuntime))},A0=({enqueuePersistenceWrite:e},r)=>{e(n=>{if(typeof n.applyScopedDataUpdates!="function")throw new Error("RouteEngine persistence adapter must implement applyScopedDataUpdates.");return n.applyScopedDataUpdates(r?.updates)})},wp={render:Ap,saveSlots:b0,saveGlobalDeviceVariables:I0,saveGlobalAccountVariables:w0,saveGlobalRuntime:v0,applyScopedDataUpdates:A0,handleLineActions:p0,startAutoNextTimer:d0,clearAutoNextTimer:f0,startSkipNextTimer:m0,clearSkipNextTimer:y0,nextLineConfigTimer:h0,clearNextLineConfigTimer:g0},k0=new Set(["render","handleLineActions","saveSlots","saveGlobalDeviceVariables","saveGlobalAccountVariables","saveGlobalRuntime","startAutoNextTimer","clearAutoNextTimer","startSkipNextTimer","clearSkipNextTimer","nextLineConfigTimer","clearNextLineConfigTimer"]),Gt=(e,r,n)=>{(e.handleInternalAction??e.handleAction?.bind(e))?.(r,n)},P0=(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(!k0.has(a.name)){n.unshift(a);continue}r.has(a.name)||(r.add(a.name),n.unshift(a))}return n},x0=({getEngine:e,routeGraphics:r,ticker:n,handleUnhandledEffect:o,handlePersistenceError:a,indexedDB:t,persistence:s,namespace:i})=>{let l=Pi(),c=Pi(),u=Pi(),p=new Map,m=Promise.resolve(),d=null,f=null,y=!1,g=0,h=0,I=!0,b=$=>{let j=$.getCallback();j&&n.remove(j),$.setCallback(null),$.setElapsed(0)},x=()=>{b(l),b(c),b(u)},v=()=>{d=null,f=null,y=!1,g=0},k=()=>{h+=1,x(),v(),I=!0},S=()=>{h+=1,I=!1,x(),v()},C=$=>I&&$===h,N=$=>{if(a){a($);return}console.error("RouteEngine persistence write failed.",$)},P=$=>{if(s)return s;let j=at($),F=p.get(j);if(F)return F;let K=bi({indexedDB:t,namespace:j});return p.set(j,K),K},T=$=>{let j=s?null:at(i??e()?.getNamespace?.()),F;m=m.catch(()=>{}).then(()=>(F=P(j),$(F))).catch(K=>{!s&&p.get(j)===F&&p.delete(j),N(K)})},V=$=>{if(!I)return;let j=typeof $?.id=="string"&&$.id.length>0?$.id:null;g+=1,d=j,y=!1},le=()=>g,G=($={})=>{if(!I||$?.aborted===!0)return!1;let j=typeof $?.id=="string"&&$.id.length>0?$.id:null;return j?j!==d||j===f?!1:(f=j,!0):d!==null||y?!1:(y=!0,!0)},ee=($,j={})=>{if(!I)return!1;if(Ip($,j)){let K=vp.get($),xe=e();return Gt(xe,K,j?._event),!0}if($!=="renderComplete"||!G(j))return!1;let F=e();return Gt(F,"markLineCompleted",{}),!0},Pe=new Set(["updateFormField","submitForm","cancelForm"]),Fe=new Set(["updateVariable"]),oe=$=>typeof $?.selectActiveInteraction=="function"?$.selectActiveInteraction():typeof $?.selectIsChoiceVisible=="function"&&$.selectIsChoiceVisible()?{source:"choice"}:null,me=$=>$?._formKey??$?.formKey,Ae=($,j)=>me($)===j?.formKey,ye=($,j)=>!$||typeof $!="object"||Array.isArray($)?!1:$._interactionSource===j?.source,re=($,j)=>ye($,j)?j.source==="form"?Ae($,j):!0:!1,ce=($,j)=>!$||typeof $!="object"||Array.isArray($)||j?.source!=="form"?!1:Ae($,j),se=($={},j)=>Object.keys($).length>0&&Object.entries($).every(([F,K])=>Pe.has(F)?ce(K,j):Fe.has(F)),ie=($={},j)=>{let F=$?.actions;return j?.source==="form"?!F||typeof F!="object"||Array.isArray(F)?!1:se(F,j):re($,j)?!0:!F||typeof F!="object"||Array.isArray(F)?!1:Object.values(F).some(K=>re(K,j))},Ue=($,j={})=>{if(!j?.actions)return!1;let F=oe($);return!F||F.source==="choice"?!1:!ie(j,F)},ur=({preprocessPayload:$,onEvent:j}={})=>async(F,K={})=>{if(!I)return!1;if(Ip(F,K))return ee(F,K),j?.(F,K);let xe=e(),pr=h,Ie=g;if(Ue(xe,K))return j?.(F,K);let ue=await $?.(F,K)??K;if(!C(pr)||e()!==xe||g!==Ie)return!1;if(Ue(xe,ue))return j?.(F,ue);if(ee(F,ue),ue?.actions){let ut=ue?._event?{_event:ue._event}:ue?.event?{_event:ue.event}:void 0,Br;ue?.bypassChoice===!0?Br={bypassChoice:!0}:ue?._interactionSource&&(Br={interactionSource:ue._interactionSource}),Br?xe.handleActions(ue.actions,ut,Br):xe.handleActions(ue.actions,ut)}return j?.(F,ue)},Oe=$=>{if(!I)return;let j=h,F=e(),K=P0($),xe=K.some(Ie=>Ie.name==="handleLineActions");K.forEach(Ie=>{if(!wp[Ie.name]&&!o)throw new Error(`Unhandled pending effect "${Ie.name}".`)});let pr={engine:F,routeGraphics:r,ticker:n,autoTimer:l,skipTimer:c,nextLineConfigTimerState:u,trackRenderDispatch:V,getRenderDispatchCount:le,enqueuePersistenceWrite:T,lifecycleGeneration:h,isCurrentLifecycle:C};for(let Ie of K){if(!C(j))break;if(xe&&Ie.name==="render")continue;let ue=wp[Ie.name];if(ue){ue(pr,Ie.payload);continue}o(Ie,pr)}};return Oe.handleRouteGraphicsEvent=ee,Oe.createRouteGraphicsEventHandler=ur,Oe.reset=k,Oe.dispose=S,Oe},E0=x0;var S0=(e,r={})=>{let{resources:n={}}=r;return _o(e,n)};var uv=ki;export{co as DEFAULT_VISUAL_LAYER,Kr as RENDER_LAYER,er as VISUAL_LAYER,E0 as createEffectsHandler,oI as createIndexedDbPersistence,uv as default,ro as formatDate,gf as resolveComputedVariables,S0 as resolveLayoutReferences};