@drincs/pixi-vn-ink 1.0.2 → 1.0.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.
- package/README.md +1 -1
- package/dist/{chunk-U7O2G6DA.mjs → chunk-5BQNOYNF.mjs} +42 -42
- package/dist/{chunk-F3OIOHOF.mjs → chunk-LR3BVY4G.mjs} +1 -1
- package/dist/index.cjs +41 -41
- package/dist/index.d.cts +7 -6
- package/dist/index.d.ts +7 -6
- package/dist/index.mjs +1 -1
- package/dist/parser.d.cts +4 -94
- package/dist/parser.d.ts +4 -94
- package/dist/types-2rYZij6C.d.cts +95 -0
- package/dist/types-2rYZij6C.d.ts +95 -0
- package/dist/vite/client.d.ts +1 -1
- package/dist/vite-listener.cjs +40 -40
- package/dist/vite-listener.d.cts +2 -2
- package/dist/vite-listener.d.ts +2 -2
- package/dist/vite-listener.mjs +1 -1
- package/dist/vite.cjs +57 -57
- package/dist/vite.d.cts +86 -2
- package/dist/vite.d.ts +86 -2
- package/dist/vite.mjs +1 -1
- package/package.json +3 -4
- package/dist/types-D6WoW3qe.d.cts +0 -51
- package/dist/types-D6WoW3qe.d.ts +0 -51
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
import {createExportableElement,PixiError}from'@drincs/pixi-vn';import {canvas,VideoSprite,showVideo,Assets,Text,showText,ImageSprite,showImage,ImageContainer,showImageContainer,shakeEffect,pushOut,zoomOut,moveOut,removeWithDissolve,removeWithFade,pushIn,zoomIn,moveIn,showWithDissolve,showWithFade}from'@drincs/pixi-vn/canvas';import {NarrationManagerStatic,narration,RegisteredLabels,LabelAbstract}from'@drincs/pixi-vn/narration';import {sound}from'@drincs/pixi-vn/sound';import {storage}from'@drincs/pixi-vn/storage';import {RegisteredCharacters}from'@drincs/pixi-vn/characters';import g,{ZodType}from'zod';var kc=Object.create;var na=Object.defineProperty;var Rc=Object.getOwnPropertyDescriptor;var Lc=Object.getOwnPropertyNames;var Bc=Object.getPrototypeOf,Wc=Object.prototype.hasOwnProperty;var jc=(i,e,t)=>e in i?na(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t;var Vt=(i=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(i,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):i)(function(i){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var b=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var qc=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Lc(e))!Wc.call(i,r)&&r!==t&&na(i,r,{get:()=>e[r],enumerable:!(n=Rc(e,r))||n.enumerable});return i};var ia=(i,e,t)=>(t=i!=null?kc(Bc(i)):{},qc(e||!i||!i.__esModule?na(t,"default",{value:i,enumerable:true}):t,i));var iy=(i,e,t)=>jc(i,typeof e!="symbol"?e+"":e,t);var Oa=b(Ni=>{Object.defineProperty(Ni,"__esModule",{value:true});Ni.CompilerOptions=void 0;var Ta=class{constructor(e=null,t=[],n=false,r=null,a=null){this.sourceFilename=e,this.pluginNames=t,this.countAllVisits=n,this.errorHandler=r,this.fileHandler=a;}};Ni.CompilerOptions=Ta;});var Bu=b(Ii=>{Object.defineProperty(Ii,"__esModule",{value:true});Ii.DebugSourceRange=void 0;var Pa=class{constructor(e,t,n){this.length=e,this.debugMetadata=t,this.text=n;}};Ii.DebugSourceRange=Pa;});var tn=b(Vi=>{Object.defineProperty(Vi,"__esModule",{value:true});Vi.ErrorType=void 0;var Wu;(function(i){i[i.Author=0]="Author",i[i.Warning=1]="Warning",i[i.Error=2]="Error";})(Wu||(Vi.ErrorType=Wu={}));});var ju=b(ki=>{Object.defineProperty(ki,"__esModule",{value:true});ki.Argument=void 0;var Fa=class{constructor(e=null,t=null,n=null){this.identifier=e,this.isByReference=t,this.isDivertTarget=n;}get typeName(){return "Argument"}};ki.Argument=Fa;});var U=b(ue=>{Object.defineProperty(ue,"__esModule",{value:true});ue.filterUndef=ue.isEquatable=ue.nullIfUndefined=ue.asINamedContentOrNull=ue.asBooleanOrThrows=ue.asNumberOrThrows=ue.asOrThrows=ue.asOrNull=void 0;function hp(i,e){return i instanceof e?qu(i):null}ue.asOrNull=hp;function cp(i,e){if(i instanceof e)return qu(i);throw new Error(`${i} is not of type ${e}`)}ue.asOrThrows=cp;function dp(i){if(typeof i=="number")return i;throw new Error(`${i} is not a number`)}ue.asNumberOrThrows=dp;function pp(i){if(typeof i=="boolean")return i;throw new Error(`${i} is not a boolean`)}ue.asBooleanOrThrows=pp;function fp(i){return i.hasValidName&&i.name?i:null}ue.asINamedContentOrNull=fp;function mp(i){return typeof i>"u"?null:i}ue.nullIfUndefined=mp;function gp(i){return typeof i=="object"&&typeof i.Equals=="function"}ue.isEquatable=gp;function qu(i,e){return i}function Cp(i){return i!=null}ue.filterUndef=Cp;});var Z=b(Ri=>{Object.defineProperty(Ri,"__esModule",{value:true});Ri.ParsedObject=void 0;var Mu=U(),Na=class{constructor(){this._alreadyHadError=false,this._alreadyHadWarning=false,this._debugMetadata=null,this._runtimeObject=null,this.content=[],this.parent=null,this.GetType=()=>this.typeName,this.AddContent=e=>{this.content===null&&(this.content=[]);let t=Array.isArray(e)?e:[e];for(let n of t)n.hasOwnProperty("parent")&&(n.parent=this),this.content.push(n);if(!Array.isArray(e))return e},this.InsertContent=(e,t)=>(this.content===null&&(this.content=[]),t.parent=this,this.content.splice(e,0,t),t),this.Find=e=>(t=null)=>{let n=(0, Mu.asOrNull)(this,e);if(n!==null&&(t===null||t(n)===true))return n;if(this.content===null)return null;for(let r of this.content){let a=r.Find&&r.Find(e)(t);if(a)return a}return null},this.FindAll=e=>(t,n)=>{let r=Array.isArray(n)?n:[],a=(0, Mu.asOrNull)(this,e);if(a!==null&&(!t||t(a)===true)&&r.push(a),this.content===null)return [];for(let s of this.content)s.FindAll&&s.FindAll(e)(t,r);return r},this.Warning=(e,t=null)=>{this.Error(e,t,true);};}get debugMetadata(){return this._debugMetadata===null&&this.parent?this.parent.debugMetadata:this._debugMetadata}set debugMetadata(e){this._debugMetadata=e;}get hasOwnDebugMetadata(){return !!this.debugMetadata}get typeName(){return "ParsedObject"}get story(){let e=this;for(;e.parent;)e=e.parent;return e}get runtimeObject(){return this._runtimeObject||(this._runtimeObject=this.GenerateRuntimeObject(),this._runtimeObject&&(this._runtimeObject.debugMetadata=this.debugMetadata)),this._runtimeObject}set runtimeObject(e){this._runtimeObject=e;}get runtimePath(){if(!this.runtimeObject.path)throw new Error;return this.runtimeObject.path}get containerForCounting(){return this.runtimeObject}get ancestry(){let e=[],t=this.parent;for(;t;)e.push(t),t=t.parent;return e=e.reverse(),e}ResolveReferences(e){if(this.content!==null)for(let t of this.content)t.ResolveReferences(e);}Error(e,t=null,n=false){if(t===null&&(t=this),!(t._alreadyHadError&&!n||t._alreadyHadWarning&&n)){if(this.parent)this.parent.Error(e,t,n);else throw new Error(`No parent object to send error to: ${e}`);n?t._alreadyHadWarning=true:t._alreadyHadError=true;}}};Ri.ParsedObject=Na;});var Bi=b(Li=>{Object.defineProperty(Li,"__esModule",{value:true});Li.AuthorWarning=void 0;var yp=Z(),Ia=class extends yp.ParsedObject{constructor(e){super(),this.warningMessage=e,this.GenerateRuntimeObject=()=>(this.Warning(this.warningMessage),null);}get typeName(){return "AuthorWarning"}};Li.AuthorWarning=Ia;});var Ne=b(In=>{Object.defineProperty(In,"__esModule",{value:true});In.Path=void 0;var nn=class i{constructor(){if(this._components=[],this._componentsString=null,this._isRelative=false,typeof arguments[0]=="string"){let e=arguments[0];this.componentsString=e;}else if(arguments[0]instanceof i.Component&&arguments[1]instanceof i){let e=arguments[0],t=arguments[1];this._components.push(e),this._components=this._components.concat(t._components);}else if(arguments[0]instanceof Array){let e=arguments[0],t=!!arguments[1];this._components=this._components.concat(e),this._isRelative=t;}}get isRelative(){return this._isRelative}get componentCount(){return this._components.length}get head(){return this._components.length>0?this._components[0]:null}get tail(){if(this._components.length>=2){let e=this._components.slice(1,this._components.length);return new i(e)}else return i.self}get length(){return this._components.length}get lastComponent(){let e=this._components.length-1;return e>=0?this._components[e]:null}get containsNamedComponent(){for(let e=0,t=this._components.length;e<t;e++)if(!this._components[e].isIndex)return true;return false}static get self(){let e=new i;return e._isRelative=true,e}GetComponent(e){return this._components[e]}PathByAppendingPath(e){let t=new i,n=0;for(let r=0;r<e._components.length&&e._components[r].isParent;++r)n++;for(let r=0;r<this._components.length-n;++r)t._components.push(this._components[r]);for(let r=n;r<e._components.length;++r)t._components.push(e._components[r]);return t}get componentsString(){return this._componentsString==null&&(this._componentsString=this._components.join("."),this.isRelative&&(this._componentsString="."+this._componentsString)),this._componentsString}set componentsString(e){if(this._components.length=0,this._componentsString=e,this._componentsString==null||this._componentsString=="")return;this._componentsString[0]=="."&&(this._isRelative=true,this._componentsString=this._componentsString.substring(1));let t=this._componentsString.split(".");for(let n of t)/^(\-|\+)?([0-9]+|Infinity)$/.test(n)?this._components.push(new i.Component(parseInt(n))):this._components.push(new i.Component(n));}toString(){return this.componentsString}Equals(e){if(e==null||e._components.length!=this._components.length||e.isRelative!=this.isRelative)return false;for(let t=0,n=e._components.length;t<n;t++)if(!e._components[t].Equals(this._components[t]))return false;return true}PathByAppendingComponent(e){let t=new i;return t._components.push(...this._components),t._components.push(e),t}};In.Path=nn;nn.parentId="^";(function(i){class e{constructor(n){this.index=-1,this.name=null,typeof n=="string"?this.name=n:this.index=n;}get isIndex(){return this.index>=0}get isParent(){return this.name==i.parentId}static ToParent(){return new e(i.parentId)}toString(){return this.isIndex?this.index.toString():this.name}Equals(n){return n!=null&&n.isIndex==this.isIndex?this.isIndex?this.index==n.index:this.name==n.name:false}}i.Component=e;})(nn||(In.Path=nn={}));});var Vn=b(Wi=>{Object.defineProperty(Wi,"__esModule",{value:true});Wi.Debug=void 0;var Gu;(function(i){function e(n,r,a){t(n instanceof r,a);}i.AssertType=e;function t(n,r){if(!n)throw typeof r<"u"&&console.warn(r),console.trace&&console.trace(),new Error("")}i.Assert=t;})(Gu||(Wi.Debug=Gu={}));});var me=b(rn=>{Object.defineProperty(rn,"__esModule",{value:true});rn.throwNullException=rn.NullException=void 0;var ji=class extends Error{};rn.NullException=ji;function vp(i){throw new ji(`${i} is null or undefined`)}rn.throwNullException=vp;});var Ie=b(Mi=>{Object.defineProperty(Mi,"__esModule",{value:true});Mi.InkObject=void 0;var sn=Ne(),kn=se(),Va=Vn(),an=U(),qi=me(),ka=class{constructor(){this.parent=null,this._debugMetadata=null,this._path=null;}get debugMetadata(){return this._debugMetadata===null&&this.parent?this.parent.debugMetadata:this._debugMetadata}set debugMetadata(e){this._debugMetadata=e;}get ownDebugMetadata(){return this._debugMetadata}DebugLineNumberOfPath(e){if(e===null)return null;let t=this.rootContentContainer;if(t){let n=t.ContentAtPath(e).obj;if(n){let r=n.debugMetadata;if(r!==null)return r.startLineNumber}}return null}get path(){if(this._path==null)if(this.parent==null)this._path=new sn.Path;else {let e=[],t=this,n=(0, an.asOrNull)(t.parent,kn.Container);for(;n!==null;){let r=(0, an.asINamedContentOrNull)(t);if(r!=null&&r.hasValidName){if(r.name===null)return (0, qi.throwNullException)("namedChild.name");e.unshift(new sn.Path.Component(r.name));}else e.unshift(new sn.Path.Component(n.content.indexOf(t)));t=n,n=(0, an.asOrNull)(n.parent,kn.Container);}this._path=new sn.Path(e);}return this._path}ResolvePath(e){if(e===null)return (0, qi.throwNullException)("path");if(e.isRelative){let t=(0, an.asOrNull)(this,kn.Container);return t===null&&(Va.Debug.Assert(this.parent!==null,"Can't resolve relative path because we don't have a parent"),t=(0, an.asOrNull)(this.parent,kn.Container),Va.Debug.Assert(t!==null,"Expected parent to be a container"),Va.Debug.Assert(e.GetComponent(0).isParent),e=e.tail),t===null?(0, qi.throwNullException)("nearestContainer"):t.ContentAtPath(e)}else {let t=this.rootContentContainer;return t===null?(0, qi.throwNullException)("contentContainer"):t.ContentAtPath(e)}}ConvertPathToRelative(e){let t=this.path,n=Math.min(e.length,t.length),r=-1;for(let l=0;l<n;++l){let u=t.GetComponent(l),h=e.GetComponent(l);if(u.Equals(h))r=l;else break}if(r==-1)return e;let a=t.componentCount-1-r,s=[];for(let l=0;l<a;++l)s.push(sn.Path.Component.ToParent());for(let l=r+1;l<e.componentCount;++l)s.push(e.GetComponent(l));return new sn.Path(s,true)}CompactPathString(e){let t=null,n=null;return e.isRelative?(n=e.componentsString,t=this.path.PathByAppendingPath(e).componentsString):(n=this.ConvertPathToRelative(e).componentsString,t=e.componentsString),n.length<t.length?n:t}get rootContentContainer(){let e=this;for(;e.parent;)e=e.parent;return (0, an.asOrNull)(e,kn.Container)}Copy(){throw Error("Not Implemented: Doesn't support copying")}SetChild(e,t,n){e[t]&&(e[t]=null),e[t]=n,e[t]&&(e[t].parent=this);}Equals(e){return e===this}};Mi.InkObject=ka;});var Wt=b(Gi=>{Object.defineProperty(Gi,"__esModule",{value:true});Gi.StringBuilder=void 0;var Ra=class{constructor(e){e=typeof e<"u"?e.toString():"",this.string=e;}get Length(){return this.string.length}Append(e){e!==null&&(this.string+=e);}AppendLine(e){typeof e<"u"&&this.Append(e),this.string+=`
|
|
2
|
-
`;}AppendFormat(e,...t){this.string+=e.replace(/{(\d+)}/g,(n,r)=>typeof t[r]<"u"?t[r]:n);}toString(){return this.string}Clear(){this.string="";}};Gi.StringBuilder=Ra;});var ke=b(on=>{Object.defineProperty(on,"__esModule",{value:true});on.InkList=on.InkListItem=void 0;var nt=me(),Ep=Wt(),Ve=class i{constructor(){if(this.originName=null,this.itemName=null,typeof arguments[1]<"u"){let e=arguments[0],t=arguments[1];this.originName=e,this.itemName=t;}else if(arguments[0]){let t=arguments[0].toString().split(".");this.originName=t[0],this.itemName=t[1];}}static get Null(){return new i(null,null)}get isNull(){return this.originName==null&&this.itemName==null}get fullName(){return (this.originName!==null?this.originName:"?")+"."+this.itemName}toString(){return this.fullName}Equals(e){if(e instanceof i){let t=e;return t.itemName==this.itemName&&t.originName==this.originName}return false}copy(){return new i(this.originName,this.itemName)}serialized(){return JSON.stringify({originName:this.originName,itemName:this.itemName})}static fromSerializedKey(e){let t=JSON.parse(e);if(!i.isLikeInkListItem(t))return i.Null;let n=t;return new i(n.originName,n.itemName)}static isLikeInkListItem(e){return !(typeof e!="object"||!e.hasOwnProperty("originName")||!e.hasOwnProperty("itemName")||typeof e.originName!="string"&&typeof e.originName!==null||typeof e.itemName!="string"&&typeof e.itemName!==null)}};on.InkListItem=Ve;var La=class i extends Map{constructor(){if(super(arguments[0]instanceof i?arguments[0]:[]),this.origins=null,this._originNames=[],arguments[0]instanceof i){let e=arguments[0],t=e.originNames;t!==null&&(this._originNames=t.slice()),e.origins!==null&&(this.origins=e.origins.slice());}else if(typeof arguments[0]=="string"){let e=arguments[0],t=arguments[1];if(this.SetInitialOriginName(e),t.listDefinitions===null)return (0, nt.throwNullException)("originStory.listDefinitions");let n=t.listDefinitions.TryListGetDefinition(e,null);if(n.exists){if(n.result===null)return (0, nt.throwNullException)("def.result");this.origins=[n.result];}else throw new Error("InkList origin could not be found in story when constructing new list: "+e)}else if(typeof arguments[0]=="object"&&arguments[0].hasOwnProperty("Key")&&arguments[0].hasOwnProperty("Value")){let e=arguments[0];this.Add(e.Key,e.Value);}}static FromString(e,t){var n;if(e==null||e=="")return new i;let r=(n=t.listDefinitions)===null||n===void 0?void 0:n.FindSingleItemListWithName(e);if(r)return r.value===null?(0, nt.throwNullException)("listValue.value"):new i(r.value);throw new Error("Could not find the InkListItem from the string '"+e+"' to create an InkList because it doesn't exist in the original list definition in ink.")}AddItem(e,t=null){if(e instanceof Ve){let n=e;if(n.originName==null){this.AddItem(n.itemName);return}if(this.origins===null)return (0, nt.throwNullException)("this.origins");for(let r of this.origins)if(r.name==n.originName){let a=r.TryGetValueForItem(n,0);if(a.exists){this.Add(n,a.result);return}else throw new Error("Could not add the item "+n+" to this list because it doesn't exist in the original list definition in ink.")}throw new Error("Failed to add item to list because the item was from a new list definition that wasn't previously known to this list. Only items from previously known lists can be used, so that the int value can be found.")}else if(e!==null){let n=e,r=null;if(this.origins===null)return (0, nt.throwNullException)("this.origins");for(let a of this.origins){if(n===null)return (0, nt.throwNullException)("itemName");if(a.ContainsItemWithName(n)){if(r!=null)throw new Error("Could not add the item "+n+" to this list because it could come from either "+a.name+" or "+r.name);r=a;}}if(r==null){if(t==null)throw new Error("Could not add the item "+n+" to this list because it isn't known to any list definitions previously associated with this list.");{let a=i.FromString(n,t).orderedItems[0];this.Add(a.Key,a.Value);}}else {let a=new Ve(r.name,n),s=r.ValueForItem(a);this.Add(a,s);}}}ContainsItemNamed(e){for(let[t]of this)if(Ve.fromSerializedKey(t).itemName==e)return true;return false}ContainsKey(e){return this.has(e.serialized())}Add(e,t){let n=e.serialized();if(this.has(n))throw new Error(`The Map already contains an entry for ${e}`);this.set(n,t);}Remove(e){return this.delete(e.serialized())}get Count(){return this.size}get originOfMaxItem(){if(this.origins==null)return null;let e=this.maxItem.Key.originName,t=null;return this.origins.every(n=>n.name==e?(t=n,false):true),t}get originNames(){if(this.Count>0){this._originNames==null&&this.Count>0?this._originNames=[]:(this._originNames||(this._originNames=[]),this._originNames.length=0);for(let[e]of this){let t=Ve.fromSerializedKey(e);if(t.originName===null)return (0, nt.throwNullException)("item.originName");this._originNames.push(t.originName);}}return this._originNames}SetInitialOriginName(e){this._originNames=[e];}SetInitialOriginNames(e){e==null?this._originNames=null:this._originNames=e.slice();}get maxItem(){let e={Key:Ve.Null,Value:0};for(let[t,n]of this){let r=Ve.fromSerializedKey(t);(e.Key.isNull||n>e.Value)&&(e={Key:r,Value:n});}return e}get minItem(){let e={Key:Ve.Null,Value:0};for(let[t,n]of this){let r=Ve.fromSerializedKey(t);(e.Key.isNull||n<e.Value)&&(e={Key:r,Value:n});}return e}get inverse(){let e=new i;if(this.origins!=null)for(let t of this.origins)for(let[n,r]of t.items){let a=Ve.fromSerializedKey(n);this.ContainsKey(a)||e.Add(a,r);}return e}get all(){let e=new i;if(this.origins!=null)for(let t of this.origins)for(let[n,r]of t.items){let a=Ve.fromSerializedKey(n);e.set(a.serialized(),r);}return e}Union(e){let t=new i(this);for(let[n,r]of e)t.set(n,r);return t}Intersect(e){let t=new i;for(let[n,r]of this)e.has(n)&&t.set(n,r);return t}HasIntersection(e){for(let[t]of this)if(e.has(t))return true;return false}Without(e){let t=new i(this);for(let[n]of e)t.delete(n);return t}Contains(e){if(typeof e=="string")return this.ContainsItemNamed(e);let t=e;if(t.size==0||this.size==0)return false;for(let[n]of t)if(!this.has(n))return false;return true}GreaterThan(e){return this.Count==0?false:e.Count==0?true:this.minItem.Value>e.maxItem.Value}GreaterThanOrEquals(e){return this.Count==0?false:e.Count==0?true:this.minItem.Value>=e.minItem.Value&&this.maxItem.Value>=e.maxItem.Value}LessThan(e){return e.Count==0?false:this.Count==0?true:this.maxItem.Value<e.minItem.Value}LessThanOrEquals(e){return e.Count==0?false:this.Count==0?true:this.maxItem.Value<=e.maxItem.Value&&this.minItem.Value<=e.minItem.Value}MaxAsList(){return this.Count>0?new i(this.maxItem):new i}MinAsList(){return this.Count>0?new i(this.minItem):new i}ListWithSubRange(e,t){if(this.Count==0)return new i;let n=this.orderedItems,r=0,a=Number.MAX_SAFE_INTEGER;Number.isInteger(e)?r=e:e instanceof i&&e.Count>0&&(r=e.minItem.Value),Number.isInteger(t)?a=t:t instanceof i&&t.Count>0&&(a=t.maxItem.Value);let s=new i;s.SetInitialOriginNames(this.originNames);for(let o of n)o.Value>=r&&o.Value<=a&&s.Add(o.Key,o.Value);return s}Equals(e){if(!(e instanceof i)||e.Count!=this.Count)return false;for(let[t]of this)if(!e.has(t))return false;return true}get orderedItems(){let e=new Array;for(let[t,n]of this){let r=Ve.fromSerializedKey(t);e.push({Key:r,Value:n});}return e.sort((t,n)=>t.Key.originName===null?(0, nt.throwNullException)("x.Key.originName"):n.Key.originName===null?(0, nt.throwNullException)("y.Key.originName"):t.Value==n.Value?t.Key.originName.localeCompare(n.Key.originName):t.Value<n.Value?-1:t.Value>n.Value?1:0),e}get singleItem(){for(let e of this.orderedItems)return e.Key;return null}toString(){let e=this.orderedItems,t=new Ep.StringBuilder;for(let n=0;n<e.length;n++){n>0&&t.Append(", ");let r=e[n].Key;if(r.itemName===null)return (0, nt.throwNullException)("item.itemName");t.Append(r.itemName);}return t.toString()}valueOf(){return NaN}};on.InkList=La;});var Rn=b($i=>{Object.defineProperty($i,"__esModule",{value:true});$i.StoryException=void 0;var Ba=class extends Error{constructor(e){super(e),this.useEndLineNumber=false,this.message=e,this.name="StoryException";}};$i.StoryException=Ba;});var ln=b(At=>{Object.defineProperty(At,"__esModule",{value:true});At.tryParseFloat=At.tryParseInt=At.tryGetValueFromMap=void 0;function Sp(i,e,t){if(i===null)return {result:t,exists:false};let n=i.get(e);return typeof n>"u"?{result:t,exists:false}:{result:n,exists:true}}At.tryGetValueFromMap=Sp;function Dp(i,e=0){let t=parseInt(i);return Number.isNaN(t)?{result:e,exists:false}:{result:t,exists:true}}At.tryParseInt=Dp;function bp(i,e=0){let t=parseFloat(i);return Number.isNaN(t)?{result:e,exists:false}:{result:t,exists:true}}At.tryParseFloat=bp;});var te=b(ne=>{Object.defineProperty(ne,"__esModule",{value:true});ne.ValueType=ne.ListValue=ne.VariablePointerValue=ne.DivertTargetValue=ne.StringValue=ne.FloatValue=ne.IntValue=ne.BoolValue=ne.Value=ne.AbstractValue=void 0;var $u=Ie(),Ju=Ne(),jt=ke(),Ap=Rn(),Ln=U(),Hu=ln(),Ge=me(),Ji=class i extends $u.InkObject{static Create(e,t){if(t){if(t===Q.Int&&Number.isInteger(Number(e)))return new rt(Number(e));if(t===Q.Float&&!isNaN(e))return new st(Number(e))}if(typeof e=="boolean")return new un(!!e);if(typeof e=="string")return new Ct(String(e));if(Number.isInteger(Number(e)))return new rt(Number(e));if(isNaN(e)){if(e instanceof Ju.Path)return new Hi((0, Ln.asOrThrows)(e,Ju.Path));if(e instanceof jt.InkList)return new Ui((0, Ln.asOrThrows)(e,jt.InkList))}else return new st(Number(e));return null}Copy(){return (0, Ln.asOrThrows)(i.Create(this.valueObject),$u.InkObject)}BadCastException(e){return new Ap.StoryException("Can't cast "+this.valueObject+" from "+this.valueType+" to "+e)}};ne.AbstractValue=Ji;var it=class extends Ji{constructor(e){super(),this.value=e;}get valueObject(){return this.value}toString(){return this.value===null?(0, Ge.throwNullException)("Value.value"):this.value.toString()}};ne.Value=it;var un=class extends it{constructor(e){super(e||false);}get isTruthy(){return !!this.value}get valueType(){return Q.Bool}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==this.valueType)return this;if(e==Q.Int)return new rt(this.value?1:0);if(e==Q.Float)return new st(this.value?1:0);if(e==Q.String)return new Ct(this.value?"true":"false");throw this.BadCastException(e)}toString(){return this.value?"true":"false"}};ne.BoolValue=un;var rt=class extends it{constructor(e){super(e||0);}get isTruthy(){return this.value!=0}get valueType(){return Q.Int}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==this.valueType)return this;if(e==Q.Bool)return new un(this.value!==0);if(e==Q.Float)return new st(this.value);if(e==Q.String)return new Ct(""+this.value);throw this.BadCastException(e)}};ne.IntValue=rt;var st=class extends it{constructor(e){super(e||0);}get isTruthy(){return this.value!=0}get valueType(){return Q.Float}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==this.valueType)return this;if(e==Q.Bool)return new un(this.value!==0);if(e==Q.Int)return new rt(this.value);if(e==Q.String)return new Ct(""+this.value);throw this.BadCastException(e)}};ne.FloatValue=st;var Ct=class extends it{constructor(e){if(super(e||""),this._isNewline=this.value==`
|
|
3
|
-
`,this._isInlineWhitespace=true,this.value===null)return (0, Ge.throwNullException)("Value.value");this.value.length>0&&this.value.split("").every(t=>t!=" "&&t!=" "?(this._isInlineWhitespace=false,false):true);}get valueType(){return Q.String}get isTruthy(){return this.value===null?(0, Ge.throwNullException)("Value.value"):this.value.length>0}get isNewline(){return this._isNewline}get isInlineWhitespace(){return this._isInlineWhitespace}get isNonWhitespace(){return !this.isNewline&&!this.isInlineWhitespace}Cast(e){if(e==this.valueType)return this;if(e==Q.Int){let t=(0,
|
|
4
|
-
`,"\\n")),e.Append('"')):e.Append(o.toString())),s!=this.content.length-1&&e.Append(","),!(o instanceof i)&&o==n&&e.Append(" <---"),e.AppendLine();}let a=new Map;for(let[s,o]of this.namedContent)this.content.indexOf((0, wt.asOrThrows)(o,hn.InkObject))>=0||a.set(s,o);if(a.size>0){r(),e.AppendLine("-- named: --");for(let[,s]of a)Xu.Debug.AssertType(s,i,"Can only print out named Containers"),s.BuildStringOfHierarchy(e,t,n),e.AppendLine();}t--,r(),e.Append("]");}};Wn.Container=Bn;(function(i){(function(t){t[t.Start=0]="Start",t[t.Visits=1]="Visits",t[t.Turns=2]="Turns",t[t.CountStartOnly=4]="CountStartOnly";})(i.CountFlags||(i.CountFlags={}));})(Bn||(Wn.Container=Bn={}));});var ge=b(qn=>{Object.defineProperty(qn,"__esModule",{value:true});qn.ControlCommand=void 0;var Pp=Ie(),jn=class i extends Pp.InkObject{get commandType(){return this._commandType}constructor(e=i.CommandType.NotSet){super(),this._commandType=e;}Copy(){return new i(this.commandType)}static EvalStart(){return new i(i.CommandType.EvalStart)}static EvalOutput(){return new i(i.CommandType.EvalOutput)}static EvalEnd(){return new i(i.CommandType.EvalEnd)}static Duplicate(){return new i(i.CommandType.Duplicate)}static PopEvaluatedValue(){return new i(i.CommandType.PopEvaluatedValue)}static PopFunction(){return new i(i.CommandType.PopFunction)}static PopTunnel(){return new i(i.CommandType.PopTunnel)}static BeginString(){return new i(i.CommandType.BeginString)}static EndString(){return new i(i.CommandType.EndString)}static NoOp(){return new i(i.CommandType.NoOp)}static ChoiceCount(){return new i(i.CommandType.ChoiceCount)}static Turns(){return new i(i.CommandType.Turns)}static TurnsSince(){return new i(i.CommandType.TurnsSince)}static ReadCount(){return new i(i.CommandType.ReadCount)}static Random(){return new i(i.CommandType.Random)}static SeedRandom(){return new i(i.CommandType.SeedRandom)}static VisitIndex(){return new i(i.CommandType.VisitIndex)}static SequenceShuffleIndex(){return new i(i.CommandType.SequenceShuffleIndex)}static StartThread(){return new i(i.CommandType.StartThread)}static Done(){return new i(i.CommandType.Done)}static End(){return new i(i.CommandType.End)}static ListFromInt(){return new i(i.CommandType.ListFromInt)}static ListRange(){return new i(i.CommandType.ListRange)}static ListRandom(){return new i(i.CommandType.ListRandom)}static BeginTag(){return new i(i.CommandType.BeginTag)}static EndTag(){return new i(i.CommandType.EndTag)}toString(){return "ControlCommand "+this.commandType.toString()}};qn.ControlCommand=jn;(function(i){(function(t){t[t.NotSet=-1]="NotSet",t[t.EvalStart=0]="EvalStart",t[t.EvalOutput=1]="EvalOutput",t[t.EvalEnd=2]="EvalEnd",t[t.Duplicate=3]="Duplicate",t[t.PopEvaluatedValue=4]="PopEvaluatedValue",t[t.PopFunction=5]="PopFunction",t[t.PopTunnel=6]="PopTunnel",t[t.BeginString=7]="BeginString",t[t.EndString=8]="EndString",t[t.NoOp=9]="NoOp",t[t.ChoiceCount=10]="ChoiceCount",t[t.Turns=11]="Turns",t[t.TurnsSince=12]="TurnsSince",t[t.ReadCount=13]="ReadCount",t[t.Random=14]="Random",t[t.SeedRandom=15]="SeedRandom",t[t.VisitIndex=16]="VisitIndex",t[t.SequenceShuffleIndex=17]="SequenceShuffleIndex",t[t.StartThread=18]="StartThread",t[t.Done=19]="Done",t[t.End=20]="End",t[t.ListFromInt=21]="ListFromInt",t[t.ListRange=22]="ListRange",t[t.ListRandom=23]="ListRandom",t[t.BeginTag=24]="BeginTag",t[t.EndTag=25]="EndTag",t[t.TOTAL_VALUES=26]="TOTAL_VALUES";})(i.CommandType||(i.CommandType={}));})(jn||(qn.ControlCommand=jn={}));});var $e=b(Ki=>{Object.defineProperty(Ki,"__esModule",{value:true});Ki.Expression=void 0;var Yu=se(),qa=ge(),Fp=Z(),Ma=class extends Fp.ParsedObject{constructor(){super(...arguments),this._prototypeRuntimeConstantExpression=null,this.outputWhenComplete=false,this.GenerateRuntimeObject=()=>{let e=new Yu.Container;return e.AddContent(qa.ControlCommand.EvalStart()),this.GenerateIntoContainer(e),this.outputWhenComplete&&e.AddContent(qa.ControlCommand.EvalOutput()),e.AddContent(qa.ControlCommand.EvalEnd()),e},this.GenerateConstantIntoContainer=e=>{this._prototypeRuntimeConstantExpression===null&&(this._prototypeRuntimeConstantExpression=new Yu.Container,this.GenerateIntoContainer(this._prototypeRuntimeConstantExpression));for(let t of this._prototypeRuntimeConstantExpression.content){let n=t.Copy();n&&e.AddContent(n);}},this.toString=()=>"No string value in JavaScript.";}get typeName(){return "Expression"}Equals(e){return false}};Ki.Expression=Ma;});var qt=b(Xi=>{Object.defineProperty(Xi,"__esModule",{value:true});Xi.Void=void 0;var Np=Ie(),Ga=class extends Np.InkObject{toString(){return "Void"}};Xi.Void=Ga;});var at=b(Qi=>{Object.defineProperty(Qi,"__esModule",{value:true});Qi.NativeFunctionCall=void 0;var O=te(),Mn=Rn(),Ip=qt(),Yi=ke(),Vp=Ie(),Je=U(),Re=me(),W=class i extends Vp.InkObject{static CallWithName(e){return new i(e)}static CallExistsWithName(e){return this.GenerateNativeFunctionsIfNecessary(),this._nativeFunctions.get(e)}get name(){return this._name===null?(0, Re.throwNullException)("NativeFunctionCall._name"):this._name}set name(e){this._name=e,this._isPrototype||(i._nativeFunctions===null?(0, Re.throwNullException)("NativeFunctionCall._nativeFunctions"):this._prototype=i._nativeFunctions.get(this._name)||null);}get numberOfParameters(){return this._prototype?this._prototype.numberOfParameters:this._numberOfParameters}set numberOfParameters(e){this._numberOfParameters=e;}Call(e){if(this._prototype)return this._prototype.Call(e);if(this.numberOfParameters!=e.length)throw new Error("Unexpected number of parameters");let t=false;for(let a of e){if(a instanceof Ip.Void)throw new Mn.StoryException("Attempting to perform "+this.name+' on a void value. Did you forget to "return" a value from a function you called here?');a instanceof O.ListValue&&(t=true);}if(e.length==2&&t)return this.CallBinaryListOperation(e);let n=this.CoerceValuesToSingleType(e),r=n[0].valueType;return r==O.ValueType.Int?this.CallType(n):r==O.ValueType.Float?this.CallType(n):r==O.ValueType.String?this.CallType(n):r==O.ValueType.DivertTarget?this.CallType(n):r==O.ValueType.List?this.CallType(n):null}CallType(e){let t=(0, Je.asOrThrows)(e[0],O.Value),n=t.valueType,r=t,a=e.length;if(a==2||a==1){if(this._operationFuncs===null)return (0, Re.throwNullException)("NativeFunctionCall._operationFuncs");let s=this._operationFuncs.get(n);if(!s){let o=O.ValueType[n];throw new Mn.StoryException("Cannot perform operation "+this.name+" on "+o)}if(a==2){let l=(0, Je.asOrThrows)(e[1],O.Value),u=s;if(r.value===null||l.value===null)return (0, Re.throwNullException)("NativeFunctionCall.Call BinaryOp values");let h=u(r.value,l.value);return O.Value.Create(h)}else {let o=s;if(r.value===null)return (0, Re.throwNullException)("NativeFunctionCall.Call UnaryOp value");let l=o(r.value);return this.name===i.Int?O.Value.Create(l,O.ValueType.Int):this.name===i.Float?O.Value.Create(l,O.ValueType.Float):O.Value.Create(l,t.valueType)}}else throw new Error("Unexpected number of parameters to NativeFunctionCall: "+e.length)}CallBinaryListOperation(e){if((this.name=="+"||this.name=="-")&&e[0]instanceof O.ListValue&&e[1]instanceof O.IntValue)return this.CallListIncrementOperation(e);let t=(0, Je.asOrThrows)(e[0],O.Value),n=(0, Je.asOrThrows)(e[1],O.Value);if((this.name=="&&"||this.name=="||")&&(t.valueType!=O.ValueType.List||n.valueType!=O.ValueType.List)){if(this._operationFuncs===null)return (0, Re.throwNullException)("NativeFunctionCall._operationFuncs");let r=this._operationFuncs.get(O.ValueType.Int);if(r===null)return (0, Re.throwNullException)("NativeFunctionCall.CallBinaryListOperation op");let a=(0, Je.asBooleanOrThrows)(r(t.isTruthy?1:0,n.isTruthy?1:0));return new O.BoolValue(a)}if(t.valueType==O.ValueType.List&&n.valueType==O.ValueType.List)return this.CallType([t,n]);throw new Mn.StoryException("Can not call use "+this.name+" operation on "+O.ValueType[t.valueType]+" and "+O.ValueType[n.valueType])}CallListIncrementOperation(e){let t=(0, Je.asOrThrows)(e[0],O.ListValue),n=(0, Je.asOrThrows)(e[1],O.IntValue),r=new Yi.InkList;if(t.value===null)return (0, Re.throwNullException)("NativeFunctionCall.CallListIncrementOperation listVal.value");for(let[a,s]of t.value){let o=Yi.InkListItem.fromSerializedKey(a);if(this._operationFuncs===null)return (0, Re.throwNullException)("NativeFunctionCall._operationFuncs");let l=this._operationFuncs.get(O.ValueType.Int);if(n.value===null)return (0, Re.throwNullException)("NativeFunctionCall.CallListIncrementOperation intVal.value");let u=l(s,n.value),h=null;if(t.value.origins===null)return (0, Re.throwNullException)("NativeFunctionCall.CallListIncrementOperation listVal.value.origins");for(let c of t.value.origins)if(c.name==o.originName){h=c;break}if(h!=null){let c=h.TryGetItemWithValue(u,Yi.InkListItem.Null);c.exists&&r.Add(c.result,u);}}return new O.ListValue(r)}CoerceValuesToSingleType(e){let t=O.ValueType.Int,n=null;for(let a of e){let s=(0, Je.asOrThrows)(a,O.Value);s.valueType>t&&(t=s.valueType),s.valueType==O.ValueType.List&&(n=(0, Je.asOrNull)(s,O.ListValue));}let r=[];if(O.ValueType[t]==O.ValueType[O.ValueType.List])for(let a of e){let s=(0, Je.asOrThrows)(a,O.Value);if(s.valueType==O.ValueType.List)r.push(s);else if(s.valueType==O.ValueType.Int){let o=parseInt(s.valueObject);if(n=(0, Je.asOrThrows)(n,O.ListValue),n.value===null)return (0, Re.throwNullException)("NativeFunctionCall.CoerceValuesToSingleType specialCaseList.value");let l=n.value.originOfMaxItem;if(l===null)return (0, Re.throwNullException)("NativeFunctionCall.CoerceValuesToSingleType list");let u=l.TryGetItemWithValue(o,Yi.InkListItem.Null);if(u.exists){let h=new O.ListValue(u.result,o);r.push(h);}else throw new Mn.StoryException("Could not find List item with the value "+o+" in "+l.name)}else {let o=O.ValueType[s.valueType];throw new Mn.StoryException("Cannot mix Lists and "+o+" values in this operation")}}else for(let a of e){let o=(0, Je.asOrThrows)(a,O.Value).Cast(t);r.push(o);}return r}constructor(){if(super(),this._name=null,this._numberOfParameters=0,this._prototype=null,this._isPrototype=false,this._operationFuncs=null,arguments.length===0)i.GenerateNativeFunctionsIfNecessary();else if(arguments.length===1){let e=arguments[0];i.GenerateNativeFunctionsIfNecessary(),this.name=e;}else if(arguments.length===2){let e=arguments[0],t=arguments[1];this._isPrototype=true,this.name=e,this.numberOfParameters=t;}}static Identity(e){return e}static GenerateNativeFunctionsIfNecessary(){if(this._nativeFunctions==null){this._nativeFunctions=new Map,this.AddIntBinaryOp(this.Add,(n,r)=>n+r),this.AddIntBinaryOp(this.Subtract,(n,r)=>n-r),this.AddIntBinaryOp(this.Multiply,(n,r)=>n*r),this.AddIntBinaryOp(this.Divide,(n,r)=>Math.floor(n/r)),this.AddIntBinaryOp(this.Mod,(n,r)=>n%r),this.AddIntUnaryOp(this.Negate,n=>-n),this.AddIntBinaryOp(this.Equal,(n,r)=>n==r),this.AddIntBinaryOp(this.Greater,(n,r)=>n>r),this.AddIntBinaryOp(this.Less,(n,r)=>n<r),this.AddIntBinaryOp(this.GreaterThanOrEquals,(n,r)=>n>=r),this.AddIntBinaryOp(this.LessThanOrEquals,(n,r)=>n<=r),this.AddIntBinaryOp(this.NotEquals,(n,r)=>n!=r),this.AddIntUnaryOp(this.Not,n=>n==0),this.AddIntBinaryOp(this.And,(n,r)=>n!=0&&r!=0),this.AddIntBinaryOp(this.Or,(n,r)=>n!=0||r!=0),this.AddIntBinaryOp(this.Max,(n,r)=>Math.max(n,r)),this.AddIntBinaryOp(this.Min,(n,r)=>Math.min(n,r)),this.AddIntBinaryOp(this.Pow,(n,r)=>Math.pow(n,r)),this.AddIntUnaryOp(this.Floor,i.Identity),this.AddIntUnaryOp(this.Ceiling,i.Identity),this.AddIntUnaryOp(this.Int,i.Identity),this.AddIntUnaryOp(this.Float,n=>n),this.AddFloatBinaryOp(this.Add,(n,r)=>n+r),this.AddFloatBinaryOp(this.Subtract,(n,r)=>n-r),this.AddFloatBinaryOp(this.Multiply,(n,r)=>n*r),this.AddFloatBinaryOp(this.Divide,(n,r)=>n/r),this.AddFloatBinaryOp(this.Mod,(n,r)=>n%r),this.AddFloatUnaryOp(this.Negate,n=>-n),this.AddFloatBinaryOp(this.Equal,(n,r)=>n==r),this.AddFloatBinaryOp(this.Greater,(n,r)=>n>r),this.AddFloatBinaryOp(this.Less,(n,r)=>n<r),this.AddFloatBinaryOp(this.GreaterThanOrEquals,(n,r)=>n>=r),this.AddFloatBinaryOp(this.LessThanOrEquals,(n,r)=>n<=r),this.AddFloatBinaryOp(this.NotEquals,(n,r)=>n!=r),this.AddFloatUnaryOp(this.Not,n=>n==0),this.AddFloatBinaryOp(this.And,(n,r)=>n!=0&&r!=0),this.AddFloatBinaryOp(this.Or,(n,r)=>n!=0||r!=0),this.AddFloatBinaryOp(this.Max,(n,r)=>Math.max(n,r)),this.AddFloatBinaryOp(this.Min,(n,r)=>Math.min(n,r)),this.AddFloatBinaryOp(this.Pow,(n,r)=>Math.pow(n,r)),this.AddFloatUnaryOp(this.Floor,n=>Math.floor(n)),this.AddFloatUnaryOp(this.Ceiling,n=>Math.ceil(n)),this.AddFloatUnaryOp(this.Int,n=>Math.floor(n)),this.AddFloatUnaryOp(this.Float,i.Identity),this.AddStringBinaryOp(this.Add,(n,r)=>n+r),this.AddStringBinaryOp(this.Equal,(n,r)=>n===r),this.AddStringBinaryOp(this.NotEquals,(n,r)=>n!==r),this.AddStringBinaryOp(this.Has,(n,r)=>n.includes(r)),this.AddStringBinaryOp(this.Hasnt,(n,r)=>!n.includes(r)),this.AddListBinaryOp(this.Add,(n,r)=>n.Union(r)),this.AddListBinaryOp(this.Subtract,(n,r)=>n.Without(r)),this.AddListBinaryOp(this.Has,(n,r)=>n.Contains(r)),this.AddListBinaryOp(this.Hasnt,(n,r)=>!n.Contains(r)),this.AddListBinaryOp(this.Intersect,(n,r)=>n.Intersect(r)),this.AddListBinaryOp(this.Equal,(n,r)=>n.Equals(r)),this.AddListBinaryOp(this.Greater,(n,r)=>n.GreaterThan(r)),this.AddListBinaryOp(this.Less,(n,r)=>n.LessThan(r)),this.AddListBinaryOp(this.GreaterThanOrEquals,(n,r)=>n.GreaterThanOrEquals(r)),this.AddListBinaryOp(this.LessThanOrEquals,(n,r)=>n.LessThanOrEquals(r)),this.AddListBinaryOp(this.NotEquals,(n,r)=>!n.Equals(r)),this.AddListBinaryOp(this.And,(n,r)=>n.Count>0&&r.Count>0),this.AddListBinaryOp(this.Or,(n,r)=>n.Count>0||r.Count>0),this.AddListUnaryOp(this.Not,n=>n.Count==0?1:0),this.AddListUnaryOp(this.Invert,n=>n.inverse),this.AddListUnaryOp(this.All,n=>n.all),this.AddListUnaryOp(this.ListMin,n=>n.MinAsList()),this.AddListUnaryOp(this.ListMax,n=>n.MaxAsList()),this.AddListUnaryOp(this.Count,n=>n.Count),this.AddListUnaryOp(this.ValueOfList,n=>n.maxItem.Value);let e=(n,r)=>n.Equals(r),t=(n,r)=>!n.Equals(r);this.AddOpToNativeFunc(this.Equal,2,O.ValueType.DivertTarget,e),this.AddOpToNativeFunc(this.NotEquals,2,O.ValueType.DivertTarget,t);}}AddOpFuncForType(e,t){this._operationFuncs==null&&(this._operationFuncs=new Map),this._operationFuncs.set(e,t);}static AddOpToNativeFunc(e,t,n,r){if(this._nativeFunctions===null)return (0, Re.throwNullException)("NativeFunctionCall._nativeFunctions");let a=this._nativeFunctions.get(e);a||(a=new i(e,t),this._nativeFunctions.set(e,a)),a.AddOpFuncForType(n,r);}static AddIntBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.Int,t);}static AddIntUnaryOp(e,t){this.AddOpToNativeFunc(e,1,O.ValueType.Int,t);}static AddFloatBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.Float,t);}static AddFloatUnaryOp(e,t){this.AddOpToNativeFunc(e,1,O.ValueType.Float,t);}static AddStringBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.String,t);}static AddListBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.List,t);}static AddListUnaryOp(e,t){this.AddOpToNativeFunc(e,1,O.ValueType.List,t);}toString(){return 'Native "'+this.name+'"'}};Qi.NativeFunctionCall=W;W.Add="+";W.Subtract="-";W.Divide="/";W.Multiply="*";W.Mod="%";W.Negate="_";W.Equal="==";W.Greater=">";W.Less="<";W.GreaterThanOrEquals=">=";W.LessThanOrEquals="<=";W.NotEquals="!=";W.Not="!";W.And="&&";W.Or="||";W.Min="MIN";W.Max="MAX";W.Pow="POW";W.Floor="FLOOR";W.Ceiling="CEILING";W.Int="INT";W.Float="FLOAT";W.Has="?";W.Hasnt="!?";W.Intersect="^";W.ListMin="LIST_MIN";W.ListMax="LIST_MAX";W.All="LIST_ALL";W.Count="LIST_COUNT";W.ValueOfList="LIST_VALUE";W.Invert="LIST_INVERT";W._nativeFunctions=null;});var er=b(Zi=>{Object.defineProperty(Zi,"__esModule",{value:true});Zi.NumberExpression=void 0;var kp=$e(),$a=te(),Rp=U(),Ja=class i extends kp.Expression{constructor(e,t){if(super(),this.isInt=()=>this.subtype=="int",this.isFloat=()=>this.subtype=="float",this.isBool=()=>this.subtype=="bool",this.GenerateIntoContainer=n=>{this.isInt()?n.AddContent(new $a.IntValue(this.value)):this.isFloat()?n.AddContent(new $a.FloatValue(this.value)):this.isBool()&&n.AddContent(new $a.BoolValue(this.value));},this.toString=()=>String(this.value),typeof e=="number"&&!Number.isNaN(e)||typeof e=="boolean")this.value=e,this.subtype=t;else throw new Error("Unexpected object type in NumberExpression.")}get typeName(){return "Number"}Equals(e){let t=(0, Rp.asOrNull)(e,i);return t?t.subtype==this.subtype&&t.value==this.value:false}};Zi.NumberExpression=Ja;});var Ha=b(tr=>{Object.defineProperty(tr,"__esModule",{value:true});tr.UnaryExpression=void 0;var Lp=$e(),Bp=at(),cn=er(),Wp=U(),Gn=class extends Lp.Expression{get nativeNameForOp(){return this.op==="-"?"_":this.op==="not"?"!":this.op}constructor(e,t){super(),this.op=t,this.GenerateIntoContainer=n=>{this.innerExpression.GenerateIntoContainer(n),n.AddContent(Bp.NativeFunctionCall.CallWithName(this.nativeNameForOp));},this.toString=()=>this.nativeNameForOp+this.innerExpression,this.innerExpression=this.AddContent(e);}get typeName(){return "UnaryExpression"}};tr.UnaryExpression=Gn;Gn.WithInner=(i,e)=>{let t=(0, Wp.asOrNull)(i,cn.NumberExpression);if(t){if(e==="-"){if(t.isInt())return new cn.NumberExpression(-t.value,"int");if(t.isFloat())return new cn.NumberExpression(-t.value,"float")}else if(e=="!"||e=="not"){if(t.isInt())return new cn.NumberExpression(t.value==0,"bool");if(t.isFloat())return new cn.NumberExpression(t.value==0,"bool");if(t.isBool())return new cn.NumberExpression(!t.value,"bool")}throw new Error("Unexpected operation or number type")}return new Gn(i,e)};});var za=b(nr=>{Object.defineProperty(nr,"__esModule",{value:true});nr.BinaryExpression=void 0;var jp=$e(),qp=at(),Mp=Ha(),Gp=U(),Ua=class extends jp.Expression{constructor(e,t,n){super(),this.opName=n,this.GenerateIntoContainer=r=>{this.leftExpression.GenerateIntoContainer(r),this.rightExpression.GenerateIntoContainer(r),this.opName=this.NativeNameForOp(this.opName),r.AddContent(qp.NativeFunctionCall.CallWithName(this.opName));},this.NativeNameForOp=r=>r==="and"?"&&":r==="or"?"||":r==="mod"?"%":r==="has"?"?":r==="hasnt"?"!?":r,this.toString=()=>`(${this.leftExpression} ${this.opName} ${this.rightExpression})`,this.leftExpression=this.AddContent(e),this.rightExpression=this.AddContent(t),this.opName=n;}get typeName(){return "BinaryExpression"}ResolveReferences(e){if(super.ResolveReferences(e),this.NativeNameForOp(this.opName)==="?"){let t=(0, Gp.asOrNull)(this.leftExpression,Mp.UnaryExpression);t!==null&&(t.op==="not"||t.op==="!")&&this.Error(`Using 'not' or '!' here negates '${t.innerExpression}' rather than the result of the '?' or 'has' operator. You need to add parentheses around the (A ? B) expression.`);}}};nr.BinaryExpression=Ua;});var Jn=b(ir=>{Object.defineProperty(ir,"__esModule",{value:true});ir.CharacterSet=void 0;var $n=class{constructor(e){this.set=new Set,this.Add=t=>this.set.add(t),this.AddRange=(t,n)=>{for(let r=t.charCodeAt(0);r<=n.charCodeAt(0);++r)this.Add(String.fromCharCode(r));return this},this.AddCharacters=t=>{if(typeof t=="string"||Array.isArray(t))for(let n of t)this.Add(n);else for(let n of t.set)this.Add(n);return this},e&&this.AddCharacters(e);}};ir.CharacterSet=$n;$n.FromRange=(i,e)=>new $n().AddRange(i,e);});var Zu=b(rr=>{Object.defineProperty(rr,"__esModule",{value:true});rr.CharacterRange=void 0;var Qu=Jn(),Hn=class{constructor(e,t,n=[]){if(this._start=e,this._end=t,this._correspondingCharSet=new Qu.CharacterSet,this._excludes=new Set,this.ToCharacterSet=()=>{if(this._correspondingCharSet.set.size===0)for(let r=this.start.charCodeAt(0),a;r<=this.end.charCodeAt(0);r+=1)a=String.fromCharCode(r),this._excludes.has(a)||this._correspondingCharSet.AddCharacters(a);return this._correspondingCharSet},n instanceof Qu.CharacterSet)this._excludes=n.set;else for(let r of n)this._excludes.add(r);}get start(){return this._start}get end(){return this._end}};rr.CharacterRange=Hn;Hn.Define=(i,e,t=[])=>new Hn(i,e,t);});var ar=b(sr=>{Object.defineProperty(sr,"__esModule",{value:true});sr.ChoicePoint=void 0;var $p=Ie(),Jp=Ne(),Ka=me(),Xa=class extends $p.InkObject{constructor(e=true){super(),this._pathOnChoice=null,this.hasCondition=false,this.hasStartContent=false,this.hasChoiceOnlyContent=false,this.isInvisibleDefault=false,this.onceOnly=true,this.onceOnly=e;}get pathOnChoice(){if(this._pathOnChoice!=null&&this._pathOnChoice.isRelative){let e=this.choiceTarget;e&&(this._pathOnChoice=e.path);}return this._pathOnChoice}set pathOnChoice(e){this._pathOnChoice=e;}get choiceTarget(){return this._pathOnChoice===null?(0, Ka.throwNullException)("ChoicePoint._pathOnChoice"):this.ResolvePath(this._pathOnChoice).container}get pathStringOnChoice(){return this.pathOnChoice===null?(0, Ka.throwNullException)("ChoicePoint.pathOnChoice"):this.CompactPathString(this.pathOnChoice)}set pathStringOnChoice(e){this.pathOnChoice=new Jp.Path(e);}get flags(){let e=0;return this.hasCondition&&(e|=1),this.hasStartContent&&(e|=2),this.hasChoiceOnlyContent&&(e|=4),this.isInvisibleDefault&&(e|=8),this.onceOnly&&(e|=16),e}set flags(e){this.hasCondition=(e&1)>0,this.hasStartContent=(e&2)>0,this.hasChoiceOnlyContent=(e&4)>0,this.isInvisibleDefault=(e&8)>0,this.onceOnly=(e&16)>0;}toString(){if(this.pathOnChoice===null)return (0, Ka.throwNullException)("ChoicePoint.pathOnChoice");let t=this.pathOnChoice.toString();return "Choice: -> "+t}};sr.ChoicePoint=Xa;});var Mt=b(or=>{Object.defineProperty(or,"__esModule",{value:true});or.PushPopType=void 0;var eh;(function(i){i[i.Tunnel=0]="Tunnel",i[i.Function=1]="Function",i[i.FunctionEvaluationFromGame=2]="FunctionEvaluationFromGame";})(eh||(or.PushPopType=eh={}));});var Un=b(lr=>{Object.defineProperty(lr,"__esModule",{value:true});lr.Pointer=void 0;var Hp=Ne(),Ya=class i{constructor(){this.container=null,this.index=-1,arguments.length===2&&(this.container=arguments[0],this.index=arguments[1]);}Resolve(){return this.index<0?this.container:this.container==null?null:this.container.content.length==0?this.container:this.index>=this.container.content.length?null:this.container.content[this.index]}get isNull(){return this.container==null}get path(){return this.isNull?null:this.index>=0?this.container.path.PathByAppendingComponent(new Hp.Path.Component(this.index)):this.container.path}toString(){return this.container?"Ink Pointer -> "+this.container.path.toString()+" -- index "+this.index:"Ink Pointer (null)"}copy(){return new i(this.container,this.index)}static StartOf(e){return new i(e,0)}static get Null(){return new i(null,-1)}};lr.Pointer=Ya;});var ot=b(hr=>{Object.defineProperty(hr,"__esModule",{value:true});hr.Divert=void 0;var Up=Ne(),zp=Mt(),Kp=Wt(),Xp=Ie(),Qa=Un(),th=se(),ur=me(),Za=class i extends Xp.InkObject{get targetPath(){if(this._targetPath!=null&&this._targetPath.isRelative){let e=this.targetPointer.Resolve();e&&(this._targetPath=e.path);}return this._targetPath}set targetPath(e){this._targetPath=e,this._targetPointer=Qa.Pointer.Null;}get targetPointer(){if(this._targetPointer.isNull){let e=this.ResolvePath(this._targetPath).obj;if(this._targetPath===null)return (0, ur.throwNullException)("this._targetPath");if(this._targetPath.lastComponent===null)return (0, ur.throwNullException)("this._targetPath.lastComponent");if(this._targetPath.lastComponent.isIndex){if(e===null)return (0, ur.throwNullException)("targetObj");this._targetPointer.container=e.parent instanceof th.Container?e.parent:null,this._targetPointer.index=this._targetPath.lastComponent.index;}else this._targetPointer=Qa.Pointer.StartOf(e instanceof th.Container?e:null);}return this._targetPointer.copy()}get targetPathString(){return this.targetPath==null?null:this.CompactPathString(this.targetPath)}set targetPathString(e){e==null?this.targetPath=null:this.targetPath=new Up.Path(e);}get hasVariableTarget(){return this.variableDivertName!=null}constructor(e){super(),this._targetPath=null,this._targetPointer=Qa.Pointer.Null,this.variableDivertName=null,this.pushesToStack=false,this.stackPushType=0,this.isExternal=false,this.externalArgs=0,this.isConditional=false,this.pushesToStack=false,typeof e<"u"&&(this.pushesToStack=true,this.stackPushType=e);}Equals(e){let t=e;return t instanceof i&&this.hasVariableTarget==t.hasVariableTarget?this.hasVariableTarget?this.variableDivertName==t.variableDivertName:this.targetPath===null?(0, ur.throwNullException)("this.targetPath"):this.targetPath.Equals(t.targetPath):false}toString(){if(this.hasVariableTarget)return "Divert(variable: "+this.variableDivertName+")";if(this.targetPath==null)return "Divert(null)";{let e=new Kp.StringBuilder,t=this.targetPath.toString();return e.Append("Divert"),this.isConditional&&e.Append("?"),this.pushesToStack&&(this.stackPushType==zp.PushPopType.Function?e.Append(" function"):e.Append(" tunnel")),e.Append(" -> "),e.Append(this.targetPathString),e.Append(" ("),e.Append(t),e.Append(")"),e.toString()}}};hr.Divert=Za;});var yt=b(cr=>{Object.defineProperty(cr,"__esModule",{value:true});cr.SymbolType=void 0;var nh;(function(i){i[i.Knot=0]="Knot",i[i.List=1]="List",i[i.ListItem=2]="ListItem",i[i.Var=3]="Var",i[i.SubFlowAndWeave=4]="SubFlowAndWeave",i[i.Arg=5]="Arg",i[i.Temp=6]="Temp";})(nh||(cr.SymbolType=nh={}));});var xt=b(dr=>{Object.defineProperty(dr,"__esModule",{value:true});dr.VariableAssignment=void 0;var Yp=Ie(),eo=class extends Yp.InkObject{constructor(e,t){super(),this.variableName=e||null,this.isNewDeclaration=!!t,this.isGlobal=false;}toString(){return "VarAssign to "+this.variableName}};dr.VariableAssignment=eo;});var dn=b(fr=>{Object.defineProperty(fr,"__esModule",{value:true});fr.Choice=void 0;var Qp=ar(),pr=se(),_t=ge(),to=ot(),ih=te(),Zp=Z(),ef=yt(),rh=xt(),no=class extends Zp.ParsedObject{get runtimeChoice(){if(!this._runtimeChoice)throw new Error;return this._runtimeChoice}get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}get condition(){return this._condition}set condition(e){this._condition=e,e&&this.AddContent(e);}get runtimeContainer(){return this._innerContentContainer}get innerContentContainer(){return this._innerContentContainer}get containerForCounting(){return this._innerContentContainer}get runtimePath(){if(!this.innerContentContainer||!this.innerContentContainer.path)throw new Error;return this.innerContentContainer.path}constructor(e,t,n){super(),this._condition=null,this._innerContentContainer=null,this._outerContainer=null,this._runtimeChoice=null,this._returnToR1=null,this._returnToR2=null,this._r1Label=null,this._r2Label=null,this._divertToStartContentOuter=null,this._divertToStartContentInner=null,this._startContentRuntimeContainer=null,this.isInvisibleDefault=false,this.hasWeaveStyleInlineBrackets=false,this.GenerateRuntimeObject=()=>{if(this._outerContainer=new pr.Container,this._runtimeChoice=new Qp.ChoicePoint(this.onceOnly),this._runtimeChoice.isInvisibleDefault=this.isInvisibleDefault,(this.startContent||this.choiceOnlyContent||this.condition)&&this._outerContainer.AddContent(_t.ControlCommand.EvalStart()),this.startContent){this._returnToR1=new ih.DivertTargetValue,this._outerContainer.AddContent(this._returnToR1);let r=new rh.VariableAssignment("$r",true);this._outerContainer.AddContent(r),this._outerContainer.AddContent(_t.ControlCommand.BeginString()),this._divertToStartContentOuter=new to.Divert,this._outerContainer.AddContent(this._divertToStartContentOuter),this._startContentRuntimeContainer=this.startContent.GenerateRuntimeObject(),this._startContentRuntimeContainer.name="s";let a=new to.Divert;a.variableDivertName="$r",this._startContentRuntimeContainer.AddContent(a),this._outerContainer.AddToNamedContentOnly(this._startContentRuntimeContainer),this._r1Label=new pr.Container,this._r1Label.name="$r1",this._outerContainer.AddContent(this._r1Label),this._outerContainer.AddContent(_t.ControlCommand.EndString()),this._runtimeChoice.hasStartContent=true;}if(this.choiceOnlyContent){this._outerContainer.AddContent(_t.ControlCommand.BeginString());let r=this.choiceOnlyContent.GenerateRuntimeObject();this._outerContainer.AddContentsOfContainer(r),this._outerContainer.AddContent(_t.ControlCommand.EndString()),this._runtimeChoice.hasChoiceOnlyContent=true;}if(this.condition&&(this.condition.GenerateIntoContainer(this._outerContainer),this._runtimeChoice.hasCondition=true),(this.startContent||this.choiceOnlyContent||this.condition)&&this._outerContainer.AddContent(_t.ControlCommand.EvalEnd()),this._outerContainer.AddContent(this._runtimeChoice),this._innerContentContainer=new pr.Container,this.startContent){this._returnToR2=new ih.DivertTargetValue,this._innerContentContainer.AddContent(_t.ControlCommand.EvalStart()),this._innerContentContainer.AddContent(this._returnToR2),this._innerContentContainer.AddContent(_t.ControlCommand.EvalEnd());let r=new rh.VariableAssignment("$r",true);this._innerContentContainer.AddContent(r),this._divertToStartContentInner=new to.Divert,this._innerContentContainer.AddContent(this._divertToStartContentInner),this._r2Label=new pr.Container,this._r2Label.name="$r2",this._innerContentContainer.AddContent(this._r2Label);}if(this.innerContent){let r=this.innerContent.GenerateRuntimeObject();this._innerContentContainer.AddContentsOfContainer(r);}return this.story.countAllVisits&&(this._innerContentContainer.visitsShouldBeCounted=true),this._innerContentContainer.countingAtStartOnly=true,this._outerContainer},this.toString=()=>this.choiceOnlyContent!==null?`* ${this.startContent}[${this.choiceOnlyContent}]...`:`* ${this.startContent}...`,this.startContent=e,this.choiceOnlyContent=t,this.innerContent=n,this.indentationDepth=1,e&&this.AddContent(this.startContent),t&&this.AddContent(this.choiceOnlyContent),n&&this.AddContent(this.innerContent),this.onceOnly=true;}get typeName(){return "Choice"}ResolveReferences(e){var t;if(this._innerContentContainer&&(this.runtimeChoice.pathOnChoice=this._innerContentContainer.path,this.onceOnly&&(this._innerContentContainer.visitsShouldBeCounted=true)),this._returnToR1){if(!this._r1Label)throw new Error;this._returnToR1.targetPath=this._r1Label.path;}if(this._returnToR2){if(!this._r2Label)throw new Error;this._returnToR2.targetPath=this._r2Label.path;}if(this._divertToStartContentOuter){if(!this._startContentRuntimeContainer)throw new Error;this._divertToStartContentOuter.targetPath=this._startContentRuntimeContainer.path;}if(this._divertToStartContentInner){if(!this._startContentRuntimeContainer)throw new Error;this._divertToStartContentInner.targetPath=this._startContentRuntimeContainer.path;}super.ResolveReferences(e),this.identifier&&(((t=this.identifier)===null||t===void 0?void 0:t.name)||"").length>0&&e.CheckForNamingCollisions(this,this.identifier,ef.SymbolType.SubFlowAndWeave);}};fr.Choice=no;});var sh=b(gr=>{Object.defineProperty(gr,"__esModule",{value:true});gr.StringParserElement=void 0;var mr=class i{constructor(){this.characterIndex=0,this.characterInLineIndex=0,this.lineIndex=0,this.reportedErrorInScope=false,this.uniqueId=0,this.customFlags=0,this.CopyFrom=e=>{i._uniqueIdCounter++,this.uniqueId=i._uniqueIdCounter,this.characterIndex=e.characterIndex,this.characterInLineIndex=e.characterInLineIndex,this.lineIndex=e.lineIndex,this.customFlags=e.customFlags,this.reportedErrorInScope=false;},this.SquashFrom=e=>{this.characterIndex=e.characterIndex,this.characterInLineIndex=e.characterInLineIndex,this.lineIndex=e.lineIndex,this.reportedErrorInScope=e.reportedErrorInScope,this.customFlags=e.customFlags;};}};gr.StringParserElement=mr;mr._uniqueIdCounter=1e3;});var oh=b(Cr=>{Object.defineProperty(Cr,"__esModule",{value:true});Cr.StringParserState=void 0;var ah=sh(),io=class{get currentElement(){return this._stack[this._numElements-1]}get lineIndex(){return this.currentElement.lineIndex}set lineIndex(e){this.currentElement.lineIndex=e;}get characterIndex(){return this.currentElement.characterIndex}set characterIndex(e){this.currentElement.characterIndex=e;}get characterInLineIndex(){return this.currentElement.characterInLineIndex}set characterInLineIndex(e){this.currentElement.characterInLineIndex=e;}get customFlags(){return this.currentElement.customFlags}set customFlags(e){this.currentElement.customFlags=e;}get errorReportedAlreadyInScope(){return this.currentElement.reportedErrorInScope}get stackHeight(){return this._numElements}constructor(){this._stack=[],this._numElements=0,this.StringParserState=()=>{this._stack=new Array(200);for(let n=0;n<200;++n)this._stack[n]=new ah.StringParserElement;this._numElements=1;},this.Push=()=>{if(this._numElements>=this._stack.length&&this._numElements>0)throw new Error("Stack overflow in parser state.");let t=this._stack[this._numElements-1],n=this._stack[this._numElements];return this._numElements++,n.CopyFrom(t),n.uniqueId},this.Pop=t=>{if(this._numElements==1)throw new Error("Attempting to remove final stack element is illegal! Mismatched Begin/Succceed/Fail?");if(this.currentElement.uniqueId!=t)throw new Error("Mismatched rule IDs while Poping - do you have mismatched Begin/Succeed/Fail?");this._numElements-=1;},this.Peek=t=>{if(this.currentElement.uniqueId!=t)throw new Error("Mismatched rule IDs while Peeking - do you have mismatched Begin/Succeed/Fail?");return this._stack[this._numElements-1]},this.PeekPenultimate=()=>this._numElements>=2?this._stack[this._numElements-2]:null,this.Squash=()=>{if(this._numElements<2)throw new Error("Attempting to remove final stack element is illegal! Mismatched Begin/Succceed/Fail?");let t=this._stack[this._numElements-2],n=this._stack[this._numElements-1];t.SquashFrom(n),this._numElements-=1;},this.NoteErrorReported=()=>{for(let t of this._stack)t.reportedErrorInScope=true;};let e=200;for(let t=0;t<e;t++)this._stack[t]=new ah.StringParserElement;this._numElements=1;}};Cr.StringParserState=io;});var so=b(Gt=>{Object.defineProperty(Gt,"__esModule",{value:true});Gt.StringParser=Gt.ParseSuccess=void 0;var ro=Jn(),tf=oh();Gt.ParseSuccess=Symbol("ParseSuccessStruct");var zn=class i{constructor(e){this.ParseRule=null,this.errorHandler=null,this.hadError=false,this.BeginRule=()=>this.state.Push(),this.FailRule=n=>(this.state.Pop(n),null),this.CancelRule=n=>{this.state.Pop(n);},this.SucceedRule=(n,r=null)=>{let a=this.state.Peek(n),s=this.state.PeekPenultimate();this.RuleDidSucceed&&this.RuleDidSucceed(r,s,a),this.state.Squash();let o=r;return o===null&&(o=i.ParseSuccess),o},this.Expect=(n,r=null,a=null)=>{let s=this.ParseObject(n);if(s===null){r===null&&(r=n.name);let o,l=this.LineRemainder();l===null||l.length===0?o="end of line":o=`'${l}'`,this.Error(`Expected ${r} but saw ${o}`),a!==null&&(s=a());}return s},this.Error=(n,r=false)=>{this.ErrorOnLine(n,this.lineIndex+1,r);},this.ErrorWithParsedObject=(n,r,a=false)=>{this.ErrorOnLine(n,r.debugMetadata?r.debugMetadata.startLineNumber:-1,a);},this.ErrorOnLine=(n,r,a)=>{if(!this.state.errorReportedAlreadyInScope){let s=a?"Warning":"Error";if(this.errorHandler)this.errorHandler(n,this.index,r-1,a);else throw new Error(`${s} on line ${r}: ${n}`);this.state.NoteErrorReported();}a||(this.hadError=true);},this.Warning=n=>this.Error(n,true),this.LineRemainder=()=>this.Peek(()=>this.ParseUntilCharactersFromString(`
|
|
1
|
+
import {createExportableElement,PixiError}from'@drincs/pixi-vn';import {canvas,VideoSprite,showVideo,Assets,Text,showText,ImageSprite,showImage,ImageContainer,showImageContainer,shakeEffect,pushOut,zoomOut,moveOut,removeWithDissolve,removeWithFade,pushIn,zoomIn,moveIn,showWithDissolve,showWithFade}from'@drincs/pixi-vn/canvas';import {NarrationManagerStatic,narration,RegisteredLabels,LabelAbstract}from'@drincs/pixi-vn/narration';import {sound}from'@drincs/pixi-vn/sound';import {storage}from'@drincs/pixi-vn/storage';import {RegisteredCharacters}from'@drincs/pixi-vn/characters';import g,{ZodType}from'zod';var Lc=Object.create;var na=Object.defineProperty;var Bc=Object.getOwnPropertyDescriptor;var Wc=Object.getOwnPropertyNames;var jc=Object.getPrototypeOf,qc=Object.prototype.hasOwnProperty;var Mc=(i,e,t)=>e in i?na(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t;var Vt=(i=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(i,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):i)(function(i){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var A=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports);var Gc=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Wc(e))!qc.call(i,r)&&r!==t&&na(i,r,{get:()=>e[r],enumerable:!(n=Bc(e,r))||n.enumerable});return i};var ia=(i,e,t)=>(t=i!=null?Lc(jc(i)):{},Gc(e||!i||!i.__esModule?na(t,"default",{value:i,enumerable:true}):t,i));var iy=(i,e,t)=>Mc(i,typeof e!="symbol"?e+"":e,t);var Oa=A(Ni=>{Object.defineProperty(Ni,"__esModule",{value:true});Ni.CompilerOptions=void 0;var Ta=class{constructor(e=null,t=[],n=false,r=null,a=null){this.sourceFilename=e,this.pluginNames=t,this.countAllVisits=n,this.errorHandler=r,this.fileHandler=a;}};Ni.CompilerOptions=Ta;});var ju=A(Ii=>{Object.defineProperty(Ii,"__esModule",{value:true});Ii.DebugSourceRange=void 0;var Pa=class{constructor(e,t,n){this.length=e,this.debugMetadata=t,this.text=n;}};Ii.DebugSourceRange=Pa;});var tn=A(Vi=>{Object.defineProperty(Vi,"__esModule",{value:true});Vi.ErrorType=void 0;var qu;(function(i){i[i.Author=0]="Author",i[i.Warning=1]="Warning",i[i.Error=2]="Error";})(qu||(Vi.ErrorType=qu={}));});var Mu=A(ki=>{Object.defineProperty(ki,"__esModule",{value:true});ki.Argument=void 0;var Fa=class{constructor(e=null,t=null,n=null){this.identifier=e,this.isByReference=t,this.isDivertTarget=n;}get typeName(){return "Argument"}};ki.Argument=Fa;});var U=A(ue=>{Object.defineProperty(ue,"__esModule",{value:true});ue.filterUndef=ue.isEquatable=ue.nullIfUndefined=ue.asINamedContentOrNull=ue.asBooleanOrThrows=ue.asNumberOrThrows=ue.asOrThrows=ue.asOrNull=void 0;function hp(i,e){return i instanceof e?Gu(i):null}ue.asOrNull=hp;function cp(i,e){if(i instanceof e)return Gu(i);throw new Error(`${i} is not of type ${e}`)}ue.asOrThrows=cp;function dp(i){if(typeof i=="number")return i;throw new Error(`${i} is not a number`)}ue.asNumberOrThrows=dp;function pp(i){if(typeof i=="boolean")return i;throw new Error(`${i} is not a boolean`)}ue.asBooleanOrThrows=pp;function fp(i){return i.hasValidName&&i.name?i:null}ue.asINamedContentOrNull=fp;function mp(i){return typeof i>"u"?null:i}ue.nullIfUndefined=mp;function gp(i){return typeof i=="object"&&typeof i.Equals=="function"}ue.isEquatable=gp;function Gu(i,e){return i}function Cp(i){return i!=null}ue.filterUndef=Cp;});var Z=A(Ri=>{Object.defineProperty(Ri,"__esModule",{value:true});Ri.ParsedObject=void 0;var $u=U(),Na=class{constructor(){this._alreadyHadError=false,this._alreadyHadWarning=false,this._debugMetadata=null,this._runtimeObject=null,this.content=[],this.parent=null,this.GetType=()=>this.typeName,this.AddContent=e=>{this.content===null&&(this.content=[]);let t=Array.isArray(e)?e:[e];for(let n of t)n.hasOwnProperty("parent")&&(n.parent=this),this.content.push(n);if(!Array.isArray(e))return e},this.InsertContent=(e,t)=>(this.content===null&&(this.content=[]),t.parent=this,this.content.splice(e,0,t),t),this.Find=e=>(t=null)=>{let n=(0, $u.asOrNull)(this,e);if(n!==null&&(t===null||t(n)===true))return n;if(this.content===null)return null;for(let r of this.content){let a=r.Find&&r.Find(e)(t);if(a)return a}return null},this.FindAll=e=>(t,n)=>{let r=Array.isArray(n)?n:[],a=(0, $u.asOrNull)(this,e);if(a!==null&&(!t||t(a)===true)&&r.push(a),this.content===null)return [];for(let s of this.content)s.FindAll&&s.FindAll(e)(t,r);return r},this.Warning=(e,t=null)=>{this.Error(e,t,true);};}get debugMetadata(){return this._debugMetadata===null&&this.parent?this.parent.debugMetadata:this._debugMetadata}set debugMetadata(e){this._debugMetadata=e;}get hasOwnDebugMetadata(){return !!this.debugMetadata}get typeName(){return "ParsedObject"}get story(){let e=this;for(;e.parent;)e=e.parent;return e}get runtimeObject(){return this._runtimeObject||(this._runtimeObject=this.GenerateRuntimeObject(),this._runtimeObject&&(this._runtimeObject.debugMetadata=this.debugMetadata)),this._runtimeObject}set runtimeObject(e){this._runtimeObject=e;}get runtimePath(){if(!this.runtimeObject.path)throw new Error;return this.runtimeObject.path}get containerForCounting(){return this.runtimeObject}get ancestry(){let e=[],t=this.parent;for(;t;)e.push(t),t=t.parent;return e=e.reverse(),e}ResolveReferences(e){if(this.content!==null)for(let t of this.content)t.ResolveReferences(e);}Error(e,t=null,n=false){if(t===null&&(t=this),!(t._alreadyHadError&&!n||t._alreadyHadWarning&&n)){if(this.parent)this.parent.Error(e,t,n);else throw new Error(`No parent object to send error to: ${e}`);n?t._alreadyHadWarning=true:t._alreadyHadError=true;}}};Ri.ParsedObject=Na;});var Bi=A(Li=>{Object.defineProperty(Li,"__esModule",{value:true});Li.AuthorWarning=void 0;var yp=Z(),Ia=class extends yp.ParsedObject{constructor(e){super(),this.warningMessage=e,this.GenerateRuntimeObject=()=>(this.Warning(this.warningMessage),null);}get typeName(){return "AuthorWarning"}};Li.AuthorWarning=Ia;});var Ne=A(In=>{Object.defineProperty(In,"__esModule",{value:true});In.Path=void 0;var nn=class i{constructor(){if(this._components=[],this._componentsString=null,this._isRelative=false,typeof arguments[0]=="string"){let e=arguments[0];this.componentsString=e;}else if(arguments[0]instanceof i.Component&&arguments[1]instanceof i){let e=arguments[0],t=arguments[1];this._components.push(e),this._components=this._components.concat(t._components);}else if(arguments[0]instanceof Array){let e=arguments[0],t=!!arguments[1];this._components=this._components.concat(e),this._isRelative=t;}}get isRelative(){return this._isRelative}get componentCount(){return this._components.length}get head(){return this._components.length>0?this._components[0]:null}get tail(){if(this._components.length>=2){let e=this._components.slice(1,this._components.length);return new i(e)}else return i.self}get length(){return this._components.length}get lastComponent(){let e=this._components.length-1;return e>=0?this._components[e]:null}get containsNamedComponent(){for(let e=0,t=this._components.length;e<t;e++)if(!this._components[e].isIndex)return true;return false}static get self(){let e=new i;return e._isRelative=true,e}GetComponent(e){return this._components[e]}PathByAppendingPath(e){let t=new i,n=0;for(let r=0;r<e._components.length&&e._components[r].isParent;++r)n++;for(let r=0;r<this._components.length-n;++r)t._components.push(this._components[r]);for(let r=n;r<e._components.length;++r)t._components.push(e._components[r]);return t}get componentsString(){return this._componentsString==null&&(this._componentsString=this._components.join("."),this.isRelative&&(this._componentsString="."+this._componentsString)),this._componentsString}set componentsString(e){if(this._components.length=0,this._componentsString=e,this._componentsString==null||this._componentsString=="")return;this._componentsString[0]=="."&&(this._isRelative=true,this._componentsString=this._componentsString.substring(1));let t=this._componentsString.split(".");for(let n of t)/^(\-|\+)?([0-9]+|Infinity)$/.test(n)?this._components.push(new i.Component(parseInt(n))):this._components.push(new i.Component(n));}toString(){return this.componentsString}Equals(e){if(e==null||e._components.length!=this._components.length||e.isRelative!=this.isRelative)return false;for(let t=0,n=e._components.length;t<n;t++)if(!e._components[t].Equals(this._components[t]))return false;return true}PathByAppendingComponent(e){let t=new i;return t._components.push(...this._components),t._components.push(e),t}};In.Path=nn;nn.parentId="^";(function(i){class e{constructor(n){this.index=-1,this.name=null,typeof n=="string"?this.name=n:this.index=n;}get isIndex(){return this.index>=0}get isParent(){return this.name==i.parentId}static ToParent(){return new e(i.parentId)}toString(){return this.isIndex?this.index.toString():this.name}Equals(n){return n!=null&&n.isIndex==this.isIndex?this.isIndex?this.index==n.index:this.name==n.name:false}}i.Component=e;})(nn||(In.Path=nn={}));});var Vn=A(Wi=>{Object.defineProperty(Wi,"__esModule",{value:true});Wi.Debug=void 0;var Ju;(function(i){function e(n,r,a){t(n instanceof r,a);}i.AssertType=e;function t(n,r){if(!n)throw typeof r<"u"&&console.warn(r),console.trace&&console.trace(),new Error("")}i.Assert=t;})(Ju||(Wi.Debug=Ju={}));});var me=A(rn=>{Object.defineProperty(rn,"__esModule",{value:true});rn.throwNullException=rn.NullException=void 0;var ji=class extends Error{};rn.NullException=ji;function vp(i){throw new ji(`${i} is null or undefined`)}rn.throwNullException=vp;});var Ie=A(Mi=>{Object.defineProperty(Mi,"__esModule",{value:true});Mi.InkObject=void 0;var sn=Ne(),kn=se(),Va=Vn(),an=U(),qi=me(),ka=class{constructor(){this.parent=null,this._debugMetadata=null,this._path=null;}get debugMetadata(){return this._debugMetadata===null&&this.parent?this.parent.debugMetadata:this._debugMetadata}set debugMetadata(e){this._debugMetadata=e;}get ownDebugMetadata(){return this._debugMetadata}DebugLineNumberOfPath(e){if(e===null)return null;let t=this.rootContentContainer;if(t){let n=t.ContentAtPath(e).obj;if(n){let r=n.debugMetadata;if(r!==null)return r.startLineNumber}}return null}get path(){if(this._path==null)if(this.parent==null)this._path=new sn.Path;else {let e=[],t=this,n=(0, an.asOrNull)(t.parent,kn.Container);for(;n!==null;){let r=(0, an.asINamedContentOrNull)(t);if(r!=null&&r.hasValidName){if(r.name===null)return (0, qi.throwNullException)("namedChild.name");e.unshift(new sn.Path.Component(r.name));}else e.unshift(new sn.Path.Component(n.content.indexOf(t)));t=n,n=(0, an.asOrNull)(n.parent,kn.Container);}this._path=new sn.Path(e);}return this._path}ResolvePath(e){if(e===null)return (0, qi.throwNullException)("path");if(e.isRelative){let t=(0, an.asOrNull)(this,kn.Container);return t===null&&(Va.Debug.Assert(this.parent!==null,"Can't resolve relative path because we don't have a parent"),t=(0, an.asOrNull)(this.parent,kn.Container),Va.Debug.Assert(t!==null,"Expected parent to be a container"),Va.Debug.Assert(e.GetComponent(0).isParent),e=e.tail),t===null?(0, qi.throwNullException)("nearestContainer"):t.ContentAtPath(e)}else {let t=this.rootContentContainer;return t===null?(0, qi.throwNullException)("contentContainer"):t.ContentAtPath(e)}}ConvertPathToRelative(e){let t=this.path,n=Math.min(e.length,t.length),r=-1;for(let l=0;l<n;++l){let u=t.GetComponent(l),h=e.GetComponent(l);if(u.Equals(h))r=l;else break}if(r==-1)return e;let a=t.componentCount-1-r,s=[];for(let l=0;l<a;++l)s.push(sn.Path.Component.ToParent());for(let l=r+1;l<e.componentCount;++l)s.push(e.GetComponent(l));return new sn.Path(s,true)}CompactPathString(e){let t=null,n=null;return e.isRelative?(n=e.componentsString,t=this.path.PathByAppendingPath(e).componentsString):(n=this.ConvertPathToRelative(e).componentsString,t=e.componentsString),n.length<t.length?n:t}get rootContentContainer(){let e=this;for(;e.parent;)e=e.parent;return (0, an.asOrNull)(e,kn.Container)}Copy(){throw Error("Not Implemented: Doesn't support copying")}SetChild(e,t,n){e[t]&&(e[t]=null),e[t]=n,e[t]&&(e[t].parent=this);}Equals(e){return e===this}};Mi.InkObject=ka;});var Wt=A(Gi=>{Object.defineProperty(Gi,"__esModule",{value:true});Gi.StringBuilder=void 0;var Ra=class{constructor(e){e=typeof e<"u"?e.toString():"",this.string=e;}get Length(){return this.string.length}Append(e){e!==null&&(this.string+=e);}AppendLine(e){typeof e<"u"&&this.Append(e),this.string+=`
|
|
2
|
+
`;}AppendFormat(e,...t){this.string+=e.replace(/{(\d+)}/g,(n,r)=>typeof t[r]<"u"?t[r]:n);}toString(){return this.string}Clear(){this.string="";}};Gi.StringBuilder=Ra;});var ke=A(on=>{Object.defineProperty(on,"__esModule",{value:true});on.InkList=on.InkListItem=void 0;var nt=me(),Ep=Wt(),Ve=class i{constructor(){if(this.originName=null,this.itemName=null,typeof arguments[1]<"u"){let e=arguments[0],t=arguments[1];this.originName=e,this.itemName=t;}else if(arguments[0]){let t=arguments[0].toString().split(".");this.originName=t[0],this.itemName=t[1];}}static get Null(){return new i(null,null)}get isNull(){return this.originName==null&&this.itemName==null}get fullName(){return (this.originName!==null?this.originName:"?")+"."+this.itemName}toString(){return this.fullName}Equals(e){if(e instanceof i){let t=e;return t.itemName==this.itemName&&t.originName==this.originName}return false}copy(){return new i(this.originName,this.itemName)}serialized(){return JSON.stringify({originName:this.originName,itemName:this.itemName})}static fromSerializedKey(e){let t=JSON.parse(e);if(!i.isLikeInkListItem(t))return i.Null;let n=t;return new i(n.originName,n.itemName)}static isLikeInkListItem(e){return !(typeof e!="object"||!e.hasOwnProperty("originName")||!e.hasOwnProperty("itemName")||typeof e.originName!="string"&&typeof e.originName!==null||typeof e.itemName!="string"&&typeof e.itemName!==null)}};on.InkListItem=Ve;var La=class i extends Map{constructor(){if(super(arguments[0]instanceof i?arguments[0]:[]),this.origins=null,this._originNames=[],arguments[0]instanceof i){let e=arguments[0],t=e.originNames;t!==null&&(this._originNames=t.slice()),e.origins!==null&&(this.origins=e.origins.slice());}else if(typeof arguments[0]=="string"){let e=arguments[0],t=arguments[1];if(this.SetInitialOriginName(e),t.listDefinitions===null)return (0, nt.throwNullException)("originStory.listDefinitions");let n=t.listDefinitions.TryListGetDefinition(e,null);if(n.exists){if(n.result===null)return (0, nt.throwNullException)("def.result");this.origins=[n.result];}else throw new Error("InkList origin could not be found in story when constructing new list: "+e)}else if(typeof arguments[0]=="object"&&arguments[0].hasOwnProperty("Key")&&arguments[0].hasOwnProperty("Value")){let e=arguments[0];this.Add(e.Key,e.Value);}}static FromString(e,t){var n;if(e==null||e=="")return new i;let r=(n=t.listDefinitions)===null||n===void 0?void 0:n.FindSingleItemListWithName(e);if(r)return r.value===null?(0, nt.throwNullException)("listValue.value"):new i(r.value);throw new Error("Could not find the InkListItem from the string '"+e+"' to create an InkList because it doesn't exist in the original list definition in ink.")}AddItem(e,t=null){if(e instanceof Ve){let n=e;if(n.originName==null){this.AddItem(n.itemName);return}if(this.origins===null)return (0, nt.throwNullException)("this.origins");for(let r of this.origins)if(r.name==n.originName){let a=r.TryGetValueForItem(n,0);if(a.exists){this.Add(n,a.result);return}else throw new Error("Could not add the item "+n+" to this list because it doesn't exist in the original list definition in ink.")}throw new Error("Failed to add item to list because the item was from a new list definition that wasn't previously known to this list. Only items from previously known lists can be used, so that the int value can be found.")}else if(e!==null){let n=e,r=null;if(this.origins===null)return (0, nt.throwNullException)("this.origins");for(let a of this.origins){if(n===null)return (0, nt.throwNullException)("itemName");if(a.ContainsItemWithName(n)){if(r!=null)throw new Error("Could not add the item "+n+" to this list because it could come from either "+a.name+" or "+r.name);r=a;}}if(r==null){if(t==null)throw new Error("Could not add the item "+n+" to this list because it isn't known to any list definitions previously associated with this list.");{let a=i.FromString(n,t).orderedItems[0];this.Add(a.Key,a.Value);}}else {let a=new Ve(r.name,n),s=r.ValueForItem(a);this.Add(a,s);}}}ContainsItemNamed(e){for(let[t]of this)if(Ve.fromSerializedKey(t).itemName==e)return true;return false}ContainsKey(e){return this.has(e.serialized())}Add(e,t){let n=e.serialized();if(this.has(n))throw new Error(`The Map already contains an entry for ${e}`);this.set(n,t);}Remove(e){return this.delete(e.serialized())}get Count(){return this.size}get originOfMaxItem(){if(this.origins==null)return null;let e=this.maxItem.Key.originName,t=null;return this.origins.every(n=>n.name==e?(t=n,false):true),t}get originNames(){if(this.Count>0){this._originNames==null&&this.Count>0?this._originNames=[]:(this._originNames||(this._originNames=[]),this._originNames.length=0);for(let[e]of this){let t=Ve.fromSerializedKey(e);if(t.originName===null)return (0, nt.throwNullException)("item.originName");this._originNames.push(t.originName);}}return this._originNames}SetInitialOriginName(e){this._originNames=[e];}SetInitialOriginNames(e){e==null?this._originNames=null:this._originNames=e.slice();}get maxItem(){let e={Key:Ve.Null,Value:0};for(let[t,n]of this){let r=Ve.fromSerializedKey(t);(e.Key.isNull||n>e.Value)&&(e={Key:r,Value:n});}return e}get minItem(){let e={Key:Ve.Null,Value:0};for(let[t,n]of this){let r=Ve.fromSerializedKey(t);(e.Key.isNull||n<e.Value)&&(e={Key:r,Value:n});}return e}get inverse(){let e=new i;if(this.origins!=null)for(let t of this.origins)for(let[n,r]of t.items){let a=Ve.fromSerializedKey(n);this.ContainsKey(a)||e.Add(a,r);}return e}get all(){let e=new i;if(this.origins!=null)for(let t of this.origins)for(let[n,r]of t.items){let a=Ve.fromSerializedKey(n);e.set(a.serialized(),r);}return e}Union(e){let t=new i(this);for(let[n,r]of e)t.set(n,r);return t}Intersect(e){let t=new i;for(let[n,r]of this)e.has(n)&&t.set(n,r);return t}HasIntersection(e){for(let[t]of this)if(e.has(t))return true;return false}Without(e){let t=new i(this);for(let[n]of e)t.delete(n);return t}Contains(e){if(typeof e=="string")return this.ContainsItemNamed(e);let t=e;if(t.size==0||this.size==0)return false;for(let[n]of t)if(!this.has(n))return false;return true}GreaterThan(e){return this.Count==0?false:e.Count==0?true:this.minItem.Value>e.maxItem.Value}GreaterThanOrEquals(e){return this.Count==0?false:e.Count==0?true:this.minItem.Value>=e.minItem.Value&&this.maxItem.Value>=e.maxItem.Value}LessThan(e){return e.Count==0?false:this.Count==0?true:this.maxItem.Value<e.minItem.Value}LessThanOrEquals(e){return e.Count==0?false:this.Count==0?true:this.maxItem.Value<=e.maxItem.Value&&this.minItem.Value<=e.minItem.Value}MaxAsList(){return this.Count>0?new i(this.maxItem):new i}MinAsList(){return this.Count>0?new i(this.minItem):new i}ListWithSubRange(e,t){if(this.Count==0)return new i;let n=this.orderedItems,r=0,a=Number.MAX_SAFE_INTEGER;Number.isInteger(e)?r=e:e instanceof i&&e.Count>0&&(r=e.minItem.Value),Number.isInteger(t)?a=t:t instanceof i&&t.Count>0&&(a=t.maxItem.Value);let s=new i;s.SetInitialOriginNames(this.originNames);for(let o of n)o.Value>=r&&o.Value<=a&&s.Add(o.Key,o.Value);return s}Equals(e){if(!(e instanceof i)||e.Count!=this.Count)return false;for(let[t]of this)if(!e.has(t))return false;return true}get orderedItems(){let e=new Array;for(let[t,n]of this){let r=Ve.fromSerializedKey(t);e.push({Key:r,Value:n});}return e.sort((t,n)=>t.Key.originName===null?(0, nt.throwNullException)("x.Key.originName"):n.Key.originName===null?(0, nt.throwNullException)("y.Key.originName"):t.Value==n.Value?t.Key.originName.localeCompare(n.Key.originName):t.Value<n.Value?-1:t.Value>n.Value?1:0),e}get singleItem(){for(let e of this.orderedItems)return e.Key;return null}toString(){let e=this.orderedItems,t=new Ep.StringBuilder;for(let n=0;n<e.length;n++){n>0&&t.Append(", ");let r=e[n].Key;if(r.itemName===null)return (0, nt.throwNullException)("item.itemName");t.Append(r.itemName);}return t.toString()}valueOf(){return NaN}};on.InkList=La;});var Rn=A($i=>{Object.defineProperty($i,"__esModule",{value:true});$i.StoryException=void 0;var Ba=class extends Error{constructor(e){super(e),this.useEndLineNumber=false,this.message=e,this.name="StoryException";}};$i.StoryException=Ba;});var ln=A(At=>{Object.defineProperty(At,"__esModule",{value:true});At.tryParseFloat=At.tryParseInt=At.tryGetValueFromMap=void 0;function Sp(i,e,t){if(i===null)return {result:t,exists:false};let n=i.get(e);return typeof n>"u"?{result:t,exists:false}:{result:n,exists:true}}At.tryGetValueFromMap=Sp;function Dp(i,e=0){let t=parseInt(i);return Number.isNaN(t)?{result:e,exists:false}:{result:t,exists:true}}At.tryParseInt=Dp;function bp(i,e=0){let t=parseFloat(i);return Number.isNaN(t)?{result:e,exists:false}:{result:t,exists:true}}At.tryParseFloat=bp;});var te=A(ne=>{Object.defineProperty(ne,"__esModule",{value:true});ne.ValueType=ne.ListValue=ne.VariablePointerValue=ne.DivertTargetValue=ne.StringValue=ne.FloatValue=ne.IntValue=ne.BoolValue=ne.Value=ne.AbstractValue=void 0;var Hu=Ie(),Uu=Ne(),jt=ke(),Ap=Rn(),Ln=U(),zu=ln(),Ge=me(),Ji=class i extends Hu.InkObject{static Create(e,t){if(t){if(t===Q.Int&&Number.isInteger(Number(e)))return new rt(Number(e));if(t===Q.Float&&!isNaN(e))return new st(Number(e))}if(typeof e=="boolean")return new un(!!e);if(typeof e=="string")return new Ct(String(e));if(Number.isInteger(Number(e)))return new rt(Number(e));if(isNaN(e)){if(e instanceof Uu.Path)return new Hi((0, Ln.asOrThrows)(e,Uu.Path));if(e instanceof jt.InkList)return new Ui((0, Ln.asOrThrows)(e,jt.InkList))}else return new st(Number(e));return null}Copy(){return (0, Ln.asOrThrows)(i.Create(this.valueObject),Hu.InkObject)}BadCastException(e){return new Ap.StoryException("Can't cast "+this.valueObject+" from "+this.valueType+" to "+e)}};ne.AbstractValue=Ji;var it=class extends Ji{constructor(e){super(),this.value=e;}get valueObject(){return this.value}toString(){return this.value===null?(0, Ge.throwNullException)("Value.value"):this.value.toString()}};ne.Value=it;var un=class extends it{constructor(e){super(e||false);}get isTruthy(){return !!this.value}get valueType(){return Q.Bool}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==this.valueType)return this;if(e==Q.Int)return new rt(this.value?1:0);if(e==Q.Float)return new st(this.value?1:0);if(e==Q.String)return new Ct(this.value?"true":"false");throw this.BadCastException(e)}toString(){return this.value?"true":"false"}};ne.BoolValue=un;var rt=class extends it{constructor(e){super(e||0);}get isTruthy(){return this.value!=0}get valueType(){return Q.Int}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==this.valueType)return this;if(e==Q.Bool)return new un(this.value!==0);if(e==Q.Float)return new st(this.value);if(e==Q.String)return new Ct(""+this.value);throw this.BadCastException(e)}};ne.IntValue=rt;var st=class extends it{constructor(e){super(e||0);}get isTruthy(){return this.value!=0}get valueType(){return Q.Float}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==this.valueType)return this;if(e==Q.Bool)return new un(this.value!==0);if(e==Q.Int)return new rt(this.value);if(e==Q.String)return new Ct(""+this.value);throw this.BadCastException(e)}};ne.FloatValue=st;var Ct=class extends it{constructor(e){if(super(e||""),this._isNewline=this.value==`
|
|
3
|
+
`,this._isInlineWhitespace=true,this.value===null)return (0, Ge.throwNullException)("Value.value");this.value.length>0&&this.value.split("").every(t=>t!=" "&&t!=" "?(this._isInlineWhitespace=false,false):true);}get valueType(){return Q.String}get isTruthy(){return this.value===null?(0, Ge.throwNullException)("Value.value"):this.value.length>0}get isNewline(){return this._isNewline}get isInlineWhitespace(){return this._isInlineWhitespace}get isNonWhitespace(){return !this.isNewline&&!this.isInlineWhitespace}Cast(e){if(e==this.valueType)return this;if(e==Q.Int){let t=(0, zu.tryParseInt)(this.value);if(t.exists)return new rt(t.result);throw this.BadCastException(e)}if(e==Q.Float){let t=(0, zu.tryParseFloat)(this.value);if(t.exists)return new st(t.result);throw this.BadCastException(e)}throw this.BadCastException(e)}};ne.StringValue=Ct;var Hi=class extends it{constructor(e=null){super(e);}get valueType(){return Q.DivertTarget}get targetPath(){return this.value===null?(0, Ge.throwNullException)("Value.value"):this.value}set targetPath(e){this.value=e;}get isTruthy(){throw new Error("Shouldn't be checking the truthiness of a divert target")}Cast(e){if(e==this.valueType)return this;throw this.BadCastException(e)}toString(){return "DivertTargetValue("+this.targetPath+")"}};ne.DivertTargetValue=Hi;var Wa=class i extends it{constructor(e,t=-1){super(e),this._contextIndex=t;}get contextIndex(){return this._contextIndex}set contextIndex(e){this._contextIndex=e;}get variableName(){return this.value===null?(0, Ge.throwNullException)("Value.value"):this.value}set variableName(e){this.value=e;}get valueType(){return Q.VariablePointer}get isTruthy(){throw new Error("Shouldn't be checking the truthiness of a variable pointer")}Cast(e){if(e==this.valueType)return this;throw this.BadCastException(e)}toString(){return "VariablePointerValue("+this.variableName+")"}Copy(){return new i(this.variableName,this.contextIndex)}};ne.VariablePointerValue=Wa;var Ui=class i extends it{get isTruthy(){return this.value===null?(0, Ge.throwNullException)("this.value"):this.value.Count>0}get valueType(){return Q.List}Cast(e){if(this.value===null)return (0, Ge.throwNullException)("Value.value");if(e==Q.Int){let t=this.value.maxItem;return t.Key.isNull?new rt(0):new rt(t.Value)}else if(e==Q.Float){let t=this.value.maxItem;return t.Key.isNull?new st(0):new st(t.Value)}else if(e==Q.String){let t=this.value.maxItem;return t.Key.isNull?new Ct(""):new Ct(t.Key.toString())}if(e==this.valueType)return this;throw this.BadCastException(e)}constructor(e,t){super(null),!e&&!t?this.value=new jt.InkList:e instanceof jt.InkList?this.value=new jt.InkList(e):e instanceof jt.InkListItem&&typeof t=="number"&&(this.value=new jt.InkList({Key:e,Value:t}));}static RetainListOriginsForAssignment(e,t){let n=(0, Ln.asOrNull)(e,i),r=(0, Ln.asOrNull)(t,i);if(r&&r.value===null)return (0, Ge.throwNullException)("newList.value");if(n&&n.value===null)return (0, Ge.throwNullException)("oldList.value");n&&r&&r.value.Count==0&&r.value.SetInitialOriginNames(n.value.originNames);}};ne.ListValue=Ui;var Q;(function(i){i[i.Bool=-1]="Bool",i[i.Int=0]="Int",i[i.Float=1]="Float",i[i.List=2]="List",i[i.String=3]="String",i[i.DivertTarget=4]="DivertTarget",i[i.VariablePointer=5]="VariablePointer";})(Q||(ne.ValueType=Q={}));});var Ku=A(zi=>{Object.defineProperty(zi,"__esModule",{value:true});zi.SearchResult=void 0;var wp=se(),ja=class i{constructor(){this.obj=null,this.approximate=false;}get correctObj(){return this.approximate?null:this.obj}get container(){return this.obj instanceof wp.Container?this.obj:null}copy(){let e=new i;return e.obj=this.obj,e.approximate=this.approximate,e}};zi.SearchResult=ja;});var se=A(Wn=>{Object.defineProperty(Wn,"__esModule",{value:true});Wn.Container=void 0;var xp=te(),Xu=me(),_p=Wt(),hn=Ie(),Tp=Ku(),Yu=Ne(),Qu=Vn(),Op=ln(),wt=U(),Bn=class i extends hn.InkObject{constructor(){super(...arguments),this.name=null,this._content=[],this.namedContent=new Map,this.visitsShouldBeCounted=false,this.turnIndexShouldBeCounted=false,this.countingAtStartOnly=false,this._pathToFirstLeafContent=null;}get hasValidName(){return this.name!=null&&this.name.length>0}get content(){return this._content}set content(e){this.AddContent(e);}get namedOnlyContent(){let e=new Map;for(let[t,n]of this.namedContent){let r=(0, wt.asOrThrows)(n,hn.InkObject);e.set(t,r);}for(let t of this.content){let n=(0, wt.asINamedContentOrNull)(t);n!=null&&n.hasValidName&&e.delete(n.name);}return e.size==0&&(e=null),e}set namedOnlyContent(e){let t=this.namedOnlyContent;if(t!=null)for(let[n]of t)this.namedContent.delete(n);if(e!=null)for(let[,n]of e){let r=(0, wt.asINamedContentOrNull)(n);r!=null&&this.AddToNamedContentOnly(r);}}get countFlags(){let e=0;return this.visitsShouldBeCounted&&(e|=i.CountFlags.Visits),this.turnIndexShouldBeCounted&&(e|=i.CountFlags.Turns),this.countingAtStartOnly&&(e|=i.CountFlags.CountStartOnly),e==i.CountFlags.CountStartOnly&&(e=0),e}set countFlags(e){let t=e;(t&i.CountFlags.Visits)>0&&(this.visitsShouldBeCounted=true),(t&i.CountFlags.Turns)>0&&(this.turnIndexShouldBeCounted=true),(t&i.CountFlags.CountStartOnly)>0&&(this.countingAtStartOnly=true);}get pathToFirstLeafContent(){return this._pathToFirstLeafContent==null&&(this._pathToFirstLeafContent=this.path.PathByAppendingPath(this.internalPathToFirstLeafContent)),this._pathToFirstLeafContent}get internalPathToFirstLeafContent(){let e=[],t=this;for(;t instanceof i;)t.content.length>0&&(e.push(new Yu.Path.Component(0)),t=t.content[0]);return new Yu.Path(e)}AddContent(e){if(e instanceof Array){let t=e;for(let n of t)this.AddContent(n);}else {let t=e;if(this._content.push(t),t.parent)throw new Error("content is already in "+t.parent);t.parent=this,this.TryAddNamedContent(t);}}TryAddNamedContent(e){let t=(0, wt.asINamedContentOrNull)(e);t!=null&&t.hasValidName&&this.AddToNamedContentOnly(t);}AddToNamedContentOnly(e){Qu.Debug.AssertType(e,hn.InkObject,"Can only add Runtime.Objects to a Runtime.Container");let t=(0, wt.asOrThrows)(e,hn.InkObject);if(t.parent=this,e.name===null)return (0, Xu.throwNullException)("namedContentObj.name");this.namedContent.set(e.name,e);}ContentAtPath(e,t=0,n=-1){n==-1&&(n=e.length);let r=new Tp.SearchResult;r.approximate=false;let a=this,s=this;for(let o=t;o<n;++o){let l=e.GetComponent(o);if(a==null){r.approximate=true;break}let u=a.ContentWithPathComponent(l);if(u==null){r.approximate=true;break}let h=(0, wt.asOrNull)(u,i);if(o<n-1&&h==null){r.approximate=true;break}s=u,a=h;}return r.obj=s,r}InsertContent(e,t){if(this.content.splice(t,0,e),e.parent)throw new Error("content is already in "+e.parent);e.parent=this,this.TryAddNamedContent(e);}AddContentsOfContainer(e){this.content.push(...e.content);for(let t of e.content)t.parent=this,this.TryAddNamedContent(t);}ContentWithPathComponent(e){if(e.isIndex)return e.index>=0&&e.index<this.content.length?this.content[e.index]:null;if(e.isParent)return this.parent;{if(e.name===null)return (0, Xu.throwNullException)("component.name");let t=(0, Op.tryGetValueFromMap)(this.namedContent,e.name,null);return t.exists?(0, wt.asOrThrows)(t.result,hn.InkObject):null}}BuildStringOfHierarchy(){let e;if(arguments.length==0)return e=new _p.StringBuilder,this.BuildStringOfHierarchy(e,0,null),e.toString();e=arguments[0];let t=arguments[1],n=arguments[2];function r(){for(let o=0;o<4*t;++o)e.Append(" ");}r(),e.Append("["),this.hasValidName&&e.AppendFormat(" ({0})",this.name),this==n&&e.Append(" <---"),e.AppendLine(),t++;for(let s=0;s<this.content.length;++s){let o=this.content[s];o instanceof i?o.BuildStringOfHierarchy(e,t,n):(r(),o instanceof xp.StringValue?(e.Append('"'),e.Append(o.toString().replace(`
|
|
4
|
+
`,"\\n")),e.Append('"')):e.Append(o.toString())),s!=this.content.length-1&&e.Append(","),!(o instanceof i)&&o==n&&e.Append(" <---"),e.AppendLine();}let a=new Map;for(let[s,o]of this.namedContent)this.content.indexOf((0, wt.asOrThrows)(o,hn.InkObject))>=0||a.set(s,o);if(a.size>0){r(),e.AppendLine("-- named: --");for(let[,s]of a)Qu.Debug.AssertType(s,i,"Can only print out named Containers"),s.BuildStringOfHierarchy(e,t,n),e.AppendLine();}t--,r(),e.Append("]");}};Wn.Container=Bn;(function(i){(function(t){t[t.Start=0]="Start",t[t.Visits=1]="Visits",t[t.Turns=2]="Turns",t[t.CountStartOnly=4]="CountStartOnly";})(i.CountFlags||(i.CountFlags={}));})(Bn||(Wn.Container=Bn={}));});var ge=A(qn=>{Object.defineProperty(qn,"__esModule",{value:true});qn.ControlCommand=void 0;var Pp=Ie(),jn=class i extends Pp.InkObject{get commandType(){return this._commandType}constructor(e=i.CommandType.NotSet){super(),this._commandType=e;}Copy(){return new i(this.commandType)}static EvalStart(){return new i(i.CommandType.EvalStart)}static EvalOutput(){return new i(i.CommandType.EvalOutput)}static EvalEnd(){return new i(i.CommandType.EvalEnd)}static Duplicate(){return new i(i.CommandType.Duplicate)}static PopEvaluatedValue(){return new i(i.CommandType.PopEvaluatedValue)}static PopFunction(){return new i(i.CommandType.PopFunction)}static PopTunnel(){return new i(i.CommandType.PopTunnel)}static BeginString(){return new i(i.CommandType.BeginString)}static EndString(){return new i(i.CommandType.EndString)}static NoOp(){return new i(i.CommandType.NoOp)}static ChoiceCount(){return new i(i.CommandType.ChoiceCount)}static Turns(){return new i(i.CommandType.Turns)}static TurnsSince(){return new i(i.CommandType.TurnsSince)}static ReadCount(){return new i(i.CommandType.ReadCount)}static Random(){return new i(i.CommandType.Random)}static SeedRandom(){return new i(i.CommandType.SeedRandom)}static VisitIndex(){return new i(i.CommandType.VisitIndex)}static SequenceShuffleIndex(){return new i(i.CommandType.SequenceShuffleIndex)}static StartThread(){return new i(i.CommandType.StartThread)}static Done(){return new i(i.CommandType.Done)}static End(){return new i(i.CommandType.End)}static ListFromInt(){return new i(i.CommandType.ListFromInt)}static ListRange(){return new i(i.CommandType.ListRange)}static ListRandom(){return new i(i.CommandType.ListRandom)}static BeginTag(){return new i(i.CommandType.BeginTag)}static EndTag(){return new i(i.CommandType.EndTag)}toString(){return "ControlCommand "+this.commandType.toString()}};qn.ControlCommand=jn;(function(i){(function(t){t[t.NotSet=-1]="NotSet",t[t.EvalStart=0]="EvalStart",t[t.EvalOutput=1]="EvalOutput",t[t.EvalEnd=2]="EvalEnd",t[t.Duplicate=3]="Duplicate",t[t.PopEvaluatedValue=4]="PopEvaluatedValue",t[t.PopFunction=5]="PopFunction",t[t.PopTunnel=6]="PopTunnel",t[t.BeginString=7]="BeginString",t[t.EndString=8]="EndString",t[t.NoOp=9]="NoOp",t[t.ChoiceCount=10]="ChoiceCount",t[t.Turns=11]="Turns",t[t.TurnsSince=12]="TurnsSince",t[t.ReadCount=13]="ReadCount",t[t.Random=14]="Random",t[t.SeedRandom=15]="SeedRandom",t[t.VisitIndex=16]="VisitIndex",t[t.SequenceShuffleIndex=17]="SequenceShuffleIndex",t[t.StartThread=18]="StartThread",t[t.Done=19]="Done",t[t.End=20]="End",t[t.ListFromInt=21]="ListFromInt",t[t.ListRange=22]="ListRange",t[t.ListRandom=23]="ListRandom",t[t.BeginTag=24]="BeginTag",t[t.EndTag=25]="EndTag",t[t.TOTAL_VALUES=26]="TOTAL_VALUES";})(i.CommandType||(i.CommandType={}));})(jn||(qn.ControlCommand=jn={}));});var $e=A(Ki=>{Object.defineProperty(Ki,"__esModule",{value:true});Ki.Expression=void 0;var Zu=se(),qa=ge(),Fp=Z(),Ma=class extends Fp.ParsedObject{constructor(){super(...arguments),this._prototypeRuntimeConstantExpression=null,this.outputWhenComplete=false,this.GenerateRuntimeObject=()=>{let e=new Zu.Container;return e.AddContent(qa.ControlCommand.EvalStart()),this.GenerateIntoContainer(e),this.outputWhenComplete&&e.AddContent(qa.ControlCommand.EvalOutput()),e.AddContent(qa.ControlCommand.EvalEnd()),e},this.GenerateConstantIntoContainer=e=>{this._prototypeRuntimeConstantExpression===null&&(this._prototypeRuntimeConstantExpression=new Zu.Container,this.GenerateIntoContainer(this._prototypeRuntimeConstantExpression));for(let t of this._prototypeRuntimeConstantExpression.content){let n=t.Copy();n&&e.AddContent(n);}},this.toString=()=>"No string value in JavaScript.";}get typeName(){return "Expression"}Equals(e){return false}};Ki.Expression=Ma;});var qt=A(Xi=>{Object.defineProperty(Xi,"__esModule",{value:true});Xi.Void=void 0;var Np=Ie(),Ga=class extends Np.InkObject{toString(){return "Void"}};Xi.Void=Ga;});var at=A(Qi=>{Object.defineProperty(Qi,"__esModule",{value:true});Qi.NativeFunctionCall=void 0;var O=te(),Mn=Rn(),Ip=qt(),Yi=ke(),Vp=Ie(),Je=U(),Re=me(),W=class i extends Vp.InkObject{static CallWithName(e){return new i(e)}static CallExistsWithName(e){return this.GenerateNativeFunctionsIfNecessary(),this._nativeFunctions.get(e)}get name(){return this._name===null?(0, Re.throwNullException)("NativeFunctionCall._name"):this._name}set name(e){this._name=e,this._isPrototype||(i._nativeFunctions===null?(0, Re.throwNullException)("NativeFunctionCall._nativeFunctions"):this._prototype=i._nativeFunctions.get(this._name)||null);}get numberOfParameters(){return this._prototype?this._prototype.numberOfParameters:this._numberOfParameters}set numberOfParameters(e){this._numberOfParameters=e;}Call(e){if(this._prototype)return this._prototype.Call(e);if(this.numberOfParameters!=e.length)throw new Error("Unexpected number of parameters");let t=false;for(let a of e){if(a instanceof Ip.Void)throw new Mn.StoryException("Attempting to perform "+this.name+' on a void value. Did you forget to "return" a value from a function you called here?');a instanceof O.ListValue&&(t=true);}if(e.length==2&&t)return this.CallBinaryListOperation(e);let n=this.CoerceValuesToSingleType(e),r=n[0].valueType;return r==O.ValueType.Int?this.CallType(n):r==O.ValueType.Float?this.CallType(n):r==O.ValueType.String?this.CallType(n):r==O.ValueType.DivertTarget?this.CallType(n):r==O.ValueType.List?this.CallType(n):null}CallType(e){let t=(0, Je.asOrThrows)(e[0],O.Value),n=t.valueType,r=t,a=e.length;if(a==2||a==1){if(this._operationFuncs===null)return (0, Re.throwNullException)("NativeFunctionCall._operationFuncs");let s=this._operationFuncs.get(n);if(!s){let o=O.ValueType[n];throw new Mn.StoryException("Cannot perform operation "+this.name+" on "+o)}if(a==2){let l=(0, Je.asOrThrows)(e[1],O.Value),u=s;if(r.value===null||l.value===null)return (0, Re.throwNullException)("NativeFunctionCall.Call BinaryOp values");let h=u(r.value,l.value);return O.Value.Create(h)}else {let o=s;if(r.value===null)return (0, Re.throwNullException)("NativeFunctionCall.Call UnaryOp value");let l=o(r.value);return this.name===i.Int?O.Value.Create(l,O.ValueType.Int):this.name===i.Float?O.Value.Create(l,O.ValueType.Float):O.Value.Create(l,t.valueType)}}else throw new Error("Unexpected number of parameters to NativeFunctionCall: "+e.length)}CallBinaryListOperation(e){if((this.name=="+"||this.name=="-")&&e[0]instanceof O.ListValue&&e[1]instanceof O.IntValue)return this.CallListIncrementOperation(e);let t=(0, Je.asOrThrows)(e[0],O.Value),n=(0, Je.asOrThrows)(e[1],O.Value);if((this.name=="&&"||this.name=="||")&&(t.valueType!=O.ValueType.List||n.valueType!=O.ValueType.List)){if(this._operationFuncs===null)return (0, Re.throwNullException)("NativeFunctionCall._operationFuncs");let r=this._operationFuncs.get(O.ValueType.Int);if(r===null)return (0, Re.throwNullException)("NativeFunctionCall.CallBinaryListOperation op");let a=(0, Je.asBooleanOrThrows)(r(t.isTruthy?1:0,n.isTruthy?1:0));return new O.BoolValue(a)}if(t.valueType==O.ValueType.List&&n.valueType==O.ValueType.List)return this.CallType([t,n]);throw new Mn.StoryException("Can not call use "+this.name+" operation on "+O.ValueType[t.valueType]+" and "+O.ValueType[n.valueType])}CallListIncrementOperation(e){let t=(0, Je.asOrThrows)(e[0],O.ListValue),n=(0, Je.asOrThrows)(e[1],O.IntValue),r=new Yi.InkList;if(t.value===null)return (0, Re.throwNullException)("NativeFunctionCall.CallListIncrementOperation listVal.value");for(let[a,s]of t.value){let o=Yi.InkListItem.fromSerializedKey(a);if(this._operationFuncs===null)return (0, Re.throwNullException)("NativeFunctionCall._operationFuncs");let l=this._operationFuncs.get(O.ValueType.Int);if(n.value===null)return (0, Re.throwNullException)("NativeFunctionCall.CallListIncrementOperation intVal.value");let u=l(s,n.value),h=null;if(t.value.origins===null)return (0, Re.throwNullException)("NativeFunctionCall.CallListIncrementOperation listVal.value.origins");for(let c of t.value.origins)if(c.name==o.originName){h=c;break}if(h!=null){let c=h.TryGetItemWithValue(u,Yi.InkListItem.Null);c.exists&&r.Add(c.result,u);}}return new O.ListValue(r)}CoerceValuesToSingleType(e){let t=O.ValueType.Int,n=null;for(let a of e){let s=(0, Je.asOrThrows)(a,O.Value);s.valueType>t&&(t=s.valueType),s.valueType==O.ValueType.List&&(n=(0, Je.asOrNull)(s,O.ListValue));}let r=[];if(O.ValueType[t]==O.ValueType[O.ValueType.List])for(let a of e){let s=(0, Je.asOrThrows)(a,O.Value);if(s.valueType==O.ValueType.List)r.push(s);else if(s.valueType==O.ValueType.Int){let o=parseInt(s.valueObject);if(n=(0, Je.asOrThrows)(n,O.ListValue),n.value===null)return (0, Re.throwNullException)("NativeFunctionCall.CoerceValuesToSingleType specialCaseList.value");let l=n.value.originOfMaxItem;if(l===null)return (0, Re.throwNullException)("NativeFunctionCall.CoerceValuesToSingleType list");let u=l.TryGetItemWithValue(o,Yi.InkListItem.Null);if(u.exists){let h=new O.ListValue(u.result,o);r.push(h);}else throw new Mn.StoryException("Could not find List item with the value "+o+" in "+l.name)}else {let o=O.ValueType[s.valueType];throw new Mn.StoryException("Cannot mix Lists and "+o+" values in this operation")}}else for(let a of e){let o=(0, Je.asOrThrows)(a,O.Value).Cast(t);r.push(o);}return r}constructor(){if(super(),this._name=null,this._numberOfParameters=0,this._prototype=null,this._isPrototype=false,this._operationFuncs=null,arguments.length===0)i.GenerateNativeFunctionsIfNecessary();else if(arguments.length===1){let e=arguments[0];i.GenerateNativeFunctionsIfNecessary(),this.name=e;}else if(arguments.length===2){let e=arguments[0],t=arguments[1];this._isPrototype=true,this.name=e,this.numberOfParameters=t;}}static Identity(e){return e}static GenerateNativeFunctionsIfNecessary(){if(this._nativeFunctions==null){this._nativeFunctions=new Map,this.AddIntBinaryOp(this.Add,(n,r)=>n+r),this.AddIntBinaryOp(this.Subtract,(n,r)=>n-r),this.AddIntBinaryOp(this.Multiply,(n,r)=>n*r),this.AddIntBinaryOp(this.Divide,(n,r)=>Math.floor(n/r)),this.AddIntBinaryOp(this.Mod,(n,r)=>n%r),this.AddIntUnaryOp(this.Negate,n=>-n),this.AddIntBinaryOp(this.Equal,(n,r)=>n==r),this.AddIntBinaryOp(this.Greater,(n,r)=>n>r),this.AddIntBinaryOp(this.Less,(n,r)=>n<r),this.AddIntBinaryOp(this.GreaterThanOrEquals,(n,r)=>n>=r),this.AddIntBinaryOp(this.LessThanOrEquals,(n,r)=>n<=r),this.AddIntBinaryOp(this.NotEquals,(n,r)=>n!=r),this.AddIntUnaryOp(this.Not,n=>n==0),this.AddIntBinaryOp(this.And,(n,r)=>n!=0&&r!=0),this.AddIntBinaryOp(this.Or,(n,r)=>n!=0||r!=0),this.AddIntBinaryOp(this.Max,(n,r)=>Math.max(n,r)),this.AddIntBinaryOp(this.Min,(n,r)=>Math.min(n,r)),this.AddIntBinaryOp(this.Pow,(n,r)=>Math.pow(n,r)),this.AddIntUnaryOp(this.Floor,i.Identity),this.AddIntUnaryOp(this.Ceiling,i.Identity),this.AddIntUnaryOp(this.Int,i.Identity),this.AddIntUnaryOp(this.Float,n=>n),this.AddFloatBinaryOp(this.Add,(n,r)=>n+r),this.AddFloatBinaryOp(this.Subtract,(n,r)=>n-r),this.AddFloatBinaryOp(this.Multiply,(n,r)=>n*r),this.AddFloatBinaryOp(this.Divide,(n,r)=>n/r),this.AddFloatBinaryOp(this.Mod,(n,r)=>n%r),this.AddFloatUnaryOp(this.Negate,n=>-n),this.AddFloatBinaryOp(this.Equal,(n,r)=>n==r),this.AddFloatBinaryOp(this.Greater,(n,r)=>n>r),this.AddFloatBinaryOp(this.Less,(n,r)=>n<r),this.AddFloatBinaryOp(this.GreaterThanOrEquals,(n,r)=>n>=r),this.AddFloatBinaryOp(this.LessThanOrEquals,(n,r)=>n<=r),this.AddFloatBinaryOp(this.NotEquals,(n,r)=>n!=r),this.AddFloatUnaryOp(this.Not,n=>n==0),this.AddFloatBinaryOp(this.And,(n,r)=>n!=0&&r!=0),this.AddFloatBinaryOp(this.Or,(n,r)=>n!=0||r!=0),this.AddFloatBinaryOp(this.Max,(n,r)=>Math.max(n,r)),this.AddFloatBinaryOp(this.Min,(n,r)=>Math.min(n,r)),this.AddFloatBinaryOp(this.Pow,(n,r)=>Math.pow(n,r)),this.AddFloatUnaryOp(this.Floor,n=>Math.floor(n)),this.AddFloatUnaryOp(this.Ceiling,n=>Math.ceil(n)),this.AddFloatUnaryOp(this.Int,n=>Math.floor(n)),this.AddFloatUnaryOp(this.Float,i.Identity),this.AddStringBinaryOp(this.Add,(n,r)=>n+r),this.AddStringBinaryOp(this.Equal,(n,r)=>n===r),this.AddStringBinaryOp(this.NotEquals,(n,r)=>n!==r),this.AddStringBinaryOp(this.Has,(n,r)=>n.includes(r)),this.AddStringBinaryOp(this.Hasnt,(n,r)=>!n.includes(r)),this.AddListBinaryOp(this.Add,(n,r)=>n.Union(r)),this.AddListBinaryOp(this.Subtract,(n,r)=>n.Without(r)),this.AddListBinaryOp(this.Has,(n,r)=>n.Contains(r)),this.AddListBinaryOp(this.Hasnt,(n,r)=>!n.Contains(r)),this.AddListBinaryOp(this.Intersect,(n,r)=>n.Intersect(r)),this.AddListBinaryOp(this.Equal,(n,r)=>n.Equals(r)),this.AddListBinaryOp(this.Greater,(n,r)=>n.GreaterThan(r)),this.AddListBinaryOp(this.Less,(n,r)=>n.LessThan(r)),this.AddListBinaryOp(this.GreaterThanOrEquals,(n,r)=>n.GreaterThanOrEquals(r)),this.AddListBinaryOp(this.LessThanOrEquals,(n,r)=>n.LessThanOrEquals(r)),this.AddListBinaryOp(this.NotEquals,(n,r)=>!n.Equals(r)),this.AddListBinaryOp(this.And,(n,r)=>n.Count>0&&r.Count>0),this.AddListBinaryOp(this.Or,(n,r)=>n.Count>0||r.Count>0),this.AddListUnaryOp(this.Not,n=>n.Count==0?1:0),this.AddListUnaryOp(this.Invert,n=>n.inverse),this.AddListUnaryOp(this.All,n=>n.all),this.AddListUnaryOp(this.ListMin,n=>n.MinAsList()),this.AddListUnaryOp(this.ListMax,n=>n.MaxAsList()),this.AddListUnaryOp(this.Count,n=>n.Count),this.AddListUnaryOp(this.ValueOfList,n=>n.maxItem.Value);let e=(n,r)=>n.Equals(r),t=(n,r)=>!n.Equals(r);this.AddOpToNativeFunc(this.Equal,2,O.ValueType.DivertTarget,e),this.AddOpToNativeFunc(this.NotEquals,2,O.ValueType.DivertTarget,t);}}AddOpFuncForType(e,t){this._operationFuncs==null&&(this._operationFuncs=new Map),this._operationFuncs.set(e,t);}static AddOpToNativeFunc(e,t,n,r){if(this._nativeFunctions===null)return (0, Re.throwNullException)("NativeFunctionCall._nativeFunctions");let a=this._nativeFunctions.get(e);a||(a=new i(e,t),this._nativeFunctions.set(e,a)),a.AddOpFuncForType(n,r);}static AddIntBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.Int,t);}static AddIntUnaryOp(e,t){this.AddOpToNativeFunc(e,1,O.ValueType.Int,t);}static AddFloatBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.Float,t);}static AddFloatUnaryOp(e,t){this.AddOpToNativeFunc(e,1,O.ValueType.Float,t);}static AddStringBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.String,t);}static AddListBinaryOp(e,t){this.AddOpToNativeFunc(e,2,O.ValueType.List,t);}static AddListUnaryOp(e,t){this.AddOpToNativeFunc(e,1,O.ValueType.List,t);}toString(){return 'Native "'+this.name+'"'}};Qi.NativeFunctionCall=W;W.Add="+";W.Subtract="-";W.Divide="/";W.Multiply="*";W.Mod="%";W.Negate="_";W.Equal="==";W.Greater=">";W.Less="<";W.GreaterThanOrEquals=">=";W.LessThanOrEquals="<=";W.NotEquals="!=";W.Not="!";W.And="&&";W.Or="||";W.Min="MIN";W.Max="MAX";W.Pow="POW";W.Floor="FLOOR";W.Ceiling="CEILING";W.Int="INT";W.Float="FLOAT";W.Has="?";W.Hasnt="!?";W.Intersect="^";W.ListMin="LIST_MIN";W.ListMax="LIST_MAX";W.All="LIST_ALL";W.Count="LIST_COUNT";W.ValueOfList="LIST_VALUE";W.Invert="LIST_INVERT";W._nativeFunctions=null;});var er=A(Zi=>{Object.defineProperty(Zi,"__esModule",{value:true});Zi.NumberExpression=void 0;var kp=$e(),$a=te(),Rp=U(),Ja=class i extends kp.Expression{constructor(e,t){if(super(),this.isInt=()=>this.subtype=="int",this.isFloat=()=>this.subtype=="float",this.isBool=()=>this.subtype=="bool",this.GenerateIntoContainer=n=>{this.isInt()?n.AddContent(new $a.IntValue(this.value)):this.isFloat()?n.AddContent(new $a.FloatValue(this.value)):this.isBool()&&n.AddContent(new $a.BoolValue(this.value));},this.toString=()=>String(this.value),typeof e=="number"&&!Number.isNaN(e)||typeof e=="boolean")this.value=e,this.subtype=t;else throw new Error("Unexpected object type in NumberExpression.")}get typeName(){return "Number"}Equals(e){let t=(0, Rp.asOrNull)(e,i);return t?t.subtype==this.subtype&&t.value==this.value:false}};Zi.NumberExpression=Ja;});var Ha=A(tr=>{Object.defineProperty(tr,"__esModule",{value:true});tr.UnaryExpression=void 0;var Lp=$e(),Bp=at(),cn=er(),Wp=U(),Gn=class extends Lp.Expression{get nativeNameForOp(){return this.op==="-"?"_":this.op==="not"?"!":this.op}constructor(e,t){super(),this.op=t,this.GenerateIntoContainer=n=>{this.innerExpression.GenerateIntoContainer(n),n.AddContent(Bp.NativeFunctionCall.CallWithName(this.nativeNameForOp));},this.toString=()=>this.nativeNameForOp+this.innerExpression,this.innerExpression=this.AddContent(e);}get typeName(){return "UnaryExpression"}};tr.UnaryExpression=Gn;Gn.WithInner=(i,e)=>{let t=(0, Wp.asOrNull)(i,cn.NumberExpression);if(t){if(e==="-"){if(t.isInt())return new cn.NumberExpression(-t.value,"int");if(t.isFloat())return new cn.NumberExpression(-t.value,"float")}else if(e=="!"||e=="not"){if(t.isInt())return new cn.NumberExpression(t.value==0,"bool");if(t.isFloat())return new cn.NumberExpression(t.value==0,"bool");if(t.isBool())return new cn.NumberExpression(!t.value,"bool")}throw new Error("Unexpected operation or number type")}return new Gn(i,e)};});var za=A(nr=>{Object.defineProperty(nr,"__esModule",{value:true});nr.BinaryExpression=void 0;var jp=$e(),qp=at(),Mp=Ha(),Gp=U(),Ua=class extends jp.Expression{constructor(e,t,n){super(),this.opName=n,this.GenerateIntoContainer=r=>{this.leftExpression.GenerateIntoContainer(r),this.rightExpression.GenerateIntoContainer(r),this.opName=this.NativeNameForOp(this.opName),r.AddContent(qp.NativeFunctionCall.CallWithName(this.opName));},this.NativeNameForOp=r=>r==="and"?"&&":r==="or"?"||":r==="mod"?"%":r==="has"?"?":r==="hasnt"?"!?":r,this.toString=()=>`(${this.leftExpression} ${this.opName} ${this.rightExpression})`,this.leftExpression=this.AddContent(e),this.rightExpression=this.AddContent(t),this.opName=n;}get typeName(){return "BinaryExpression"}ResolveReferences(e){if(super.ResolveReferences(e),this.NativeNameForOp(this.opName)==="?"){let t=(0, Gp.asOrNull)(this.leftExpression,Mp.UnaryExpression);t!==null&&(t.op==="not"||t.op==="!")&&this.Error(`Using 'not' or '!' here negates '${t.innerExpression}' rather than the result of the '?' or 'has' operator. You need to add parentheses around the (A ? B) expression.`);}}};nr.BinaryExpression=Ua;});var Jn=A(ir=>{Object.defineProperty(ir,"__esModule",{value:true});ir.CharacterSet=void 0;var $n=class{constructor(e){this.set=new Set,this.Add=t=>this.set.add(t),this.AddRange=(t,n)=>{for(let r=t.charCodeAt(0);r<=n.charCodeAt(0);++r)this.Add(String.fromCharCode(r));return this},this.AddCharacters=t=>{if(typeof t=="string"||Array.isArray(t))for(let n of t)this.Add(n);else for(let n of t.set)this.Add(n);return this},e&&this.AddCharacters(e);}};ir.CharacterSet=$n;$n.FromRange=(i,e)=>new $n().AddRange(i,e);});var th=A(rr=>{Object.defineProperty(rr,"__esModule",{value:true});rr.CharacterRange=void 0;var eh=Jn(),Hn=class{constructor(e,t,n=[]){if(this._start=e,this._end=t,this._correspondingCharSet=new eh.CharacterSet,this._excludes=new Set,this.ToCharacterSet=()=>{if(this._correspondingCharSet.set.size===0)for(let r=this.start.charCodeAt(0),a;r<=this.end.charCodeAt(0);r+=1)a=String.fromCharCode(r),this._excludes.has(a)||this._correspondingCharSet.AddCharacters(a);return this._correspondingCharSet},n instanceof eh.CharacterSet)this._excludes=n.set;else for(let r of n)this._excludes.add(r);}get start(){return this._start}get end(){return this._end}};rr.CharacterRange=Hn;Hn.Define=(i,e,t=[])=>new Hn(i,e,t);});var ar=A(sr=>{Object.defineProperty(sr,"__esModule",{value:true});sr.ChoicePoint=void 0;var $p=Ie(),Jp=Ne(),Ka=me(),Xa=class extends $p.InkObject{constructor(e=true){super(),this._pathOnChoice=null,this.hasCondition=false,this.hasStartContent=false,this.hasChoiceOnlyContent=false,this.isInvisibleDefault=false,this.onceOnly=true,this.onceOnly=e;}get pathOnChoice(){if(this._pathOnChoice!=null&&this._pathOnChoice.isRelative){let e=this.choiceTarget;e&&(this._pathOnChoice=e.path);}return this._pathOnChoice}set pathOnChoice(e){this._pathOnChoice=e;}get choiceTarget(){return this._pathOnChoice===null?(0, Ka.throwNullException)("ChoicePoint._pathOnChoice"):this.ResolvePath(this._pathOnChoice).container}get pathStringOnChoice(){return this.pathOnChoice===null?(0, Ka.throwNullException)("ChoicePoint.pathOnChoice"):this.CompactPathString(this.pathOnChoice)}set pathStringOnChoice(e){this.pathOnChoice=new Jp.Path(e);}get flags(){let e=0;return this.hasCondition&&(e|=1),this.hasStartContent&&(e|=2),this.hasChoiceOnlyContent&&(e|=4),this.isInvisibleDefault&&(e|=8),this.onceOnly&&(e|=16),e}set flags(e){this.hasCondition=(e&1)>0,this.hasStartContent=(e&2)>0,this.hasChoiceOnlyContent=(e&4)>0,this.isInvisibleDefault=(e&8)>0,this.onceOnly=(e&16)>0;}toString(){if(this.pathOnChoice===null)return (0, Ka.throwNullException)("ChoicePoint.pathOnChoice");let t=this.pathOnChoice.toString();return "Choice: -> "+t}};sr.ChoicePoint=Xa;});var Mt=A(or=>{Object.defineProperty(or,"__esModule",{value:true});or.PushPopType=void 0;var nh;(function(i){i[i.Tunnel=0]="Tunnel",i[i.Function=1]="Function",i[i.FunctionEvaluationFromGame=2]="FunctionEvaluationFromGame";})(nh||(or.PushPopType=nh={}));});var Un=A(lr=>{Object.defineProperty(lr,"__esModule",{value:true});lr.Pointer=void 0;var Hp=Ne(),Ya=class i{constructor(){this.container=null,this.index=-1,arguments.length===2&&(this.container=arguments[0],this.index=arguments[1]);}Resolve(){return this.index<0?this.container:this.container==null?null:this.container.content.length==0?this.container:this.index>=this.container.content.length?null:this.container.content[this.index]}get isNull(){return this.container==null}get path(){return this.isNull?null:this.index>=0?this.container.path.PathByAppendingComponent(new Hp.Path.Component(this.index)):this.container.path}toString(){return this.container?"Ink Pointer -> "+this.container.path.toString()+" -- index "+this.index:"Ink Pointer (null)"}copy(){return new i(this.container,this.index)}static StartOf(e){return new i(e,0)}static get Null(){return new i(null,-1)}};lr.Pointer=Ya;});var ot=A(hr=>{Object.defineProperty(hr,"__esModule",{value:true});hr.Divert=void 0;var Up=Ne(),zp=Mt(),Kp=Wt(),Xp=Ie(),Qa=Un(),ih=se(),ur=me(),Za=class i extends Xp.InkObject{get targetPath(){if(this._targetPath!=null&&this._targetPath.isRelative){let e=this.targetPointer.Resolve();e&&(this._targetPath=e.path);}return this._targetPath}set targetPath(e){this._targetPath=e,this._targetPointer=Qa.Pointer.Null;}get targetPointer(){if(this._targetPointer.isNull){let e=this.ResolvePath(this._targetPath).obj;if(this._targetPath===null)return (0, ur.throwNullException)("this._targetPath");if(this._targetPath.lastComponent===null)return (0, ur.throwNullException)("this._targetPath.lastComponent");if(this._targetPath.lastComponent.isIndex){if(e===null)return (0, ur.throwNullException)("targetObj");this._targetPointer.container=e.parent instanceof ih.Container?e.parent:null,this._targetPointer.index=this._targetPath.lastComponent.index;}else this._targetPointer=Qa.Pointer.StartOf(e instanceof ih.Container?e:null);}return this._targetPointer.copy()}get targetPathString(){return this.targetPath==null?null:this.CompactPathString(this.targetPath)}set targetPathString(e){e==null?this.targetPath=null:this.targetPath=new Up.Path(e);}get hasVariableTarget(){return this.variableDivertName!=null}constructor(e){super(),this._targetPath=null,this._targetPointer=Qa.Pointer.Null,this.variableDivertName=null,this.pushesToStack=false,this.stackPushType=0,this.isExternal=false,this.externalArgs=0,this.isConditional=false,this.pushesToStack=false,typeof e<"u"&&(this.pushesToStack=true,this.stackPushType=e);}Equals(e){let t=e;return t instanceof i&&this.hasVariableTarget==t.hasVariableTarget?this.hasVariableTarget?this.variableDivertName==t.variableDivertName:this.targetPath===null?(0, ur.throwNullException)("this.targetPath"):this.targetPath.Equals(t.targetPath):false}toString(){if(this.hasVariableTarget)return "Divert(variable: "+this.variableDivertName+")";if(this.targetPath==null)return "Divert(null)";{let e=new Kp.StringBuilder,t=this.targetPath.toString();return e.Append("Divert"),this.isConditional&&e.Append("?"),this.pushesToStack&&(this.stackPushType==zp.PushPopType.Function?e.Append(" function"):e.Append(" tunnel")),e.Append(" -> "),e.Append(this.targetPathString),e.Append(" ("),e.Append(t),e.Append(")"),e.toString()}}};hr.Divert=Za;});var yt=A(cr=>{Object.defineProperty(cr,"__esModule",{value:true});cr.SymbolType=void 0;var rh;(function(i){i[i.Knot=0]="Knot",i[i.List=1]="List",i[i.ListItem=2]="ListItem",i[i.Var=3]="Var",i[i.SubFlowAndWeave=4]="SubFlowAndWeave",i[i.Arg=5]="Arg",i[i.Temp=6]="Temp";})(rh||(cr.SymbolType=rh={}));});var xt=A(dr=>{Object.defineProperty(dr,"__esModule",{value:true});dr.VariableAssignment=void 0;var Yp=Ie(),eo=class extends Yp.InkObject{constructor(e,t){super(),this.variableName=e||null,this.isNewDeclaration=!!t,this.isGlobal=false;}toString(){return "VarAssign to "+this.variableName}};dr.VariableAssignment=eo;});var dn=A(fr=>{Object.defineProperty(fr,"__esModule",{value:true});fr.Choice=void 0;var Qp=ar(),pr=se(),_t=ge(),to=ot(),sh=te(),Zp=Z(),ef=yt(),ah=xt(),no=class extends Zp.ParsedObject{get runtimeChoice(){if(!this._runtimeChoice)throw new Error;return this._runtimeChoice}get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}get condition(){return this._condition}set condition(e){this._condition=e,e&&this.AddContent(e);}get runtimeContainer(){return this._innerContentContainer}get innerContentContainer(){return this._innerContentContainer}get containerForCounting(){return this._innerContentContainer}get runtimePath(){if(!this.innerContentContainer||!this.innerContentContainer.path)throw new Error;return this.innerContentContainer.path}constructor(e,t,n){super(),this._condition=null,this._innerContentContainer=null,this._outerContainer=null,this._runtimeChoice=null,this._returnToR1=null,this._returnToR2=null,this._r1Label=null,this._r2Label=null,this._divertToStartContentOuter=null,this._divertToStartContentInner=null,this._startContentRuntimeContainer=null,this.isInvisibleDefault=false,this.hasWeaveStyleInlineBrackets=false,this.GenerateRuntimeObject=()=>{if(this._outerContainer=new pr.Container,this._runtimeChoice=new Qp.ChoicePoint(this.onceOnly),this._runtimeChoice.isInvisibleDefault=this.isInvisibleDefault,(this.startContent||this.choiceOnlyContent||this.condition)&&this._outerContainer.AddContent(_t.ControlCommand.EvalStart()),this.startContent){this._returnToR1=new sh.DivertTargetValue,this._outerContainer.AddContent(this._returnToR1);let r=new ah.VariableAssignment("$r",true);this._outerContainer.AddContent(r),this._outerContainer.AddContent(_t.ControlCommand.BeginString()),this._divertToStartContentOuter=new to.Divert,this._outerContainer.AddContent(this._divertToStartContentOuter),this._startContentRuntimeContainer=this.startContent.GenerateRuntimeObject(),this._startContentRuntimeContainer.name="s";let a=new to.Divert;a.variableDivertName="$r",this._startContentRuntimeContainer.AddContent(a),this._outerContainer.AddToNamedContentOnly(this._startContentRuntimeContainer),this._r1Label=new pr.Container,this._r1Label.name="$r1",this._outerContainer.AddContent(this._r1Label),this._outerContainer.AddContent(_t.ControlCommand.EndString()),this._runtimeChoice.hasStartContent=true;}if(this.choiceOnlyContent){this._outerContainer.AddContent(_t.ControlCommand.BeginString());let r=this.choiceOnlyContent.GenerateRuntimeObject();this._outerContainer.AddContentsOfContainer(r),this._outerContainer.AddContent(_t.ControlCommand.EndString()),this._runtimeChoice.hasChoiceOnlyContent=true;}if(this.condition&&(this.condition.GenerateIntoContainer(this._outerContainer),this._runtimeChoice.hasCondition=true),(this.startContent||this.choiceOnlyContent||this.condition)&&this._outerContainer.AddContent(_t.ControlCommand.EvalEnd()),this._outerContainer.AddContent(this._runtimeChoice),this._innerContentContainer=new pr.Container,this.startContent){this._returnToR2=new sh.DivertTargetValue,this._innerContentContainer.AddContent(_t.ControlCommand.EvalStart()),this._innerContentContainer.AddContent(this._returnToR2),this._innerContentContainer.AddContent(_t.ControlCommand.EvalEnd());let r=new ah.VariableAssignment("$r",true);this._innerContentContainer.AddContent(r),this._divertToStartContentInner=new to.Divert,this._innerContentContainer.AddContent(this._divertToStartContentInner),this._r2Label=new pr.Container,this._r2Label.name="$r2",this._innerContentContainer.AddContent(this._r2Label);}if(this.innerContent){let r=this.innerContent.GenerateRuntimeObject();this._innerContentContainer.AddContentsOfContainer(r);}return this.story.countAllVisits&&(this._innerContentContainer.visitsShouldBeCounted=true),this._innerContentContainer.countingAtStartOnly=true,this._outerContainer},this.toString=()=>this.choiceOnlyContent!==null?`* ${this.startContent}[${this.choiceOnlyContent}]...`:`* ${this.startContent}...`,this.startContent=e,this.choiceOnlyContent=t,this.innerContent=n,this.indentationDepth=1,e&&this.AddContent(this.startContent),t&&this.AddContent(this.choiceOnlyContent),n&&this.AddContent(this.innerContent),this.onceOnly=true;}get typeName(){return "Choice"}ResolveReferences(e){var t;if(this._innerContentContainer&&(this.runtimeChoice.pathOnChoice=this._innerContentContainer.path,this.onceOnly&&(this._innerContentContainer.visitsShouldBeCounted=true)),this._returnToR1){if(!this._r1Label)throw new Error;this._returnToR1.targetPath=this._r1Label.path;}if(this._returnToR2){if(!this._r2Label)throw new Error;this._returnToR2.targetPath=this._r2Label.path;}if(this._divertToStartContentOuter){if(!this._startContentRuntimeContainer)throw new Error;this._divertToStartContentOuter.targetPath=this._startContentRuntimeContainer.path;}if(this._divertToStartContentInner){if(!this._startContentRuntimeContainer)throw new Error;this._divertToStartContentInner.targetPath=this._startContentRuntimeContainer.path;}super.ResolveReferences(e),this.identifier&&(((t=this.identifier)===null||t===void 0?void 0:t.name)||"").length>0&&e.CheckForNamingCollisions(this,this.identifier,ef.SymbolType.SubFlowAndWeave);}};fr.Choice=no;});var oh=A(gr=>{Object.defineProperty(gr,"__esModule",{value:true});gr.StringParserElement=void 0;var mr=class i{constructor(){this.characterIndex=0,this.characterInLineIndex=0,this.lineIndex=0,this.reportedErrorInScope=false,this.uniqueId=0,this.customFlags=0,this.CopyFrom=e=>{i._uniqueIdCounter++,this.uniqueId=i._uniqueIdCounter,this.characterIndex=e.characterIndex,this.characterInLineIndex=e.characterInLineIndex,this.lineIndex=e.lineIndex,this.customFlags=e.customFlags,this.reportedErrorInScope=false;},this.SquashFrom=e=>{this.characterIndex=e.characterIndex,this.characterInLineIndex=e.characterInLineIndex,this.lineIndex=e.lineIndex,this.reportedErrorInScope=e.reportedErrorInScope,this.customFlags=e.customFlags;};}};gr.StringParserElement=mr;mr._uniqueIdCounter=1e3;});var uh=A(Cr=>{Object.defineProperty(Cr,"__esModule",{value:true});Cr.StringParserState=void 0;var lh=oh(),io=class{get currentElement(){return this._stack[this._numElements-1]}get lineIndex(){return this.currentElement.lineIndex}set lineIndex(e){this.currentElement.lineIndex=e;}get characterIndex(){return this.currentElement.characterIndex}set characterIndex(e){this.currentElement.characterIndex=e;}get characterInLineIndex(){return this.currentElement.characterInLineIndex}set characterInLineIndex(e){this.currentElement.characterInLineIndex=e;}get customFlags(){return this.currentElement.customFlags}set customFlags(e){this.currentElement.customFlags=e;}get errorReportedAlreadyInScope(){return this.currentElement.reportedErrorInScope}get stackHeight(){return this._numElements}constructor(){this._stack=[],this._numElements=0,this.StringParserState=()=>{this._stack=new Array(200);for(let n=0;n<200;++n)this._stack[n]=new lh.StringParserElement;this._numElements=1;},this.Push=()=>{if(this._numElements>=this._stack.length&&this._numElements>0)throw new Error("Stack overflow in parser state.");let t=this._stack[this._numElements-1],n=this._stack[this._numElements];return this._numElements++,n.CopyFrom(t),n.uniqueId},this.Pop=t=>{if(this._numElements==1)throw new Error("Attempting to remove final stack element is illegal! Mismatched Begin/Succceed/Fail?");if(this.currentElement.uniqueId!=t)throw new Error("Mismatched rule IDs while Poping - do you have mismatched Begin/Succeed/Fail?");this._numElements-=1;},this.Peek=t=>{if(this.currentElement.uniqueId!=t)throw new Error("Mismatched rule IDs while Peeking - do you have mismatched Begin/Succeed/Fail?");return this._stack[this._numElements-1]},this.PeekPenultimate=()=>this._numElements>=2?this._stack[this._numElements-2]:null,this.Squash=()=>{if(this._numElements<2)throw new Error("Attempting to remove final stack element is illegal! Mismatched Begin/Succceed/Fail?");let t=this._stack[this._numElements-2],n=this._stack[this._numElements-1];t.SquashFrom(n),this._numElements-=1;},this.NoteErrorReported=()=>{for(let t of this._stack)t.reportedErrorInScope=true;};let e=200;for(let t=0;t<e;t++)this._stack[t]=new lh.StringParserElement;this._numElements=1;}};Cr.StringParserState=io;});var so=A(Gt=>{Object.defineProperty(Gt,"__esModule",{value:true});Gt.StringParser=Gt.ParseSuccess=void 0;var ro=Jn(),tf=uh();Gt.ParseSuccess=Symbol("ParseSuccessStruct");var zn=class i{constructor(e){this.ParseRule=null,this.errorHandler=null,this.hadError=false,this.BeginRule=()=>this.state.Push(),this.FailRule=n=>(this.state.Pop(n),null),this.CancelRule=n=>{this.state.Pop(n);},this.SucceedRule=(n,r=null)=>{let a=this.state.Peek(n),s=this.state.PeekPenultimate();this.RuleDidSucceed&&this.RuleDidSucceed(r,s,a),this.state.Squash();let o=r;return o===null&&(o=i.ParseSuccess),o},this.Expect=(n,r=null,a=null)=>{let s=this.ParseObject(n);if(s===null){r===null&&(r=n.name);let o,l=this.LineRemainder();l===null||l.length===0?o="end of line":o=`'${l}'`,this.Error(`Expected ${r} but saw ${o}`),a!==null&&(s=a());}return s},this.Error=(n,r=false)=>{this.ErrorOnLine(n,this.lineIndex+1,r);},this.ErrorWithParsedObject=(n,r,a=false)=>{this.ErrorOnLine(n,r.debugMetadata?r.debugMetadata.startLineNumber:-1,a);},this.ErrorOnLine=(n,r,a)=>{if(!this.state.errorReportedAlreadyInScope){let s=a?"Warning":"Error";if(this.errorHandler)this.errorHandler(n,this.index,r-1,a);else throw new Error(`${s} on line ${r}: ${n}`);this.state.NoteErrorReported();}a||(this.hadError=true);},this.Warning=n=>this.Error(n,true),this.LineRemainder=()=>this.Peek(()=>this.ParseUntilCharactersFromString(`
|
|
5
5
|
\r`)),this.SetFlag=(n,r)=>{r?this.state.customFlags|=n:this.state.customFlags&=~n;},this.GetFlag=n=>!!(this.state.customFlags&n),this.ParseObject=n=>{let r=this.BeginRule(),a=this.state.stackHeight,s=n();if(a!==this.state.stackHeight)throw new Error("Mismatched Begin/Fail/Succeed rules");return s===null?this.FailRule(r):(this.SucceedRule(r,s),s)},this.Parse=n=>{let r=this.BeginRule(),a=n();return a===null?(this.FailRule(r),null):(this.SucceedRule(r,a),a)},this.OneOf=n=>{for(let r of n){let a=this.ParseObject(r);if(a!==null)return a}return null},this.OneOrMore=n=>{let r=[],a=null;do a=this.ParseObject(n),a!==null&&r.push(a);while(a!==null);return r.length>0?r:null},this.Optional=n=>()=>{let r=this.ParseObject(n);return r===null?i.ParseSuccess:r},this.Exclude=n=>()=>this.ParseObject(n)&&i.ParseSuccess,this.OptionalExclude=n=>()=>(this.ParseObject(n),i.ParseSuccess),this.String=n=>()=>this.ParseString(n),this.TryAddResultToList=(n,r,a=true)=>{if(n!==i.ParseSuccess){if(a&&Array.isArray(n)){let s=n;if(s!==null){for(let o of s)r.push(o);return}}r.push(n);}},this.Interleave=(n,r,a=null,s=true)=>{let o=this.BeginRule(),l=[],u=this.ParseObject(n);if(u===null)return this.FailRule(o);this.TryAddResultToList(u,l,s);let h=null,c=null;do{if(a!==null&&this.Peek(a)!==null||(h=this.ParseObject(r),h===null))break;if(this.TryAddResultToList(h,l,s),c=null,h!==null){if(c=this.ParseObject(n),c===null)break;this.TryAddResultToList(c,l,s);}}while((h!==null||c!==null)&&!(h===i.ParseSuccess&&c==i.ParseSuccess)&&this.remainingLength>0);return l.length===0?this.FailRule(o):this.SucceedRule(o,l)},this.ParseString=n=>{if(n.length>this.remainingLength)return null;let r=this.BeginRule(),a=this.index,s=this.characterInLineIndex,o=this.lineIndex,l=true;for(let u=0;u<n.length;u+=1){let h=n[u];if(this._chars[a]!==h){l=false;break}h===`
|
|
6
6
|
`&&(o++,s=-1),a++,s++;}return this.index=a,this.characterInLineIndex=s,this.lineIndex=o,l?this.SucceedRule(r,n):this.FailRule(r)},this.ParseSingleCharacter=()=>{if(this.remainingLength>0){let n=this._chars[this.index];return n===`
|
|
7
7
|
`&&(this.lineIndex+=1,this.characterInLineIndex=-1),this.index+=1,this.characterInLineIndex+=1,n}return "0"},this.ParseUntilCharactersFromString=(n,r=-1)=>this.ParseCharactersFromString(n,false,r),this.ParseUntilCharactersFromCharSet=(n,r=-1)=>this.ParseCharactersFromCharSet(n,false,r),this.ParseCharactersFromString=(n,r=-1,a=-1)=>{let s=new ro.CharacterSet(n);return typeof r=="number"?this.ParseCharactersFromCharSet(s,true,r):this.ParseCharactersFromCharSet(s,r,a)},this.ParseCharactersFromCharSet=(n,r=true,a=-1)=>{a===-1&&(a=Number.MAX_SAFE_INTEGER);let s=this.index,o=this.index,l=this.characterInLineIndex,u=this.lineIndex,h=0;for(;o<this._chars.length&&n.set.has(this._chars[o])===r&&h<a;)this._chars[o]===`
|
|
8
8
|
`&&(u+=1,l=-1),o+=1,l+=1,h+=1;return this.index=o,this.characterInLineIndex=l,this.lineIndex=u,this.index>s?this._chars.slice(s,this.index).join(""):null},this.Peek=n=>{let r=this.BeginRule(),a=n();return this.CancelRule(r),a},this.ParseInt=()=>{let n=this.index,r=this.characterInLineIndex,a=this.ParseString("-")!==null;this.ParseCharactersFromString(" ");let s=this.ParseCharactersFromCharSet(i.numbersCharacterSet);if(s===null)return this.index=n,this.characterInLineIndex=r,null;let o;return Number.isNaN(Number(s))?(this.Error("Failed to read integer value: "+s+". Perhaps it's out of the range of acceptable numbers ink supports? ("+Number.MIN_SAFE_INTEGER+" to "+Number.MAX_SAFE_INTEGER+")"),null):(o=Number(s),a?-o:o)},this.ParseFloat=()=>{let n=this.index,r=this.characterInLineIndex,a=this.ParseInt();if(a!==null&&this.ParseString(".")!==null){let s=this.ParseCharactersFromCharSet(i.numbersCharacterSet);return +`${a}.${s}`}return this.index=n,this.characterInLineIndex=r,null},this.ParseNewline=()=>{let n=this.BeginRule();return this.ParseString("\r"),this.ParseString(`
|
|
9
9
|
`)===null?this.FailRule(n):this.SucceedRule(n,`
|
|
10
10
|
`)};let t=this.PreProcessInputString(e);this.state=new tf.StringParserState,e?this._chars=t.split(""):this._chars=[],this.inputString=t;}get currentCharacter(){return this.index>=0&&this.remainingLength>0?this._chars[this.index]:"0"}PreProcessInputString(e){return e}get endOfInput(){return this.index>=this._chars.length}get remainingString(){return this._chars.slice(this.index,this.index+this.remainingLength).join("")}get remainingLength(){return this._chars.length-this.index}get lineIndex(){return this.state.lineIndex}set lineIndex(e){this.state.lineIndex=e;}set characterInLineIndex(e){this.state.characterInLineIndex=e;}get characterInLineIndex(){return this.state.characterInLineIndex}get index(){return this.state.characterIndex}set index(e){this.state.characterIndex=e;}ParseUntil(e,t=null,n=null){let r=this.BeginRule(),a=new ro.CharacterSet;t!==null&&(a.set=new Set([...a.set.values(),...t.set.values()])),n!==null&&(a.set=new Set([...a.set.values(),...n.set.values()]));let s="",o=null;do{let l=this.ParseUntilCharactersFromCharSet(a);if(l&&(s+=l),o=this.Peek(e),o!==null)break;{if(this.endOfInput)break;let u=this.currentCharacter;if(t!==null&&t.set.has(u)){s+=u,u===`
|
|
11
|
-
`&&(this.lineIndex+=1,this.characterInLineIndex=-1),this.index+=1,this.characterInLineIndex+=1;continue}else break}}while(true);return s.length>0?this.SucceedRule(r,String(s)):this.FailRule(r)}};Gt.StringParser=zn;zn.ParseSuccess=Gt.ParseSuccess;zn.numbersCharacterSet=new ro.CharacterSet("0123456789");});var
|
|
11
|
+
`&&(this.lineIndex+=1,this.characterInLineIndex=-1),this.index+=1,this.characterInLineIndex+=1;continue}else break}}while(true);return s.length>0?this.SucceedRule(r,String(s)):this.FailRule(r)}};Gt.StringParser=zn;zn.ParseSuccess=Gt.ParseSuccess;zn.numbersCharacterSet=new ro.CharacterSet("0123456789");});var hh=A(yr=>{Object.defineProperty(yr,"__esModule",{value:true});yr.CommentEliminator=void 0;var ao=Jn(),nf=so(),oo=class extends nf.StringParser{constructor(){super(...arguments),this._commentOrNewlineStartCharacter=new ao.CharacterSet(`/\r
|
|
12
12
|
`),this._commentBlockEndCharacter=new ao.CharacterSet("*"),this._newlineCharacters=new ao.CharacterSet(`
|
|
13
13
|
\r`),this.Process=()=>{let e=this.Interleave(this.Optional(this.CommentsAndNewlines),this.Optional(this.MainInk));return e!==null?e.join(""):""},this.MainInk=()=>this.ParseUntil(this.CommentsAndNewlines,this._commentOrNewlineStartCharacter,null),this.CommentsAndNewlines=()=>{let e=this.Interleave(this.Optional(this.ParseNewline),this.Optional(this.ParseSingleComment));return e!==null?e.join(""):null},this.ParseSingleComment=()=>this.OneOf([this.EndOfLineComment,this.BlockComment]),this.EndOfLineComment=()=>this.ParseString("//")===null?null:(this.ParseUntilCharactersFromCharSet(this._newlineCharacters),""),this.BlockComment=()=>{if(this.ParseString("/*")===null)return null;let e=this.lineIndex,t=this.ParseUntil(this.String("*/"),this._commentBlockEndCharacter,null);return this.endOfInput||this.ParseString("*/"),t!=null?`
|
|
14
|
-
`.repeat(this.lineIndex-e):null};}PreProcessInputString(e){return e}};yr.CommentEliminator=oo;});var Er=b(vr=>{Object.defineProperty(vr,"__esModule",{value:true});vr.Conditional=void 0;var rf=se(),uh=ge(),sf=Z(),lo=class extends sf.ParsedObject{constructor(e,t){super(),this.initialCondition=e,this.branches=t,this._reJoinTarget=null,this.GenerateRuntimeObject=()=>{let n=new rf.Container;this.initialCondition&&n.AddContent(this.initialCondition.runtimeObject);for(let r of this.branches){let a=r.runtimeObject;n.AddContent(a);}return this.initialCondition!==null&&this.branches[0].ownExpression!==null&&!this.branches[this.branches.length-1].isElse&&n.AddContent(uh.ControlCommand.PopEvaluatedValue()),this._reJoinTarget=uh.ControlCommand.NoOp(),n.AddContent(this._reJoinTarget),n},this.initialCondition&&this.AddContent(this.initialCondition),this.branches!==null&&this.AddContent(this.branches);}get typeName(){return "Conditional"}ResolveReferences(e){let t=this._reJoinTarget.path;for(let n of this.branches){if(!n.returnDivert)throw new Error;n.returnDivert.targetPath=t;}super.ResolveReferences(e);}};vr.Conditional=lo;});var Tt=b(Sr=>{Object.defineProperty(Sr,"__esModule",{value:true});Sr.Text=void 0;var af=Z(),of=te(),uo=class extends af.ParsedObject{constructor(e){super(),this.text=e,this.GenerateRuntimeObject=()=>new of.StringValue(this.text),this.toString=()=>this.text;}get typeName(){return "Text"}};Sr.Text=uo;});var br=b(Dr=>{Object.defineProperty(Dr,"__esModule",{value:true});Dr.ConstantDeclaration=void 0;var lf=Z(),uf=yt(),ho=class extends lf.ParsedObject{get constantName(){var e;return (e=this.constantIdentifier)===null||e===void 0?void 0:e.name}get expression(){if(!this._expression)throw new Error;return this._expression}constructor(e,t){super(),this._expression=null,this.GenerateRuntimeObject=()=>null,this.constantIdentifier=e,t&&(this._expression=this.AddContent(t));}get typeName(){return "CONST"}ResolveReferences(e){super.ResolveReferences(e),e.CheckForNamingCollisions(this,this.constantIdentifier,uf.SymbolType.Var);}};Dr.ConstantDeclaration=ho;});var pn=b(Ar=>{Object.defineProperty(Ar,"__esModule",{value:true});Ar.FlowLevel=void 0;var hh;(function(i){i[i.Story=0]="Story",i[i.Knot=1]="Knot",i[i.Stitch=2]="Stitch",i[i.WeavePoint=3]="WeavePoint";})(hh||(Ar.FlowLevel=hh={}));});var Kn=b(wr=>{Object.defineProperty(wr,"__esModule",{value:true});wr.Gather=void 0;var hf=se(),cf=Z(),df=yt(),co=class extends cf.ParsedObject{get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}get runtimeContainer(){return this.runtimeObject}constructor(e,t){super(),this.indentationDepth=t,this.GenerateRuntimeObject=()=>{let n=new hf.Container;if(n.name=this.name,this.story.countAllVisits&&(n.visitsShouldBeCounted=true),n.countingAtStartOnly=true,this.content)for(let r of this.content)n.AddContent(r.runtimeObject);return n},this.toString=()=>{var n,r;return `- ${!((n=this.identifier)===null||n===void 0)&&n.name?"("+((r=this.identifier)===null||r===void 0?void 0:r.name)+")":"gather"}`},e&&(this.identifier=e);}get typeName(){return "Gather"}ResolveReferences(e){super.ResolveReferences(e),this.identifier&&(this.identifier.name||"").length>0&&e.CheckForNamingCollisions(this,this.identifier,df.SymbolType.SubFlowAndWeave);}};wr.Gather=co;});var $t=b(_r=>{Object.defineProperty(_r,"__esModule",{value:true});_r.Path=void 0;var xr=U(),ch=lt(),fn=pn(),pf=Jt(),po=class{get baseTargetLevel(){return this.baseLevelIsAmbiguous?fn.FlowLevel.Story:this._baseTargetLevel}get baseLevelIsAmbiguous(){return !this._baseTargetLevel}get firstComponent(){return this.components==null||!this.components.length?null:this.components[0].name}get numberOfComponents(){return this.components?this.components.length:0}get dotSeparatedComponents(){return this._dotSeparatedComponents==null&&(this._dotSeparatedComponents=(this.components?this.components:[]).map(e=>e.name).filter(xr.filterUndef).join(".")),this._dotSeparatedComponents}constructor(e,t){this._dotSeparatedComponents=null,this.toString=()=>this.components===null||this.components.length===0?this.baseTargetLevel===fn.FlowLevel.WeavePoint?"-> <next gather point>":"<invalid Path>":`-> ${this.dotSeparatedComponents}`,this.ResolveFromContext=n=>{if(this.components==null||this.components.length==0)return null;let r=this.ResolveBaseTarget(n);return r===null?null:this.components.length>1?this.ResolveTailComponents(r):r},this.ResolveBaseTarget=n=>{let r=this.firstComponent,a=n;for(;a;){let s=a===n,o=this.GetChildFromContext(a,r,null,s);if(o)return o;a=a.parent;}return null},this.ResolveTailComponents=n=>{let r=n;if(!this.components)return null;for(let a=1;a<this.components.length;++a){let s=this.components[a].name,o,l=(0, xr.asOrNull)(r,ch.FlowBase);if(l!==null?o=l.flowLevel+1:o=fn.FlowLevel.WeavePoint,r=this.GetChildFromContext(r,s,o),r===null)break}return r},this.GetChildFromContext=(n,r,a,s=false)=>{let o=a===null,l=(0, xr.asOrNull)(n,pf.Weave);if(r&&l!==null&&(o||a===fn.FlowLevel.WeavePoint))return l.WeavePointNamed(r);let u=(0, xr.asOrNull)(n,ch.FlowBase);if(r&&u!==null){let h=s||u.flowLevel===fn.FlowLevel.Knot;return u.ContentWithNameAtLevel(r,a,h)}return null},Object.values(fn.FlowLevel).includes(e)?(this._baseTargetLevel=e,this.components=t||[]):Array.isArray(e)?(this._baseTargetLevel=null,this.components=e||[]):(this._baseTargetLevel=null,this.components=[e]);}get typeName(){return "Path"}};_r.Path=po;});var go=b(Tr=>{Object.defineProperty(Tr,"__esModule",{value:true});Tr.ReturnType=void 0;var ff=Z(),mf=se(),fo=ge(),gf=qt(),mo=class extends ff.ParsedObject{constructor(e=null){super(),this.returnedExpression=null,this.GenerateRuntimeObject=()=>{let t=new mf.Container;return this.returnedExpression?t.AddContent(this.returnedExpression.runtimeObject):(t.AddContent(fo.ControlCommand.EvalStart()),t.AddContent(new gf.Void),t.AddContent(fo.ControlCommand.EvalEnd())),t.AddContent(fo.ControlCommand.PopFunction()),t},e&&(this.returnedExpression=this.AddContent(e));}get typeName(){return "ReturnType"}};Tr.ReturnType=mo;});var Xn=b(Or=>{Object.defineProperty(Or,"__esModule",{value:true});Or.ClosestFlowBase=void 0;function Cf(i){let e=i.parent;for(;e;){if(e.hasOwnProperty("iamFlowbase")&&e.iamFlowbase())return e;e=e.parent;}return null}Or.ClosestFlowBase=Cf;});var Fr=b(Pr=>{Object.defineProperty(Pr,"__esModule",{value:true});Pr.Identifier=void 0;var Co=class i{constructor(e){this.debugMetadata=null,this.toString=()=>this.name||"undefined identifer",this.name=e;}get typeName(){return "Identifier"}static Done(){return new i("DONE")}};Pr.Identifier=Co;});var lt=b(Nr=>{Object.defineProperty(Nr,"__esModule",{value:true});Nr.FlowBase=void 0;var yf=dn(),yo=gn(),vf=mn(),ut=pn(),Ef=Kn(),Sf=Z(),Df=$t(),bf=go(),Af=se(),wf=ot(),xf=xt(),vo=yt(),_f=Jt(),Tf=Xn(),Of=Fr(),dh=U(),Eo=class i extends Sf.ParsedObject{get hasParameters(){return this.args!==null&&this.args.length>0}get subFlowsByName(){return this._subFlowsByName}get typeName(){return this.isFunction?"Function":String(this.flowLevel)}get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}constructor(e,t=null,n=null,r=false,a=false){super(),this.isFunction=r,this._rootWeave=null,this._subFlowsByName=new Map,this._startingSubFlowDivert=null,this._startingSubFlowRuntime=null,this._firstChildFlow=null,this.variableDeclarations=new Map,this.identifier=null,this.args=null,this.iamFlowbase=()=>true,this.SplitWeaveAndSubFlowContent=(s,o)=>{var l,u;let h=[],c=[];this._subFlowsByName=new Map;for(let f of s){let y=(0, dh.asOrNull)(f,i);y?(this._firstChildFlow===null&&(this._firstChildFlow=y),c.push(f),!((l=y.identifier)===null||l===void 0)&&l.name&&this._subFlowsByName.set((u=y.identifier)===null||u===void 0?void 0:u.name,y)):h.push(f);}o&&h.push(new Ef.Gather(null,1),new yo.Divert(new Df.Path(Of.Identifier.Done())));let d=[];return h.length>0&&(this._rootWeave=new _f.Weave(h,0),d.push(this._rootWeave)),c.length>0&&d.push(...c),d},this.ResolveVariableWithName=(s,o)=>{var l;let u={},h=o===null?this:(0, Tf.ClosestFlowBase)(o);if(h){if(h.args!==null){for(let c of h.args)if(((l=c.identifier)===null||l===void 0?void 0:l.name)===s)return u.found=true,u.isArgument=true,u.ownerFlow=h,u}if(h!==this.story&&h.variableDeclarations.has(s))return u.found=true,u.ownerFlow=h,u.isTemporary=true,u}return this.story.variableDeclarations.has(s)?(u.found=true,u.ownerFlow=this.story,u.isGlobal=true,u):(u.found=false,u)},this.AddNewVariableDeclaration=s=>{let o=s.variableName;if(this.variableDeclarations.has(o)){let l=this.variableDeclarations.get(o),u="";l.debugMetadata&&(u=` (${l.debugMetadata})`),this.Error(`found declaration variable '${o}' that was already declared${u}`,s,false);return}this.variableDeclarations.set(s.variableName,s);},this.ResolveWeavePointNaming=()=>{this._rootWeave&&this._rootWeave.ResolveWeavePointNaming();for(let[,s]of this._subFlowsByName)s.hasOwnProperty("ResolveWeavePointNaming")&&s.ResolveWeavePointNaming();},this.GenerateRuntimeObject=()=>{var s;let o=null;this.isFunction?this.CheckForDisallowedFunctionFlowControl():(this.flowLevel===ut.FlowLevel.Knot||this.flowLevel===ut.FlowLevel.Stitch)&&(o=this.Find(bf.ReturnType)(),o!==null&&this.Error(`Return statements can only be used in knots that are declared as functions: == function ${this.identifier} ==`,o));let l=new Af.Container;l.name=(s=this.identifier)===null||s===void 0?void 0:s.name,this.story.countAllVisits&&(l.visitsShouldBeCounted=true),this.GenerateArgumentVariableAssignments(l);let u=0;for(;this.content!==null&&u<this.content.length;){let h=this.content[u];if(h instanceof i){let c=h,d=c.runtimeObject;u===0&&!c.hasParameters&&this.flowLevel===ut.FlowLevel.Knot&&(this._startingSubFlowDivert=new wf.Divert,l.AddContent(this._startingSubFlowDivert),this._startingSubFlowRuntime=d);let f=d,y=l.namedContent.get(f.name)||null;if(y){let v=`${this.GetType()} already contains flow named '${f.name}' (at ${y.debugMetadata})`;this.Error(v,c);}l.AddToNamedContentOnly(f);}else h&&l.AddContent(h.runtimeObject);u+=1;}return this.flowLevel!==ut.FlowLevel.Story&&!this.isFunction&&this._rootWeave!==null&&o===null&&this._rootWeave.ValidateTermination(this.WarningInTermination),l},this.GenerateArgumentVariableAssignments=s=>{var o;if(!(this.args===null||this.args.length===0))for(let l=this.args.length-1;l>=0;--l){let u=((o=this.args[l].identifier)===null||o===void 0?void 0:o.name)||null,h=new xf.VariableAssignment(u,true);s.AddContent(h);}},this.ContentWithNameAtLevel=(s,o=null,l=false)=>{var u;if((o===this.flowLevel||o===null)&&s===((u=this.identifier)===null||u===void 0?void 0:u.name))return this;if(o===ut.FlowLevel.WeavePoint||o===null){let c=null;if(this._rootWeave&&(c=this._rootWeave.WeavePointNamed(s),c))return c;if(o===ut.FlowLevel.WeavePoint)return l?this.DeepSearchForAnyLevelContent(s):null}if(o!==null&&o<this.flowLevel)return null;let h=this._subFlowsByName.get(s)||null;return h&&(o===null||o===h.flowLevel)?h:l?this.DeepSearchForAnyLevelContent(s):null},this.DeepSearchForAnyLevelContent=s=>{let o=this.ContentWithNameAtLevel(s,ut.FlowLevel.WeavePoint,false);if(o)return o;for(let[,l]of this._subFlowsByName){let u=l.ContentWithNameAtLevel(s,null,true);if(u)return u}return null},this.CheckForDisallowedFunctionFlowControl=()=>{this.flowLevel!==ut.FlowLevel.Knot&&this.Error("Functions cannot be stitches - i.e. they should be defined as '== function myFunc ==' rather than internal to another knot.");for(let[l,u]of this._subFlowsByName)this.Error(`Functions may not contain stitches, but saw '${l}' within the function '${this.identifier}'`,u);if(!this._rootWeave)throw new Error;let s=this._rootWeave.FindAll(yo.Divert)();for(let l of s)!l.isFunctionCall&&!(l.parent instanceof vf.DivertTarget)&&this.Error(`Functions may not contain diverts, but saw '${l}'`,l);let o=this._rootWeave.FindAll(yf.Choice)();for(let l of o)this.Error(`Functions may not contain choices, but saw '${l}'`,l);},this.WarningInTermination=s=>{let o="Apparent loose end exists where the flow runs out. Do you need a '-> DONE' statement, choice or divert?";s.parent===this._rootWeave&&this._firstChildFlow&&(o=`${o} Note that if you intend to enter '${this._firstChildFlow.identifier}' next, you need to divert to it explicitly.`);let l=(0, dh.asOrNull)(s,yo.Divert);l&&l.isTunnel&&(o+=` When final tunnel to '${l.target} ->' returns it won't have anywhere to go.`),this.Warning(o,s);},this.toString=()=>`${this.typeName} '${this.identifier}'`,this.identifier=e,this.args=n,t===null&&(t=[]),this.PreProcessTopLevelObjects(t),t=this.SplitWeaveAndSubFlowContent(t,this.GetType()=="Story"&&!a),this.AddContent(t);}PreProcessTopLevelObjects(e){}ResolveReferences(e){var t,n;if(this._startingSubFlowDivert){if(!this._startingSubFlowRuntime)throw new Error;this._startingSubFlowDivert.targetPath=this._startingSubFlowRuntime.path;}if(super.ResolveReferences(e),this.args!==null){for(let r of this.args)e.CheckForNamingCollisions(this,r.identifier,vo.SymbolType.Arg,"argument");for(let r=0;r<this.args.length;r+=1)for(let a=r+1;a<this.args.length;a+=1)((t=this.args[r].identifier)===null||t===void 0?void 0:t.name)==((n=this.args[a].identifier)===null||n===void 0?void 0:n.name)&&this.Error(`Multiple arguments with the same name: '${this.args[r].identifier}'`);}if(this.flowLevel!==ut.FlowLevel.Story){let r=this.flowLevel===ut.FlowLevel.Knot?vo.SymbolType.Knot:vo.SymbolType.SubFlowAndWeave;e.CheckForNamingCollisions(this,this.identifier,r);}}};Nr.FlowBase=Eo;});var Vr=b(Ir=>{Object.defineProperty(Ir,"__esModule",{value:true});Ir.ContentList=void 0;var Pf=se(),Ff=Z(),Nf=Tt(),If=U(),So=class extends Ff.ParsedObject{get runtimeContainer(){return this.runtimeObject}constructor(e,...t){super(),this.dontFlatten=false,this.TrimTrailingWhitespace=()=>{for(let n=this.content.length-1;n>=0;--n){let r=(0, If.asOrNull)(this.content[n],Nf.Text);if(r===null)break;if(r.text=r.text.replace(new RegExp(/[ \t]/g),""),r.text.length===0)this.content.splice(n,1);else break}},this.GenerateRuntimeObject=()=>{let n=new Pf.Container;if(this.content!==null)for(let r of this.content){let a=r.runtimeObject;a&&n.AddContent(a);}return this.dontFlatten&&this.story.DontFlattenContainer(n),n},this.toString=()=>`ContentList(${this.content.join(", ")})`,e&&this.AddContent(e),t&&this.AddContent(t);}get typeName(){return "ContentList"}};Ir.ContentList=So;});var Cn=b(kr=>{Object.defineProperty(kr,"__esModule",{value:true});kr.VariableReference=void 0;var Vf=Ie(),kf=Ne(),Do=class extends Vf.InkObject{get containerForCount(){return this.pathForCount===null?null:this.ResolvePath(this.pathForCount).container}get pathStringForCount(){return this.pathForCount===null?null:this.CompactPathString(this.pathForCount)}set pathStringForCount(e){e===null?this.pathForCount=null:this.pathForCount=new kf.Path(e);}constructor(e=null){super(),this.pathForCount=null,this.name=e;}toString(){return this.name!=null?"var("+this.name+")":"read_count("+this.pathStringForCount+")"}};kr.VariableReference=Do;});var yn=b(Rr=>{Object.defineProperty(Rr,"__esModule",{value:true});Rr.VariableReference=void 0;var Rf=Vr(),Lf=$e(),ph=lt(),Bf=$t(),Wf=Cn(),jf=Jt(),qf=Fr(),fh=U(),bo=class extends Lf.Expression{get name(){return this.path.join(".")}get path(){return this.pathIdentifiers.map(e=>e.name).filter(fh.filterUndef)}get identifier(){if(!this.pathIdentifiers||this.pathIdentifiers.length==0)return null;let e=this.path.join(".");return new qf.Identifier(e)}get runtimeVarRef(){return this._runtimeVarRef}constructor(e){super(),this.pathIdentifiers=e,this._runtimeVarRef=null,this.isConstantReference=false,this.isListItemReference=false,this.GenerateIntoContainer=t=>{let n=this.story.constants.get(this.name);if(n){n.GenerateConstantIntoContainer(t),this.isConstantReference=true;return}if(this._runtimeVarRef=new Wf.VariableReference(this.name),this.path.length===1||this.path.length===2){let r="",a="";this.path.length===1?r=this.path[0]:(a=this.path[0],r=this.path[1]),this.story.ResolveListItem(a,r,this)&&(this.isListItemReference=true);}t.AddContent(this._runtimeVarRef);},this.toString=()=>`{${this.path.join(".")}}`;}get typeName(){return "ref"}ResolveReferences(e){if(super.ResolveReferences(e),this.isConstantReference||this.isListItemReference)return;let t=new Bf.Path(this.pathIdentifiers),n=t.ResolveFromContext(this);if(n){if(!n.containerForCounting)throw new Error;if(n.containerForCounting.visitsShouldBeCounted=true,this._runtimeVarRef===null)return;this._runtimeVarRef.pathForCount=n.runtimePath,this._runtimeVarRef.name=null;let r=(0, fh.asOrNull)(n,ph.FlowBase);r&&r.isFunction&&(this.parent instanceof jf.Weave||this.parent instanceof Rf.ContentList||this.parent instanceof ph.FlowBase)&&this.Warning(`'${r.identifier}' being used as read count rather than being called as function. Perhaps you intended to write ${r.identifier}()`);return}if(this.path.length>1){let r=`Could not find target for read count: ${t}`;this.path.length<=2&&(r+=`, or couldn't find list item with the name ${this.path.join(",")}`),this.Error(r);return}e.ResolveVariableWithName(this.name,this).found||this.Error(`Unresolved variable: ${this.name}`,this);}};Rr.VariableReference=bo;});var Yn=b(jr=>{Object.defineProperty(jr,"__esModule",{value:true});jr.FunctionCall=void 0;var ht=ge(),Mf=gn(),Gf=mn(),$f=$e(),Jf=ke(),Hf=te(),Br=at(),mh=er(),Uf=$t(),zf=te(),Kf=yn(),Lr=U(),Wr=class i extends $f.Expression{get proxyDivert(){return this._proxyDivert}get name(){return this._proxyDivert.target.firstComponent||""}get args(){return this._proxyDivert.args}get runtimeDivert(){return this._proxyDivert.runtimeDivert}get isChoiceCount(){return this.name==="CHOICE_COUNT"}get isTurns(){return this.name==="TURNS"}get isTurnsSince(){return this.name==="TURNS_SINCE"}get isRandom(){return this.name==="RANDOM"}get isSeedRandom(){return this.name==="SEED_RANDOM"}get isListRange(){return this.name==="LIST_RANGE"}get isListRandom(){return this.name==="LIST_RANDOM"}get isReadCount(){return this.name==="READ_COUNT"}constructor(e,t){super(),this._divertTargetToCount=null,this._variableReferenceToCount=null,this.shouldPopReturnedValue=false,this.GenerateIntoContainer=n=>{let r=this.story.ResolveList(this.name),a=false;if(this.isChoiceCount)this.args.length>0&&this.Error("The CHOICE_COUNT() function shouldn't take any arguments"),n.AddContent(ht.ControlCommand.ChoiceCount());else if(this.isTurns)this.args.length>0&&this.Error("The TURNS() function shouldn't take any arguments"),n.AddContent(ht.ControlCommand.Turns());else if(this.isTurnsSince||this.isReadCount){let s=(0, Lr.asOrNull)(this.args[0],Gf.DivertTarget),o=(0, Lr.asOrNull)(this.args[0],Kf.VariableReference);if(this.args.length!==1||s===null&&o===null){this.Error(`The ${this.name}() function should take one argument: a divert target to the target knot, stitch, gather or choice you want to check. e.g. TURNS_SINCE(-> myKnot)`);return}s?(this._divertTargetToCount=s,this.AddContent(this._divertTargetToCount),this._divertTargetToCount.GenerateIntoContainer(n)):o&&(this._variableReferenceToCount=o,this.AddContent(this._variableReferenceToCount),this._variableReferenceToCount.GenerateIntoContainer(n)),this.isTurnsSince?n.AddContent(ht.ControlCommand.TurnsSince()):n.AddContent(ht.ControlCommand.ReadCount());}else if(this.isRandom){this.args.length!==2&&this.Error("RANDOM should take 2 parameters: a minimum and a maximum integer");for(let s=0;s<this.args.length;s+=1){let o=(0, Lr.asOrNull)(this.args[s],mh.NumberExpression);if(o&&!o.isInt()){let l=s===0?"minimum":"maximum";this.Error(`RANDOM's ${l} parameter should be an integer`);}this.args[s].GenerateIntoContainer(n);}n.AddContent(ht.ControlCommand.Random());}else if(this.isSeedRandom){this.args.length!==1&&this.Error("SEED_RANDOM should take 1 parameter - an integer seed");let s=(0, Lr.asOrNull)(this.args[0],mh.NumberExpression);s&&!s.isInt()&&this.Error("SEED_RANDOM's parameter should be an integer seed"),this.args[0].GenerateIntoContainer(n),n.AddContent(ht.ControlCommand.SeedRandom());}else if(this.isListRange){this.args.length!==3&&this.Error("LIST_RANGE should take 3 parameters - a list, a min and a max");for(let s=0;s<this.args.length;s+=1)this.args[s].GenerateIntoContainer(n);n.AddContent(ht.ControlCommand.ListRange());}else if(this.isListRandom)this.args.length!==1&&this.Error("LIST_RANDOM should take 1 parameter - a list"),this.args[0].GenerateIntoContainer(n),n.AddContent(ht.ControlCommand.ListRandom());else if(Br.NativeFunctionCall.CallExistsWithName(this.name)){let s=Br.NativeFunctionCall.CallWithName(this.name);if(s.numberOfParameters!==this.args.length){let o=`${i.name} should take ${s.numberOfParameters} parameter`;s.numberOfParameters>1&&(o+="s"),this.Error(o);}for(let o=0;o<this.args.length;o+=1)this.args[o].GenerateIntoContainer(n);n.AddContent(Br.NativeFunctionCall.CallWithName(this.name));}else if(r!==null)if(this.args.length>1&&this.Error("Can currently only construct a list from one integer (or an empty list from a given list definition)"),this.args.length===1)n.AddContent(new zf.StringValue(this.name)),this.args[0].GenerateIntoContainer(n),n.AddContent(ht.ControlCommand.ListFromInt());else {let s=new Jf.InkList;s.SetInitialOriginName(this.name),n.AddContent(new Hf.ListValue(s));}else n.AddContent(this._proxyDivert.runtimeObject),a=true;a||this.content.splice(this.content.indexOf(this._proxyDivert),1),this.shouldPopReturnedValue&&n.AddContent(ht.ControlCommand.PopEvaluatedValue());},this.toString=()=>{let n=this.args.join(", ");return `${this.name}(${n})`},this._proxyDivert=new Mf.Divert(new Uf.Path(e),t),this._proxyDivert.isFunctionCall=true,this.AddContent(this._proxyDivert);}get typeName(){return "FunctionCall"}ResolveReferences(e){if(super.ResolveReferences(e),!this.content.includes(this._proxyDivert)&&this.args!==null)for(let t of this.args)t.ResolveReferences(e);if(this._divertTargetToCount){let t=this._divertTargetToCount.divert,n=t.runtimeDivert.variableDivertName!=null;if(n){this.Error(`When getting the TURNS_SINCE() of a variable target, remove the '->' - i.e. it should just be TURNS_SINCE(${t.runtimeDivert.variableDivertName})`);return}let r=t.targetContent;if(r===null)n||this.Error(`Failed to find target for TURNS_SINCE: '${t.target}'`);else {if(!r.containerForCounting)throw new Error;r.containerForCounting.turnIndexShouldBeCounted=true;}}else if(this._variableReferenceToCount){let t=this._variableReferenceToCount.runtimeVarRef;if(!t)throw new Error;t.pathForCount!==null&&this.Error(`Should be '${i.name}'(-> '${this._variableReferenceToCount.name}). Usage without the '->' only makes sense for variable targets.`);}}};jr.FunctionCall=Wr;Wr.IsBuiltIn=i=>Br.NativeFunctionCall.CallExistsWithName(i)?true:i==="CHOICE_COUNT"||i==="TURNS_SINCE"||i==="TURNS"||i==="RANDOM"||i==="SEED_RANDOM"||i==="LIST_VALUE"||i==="LIST_RANDOM"||i==="READ_COUNT";});var wo=b(qr=>{Object.defineProperty(qr,"__esModule",{value:true});qr.MultipleConditionExpression=void 0;var Xf=$e(),Yf=at(),Ao=class extends Xf.Expression{get subExpressions(){return this.content}constructor(e){super(),this.GenerateIntoContainer=t=>{let n=true;for(let r of this.subExpressions)r.GenerateIntoContainer(t),n||t.AddContent(Yf.NativeFunctionCall.CallWithName("&&")),n=false;},this.AddContent(e);}get typeName(){return "MultipleConditionExpression"}};qr.MultipleConditionExpression=Ao;});var mn=b(Mr=>{Object.defineProperty(Mr,"__esModule",{value:true});Mr.DivertTarget=void 0;var Qf=za(),Zf=dn(),em=Er(),tm=Oo(),nm=te(),xo=$e(),im=lt(),gh=Yn(),rm=wo(),Ch=yn(),_o=U(),To=class i extends xo.Expression{get runtimeDivert(){if(!this._runtimeDivert)throw new Error;return this._runtimeDivert}get runtimeDivertTargetValue(){if(!this._runtimeDivertTargetValue)throw new Error;return this._runtimeDivertTargetValue}constructor(e){super(),this._runtimeDivert=null,this._runtimeDivertTargetValue=null,this.GenerateIntoContainer=t=>{this.divert.GenerateRuntimeObject(),this._runtimeDivert=this.divert.runtimeDivert,this._runtimeDivertTargetValue=new nm.DivertTargetValue,t.AddContent(this.runtimeDivertTargetValue);},this.Equals=t=>{let n=(0, _o.asOrNull)(t,i);if(!n||!this.divert.target||!n.divert.target)return false;let r=this.divert.target.dotSeparatedComponents,a=n.divert.target.dotSeparatedComponents;return r===a},this.divert=this.AddContent(e);}get typeName(){return "DivertTarget"}ResolveReferences(e){if(super.ResolveReferences(e),this.divert.isDone||this.divert.isEnd){this.Error("Can't use -> DONE or -> END as variable divert targets",this);return}let t=this;for(;t&&t instanceof xo.Expression;){let r=false,a=false,s=t.parent;if(s instanceof Qf.BinaryExpression){let o=s;o.opName!=="=="&&o.opName!=="!="?r=true:(o.leftExpression instanceof i||o.leftExpression instanceof Ch.VariableReference)&&(o.rightExpression instanceof i||o.rightExpression instanceof Ch.VariableReference)||(r=true),a=true;}else if(s instanceof gh.FunctionCall){let o=s;!o.isTurnsSince&&!o.isReadCount&&(r=true),a=true;}else (s instanceof xo.Expression||s instanceof rm.MultipleConditionExpression||s instanceof Zf.Choice&&s.condition===t||s instanceof em.Conditional||s instanceof tm.ConditionalSingleBranch)&&(r=true,a=true);if(r&&this.Error(`Can't use a divert target like that. Did you intend to call '${this.divert.target}' as a function: likeThis(), or check the read count: likeThis, with no arrows?`,this),a)break;t=s;}if(this.runtimeDivert.hasVariableTarget){if(!this.divert.target)throw new Error;this.Error(`Since '${this.divert.target.dotSeparatedComponents}' is a variable, it shouldn't be preceded by '->' here.`);}this.runtimeDivert.targetPath&&(this.runtimeDivertTargetValue.targetPath=this.runtimeDivert.targetPath);let n=this.divert.targetContent;if(n!==null){let r=n.containerForCounting;if(r!==null){let s=(0, _o.asOrNull)(this.parent,gh.FunctionCall);s&&s.isTurnsSince||(r.visitsShouldBeCounted=true),r.turnIndexShouldBeCounted=true;}let a=(0, _o.asOrNull)(n,im.FlowBase);if(a!=null&&a.args!==null)for(let s of a.args)s.isByReference&&this.Error(`Can't store a divert target to a knot or function that has by-reference arguments ('${a.identifier}' has 'ref ${s.identifier}').`);}}};Mr.DivertTarget=To;});var gn=b(Gr=>{Object.defineProperty(Gr,"__esModule",{value:true});Gr.Divert=void 0;var sm=se(),Qn=ge(),am=ot(),Po=mn(),Fo=lt(),om=Yn(),lm=Z(),yh=$t(),um=Ne(),vh=Mt(),hm=te(),Eh=yn(),cm=Xn(),Zn=U(),No=class extends lm.ParsedObject{get runtimeDivert(){if(!this._runtimeDivert)throw new Error;return this._runtimeDivert}set runtimeDivert(e){this._runtimeDivert=e;}get isEnd(){return !!(this.target&&this.target.dotSeparatedComponents==="END")}get isDone(){return !!(this.target&&this.target.dotSeparatedComponents==="DONE")}constructor(e,t){super(),this.args=[],this.target=null,this.targetContent=null,this._runtimeDivert=null,this.isFunctionCall=false,this.isEmpty=false,this.isTunnel=false,this.isThread=false,this.GenerateRuntimeObject=()=>{if(this.isEnd)return Qn.ControlCommand.End();if(this.isDone)return Qn.ControlCommand.Done();this.runtimeDivert=new am.Divert,this.ResolveTargetContent(),this.CheckArgumentValidity();let n=this.args!==null&&this.args.length>0;if(n||this.isFunctionCall||this.isTunnel||this.isThread){let r=new sm.Container;if(n){this.isFunctionCall||r.AddContent(Qn.ControlCommand.EvalStart());let a=null;this.targetContent&&(a=this.targetContent.args);for(let s=0;s<this.args.length;++s){let o=this.args[s],l=null;if(a&&s<a.length&&(l=a[s]),l&&l.isByReference){let u=(0, Zn.asOrNull)(o,Eh.VariableReference);if(!u){this.Error(`Expected variable name to pass by reference to 'ref ${l.identifier}' but saw ${o}`);break}let h=new yh.Path(u.pathIdentifiers);if(h.ResolveFromContext(this)){this.Error(`can't pass a read count by reference. '${h.dotSeparatedComponents}' is a knot/stitch/label, but '${this.target.dotSeparatedComponents}' requires the name of a VAR to be passed.`);break}let d=new hm.VariablePointerValue(u.name);r.AddContent(d);}else o.GenerateIntoContainer(r);}this.isFunctionCall||r.AddContent(Qn.ControlCommand.EvalEnd());}return this.isThread?r.AddContent(Qn.ControlCommand.StartThread()):(this.isFunctionCall||this.isTunnel)&&(this.runtimeDivert.pushesToStack=true,this.runtimeDivert.stackPushType=this.isFunctionCall?vh.PushPopType.Function:vh.PushPopType.Tunnel),r.AddContent(this.runtimeDivert),r}return this.runtimeDivert},this.PathAsVariableName=()=>this.target?this.target.firstComponent:null,this.ResolveTargetContent=()=>{if(!(this.isEmpty||this.isEnd)&&this.targetContent===null){let n=this.PathAsVariableName();if(n!==null){let r=(0, Zn.asOrNull)((0, cm.ClosestFlowBase)(this),Fo.FlowBase);if(r){let a=r.ResolveVariableWithName(n,this);if(a.found){if(a.isArgument&&a.ownerFlow&&a.ownerFlow.args){let s=a.ownerFlow.args.find(o=>{var l;return ((l=o.identifier)===null||l===void 0?void 0:l.name)==n});s&&!s.isDivertTarget&&this.Error(`Since '${s.identifier}' is used as a variable divert target (on ${this.debugMetadata}), it should be marked as: -> ${s.identifier}`,a.ownerFlow);}this.runtimeDivert.variableDivertName=n;return}}}if(!this.target)throw new Error;this.targetContent=this.target.ResolveFromContext(this);}},this.CheckArgumentValidity=()=>{if(this.isEmpty)return;let n=0;if(this.args!==null&&this.args.length>0&&(n=this.args.length),this.targetContent===null)return;let r=(0, Zn.asOrNull)(this.targetContent,Fo.FlowBase);if(n===0&&(r===null||!r.hasParameters))return;if(r===null&&n>0){this.Error("target needs to be a knot or stitch in order to pass arguments");return}else if(r!==null&&(r.args===null||!r.args&&n>0)){this.Error(`target (${r.name}) doesn't take parameters`);return}else if(this.parent instanceof Po.DivertTarget){n>0&&this.Error("can't store arguments in a divert target variable");return}let a=r.args.length;if(a!==n){let s;n===0?s="but there weren't any passed to it":n<a?s=`but only got ${n}`:s=`but got ${n}`,this.Error(`to '${r.identifier}' requires ${a} arguments, ${s}`);return}for(let s=0;s<a;++s){let o=r.args[s],l=this.args[s];if(o.isDivertTarget){let u=(0, Zn.asOrNull)(l,Eh.VariableReference);if(!(l instanceof Po.DivertTarget)&&u===null)this.Error(`Target '${r.identifier}' expects a divert target for the parameter named -> ${o.identifier} but saw ${l}`,l);else if(u){let h=new yh.Path(u.pathIdentifiers);h.ResolveFromContext(u)&&this.Error(`Passing read count of '${h.dotSeparatedComponents}' instead of a divert target. You probably meant '${h}'`);}}}if(r===null){this.Error("Can't call as a function or with arguments unless it's a knot or stitch");return}},this.CheckExternalArgumentValidity=n=>{let r=this.target?this.target.firstComponent:null,a=n.externals.get(r);if(!a)throw new Error("external not found");let s=a.argumentNames.length,o=0;this.args&&(o=this.args.length),o!==s&&this.Error(`incorrect number of arguments sent to external function '${r}'. Expected ${s} but got ${o}`);},this.toString=()=>{let n="";if(this.target!==null)n+=this.target.toString();else return "-> <empty divert>";return this.isTunnel&&(n+=" ->"),this.isFunctionCall&&(n+=" ()"),n},e&&(this.target=e),t&&(this.args=t,this.AddContent(t));}get typeName(){return "Divert"}ResolveReferences(e){if(this.isEmpty||this.isEnd||this.isDone)return;if(!this.runtimeDivert)throw new Error;this.targetContent&&(this.runtimeDivert.targetPath=this.targetContent.runtimePath),super.ResolveReferences(e);let t=(0, Zn.asOrNull)(this.targetContent,Fo.FlowBase);t&&(!t.isFunction&&this.isFunctionCall?super.Error(`${t.identifier} hasn't been marked as a function, but it's being called as one. Do you need to declare the knot as '== function ${t.identifier} =='?`):t.isFunction&&!this.isFunctionCall&&!(this.parent instanceof Po.DivertTarget)&&super.Error(t.identifier+" can't be diverted to. It can only be called as a function since it's been marked as such: '"+t.identifier+"(...)'"));let n=this.targetContent!==null,r=false,a=false;if(this.target){if(this.target.numberOfComponents===1){if(!this.target.firstComponent)throw new Error;if(r=om.FunctionCall.IsBuiltIn(this.target.firstComponent),a=e.IsExternal(this.target.firstComponent),r||a){this.isFunctionCall||super.Error(`${this.target.firstComponent} must be called as a function: ~ ${this.target.firstComponent}()`),a&&(this.runtimeDivert.isExternal=true,this.args!==null&&(this.runtimeDivert.externalArgs=this.args.length),this.runtimeDivert.pushesToStack=false,this.runtimeDivert.targetPath=new um.Path(this.target.firstComponent),this.CheckExternalArgumentValidity(e));return}}}else throw new Error;this.runtimeDivert.variableDivertName==null&&!n&&!r&&!a&&this.Error(`target not found: '${this.target}'`);}Error(e,t=null,n=false){if(t!==this&&t){super.Error(e,t);return}this.isFunctionCall?super.Error(`Function call ${e}`,t,n):super.Error(`Divert ${e}`,t,n);}};Gr.Divert=No;});var Sh=b($r=>{Object.defineProperty($r,"__esModule",{value:true});$r.GatherPointToResolve=void 0;var Io=class{constructor(e,t){this.divert=e,this.targetRuntimeObj=t;}};$r.GatherPointToResolve=Io;});var Dh=b(Jr=>{Object.defineProperty(Jr,"__esModule",{value:true});Jr.SequenceDivertToResolve=void 0;var Vo=class{constructor(e,t){this.divert=e,this.targetContent=t;}};Jr.SequenceDivertToResolve=Vo;});var ko=b(Hr=>{Object.defineProperty(Hr,"__esModule",{value:true});Hr.SequenceType=void 0;var bh;(function(i){i[i.Stopping=1]="Stopping",i[i.Cycle=2]="Cycle",i[i.Shuffle=4]="Shuffle",i[i.Once=8]="Once";})(bh||(Hr.SequenceType=bh={}));});var Bo=b(Kr=>{Object.defineProperty(Kr,"__esModule",{value:true});Kr.Sequence=void 0;var Ah=se(),Qe=ge(),Ro=ot(),ei=te(),Ur=at(),dm=Z(),pm=Dh(),zr=ko(),fm=Jt(),Lo=class extends dm.ParsedObject{constructor(e,t){super(),this.sequenceType=t,this._sequenceDivertsToResolve=[],this.GenerateRuntimeObject=()=>{let n=new Ah.Container;n.visitsShouldBeCounted=true,n.countingAtStartOnly=true,this._sequenceDivertsToResolve=[],n.AddContent(Qe.ControlCommand.EvalStart()),n.AddContent(Qe.ControlCommand.VisitIndex());let r=(this.sequenceType&zr.SequenceType.Once)>0,a=(this.sequenceType&zr.SequenceType.Cycle)>0,s=(this.sequenceType&zr.SequenceType.Stopping)>0,o=(this.sequenceType&zr.SequenceType.Shuffle)>0,l=this.sequenceElements.length;if(r&&(l+=1),s||r?(n.AddContent(new ei.IntValue(l-1)),n.AddContent(Ur.NativeFunctionCall.CallWithName("MIN"))):a&&(n.AddContent(new ei.IntValue(this.sequenceElements.length)),n.AddContent(Ur.NativeFunctionCall.CallWithName("%"))),o){let h=Qe.ControlCommand.NoOp();if(r||s){let d=s?this.sequenceElements.length-1:this.sequenceElements.length;n.AddContent(Qe.ControlCommand.Duplicate()),n.AddContent(new ei.IntValue(d)),n.AddContent(Ur.NativeFunctionCall.CallWithName("=="));let f=new Ro.Divert;f.isConditional=true,n.AddContent(f),this.AddDivertToResolve(f,h);}let c=this.sequenceElements.length;s&&(c-=1),n.AddContent(new ei.IntValue(c)),n.AddContent(Qe.ControlCommand.SequenceShuffleIndex()),(r||s)&&n.AddContent(h);}n.AddContent(Qe.ControlCommand.EvalEnd());let u=Qe.ControlCommand.NoOp();for(let h=0;h<l;h+=1){n.AddContent(Qe.ControlCommand.EvalStart()),n.AddContent(Qe.ControlCommand.Duplicate()),n.AddContent(new ei.IntValue(h)),n.AddContent(Ur.NativeFunctionCall.CallWithName("==")),n.AddContent(Qe.ControlCommand.EvalEnd());let c=new Ro.Divert;c.isConditional=true,n.AddContent(c);let d;h<this.sequenceElements.length?d=this.sequenceElements[h].runtimeObject:d=new Ah.Container,d.name=`s${h}`,d.InsertContent(Qe.ControlCommand.PopEvaluatedValue(),0);let f=new Ro.Divert;d.AddContent(f),n.AddToNamedContentOnly(d),this.AddDivertToResolve(c,d),this.AddDivertToResolve(f,u);}return n.AddContent(u),n},this.AddDivertToResolve=(n,r)=>{this._sequenceDivertsToResolve.push(new pm.SequenceDivertToResolve(n,r));},this.sequenceType=t,this.sequenceElements=[];for(let n of e){let r=n.content,a=null;r===null||r.length===0?a=n:a=new fm.Weave(r),this.sequenceElements.push(a),this.AddContent(a);}}get typeName(){return "Sequence"}ResolveReferences(e){super.ResolveReferences(e);for(let t of this._sequenceDivertsToResolve)t.divert.targetPath=t.targetContent.path;}};Kr.Sequence=Lo;});var jo=b(Xr=>{Object.defineProperty(Xr,"__esModule",{value:true});Xr.TunnelOnwards=void 0;var mm=se(),ti=ge(),gm=ot(),Cm=te(),ym=Z(),vm=qt(),Em=U(),Sm=Cn(),Wo=class extends ym.ParsedObject{constructor(){super(...arguments),this._overrideDivertTarget=null,this._divertAfter=null,this.GenerateRuntimeObject=()=>{let e=new mm.Container;if(e.AddContent(ti.ControlCommand.EvalStart()),this.divertAfter){let t=this.divertAfter.GenerateRuntimeObject(),n=t;if(n){let a=this.divertAfter.args;if(a!==null&&a.length>0){let s=-1,o=-1;for(let l=0;l<n.content.length;l+=1){let u=n.content[l];u&&(s==-1&&u.commandType===ti.ControlCommand.CommandType.EvalStart?s=l:u.commandType===ti.ControlCommand.CommandType.EvalEnd&&(o=l));}for(let l=s+1;l<o;l+=1){let u=n.content[l];u.parent=null,e.AddContent(n.content[l]);}}}let r=(0, Em.asOrNull)(t,gm.Divert);if(r!=null&&r.hasVariableTarget){let a=new Sm.VariableReference(r.variableDivertName);e.AddContent(a);}else this._overrideDivertTarget=new Cm.DivertTargetValue,e.AddContent(this._overrideDivertTarget);}else e.AddContent(new vm.Void);return e.AddContent(ti.ControlCommand.EvalEnd()),e.AddContent(ti.ControlCommand.PopTunnel()),e},this.toString=()=>` -> ${this._divertAfter}`;}get divertAfter(){return this._divertAfter}set divertAfter(e){this._divertAfter=e,this._divertAfter&&this.AddContent(this._divertAfter);}get typeName(){return "TunnelOnwards"}ResolveReferences(e){super.ResolveReferences(e),this.divertAfter&&this.divertAfter.targetContent&&(this._overrideDivertTarget.targetPath=this.divertAfter.targetContent.runtimePath);}};Xr.TunnelOnwards=Wo;});var Go=b(Yr=>{Object.defineProperty(Yr,"__esModule",{value:true});Yr.ListDefinition=void 0;var qo=ke(),Mo=class{constructor(e,t){this._name=e||"",this._items=null,this._itemNameToValues=t||new Map;}get name(){return this._name}get items(){if(this._items==null){this._items=new Map;for(let[e,t]of this._itemNameToValues){let n=new qo.InkListItem(this.name,e);this._items.set(n.serialized(),t);}}return this._items}ValueForItem(e){if(!e.itemName)return 0;let t=this._itemNameToValues.get(e.itemName);return typeof t<"u"?t:0}ContainsItem(e){return !e.itemName||e.originName!=this.name?false:this._itemNameToValues.has(e.itemName)}ContainsItemWithName(e){return this._itemNameToValues.has(e)}TryGetItemWithValue(e,t){for(let[n,r]of this._itemNameToValues)if(r==e)return t=new qo.InkListItem(this.name,n),{result:t,exists:true};return t=qo.InkListItem.Null,{result:t,exists:false}}TryGetValueForItem(e,t){if(!e.itemName)return {result:0,exists:false};let n=this._itemNameToValues.get(e.itemName);return n?{result:n,exists:true}:{result:0,exists:false}}};Yr.ListDefinition=Mo;});var Zr=b(Qr=>{Object.defineProperty(Qr,"__esModule",{value:true});Qr.ListDefinition=void 0;var Dm=ke(),bm=ke(),Am=Go(),wm=te(),xm=Z(),_m=yt(),$o=class extends xm.ParsedObject{get typeName(){return "ListDefinition"}get runtimeListDefinition(){var e;let t=new Map;for(let n of this.itemDefinitions)t.has(n.name)?this.Error(`List '${this.identifier}' contains duplicate items called '${n.name}'`):t.set(n.name,n.seriesValue);return new Am.ListDefinition(((e=this.identifier)===null||e===void 0?void 0:e.name)||"",t)}constructor(e){super(),this.itemDefinitions=e,this.identifier=null,this.variableAssignment=null,this._elementsByName=null,this.ItemNamed=n=>{if(this._elementsByName===null){this._elementsByName=new Map;for(let a of this.itemDefinitions)this._elementsByName.set(a.name,a);}return this._elementsByName.get(n)||null},this.GenerateRuntimeObject=()=>{var n,r;let a=new Dm.InkList;for(let s of this.itemDefinitions)if(s.inInitialList){let o=new bm.InkListItem(((n=this.identifier)===null||n===void 0?void 0:n.name)||null,s.name||null);a.Add(o,s.seriesValue);}return a.SetInitialOriginName(((r=this.identifier)===null||r===void 0?void 0:r.name)||""),new wm.ListValue(a)};let t=1;for(let n of this.itemDefinitions)n.explicitValue!==null&&(t=n.explicitValue),n.seriesValue=t,t+=1;this.AddContent(e);}ResolveReferences(e){super.ResolveReferences(e),e.CheckForNamingCollisions(this,this.identifier,_m.SymbolType.List);}};Qr.ListDefinition=$o;});var Ho=b(es=>{Object.defineProperty(es,"__esModule",{value:true});es.VariableAssignment=void 0;var Tm=se(),Om=Xn(),Pm=Zr(),Fm=Z(),wh=yt(),Nm=xt(),Im=yn(),Vm=U(),Jo=class extends Fm.ParsedObject{get variableName(){return this.variableIdentifier.name}get typeName(){return this.isNewTemporaryDeclaration?"temp":this.isGlobalDeclaration?this.listDefinition!==null?"LIST":"VAR":"variable assignment"}get isDeclaration(){return this.isGlobalDeclaration||this.isNewTemporaryDeclaration}constructor({assignedExpression:e,isGlobalDeclaration:t,isTemporaryNewDeclaration:n,listDef:r,variableIdentifier:a}){super(),this._runtimeAssignment=null,this.expression=null,this.listDefinition=null,this.GenerateRuntimeObject=()=>{let s=null;if(this.isGlobalDeclaration?s=this.story:this.isNewTemporaryDeclaration&&(s=(0, Om.ClosestFlowBase)(this)),s&&s.AddNewVariableDeclaration(this),this.isGlobalDeclaration)return null;let o=new Tm.Container;return this.expression?o.AddContent(this.expression.runtimeObject):this.listDefinition&&o.AddContent(this.listDefinition.runtimeObject),this._runtimeAssignment=new Nm.VariableAssignment(this.variableName,this.isNewTemporaryDeclaration),o.AddContent(this._runtimeAssignment),o},this.toString=()=>`${this.isGlobalDeclaration?"VAR":this.isNewTemporaryDeclaration?"~ temp":""} ${this.variableName}`,this.variableIdentifier=a,this.isGlobalDeclaration=!!t,this.isNewTemporaryDeclaration=!!n,r instanceof Pm.ListDefinition?(this.listDefinition=this.AddContent(r),this.listDefinition.variableAssignment=this,this.isGlobalDeclaration=true):e&&(this.expression=this.AddContent(e));}ResolveReferences(e){if(super.ResolveReferences(e),this.isDeclaration&&this.listDefinition===null&&e.CheckForNamingCollisions(this,this.variableIdentifier,this.isGlobalDeclaration?wh.SymbolType.Var:wh.SymbolType.Temp),this.isGlobalDeclaration){let t=(0, Vm.asOrNull)(this.expression,Im.VariableReference);t&&!t.isConstantReference&&!t.isListItemReference&&this.Error("global variable assignments cannot refer to other variables, only literal values, constants and list items");}if(!this.isNewTemporaryDeclaration){let t=e.ResolveVariableWithName(this.variableName,this);t.found||(this.variableName in this.story.constants?this.Error(`Can't re-assign to a constant (do you need to use VAR when declaring '${this.variableName}'?)`,this):this.Error(`Variable could not be found to assign to: '${this.variableName}'`,this)),this._runtimeAssignment&&(this._runtimeAssignment.isGlobal=t.isGlobal);}}};es.VariableAssignment=Jo;});var Jt=b(is=>{Object.defineProperty(is,"__esModule",{value:true});is.Weave=void 0;var xh=Bi(),He=dn(),ts=Er(),km=br(),Rm=se(),ns=gn(),Lm=ot(),Bm=mn(),Wm=lt(),ct=Kn(),jm=Sh(),qm=Z(),Uo=Bo(),Mm=Tt(),Gm=jo(),$m=Ho(),Ue=U(),zo=class i extends qm.ParsedObject{get rootContainer(){return this._rootContainer||(this._rootContainer=this.GenerateRuntimeObject()),this._rootContainer}get namedWeavePoints(){return this._namedWeavePoints}get lastParsedSignificantObject(){if(this.content.length===0)return null;let e=null;for(let n=this.content.length-1;n>=0;--n){e=this.content[n];let r=(0, Ue.asOrNull)(e,Mm.Text);if(!(r&&r.text===`
|
|
15
|
-
`)&&!this.IsGlobalDeclaration(e))break}let t=(0, Ue.asOrNull)(e,i);return t&&(e=t.lastParsedSignificantObject),e}constructor(e,t=-1){super(),this.previousWeavePoint=null,this.addContentToPreviousWeavePoint=false,this.hasSeenChoiceInSection=false,this.currentContainer=null,this._unnamedGatherCount=0,this._choiceCount=0,this._rootContainer=null,this._namedWeavePoints=new Map,this.looseEnds=[],this.gatherPointsToResolve=[],this.ResolveWeavePointNaming=()=>{var n,r,a;let s=[...this.FindAll(ct.Gather)(o=>!(o.name===null||o.name===void 0)),...this.FindAll(He.Choice)(o=>!(o.name===null||o.name===void 0))];this._namedWeavePoints=new Map;for(let o of s){let l=this.namedWeavePoints.get(((n=o.identifier)===null||n===void 0?void 0:n.name)||"");if(l){let u=l instanceof ct.Gather?"gather":"choice",h=l;this.Error(`A ${u} with the same label name '${o.name}' already exists in this context on line ${h.debugMetadata?h.debugMetadata.startLineNumber:"NO DEBUG METADATA AVAILABLE"}`,o);}!((r=o.identifier)===null||r===void 0)&&r.name&&this.namedWeavePoints.set((a=o.identifier)===null||a===void 0?void 0:a.name,o);}},this.ConstructWeaveHierarchyFromIndentation=()=>{let n=0;for(;n<this.content.length;){let r=this.content[n];if(r instanceof He.Choice||r instanceof ct.Gather){let s=r.indentationDepth-1;if(s>this.baseIndentIndex){let o=n;for(;n<this.content.length;){let c=(0, Ue.asOrNull)(this.content[n],He.Choice)||(0, Ue.asOrNull)(this.content[n],ct.Gather);if(c!==null&&c.indentationDepth-1<=this.baseIndentIndex)break;n+=1;}let l=n-o,u=this.content.slice(o,o+l);this.content.splice(o,l);let h=new i(u,s);this.InsertContent(o,h),n=o;}}n+=1;}},this.DetermineBaseIndentationFromContent=n=>{for(let r of n)if(r instanceof He.Choice||r instanceof ct.Gather)return r.indentationDepth-1;return 0},this.GenerateRuntimeObject=()=>{this._rootContainer=new Rm.Container,this.currentContainer=this._rootContainer,this.looseEnds=[],this.gatherPointsToResolve=[];for(let n of this.content)if(n instanceof He.Choice||n instanceof ct.Gather)this.AddRuntimeForWeavePoint(n);else if(n instanceof i){let r=n;this.AddRuntimeForNestedWeave(r),this.gatherPointsToResolve.splice(0,0,...r.gatherPointsToResolve);}else this.AddGeneralRuntimeContent(n.runtimeObject);return this.PassLooseEndsToAncestors(),this._rootContainer},this.AddRuntimeForGather=n=>{let r=!this.hasSeenChoiceInSection;this.hasSeenChoiceInSection=false;let a=n.runtimeContainer;if(n.name||(a.name=`g-${this._unnamedGatherCount}`,this._unnamedGatherCount+=1),r){if(!this.currentContainer)throw new Error;this.currentContainer.AddContent(a);}else this.rootContainer.AddToNamedContentOnly(a);for(let s of this.looseEnds){let o=s;if(o instanceof ct.Gather&&o.indentationDepth==n.indentationDepth)continue;let l=null;if(o instanceof ns.Divert)l=o.runtimeObject;else {l=new Lm.Divert;let u=o;if(!u.runtimeContainer)throw new Error;u.runtimeContainer.AddContent(l);}this.gatherPointsToResolve.push(new jm.GatherPointToResolve(l,a));}this.looseEnds=[],this.currentContainer=a;},this.AddRuntimeForWeavePoint=n=>{if(n instanceof ct.Gather)this.AddRuntimeForGather(n);else if(n instanceof He.Choice){if(!this.currentContainer)throw new Error;this.previousWeavePoint instanceof ct.Gather&&this.looseEnds.splice(this.looseEnds.indexOf(this.previousWeavePoint),1);let r=n;if(this.currentContainer.AddContent(r.runtimeObject),!r.innerContentContainer)throw new Error;r.innerContentContainer.name=`c-${this._choiceCount}`,this.currentContainer.AddToNamedContentOnly(r.innerContentContainer),this._choiceCount+=1,this.hasSeenChoiceInSection=true;}this.addContentToPreviousWeavePoint=false,this.WeavePointHasLooseEnd(n)&&(this.looseEnds.push(n),(0, Ue.asOrNull)(n,He.Choice)&&(this.addContentToPreviousWeavePoint=true)),this.previousWeavePoint=n;},this.AddRuntimeForNestedWeave=n=>{this.AddGeneralRuntimeContent(n.rootContainer),this.previousWeavePoint!==null&&(this.looseEnds.splice(this.looseEnds.indexOf(this.previousWeavePoint),1),this.addContentToPreviousWeavePoint=false);},this.AddGeneralRuntimeContent=n=>{if(n!==null)if(this.addContentToPreviousWeavePoint){if(!this.previousWeavePoint||!this.previousWeavePoint.runtimeContainer)throw new Error;this.previousWeavePoint.runtimeContainer.AddContent(n);}else {if(!this.currentContainer)throw new Error;this.currentContainer.AddContent(n);}},this.PassLooseEndsToAncestors=()=>{if(this.looseEnds.length===0)return;let n=null,r=null,a=false;for(let s=this.parent;s!==null;s=s.parent){let o=(0, Ue.asOrNull)(s,i);o&&(!a&&n===null&&(n=o),a&&r===null&&(r=o)),(s instanceof Uo.Sequence||s instanceof ts.Conditional)&&(a=true);}if(!(n===null&&r===null))for(let s=this.looseEnds.length-1;s>=0;s-=1){let o=this.looseEnds[s],l=false;if(a){if(o instanceof He.Choice&&n!==null)n.ReceiveLooseEnd(o),l=true;else if(!(o instanceof He.Choice)){let u=n||r;u!==null&&(u.ReceiveLooseEnd(o),l=true);}}else n?.hasOwnProperty("ReceiveLooseEnd")&&n.ReceiveLooseEnd(o),l=true;l&&this.looseEnds.splice(s,1);}},this.ReceiveLooseEnd=n=>{this.looseEnds.push(n);},this.WeavePointNamed=n=>{if(!this.namedWeavePoints)return null;let r=this.namedWeavePoints.get(n);return r||null},this.IsGlobalDeclaration=n=>{let r=(0, Ue.asOrNull)(n,$m.VariableAssignment);return !!(r&&r.isGlobalDeclaration&&r.isDeclaration||(0, Ue.asOrNull)(n,km.ConstantDeclaration))},this.ContentThatFollowsWeavePoint=n=>{let r=[],a=n;if(a.content!==null)for(let l of a.content)this.IsGlobalDeclaration(l)||r.push(l);let s=(0, Ue.asOrNull)(a.parent,i);if(s===null)throw new Error("Expected weave point parent to be weave?");let o=s.content.indexOf(a);for(let l=o+1;l<s.content.length;l+=1){let u=s.content[l];if(!this.IsGlobalDeclaration(u)){if(u instanceof He.Choice||u instanceof ct.Gather||u instanceof i)break;r.push(u);}}return r},this.ValidateTermination=n=>{if(this.lastParsedSignificantObject instanceof
|
|
16
|
-
`),0),(n||this.isElse&&this.matchingEquality)&&this._contentContainer.InsertContent(rs.ControlCommand.PopEvaluatedValue(),0),t.AddToNamedContentOnly(this._contentContainer),this.returnDivert=new Th.Divert,this._contentContainer.AddContent(this.returnDivert),t},this.GenerateRuntimeForContent=()=>this._innerWeave===null?new _h.Container:this._innerWeave.rootContainer,e&&(this._innerWeave=new Km.Weave(e),this.AddContent(this._innerWeave));}get typeName(){return "ConditionalSingleBranch"}ResolveReferences(e){if(!this._conditionalDivert||!this._contentContainer)throw new Error;this._conditionalDivert.targetPath=this._contentContainer.path,super.ResolveReferences(e);}};ss.ConditionalSingleBranch=Ko;});var Ph=b(as=>{Object.defineProperty(as,"__esModule",{value:true});as.CustomFlags=void 0;var Oh;(function(i){i[i.ParsingString=1]="ParsingString",i[i.TagActive=2]="TagActive";})(Oh||(as.CustomFlags=Oh={}));});var Fh=b(os=>{Object.defineProperty(os,"__esModule",{value:true});os.DebugMetadata=void 0;var Xo=class i{constructor(){this.startLineNumber=0,this.endLineNumber=0,this.startCharacterNumber=0,this.endCharacterNumber=0,this.fileName=null,this.sourceName=null;}Merge(e){let t=new i;return t.fileName=this.fileName,t.sourceName=this.sourceName,this.startLineNumber<e.startLineNumber?(t.startLineNumber=this.startLineNumber,t.startCharacterNumber=this.startCharacterNumber):this.startLineNumber>e.startLineNumber?(t.startLineNumber=e.startLineNumber,t.startCharacterNumber=e.startCharacterNumber):(t.startLineNumber=this.startLineNumber,t.startCharacterNumber=Math.min(this.startCharacterNumber,e.startCharacterNumber)),this.endLineNumber>e.endLineNumber?(t.endLineNumber=this.endLineNumber,t.endCharacterNumber=this.endCharacterNumber):this.endLineNumber<e.endLineNumber?(t.endLineNumber=e.endLineNumber,t.endCharacterNumber=e.endCharacterNumber):(t.endLineNumber=this.endLineNumber,t.endCharacterNumber=Math.max(this.endCharacterNumber,e.endCharacterNumber)),t}toString(){return this.fileName!==null?`line ${this.startLineNumber} of ${this.fileName}"`:"line "+this.startLineNumber}};os.DebugMetadata=Xo;});var Nh=b(ls=>{Object.defineProperty(ls,"__esModule",{value:true});ls.ExternalDeclaration=void 0;var Ym=Z(),Yo=class extends Ym.ParsedObject{get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}constructor(e,t){super(),this.identifier=e,this.argumentNames=t,this.GenerateRuntimeObject=()=>(this.story.AddExternal(this),null);}get typeName(){return "EXTERNAL"}toString(){var e;return `EXTERNAL ${(e=this.identifier)===null||e===void 0?void 0:e.name}`}};ls.ExternalDeclaration=Yo;});var Ih=b(us=>{Object.defineProperty(us,"__esModule",{value:true});us.FlowDecl=void 0;var Qo=class{constructor(e,t,n){this.name=e,this.args=t,this.isFunction=n;}};us.FlowDecl=Qo;});var el=b(hs=>{Object.defineProperty(hs,"__esModule",{value:true});hs.Wrap=void 0;var Qm=Z(),Zo=class extends Qm.ParsedObject{constructor(e){super(),this._objToWrap=e,this.GenerateRuntimeObject=()=>this._objToWrap;}};hs.Wrap=Zo;});var Vh=b(cs=>{Object.defineProperty(cs,"__esModule",{value:true});cs.Glue=void 0;var Zm=el(),tl=class extends Zm.Wrap{constructor(e){super(e);}get typeName(){return "Glue"}};cs.Glue=tl;});var ps=b(ds=>{Object.defineProperty(ds,"__esModule",{value:true});ds.Glue=void 0;var eg=Ie(),nl=class extends eg.InkObject{toString(){return "Glue"}};ds.Glue=nl;});var Rh=b(fs=>{Object.defineProperty(fs,"__esModule",{value:true});fs.IncDecExpression=void 0;var tg=Vr(),kh=$e(),ng=lt(),ig=at(),rg=te(),sg=xt(),ag=Cn(),og=Jt(),il=class extends kh.Expression{constructor(e,t,n){super(),this.varIdentifier=e,this._runtimeAssignment=null,this.expression=null,this.GenerateIntoContainer=r=>{var a,s;r.AddContent(new ag.VariableReference(((a=this.varIdentifier)===null||a===void 0?void 0:a.name)||null)),this.expression?this.expression.GenerateIntoContainer(r):r.AddContent(new rg.IntValue(1)),r.AddContent(ig.NativeFunctionCall.CallWithName(this.isInc?"+":"-")),this._runtimeAssignment=new sg.VariableAssignment(((s=this.varIdentifier)===null||s===void 0?void 0:s.name)||null,false),r.AddContent(this._runtimeAssignment);},this.toString=()=>{var r,a;return this.expression?`${(r=this.varIdentifier)===null||r===void 0?void 0:r.name}${this.isInc?" += ":" -= "}${this.expression}`:`${(a=this.varIdentifier)===null||a===void 0?void 0:a.name}`+(this.isInc?"++":"--")},t instanceof kh.Expression?(this.expression=t,this.AddContent(this.expression),this.isInc=!!n):this.isInc=t;}get typeName(){return "IncDecExpression"}ResolveReferences(e){var t;super.ResolveReferences(e);let n=e.ResolveVariableWithName(((t=this.varIdentifier)===null||t===void 0?void 0:t.name)||"",this);if(n.found||this.Error(`variable for ${this.incrementDecrementWord} could not be found: '${this.varIdentifier}' after searching: {this.descriptionOfScope}`),!this._runtimeAssignment)throw new Error;this._runtimeAssignment.isGlobal=n.isGlobal,!(this.parent instanceof og.Weave)&&!(this.parent instanceof ng.FlowBase)&&!(this.parent instanceof tg.ContentList)&&this.Error(`Can't use ${this.incrementDecrementWord} as sub-expression`);}get incrementDecrementWord(){return this.isInc?"increment":"decrement"}};fs.IncDecExpression=il;});var sl=b(ms=>{Object.defineProperty(ms,"__esModule",{value:true});ms.IncludedFile=void 0;var lg=Z(),rl=class extends lg.ParsedObject{constructor(e){super(),this.includedStory=e,this.GenerateRuntimeObject=()=>null;}get typeName(){return "IncludedFile"}};ms.IncludedFile=rl;});var Lh=b(gs=>{Object.defineProperty(gs,"__esModule",{value:true});gs.InfixOperator=void 0;var al=class{constructor(e,t,n){this.type=e,this.precedence=t,this.requireWhitespace=n,this.toString=()=>this.type;}};gs.InfixOperator=al;});var ll=b(Cs=>{Object.defineProperty(Cs,"__esModule",{value:true});Cs.Knot=void 0;var ug=lt(),Bh=pn(),ol=class extends ug.FlowBase{get flowLevel(){return Bh.FlowLevel.Knot}constructor(e,t,n,r){super(e,t,n,r);}get typeName(){return this.isFunction?"Function":"Knot"}ResolveReferences(e){super.ResolveReferences(e);let t=this.story;for(let n in this.subFlowsByName){let r=t.ContentWithNameAtLevel(n,Bh.FlowLevel.Knot,false);if(r){let a=this.subFlowsByName.get(n),s=`Stitch '${a?a.name:"NO STITCH FOUND"}' has the same name as a knot (on ${r.debugMetadata})`;this.Error(s,a);}}}};Cs.Knot=ol;});var Wh=b(ys=>{Object.defineProperty(ys,"__esModule",{value:true});ys.List=void 0;var hg=$e(),cg=ke(),dg=ke(),pg=te(),ul=class extends hg.Expression{constructor(e){super(),this.itemIdentifierList=e,this.GenerateIntoContainer=t=>{var n,r;let a=new cg.InkList;if(this.itemIdentifierList!=null)for(let s of this.itemIdentifierList){let o=((n=s?.name)===null||n===void 0?void 0:n.split("."))||[],l=null,u="";o.length>1?(l=o[0],u=o[1]):u=o[0];let h=this.story.ResolveListItem(l,u,this);if(h===null)l===null?this.Error(`Could not find list definition that contains item '${s}'`):this.Error(`Could not find list item ${s}`);else {if(h.parent==null){this.Error(`Could not find list definition for item ${s}`);return}l||(l=((r=h.parent.identifier)===null||r===void 0?void 0:r.name)||null);let c=new dg.InkListItem(l,h.name||null);a.has(c.serialized())?this.Warning(`Duplicate of item '${s}' in list.`):a.Add(c,h.seriesValue);}}t.AddContent(new pg.ListValue(a));};}get typeName(){return "List"}};ys.List=ul;});var cl=b(vs=>{Object.defineProperty(vs,"__esModule",{value:true});vs.ListElementDefinition=void 0;var fg=Z(),mg=yt(),hl=class extends fg.ParsedObject{get fullName(){var e;let t=this.parent;if(t===null)throw new Error("Can't get full name without a parent list.");return `${(e=t.identifier)===null||e===void 0?void 0:e.name}.${this.name}`}get typeName(){return "ListElement"}get name(){var e;return ((e=this.indentifier)===null||e===void 0?void 0:e.name)||null}constructor(e,t,n=null){super(),this.indentifier=e,this.inInitialList=t,this.explicitValue=n,this.seriesValue=0,this.parent=null,this.GenerateRuntimeObject=()=>{throw new Error("Not implemented.")},this.toString=()=>this.fullName,this.parent=this.parent;}ResolveReferences(e){super.ResolveReferences(e),e.CheckForNamingCollisions(this,this.indentifier,mg.SymbolType.ListItem);}};vs.ListElementDefinition=hl;});var dl=b(Es=>{Object.defineProperty(Es,"__esModule",{value:true});Es.StatementLevel=void 0;var jh;(function(i){i[i.InnerBlock=0]="InnerBlock",i[i.Stitch=1]="Stitch",i[i.Knot=2]="Knot",i[i.Top=3]="Top";})(jh||(Es.StatementLevel=jh={}));});var fl=b(Ss=>{Object.defineProperty(Ss,"__esModule",{value:true});Ss.Stitch=void 0;var gg=lt(),Cg=pn(),pl=class extends gg.FlowBase{get flowLevel(){return Cg.FlowLevel.Stitch}constructor(e,t,n,r){super(e,t,n,r),this.baseToString=this.toString,this.toString=()=>`${this.parent!==null?this.parent+" > ":""}${this.baseToString()}`;}get typeName(){return "Stitch"}};Ss.Stitch=pl;});var bs=b(Ds=>{Object.defineProperty(Ds,"__esModule",{value:true});Ds.Tag=void 0;var yg=Ie(),ml=class extends yg.InkObject{constructor(e){super(),this.text=e.toString()||"";}toString(){return "# "+this.text}};Ds.Tag=ml;});var Cl=b(As=>{Object.defineProperty(As,"__esModule",{value:true});As.Choice=void 0;var vg=Ne(),Eg=me(),Sg=Ie(),gl=class i extends Sg.InkObject{constructor(){super(...arguments),this.text="",this.index=0,this.threadAtGeneration=null,this.sourcePath="",this.targetPath=null,this.isInvisibleDefault=false,this.tags=null,this.originalThreadIndex=0;}get pathStringOnChoice(){return this.targetPath===null?(0, Eg.throwNullException)("Choice.targetPath"):this.targetPath.toString()}set pathStringOnChoice(e){this.targetPath=new vg.Path(e);}Clone(){let e=new i;return e.text=this.text,e.sourcePath=this.sourcePath,e.index=this.index,e.targetPath=this.targetPath,e.originalThreadIndex=this.originalThreadIndex,e.isInvisibleDefault=this.isInvisibleDefault,this.threadAtGeneration!==null&&(e.threadAtGeneration=this.threadAtGeneration.Copy()),e}};As.Choice=gl;});var vl=b(ws=>{Object.defineProperty(ws,"__esModule",{value:true});ws.ListDefinitionsOrigin=void 0;var Dg=ke(),bg=te(),Ag=me(),yl=class{constructor(e){this._lists=new Map,this._allUnambiguousListValueCache=new Map;for(let t of e){this._lists.set(t.name,t);for(let[n,r]of t.items){let a=Dg.InkListItem.fromSerializedKey(n),s=new bg.ListValue(a,r);if(!a.itemName)throw new Error("item.itemName is null or undefined.");this._allUnambiguousListValueCache.set(a.itemName,s),this._allUnambiguousListValueCache.set(a.fullName,s);}}}get lists(){let e=[];for(let[,t]of this._lists)e.push(t);return e}TryListGetDefinition(e,t){if(e===null)return {result:t,exists:false};let n=this._lists.get(e);return n?{result:n,exists:true}:{result:t,exists:false}}FindSingleItemListWithName(e){if(e===null)return (0, Ag.throwNullException)("name");let t=this._allUnambiguousListValueCache.get(e);return typeof t<"u"?t:null}};ws.ListDefinitionsOrigin=yl;});var En=b(Os=>{Object.defineProperty(Os,"__esModule",{value:true});Os.JsonSerialisation=void 0;var xs=se(),Le=te(),qh=ps(),M=ge(),vn=Mt(),Mh=ot(),Gh=ar(),El=Cn(),$h=xt(),Sl=at(),Jh=qt(),Hh=bs(),wg=Ne(),Uh=Cl(),xg=Go(),_g=vl(),_s=ke(),ae=U(),Ht=me(),Ts=class i{static JArrayToRuntimeObjList(e,t=false){let n=e.length;t&&n--;let r=[];for(let a=0;a<n;a++){let s=e[a],o=this.JTokenToRuntimeObject(s);if(o===null)return (0, Ht.throwNullException)("runtimeObj");r.push(o);}return r}static WriteDictionaryRuntimeObjs(e,t){e.WriteObjectStart();for(let[n,r]of t)e.WritePropertyStart(n),this.WriteRuntimeObject(e,r),e.WritePropertyEnd();e.WriteObjectEnd();}static WriteListRuntimeObjs(e,t){e.WriteArrayStart();for(let n of t)this.WriteRuntimeObject(e,n);e.WriteArrayEnd();}static WriteIntDictionary(e,t){e.WriteObjectStart();for(let[n,r]of t)e.WriteIntProperty(n,r);e.WriteObjectEnd();}static WriteRuntimeObject(e,t){let n=(0, ae.asOrNull)(t,xs.Container);if(n){this.WriteRuntimeContainer(e,n);return}let r=(0, ae.asOrNull)(t,Mh.Divert);if(r){let m="->";r.isExternal?m="x()":r.pushesToStack&&(r.stackPushType==vn.PushPopType.Function?m="f()":r.stackPushType==vn.PushPopType.Tunnel&&(m="->t->"));let E;r.hasVariableTarget?E=r.variableDivertName:E=r.targetPathString,e.WriteObjectStart(),e.WriteProperty(m,E),r.hasVariableTarget&&e.WriteProperty("var",true),r.isConditional&&e.WriteProperty("c",true),r.externalArgs>0&&e.WriteIntProperty("exArgs",r.externalArgs),e.WriteObjectEnd();return}let a=(0, ae.asOrNull)(t,Gh.ChoicePoint);if(a){e.WriteObjectStart(),e.WriteProperty("*",a.pathStringOnChoice),e.WriteIntProperty("flg",a.flags),e.WriteObjectEnd();return}let s=(0, ae.asOrNull)(t,Le.BoolValue);if(s){e.WriteBool(s.value);return}let o=(0, ae.asOrNull)(t,Le.IntValue);if(o){e.WriteInt(o.value);return}let l=(0, ae.asOrNull)(t,Le.FloatValue);if(l){e.WriteFloat(l.value);return}let u=(0, ae.asOrNull)(t,Le.StringValue);if(u){u.isNewline?e.Write(`
|
|
17
|
-
`,false):(e.WriteStringStart(),e.WriteStringInner("^"),e.WriteStringInner(u.value),e.WriteStringEnd());return}let h=(0, ae.asOrNull)(t,Le.ListValue);if(h){this.WriteInkList(e,h);return}let c=(0, ae.asOrNull)(t,Le.DivertTargetValue);if(c){if(e.WriteObjectStart(),c.value===null)return (0, Ht.throwNullException)("divTargetVal.value");e.WriteProperty("^->",c.value.componentsString),e.WriteObjectEnd();return}let d=(0, ae.asOrNull)(t,Le.VariablePointerValue);if(d){e.WriteObjectStart(),e.WriteProperty("^var",d.value),e.WriteIntProperty("ci",d.contextIndex),e.WriteObjectEnd();return}if((0, ae.asOrNull)(t,
|
|
14
|
+
`.repeat(this.lineIndex-e):null};}PreProcessInputString(e){return e}};yr.CommentEliminator=oo;});var Er=A(vr=>{Object.defineProperty(vr,"__esModule",{value:true});vr.Conditional=void 0;var rf=se(),ch=ge(),sf=Z(),lo=class extends sf.ParsedObject{constructor(e,t){super(),this.initialCondition=e,this.branches=t,this._reJoinTarget=null,this.GenerateRuntimeObject=()=>{let n=new rf.Container;this.initialCondition&&n.AddContent(this.initialCondition.runtimeObject);for(let r of this.branches){let a=r.runtimeObject;n.AddContent(a);}return this.initialCondition!==null&&this.branches[0].ownExpression!==null&&!this.branches[this.branches.length-1].isElse&&n.AddContent(ch.ControlCommand.PopEvaluatedValue()),this._reJoinTarget=ch.ControlCommand.NoOp(),n.AddContent(this._reJoinTarget),n},this.initialCondition&&this.AddContent(this.initialCondition),this.branches!==null&&this.AddContent(this.branches);}get typeName(){return "Conditional"}ResolveReferences(e){let t=this._reJoinTarget.path;for(let n of this.branches){if(!n.returnDivert)throw new Error;n.returnDivert.targetPath=t;}super.ResolveReferences(e);}};vr.Conditional=lo;});var Tt=A(Sr=>{Object.defineProperty(Sr,"__esModule",{value:true});Sr.Text=void 0;var af=Z(),of=te(),uo=class extends af.ParsedObject{constructor(e){super(),this.text=e,this.GenerateRuntimeObject=()=>new of.StringValue(this.text),this.toString=()=>this.text;}get typeName(){return "Text"}};Sr.Text=uo;});var br=A(Dr=>{Object.defineProperty(Dr,"__esModule",{value:true});Dr.ConstantDeclaration=void 0;var lf=Z(),uf=yt(),ho=class extends lf.ParsedObject{get constantName(){var e;return (e=this.constantIdentifier)===null||e===void 0?void 0:e.name}get expression(){if(!this._expression)throw new Error;return this._expression}constructor(e,t){super(),this._expression=null,this.GenerateRuntimeObject=()=>null,this.constantIdentifier=e,t&&(this._expression=this.AddContent(t));}get typeName(){return "CONST"}ResolveReferences(e){super.ResolveReferences(e),e.CheckForNamingCollisions(this,this.constantIdentifier,uf.SymbolType.Var);}};Dr.ConstantDeclaration=ho;});var pn=A(Ar=>{Object.defineProperty(Ar,"__esModule",{value:true});Ar.FlowLevel=void 0;var dh;(function(i){i[i.Story=0]="Story",i[i.Knot=1]="Knot",i[i.Stitch=2]="Stitch",i[i.WeavePoint=3]="WeavePoint";})(dh||(Ar.FlowLevel=dh={}));});var Kn=A(wr=>{Object.defineProperty(wr,"__esModule",{value:true});wr.Gather=void 0;var hf=se(),cf=Z(),df=yt(),co=class extends cf.ParsedObject{get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}get runtimeContainer(){return this.runtimeObject}constructor(e,t){super(),this.indentationDepth=t,this.GenerateRuntimeObject=()=>{let n=new hf.Container;if(n.name=this.name,this.story.countAllVisits&&(n.visitsShouldBeCounted=true),n.countingAtStartOnly=true,this.content)for(let r of this.content)n.AddContent(r.runtimeObject);return n},this.toString=()=>{var n,r;return `- ${!((n=this.identifier)===null||n===void 0)&&n.name?"("+((r=this.identifier)===null||r===void 0?void 0:r.name)+")":"gather"}`},e&&(this.identifier=e);}get typeName(){return "Gather"}ResolveReferences(e){super.ResolveReferences(e),this.identifier&&(this.identifier.name||"").length>0&&e.CheckForNamingCollisions(this,this.identifier,df.SymbolType.SubFlowAndWeave);}};wr.Gather=co;});var $t=A(_r=>{Object.defineProperty(_r,"__esModule",{value:true});_r.Path=void 0;var xr=U(),ph=lt(),fn=pn(),pf=Jt(),po=class{get baseTargetLevel(){return this.baseLevelIsAmbiguous?fn.FlowLevel.Story:this._baseTargetLevel}get baseLevelIsAmbiguous(){return !this._baseTargetLevel}get firstComponent(){return this.components==null||!this.components.length?null:this.components[0].name}get numberOfComponents(){return this.components?this.components.length:0}get dotSeparatedComponents(){return this._dotSeparatedComponents==null&&(this._dotSeparatedComponents=(this.components?this.components:[]).map(e=>e.name).filter(xr.filterUndef).join(".")),this._dotSeparatedComponents}constructor(e,t){this._dotSeparatedComponents=null,this.toString=()=>this.components===null||this.components.length===0?this.baseTargetLevel===fn.FlowLevel.WeavePoint?"-> <next gather point>":"<invalid Path>":`-> ${this.dotSeparatedComponents}`,this.ResolveFromContext=n=>{if(this.components==null||this.components.length==0)return null;let r=this.ResolveBaseTarget(n);return r===null?null:this.components.length>1?this.ResolveTailComponents(r):r},this.ResolveBaseTarget=n=>{let r=this.firstComponent,a=n;for(;a;){let s=a===n,o=this.GetChildFromContext(a,r,null,s);if(o)return o;a=a.parent;}return null},this.ResolveTailComponents=n=>{let r=n;if(!this.components)return null;for(let a=1;a<this.components.length;++a){let s=this.components[a].name,o,l=(0, xr.asOrNull)(r,ph.FlowBase);if(l!==null?o=l.flowLevel+1:o=fn.FlowLevel.WeavePoint,r=this.GetChildFromContext(r,s,o),r===null)break}return r},this.GetChildFromContext=(n,r,a,s=false)=>{let o=a===null,l=(0, xr.asOrNull)(n,pf.Weave);if(r&&l!==null&&(o||a===fn.FlowLevel.WeavePoint))return l.WeavePointNamed(r);let u=(0, xr.asOrNull)(n,ph.FlowBase);if(r&&u!==null){let h=s||u.flowLevel===fn.FlowLevel.Knot;return u.ContentWithNameAtLevel(r,a,h)}return null},Object.values(fn.FlowLevel).includes(e)?(this._baseTargetLevel=e,this.components=t||[]):Array.isArray(e)?(this._baseTargetLevel=null,this.components=e||[]):(this._baseTargetLevel=null,this.components=[e]);}get typeName(){return "Path"}};_r.Path=po;});var go=A(Tr=>{Object.defineProperty(Tr,"__esModule",{value:true});Tr.ReturnType=void 0;var ff=Z(),mf=se(),fo=ge(),gf=qt(),mo=class extends ff.ParsedObject{constructor(e=null){super(),this.returnedExpression=null,this.GenerateRuntimeObject=()=>{let t=new mf.Container;return this.returnedExpression?t.AddContent(this.returnedExpression.runtimeObject):(t.AddContent(fo.ControlCommand.EvalStart()),t.AddContent(new gf.Void),t.AddContent(fo.ControlCommand.EvalEnd())),t.AddContent(fo.ControlCommand.PopFunction()),t},e&&(this.returnedExpression=this.AddContent(e));}get typeName(){return "ReturnType"}};Tr.ReturnType=mo;});var Xn=A(Or=>{Object.defineProperty(Or,"__esModule",{value:true});Or.ClosestFlowBase=void 0;function Cf(i){let e=i.parent;for(;e;){if(e.hasOwnProperty("iamFlowbase")&&e.iamFlowbase())return e;e=e.parent;}return null}Or.ClosestFlowBase=Cf;});var Fr=A(Pr=>{Object.defineProperty(Pr,"__esModule",{value:true});Pr.Identifier=void 0;var Co=class i{constructor(e){this.debugMetadata=null,this.toString=()=>this.name||"undefined identifer",this.name=e;}get typeName(){return "Identifier"}static Done(){return new i("DONE")}};Pr.Identifier=Co;});var lt=A(Nr=>{Object.defineProperty(Nr,"__esModule",{value:true});Nr.FlowBase=void 0;var yf=dn(),yo=gn(),vf=mn(),ut=pn(),Ef=Kn(),Sf=Z(),Df=$t(),bf=go(),Af=se(),wf=ot(),xf=xt(),vo=yt(),_f=Jt(),Tf=Xn(),Of=Fr(),fh=U(),Eo=class i extends Sf.ParsedObject{get hasParameters(){return this.args!==null&&this.args.length>0}get subFlowsByName(){return this._subFlowsByName}get typeName(){return this.isFunction?"Function":String(this.flowLevel)}get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}constructor(e,t=null,n=null,r=false,a=false){super(),this.isFunction=r,this._rootWeave=null,this._subFlowsByName=new Map,this._startingSubFlowDivert=null,this._startingSubFlowRuntime=null,this._firstChildFlow=null,this.variableDeclarations=new Map,this.identifier=null,this.args=null,this.iamFlowbase=()=>true,this.SplitWeaveAndSubFlowContent=(s,o)=>{var l,u;let h=[],c=[];this._subFlowsByName=new Map;for(let f of s){let y=(0, fh.asOrNull)(f,i);y?(this._firstChildFlow===null&&(this._firstChildFlow=y),c.push(f),!((l=y.identifier)===null||l===void 0)&&l.name&&this._subFlowsByName.set((u=y.identifier)===null||u===void 0?void 0:u.name,y)):h.push(f);}o&&h.push(new Ef.Gather(null,1),new yo.Divert(new Df.Path(Of.Identifier.Done())));let d=[];return h.length>0&&(this._rootWeave=new _f.Weave(h,0),d.push(this._rootWeave)),c.length>0&&d.push(...c),d},this.ResolveVariableWithName=(s,o)=>{var l;let u={},h=o===null?this:(0, Tf.ClosestFlowBase)(o);if(h){if(h.args!==null){for(let c of h.args)if(((l=c.identifier)===null||l===void 0?void 0:l.name)===s)return u.found=true,u.isArgument=true,u.ownerFlow=h,u}if(h!==this.story&&h.variableDeclarations.has(s))return u.found=true,u.ownerFlow=h,u.isTemporary=true,u}return this.story.variableDeclarations.has(s)?(u.found=true,u.ownerFlow=this.story,u.isGlobal=true,u):(u.found=false,u)},this.AddNewVariableDeclaration=s=>{let o=s.variableName;if(this.variableDeclarations.has(o)){let l=this.variableDeclarations.get(o),u="";l.debugMetadata&&(u=` (${l.debugMetadata})`),this.Error(`found declaration variable '${o}' that was already declared${u}`,s,false);return}this.variableDeclarations.set(s.variableName,s);},this.ResolveWeavePointNaming=()=>{this._rootWeave&&this._rootWeave.ResolveWeavePointNaming();for(let[,s]of this._subFlowsByName)s.hasOwnProperty("ResolveWeavePointNaming")&&s.ResolveWeavePointNaming();},this.GenerateRuntimeObject=()=>{var s;let o=null;this.isFunction?this.CheckForDisallowedFunctionFlowControl():(this.flowLevel===ut.FlowLevel.Knot||this.flowLevel===ut.FlowLevel.Stitch)&&(o=this.Find(bf.ReturnType)(),o!==null&&this.Error(`Return statements can only be used in knots that are declared as functions: == function ${this.identifier} ==`,o));let l=new Af.Container;l.name=(s=this.identifier)===null||s===void 0?void 0:s.name,this.story.countAllVisits&&(l.visitsShouldBeCounted=true),this.GenerateArgumentVariableAssignments(l);let u=0;for(;this.content!==null&&u<this.content.length;){let h=this.content[u];if(h instanceof i){let c=h,d=c.runtimeObject;u===0&&!c.hasParameters&&this.flowLevel===ut.FlowLevel.Knot&&(this._startingSubFlowDivert=new wf.Divert,l.AddContent(this._startingSubFlowDivert),this._startingSubFlowRuntime=d);let f=d,y=l.namedContent.get(f.name)||null;if(y){let v=`${this.GetType()} already contains flow named '${f.name}' (at ${y.debugMetadata})`;this.Error(v,c);}l.AddToNamedContentOnly(f);}else h&&l.AddContent(h.runtimeObject);u+=1;}return this.flowLevel!==ut.FlowLevel.Story&&!this.isFunction&&this._rootWeave!==null&&o===null&&this._rootWeave.ValidateTermination(this.WarningInTermination),l},this.GenerateArgumentVariableAssignments=s=>{var o;if(!(this.args===null||this.args.length===0))for(let l=this.args.length-1;l>=0;--l){let u=((o=this.args[l].identifier)===null||o===void 0?void 0:o.name)||null,h=new xf.VariableAssignment(u,true);s.AddContent(h);}},this.ContentWithNameAtLevel=(s,o=null,l=false)=>{var u;if((o===this.flowLevel||o===null)&&s===((u=this.identifier)===null||u===void 0?void 0:u.name))return this;if(o===ut.FlowLevel.WeavePoint||o===null){let c=null;if(this._rootWeave&&(c=this._rootWeave.WeavePointNamed(s),c))return c;if(o===ut.FlowLevel.WeavePoint)return l?this.DeepSearchForAnyLevelContent(s):null}if(o!==null&&o<this.flowLevel)return null;let h=this._subFlowsByName.get(s)||null;return h&&(o===null||o===h.flowLevel)?h:l?this.DeepSearchForAnyLevelContent(s):null},this.DeepSearchForAnyLevelContent=s=>{let o=this.ContentWithNameAtLevel(s,ut.FlowLevel.WeavePoint,false);if(o)return o;for(let[,l]of this._subFlowsByName){let u=l.ContentWithNameAtLevel(s,null,true);if(u)return u}return null},this.CheckForDisallowedFunctionFlowControl=()=>{this.flowLevel!==ut.FlowLevel.Knot&&this.Error("Functions cannot be stitches - i.e. they should be defined as '== function myFunc ==' rather than internal to another knot.");for(let[l,u]of this._subFlowsByName)this.Error(`Functions may not contain stitches, but saw '${l}' within the function '${this.identifier}'`,u);if(!this._rootWeave)throw new Error;let s=this._rootWeave.FindAll(yo.Divert)();for(let l of s)!l.isFunctionCall&&!(l.parent instanceof vf.DivertTarget)&&this.Error(`Functions may not contain diverts, but saw '${l}'`,l);let o=this._rootWeave.FindAll(yf.Choice)();for(let l of o)this.Error(`Functions may not contain choices, but saw '${l}'`,l);},this.WarningInTermination=s=>{let o="Apparent loose end exists where the flow runs out. Do you need a '-> DONE' statement, choice or divert?";s.parent===this._rootWeave&&this._firstChildFlow&&(o=`${o} Note that if you intend to enter '${this._firstChildFlow.identifier}' next, you need to divert to it explicitly.`);let l=(0, fh.asOrNull)(s,yo.Divert);l&&l.isTunnel&&(o+=` When final tunnel to '${l.target} ->' returns it won't have anywhere to go.`),this.Warning(o,s);},this.toString=()=>`${this.typeName} '${this.identifier}'`,this.identifier=e,this.args=n,t===null&&(t=[]),this.PreProcessTopLevelObjects(t),t=this.SplitWeaveAndSubFlowContent(t,this.GetType()=="Story"&&!a),this.AddContent(t);}PreProcessTopLevelObjects(e){}ResolveReferences(e){var t,n;if(this._startingSubFlowDivert){if(!this._startingSubFlowRuntime)throw new Error;this._startingSubFlowDivert.targetPath=this._startingSubFlowRuntime.path;}if(super.ResolveReferences(e),this.args!==null){for(let r of this.args)e.CheckForNamingCollisions(this,r.identifier,vo.SymbolType.Arg,"argument");for(let r=0;r<this.args.length;r+=1)for(let a=r+1;a<this.args.length;a+=1)((t=this.args[r].identifier)===null||t===void 0?void 0:t.name)==((n=this.args[a].identifier)===null||n===void 0?void 0:n.name)&&this.Error(`Multiple arguments with the same name: '${this.args[r].identifier}'`);}if(this.flowLevel!==ut.FlowLevel.Story){let r=this.flowLevel===ut.FlowLevel.Knot?vo.SymbolType.Knot:vo.SymbolType.SubFlowAndWeave;e.CheckForNamingCollisions(this,this.identifier,r);}}};Nr.FlowBase=Eo;});var Vr=A(Ir=>{Object.defineProperty(Ir,"__esModule",{value:true});Ir.ContentList=void 0;var Pf=se(),Ff=Z(),Nf=Tt(),If=U(),So=class extends Ff.ParsedObject{get runtimeContainer(){return this.runtimeObject}constructor(e,...t){super(),this.dontFlatten=false,this.TrimTrailingWhitespace=()=>{for(let n=this.content.length-1;n>=0;--n){let r=(0, If.asOrNull)(this.content[n],Nf.Text);if(r===null)break;if(r.text=r.text.replace(new RegExp(/[ \t]/g),""),r.text.length===0)this.content.splice(n,1);else break}},this.GenerateRuntimeObject=()=>{let n=new Pf.Container;if(this.content!==null)for(let r of this.content){let a=r.runtimeObject;a&&n.AddContent(a);}return this.dontFlatten&&this.story.DontFlattenContainer(n),n},this.toString=()=>`ContentList(${this.content.join(", ")})`,e&&this.AddContent(e),t&&this.AddContent(t);}get typeName(){return "ContentList"}};Ir.ContentList=So;});var Cn=A(kr=>{Object.defineProperty(kr,"__esModule",{value:true});kr.VariableReference=void 0;var Vf=Ie(),kf=Ne(),Do=class extends Vf.InkObject{get containerForCount(){return this.pathForCount===null?null:this.ResolvePath(this.pathForCount).container}get pathStringForCount(){return this.pathForCount===null?null:this.CompactPathString(this.pathForCount)}set pathStringForCount(e){e===null?this.pathForCount=null:this.pathForCount=new kf.Path(e);}constructor(e=null){super(),this.pathForCount=null,this.name=e;}toString(){return this.name!=null?"var("+this.name+")":"read_count("+this.pathStringForCount+")"}};kr.VariableReference=Do;});var yn=A(Rr=>{Object.defineProperty(Rr,"__esModule",{value:true});Rr.VariableReference=void 0;var Rf=Vr(),Lf=$e(),mh=lt(),Bf=$t(),Wf=Cn(),jf=Jt(),qf=Fr(),gh=U(),bo=class extends Lf.Expression{get name(){return this.path.join(".")}get path(){return this.pathIdentifiers.map(e=>e.name).filter(gh.filterUndef)}get identifier(){if(!this.pathIdentifiers||this.pathIdentifiers.length==0)return null;let e=this.path.join(".");return new qf.Identifier(e)}get runtimeVarRef(){return this._runtimeVarRef}constructor(e){super(),this.pathIdentifiers=e,this._runtimeVarRef=null,this.isConstantReference=false,this.isListItemReference=false,this.GenerateIntoContainer=t=>{let n=this.story.constants.get(this.name);if(n){n.GenerateConstantIntoContainer(t),this.isConstantReference=true;return}if(this._runtimeVarRef=new Wf.VariableReference(this.name),this.path.length===1||this.path.length===2){let r="",a="";this.path.length===1?r=this.path[0]:(a=this.path[0],r=this.path[1]),this.story.ResolveListItem(a,r,this)&&(this.isListItemReference=true);}t.AddContent(this._runtimeVarRef);},this.toString=()=>`{${this.path.join(".")}}`;}get typeName(){return "ref"}ResolveReferences(e){if(super.ResolveReferences(e),this.isConstantReference||this.isListItemReference)return;let t=new Bf.Path(this.pathIdentifiers),n=t.ResolveFromContext(this);if(n){if(!n.containerForCounting)throw new Error;if(n.containerForCounting.visitsShouldBeCounted=true,this._runtimeVarRef===null)return;this._runtimeVarRef.pathForCount=n.runtimePath,this._runtimeVarRef.name=null;let r=(0, gh.asOrNull)(n,mh.FlowBase);r&&r.isFunction&&(this.parent instanceof jf.Weave||this.parent instanceof Rf.ContentList||this.parent instanceof mh.FlowBase)&&this.Warning(`'${r.identifier}' being used as read count rather than being called as function. Perhaps you intended to write ${r.identifier}()`);return}if(this.path.length>1){let r=`Could not find target for read count: ${t}`;this.path.length<=2&&(r+=`, or couldn't find list item with the name ${this.path.join(",")}`),this.Error(r);return}e.ResolveVariableWithName(this.name,this).found||this.Error(`Unresolved variable: ${this.name}`,this);}};Rr.VariableReference=bo;});var Yn=A(jr=>{Object.defineProperty(jr,"__esModule",{value:true});jr.FunctionCall=void 0;var ht=ge(),Mf=gn(),Gf=mn(),$f=$e(),Jf=ke(),Hf=te(),Br=at(),Ch=er(),Uf=$t(),zf=te(),Kf=yn(),Lr=U(),Wr=class i extends $f.Expression{get proxyDivert(){return this._proxyDivert}get name(){return this._proxyDivert.target.firstComponent||""}get args(){return this._proxyDivert.args}get runtimeDivert(){return this._proxyDivert.runtimeDivert}get isChoiceCount(){return this.name==="CHOICE_COUNT"}get isTurns(){return this.name==="TURNS"}get isTurnsSince(){return this.name==="TURNS_SINCE"}get isRandom(){return this.name==="RANDOM"}get isSeedRandom(){return this.name==="SEED_RANDOM"}get isListRange(){return this.name==="LIST_RANGE"}get isListRandom(){return this.name==="LIST_RANDOM"}get isReadCount(){return this.name==="READ_COUNT"}constructor(e,t){super(),this._divertTargetToCount=null,this._variableReferenceToCount=null,this.shouldPopReturnedValue=false,this.GenerateIntoContainer=n=>{let r=this.story.ResolveList(this.name),a=false;if(this.isChoiceCount)this.args.length>0&&this.Error("The CHOICE_COUNT() function shouldn't take any arguments"),n.AddContent(ht.ControlCommand.ChoiceCount());else if(this.isTurns)this.args.length>0&&this.Error("The TURNS() function shouldn't take any arguments"),n.AddContent(ht.ControlCommand.Turns());else if(this.isTurnsSince||this.isReadCount){let s=(0, Lr.asOrNull)(this.args[0],Gf.DivertTarget),o=(0, Lr.asOrNull)(this.args[0],Kf.VariableReference);if(this.args.length!==1||s===null&&o===null){this.Error(`The ${this.name}() function should take one argument: a divert target to the target knot, stitch, gather or choice you want to check. e.g. TURNS_SINCE(-> myKnot)`);return}s?(this._divertTargetToCount=s,this.AddContent(this._divertTargetToCount),this._divertTargetToCount.GenerateIntoContainer(n)):o&&(this._variableReferenceToCount=o,this.AddContent(this._variableReferenceToCount),this._variableReferenceToCount.GenerateIntoContainer(n)),this.isTurnsSince?n.AddContent(ht.ControlCommand.TurnsSince()):n.AddContent(ht.ControlCommand.ReadCount());}else if(this.isRandom){this.args.length!==2&&this.Error("RANDOM should take 2 parameters: a minimum and a maximum integer");for(let s=0;s<this.args.length;s+=1){let o=(0, Lr.asOrNull)(this.args[s],Ch.NumberExpression);if(o&&!o.isInt()){let l=s===0?"minimum":"maximum";this.Error(`RANDOM's ${l} parameter should be an integer`);}this.args[s].GenerateIntoContainer(n);}n.AddContent(ht.ControlCommand.Random());}else if(this.isSeedRandom){this.args.length!==1&&this.Error("SEED_RANDOM should take 1 parameter - an integer seed");let s=(0, Lr.asOrNull)(this.args[0],Ch.NumberExpression);s&&!s.isInt()&&this.Error("SEED_RANDOM's parameter should be an integer seed"),this.args[0].GenerateIntoContainer(n),n.AddContent(ht.ControlCommand.SeedRandom());}else if(this.isListRange){this.args.length!==3&&this.Error("LIST_RANGE should take 3 parameters - a list, a min and a max");for(let s=0;s<this.args.length;s+=1)this.args[s].GenerateIntoContainer(n);n.AddContent(ht.ControlCommand.ListRange());}else if(this.isListRandom)this.args.length!==1&&this.Error("LIST_RANDOM should take 1 parameter - a list"),this.args[0].GenerateIntoContainer(n),n.AddContent(ht.ControlCommand.ListRandom());else if(Br.NativeFunctionCall.CallExistsWithName(this.name)){let s=Br.NativeFunctionCall.CallWithName(this.name);if(s.numberOfParameters!==this.args.length){let o=`${i.name} should take ${s.numberOfParameters} parameter`;s.numberOfParameters>1&&(o+="s"),this.Error(o);}for(let o=0;o<this.args.length;o+=1)this.args[o].GenerateIntoContainer(n);n.AddContent(Br.NativeFunctionCall.CallWithName(this.name));}else if(r!==null)if(this.args.length>1&&this.Error("Can currently only construct a list from one integer (or an empty list from a given list definition)"),this.args.length===1)n.AddContent(new zf.StringValue(this.name)),this.args[0].GenerateIntoContainer(n),n.AddContent(ht.ControlCommand.ListFromInt());else {let s=new Jf.InkList;s.SetInitialOriginName(this.name),n.AddContent(new Hf.ListValue(s));}else n.AddContent(this._proxyDivert.runtimeObject),a=true;a||this.content.splice(this.content.indexOf(this._proxyDivert),1),this.shouldPopReturnedValue&&n.AddContent(ht.ControlCommand.PopEvaluatedValue());},this.toString=()=>{let n=this.args.join(", ");return `${this.name}(${n})`},this._proxyDivert=new Mf.Divert(new Uf.Path(e),t),this._proxyDivert.isFunctionCall=true,this.AddContent(this._proxyDivert);}get typeName(){return "FunctionCall"}ResolveReferences(e){if(super.ResolveReferences(e),!this.content.includes(this._proxyDivert)&&this.args!==null)for(let t of this.args)t.ResolveReferences(e);if(this._divertTargetToCount){let t=this._divertTargetToCount.divert,n=t.runtimeDivert.variableDivertName!=null;if(n){this.Error(`When getting the TURNS_SINCE() of a variable target, remove the '->' - i.e. it should just be TURNS_SINCE(${t.runtimeDivert.variableDivertName})`);return}let r=t.targetContent;if(r===null)n||this.Error(`Failed to find target for TURNS_SINCE: '${t.target}'`);else {if(!r.containerForCounting)throw new Error;r.containerForCounting.turnIndexShouldBeCounted=true;}}else if(this._variableReferenceToCount){let t=this._variableReferenceToCount.runtimeVarRef;if(!t)throw new Error;t.pathForCount!==null&&this.Error(`Should be '${i.name}'(-> '${this._variableReferenceToCount.name}). Usage without the '->' only makes sense for variable targets.`);}}};jr.FunctionCall=Wr;Wr.IsBuiltIn=i=>Br.NativeFunctionCall.CallExistsWithName(i)?true:i==="CHOICE_COUNT"||i==="TURNS_SINCE"||i==="TURNS"||i==="RANDOM"||i==="SEED_RANDOM"||i==="LIST_VALUE"||i==="LIST_RANDOM"||i==="READ_COUNT";});var wo=A(qr=>{Object.defineProperty(qr,"__esModule",{value:true});qr.MultipleConditionExpression=void 0;var Xf=$e(),Yf=at(),Ao=class extends Xf.Expression{get subExpressions(){return this.content}constructor(e){super(),this.GenerateIntoContainer=t=>{let n=true;for(let r of this.subExpressions)r.GenerateIntoContainer(t),n||t.AddContent(Yf.NativeFunctionCall.CallWithName("&&")),n=false;},this.AddContent(e);}get typeName(){return "MultipleConditionExpression"}};qr.MultipleConditionExpression=Ao;});var mn=A(Mr=>{Object.defineProperty(Mr,"__esModule",{value:true});Mr.DivertTarget=void 0;var Qf=za(),Zf=dn(),em=Er(),tm=Oo(),nm=te(),xo=$e(),im=lt(),yh=Yn(),rm=wo(),vh=yn(),_o=U(),To=class i extends xo.Expression{get runtimeDivert(){if(!this._runtimeDivert)throw new Error;return this._runtimeDivert}get runtimeDivertTargetValue(){if(!this._runtimeDivertTargetValue)throw new Error;return this._runtimeDivertTargetValue}constructor(e){super(),this._runtimeDivert=null,this._runtimeDivertTargetValue=null,this.GenerateIntoContainer=t=>{this.divert.GenerateRuntimeObject(),this._runtimeDivert=this.divert.runtimeDivert,this._runtimeDivertTargetValue=new nm.DivertTargetValue,t.AddContent(this.runtimeDivertTargetValue);},this.Equals=t=>{let n=(0, _o.asOrNull)(t,i);if(!n||!this.divert.target||!n.divert.target)return false;let r=this.divert.target.dotSeparatedComponents,a=n.divert.target.dotSeparatedComponents;return r===a},this.divert=this.AddContent(e);}get typeName(){return "DivertTarget"}ResolveReferences(e){if(super.ResolveReferences(e),this.divert.isDone||this.divert.isEnd){this.Error("Can't use -> DONE or -> END as variable divert targets",this);return}let t=this;for(;t&&t instanceof xo.Expression;){let r=false,a=false,s=t.parent;if(s instanceof Qf.BinaryExpression){let o=s;o.opName!=="=="&&o.opName!=="!="?r=true:(o.leftExpression instanceof i||o.leftExpression instanceof vh.VariableReference)&&(o.rightExpression instanceof i||o.rightExpression instanceof vh.VariableReference)||(r=true),a=true;}else if(s instanceof yh.FunctionCall){let o=s;!o.isTurnsSince&&!o.isReadCount&&(r=true),a=true;}else (s instanceof xo.Expression||s instanceof rm.MultipleConditionExpression||s instanceof Zf.Choice&&s.condition===t||s instanceof em.Conditional||s instanceof tm.ConditionalSingleBranch)&&(r=true,a=true);if(r&&this.Error(`Can't use a divert target like that. Did you intend to call '${this.divert.target}' as a function: likeThis(), or check the read count: likeThis, with no arrows?`,this),a)break;t=s;}if(this.runtimeDivert.hasVariableTarget){if(!this.divert.target)throw new Error;this.Error(`Since '${this.divert.target.dotSeparatedComponents}' is a variable, it shouldn't be preceded by '->' here.`);}this.runtimeDivert.targetPath&&(this.runtimeDivertTargetValue.targetPath=this.runtimeDivert.targetPath);let n=this.divert.targetContent;if(n!==null){let r=n.containerForCounting;if(r!==null){let s=(0, _o.asOrNull)(this.parent,yh.FunctionCall);s&&s.isTurnsSince||(r.visitsShouldBeCounted=true),r.turnIndexShouldBeCounted=true;}let a=(0, _o.asOrNull)(n,im.FlowBase);if(a!=null&&a.args!==null)for(let s of a.args)s.isByReference&&this.Error(`Can't store a divert target to a knot or function that has by-reference arguments ('${a.identifier}' has 'ref ${s.identifier}').`);}}};Mr.DivertTarget=To;});var gn=A(Gr=>{Object.defineProperty(Gr,"__esModule",{value:true});Gr.Divert=void 0;var sm=se(),Qn=ge(),am=ot(),Po=mn(),Fo=lt(),om=Yn(),lm=Z(),Eh=$t(),um=Ne(),Sh=Mt(),hm=te(),Dh=yn(),cm=Xn(),Zn=U(),No=class extends lm.ParsedObject{get runtimeDivert(){if(!this._runtimeDivert)throw new Error;return this._runtimeDivert}set runtimeDivert(e){this._runtimeDivert=e;}get isEnd(){return !!(this.target&&this.target.dotSeparatedComponents==="END")}get isDone(){return !!(this.target&&this.target.dotSeparatedComponents==="DONE")}constructor(e,t){super(),this.args=[],this.target=null,this.targetContent=null,this._runtimeDivert=null,this.isFunctionCall=false,this.isEmpty=false,this.isTunnel=false,this.isThread=false,this.GenerateRuntimeObject=()=>{if(this.isEnd)return Qn.ControlCommand.End();if(this.isDone)return Qn.ControlCommand.Done();this.runtimeDivert=new am.Divert,this.ResolveTargetContent(),this.CheckArgumentValidity();let n=this.args!==null&&this.args.length>0;if(n||this.isFunctionCall||this.isTunnel||this.isThread){let r=new sm.Container;if(n){this.isFunctionCall||r.AddContent(Qn.ControlCommand.EvalStart());let a=null;this.targetContent&&(a=this.targetContent.args);for(let s=0;s<this.args.length;++s){let o=this.args[s],l=null;if(a&&s<a.length&&(l=a[s]),l&&l.isByReference){let u=(0, Zn.asOrNull)(o,Dh.VariableReference);if(!u){this.Error(`Expected variable name to pass by reference to 'ref ${l.identifier}' but saw ${o}`);break}let h=new Eh.Path(u.pathIdentifiers);if(h.ResolveFromContext(this)){this.Error(`can't pass a read count by reference. '${h.dotSeparatedComponents}' is a knot/stitch/label, but '${this.target.dotSeparatedComponents}' requires the name of a VAR to be passed.`);break}let d=new hm.VariablePointerValue(u.name);r.AddContent(d);}else o.GenerateIntoContainer(r);}this.isFunctionCall||r.AddContent(Qn.ControlCommand.EvalEnd());}return this.isThread?r.AddContent(Qn.ControlCommand.StartThread()):(this.isFunctionCall||this.isTunnel)&&(this.runtimeDivert.pushesToStack=true,this.runtimeDivert.stackPushType=this.isFunctionCall?Sh.PushPopType.Function:Sh.PushPopType.Tunnel),r.AddContent(this.runtimeDivert),r}return this.runtimeDivert},this.PathAsVariableName=()=>this.target?this.target.firstComponent:null,this.ResolveTargetContent=()=>{if(!(this.isEmpty||this.isEnd)&&this.targetContent===null){let n=this.PathAsVariableName();if(n!==null){let r=(0, Zn.asOrNull)((0, cm.ClosestFlowBase)(this),Fo.FlowBase);if(r){let a=r.ResolveVariableWithName(n,this);if(a.found){if(a.isArgument&&a.ownerFlow&&a.ownerFlow.args){let s=a.ownerFlow.args.find(o=>{var l;return ((l=o.identifier)===null||l===void 0?void 0:l.name)==n});s&&!s.isDivertTarget&&this.Error(`Since '${s.identifier}' is used as a variable divert target (on ${this.debugMetadata}), it should be marked as: -> ${s.identifier}`,a.ownerFlow);}this.runtimeDivert.variableDivertName=n;return}}}if(!this.target)throw new Error;this.targetContent=this.target.ResolveFromContext(this);}},this.CheckArgumentValidity=()=>{if(this.isEmpty)return;let n=0;if(this.args!==null&&this.args.length>0&&(n=this.args.length),this.targetContent===null)return;let r=(0, Zn.asOrNull)(this.targetContent,Fo.FlowBase);if(n===0&&(r===null||!r.hasParameters))return;if(r===null&&n>0){this.Error("target needs to be a knot or stitch in order to pass arguments");return}else if(r!==null&&(r.args===null||!r.args&&n>0)){this.Error(`target (${r.name}) doesn't take parameters`);return}else if(this.parent instanceof Po.DivertTarget){n>0&&this.Error("can't store arguments in a divert target variable");return}let a=r.args.length;if(a!==n){let s;n===0?s="but there weren't any passed to it":n<a?s=`but only got ${n}`:s=`but got ${n}`,this.Error(`to '${r.identifier}' requires ${a} arguments, ${s}`);return}for(let s=0;s<a;++s){let o=r.args[s],l=this.args[s];if(o.isDivertTarget){let u=(0, Zn.asOrNull)(l,Dh.VariableReference);if(!(l instanceof Po.DivertTarget)&&u===null)this.Error(`Target '${r.identifier}' expects a divert target for the parameter named -> ${o.identifier} but saw ${l}`,l);else if(u){let h=new Eh.Path(u.pathIdentifiers);h.ResolveFromContext(u)&&this.Error(`Passing read count of '${h.dotSeparatedComponents}' instead of a divert target. You probably meant '${h}'`);}}}if(r===null){this.Error("Can't call as a function or with arguments unless it's a knot or stitch");return}},this.CheckExternalArgumentValidity=n=>{let r=this.target?this.target.firstComponent:null,a=n.externals.get(r);if(!a)throw new Error("external not found");let s=a.argumentNames.length,o=0;this.args&&(o=this.args.length),o!==s&&this.Error(`incorrect number of arguments sent to external function '${r}'. Expected ${s} but got ${o}`);},this.toString=()=>{let n="";if(this.target!==null)n+=this.target.toString();else return "-> <empty divert>";return this.isTunnel&&(n+=" ->"),this.isFunctionCall&&(n+=" ()"),n},e&&(this.target=e),t&&(this.args=t,this.AddContent(t));}get typeName(){return "Divert"}ResolveReferences(e){if(this.isEmpty||this.isEnd||this.isDone)return;if(!this.runtimeDivert)throw new Error;this.targetContent&&(this.runtimeDivert.targetPath=this.targetContent.runtimePath),super.ResolveReferences(e);let t=(0, Zn.asOrNull)(this.targetContent,Fo.FlowBase);t&&(!t.isFunction&&this.isFunctionCall?super.Error(`${t.identifier} hasn't been marked as a function, but it's being called as one. Do you need to declare the knot as '== function ${t.identifier} =='?`):t.isFunction&&!this.isFunctionCall&&!(this.parent instanceof Po.DivertTarget)&&super.Error(t.identifier+" can't be diverted to. It can only be called as a function since it's been marked as such: '"+t.identifier+"(...)'"));let n=this.targetContent!==null,r=false,a=false;if(this.target){if(this.target.numberOfComponents===1){if(!this.target.firstComponent)throw new Error;if(r=om.FunctionCall.IsBuiltIn(this.target.firstComponent),a=e.IsExternal(this.target.firstComponent),r||a){this.isFunctionCall||super.Error(`${this.target.firstComponent} must be called as a function: ~ ${this.target.firstComponent}()`),a&&(this.runtimeDivert.isExternal=true,this.args!==null&&(this.runtimeDivert.externalArgs=this.args.length),this.runtimeDivert.pushesToStack=false,this.runtimeDivert.targetPath=new um.Path(this.target.firstComponent),this.CheckExternalArgumentValidity(e));return}}}else throw new Error;this.runtimeDivert.variableDivertName==null&&!n&&!r&&!a&&this.Error(`target not found: '${this.target}'`);}Error(e,t=null,n=false){if(t!==this&&t){super.Error(e,t);return}this.isFunctionCall?super.Error(`Function call ${e}`,t,n):super.Error(`Divert ${e}`,t,n);}};Gr.Divert=No;});var bh=A($r=>{Object.defineProperty($r,"__esModule",{value:true});$r.GatherPointToResolve=void 0;var Io=class{constructor(e,t){this.divert=e,this.targetRuntimeObj=t;}};$r.GatherPointToResolve=Io;});var Ah=A(Jr=>{Object.defineProperty(Jr,"__esModule",{value:true});Jr.SequenceDivertToResolve=void 0;var Vo=class{constructor(e,t){this.divert=e,this.targetContent=t;}};Jr.SequenceDivertToResolve=Vo;});var ko=A(Hr=>{Object.defineProperty(Hr,"__esModule",{value:true});Hr.SequenceType=void 0;var wh;(function(i){i[i.Stopping=1]="Stopping",i[i.Cycle=2]="Cycle",i[i.Shuffle=4]="Shuffle",i[i.Once=8]="Once";})(wh||(Hr.SequenceType=wh={}));});var Bo=A(Kr=>{Object.defineProperty(Kr,"__esModule",{value:true});Kr.Sequence=void 0;var xh=se(),Qe=ge(),Ro=ot(),ei=te(),Ur=at(),dm=Z(),pm=Ah(),zr=ko(),fm=Jt(),Lo=class extends dm.ParsedObject{constructor(e,t){super(),this.sequenceType=t,this._sequenceDivertsToResolve=[],this.GenerateRuntimeObject=()=>{let n=new xh.Container;n.visitsShouldBeCounted=true,n.countingAtStartOnly=true,this._sequenceDivertsToResolve=[],n.AddContent(Qe.ControlCommand.EvalStart()),n.AddContent(Qe.ControlCommand.VisitIndex());let r=(this.sequenceType&zr.SequenceType.Once)>0,a=(this.sequenceType&zr.SequenceType.Cycle)>0,s=(this.sequenceType&zr.SequenceType.Stopping)>0,o=(this.sequenceType&zr.SequenceType.Shuffle)>0,l=this.sequenceElements.length;if(r&&(l+=1),s||r?(n.AddContent(new ei.IntValue(l-1)),n.AddContent(Ur.NativeFunctionCall.CallWithName("MIN"))):a&&(n.AddContent(new ei.IntValue(this.sequenceElements.length)),n.AddContent(Ur.NativeFunctionCall.CallWithName("%"))),o){let h=Qe.ControlCommand.NoOp();if(r||s){let d=s?this.sequenceElements.length-1:this.sequenceElements.length;n.AddContent(Qe.ControlCommand.Duplicate()),n.AddContent(new ei.IntValue(d)),n.AddContent(Ur.NativeFunctionCall.CallWithName("=="));let f=new Ro.Divert;f.isConditional=true,n.AddContent(f),this.AddDivertToResolve(f,h);}let c=this.sequenceElements.length;s&&(c-=1),n.AddContent(new ei.IntValue(c)),n.AddContent(Qe.ControlCommand.SequenceShuffleIndex()),(r||s)&&n.AddContent(h);}n.AddContent(Qe.ControlCommand.EvalEnd());let u=Qe.ControlCommand.NoOp();for(let h=0;h<l;h+=1){n.AddContent(Qe.ControlCommand.EvalStart()),n.AddContent(Qe.ControlCommand.Duplicate()),n.AddContent(new ei.IntValue(h)),n.AddContent(Ur.NativeFunctionCall.CallWithName("==")),n.AddContent(Qe.ControlCommand.EvalEnd());let c=new Ro.Divert;c.isConditional=true,n.AddContent(c);let d;h<this.sequenceElements.length?d=this.sequenceElements[h].runtimeObject:d=new xh.Container,d.name=`s${h}`,d.InsertContent(Qe.ControlCommand.PopEvaluatedValue(),0);let f=new Ro.Divert;d.AddContent(f),n.AddToNamedContentOnly(d),this.AddDivertToResolve(c,d),this.AddDivertToResolve(f,u);}return n.AddContent(u),n},this.AddDivertToResolve=(n,r)=>{this._sequenceDivertsToResolve.push(new pm.SequenceDivertToResolve(n,r));},this.sequenceType=t,this.sequenceElements=[];for(let n of e){let r=n.content,a=null;r===null||r.length===0?a=n:a=new fm.Weave(r),this.sequenceElements.push(a),this.AddContent(a);}}get typeName(){return "Sequence"}ResolveReferences(e){super.ResolveReferences(e);for(let t of this._sequenceDivertsToResolve)t.divert.targetPath=t.targetContent.path;}};Kr.Sequence=Lo;});var jo=A(Xr=>{Object.defineProperty(Xr,"__esModule",{value:true});Xr.TunnelOnwards=void 0;var mm=se(),ti=ge(),gm=ot(),Cm=te(),ym=Z(),vm=qt(),Em=U(),Sm=Cn(),Wo=class extends ym.ParsedObject{constructor(){super(...arguments),this._overrideDivertTarget=null,this._divertAfter=null,this.GenerateRuntimeObject=()=>{let e=new mm.Container;if(e.AddContent(ti.ControlCommand.EvalStart()),this.divertAfter){let t=this.divertAfter.GenerateRuntimeObject(),n=t;if(n){let a=this.divertAfter.args;if(a!==null&&a.length>0){let s=-1,o=-1;for(let l=0;l<n.content.length;l+=1){let u=n.content[l];u&&(s==-1&&u.commandType===ti.ControlCommand.CommandType.EvalStart?s=l:u.commandType===ti.ControlCommand.CommandType.EvalEnd&&(o=l));}for(let l=s+1;l<o;l+=1){let u=n.content[l];u.parent=null,e.AddContent(n.content[l]);}}}let r=(0, Em.asOrNull)(t,gm.Divert);if(r!=null&&r.hasVariableTarget){let a=new Sm.VariableReference(r.variableDivertName);e.AddContent(a);}else this._overrideDivertTarget=new Cm.DivertTargetValue,e.AddContent(this._overrideDivertTarget);}else e.AddContent(new vm.Void);return e.AddContent(ti.ControlCommand.EvalEnd()),e.AddContent(ti.ControlCommand.PopTunnel()),e},this.toString=()=>` -> ${this._divertAfter}`;}get divertAfter(){return this._divertAfter}set divertAfter(e){this._divertAfter=e,this._divertAfter&&this.AddContent(this._divertAfter);}get typeName(){return "TunnelOnwards"}ResolveReferences(e){super.ResolveReferences(e),this.divertAfter&&this.divertAfter.targetContent&&(this._overrideDivertTarget.targetPath=this.divertAfter.targetContent.runtimePath);}};Xr.TunnelOnwards=Wo;});var Go=A(Yr=>{Object.defineProperty(Yr,"__esModule",{value:true});Yr.ListDefinition=void 0;var qo=ke(),Mo=class{constructor(e,t){this._name=e||"",this._items=null,this._itemNameToValues=t||new Map;}get name(){return this._name}get items(){if(this._items==null){this._items=new Map;for(let[e,t]of this._itemNameToValues){let n=new qo.InkListItem(this.name,e);this._items.set(n.serialized(),t);}}return this._items}ValueForItem(e){if(!e.itemName)return 0;let t=this._itemNameToValues.get(e.itemName);return typeof t<"u"?t:0}ContainsItem(e){return !e.itemName||e.originName!=this.name?false:this._itemNameToValues.has(e.itemName)}ContainsItemWithName(e){return this._itemNameToValues.has(e)}TryGetItemWithValue(e,t){for(let[n,r]of this._itemNameToValues)if(r==e)return t=new qo.InkListItem(this.name,n),{result:t,exists:true};return t=qo.InkListItem.Null,{result:t,exists:false}}TryGetValueForItem(e,t){if(!e.itemName)return {result:0,exists:false};let n=this._itemNameToValues.get(e.itemName);return n?{result:n,exists:true}:{result:0,exists:false}}};Yr.ListDefinition=Mo;});var Zr=A(Qr=>{Object.defineProperty(Qr,"__esModule",{value:true});Qr.ListDefinition=void 0;var Dm=ke(),bm=ke(),Am=Go(),wm=te(),xm=Z(),_m=yt(),$o=class extends xm.ParsedObject{get typeName(){return "ListDefinition"}get runtimeListDefinition(){var e;let t=new Map;for(let n of this.itemDefinitions)t.has(n.name)?this.Error(`List '${this.identifier}' contains duplicate items called '${n.name}'`):t.set(n.name,n.seriesValue);return new Am.ListDefinition(((e=this.identifier)===null||e===void 0?void 0:e.name)||"",t)}constructor(e){super(),this.itemDefinitions=e,this.identifier=null,this.variableAssignment=null,this._elementsByName=null,this.ItemNamed=n=>{if(this._elementsByName===null){this._elementsByName=new Map;for(let a of this.itemDefinitions)this._elementsByName.set(a.name,a);}return this._elementsByName.get(n)||null},this.GenerateRuntimeObject=()=>{var n,r;let a=new Dm.InkList;for(let s of this.itemDefinitions)if(s.inInitialList){let o=new bm.InkListItem(((n=this.identifier)===null||n===void 0?void 0:n.name)||null,s.name||null);a.Add(o,s.seriesValue);}return a.SetInitialOriginName(((r=this.identifier)===null||r===void 0?void 0:r.name)||""),new wm.ListValue(a)};let t=1;for(let n of this.itemDefinitions)n.explicitValue!==null&&(t=n.explicitValue),n.seriesValue=t,t+=1;this.AddContent(e);}ResolveReferences(e){super.ResolveReferences(e),e.CheckForNamingCollisions(this,this.identifier,_m.SymbolType.List);}};Qr.ListDefinition=$o;});var Ho=A(es=>{Object.defineProperty(es,"__esModule",{value:true});es.VariableAssignment=void 0;var Tm=se(),Om=Xn(),Pm=Zr(),Fm=Z(),_h=yt(),Nm=xt(),Im=yn(),Vm=U(),Jo=class extends Fm.ParsedObject{get variableName(){return this.variableIdentifier.name}get typeName(){return this.isNewTemporaryDeclaration?"temp":this.isGlobalDeclaration?this.listDefinition!==null?"LIST":"VAR":"variable assignment"}get isDeclaration(){return this.isGlobalDeclaration||this.isNewTemporaryDeclaration}constructor({assignedExpression:e,isGlobalDeclaration:t,isTemporaryNewDeclaration:n,listDef:r,variableIdentifier:a}){super(),this._runtimeAssignment=null,this.expression=null,this.listDefinition=null,this.GenerateRuntimeObject=()=>{let s=null;if(this.isGlobalDeclaration?s=this.story:this.isNewTemporaryDeclaration&&(s=(0, Om.ClosestFlowBase)(this)),s&&s.AddNewVariableDeclaration(this),this.isGlobalDeclaration)return null;let o=new Tm.Container;return this.expression?o.AddContent(this.expression.runtimeObject):this.listDefinition&&o.AddContent(this.listDefinition.runtimeObject),this._runtimeAssignment=new Nm.VariableAssignment(this.variableName,this.isNewTemporaryDeclaration),o.AddContent(this._runtimeAssignment),o},this.toString=()=>`${this.isGlobalDeclaration?"VAR":this.isNewTemporaryDeclaration?"~ temp":""} ${this.variableName}`,this.variableIdentifier=a,this.isGlobalDeclaration=!!t,this.isNewTemporaryDeclaration=!!n,r instanceof Pm.ListDefinition?(this.listDefinition=this.AddContent(r),this.listDefinition.variableAssignment=this,this.isGlobalDeclaration=true):e&&(this.expression=this.AddContent(e));}ResolveReferences(e){if(super.ResolveReferences(e),this.isDeclaration&&this.listDefinition===null&&e.CheckForNamingCollisions(this,this.variableIdentifier,this.isGlobalDeclaration?_h.SymbolType.Var:_h.SymbolType.Temp),this.isGlobalDeclaration){let t=(0, Vm.asOrNull)(this.expression,Im.VariableReference);t&&!t.isConstantReference&&!t.isListItemReference&&this.Error("global variable assignments cannot refer to other variables, only literal values, constants and list items");}if(!this.isNewTemporaryDeclaration){let t=e.ResolveVariableWithName(this.variableName,this);t.found||(this.variableName in this.story.constants?this.Error(`Can't re-assign to a constant (do you need to use VAR when declaring '${this.variableName}'?)`,this):this.Error(`Variable could not be found to assign to: '${this.variableName}'`,this)),this._runtimeAssignment&&(this._runtimeAssignment.isGlobal=t.isGlobal);}}};es.VariableAssignment=Jo;});var Jt=A(is=>{Object.defineProperty(is,"__esModule",{value:true});is.Weave=void 0;var Th=Bi(),He=dn(),ts=Er(),km=br(),Rm=se(),ns=gn(),Lm=ot(),Bm=mn(),Wm=lt(),ct=Kn(),jm=bh(),qm=Z(),Uo=Bo(),Mm=Tt(),Gm=jo(),$m=Ho(),Ue=U(),zo=class i extends qm.ParsedObject{get rootContainer(){return this._rootContainer||(this._rootContainer=this.GenerateRuntimeObject()),this._rootContainer}get namedWeavePoints(){return this._namedWeavePoints}get lastParsedSignificantObject(){if(this.content.length===0)return null;let e=null;for(let n=this.content.length-1;n>=0;--n){e=this.content[n];let r=(0, Ue.asOrNull)(e,Mm.Text);if(!(r&&r.text===`
|
|
15
|
+
`)&&!this.IsGlobalDeclaration(e))break}let t=(0, Ue.asOrNull)(e,i);return t&&(e=t.lastParsedSignificantObject),e}constructor(e,t=-1){super(),this.previousWeavePoint=null,this.addContentToPreviousWeavePoint=false,this.hasSeenChoiceInSection=false,this.currentContainer=null,this._unnamedGatherCount=0,this._choiceCount=0,this._rootContainer=null,this._namedWeavePoints=new Map,this.looseEnds=[],this.gatherPointsToResolve=[],this.ResolveWeavePointNaming=()=>{var n,r,a;let s=[...this.FindAll(ct.Gather)(o=>!(o.name===null||o.name===void 0)),...this.FindAll(He.Choice)(o=>!(o.name===null||o.name===void 0))];this._namedWeavePoints=new Map;for(let o of s){let l=this.namedWeavePoints.get(((n=o.identifier)===null||n===void 0?void 0:n.name)||"");if(l){let u=l instanceof ct.Gather?"gather":"choice",h=l;this.Error(`A ${u} with the same label name '${o.name}' already exists in this context on line ${h.debugMetadata?h.debugMetadata.startLineNumber:"NO DEBUG METADATA AVAILABLE"}`,o);}!((r=o.identifier)===null||r===void 0)&&r.name&&this.namedWeavePoints.set((a=o.identifier)===null||a===void 0?void 0:a.name,o);}},this.ConstructWeaveHierarchyFromIndentation=()=>{let n=0;for(;n<this.content.length;){let r=this.content[n];if(r instanceof He.Choice||r instanceof ct.Gather){let s=r.indentationDepth-1;if(s>this.baseIndentIndex){let o=n;for(;n<this.content.length;){let c=(0, Ue.asOrNull)(this.content[n],He.Choice)||(0, Ue.asOrNull)(this.content[n],ct.Gather);if(c!==null&&c.indentationDepth-1<=this.baseIndentIndex)break;n+=1;}let l=n-o,u=this.content.slice(o,o+l);this.content.splice(o,l);let h=new i(u,s);this.InsertContent(o,h),n=o;}}n+=1;}},this.DetermineBaseIndentationFromContent=n=>{for(let r of n)if(r instanceof He.Choice||r instanceof ct.Gather)return r.indentationDepth-1;return 0},this.GenerateRuntimeObject=()=>{this._rootContainer=new Rm.Container,this.currentContainer=this._rootContainer,this.looseEnds=[],this.gatherPointsToResolve=[];for(let n of this.content)if(n instanceof He.Choice||n instanceof ct.Gather)this.AddRuntimeForWeavePoint(n);else if(n instanceof i){let r=n;this.AddRuntimeForNestedWeave(r),this.gatherPointsToResolve.splice(0,0,...r.gatherPointsToResolve);}else this.AddGeneralRuntimeContent(n.runtimeObject);return this.PassLooseEndsToAncestors(),this._rootContainer},this.AddRuntimeForGather=n=>{let r=!this.hasSeenChoiceInSection;this.hasSeenChoiceInSection=false;let a=n.runtimeContainer;if(n.name||(a.name=`g-${this._unnamedGatherCount}`,this._unnamedGatherCount+=1),r){if(!this.currentContainer)throw new Error;this.currentContainer.AddContent(a);}else this.rootContainer.AddToNamedContentOnly(a);for(let s of this.looseEnds){let o=s;if(o instanceof ct.Gather&&o.indentationDepth==n.indentationDepth)continue;let l=null;if(o instanceof ns.Divert)l=o.runtimeObject;else {l=new Lm.Divert;let u=o;if(!u.runtimeContainer)throw new Error;u.runtimeContainer.AddContent(l);}this.gatherPointsToResolve.push(new jm.GatherPointToResolve(l,a));}this.looseEnds=[],this.currentContainer=a;},this.AddRuntimeForWeavePoint=n=>{if(n instanceof ct.Gather)this.AddRuntimeForGather(n);else if(n instanceof He.Choice){if(!this.currentContainer)throw new Error;this.previousWeavePoint instanceof ct.Gather&&this.looseEnds.splice(this.looseEnds.indexOf(this.previousWeavePoint),1);let r=n;if(this.currentContainer.AddContent(r.runtimeObject),!r.innerContentContainer)throw new Error;r.innerContentContainer.name=`c-${this._choiceCount}`,this.currentContainer.AddToNamedContentOnly(r.innerContentContainer),this._choiceCount+=1,this.hasSeenChoiceInSection=true;}this.addContentToPreviousWeavePoint=false,this.WeavePointHasLooseEnd(n)&&(this.looseEnds.push(n),(0, Ue.asOrNull)(n,He.Choice)&&(this.addContentToPreviousWeavePoint=true)),this.previousWeavePoint=n;},this.AddRuntimeForNestedWeave=n=>{this.AddGeneralRuntimeContent(n.rootContainer),this.previousWeavePoint!==null&&(this.looseEnds.splice(this.looseEnds.indexOf(this.previousWeavePoint),1),this.addContentToPreviousWeavePoint=false);},this.AddGeneralRuntimeContent=n=>{if(n!==null)if(this.addContentToPreviousWeavePoint){if(!this.previousWeavePoint||!this.previousWeavePoint.runtimeContainer)throw new Error;this.previousWeavePoint.runtimeContainer.AddContent(n);}else {if(!this.currentContainer)throw new Error;this.currentContainer.AddContent(n);}},this.PassLooseEndsToAncestors=()=>{if(this.looseEnds.length===0)return;let n=null,r=null,a=false;for(let s=this.parent;s!==null;s=s.parent){let o=(0, Ue.asOrNull)(s,i);o&&(!a&&n===null&&(n=o),a&&r===null&&(r=o)),(s instanceof Uo.Sequence||s instanceof ts.Conditional)&&(a=true);}if(!(n===null&&r===null))for(let s=this.looseEnds.length-1;s>=0;s-=1){let o=this.looseEnds[s],l=false;if(a){if(o instanceof He.Choice&&n!==null)n.ReceiveLooseEnd(o),l=true;else if(!(o instanceof He.Choice)){let u=n||r;u!==null&&(u.ReceiveLooseEnd(o),l=true);}}else n?.hasOwnProperty("ReceiveLooseEnd")&&n.ReceiveLooseEnd(o),l=true;l&&this.looseEnds.splice(s,1);}},this.ReceiveLooseEnd=n=>{this.looseEnds.push(n);},this.WeavePointNamed=n=>{if(!this.namedWeavePoints)return null;let r=this.namedWeavePoints.get(n);return r||null},this.IsGlobalDeclaration=n=>{let r=(0, Ue.asOrNull)(n,$m.VariableAssignment);return !!(r&&r.isGlobalDeclaration&&r.isDeclaration||(0, Ue.asOrNull)(n,km.ConstantDeclaration))},this.ContentThatFollowsWeavePoint=n=>{let r=[],a=n;if(a.content!==null)for(let l of a.content)this.IsGlobalDeclaration(l)||r.push(l);let s=(0, Ue.asOrNull)(a.parent,i);if(s===null)throw new Error("Expected weave point parent to be weave?");let o=s.content.indexOf(a);for(let l=o+1;l<s.content.length;l+=1){let u=s.content[l];if(!this.IsGlobalDeclaration(u)){if(u instanceof He.Choice||u instanceof ct.Gather||u instanceof i)break;r.push(u);}}return r},this.ValidateTermination=n=>{if(this.lastParsedSignificantObject instanceof Th.AuthorWarning)return;if(this.looseEnds!==null&&this.looseEnds.length>0)for(let a of this.looseEnds){let s=this.ContentThatFollowsWeavePoint(a);this.ValidateFlowOfObjectsTerminates(s,a,n);}else {for(let a of this.content)if(a instanceof He.Choice||a instanceof ns.Divert)return;this.ValidateFlowOfObjectsTerminates(this.content,this,n);}},this.BadNestedTerminationHandler=n=>{let r=null;for(let s=n.parent;s!==null;s=s.parent)if(s instanceof Uo.Sequence||s instanceof ts.Conditional){r=(0, Ue.asOrNull)(s,ts.Conditional);break}let a="Choices nested in conditionals or sequences need to explicitly divert afterwards.";r!==null&&r.FindAll(He.Choice)().length===1&&(a=`Choices with conditions should be written: '* {condition} choice'. Otherwise, ${a.toLowerCase()}`),this.Error(a,n);},this.ValidateFlowOfObjectsTerminates=(n,r,a)=>{let s=false,o=r;for(let l of n){if(l.Find(ns.Divert)(h=>!h.isThread&&!h.isTunnel&&!h.isFunctionCall&&!(h.parent instanceof Bm.DivertTarget))!==null&&(s=true),l.Find(Gm.TunnelOnwards)()!=null){s=true;break}o=l;}if(!s){if(o instanceof Th.AuthorWarning)return;a(o);}},this.WeavePointHasLooseEnd=n=>{if(n.content===null)return true;for(let r=n.content.length-1;r>=0;--r){let a=(0, Ue.asOrNull)(n.content[r],ns.Divert);if(a&&!(a.isThread||a.isTunnel||a.isFunctionCall))return false}return true},this.CheckForWeavePointNamingCollisions=()=>{if(!this.namedWeavePoints)return;let n=[];for(let r of this.ancestry){let a=(0, Ue.asOrNull)(r,Wm.FlowBase);if(a)n.push(a);else break}for(let[r,a]of this.namedWeavePoints)for(let s of n){let o=s.ContentWithNameAtLevel(r);if(o&&o!==a){let l=`${a.GetType()} '${r}' has the same label name as a ${o.GetType()} (on ${o.debugMetadata})`;this.Error(l,a);}}},t==-1?this.baseIndentIndex=this.DetermineBaseIndentationFromContent(e):this.baseIndentIndex=t,this.AddContent(e),this.ConstructWeaveHierarchyFromIndentation();}get typeName(){return "Weave"}ResolveReferences(e){if(super.ResolveReferences(e),this.looseEnds!==null&&this.looseEnds.length>0){let t=false;for(let n=this.parent;n!==null;n=n.parent)if(n instanceof Uo.Sequence||n instanceof ts.Conditional){t=true;break}t&&this.ValidateTermination(this.BadNestedTerminationHandler);}for(let t of this.gatherPointsToResolve)t.divert.targetPath=t.targetRuntimeObj.path;this.CheckForWeavePointNamingCollisions();}};is.Weave=zo;});var Oo=A(ss=>{Object.defineProperty(ss,"__esModule",{value:true});ss.ConditionalSingleBranch=void 0;var Oh=se(),rs=ge(),Ph=ot(),Jm=Z(),Hm=at(),Um=te(),zm=Tt(),Km=Jt(),Xm=U(),Ko=class extends Jm.ParsedObject{get ownExpression(){return this._ownExpression}set ownExpression(e){this._ownExpression=e,this._ownExpression&&this.AddContent(this._ownExpression);}constructor(e){super(),this._contentContainer=null,this._conditionalDivert=null,this._ownExpression=null,this._innerWeave=null,this.isTrueBranch=false,this.matchingEquality=false,this.isElse=false,this.isInline=false,this.returnDivert=null,this.GenerateRuntimeObject=()=>{if(this._innerWeave)for(let r of this._innerWeave.content){let a=(0, Xm.asOrNull)(r,zm.Text);a&&a.text.startsWith("else:")&&this.Warning("Saw the text 'else:' which is being treated as content. Did you mean '- else:'?",a);}let t=new Oh.Container,n=this.matchingEquality&&!this.isElse;if(n&&t.AddContent(rs.ControlCommand.Duplicate()),this._conditionalDivert=new Ph.Divert,this._conditionalDivert.isConditional=!this.isElse,!this.isTrueBranch&&!this.isElse){let r=this.ownExpression!==null;r&&t.AddContent(rs.ControlCommand.EvalStart()),this.ownExpression&&this.ownExpression.GenerateIntoContainer(t),this.matchingEquality&&t.AddContent(Hm.NativeFunctionCall.CallWithName("==")),r&&t.AddContent(rs.ControlCommand.EvalEnd());}return t.AddContent(this._conditionalDivert),this._contentContainer=this.GenerateRuntimeForContent(),this._contentContainer.name="b",this.isInline||this._contentContainer.InsertContent(new Um.StringValue(`
|
|
16
|
+
`),0),(n||this.isElse&&this.matchingEquality)&&this._contentContainer.InsertContent(rs.ControlCommand.PopEvaluatedValue(),0),t.AddToNamedContentOnly(this._contentContainer),this.returnDivert=new Ph.Divert,this._contentContainer.AddContent(this.returnDivert),t},this.GenerateRuntimeForContent=()=>this._innerWeave===null?new Oh.Container:this._innerWeave.rootContainer,e&&(this._innerWeave=new Km.Weave(e),this.AddContent(this._innerWeave));}get typeName(){return "ConditionalSingleBranch"}ResolveReferences(e){if(!this._conditionalDivert||!this._contentContainer)throw new Error;this._conditionalDivert.targetPath=this._contentContainer.path,super.ResolveReferences(e);}};ss.ConditionalSingleBranch=Ko;});var Nh=A(as=>{Object.defineProperty(as,"__esModule",{value:true});as.CustomFlags=void 0;var Fh;(function(i){i[i.ParsingString=1]="ParsingString",i[i.TagActive=2]="TagActive";})(Fh||(as.CustomFlags=Fh={}));});var Ih=A(os=>{Object.defineProperty(os,"__esModule",{value:true});os.DebugMetadata=void 0;var Xo=class i{constructor(){this.startLineNumber=0,this.endLineNumber=0,this.startCharacterNumber=0,this.endCharacterNumber=0,this.fileName=null,this.sourceName=null;}Merge(e){let t=new i;return t.fileName=this.fileName,t.sourceName=this.sourceName,this.startLineNumber<e.startLineNumber?(t.startLineNumber=this.startLineNumber,t.startCharacterNumber=this.startCharacterNumber):this.startLineNumber>e.startLineNumber?(t.startLineNumber=e.startLineNumber,t.startCharacterNumber=e.startCharacterNumber):(t.startLineNumber=this.startLineNumber,t.startCharacterNumber=Math.min(this.startCharacterNumber,e.startCharacterNumber)),this.endLineNumber>e.endLineNumber?(t.endLineNumber=this.endLineNumber,t.endCharacterNumber=this.endCharacterNumber):this.endLineNumber<e.endLineNumber?(t.endLineNumber=e.endLineNumber,t.endCharacterNumber=e.endCharacterNumber):(t.endLineNumber=this.endLineNumber,t.endCharacterNumber=Math.max(this.endCharacterNumber,e.endCharacterNumber)),t}toString(){return this.fileName!==null?`line ${this.startLineNumber} of ${this.fileName}"`:"line "+this.startLineNumber}};os.DebugMetadata=Xo;});var Vh=A(ls=>{Object.defineProperty(ls,"__esModule",{value:true});ls.ExternalDeclaration=void 0;var Ym=Z(),Yo=class extends Ym.ParsedObject{get name(){var e;return ((e=this.identifier)===null||e===void 0?void 0:e.name)||null}constructor(e,t){super(),this.identifier=e,this.argumentNames=t,this.GenerateRuntimeObject=()=>(this.story.AddExternal(this),null);}get typeName(){return "EXTERNAL"}toString(){var e;return `EXTERNAL ${(e=this.identifier)===null||e===void 0?void 0:e.name}`}};ls.ExternalDeclaration=Yo;});var kh=A(us=>{Object.defineProperty(us,"__esModule",{value:true});us.FlowDecl=void 0;var Qo=class{constructor(e,t,n){this.name=e,this.args=t,this.isFunction=n;}};us.FlowDecl=Qo;});var el=A(hs=>{Object.defineProperty(hs,"__esModule",{value:true});hs.Wrap=void 0;var Qm=Z(),Zo=class extends Qm.ParsedObject{constructor(e){super(),this._objToWrap=e,this.GenerateRuntimeObject=()=>this._objToWrap;}};hs.Wrap=Zo;});var Rh=A(cs=>{Object.defineProperty(cs,"__esModule",{value:true});cs.Glue=void 0;var Zm=el(),tl=class extends Zm.Wrap{constructor(e){super(e);}get typeName(){return "Glue"}};cs.Glue=tl;});var ps=A(ds=>{Object.defineProperty(ds,"__esModule",{value:true});ds.Glue=void 0;var eg=Ie(),nl=class extends eg.InkObject{toString(){return "Glue"}};ds.Glue=nl;});var Bh=A(fs=>{Object.defineProperty(fs,"__esModule",{value:true});fs.IncDecExpression=void 0;var tg=Vr(),Lh=$e(),ng=lt(),ig=at(),rg=te(),sg=xt(),ag=Cn(),og=Jt(),il=class extends Lh.Expression{constructor(e,t,n){super(),this.varIdentifier=e,this._runtimeAssignment=null,this.expression=null,this.GenerateIntoContainer=r=>{var a,s;r.AddContent(new ag.VariableReference(((a=this.varIdentifier)===null||a===void 0?void 0:a.name)||null)),this.expression?this.expression.GenerateIntoContainer(r):r.AddContent(new rg.IntValue(1)),r.AddContent(ig.NativeFunctionCall.CallWithName(this.isInc?"+":"-")),this._runtimeAssignment=new sg.VariableAssignment(((s=this.varIdentifier)===null||s===void 0?void 0:s.name)||null,false),r.AddContent(this._runtimeAssignment);},this.toString=()=>{var r,a;return this.expression?`${(r=this.varIdentifier)===null||r===void 0?void 0:r.name}${this.isInc?" += ":" -= "}${this.expression}`:`${(a=this.varIdentifier)===null||a===void 0?void 0:a.name}`+(this.isInc?"++":"--")},t instanceof Lh.Expression?(this.expression=t,this.AddContent(this.expression),this.isInc=!!n):this.isInc=t;}get typeName(){return "IncDecExpression"}ResolveReferences(e){var t;super.ResolveReferences(e);let n=e.ResolveVariableWithName(((t=this.varIdentifier)===null||t===void 0?void 0:t.name)||"",this);if(n.found||this.Error(`variable for ${this.incrementDecrementWord} could not be found: '${this.varIdentifier}' after searching: {this.descriptionOfScope}`),!this._runtimeAssignment)throw new Error;this._runtimeAssignment.isGlobal=n.isGlobal,!(this.parent instanceof og.Weave)&&!(this.parent instanceof ng.FlowBase)&&!(this.parent instanceof tg.ContentList)&&this.Error(`Can't use ${this.incrementDecrementWord} as sub-expression`);}get incrementDecrementWord(){return this.isInc?"increment":"decrement"}};fs.IncDecExpression=il;});var sl=A(ms=>{Object.defineProperty(ms,"__esModule",{value:true});ms.IncludedFile=void 0;var lg=Z(),rl=class extends lg.ParsedObject{constructor(e){super(),this.includedStory=e,this.GenerateRuntimeObject=()=>null;}get typeName(){return "IncludedFile"}};ms.IncludedFile=rl;});var Wh=A(gs=>{Object.defineProperty(gs,"__esModule",{value:true});gs.InfixOperator=void 0;var al=class{constructor(e,t,n){this.type=e,this.precedence=t,this.requireWhitespace=n,this.toString=()=>this.type;}};gs.InfixOperator=al;});var ll=A(Cs=>{Object.defineProperty(Cs,"__esModule",{value:true});Cs.Knot=void 0;var ug=lt(),jh=pn(),ol=class extends ug.FlowBase{get flowLevel(){return jh.FlowLevel.Knot}constructor(e,t,n,r){super(e,t,n,r);}get typeName(){return this.isFunction?"Function":"Knot"}ResolveReferences(e){super.ResolveReferences(e);let t=this.story;for(let n in this.subFlowsByName){let r=t.ContentWithNameAtLevel(n,jh.FlowLevel.Knot,false);if(r){let a=this.subFlowsByName.get(n),s=`Stitch '${a?a.name:"NO STITCH FOUND"}' has the same name as a knot (on ${r.debugMetadata})`;this.Error(s,a);}}}};Cs.Knot=ol;});var qh=A(ys=>{Object.defineProperty(ys,"__esModule",{value:true});ys.List=void 0;var hg=$e(),cg=ke(),dg=ke(),pg=te(),ul=class extends hg.Expression{constructor(e){super(),this.itemIdentifierList=e,this.GenerateIntoContainer=t=>{var n,r;let a=new cg.InkList;if(this.itemIdentifierList!=null)for(let s of this.itemIdentifierList){let o=((n=s?.name)===null||n===void 0?void 0:n.split("."))||[],l=null,u="";o.length>1?(l=o[0],u=o[1]):u=o[0];let h=this.story.ResolveListItem(l,u,this);if(h===null)l===null?this.Error(`Could not find list definition that contains item '${s}'`):this.Error(`Could not find list item ${s}`);else {if(h.parent==null){this.Error(`Could not find list definition for item ${s}`);return}l||(l=((r=h.parent.identifier)===null||r===void 0?void 0:r.name)||null);let c=new dg.InkListItem(l,h.name||null);a.has(c.serialized())?this.Warning(`Duplicate of item '${s}' in list.`):a.Add(c,h.seriesValue);}}t.AddContent(new pg.ListValue(a));};}get typeName(){return "List"}};ys.List=ul;});var cl=A(vs=>{Object.defineProperty(vs,"__esModule",{value:true});vs.ListElementDefinition=void 0;var fg=Z(),mg=yt(),hl=class extends fg.ParsedObject{get fullName(){var e;let t=this.parent;if(t===null)throw new Error("Can't get full name without a parent list.");return `${(e=t.identifier)===null||e===void 0?void 0:e.name}.${this.name}`}get typeName(){return "ListElement"}get name(){var e;return ((e=this.indentifier)===null||e===void 0?void 0:e.name)||null}constructor(e,t,n=null){super(),this.indentifier=e,this.inInitialList=t,this.explicitValue=n,this.seriesValue=0,this.parent=null,this.GenerateRuntimeObject=()=>{throw new Error("Not implemented.")},this.toString=()=>this.fullName,this.parent=this.parent;}ResolveReferences(e){super.ResolveReferences(e),e.CheckForNamingCollisions(this,this.indentifier,mg.SymbolType.ListItem);}};vs.ListElementDefinition=hl;});var dl=A(Es=>{Object.defineProperty(Es,"__esModule",{value:true});Es.StatementLevel=void 0;var Mh;(function(i){i[i.InnerBlock=0]="InnerBlock",i[i.Stitch=1]="Stitch",i[i.Knot=2]="Knot",i[i.Top=3]="Top";})(Mh||(Es.StatementLevel=Mh={}));});var fl=A(Ss=>{Object.defineProperty(Ss,"__esModule",{value:true});Ss.Stitch=void 0;var gg=lt(),Cg=pn(),pl=class extends gg.FlowBase{get flowLevel(){return Cg.FlowLevel.Stitch}constructor(e,t,n,r){super(e,t,n,r),this.baseToString=this.toString,this.toString=()=>`${this.parent!==null?this.parent+" > ":""}${this.baseToString()}`;}get typeName(){return "Stitch"}};Ss.Stitch=pl;});var bs=A(Ds=>{Object.defineProperty(Ds,"__esModule",{value:true});Ds.Tag=void 0;var yg=Ie(),ml=class extends yg.InkObject{constructor(e){super(),this.text=e.toString()||"";}toString(){return "# "+this.text}};Ds.Tag=ml;});var Cl=A(As=>{Object.defineProperty(As,"__esModule",{value:true});As.Choice=void 0;var vg=Ne(),Eg=me(),Sg=Ie(),gl=class i extends Sg.InkObject{constructor(){super(...arguments),this.text="",this.index=0,this.threadAtGeneration=null,this.sourcePath="",this.targetPath=null,this.isInvisibleDefault=false,this.tags=null,this.originalThreadIndex=0;}get pathStringOnChoice(){return this.targetPath===null?(0, Eg.throwNullException)("Choice.targetPath"):this.targetPath.toString()}set pathStringOnChoice(e){this.targetPath=new vg.Path(e);}Clone(){let e=new i;return e.text=this.text,e.sourcePath=this.sourcePath,e.index=this.index,e.targetPath=this.targetPath,e.originalThreadIndex=this.originalThreadIndex,e.isInvisibleDefault=this.isInvisibleDefault,this.threadAtGeneration!==null&&(e.threadAtGeneration=this.threadAtGeneration.Copy()),e}};As.Choice=gl;});var vl=A(ws=>{Object.defineProperty(ws,"__esModule",{value:true});ws.ListDefinitionsOrigin=void 0;var Dg=ke(),bg=te(),Ag=me(),yl=class{constructor(e){this._lists=new Map,this._allUnambiguousListValueCache=new Map;for(let t of e){this._lists.set(t.name,t);for(let[n,r]of t.items){let a=Dg.InkListItem.fromSerializedKey(n),s=new bg.ListValue(a,r);if(!a.itemName)throw new Error("item.itemName is null or undefined.");this._allUnambiguousListValueCache.set(a.itemName,s),this._allUnambiguousListValueCache.set(a.fullName,s);}}}get lists(){let e=[];for(let[,t]of this._lists)e.push(t);return e}TryListGetDefinition(e,t){if(e===null)return {result:t,exists:false};let n=this._lists.get(e);return n?{result:n,exists:true}:{result:t,exists:false}}FindSingleItemListWithName(e){if(e===null)return (0, Ag.throwNullException)("name");let t=this._allUnambiguousListValueCache.get(e);return typeof t<"u"?t:null}};ws.ListDefinitionsOrigin=yl;});var En=A(Os=>{Object.defineProperty(Os,"__esModule",{value:true});Os.JsonSerialisation=void 0;var xs=se(),Le=te(),Gh=ps(),M=ge(),vn=Mt(),$h=ot(),Jh=ar(),El=Cn(),Hh=xt(),Sl=at(),Uh=qt(),zh=bs(),wg=Ne(),Kh=Cl(),xg=Go(),_g=vl(),_s=ke(),ae=U(),Ht=me(),Ts=class i{static JArrayToRuntimeObjList(e,t=false){let n=e.length;t&&n--;let r=[];for(let a=0;a<n;a++){let s=e[a],o=this.JTokenToRuntimeObject(s);if(o===null)return (0, Ht.throwNullException)("runtimeObj");r.push(o);}return r}static WriteDictionaryRuntimeObjs(e,t){e.WriteObjectStart();for(let[n,r]of t)e.WritePropertyStart(n),this.WriteRuntimeObject(e,r),e.WritePropertyEnd();e.WriteObjectEnd();}static WriteListRuntimeObjs(e,t){e.WriteArrayStart();for(let n of t)this.WriteRuntimeObject(e,n);e.WriteArrayEnd();}static WriteIntDictionary(e,t){e.WriteObjectStart();for(let[n,r]of t)e.WriteIntProperty(n,r);e.WriteObjectEnd();}static WriteRuntimeObject(e,t){let n=(0, ae.asOrNull)(t,xs.Container);if(n){this.WriteRuntimeContainer(e,n);return}let r=(0, ae.asOrNull)(t,$h.Divert);if(r){let m="->";r.isExternal?m="x()":r.pushesToStack&&(r.stackPushType==vn.PushPopType.Function?m="f()":r.stackPushType==vn.PushPopType.Tunnel&&(m="->t->"));let E;r.hasVariableTarget?E=r.variableDivertName:E=r.targetPathString,e.WriteObjectStart(),e.WriteProperty(m,E),r.hasVariableTarget&&e.WriteProperty("var",true),r.isConditional&&e.WriteProperty("c",true),r.externalArgs>0&&e.WriteIntProperty("exArgs",r.externalArgs),e.WriteObjectEnd();return}let a=(0, ae.asOrNull)(t,Jh.ChoicePoint);if(a){e.WriteObjectStart(),e.WriteProperty("*",a.pathStringOnChoice),e.WriteIntProperty("flg",a.flags),e.WriteObjectEnd();return}let s=(0, ae.asOrNull)(t,Le.BoolValue);if(s){e.WriteBool(s.value);return}let o=(0, ae.asOrNull)(t,Le.IntValue);if(o){e.WriteInt(o.value);return}let l=(0, ae.asOrNull)(t,Le.FloatValue);if(l){e.WriteFloat(l.value);return}let u=(0, ae.asOrNull)(t,Le.StringValue);if(u){u.isNewline?e.Write(`
|
|
17
|
+
`,false):(e.WriteStringStart(),e.WriteStringInner("^"),e.WriteStringInner(u.value),e.WriteStringEnd());return}let h=(0, ae.asOrNull)(t,Le.ListValue);if(h){this.WriteInkList(e,h);return}let c=(0, ae.asOrNull)(t,Le.DivertTargetValue);if(c){if(e.WriteObjectStart(),c.value===null)return (0, Ht.throwNullException)("divTargetVal.value");e.WriteProperty("^->",c.value.componentsString),e.WriteObjectEnd();return}let d=(0, ae.asOrNull)(t,Le.VariablePointerValue);if(d){e.WriteObjectStart(),e.WriteProperty("^var",d.value),e.WriteIntProperty("ci",d.contextIndex),e.WriteObjectEnd();return}if((0, ae.asOrNull)(t,Gh.Glue)){e.Write("<>");return}let y=(0, ae.asOrNull)(t,M.ControlCommand);if(y){e.Write(i._controlCommandNames[y.commandType]);return}let v=(0, ae.asOrNull)(t,Sl.NativeFunctionCall);if(v){let m=v.name;m=="^"&&(m="L^"),e.Write(m);return}let w=(0, ae.asOrNull)(t,El.VariableReference);if(w){e.WriteObjectStart();let m=w.pathStringForCount;m!=null?e.WriteProperty("CNT?",m):e.WriteProperty("VAR?",w.name),e.WriteObjectEnd();return}let D=(0, ae.asOrNull)(t,Hh.VariableAssignment);if(D){e.WriteObjectStart();let m=D.isGlobal?"VAR=":"temp=";e.WriteProperty(m,D.variableName),D.isNewDeclaration||e.WriteProperty("re",true),e.WriteObjectEnd();return}if((0, ae.asOrNull)(t,Uh.Void)){e.Write("void");return}let p=(0, ae.asOrNull)(t,zh.Tag);if(p){e.WriteObjectStart(),e.WriteProperty("#",p.text),e.WriteObjectEnd();return}let S=(0, ae.asOrNull)(t,Kh.Choice);if(S){this.WriteChoice(e,S);return}throw new Error("Failed to convert runtime object to Json token: "+t)}static JObjectToDictionaryRuntimeObjs(e){let t=new Map;for(let n in e)if(e.hasOwnProperty(n)){let r=this.JTokenToRuntimeObject(e[n]);if(r===null)return (0, Ht.throwNullException)("inkObject");t.set(n,r);}return t}static JObjectToIntDictionary(e){let t=new Map;for(let n in e)e.hasOwnProperty(n)&&t.set(n,parseInt(e[n]));return t}static JTokenToRuntimeObject(e){if(typeof e=="number"&&!isNaN(e)||typeof e=="boolean")return Le.Value.Create(e);if(typeof e=="string"){let t=e.toString(),n=/^([0-9]+.[0-9]+f)$/.exec(t);if(n)return new Le.FloatValue(parseFloat(n[0]));let r=t[0];if(r=="^")return new Le.StringValue(t.substring(1));if(r==`
|
|
18
18
|
`&&t.length==1)return new Le.StringValue(`
|
|
19
|
-
`);if(t=="<>")return new qh.Glue;for(let a=0;a<i._controlCommandNames.length;++a){let s=i._controlCommandNames[a];if(t==s)return new M.ControlCommand(a)}if(t=="L^"&&(t="^"),Sl.NativeFunctionCall.CallExistsWithName(t))return Sl.NativeFunctionCall.CallWithName(t);if(t=="->->")return M.ControlCommand.PopTunnel();if(t=="~ret")return M.ControlCommand.PopFunction();if(t=="void")return new Jh.Void}if(typeof e=="object"&&!Array.isArray(e)){let t=e,n;if(t["^->"])return n=t["^->"],new Le.DivertTargetValue(new wg.Path(n.toString()));if(t["^var"]){n=t["^var"];let h=new Le.VariablePointerValue(n.toString());return "ci"in t&&(n=t.ci,h.contextIndex=parseInt(n)),h}let r=false,a=false,s=vn.PushPopType.Function,o=false;if((n=t["->"])?r=true:(n=t["f()"])?(r=true,a=true,s=vn.PushPopType.Function):(n=t["->t->"])?(r=true,a=true,s=vn.PushPopType.Tunnel):(n=t["x()"])&&(r=true,o=true,a=false,s=vn.PushPopType.Function),r){let h=new Mh.Divert;h.pushesToStack=a,h.stackPushType=s,h.isExternal=o;let c=n.toString();return (n=t.var)?h.variableDivertName=c:h.targetPathString=c,h.isConditional=!!t.c,o&&(n=t.exArgs)&&(h.externalArgs=parseInt(n)),h}if(n=t["*"]){let h=new Gh.ChoicePoint;return h.pathStringOnChoice=n.toString(),(n=t.flg)&&(h.flags=parseInt(n)),h}if(n=t["VAR?"])return new El.VariableReference(n.toString());if(n=t["CNT?"]){let h=new El.VariableReference;return h.pathStringForCount=n.toString(),h}let l=false,u=false;if((n=t["VAR="])?(l=true,u=true):(n=t["temp="])&&(l=true,u=false),l){let h=n.toString(),c=!t.re,d=new $h.VariableAssignment(h,c);return d.isGlobal=u,d}if(t["#"]!==void 0)return n=t["#"],new Hh.Tag(n.toString());if(n=t.list){let h=n,c=new _s.InkList;if(n=t.origins){let d=n;c.SetInitialOriginNames(d);}for(let d in h)if(h.hasOwnProperty(d)){let f=h[d],y=new _s.InkListItem(d),v=parseInt(f);c.Add(y,v);}return new Le.ListValue(c)}if(t.originalChoicePath!=null)return this.JObjectToChoice(t)}if(Array.isArray(e))return this.JArrayToContainer(e);if(e==null)return null;throw new Error("Failed to convert token to runtime object: "+this.toJson(e,["parent"]))}static toJson(e,t,n){return JSON.stringify(e,(r,a)=>t?.some(s=>s===r)?void 0:a,n)}static WriteRuntimeContainer(e,t,n=false){if(e.WriteArrayStart(),t===null)return (0, Ht.throwNullException)("container");for(let l of t.content)this.WriteRuntimeObject(e,l);let r=t.namedOnlyContent,a=t.countFlags,s=t.name!=null&&!n,o=r!=null||a>0||s;if(o&&e.WriteObjectStart(),r!=null)for(let[l,u]of r){let h=l,c=(0, ae.asOrNull)(u,xs.Container);e.WritePropertyStart(h),this.WriteRuntimeContainer(e,c,true),e.WritePropertyEnd();}a>0&&e.WriteIntProperty("#f",a),s&&e.WriteProperty("#n",t.name),o?e.WriteObjectEnd():e.WriteNull(),e.WriteArrayEnd();}static JArrayToContainer(e){let t=new xs.Container;t.content=this.JArrayToRuntimeObjList(e,true);let n=e[e.length-1];if(n!=null){let r=new Map;for(let a in n)if(a=="#f")t.countFlags=parseInt(n[a]);else if(a=="#n")t.name=n[a].toString();else {let s=this.JTokenToRuntimeObject(n[a]),o=(0, ae.asOrNull)(s,xs.Container);o&&(o.name=a),r.set(a,s);}t.namedOnlyContent=r;}return t}static JObjectToChoice(e){let t=new Uh.Choice;return t.text=e.text.toString(),t.index=parseInt(e.index),t.sourcePath=e.originalChoicePath.toString(),t.originalThreadIndex=parseInt(e.originalThreadIndex),t.pathStringOnChoice=e.targetPath.toString(),t.tags=this.JArrayToTags(e),t.isInvisibleDefault=!!e.isInvisibleDefault,t}static JArrayToTags(e){return e.tags?e.tags:null}static WriteChoice(e,t){e.WriteObjectStart(),e.WriteProperty("text",t.text),e.WriteIntProperty("index",t.index),e.WriteProperty("originalChoicePath",t.sourcePath),e.WriteIntProperty("originalThreadIndex",t.originalThreadIndex),e.WriteProperty("targetPath",t.pathStringOnChoice),e.WriteProperty("isInvisibleDefault",t.isInvisibleDefault),this.WriteChoiceTags(e,t),e.WriteObjectEnd();}static WriteChoiceTags(e,t){if(t.tags&&t.tags.length>0){e.WritePropertyStart("tags"),e.WriteArrayStart();for(let n of t.tags)e.Write(n);e.WriteArrayEnd(),e.WritePropertyEnd();}}static WriteInkList(e,t){let n=t.value;if(n===null)return (0, Ht.throwNullException)("rawList");e.WriteObjectStart(),e.WritePropertyStart("list"),e.WriteObjectStart();for(let[r,a]of n){let s=_s.InkListItem.fromSerializedKey(r),o=a;if(s.itemName===null)return (0, Ht.throwNullException)("item.itemName");e.WritePropertyNameStart(),e.WritePropertyNameInner(s.originName?s.originName:"?"),e.WritePropertyNameInner("."),e.WritePropertyNameInner(s.itemName),e.WritePropertyNameEnd(),e.Write(o),e.WritePropertyEnd();}if(e.WriteObjectEnd(),e.WritePropertyEnd(),n.Count==0&&n.originNames!=null&&n.originNames.length>0){e.WritePropertyStart("origins"),e.WriteArrayStart();for(let r of n.originNames)e.Write(r);e.WriteArrayEnd(),e.WritePropertyEnd();}e.WriteObjectEnd();}static ListDefinitionsToJToken(e){let t={};for(let n of e.lists){let r={};for(let[a,s]of n.items){let o=_s.InkListItem.fromSerializedKey(a);if(o.itemName===null)return (0, Ht.throwNullException)("item.itemName");r[o.itemName]=s;}t[n.name]=r;}return t}static JTokenToListDefinitions(e){let t=e,n=[];for(let r in t)if(t.hasOwnProperty(r)){let a=r.toString(),s=t[r],o=new Map;for(let u in s)if(t.hasOwnProperty(r)){let h=s[u];o.set(u,parseInt(h));}let l=new xg.ListDefinition(a,o);n.push(l);}return new _g.ListDefinitionsOrigin(n)}};Os.JsonSerialisation=Ts;Ts._controlCommandNames=(()=>{let i=[];i[M.ControlCommand.CommandType.EvalStart]="ev",i[M.ControlCommand.CommandType.EvalOutput]="out",i[M.ControlCommand.CommandType.EvalEnd]="/ev",i[M.ControlCommand.CommandType.Duplicate]="du",i[M.ControlCommand.CommandType.PopEvaluatedValue]="pop",i[M.ControlCommand.CommandType.PopFunction]="~ret",i[M.ControlCommand.CommandType.PopTunnel]="->->",i[M.ControlCommand.CommandType.BeginString]="str",i[M.ControlCommand.CommandType.EndString]="/str",i[M.ControlCommand.CommandType.NoOp]="nop",i[M.ControlCommand.CommandType.ChoiceCount]="choiceCnt",i[M.ControlCommand.CommandType.Turns]="turn",i[M.ControlCommand.CommandType.TurnsSince]="turns",i[M.ControlCommand.CommandType.ReadCount]="readc",i[M.ControlCommand.CommandType.Random]="rnd",i[M.ControlCommand.CommandType.SeedRandom]="srnd",i[M.ControlCommand.CommandType.VisitIndex]="visit",i[M.ControlCommand.CommandType.SequenceShuffleIndex]="seq",i[M.ControlCommand.CommandType.StartThread]="thread",i[M.ControlCommand.CommandType.Done]="done",i[M.ControlCommand.CommandType.End]="end",i[M.ControlCommand.CommandType.ListFromInt]="listInt",i[M.ControlCommand.CommandType.ListRange]="range",i[M.ControlCommand.CommandType.ListRandom]="lrnd",i[M.ControlCommand.CommandType.BeginTag]="#",i[M.ControlCommand.CommandType.EndTag]="/#";for(let e=0;e<M.ControlCommand.CommandType.TOTAL_VALUES;++e)if(i[e]==null)throw new Error("Control command not accounted for in serialisation");return i})();});var Al=b(ri=>{Object.defineProperty(ri,"__esModule",{value:true});ri.CallStack=void 0;var Dl=Mt(),zh=Ne(),Tg=si(),Kh=En(),Og=te(),Pg=Wt(),ni=Un(),Fg=Vn(),Xh=ln(),bl=me(),ii=class i{get elements(){return this.callStack}get depth(){return this.elements.length}get currentElement(){let t=this._threads[this._threads.length-1].callstack;return t[t.length-1]}get currentElementIndex(){return this.callStack.length-1}get currentThread(){return this._threads[this._threads.length-1]}set currentThread(e){Fg.Debug.Assert(this._threads.length==1,"Shouldn't be directly setting the current thread when we have a stack of them"),this._threads.length=0,this._threads.push(e);}get canPop(){return this.callStack.length>1}constructor(){if(this._threadCounter=0,this._startOfRoot=ni.Pointer.Null,arguments[0]instanceof Tg.Story){let e=arguments[0];this._startOfRoot=ni.Pointer.StartOf(e.rootContentContainer),this.Reset();}else {let e=arguments[0];this._threads=[];for(let t of e._threads)this._threads.push(t.Copy());this._threadCounter=e._threadCounter,this._startOfRoot=e._startOfRoot.copy();}}Reset(){this._threads=[],this._threads.push(new i.Thread),this._threads[0].callstack.push(new i.Element(Dl.PushPopType.Tunnel,this._startOfRoot));}SetJsonToken(e,t){this._threads.length=0;let n=e.threads;for(let r of n){let a=r,s=new i.Thread(a,t);this._threads.push(s);}this._threadCounter=parseInt(e.threadCounter),this._startOfRoot=ni.Pointer.StartOf(t.rootContentContainer);}WriteJson(e){e.WriteObject(t=>{t.WritePropertyStart("threads"),t.WriteArrayStart();for(let n of this._threads)n.WriteJson(t);t.WriteArrayEnd(),t.WritePropertyEnd(),t.WritePropertyStart("threadCounter"),t.WriteInt(this._threadCounter),t.WritePropertyEnd();});}PushThread(){let e=this.currentThread.Copy();this._threadCounter++,e.threadIndex=this._threadCounter,this._threads.push(e);}ForkThread(){let e=this.currentThread.Copy();return this._threadCounter++,e.threadIndex=this._threadCounter,e}PopThread(){if(this.canPopThread)this._threads.splice(this._threads.indexOf(this.currentThread),1);else throw new Error("Can't pop thread")}get canPopThread(){return this._threads.length>1&&!this.elementIsEvaluateFromGame}get elementIsEvaluateFromGame(){return this.currentElement.type==Dl.PushPopType.FunctionEvaluationFromGame}Push(e,t=0,n=0){let r=new i.Element(e,this.currentElement.currentPointer,false);r.evaluationStackHeightWhenPushed=t,r.functionStartInOutputStream=n,this.callStack.push(r);}CanPop(e=null){return this.canPop?e==null?true:this.currentElement.type==e:false}Pop(e=null){if(this.CanPop(e)){this.callStack.pop();return}else throw new Error("Mismatched push/pop in Callstack")}GetTemporaryVariableWithName(e,t=-1){t==-1&&(t=this.currentElementIndex+1);let n=this.callStack[t-1],r=(0, Xh.tryGetValueFromMap)(n.temporaryVariables,e,null);return r.exists?r.result:null}SetTemporaryVariable(e,t,n,r=-1){r==-1&&(r=this.currentElementIndex+1);let a=this.callStack[r-1];if(!n&&!a.temporaryVariables.get(e))throw new Error("Could not find temporary variable to set: "+e);let s=(0, Xh.tryGetValueFromMap)(a.temporaryVariables,e,null);s.exists&&Og.ListValue.RetainListOriginsForAssignment(s.result,t),a.temporaryVariables.set(e,t);}ContextForVariableNamed(e){return this.currentElement.temporaryVariables.get(e)?this.currentElementIndex+1:0}ThreadWithIndex(e){let t=this._threads.filter(n=>{if(n.threadIndex==e)return n});return t.length>0?t[0]:null}get callStack(){return this.currentThread.callstack}get callStackTrace(){let e=new Pg.StringBuilder;for(let t=0;t<this._threads.length;t++){let n=this._threads[t],r=t==this._threads.length-1;e.AppendFormat(`=== THREAD {0}/{1} {2}===
|
|
20
|
-
`,t+1,this._threads.length,r?"(current) ":"");for(let a=0;a<n.callstack.length;a++){n.callstack[a].type==Dl.PushPopType.Function?e.Append(" [FUNCTION] "):e.Append(" [TUNNEL] ");let s=n.callstack[a].currentPointer;if(!s.isNull){if(e.Append("<SOMEWHERE IN "),s.container===null)return (0, bl.throwNullException)("pointer.container");e.Append(s.container.path.toString()),e.AppendLine(">");}}}return e.toString()}};ri.CallStack=ii;(function(i){class e{constructor(r,a,s=false){this.evaluationStackHeightWhenPushed=0,this.functionStartInOutputStream=0,this.currentPointer=a.copy(),this.inExpressionEvaluation=s,this.temporaryVariables=new Map,this.type=r;}Copy(){let r=new e(this.type,this.currentPointer,this.inExpressionEvaluation);return r.temporaryVariables=new Map(this.temporaryVariables),r.evaluationStackHeightWhenPushed=this.evaluationStackHeightWhenPushed,r.functionStartInOutputStream=this.functionStartInOutputStream,r}}i.Element=e;class t{constructor(){if(this.threadIndex=0,this.previousPointer=ni.Pointer.Null,this.callstack=[],arguments[0]&&arguments[1]){let r=arguments[0],a=arguments[1];this.threadIndex=parseInt(r.threadIndex);let s=r.callstack;for(let l of s){let u=l,h=parseInt(u.type),c=ni.Pointer.Null,d,f=u.cPath;if(typeof f<"u"){d=f.toString();let A=a.ContentAtPath(new zh.Path(d));if(c.container=A.container,c.index=parseInt(u.idx),A.obj==null)throw new Error("When loading state, internal story location couldn't be found: "+d+". Has the story changed since this save data was created?");A.approximate&&(c.container!==null?a.Warning("When loading state, exact internal story location couldn't be found: '"+d+"', so it was approximated to '"+c.container.path.toString()+"' to recover. Has the story changed since this save data was created?"):a.Warning("When loading state, exact internal story location couldn't be found: '"+d+"' and it may not be recoverable. Has the story changed since this save data was created?"));}let y=!!u.exp,v=new e(h,c,y),w=u.temp;typeof w<"u"?v.temporaryVariables=Kh.JsonSerialisation.JObjectToDictionaryRuntimeObjs(w):v.temporaryVariables.clear(),this.callstack.push(v);}let o=r.previousContentObject;if(typeof o<"u"){let l=new zh.Path(o.toString());this.previousPointer=a.PointerAtPath(l);}}}Copy(){let r=new t;r.threadIndex=this.threadIndex;for(let a of this.callstack)r.callstack.push(a.Copy());return r.previousPointer=this.previousPointer.copy(),r}WriteJson(r){r.WriteObjectStart(),r.WritePropertyStart("callstack"),r.WriteArrayStart();for(let a of this.callstack){if(r.WriteObjectStart(),!a.currentPointer.isNull){if(a.currentPointer.container===null)return (0, bl.throwNullException)("el.currentPointer.container");r.WriteProperty("cPath",a.currentPointer.container.path.componentsString),r.WriteIntProperty("idx",a.currentPointer.index);}r.WriteProperty("exp",a.inExpressionEvaluation),r.WriteIntProperty("type",a.type),a.temporaryVariables.size>0&&(r.WritePropertyStart("temp"),Kh.JsonSerialisation.WriteDictionaryRuntimeObjs(r,a.temporaryVariables),r.WritePropertyEnd()),r.WriteObjectEnd();}if(r.WriteArrayEnd(),r.WritePropertyEnd(),r.WriteIntProperty("threadIndex",this.threadIndex),!this.previousPointer.isNull){let a=this.previousPointer.Resolve();if(a===null)return (0, bl.throwNullException)("this.previousPointer.Resolve()");r.WriteProperty("previousContentObject",a.path.toString());}r.WriteObjectEnd();}}i.Thread=t;})(ii||(ri.CallStack=ii={}));});var Qh=b(Fs=>{Object.defineProperty(Fs,"__esModule",{value:true});Fs.VariablesState=void 0;var fe=te(),Ng=Rn(),Yh=En(),Ce=U(),ai=ln(),Ot=me();function Ig(){return class{}}var Ps=class i extends Ig(){variableChangedEvent(e,t){for(let n of this.variableChangedEventCallbacks)n(e,t);}StartVariableObservation(){this._batchObservingVariableChanges=true,this._changedVariablesForBatchObs=new Set;}CompleteVariableObservation(){this._batchObservingVariableChanges=false;let e=new Map;if(this._changedVariablesForBatchObs!=null)for(let t of this._changedVariablesForBatchObs){let n=this._globalVariables.get(t);this.variableChangedEvent(t,n);}if(this.patch!=null)for(let t of this.patch.changedVariables){let n=this.patch.TryGetGlobal(t,null);n.exists&&e.set(t,n);}return this._changedVariablesForBatchObs=null,e}NotifyObservers(e){for(let[t,n]of e)this.variableChangedEvent(t,n);}get callStack(){return this._callStack}set callStack(e){this._callStack=e;}$(e,t){if(typeof t>"u"){let n=null;return this.patch!==null&&(n=this.patch.TryGetGlobal(e,null),n.exists)?n.result.valueObject:(n=this._globalVariables.get(e),typeof n>"u"&&(n=this._defaultGlobalVariables.get(e)),typeof n<"u"?n.valueObject:null)}else {if(typeof this._defaultGlobalVariables.get(e)>"u")throw new Ng.StoryException("Cannot assign to a variable ("+e+") that hasn't been declared in the story");let n=fe.Value.Create(t);if(n==null)throw t==null?new Error("Cannot pass null to VariableState"):new Error("Invalid value passed to VariableState: "+t.toString());this.SetGlobal(e,n);}}constructor(e,t){super(),this.variableChangedEventCallbacks=[],this.patch=null,this._defaultGlobalVariables=new Map,this._changedVariablesForBatchObs=new Set,this._batchObservingVariableChanges=false,this._globalVariables=new Map,this._callStack=e,this._listDefsOrigin=t;try{return new Proxy(this,{get(r,a){return a in r?r[a]:r.$(a)},set(r,a,s){return a in r?r[a]=s:r.$(a,s),!0},ownKeys(r){return [...new Set([...r._defaultGlobalVariables.keys(),...r._globalVariables.keys()])]},getOwnPropertyDescriptor(r,a){return {enumerable:!0,configurable:!0,value:r.$(a)}}})}catch{}}ApplyPatch(){if(this.patch===null)return (0, Ot.throwNullException)("this.patch");for(let[e,t]of this.patch.globals)this._globalVariables.set(e,t);if(this._changedVariablesForBatchObs!==null)for(let e of this.patch.changedVariables)this._changedVariablesForBatchObs.add(e);this.patch=null;}SetJsonToken(e){this._globalVariables.clear();for(let[t,n]of this._defaultGlobalVariables){let r=e[t];if(typeof r<"u"){let a=Yh.JsonSerialisation.JTokenToRuntimeObject(r);if(a===null)return (0, Ot.throwNullException)("tokenInkObject");this._globalVariables.set(t,a);}else this._globalVariables.set(t,n);}}WriteJson(e){e.WriteObjectStart();for(let[t,n]of this._globalVariables){let r=t,a=n;if(i.dontSaveDefaultValues&&this._defaultGlobalVariables.has(r)){let s=this._defaultGlobalVariables.get(r);if(this.RuntimeObjectsEqual(a,s))continue}e.WritePropertyStart(r),Yh.JsonSerialisation.WriteRuntimeObject(e,a),e.WritePropertyEnd();}e.WriteObjectEnd();}RuntimeObjectsEqual(e,t){if(e===null)return (0, Ot.throwNullException)("obj1");if(t===null)return (0, Ot.throwNullException)("obj2");if(e.constructor!==t.constructor)return false;let n=(0, Ce.asOrNull)(e,fe.BoolValue);if(n!==null)return n.value===(0, Ce.asOrThrows)(t,fe.BoolValue).value;let r=(0, Ce.asOrNull)(e,fe.IntValue);if(r!==null)return r.value===(0, Ce.asOrThrows)(t,fe.IntValue).value;let a=(0, Ce.asOrNull)(e,fe.FloatValue);if(a!==null)return a.value===(0, Ce.asOrThrows)(t,fe.FloatValue).value;let s=(0, Ce.asOrNull)(e,fe.Value),o=(0, Ce.asOrNull)(t,fe.Value);if(s!==null&&o!==null)return (0, Ce.isEquatable)(s.valueObject)&&(0, Ce.isEquatable)(o.valueObject)?s.valueObject.Equals(o.valueObject):s.valueObject===o.valueObject;throw new Error("FastRoughDefinitelyEquals: Unsupported runtime object type: "+e.constructor.name)}GetVariableWithName(e,t=-1){let n=this.GetRawVariableWithName(e,t),r=(0, Ce.asOrNull)(n,fe.VariablePointerValue);return r!==null&&(n=this.ValueAtVariablePointer(r)),n}TryGetDefaultVariableValue(e){let t=(0, ai.tryGetValueFromMap)(this._defaultGlobalVariables,e,null);return t.exists?t.result:null}GlobalVariableExistsWithName(e){return this._globalVariables.has(e)||this._defaultGlobalVariables!==null&&this._defaultGlobalVariables.has(e)}GetRawVariableWithName(e,t){let n=null;if(t==0||t==-1){let r=null;if(this.patch!==null&&(r=this.patch.TryGetGlobal(e,null),r.exists)||(r=(0, ai.tryGetValueFromMap)(this._globalVariables,e,null),r.exists)||this._defaultGlobalVariables!==null&&(r=(0, ai.tryGetValueFromMap)(this._defaultGlobalVariables,e,null),r.exists))return r.result;if(this._listDefsOrigin===null)return (0, Ot.throwNullException)("VariablesState._listDefsOrigin");let a=this._listDefsOrigin.FindSingleItemListWithName(e);if(a)return a}return n=this._callStack.GetTemporaryVariableWithName(e,t),n}ValueAtVariablePointer(e){return this.GetVariableWithName(e.variableName,e.contextIndex)}Assign(e,t){let n=e.variableName;if(n===null)return (0, Ot.throwNullException)("name");let r=-1,a=false;if(e.isNewDeclaration?a=e.isGlobal:a=this.GlobalVariableExistsWithName(n),e.isNewDeclaration){let s=(0, Ce.asOrNull)(t,fe.VariablePointerValue);s!==null&&(t=this.ResolveVariablePointer(s));}else {let s=null;do s=(0, Ce.asOrNull)(this.GetRawVariableWithName(n,r),fe.VariablePointerValue),s!=null&&(n=s.variableName,r=s.contextIndex,a=r==0);while(s!=null)}a?this.SetGlobal(n,t):this._callStack.SetTemporaryVariable(n,t,e.isNewDeclaration,r);}SnapshotDefaultGlobals(){this._defaultGlobalVariables=new Map(this._globalVariables);}RetainListOriginsForAssignment(e,t){let n=(0, Ce.asOrThrows)(e,fe.ListValue),r=(0, Ce.asOrThrows)(t,fe.ListValue);n.value&&r.value&&r.value.Count==0&&r.value.SetInitialOriginNames(n.value.originNames);}SetGlobal(e,t){let n=null;if(this.patch===null&&(n=(0, ai.tryGetValueFromMap)(this._globalVariables,e,null)),this.patch!==null&&(n=this.patch.TryGetGlobal(e,null),n.exists||(n=(0, ai.tryGetValueFromMap)(this._globalVariables,e,null))),fe.ListValue.RetainListOriginsForAssignment(n.result,t),e===null)return (0, Ot.throwNullException)("variableName");if(this.patch!==null?this.patch.SetGlobal(e,t):this._globalVariables.set(e,t),this.variableChangedEvent!==null&&n!==null&&t!==n.result)if(this._batchObservingVariableChanges){if(this._changedVariablesForBatchObs===null)return (0, Ot.throwNullException)("this._changedVariablesForBatchObs");this.patch!==null?this.patch.AddChangedVariable(e):this._changedVariablesForBatchObs!==null&&this._changedVariablesForBatchObs.add(e);}else this.variableChangedEvent(e,t);}ResolveVariablePointer(e){let t=e.contextIndex;t==-1&&(t=this.GetContextIndexOfVariableNamed(e.variableName));let n=this.GetRawVariableWithName(e.variableName,t),r=(0, Ce.asOrNull)(n,fe.VariablePointerValue);return r??new fe.VariablePointerValue(e.variableName,t)}GetContextIndexOfVariableNamed(e){return this.GlobalVariableExistsWithName(e)?0:this._callStack.currentElementIndex}ObserveVariableChange(e){this.variableChangedEventCallbacks.push(e);}};Fs.VariablesState=Ps;Ps.dontSaveDefaultValues=true;});var xl=b(Ns=>{Object.defineProperty(Ns,"__esModule",{value:true});Ns.PRNG=void 0;var wl=class{constructor(e){this.seed=e%2147483647,this.seed<=0&&(this.seed+=2147483646);}next(){return this.seed=this.seed*48271%2147483647}nextFloat(){return (this.next()-1)/2147483646}};Ns.PRNG=wl;});var Zh=b(Is=>{Object.defineProperty(Is,"__esModule",{value:true});Is.StatePatch=void 0;var _l=class{get globals(){return this._globals}get changedVariables(){return this._changedVariables}get visitCounts(){return this._visitCounts}get turnIndices(){return this._turnIndices}constructor(){if(this._changedVariables=new Set,this._visitCounts=new Map,this._turnIndices=new Map,arguments.length===1&&arguments[0]!==null){let e=arguments[0];this._globals=new Map(e._globals),this._changedVariables=new Set(e._changedVariables),this._visitCounts=new Map(e._visitCounts),this._turnIndices=new Map(e._turnIndices);}else this._globals=new Map,this._changedVariables=new Set,this._visitCounts=new Map,this._turnIndices=new Map;}TryGetGlobal(e,t){return e!==null&&this._globals.has(e)?{result:this._globals.get(e),exists:true}:{result:t,exists:false}}SetGlobal(e,t){this._globals.set(e,t);}AddChangedVariable(e){return this._changedVariables.add(e)}TryGetVisitCount(e,t){return this._visitCounts.has(e)?{result:this._visitCounts.get(e),exists:true}:{result:t,exists:false}}SetVisitCount(e,t){this._visitCounts.set(e,t);}SetTurnIndex(e,t){this._turnIndices.set(e,t);}TryGetTurnIndex(e,t){return this._turnIndices.has(e)?{result:this._turnIndices.get(e),exists:true}:{result:t,exists:false}}};Is.StatePatch=_l;});var Tl=b(li=>{Object.defineProperty(li,"__esModule",{value:true});li.SimpleJson=void 0;var oi=class i{static TextToDictionary(e){return new i.Reader(e).ToDictionary()}static TextToArray(e){return new i.Reader(e).ToArray()}};li.SimpleJson=oi;(function(i){class e{constructor(r){if(JSON.parse("0",(s,o,l)=>l!=null)){let s=(o,l,u)=>Number.isInteger(l)&&u.source.endsWith(".0")?u.source+"f":l;this._rootObject=JSON.parse(r,s);}else {let s=r.replace(/(,\s*)([0-9]+\.[0]+)([,]*)/g,'$1"$2f"$3');this._rootObject=JSON.parse(s);}}ToDictionary(){return this._rootObject}ToArray(){return this._rootObject}}i.Reader=e;class t{constructor(){this._currentPropertyName=null,this._currentString=null,this._stateStack=[],this._collectionStack=[],this._propertyNameStack=[],this._jsonObject=null;}WriteObject(r){this.WriteObjectStart(),r(this),this.WriteObjectEnd();}WriteObjectStart(){this.StartNewObject(true);let r={};if(this.state===i.Writer.State.Property){this.Assert(this.currentCollection!==null),this.Assert(this.currentPropertyName!==null);let a=this._propertyNameStack.pop();this.currentCollection[a]=r,this._collectionStack.push(r);}else this.state===i.Writer.State.Array?(this.Assert(this.currentCollection!==null),this.currentCollection.push(r),this._collectionStack.push(r)):(this.Assert(this.state===i.Writer.State.None),this._jsonObject=r,this._collectionStack.push(r));this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Object));}WriteObjectEnd(){this.Assert(this.state===i.Writer.State.Object),this._collectionStack.pop(),this._stateStack.pop();}WriteProperty(r,a){if(this.WritePropertyStart(r),arguments[1]instanceof Function){let s=arguments[1];s(this);}else {let s=arguments[1];this.Write(s);}this.WritePropertyEnd();}WriteIntProperty(r,a){this.WritePropertyStart(r),this.WriteInt(a),this.WritePropertyEnd();}WriteFloatProperty(r,a){this.WritePropertyStart(r),this.WriteFloat(a),this.WritePropertyEnd();}WritePropertyStart(r){this.Assert(this.state===i.Writer.State.Object),this._propertyNameStack.push(r),this.IncrementChildCount(),this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Property));}WritePropertyEnd(){this.Assert(this.state===i.Writer.State.Property),this.Assert(this.childCount===1),this._stateStack.pop();}WritePropertyNameStart(){this.Assert(this.state===i.Writer.State.Object),this.IncrementChildCount(),this._currentPropertyName="",this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Property)),this._stateStack.push(new i.Writer.StateElement(i.Writer.State.PropertyName));}WritePropertyNameEnd(){this.Assert(this.state===i.Writer.State.PropertyName),this.Assert(this._currentPropertyName!==null),this._propertyNameStack.push(this._currentPropertyName),this._currentPropertyName=null,this._stateStack.pop();}WritePropertyNameInner(r){this.Assert(this.state===i.Writer.State.PropertyName),this.Assert(this._currentPropertyName!==null),this._currentPropertyName+=r;}WriteArrayStart(){this.StartNewObject(true);let r=[];if(this.state===i.Writer.State.Property){this.Assert(this.currentCollection!==null),this.Assert(this.currentPropertyName!==null);let a=this._propertyNameStack.pop();this.currentCollection[a]=r,this._collectionStack.push(r);}else this.state===i.Writer.State.Array?(this.Assert(this.currentCollection!==null),this.currentCollection.push(r),this._collectionStack.push(r)):(this.Assert(this.state===i.Writer.State.None),this._jsonObject=r,this._collectionStack.push(r));this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Array));}WriteArrayEnd(){this.Assert(this.state===i.Writer.State.Array),this._collectionStack.pop(),this._stateStack.pop();}Write(r,a=true){if(r===null){console.error("Warning: trying to write a null value");return}this.StartNewObject(false),this._addToCurrentObject(r);}WriteBool(r){r!==null&&(this.StartNewObject(false),this._addToCurrentObject(r));}WriteInt(r){r!==null&&(this.StartNewObject(false),this._addToCurrentObject(Math.floor(r)));}WriteFloat(r){r!==null&&(this.StartNewObject(false),r==Number.POSITIVE_INFINITY?this._addToCurrentObject(34e37):r==Number.NEGATIVE_INFINITY?this._addToCurrentObject(-34e37):isNaN(r)?this._addToCurrentObject(0):this._addToCurrentObject(r));}WriteNull(){this.StartNewObject(false),this._addToCurrentObject(null);}WriteStringStart(){this.StartNewObject(false),this._currentString="",this._stateStack.push(new i.Writer.StateElement(i.Writer.State.String));}WriteStringEnd(){this.Assert(this.state==i.Writer.State.String),this._stateStack.pop(),this._addToCurrentObject(this._currentString),this._currentString=null;}WriteStringInner(r,a=true){if(this.Assert(this.state===i.Writer.State.String),r===null){console.error("Warning: trying to write a null string");return}this._currentString+=r;}toString(){return this._jsonObject===null?"":JSON.stringify(this._jsonObject)}StartNewObject(r){r?this.Assert(this.state===i.Writer.State.None||this.state===i.Writer.State.Property||this.state===i.Writer.State.Array):this.Assert(this.state===i.Writer.State.Property||this.state===i.Writer.State.Array),this.state===i.Writer.State.Property&&this.Assert(this.childCount===0),(this.state===i.Writer.State.Array||this.state===i.Writer.State.Property)&&this.IncrementChildCount();}get state(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1].type:i.Writer.State.None}get childCount(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1].childCount:0}get currentCollection(){return this._collectionStack.length>0?this._collectionStack[this._collectionStack.length-1]:null}get currentPropertyName(){return this._propertyNameStack.length>0?this._propertyNameStack[this._propertyNameStack.length-1]:null}IncrementChildCount(){this.Assert(this._stateStack.length>0);let r=this._stateStack.pop();r.childCount++,this._stateStack.push(r);}Assert(r){if(!r)throw Error("Assert failed while writing JSON")}_addToCurrentObject(r){this.Assert(this.currentCollection!==null),this.state===i.Writer.State.Array?(this.Assert(Array.isArray(this.currentCollection)),this.currentCollection.push(r)):this.state===i.Writer.State.Property&&(this.Assert(!Array.isArray(this.currentCollection)),this.Assert(this.currentPropertyName!==null),this.currentCollection[this.currentPropertyName]=r,this._propertyNameStack.pop());}}i.Writer=t,(function(n){(function(s){s[s.None=0]="None",s[s.Object=1]="Object",s[s.Array=2]="Array",s[s.Property=3]="Property",s[s.PropertyName=4]="PropertyName",s[s.String=5]="String";})(n.State||(n.State={}));class a{constructor(o){this.type=i.Writer.State.None,this.childCount=0,this.type=o;}}n.StateElement=a;})(t=i.Writer||(i.Writer={}));})(oi||(li.SimpleJson=oi={}));});var tc=b(ks=>{Object.defineProperty(ks,"__esModule",{value:true});ks.Flow=void 0;var ec=Al(),Vs=En(),Vg=me(),Ol=class{constructor(){let e=arguments[0],t=arguments[1];if(this.name=e,this.callStack=new ec.CallStack(t),arguments[2]){let n=arguments[2];this.callStack.SetJsonToken(n.callstack,t),this.outputStream=Vs.JsonSerialisation.JArrayToRuntimeObjList(n.outputStream),this.currentChoices=Vs.JsonSerialisation.JArrayToRuntimeObjList(n.currentChoices);let r=n.choiceThreads;typeof r<"u"&&this.LoadFlowChoiceThreads(r,t);}else this.outputStream=[],this.currentChoices=[];}WriteJson(e){e.WriteObjectStart(),e.WriteProperty("callstack",n=>this.callStack.WriteJson(n)),e.WriteProperty("outputStream",n=>Vs.JsonSerialisation.WriteListRuntimeObjs(n,this.outputStream));let t=false;for(let n of this.currentChoices){if(n.threadAtGeneration===null)return (0, Vg.throwNullException)("c.threadAtGeneration");n.originalThreadIndex=n.threadAtGeneration.threadIndex,this.callStack.ThreadWithIndex(n.originalThreadIndex)===null&&(t||(t=true,e.WritePropertyStart("choiceThreads"),e.WriteObjectStart()),e.WritePropertyStart(n.originalThreadIndex),n.threadAtGeneration.WriteJson(e),e.WritePropertyEnd());}t&&(e.WriteObjectEnd(),e.WritePropertyEnd()),e.WriteProperty("currentChoices",n=>{n.WriteArrayStart();for(let r of this.currentChoices)Vs.JsonSerialisation.WriteChoice(n,r);n.WriteArrayEnd();}),e.WriteObjectEnd();}LoadFlowChoiceThreads(e,t){for(let n of this.currentChoices){let r=this.callStack.ThreadWithIndex(n.originalThreadIndex);if(r!==null)n.threadAtGeneration=r.Copy();else {let a=e[`${n.originalThreadIndex}`];n.threadAtGeneration=new ec.CallStack.Thread(a,t);}}}};ks.Flow=Ol;});var rc=b(Ls=>{Object.defineProperty(Ls,"__esModule",{value:true});Ls.StoryState=void 0;var kg=Al(),Rg=Qh(),he=te(),Pt=Mt(),Lg=bs(),Pl=ps(),nc=Ne(),Te=ge(),Fl=Wt(),Ft=En(),Bg=xl(),Wg=qt(),Sn=Un(),ui=ln(),oe=U(),jg=Vn(),ze=me(),qg=si(),Mg=Zh(),ic=Tl(),Rs=tc(),Gg=ke(),Nl=class i{ToJson(e=false){let t=new ic.SimpleJson.Writer;return this.WriteJson(t),t.toString()}toJson(e=false){return this.ToJson(e)}LoadJson(e){let t=ic.SimpleJson.TextToDictionary(e);this.LoadJsonObj(t),this.onDidLoadState!==null&&this.onDidLoadState();}VisitCountAtPathString(e){let t;if(this._patch!==null){let n=this.story.ContentAtPath(new nc.Path(e)).container;if(n===null)throw new Error("Content at path not found: "+e);if(t=this._patch.TryGetVisitCount(n,0),t.exists)return t.result}return t=(0, ui.tryGetValueFromMap)(this._visitCounts,e,null),t.exists?t.result:0}VisitCountForContainer(e){if(e===null)return (0, ze.throwNullException)("container");if(!e.visitsShouldBeCounted)return this.story.Error("Read count for target ("+e.name+" - on "+e.debugMetadata+") unknown. The story may need to be compiled with countAllVisits flag (-c)."),0;if(this._patch!==null){let r=this._patch.TryGetVisitCount(e,0);if(r.exists)return r.result}let t=e.path.toString(),n=(0, ui.tryGetValueFromMap)(this._visitCounts,t,null);return n.exists?n.result:0}IncrementVisitCountForContainer(e){if(this._patch!==null){let r=this.VisitCountForContainer(e);r++,this._patch.SetVisitCount(e,r);return}let t=e.path.toString(),n=(0, ui.tryGetValueFromMap)(this._visitCounts,t,null);n.exists?this._visitCounts.set(t,n.result+1):this._visitCounts.set(t,1);}RecordTurnIndexVisitToContainer(e){if(this._patch!==null){this._patch.SetTurnIndex(e,this.currentTurnIndex);return}let t=e.path.toString();this._turnIndices.set(t,this.currentTurnIndex);}TurnsSinceForContainer(e){if(e.turnIndexShouldBeCounted||this.story.Error("TURNS_SINCE() for target ("+e.name+" - on "+e.debugMetadata+") unknown. The story may need to be compiled with countAllVisits flag (-c)."),this._patch!==null){let r=this._patch.TryGetTurnIndex(e,0);if(r.exists)return this.currentTurnIndex-r.result}let t=e.path.toString(),n=(0, ui.tryGetValueFromMap)(this._turnIndices,t,0);return n.exists?this.currentTurnIndex-n.result:-1}get callstackDepth(){return this.callStack.depth}get outputStream(){return this._currentFlow.outputStream}get currentChoices(){return this.canContinue?[]:this._currentFlow.currentChoices}get generatedChoices(){return this._currentFlow.currentChoices}get currentErrors(){return this._currentErrors}get currentWarnings(){return this._currentWarnings}get variablesState(){return this._variablesState}set variablesState(e){this._variablesState=e;}get callStack(){return this._currentFlow.callStack}get evaluationStack(){return this._evaluationStack}get currentTurnIndex(){return this._currentTurnIndex}set currentTurnIndex(e){this._currentTurnIndex=e;}get currentPathString(){let e=this.currentPointer;return e.isNull?null:e.path===null?(0, ze.throwNullException)("pointer.path"):e.path.toString()}get previousPathString(){let e=this.previousPointer;return e.isNull?null:e.path===null?(0, ze.throwNullException)("previousPointer.path"):e.path.toString()}get currentPointer(){return this.callStack.currentElement.currentPointer.copy()}set currentPointer(e){this.callStack.currentElement.currentPointer=e.copy();}get previousPointer(){return this.callStack.currentThread.previousPointer.copy()}set previousPointer(e){this.callStack.currentThread.previousPointer=e.copy();}get canContinue(){return !this.currentPointer.isNull&&!this.hasError}get hasError(){return this.currentErrors!=null&&this.currentErrors.length>0}get hasWarning(){return this.currentWarnings!=null&&this.currentWarnings.length>0}get currentText(){if(this._outputStreamTextDirty){let e=new Fl.StringBuilder,t=false;for(let n of this.outputStream){let r=(0, oe.asOrNull)(n,he.StringValue);if(!t&&r!==null)e.Append(r.value);else {let a=(0, oe.asOrNull)(n,Te.ControlCommand);a!==null&&(a.commandType==Te.ControlCommand.CommandType.BeginTag?t=true:a.commandType==Te.ControlCommand.CommandType.EndTag&&(t=false));}}this._currentText=this.CleanOutputWhitespace(e.toString()),this._outputStreamTextDirty=false;}return this._currentText}CleanOutputWhitespace(e){let t=new Fl.StringBuilder,n=-1,r=0;for(let a=0;a<e.length;a++){let s=e.charAt(a),o=s==" "||s==" ";o&&n==-1&&(n=a),o||(s!=`
|
|
19
|
+
`);if(t=="<>")return new Gh.Glue;for(let a=0;a<i._controlCommandNames.length;++a){let s=i._controlCommandNames[a];if(t==s)return new M.ControlCommand(a)}if(t=="L^"&&(t="^"),Sl.NativeFunctionCall.CallExistsWithName(t))return Sl.NativeFunctionCall.CallWithName(t);if(t=="->->")return M.ControlCommand.PopTunnel();if(t=="~ret")return M.ControlCommand.PopFunction();if(t=="void")return new Uh.Void}if(typeof e=="object"&&!Array.isArray(e)){let t=e,n;if(t["^->"])return n=t["^->"],new Le.DivertTargetValue(new wg.Path(n.toString()));if(t["^var"]){n=t["^var"];let h=new Le.VariablePointerValue(n.toString());return "ci"in t&&(n=t.ci,h.contextIndex=parseInt(n)),h}let r=false,a=false,s=vn.PushPopType.Function,o=false;if((n=t["->"])?r=true:(n=t["f()"])?(r=true,a=true,s=vn.PushPopType.Function):(n=t["->t->"])?(r=true,a=true,s=vn.PushPopType.Tunnel):(n=t["x()"])&&(r=true,o=true,a=false,s=vn.PushPopType.Function),r){let h=new $h.Divert;h.pushesToStack=a,h.stackPushType=s,h.isExternal=o;let c=n.toString();return (n=t.var)?h.variableDivertName=c:h.targetPathString=c,h.isConditional=!!t.c,o&&(n=t.exArgs)&&(h.externalArgs=parseInt(n)),h}if(n=t["*"]){let h=new Jh.ChoicePoint;return h.pathStringOnChoice=n.toString(),(n=t.flg)&&(h.flags=parseInt(n)),h}if(n=t["VAR?"])return new El.VariableReference(n.toString());if(n=t["CNT?"]){let h=new El.VariableReference;return h.pathStringForCount=n.toString(),h}let l=false,u=false;if((n=t["VAR="])?(l=true,u=true):(n=t["temp="])&&(l=true,u=false),l){let h=n.toString(),c=!t.re,d=new Hh.VariableAssignment(h,c);return d.isGlobal=u,d}if(t["#"]!==void 0)return n=t["#"],new zh.Tag(n.toString());if(n=t.list){let h=n,c=new _s.InkList;if(n=t.origins){let d=n;c.SetInitialOriginNames(d);}for(let d in h)if(h.hasOwnProperty(d)){let f=h[d],y=new _s.InkListItem(d),v=parseInt(f);c.Add(y,v);}return new Le.ListValue(c)}if(t.originalChoicePath!=null)return this.JObjectToChoice(t)}if(Array.isArray(e))return this.JArrayToContainer(e);if(e==null)return null;throw new Error("Failed to convert token to runtime object: "+this.toJson(e,["parent"]))}static toJson(e,t,n){return JSON.stringify(e,(r,a)=>t?.some(s=>s===r)?void 0:a,n)}static WriteRuntimeContainer(e,t,n=false){if(e.WriteArrayStart(),t===null)return (0, Ht.throwNullException)("container");for(let l of t.content)this.WriteRuntimeObject(e,l);let r=t.namedOnlyContent,a=t.countFlags,s=t.name!=null&&!n,o=r!=null||a>0||s;if(o&&e.WriteObjectStart(),r!=null)for(let[l,u]of r){let h=l,c=(0, ae.asOrNull)(u,xs.Container);e.WritePropertyStart(h),this.WriteRuntimeContainer(e,c,true),e.WritePropertyEnd();}a>0&&e.WriteIntProperty("#f",a),s&&e.WriteProperty("#n",t.name),o?e.WriteObjectEnd():e.WriteNull(),e.WriteArrayEnd();}static JArrayToContainer(e){let t=new xs.Container;t.content=this.JArrayToRuntimeObjList(e,true);let n=e[e.length-1];if(n!=null){let r=new Map;for(let a in n)if(a=="#f")t.countFlags=parseInt(n[a]);else if(a=="#n")t.name=n[a].toString();else {let s=this.JTokenToRuntimeObject(n[a]),o=(0, ae.asOrNull)(s,xs.Container);o&&(o.name=a),r.set(a,s);}t.namedOnlyContent=r;}return t}static JObjectToChoice(e){let t=new Kh.Choice;return t.text=e.text.toString(),t.index=parseInt(e.index),t.sourcePath=e.originalChoicePath.toString(),t.originalThreadIndex=parseInt(e.originalThreadIndex),t.pathStringOnChoice=e.targetPath.toString(),t.tags=this.JArrayToTags(e),t.isInvisibleDefault=!!e.isInvisibleDefault,t}static JArrayToTags(e){return e.tags?e.tags:null}static WriteChoice(e,t){e.WriteObjectStart(),e.WriteProperty("text",t.text),e.WriteIntProperty("index",t.index),e.WriteProperty("originalChoicePath",t.sourcePath),e.WriteIntProperty("originalThreadIndex",t.originalThreadIndex),e.WriteProperty("targetPath",t.pathStringOnChoice),e.WriteProperty("isInvisibleDefault",t.isInvisibleDefault),this.WriteChoiceTags(e,t),e.WriteObjectEnd();}static WriteChoiceTags(e,t){if(t.tags&&t.tags.length>0){e.WritePropertyStart("tags"),e.WriteArrayStart();for(let n of t.tags)e.Write(n);e.WriteArrayEnd(),e.WritePropertyEnd();}}static WriteInkList(e,t){let n=t.value;if(n===null)return (0, Ht.throwNullException)("rawList");e.WriteObjectStart(),e.WritePropertyStart("list"),e.WriteObjectStart();for(let[r,a]of n){let s=_s.InkListItem.fromSerializedKey(r),o=a;if(s.itemName===null)return (0, Ht.throwNullException)("item.itemName");e.WritePropertyNameStart(),e.WritePropertyNameInner(s.originName?s.originName:"?"),e.WritePropertyNameInner("."),e.WritePropertyNameInner(s.itemName),e.WritePropertyNameEnd(),e.Write(o),e.WritePropertyEnd();}if(e.WriteObjectEnd(),e.WritePropertyEnd(),n.Count==0&&n.originNames!=null&&n.originNames.length>0){e.WritePropertyStart("origins"),e.WriteArrayStart();for(let r of n.originNames)e.Write(r);e.WriteArrayEnd(),e.WritePropertyEnd();}e.WriteObjectEnd();}static ListDefinitionsToJToken(e){let t={};for(let n of e.lists){let r={};for(let[a,s]of n.items){let o=_s.InkListItem.fromSerializedKey(a);if(o.itemName===null)return (0, Ht.throwNullException)("item.itemName");r[o.itemName]=s;}t[n.name]=r;}return t}static JTokenToListDefinitions(e){let t=e,n=[];for(let r in t)if(t.hasOwnProperty(r)){let a=r.toString(),s=t[r],o=new Map;for(let u in s)if(t.hasOwnProperty(r)){let h=s[u];o.set(u,parseInt(h));}let l=new xg.ListDefinition(a,o);n.push(l);}return new _g.ListDefinitionsOrigin(n)}};Os.JsonSerialisation=Ts;Ts._controlCommandNames=(()=>{let i=[];i[M.ControlCommand.CommandType.EvalStart]="ev",i[M.ControlCommand.CommandType.EvalOutput]="out",i[M.ControlCommand.CommandType.EvalEnd]="/ev",i[M.ControlCommand.CommandType.Duplicate]="du",i[M.ControlCommand.CommandType.PopEvaluatedValue]="pop",i[M.ControlCommand.CommandType.PopFunction]="~ret",i[M.ControlCommand.CommandType.PopTunnel]="->->",i[M.ControlCommand.CommandType.BeginString]="str",i[M.ControlCommand.CommandType.EndString]="/str",i[M.ControlCommand.CommandType.NoOp]="nop",i[M.ControlCommand.CommandType.ChoiceCount]="choiceCnt",i[M.ControlCommand.CommandType.Turns]="turn",i[M.ControlCommand.CommandType.TurnsSince]="turns",i[M.ControlCommand.CommandType.ReadCount]="readc",i[M.ControlCommand.CommandType.Random]="rnd",i[M.ControlCommand.CommandType.SeedRandom]="srnd",i[M.ControlCommand.CommandType.VisitIndex]="visit",i[M.ControlCommand.CommandType.SequenceShuffleIndex]="seq",i[M.ControlCommand.CommandType.StartThread]="thread",i[M.ControlCommand.CommandType.Done]="done",i[M.ControlCommand.CommandType.End]="end",i[M.ControlCommand.CommandType.ListFromInt]="listInt",i[M.ControlCommand.CommandType.ListRange]="range",i[M.ControlCommand.CommandType.ListRandom]="lrnd",i[M.ControlCommand.CommandType.BeginTag]="#",i[M.ControlCommand.CommandType.EndTag]="/#";for(let e=0;e<M.ControlCommand.CommandType.TOTAL_VALUES;++e)if(i[e]==null)throw new Error("Control command not accounted for in serialisation");return i})();});var Al=A(ri=>{Object.defineProperty(ri,"__esModule",{value:true});ri.CallStack=void 0;var Dl=Mt(),Xh=Ne(),Tg=si(),Yh=En(),Og=te(),Pg=Wt(),ni=Un(),Fg=Vn(),Qh=ln(),bl=me(),ii=class i{get elements(){return this.callStack}get depth(){return this.elements.length}get currentElement(){let t=this._threads[this._threads.length-1].callstack;return t[t.length-1]}get currentElementIndex(){return this.callStack.length-1}get currentThread(){return this._threads[this._threads.length-1]}set currentThread(e){Fg.Debug.Assert(this._threads.length==1,"Shouldn't be directly setting the current thread when we have a stack of them"),this._threads.length=0,this._threads.push(e);}get canPop(){return this.callStack.length>1}constructor(){if(this._threadCounter=0,this._startOfRoot=ni.Pointer.Null,arguments[0]instanceof Tg.Story){let e=arguments[0];this._startOfRoot=ni.Pointer.StartOf(e.rootContentContainer),this.Reset();}else {let e=arguments[0];this._threads=[];for(let t of e._threads)this._threads.push(t.Copy());this._threadCounter=e._threadCounter,this._startOfRoot=e._startOfRoot.copy();}}Reset(){this._threads=[],this._threads.push(new i.Thread),this._threads[0].callstack.push(new i.Element(Dl.PushPopType.Tunnel,this._startOfRoot));}SetJsonToken(e,t){this._threads.length=0;let n=e.threads;for(let r of n){let a=r,s=new i.Thread(a,t);this._threads.push(s);}this._threadCounter=parseInt(e.threadCounter),this._startOfRoot=ni.Pointer.StartOf(t.rootContentContainer);}WriteJson(e){e.WriteObject(t=>{t.WritePropertyStart("threads"),t.WriteArrayStart();for(let n of this._threads)n.WriteJson(t);t.WriteArrayEnd(),t.WritePropertyEnd(),t.WritePropertyStart("threadCounter"),t.WriteInt(this._threadCounter),t.WritePropertyEnd();});}PushThread(){let e=this.currentThread.Copy();this._threadCounter++,e.threadIndex=this._threadCounter,this._threads.push(e);}ForkThread(){let e=this.currentThread.Copy();return this._threadCounter++,e.threadIndex=this._threadCounter,e}PopThread(){if(this.canPopThread)this._threads.splice(this._threads.indexOf(this.currentThread),1);else throw new Error("Can't pop thread")}get canPopThread(){return this._threads.length>1&&!this.elementIsEvaluateFromGame}get elementIsEvaluateFromGame(){return this.currentElement.type==Dl.PushPopType.FunctionEvaluationFromGame}Push(e,t=0,n=0){let r=new i.Element(e,this.currentElement.currentPointer,false);r.evaluationStackHeightWhenPushed=t,r.functionStartInOutputStream=n,this.callStack.push(r);}CanPop(e=null){return this.canPop?e==null?true:this.currentElement.type==e:false}Pop(e=null){if(this.CanPop(e)){this.callStack.pop();return}else throw new Error("Mismatched push/pop in Callstack")}GetTemporaryVariableWithName(e,t=-1){t==-1&&(t=this.currentElementIndex+1);let n=this.callStack[t-1],r=(0, Qh.tryGetValueFromMap)(n.temporaryVariables,e,null);return r.exists?r.result:null}SetTemporaryVariable(e,t,n,r=-1){r==-1&&(r=this.currentElementIndex+1);let a=this.callStack[r-1];if(!n&&!a.temporaryVariables.get(e))throw new Error("Could not find temporary variable to set: "+e);let s=(0, Qh.tryGetValueFromMap)(a.temporaryVariables,e,null);s.exists&&Og.ListValue.RetainListOriginsForAssignment(s.result,t),a.temporaryVariables.set(e,t);}ContextForVariableNamed(e){return this.currentElement.temporaryVariables.get(e)?this.currentElementIndex+1:0}ThreadWithIndex(e){let t=this._threads.filter(n=>{if(n.threadIndex==e)return n});return t.length>0?t[0]:null}get callStack(){return this.currentThread.callstack}get callStackTrace(){let e=new Pg.StringBuilder;for(let t=0;t<this._threads.length;t++){let n=this._threads[t],r=t==this._threads.length-1;e.AppendFormat(`=== THREAD {0}/{1} {2}===
|
|
20
|
+
`,t+1,this._threads.length,r?"(current) ":"");for(let a=0;a<n.callstack.length;a++){n.callstack[a].type==Dl.PushPopType.Function?e.Append(" [FUNCTION] "):e.Append(" [TUNNEL] ");let s=n.callstack[a].currentPointer;if(!s.isNull){if(e.Append("<SOMEWHERE IN "),s.container===null)return (0, bl.throwNullException)("pointer.container");e.Append(s.container.path.toString()),e.AppendLine(">");}}}return e.toString()}};ri.CallStack=ii;(function(i){class e{constructor(r,a,s=false){this.evaluationStackHeightWhenPushed=0,this.functionStartInOutputStream=0,this.currentPointer=a.copy(),this.inExpressionEvaluation=s,this.temporaryVariables=new Map,this.type=r;}Copy(){let r=new e(this.type,this.currentPointer,this.inExpressionEvaluation);return r.temporaryVariables=new Map(this.temporaryVariables),r.evaluationStackHeightWhenPushed=this.evaluationStackHeightWhenPushed,r.functionStartInOutputStream=this.functionStartInOutputStream,r}}i.Element=e;class t{constructor(){if(this.threadIndex=0,this.previousPointer=ni.Pointer.Null,this.callstack=[],arguments[0]&&arguments[1]){let r=arguments[0],a=arguments[1];this.threadIndex=parseInt(r.threadIndex);let s=r.callstack;for(let l of s){let u=l,h=parseInt(u.type),c=ni.Pointer.Null,d,f=u.cPath;if(typeof f<"u"){d=f.toString();let D=a.ContentAtPath(new Xh.Path(d));if(c.container=D.container,c.index=parseInt(u.idx),D.obj==null)throw new Error("When loading state, internal story location couldn't be found: "+d+". Has the story changed since this save data was created?");D.approximate&&(c.container!==null?a.Warning("When loading state, exact internal story location couldn't be found: '"+d+"', so it was approximated to '"+c.container.path.toString()+"' to recover. Has the story changed since this save data was created?"):a.Warning("When loading state, exact internal story location couldn't be found: '"+d+"' and it may not be recoverable. Has the story changed since this save data was created?"));}let y=!!u.exp,v=new e(h,c,y),w=u.temp;typeof w<"u"?v.temporaryVariables=Yh.JsonSerialisation.JObjectToDictionaryRuntimeObjs(w):v.temporaryVariables.clear(),this.callstack.push(v);}let o=r.previousContentObject;if(typeof o<"u"){let l=new Xh.Path(o.toString());this.previousPointer=a.PointerAtPath(l);}}}Copy(){let r=new t;r.threadIndex=this.threadIndex;for(let a of this.callstack)r.callstack.push(a.Copy());return r.previousPointer=this.previousPointer.copy(),r}WriteJson(r){r.WriteObjectStart(),r.WritePropertyStart("callstack"),r.WriteArrayStart();for(let a of this.callstack){if(r.WriteObjectStart(),!a.currentPointer.isNull){if(a.currentPointer.container===null)return (0, bl.throwNullException)("el.currentPointer.container");r.WriteProperty("cPath",a.currentPointer.container.path.componentsString),r.WriteIntProperty("idx",a.currentPointer.index);}r.WriteProperty("exp",a.inExpressionEvaluation),r.WriteIntProperty("type",a.type),a.temporaryVariables.size>0&&(r.WritePropertyStart("temp"),Yh.JsonSerialisation.WriteDictionaryRuntimeObjs(r,a.temporaryVariables),r.WritePropertyEnd()),r.WriteObjectEnd();}if(r.WriteArrayEnd(),r.WritePropertyEnd(),r.WriteIntProperty("threadIndex",this.threadIndex),!this.previousPointer.isNull){let a=this.previousPointer.Resolve();if(a===null)return (0, bl.throwNullException)("this.previousPointer.Resolve()");r.WriteProperty("previousContentObject",a.path.toString());}r.WriteObjectEnd();}}i.Thread=t;})(ii||(ri.CallStack=ii={}));});var ec=A(Fs=>{Object.defineProperty(Fs,"__esModule",{value:true});Fs.VariablesState=void 0;var fe=te(),Ng=Rn(),Zh=En(),Ce=U(),ai=ln(),Ot=me();function Ig(){return class{}}var Ps=class i extends Ig(){variableChangedEvent(e,t){for(let n of this.variableChangedEventCallbacks)n(e,t);}StartVariableObservation(){this._batchObservingVariableChanges=true,this._changedVariablesForBatchObs=new Set;}CompleteVariableObservation(){this._batchObservingVariableChanges=false;let e=new Map;if(this._changedVariablesForBatchObs!=null)for(let t of this._changedVariablesForBatchObs){let n=this._globalVariables.get(t);this.variableChangedEvent(t,n);}if(this.patch!=null)for(let t of this.patch.changedVariables){let n=this.patch.TryGetGlobal(t,null);n.exists&&e.set(t,n);}return this._changedVariablesForBatchObs=null,e}NotifyObservers(e){for(let[t,n]of e)this.variableChangedEvent(t,n);}get callStack(){return this._callStack}set callStack(e){this._callStack=e;}$(e,t){if(typeof t>"u"){let n=null;return this.patch!==null&&(n=this.patch.TryGetGlobal(e,null),n.exists)?n.result.valueObject:(n=this._globalVariables.get(e),typeof n>"u"&&(n=this._defaultGlobalVariables.get(e)),typeof n<"u"?n.valueObject:null)}else {if(typeof this._defaultGlobalVariables.get(e)>"u")throw new Ng.StoryException("Cannot assign to a variable ("+e+") that hasn't been declared in the story");let n=fe.Value.Create(t);if(n==null)throw t==null?new Error("Cannot pass null to VariableState"):new Error("Invalid value passed to VariableState: "+t.toString());this.SetGlobal(e,n);}}constructor(e,t){super(),this.variableChangedEventCallbacks=[],this.patch=null,this._defaultGlobalVariables=new Map,this._changedVariablesForBatchObs=new Set,this._batchObservingVariableChanges=false,this._globalVariables=new Map,this._callStack=e,this._listDefsOrigin=t;try{return new Proxy(this,{get(r,a){return a in r?r[a]:r.$(a)},set(r,a,s){return a in r?r[a]=s:r.$(a,s),!0},ownKeys(r){return [...new Set([...r._defaultGlobalVariables.keys(),...r._globalVariables.keys()])]},getOwnPropertyDescriptor(r,a){return {enumerable:!0,configurable:!0,value:r.$(a)}}})}catch{}}ApplyPatch(){if(this.patch===null)return (0, Ot.throwNullException)("this.patch");for(let[e,t]of this.patch.globals)this._globalVariables.set(e,t);if(this._changedVariablesForBatchObs!==null)for(let e of this.patch.changedVariables)this._changedVariablesForBatchObs.add(e);this.patch=null;}SetJsonToken(e){this._globalVariables.clear();for(let[t,n]of this._defaultGlobalVariables){let r=e[t];if(typeof r<"u"){let a=Zh.JsonSerialisation.JTokenToRuntimeObject(r);if(a===null)return (0, Ot.throwNullException)("tokenInkObject");this._globalVariables.set(t,a);}else this._globalVariables.set(t,n);}}WriteJson(e){e.WriteObjectStart();for(let[t,n]of this._globalVariables){let r=t,a=n;if(i.dontSaveDefaultValues&&this._defaultGlobalVariables.has(r)){let s=this._defaultGlobalVariables.get(r);if(this.RuntimeObjectsEqual(a,s))continue}e.WritePropertyStart(r),Zh.JsonSerialisation.WriteRuntimeObject(e,a),e.WritePropertyEnd();}e.WriteObjectEnd();}RuntimeObjectsEqual(e,t){if(e===null)return (0, Ot.throwNullException)("obj1");if(t===null)return (0, Ot.throwNullException)("obj2");if(e.constructor!==t.constructor)return false;let n=(0, Ce.asOrNull)(e,fe.BoolValue);if(n!==null)return n.value===(0, Ce.asOrThrows)(t,fe.BoolValue).value;let r=(0, Ce.asOrNull)(e,fe.IntValue);if(r!==null)return r.value===(0, Ce.asOrThrows)(t,fe.IntValue).value;let a=(0, Ce.asOrNull)(e,fe.FloatValue);if(a!==null)return a.value===(0, Ce.asOrThrows)(t,fe.FloatValue).value;let s=(0, Ce.asOrNull)(e,fe.Value),o=(0, Ce.asOrNull)(t,fe.Value);if(s!==null&&o!==null)return (0, Ce.isEquatable)(s.valueObject)&&(0, Ce.isEquatable)(o.valueObject)?s.valueObject.Equals(o.valueObject):s.valueObject===o.valueObject;throw new Error("FastRoughDefinitelyEquals: Unsupported runtime object type: "+e.constructor.name)}GetVariableWithName(e,t=-1){let n=this.GetRawVariableWithName(e,t),r=(0, Ce.asOrNull)(n,fe.VariablePointerValue);return r!==null&&(n=this.ValueAtVariablePointer(r)),n}TryGetDefaultVariableValue(e){let t=(0, ai.tryGetValueFromMap)(this._defaultGlobalVariables,e,null);return t.exists?t.result:null}GlobalVariableExistsWithName(e){return this._globalVariables.has(e)||this._defaultGlobalVariables!==null&&this._defaultGlobalVariables.has(e)}GetRawVariableWithName(e,t){let n=null;if(t==0||t==-1){let r=null;if(this.patch!==null&&(r=this.patch.TryGetGlobal(e,null),r.exists)||(r=(0, ai.tryGetValueFromMap)(this._globalVariables,e,null),r.exists)||this._defaultGlobalVariables!==null&&(r=(0, ai.tryGetValueFromMap)(this._defaultGlobalVariables,e,null),r.exists))return r.result;if(this._listDefsOrigin===null)return (0, Ot.throwNullException)("VariablesState._listDefsOrigin");let a=this._listDefsOrigin.FindSingleItemListWithName(e);if(a)return a}return n=this._callStack.GetTemporaryVariableWithName(e,t),n}ValueAtVariablePointer(e){return this.GetVariableWithName(e.variableName,e.contextIndex)}Assign(e,t){let n=e.variableName;if(n===null)return (0, Ot.throwNullException)("name");let r=-1,a=false;if(e.isNewDeclaration?a=e.isGlobal:a=this.GlobalVariableExistsWithName(n),e.isNewDeclaration){let s=(0, Ce.asOrNull)(t,fe.VariablePointerValue);s!==null&&(t=this.ResolveVariablePointer(s));}else {let s=null;do s=(0, Ce.asOrNull)(this.GetRawVariableWithName(n,r),fe.VariablePointerValue),s!=null&&(n=s.variableName,r=s.contextIndex,a=r==0);while(s!=null)}a?this.SetGlobal(n,t):this._callStack.SetTemporaryVariable(n,t,e.isNewDeclaration,r);}SnapshotDefaultGlobals(){this._defaultGlobalVariables=new Map(this._globalVariables);}RetainListOriginsForAssignment(e,t){let n=(0, Ce.asOrThrows)(e,fe.ListValue),r=(0, Ce.asOrThrows)(t,fe.ListValue);n.value&&r.value&&r.value.Count==0&&r.value.SetInitialOriginNames(n.value.originNames);}SetGlobal(e,t){let n=null;if(this.patch===null&&(n=(0, ai.tryGetValueFromMap)(this._globalVariables,e,null)),this.patch!==null&&(n=this.patch.TryGetGlobal(e,null),n.exists||(n=(0, ai.tryGetValueFromMap)(this._globalVariables,e,null))),fe.ListValue.RetainListOriginsForAssignment(n.result,t),e===null)return (0, Ot.throwNullException)("variableName");if(this.patch!==null?this.patch.SetGlobal(e,t):this._globalVariables.set(e,t),this.variableChangedEvent!==null&&n!==null&&t!==n.result)if(this._batchObservingVariableChanges){if(this._changedVariablesForBatchObs===null)return (0, Ot.throwNullException)("this._changedVariablesForBatchObs");this.patch!==null?this.patch.AddChangedVariable(e):this._changedVariablesForBatchObs!==null&&this._changedVariablesForBatchObs.add(e);}else this.variableChangedEvent(e,t);}ResolveVariablePointer(e){let t=e.contextIndex;t==-1&&(t=this.GetContextIndexOfVariableNamed(e.variableName));let n=this.GetRawVariableWithName(e.variableName,t),r=(0, Ce.asOrNull)(n,fe.VariablePointerValue);return r??new fe.VariablePointerValue(e.variableName,t)}GetContextIndexOfVariableNamed(e){return this.GlobalVariableExistsWithName(e)?0:this._callStack.currentElementIndex}ObserveVariableChange(e){this.variableChangedEventCallbacks.push(e);}};Fs.VariablesState=Ps;Ps.dontSaveDefaultValues=true;});var xl=A(Ns=>{Object.defineProperty(Ns,"__esModule",{value:true});Ns.PRNG=void 0;var wl=class{constructor(e){this.seed=e%2147483647,this.seed<=0&&(this.seed+=2147483646);}next(){return this.seed=this.seed*48271%2147483647}nextFloat(){return (this.next()-1)/2147483646}};Ns.PRNG=wl;});var tc=A(Is=>{Object.defineProperty(Is,"__esModule",{value:true});Is.StatePatch=void 0;var _l=class{get globals(){return this._globals}get changedVariables(){return this._changedVariables}get visitCounts(){return this._visitCounts}get turnIndices(){return this._turnIndices}constructor(){if(this._changedVariables=new Set,this._visitCounts=new Map,this._turnIndices=new Map,arguments.length===1&&arguments[0]!==null){let e=arguments[0];this._globals=new Map(e._globals),this._changedVariables=new Set(e._changedVariables),this._visitCounts=new Map(e._visitCounts),this._turnIndices=new Map(e._turnIndices);}else this._globals=new Map,this._changedVariables=new Set,this._visitCounts=new Map,this._turnIndices=new Map;}TryGetGlobal(e,t){return e!==null&&this._globals.has(e)?{result:this._globals.get(e),exists:true}:{result:t,exists:false}}SetGlobal(e,t){this._globals.set(e,t);}AddChangedVariable(e){return this._changedVariables.add(e)}TryGetVisitCount(e,t){return this._visitCounts.has(e)?{result:this._visitCounts.get(e),exists:true}:{result:t,exists:false}}SetVisitCount(e,t){this._visitCounts.set(e,t);}SetTurnIndex(e,t){this._turnIndices.set(e,t);}TryGetTurnIndex(e,t){return this._turnIndices.has(e)?{result:this._turnIndices.get(e),exists:true}:{result:t,exists:false}}};Is.StatePatch=_l;});var Tl=A(li=>{Object.defineProperty(li,"__esModule",{value:true});li.SimpleJson=void 0;var oi=class i{static TextToDictionary(e){return new i.Reader(e).ToDictionary()}static TextToArray(e){return new i.Reader(e).ToArray()}};li.SimpleJson=oi;(function(i){class e{constructor(r){if(JSON.parse("0",(s,o,l)=>l!=null)){let s=(o,l,u)=>Number.isInteger(l)&&u.source.endsWith(".0")?u.source+"f":l;this._rootObject=JSON.parse(r,s);}else {let s=r.replace(/(,\s*)([0-9]+\.[0]+)([,]*)/g,'$1"$2f"$3');this._rootObject=JSON.parse(s);}}ToDictionary(){return this._rootObject}ToArray(){return this._rootObject}}i.Reader=e;class t{constructor(){this._currentPropertyName=null,this._currentString=null,this._stateStack=[],this._collectionStack=[],this._propertyNameStack=[],this._jsonObject=null;}WriteObject(r){this.WriteObjectStart(),r(this),this.WriteObjectEnd();}WriteObjectStart(){this.StartNewObject(true);let r={};if(this.state===i.Writer.State.Property){this.Assert(this.currentCollection!==null),this.Assert(this.currentPropertyName!==null);let a=this._propertyNameStack.pop();this.currentCollection[a]=r,this._collectionStack.push(r);}else this.state===i.Writer.State.Array?(this.Assert(this.currentCollection!==null),this.currentCollection.push(r),this._collectionStack.push(r)):(this.Assert(this.state===i.Writer.State.None),this._jsonObject=r,this._collectionStack.push(r));this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Object));}WriteObjectEnd(){this.Assert(this.state===i.Writer.State.Object),this._collectionStack.pop(),this._stateStack.pop();}WriteProperty(r,a){if(this.WritePropertyStart(r),arguments[1]instanceof Function){let s=arguments[1];s(this);}else {let s=arguments[1];this.Write(s);}this.WritePropertyEnd();}WriteIntProperty(r,a){this.WritePropertyStart(r),this.WriteInt(a),this.WritePropertyEnd();}WriteFloatProperty(r,a){this.WritePropertyStart(r),this.WriteFloat(a),this.WritePropertyEnd();}WritePropertyStart(r){this.Assert(this.state===i.Writer.State.Object),this._propertyNameStack.push(r),this.IncrementChildCount(),this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Property));}WritePropertyEnd(){this.Assert(this.state===i.Writer.State.Property),this.Assert(this.childCount===1),this._stateStack.pop();}WritePropertyNameStart(){this.Assert(this.state===i.Writer.State.Object),this.IncrementChildCount(),this._currentPropertyName="",this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Property)),this._stateStack.push(new i.Writer.StateElement(i.Writer.State.PropertyName));}WritePropertyNameEnd(){this.Assert(this.state===i.Writer.State.PropertyName),this.Assert(this._currentPropertyName!==null),this._propertyNameStack.push(this._currentPropertyName),this._currentPropertyName=null,this._stateStack.pop();}WritePropertyNameInner(r){this.Assert(this.state===i.Writer.State.PropertyName),this.Assert(this._currentPropertyName!==null),this._currentPropertyName+=r;}WriteArrayStart(){this.StartNewObject(true);let r=[];if(this.state===i.Writer.State.Property){this.Assert(this.currentCollection!==null),this.Assert(this.currentPropertyName!==null);let a=this._propertyNameStack.pop();this.currentCollection[a]=r,this._collectionStack.push(r);}else this.state===i.Writer.State.Array?(this.Assert(this.currentCollection!==null),this.currentCollection.push(r),this._collectionStack.push(r)):(this.Assert(this.state===i.Writer.State.None),this._jsonObject=r,this._collectionStack.push(r));this._stateStack.push(new i.Writer.StateElement(i.Writer.State.Array));}WriteArrayEnd(){this.Assert(this.state===i.Writer.State.Array),this._collectionStack.pop(),this._stateStack.pop();}Write(r,a=true){if(r===null){console.error("Warning: trying to write a null value");return}this.StartNewObject(false),this._addToCurrentObject(r);}WriteBool(r){r!==null&&(this.StartNewObject(false),this._addToCurrentObject(r));}WriteInt(r){r!==null&&(this.StartNewObject(false),this._addToCurrentObject(Math.floor(r)));}WriteFloat(r){r!==null&&(this.StartNewObject(false),r==Number.POSITIVE_INFINITY?this._addToCurrentObject(34e37):r==Number.NEGATIVE_INFINITY?this._addToCurrentObject(-34e37):isNaN(r)?this._addToCurrentObject(0):this._addToCurrentObject(r));}WriteNull(){this.StartNewObject(false),this._addToCurrentObject(null);}WriteStringStart(){this.StartNewObject(false),this._currentString="",this._stateStack.push(new i.Writer.StateElement(i.Writer.State.String));}WriteStringEnd(){this.Assert(this.state==i.Writer.State.String),this._stateStack.pop(),this._addToCurrentObject(this._currentString),this._currentString=null;}WriteStringInner(r,a=true){if(this.Assert(this.state===i.Writer.State.String),r===null){console.error("Warning: trying to write a null string");return}this._currentString+=r;}toString(){return this._jsonObject===null?"":JSON.stringify(this._jsonObject)}StartNewObject(r){r?this.Assert(this.state===i.Writer.State.None||this.state===i.Writer.State.Property||this.state===i.Writer.State.Array):this.Assert(this.state===i.Writer.State.Property||this.state===i.Writer.State.Array),this.state===i.Writer.State.Property&&this.Assert(this.childCount===0),(this.state===i.Writer.State.Array||this.state===i.Writer.State.Property)&&this.IncrementChildCount();}get state(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1].type:i.Writer.State.None}get childCount(){return this._stateStack.length>0?this._stateStack[this._stateStack.length-1].childCount:0}get currentCollection(){return this._collectionStack.length>0?this._collectionStack[this._collectionStack.length-1]:null}get currentPropertyName(){return this._propertyNameStack.length>0?this._propertyNameStack[this._propertyNameStack.length-1]:null}IncrementChildCount(){this.Assert(this._stateStack.length>0);let r=this._stateStack.pop();r.childCount++,this._stateStack.push(r);}Assert(r){if(!r)throw Error("Assert failed while writing JSON")}_addToCurrentObject(r){this.Assert(this.currentCollection!==null),this.state===i.Writer.State.Array?(this.Assert(Array.isArray(this.currentCollection)),this.currentCollection.push(r)):this.state===i.Writer.State.Property&&(this.Assert(!Array.isArray(this.currentCollection)),this.Assert(this.currentPropertyName!==null),this.currentCollection[this.currentPropertyName]=r,this._propertyNameStack.pop());}}i.Writer=t,(function(n){(function(s){s[s.None=0]="None",s[s.Object=1]="Object",s[s.Array=2]="Array",s[s.Property=3]="Property",s[s.PropertyName=4]="PropertyName",s[s.String=5]="String";})(n.State||(n.State={}));class a{constructor(o){this.type=i.Writer.State.None,this.childCount=0,this.type=o;}}n.StateElement=a;})(t=i.Writer||(i.Writer={}));})(oi||(li.SimpleJson=oi={}));});var ic=A(ks=>{Object.defineProperty(ks,"__esModule",{value:true});ks.Flow=void 0;var nc=Al(),Vs=En(),Vg=me(),Ol=class{constructor(){let e=arguments[0],t=arguments[1];if(this.name=e,this.callStack=new nc.CallStack(t),arguments[2]){let n=arguments[2];this.callStack.SetJsonToken(n.callstack,t),this.outputStream=Vs.JsonSerialisation.JArrayToRuntimeObjList(n.outputStream),this.currentChoices=Vs.JsonSerialisation.JArrayToRuntimeObjList(n.currentChoices);let r=n.choiceThreads;typeof r<"u"&&this.LoadFlowChoiceThreads(r,t);}else this.outputStream=[],this.currentChoices=[];}WriteJson(e){e.WriteObjectStart(),e.WriteProperty("callstack",n=>this.callStack.WriteJson(n)),e.WriteProperty("outputStream",n=>Vs.JsonSerialisation.WriteListRuntimeObjs(n,this.outputStream));let t=false;for(let n of this.currentChoices){if(n.threadAtGeneration===null)return (0, Vg.throwNullException)("c.threadAtGeneration");n.originalThreadIndex=n.threadAtGeneration.threadIndex,this.callStack.ThreadWithIndex(n.originalThreadIndex)===null&&(t||(t=true,e.WritePropertyStart("choiceThreads"),e.WriteObjectStart()),e.WritePropertyStart(n.originalThreadIndex),n.threadAtGeneration.WriteJson(e),e.WritePropertyEnd());}t&&(e.WriteObjectEnd(),e.WritePropertyEnd()),e.WriteProperty("currentChoices",n=>{n.WriteArrayStart();for(let r of this.currentChoices)Vs.JsonSerialisation.WriteChoice(n,r);n.WriteArrayEnd();}),e.WriteObjectEnd();}LoadFlowChoiceThreads(e,t){for(let n of this.currentChoices){let r=this.callStack.ThreadWithIndex(n.originalThreadIndex);if(r!==null)n.threadAtGeneration=r.Copy();else {let a=e[`${n.originalThreadIndex}`];n.threadAtGeneration=new nc.CallStack.Thread(a,t);}}}};ks.Flow=Ol;});var ac=A(Ls=>{Object.defineProperty(Ls,"__esModule",{value:true});Ls.StoryState=void 0;var kg=Al(),Rg=ec(),he=te(),Pt=Mt(),Lg=bs(),Pl=ps(),rc=Ne(),Te=ge(),Fl=Wt(),Ft=En(),Bg=xl(),Wg=qt(),Sn=Un(),ui=ln(),oe=U(),jg=Vn(),ze=me(),qg=si(),Mg=tc(),sc=Tl(),Rs=ic(),Gg=ke(),Nl=class i{ToJson(e=false){let t=new sc.SimpleJson.Writer;return this.WriteJson(t),t.toString()}toJson(e=false){return this.ToJson(e)}LoadJson(e){let t=sc.SimpleJson.TextToDictionary(e);this.LoadJsonObj(t),this.onDidLoadState!==null&&this.onDidLoadState();}VisitCountAtPathString(e){let t;if(this._patch!==null){let n=this.story.ContentAtPath(new rc.Path(e)).container;if(n===null)throw new Error("Content at path not found: "+e);if(t=this._patch.TryGetVisitCount(n,0),t.exists)return t.result}return t=(0, ui.tryGetValueFromMap)(this._visitCounts,e,null),t.exists?t.result:0}VisitCountForContainer(e){if(e===null)return (0, ze.throwNullException)("container");if(!e.visitsShouldBeCounted)return this.story.Error("Read count for target ("+e.name+" - on "+e.debugMetadata+") unknown. The story may need to be compiled with countAllVisits flag (-c)."),0;if(this._patch!==null){let r=this._patch.TryGetVisitCount(e,0);if(r.exists)return r.result}let t=e.path.toString(),n=(0, ui.tryGetValueFromMap)(this._visitCounts,t,null);return n.exists?n.result:0}IncrementVisitCountForContainer(e){if(this._patch!==null){let r=this.VisitCountForContainer(e);r++,this._patch.SetVisitCount(e,r);return}let t=e.path.toString(),n=(0, ui.tryGetValueFromMap)(this._visitCounts,t,null);n.exists?this._visitCounts.set(t,n.result+1):this._visitCounts.set(t,1);}RecordTurnIndexVisitToContainer(e){if(this._patch!==null){this._patch.SetTurnIndex(e,this.currentTurnIndex);return}let t=e.path.toString();this._turnIndices.set(t,this.currentTurnIndex);}TurnsSinceForContainer(e){if(e.turnIndexShouldBeCounted||this.story.Error("TURNS_SINCE() for target ("+e.name+" - on "+e.debugMetadata+") unknown. The story may need to be compiled with countAllVisits flag (-c)."),this._patch!==null){let r=this._patch.TryGetTurnIndex(e,0);if(r.exists)return this.currentTurnIndex-r.result}let t=e.path.toString(),n=(0, ui.tryGetValueFromMap)(this._turnIndices,t,0);return n.exists?this.currentTurnIndex-n.result:-1}get callstackDepth(){return this.callStack.depth}get outputStream(){return this._currentFlow.outputStream}get currentChoices(){return this.canContinue?[]:this._currentFlow.currentChoices}get generatedChoices(){return this._currentFlow.currentChoices}get currentErrors(){return this._currentErrors}get currentWarnings(){return this._currentWarnings}get variablesState(){return this._variablesState}set variablesState(e){this._variablesState=e;}get callStack(){return this._currentFlow.callStack}get evaluationStack(){return this._evaluationStack}get currentTurnIndex(){return this._currentTurnIndex}set currentTurnIndex(e){this._currentTurnIndex=e;}get currentPathString(){let e=this.currentPointer;return e.isNull?null:e.path===null?(0, ze.throwNullException)("pointer.path"):e.path.toString()}get previousPathString(){let e=this.previousPointer;return e.isNull?null:e.path===null?(0, ze.throwNullException)("previousPointer.path"):e.path.toString()}get currentPointer(){return this.callStack.currentElement.currentPointer.copy()}set currentPointer(e){this.callStack.currentElement.currentPointer=e.copy();}get previousPointer(){return this.callStack.currentThread.previousPointer.copy()}set previousPointer(e){this.callStack.currentThread.previousPointer=e.copy();}get canContinue(){return !this.currentPointer.isNull&&!this.hasError}get hasError(){return this.currentErrors!=null&&this.currentErrors.length>0}get hasWarning(){return this.currentWarnings!=null&&this.currentWarnings.length>0}get currentText(){if(this._outputStreamTextDirty){let e=new Fl.StringBuilder,t=false;for(let n of this.outputStream){let r=(0, oe.asOrNull)(n,he.StringValue);if(!t&&r!==null)e.Append(r.value);else {let a=(0, oe.asOrNull)(n,Te.ControlCommand);a!==null&&(a.commandType==Te.ControlCommand.CommandType.BeginTag?t=true:a.commandType==Te.ControlCommand.CommandType.EndTag&&(t=false));}}this._currentText=this.CleanOutputWhitespace(e.toString()),this._outputStreamTextDirty=false;}return this._currentText}CleanOutputWhitespace(e){let t=new Fl.StringBuilder,n=-1,r=0;for(let a=0;a<e.length;a++){let s=e.charAt(a),o=s==" "||s==" ";o&&n==-1&&(n=a),o||(s!=`
|
|
21
21
|
`&&n>0&&n!=r&&t.Append(" "),n=-1),s==`
|
|
22
|
-
`&&(r=a+1),o||t.Append(s);}return t.toString()}get currentTags(){if(this._outputStreamTagsDirty){this._currentTags=[];let e=false,t=new Fl.StringBuilder;for(let n of this.outputStream){let r=(0, oe.asOrNull)(n,Te.ControlCommand);if(r!=null){if(r.commandType==Te.ControlCommand.CommandType.BeginTag){if(e&&t.Length>0){let a=this.CleanOutputWhitespace(t.toString());this._currentTags.push(a),t.Clear();}e=true;}else if(r.commandType==Te.ControlCommand.CommandType.EndTag){if(t.Length>0){let a=this.CleanOutputWhitespace(t.toString());this._currentTags.push(a),t.Clear();}e=false;}}else if(e){let a=(0, oe.asOrNull)(n,he.StringValue);a!==null&&t.Append(a.value);}else {let a=(0, oe.asOrNull)(n,Lg.Tag);a!=null&&a.text!=null&&a.text.length>0&&this._currentTags.push(a.text);}}if(t.Length>0){let n=this.CleanOutputWhitespace(t.toString());this._currentTags.push(n),t.Clear();}this._outputStreamTagsDirty=false;}return this._currentTags}get currentFlowName(){return this._currentFlow.name}get currentFlowIsDefaultFlow(){return this._currentFlow.name==this.kDefaultFlowName}get aliveFlowNames(){if(this._aliveFlowNamesDirty){if(this._aliveFlowNames=[],this._namedFlows!=null)for(let e of this._namedFlows.keys())e!=this.kDefaultFlowName&&this._aliveFlowNames.push(e);this._aliveFlowNamesDirty=false;}return this._aliveFlowNames}get inExpressionEvaluation(){return this.callStack.currentElement.inExpressionEvaluation}set inExpressionEvaluation(e){this.callStack.currentElement.inExpressionEvaluation=e;}constructor(e){this.kInkSaveStateVersion=10,this.kMinCompatibleLoadVersion=8,this.onDidLoadState=null,this._currentErrors=null,this._currentWarnings=null,this.divertedPointer=Sn.Pointer.Null,this._currentTurnIndex=0,this.storySeed=0,this.previousRandom=0,this.didSafeExit=false,this._currentText=null,this._currentTags=null,this._outputStreamTextDirty=true,this._outputStreamTagsDirty=true,this._patch=null,this._aliveFlowNames=null,this._namedFlows=null,this.kDefaultFlowName="DEFAULT_FLOW",this._aliveFlowNamesDirty=true,this.story=e,this._currentFlow=new Rs.Flow(this.kDefaultFlowName,e),this.OutputStreamDirty(),this._aliveFlowNamesDirty=true,this._evaluationStack=[],this._variablesState=new Rg.VariablesState(this.callStack,e.listDefinitions),this._visitCounts=new Map,this._turnIndices=new Map,this.currentTurnIndex=-1;let t=new Date().getTime();this.storySeed=new Bg.PRNG(t).next()%100,this.previousRandom=0,this.GoToStart();}GoToStart(){this.callStack.currentElement.currentPointer=Sn.Pointer.StartOf(this.story.mainContentContainer);}SwitchFlow_Internal(e){if(e===null)throw new Error("Must pass a non-null string to Story.SwitchFlow");if(this._namedFlows===null&&(this._namedFlows=new Map,this._namedFlows.set(this.kDefaultFlowName,this._currentFlow)),e===this._currentFlow.name)return;let t,n=(0, ui.tryGetValueFromMap)(this._namedFlows,e,null);n.exists?t=n.result:(t=new Rs.Flow(e,this.story),this._namedFlows.set(e,t),this._aliveFlowNamesDirty=true),this._currentFlow=t,this.variablesState.callStack=this._currentFlow.callStack,this.OutputStreamDirty();}SwitchToDefaultFlow_Internal(){this._namedFlows!==null&&this.SwitchFlow_Internal(this.kDefaultFlowName);}RemoveFlow_Internal(e){if(e===null)throw new Error("Must pass a non-null string to Story.DestroyFlow");if(e===this.kDefaultFlowName)throw new Error("Cannot destroy default flow");if(this._currentFlow.name===e&&this.SwitchToDefaultFlow_Internal(),this._namedFlows===null)return (0, ze.throwNullException)("this._namedFlows");this._namedFlows.delete(e),this._aliveFlowNamesDirty=true;}CopyAndStartPatching(e){let t=new i(this.story);if(t._patch=new Mg.StatePatch(this._patch),t._currentFlow.name=this._currentFlow.name,t._currentFlow.callStack=new kg.CallStack(this._currentFlow.callStack),t._currentFlow.outputStream.push(...this._currentFlow.outputStream),t.OutputStreamDirty(),e)for(let n of this._currentFlow.currentChoices)t._currentFlow.currentChoices.push(n.Clone());else t._currentFlow.currentChoices.push(...this._currentFlow.currentChoices);if(this._namedFlows!==null){t._namedFlows=new Map;for(let[n,r]of this._namedFlows)t._namedFlows.set(n,r),t._aliveFlowNamesDirty=true;t._namedFlows.set(this._currentFlow.name,t._currentFlow);}return this.hasError&&(t._currentErrors=[],t._currentErrors.push(...this.currentErrors||[])),this.hasWarning&&(t._currentWarnings=[],t._currentWarnings.push(...this.currentWarnings||[])),t.variablesState=this.variablesState,t.variablesState.callStack=t.callStack,t.variablesState.patch=t._patch,t.evaluationStack.push(...this.evaluationStack),this.divertedPointer.isNull||(t.divertedPointer=this.divertedPointer.copy()),t.previousPointer=this.previousPointer.copy(),t._visitCounts=this._visitCounts,t._turnIndices=this._turnIndices,t.currentTurnIndex=this.currentTurnIndex,t.storySeed=this.storySeed,t.previousRandom=this.previousRandom,t.didSafeExit=this.didSafeExit,t}RestoreAfterPatch(){this.variablesState.callStack=this.callStack,this.variablesState.patch=this._patch;}ApplyAnyPatch(){if(this._patch!==null){this.variablesState.ApplyPatch();for(let[e,t]of this._patch.visitCounts)this.ApplyCountChanges(e,t,true);for(let[e,t]of this._patch.turnIndices)this.ApplyCountChanges(e,t,false);this._patch=null;}}ApplyCountChanges(e,t,n){(n?this._visitCounts:this._turnIndices).set(e.path.toString(),t);}WriteJson(e){if(e.WriteObjectStart(),e.WritePropertyStart("flows"),e.WriteObjectStart(),this._namedFlows!==null)for(let[t,n]of this._namedFlows)e.WriteProperty(t,r=>n.WriteJson(r));else e.WriteProperty(this._currentFlow.name,t=>this._currentFlow.WriteJson(t));if(e.WriteObjectEnd(),e.WritePropertyEnd(),e.WriteProperty("currentFlowName",this._currentFlow.name),e.WriteProperty("variablesState",t=>this.variablesState.WriteJson(t)),e.WriteProperty("evalStack",t=>Ft.JsonSerialisation.WriteListRuntimeObjs(t,this.evaluationStack)),!this.divertedPointer.isNull){if(this.divertedPointer.path===null)return (0, ze.throwNullException)("divertedPointer");e.WriteProperty("currentDivertTarget",this.divertedPointer.path.componentsString);}e.WriteProperty("visitCounts",t=>Ft.JsonSerialisation.WriteIntDictionary(t,this._visitCounts)),e.WriteProperty("turnIndices",t=>Ft.JsonSerialisation.WriteIntDictionary(t,this._turnIndices)),e.WriteIntProperty("turnIdx",this.currentTurnIndex),e.WriteIntProperty("storySeed",this.storySeed),e.WriteIntProperty("previousRandom",this.previousRandom),e.WriteIntProperty("inkSaveVersion",this.kInkSaveStateVersion),e.WriteIntProperty("inkFormatVersion",qg.Story.inkVersionCurrent),e.WriteObjectEnd();}LoadJsonObj(e){let t=e,n=t.inkSaveVersion;if(n==null)throw new Error("ink save format incorrect, can't load.");if(parseInt(n)<this.kMinCompatibleLoadVersion)throw new Error("Ink save format isn't compatible with the current version (saw '"+n+"', but minimum is "+this.kMinCompatibleLoadVersion+"), so can't load.");let r=t.flows;if(r!=null){let s=r;Object.keys(s).length===1?this._namedFlows=null:this._namedFlows===null?this._namedFlows=new Map:this._namedFlows.clear();let o=Object.entries(s);for(let[l,u]of o){let h=l,c=u,d=new Rs.Flow(h,this.story,c);if(Object.keys(s).length===1)this._currentFlow=new Rs.Flow(h,this.story,c);else {if(this._namedFlows===null)return (0, ze.throwNullException)("this._namedFlows");this._namedFlows.set(h,d);}}if(this._namedFlows!=null&&this._namedFlows.size>1){let l=t.currentFlowName;this._currentFlow=this._namedFlows.get(l);}}else {this._namedFlows=null,this._currentFlow.name=this.kDefaultFlowName,this._currentFlow.callStack.SetJsonToken(t.callstackThreads,this.story),this._currentFlow.outputStream=Ft.JsonSerialisation.JArrayToRuntimeObjList(t.outputStream),this._currentFlow.currentChoices=Ft.JsonSerialisation.JArrayToRuntimeObjList(t.currentChoices);let s=t.choiceThreads;this._currentFlow.LoadFlowChoiceThreads(s,this.story);}this.OutputStreamDirty(),this._aliveFlowNamesDirty=true,this.variablesState.SetJsonToken(t.variablesState),this.variablesState.callStack=this._currentFlow.callStack,this._evaluationStack=Ft.JsonSerialisation.JArrayToRuntimeObjList(t.evalStack);let a=t.currentDivertTarget;if(a!=null){let s=new
|
|
22
|
+
`&&(r=a+1),o||t.Append(s);}return t.toString()}get currentTags(){if(this._outputStreamTagsDirty){this._currentTags=[];let e=false,t=new Fl.StringBuilder;for(let n of this.outputStream){let r=(0, oe.asOrNull)(n,Te.ControlCommand);if(r!=null){if(r.commandType==Te.ControlCommand.CommandType.BeginTag){if(e&&t.Length>0){let a=this.CleanOutputWhitespace(t.toString());this._currentTags.push(a),t.Clear();}e=true;}else if(r.commandType==Te.ControlCommand.CommandType.EndTag){if(t.Length>0){let a=this.CleanOutputWhitespace(t.toString());this._currentTags.push(a),t.Clear();}e=false;}}else if(e){let a=(0, oe.asOrNull)(n,he.StringValue);a!==null&&t.Append(a.value);}else {let a=(0, oe.asOrNull)(n,Lg.Tag);a!=null&&a.text!=null&&a.text.length>0&&this._currentTags.push(a.text);}}if(t.Length>0){let n=this.CleanOutputWhitespace(t.toString());this._currentTags.push(n),t.Clear();}this._outputStreamTagsDirty=false;}return this._currentTags}get currentFlowName(){return this._currentFlow.name}get currentFlowIsDefaultFlow(){return this._currentFlow.name==this.kDefaultFlowName}get aliveFlowNames(){if(this._aliveFlowNamesDirty){if(this._aliveFlowNames=[],this._namedFlows!=null)for(let e of this._namedFlows.keys())e!=this.kDefaultFlowName&&this._aliveFlowNames.push(e);this._aliveFlowNamesDirty=false;}return this._aliveFlowNames}get inExpressionEvaluation(){return this.callStack.currentElement.inExpressionEvaluation}set inExpressionEvaluation(e){this.callStack.currentElement.inExpressionEvaluation=e;}constructor(e){this.kInkSaveStateVersion=10,this.kMinCompatibleLoadVersion=8,this.onDidLoadState=null,this._currentErrors=null,this._currentWarnings=null,this.divertedPointer=Sn.Pointer.Null,this._currentTurnIndex=0,this.storySeed=0,this.previousRandom=0,this.didSafeExit=false,this._currentText=null,this._currentTags=null,this._outputStreamTextDirty=true,this._outputStreamTagsDirty=true,this._patch=null,this._aliveFlowNames=null,this._namedFlows=null,this.kDefaultFlowName="DEFAULT_FLOW",this._aliveFlowNamesDirty=true,this.story=e,this._currentFlow=new Rs.Flow(this.kDefaultFlowName,e),this.OutputStreamDirty(),this._aliveFlowNamesDirty=true,this._evaluationStack=[],this._variablesState=new Rg.VariablesState(this.callStack,e.listDefinitions),this._visitCounts=new Map,this._turnIndices=new Map,this.currentTurnIndex=-1;let t=new Date().getTime();this.storySeed=new Bg.PRNG(t).next()%100,this.previousRandom=0,this.GoToStart();}GoToStart(){this.callStack.currentElement.currentPointer=Sn.Pointer.StartOf(this.story.mainContentContainer);}SwitchFlow_Internal(e){if(e===null)throw new Error("Must pass a non-null string to Story.SwitchFlow");if(this._namedFlows===null&&(this._namedFlows=new Map,this._namedFlows.set(this.kDefaultFlowName,this._currentFlow)),e===this._currentFlow.name)return;let t,n=(0, ui.tryGetValueFromMap)(this._namedFlows,e,null);n.exists?t=n.result:(t=new Rs.Flow(e,this.story),this._namedFlows.set(e,t),this._aliveFlowNamesDirty=true),this._currentFlow=t,this.variablesState.callStack=this._currentFlow.callStack,this.OutputStreamDirty();}SwitchToDefaultFlow_Internal(){this._namedFlows!==null&&this.SwitchFlow_Internal(this.kDefaultFlowName);}RemoveFlow_Internal(e){if(e===null)throw new Error("Must pass a non-null string to Story.DestroyFlow");if(e===this.kDefaultFlowName)throw new Error("Cannot destroy default flow");if(this._currentFlow.name===e&&this.SwitchToDefaultFlow_Internal(),this._namedFlows===null)return (0, ze.throwNullException)("this._namedFlows");this._namedFlows.delete(e),this._aliveFlowNamesDirty=true;}CopyAndStartPatching(e){let t=new i(this.story);if(t._patch=new Mg.StatePatch(this._patch),t._currentFlow.name=this._currentFlow.name,t._currentFlow.callStack=new kg.CallStack(this._currentFlow.callStack),t._currentFlow.outputStream.push(...this._currentFlow.outputStream),t.OutputStreamDirty(),e)for(let n of this._currentFlow.currentChoices)t._currentFlow.currentChoices.push(n.Clone());else t._currentFlow.currentChoices.push(...this._currentFlow.currentChoices);if(this._namedFlows!==null){t._namedFlows=new Map;for(let[n,r]of this._namedFlows)t._namedFlows.set(n,r),t._aliveFlowNamesDirty=true;t._namedFlows.set(this._currentFlow.name,t._currentFlow);}return this.hasError&&(t._currentErrors=[],t._currentErrors.push(...this.currentErrors||[])),this.hasWarning&&(t._currentWarnings=[],t._currentWarnings.push(...this.currentWarnings||[])),t.variablesState=this.variablesState,t.variablesState.callStack=t.callStack,t.variablesState.patch=t._patch,t.evaluationStack.push(...this.evaluationStack),this.divertedPointer.isNull||(t.divertedPointer=this.divertedPointer.copy()),t.previousPointer=this.previousPointer.copy(),t._visitCounts=this._visitCounts,t._turnIndices=this._turnIndices,t.currentTurnIndex=this.currentTurnIndex,t.storySeed=this.storySeed,t.previousRandom=this.previousRandom,t.didSafeExit=this.didSafeExit,t}RestoreAfterPatch(){this.variablesState.callStack=this.callStack,this.variablesState.patch=this._patch;}ApplyAnyPatch(){if(this._patch!==null){this.variablesState.ApplyPatch();for(let[e,t]of this._patch.visitCounts)this.ApplyCountChanges(e,t,true);for(let[e,t]of this._patch.turnIndices)this.ApplyCountChanges(e,t,false);this._patch=null;}}ApplyCountChanges(e,t,n){(n?this._visitCounts:this._turnIndices).set(e.path.toString(),t);}WriteJson(e){if(e.WriteObjectStart(),e.WritePropertyStart("flows"),e.WriteObjectStart(),this._namedFlows!==null)for(let[t,n]of this._namedFlows)e.WriteProperty(t,r=>n.WriteJson(r));else e.WriteProperty(this._currentFlow.name,t=>this._currentFlow.WriteJson(t));if(e.WriteObjectEnd(),e.WritePropertyEnd(),e.WriteProperty("currentFlowName",this._currentFlow.name),e.WriteProperty("variablesState",t=>this.variablesState.WriteJson(t)),e.WriteProperty("evalStack",t=>Ft.JsonSerialisation.WriteListRuntimeObjs(t,this.evaluationStack)),!this.divertedPointer.isNull){if(this.divertedPointer.path===null)return (0, ze.throwNullException)("divertedPointer");e.WriteProperty("currentDivertTarget",this.divertedPointer.path.componentsString);}e.WriteProperty("visitCounts",t=>Ft.JsonSerialisation.WriteIntDictionary(t,this._visitCounts)),e.WriteProperty("turnIndices",t=>Ft.JsonSerialisation.WriteIntDictionary(t,this._turnIndices)),e.WriteIntProperty("turnIdx",this.currentTurnIndex),e.WriteIntProperty("storySeed",this.storySeed),e.WriteIntProperty("previousRandom",this.previousRandom),e.WriteIntProperty("inkSaveVersion",this.kInkSaveStateVersion),e.WriteIntProperty("inkFormatVersion",qg.Story.inkVersionCurrent),e.WriteObjectEnd();}LoadJsonObj(e){let t=e,n=t.inkSaveVersion;if(n==null)throw new Error("ink save format incorrect, can't load.");if(parseInt(n)<this.kMinCompatibleLoadVersion)throw new Error("Ink save format isn't compatible with the current version (saw '"+n+"', but minimum is "+this.kMinCompatibleLoadVersion+"), so can't load.");let r=t.flows;if(r!=null){let s=r;Object.keys(s).length===1?this._namedFlows=null:this._namedFlows===null?this._namedFlows=new Map:this._namedFlows.clear();let o=Object.entries(s);for(let[l,u]of o){let h=l,c=u,d=new Rs.Flow(h,this.story,c);if(Object.keys(s).length===1)this._currentFlow=new Rs.Flow(h,this.story,c);else {if(this._namedFlows===null)return (0, ze.throwNullException)("this._namedFlows");this._namedFlows.set(h,d);}}if(this._namedFlows!=null&&this._namedFlows.size>1){let l=t.currentFlowName;this._currentFlow=this._namedFlows.get(l);}}else {this._namedFlows=null,this._currentFlow.name=this.kDefaultFlowName,this._currentFlow.callStack.SetJsonToken(t.callstackThreads,this.story),this._currentFlow.outputStream=Ft.JsonSerialisation.JArrayToRuntimeObjList(t.outputStream),this._currentFlow.currentChoices=Ft.JsonSerialisation.JArrayToRuntimeObjList(t.currentChoices);let s=t.choiceThreads;this._currentFlow.LoadFlowChoiceThreads(s,this.story);}this.OutputStreamDirty(),this._aliveFlowNamesDirty=true,this.variablesState.SetJsonToken(t.variablesState),this.variablesState.callStack=this._currentFlow.callStack,this._evaluationStack=Ft.JsonSerialisation.JArrayToRuntimeObjList(t.evalStack);let a=t.currentDivertTarget;if(a!=null){let s=new rc.Path(a.toString());this.divertedPointer=this.story.PointerAtPath(s);}this._visitCounts=Ft.JsonSerialisation.JObjectToIntDictionary(t.visitCounts),this._turnIndices=Ft.JsonSerialisation.JObjectToIntDictionary(t.turnIndices),this.currentTurnIndex=parseInt(t.turnIdx),this.storySeed=parseInt(t.storySeed),this.previousRandom=parseInt(t.previousRandom);}ResetErrors(){this._currentErrors=null,this._currentWarnings=null;}ResetOutput(e=null){this.outputStream.length=0,e!==null&&this.outputStream.push(...e),this.OutputStreamDirty();}PushToOutputStream(e){let t=(0, oe.asOrNull)(e,he.StringValue);if(t!==null){let n=this.TrySplittingHeadTailWhitespace(t);if(n!==null){for(let r of n)this.PushToOutputStreamIndividual(r);this.OutputStreamDirty();return}}this.PushToOutputStreamIndividual(e),this.OutputStreamDirty();}PopFromOutputStream(e){this.outputStream.splice(this.outputStream.length-e,e),this.OutputStreamDirty();}TrySplittingHeadTailWhitespace(e){let t=e.value;if(t===null)return (0, ze.throwNullException)("single.value");let n=-1,r=-1;for(let h=0;h<t.length;h++){let c=t[h];if(c==`
|
|
23
23
|
`)n==-1&&(n=h),r=h;else {if(c==" "||c==" ")continue;break}}let a=-1,s=-1;for(let h=t.length-1;h>=0;h--){let c=t[h];if(c==`
|
|
24
24
|
`)a==-1&&(a=h),s=h;else {if(c==" "||c==" ")continue;break}}if(n==-1&&a==-1)return null;let o=[],l=0,u=t.length;if(n!=-1){if(n>0){let h=new he.StringValue(t.substring(0,n));o.push(h);}o.push(new he.StringValue(`
|
|
25
25
|
`)),l=r+1;}if(a!=-1&&(u=s),u>l){let h=t.substring(l,u);o.push(new he.StringValue(h));}if(a!=-1&&s>r&&(o.push(new he.StringValue(`
|
|
26
|
-
`)),a<t.length-1)){let h=t.length-a-1,c=new he.StringValue(t.substring(a+1,a+1+h));o.push(c);}return o}PushToOutputStreamIndividual(e){let t=(0, oe.asOrNull)(e,Pl.Glue),n=(0, oe.asOrNull)(e,he.StringValue),r=true;if(t)this.TrimNewlinesFromOutputStream(),r=true;else if(n){let a=-1,s=this.callStack.currentElement;s.type==Pt.PushPopType.Function&&(a=s.functionStartInOutputStream);let o=-1;for(let u=this.outputStream.length-1;u>=0;u--){let h=this.outputStream[u],c=h instanceof Te.ControlCommand?h:null;if((h instanceof Pl.Glue?h:null)!=null){o=u;break}else if(c!=null&&c.commandType==Te.ControlCommand.CommandType.BeginString){u>=a&&(a=-1);break}}let l=-1;if(o!=-1&&a!=-1?l=Math.min(a,o):o!=-1?l=o:l=a,l!=-1){if(n.isNewline)r=false;else if(n.isNonWhitespace&&(o>-1&&this.RemoveExistingGlue(),a>-1)){let u=this.callStack.elements;for(let h=u.length-1;h>=0;h--){let c=u[h];if(c.type==Pt.PushPopType.Function)c.functionStartInOutputStream=-1;else break}}}else n.isNewline&&(this.outputStreamEndsInNewline||!this.outputStreamContainsContent)&&(r=false);}if(r){if(e===null)return (0, ze.throwNullException)("obj");this.outputStream.push(e),this.OutputStreamDirty();}}TrimNewlinesFromOutputStream(){let e=-1,t=this.outputStream.length-1;for(;t>=0;){let n=this.outputStream[t],r=(0, oe.asOrNull)(n,Te.ControlCommand),a=(0, oe.asOrNull)(n,he.StringValue);if(r!=null||a!=null&&a.isNonWhitespace)break;a!=null&&a.isNewline&&(e=t),t--;}if(e>=0)for(t=e;t<this.outputStream.length;)(0, oe.asOrNull)(this.outputStream[t],he.StringValue)?this.outputStream.splice(t,1):t++;this.OutputStreamDirty();}RemoveExistingGlue(){for(let e=this.outputStream.length-1;e>=0;e--){let t=this.outputStream[e];if(t instanceof Pl.Glue)this.outputStream.splice(e,1);else if(t instanceof Te.ControlCommand)break}this.OutputStreamDirty();}get outputStreamEndsInNewline(){if(this.outputStream.length>0)for(let e=this.outputStream.length-1;e>=0&&!(this.outputStream[e]instanceof Te.ControlCommand);e--){let n=this.outputStream[e];if(n instanceof he.StringValue){if(n.isNewline)return true;if(n.isNonWhitespace)break}}return false}get outputStreamContainsContent(){for(let e of this.outputStream)if(e instanceof he.StringValue)return true;return false}get inStringEvaluation(){for(let e=this.outputStream.length-1;e>=0;e--){let t=(0, oe.asOrNull)(this.outputStream[e],Te.ControlCommand);if(t instanceof Te.ControlCommand&&t.commandType==Te.ControlCommand.CommandType.BeginString)return true}return false}PushEvaluationStack(e){let t=(0, oe.asOrNull)(e,he.ListValue);if(t){let n=t.value;if(n===null)return (0, ze.throwNullException)("rawList");if(n.originNames!=null){n.origins||(n.origins=[]),n.origins.length=0;for(let r of n.originNames){if(this.story.listDefinitions===null)return (0, ze.throwNullException)("StoryState.story.listDefinitions");let a=this.story.listDefinitions.TryListGetDefinition(r,null);if(a.result===null)return (0, ze.throwNullException)("StoryState def.result");n.origins.indexOf(a.result)<0&&n.origins.push(a.result);}}}if(e===null)return (0, ze.throwNullException)("obj");this.evaluationStack.push(e);}PopEvaluationStack(e){if(typeof e>"u"){let t=this.evaluationStack.pop();return (0, oe.nullIfUndefined)(t)}else {if(e>this.evaluationStack.length)throw new Error("trying to pop too many objects");let t=this.evaluationStack.splice(this.evaluationStack.length-e,e);return (0, oe.nullIfUndefined)(t)}}PeekEvaluationStack(){return this.evaluationStack[this.evaluationStack.length-1]}ForceEnd(){this.callStack.Reset(),this._currentFlow.currentChoices.length=0,this.currentPointer=Sn.Pointer.Null,this.previousPointer=Sn.Pointer.Null,this.didSafeExit=true;}TrimWhitespaceFromFunctionEnd(){jg.Debug.Assert(this.callStack.currentElement.type==Pt.PushPopType.Function);let e=this.callStack.currentElement.functionStartInOutputStream;e==-1&&(e=0);for(let t=this.outputStream.length-1;t>=e;t--){let n=this.outputStream[t],r=(0, oe.asOrNull)(n,he.StringValue),a=(0, oe.asOrNull)(n,Te.ControlCommand);if(r!=null){if(a)break;if(r.isNewline||r.isInlineWhitespace)this.outputStream.splice(t,1),this.OutputStreamDirty();else break}}}PopCallStack(e=null){this.callStack.currentElement.type==Pt.PushPopType.Function&&this.TrimWhitespaceFromFunctionEnd(),this.callStack.Pop(e);}SetChosenPath(e,t){this._currentFlow.currentChoices.length=0;let n=this.story.PointerAtPath(e);!n.isNull&&n.index==-1&&(n.index=0),this.currentPointer=n,t&&this.currentTurnIndex++;}StartFunctionEvaluationFromGame(e,t){this.callStack.Push(Pt.PushPopType.FunctionEvaluationFromGame,this.evaluationStack.length),this.callStack.currentElement.currentPointer=Sn.Pointer.StartOf(e),this.PassArgumentsToEvaluationStack(t);}PassArgumentsToEvaluationStack(e){if(e!==null)for(let t=0;t<e.length;t++){if(!(typeof e[t]=="number"||typeof e[t]=="string"||typeof e[t]=="boolean"||e[t]instanceof Gg.InkList))throw new Error("ink arguments when calling EvaluateFunction / ChoosePathStringWithParameters must benumber, string, bool or InkList. Argument was "+((0, oe.nullIfUndefined)(e[t])===null?"null":e[t].constructor.name));this.PushEvaluationStack(he.Value.Create(e[t]));}}TryExitFunctionEvaluationFromGame(){return this.callStack.currentElement.type==Pt.PushPopType.FunctionEvaluationFromGame?(this.currentPointer=Sn.Pointer.Null,this.didSafeExit=true,true):false}CompleteFunctionEvaluationFromGame(){if(this.callStack.currentElement.type!=Pt.PushPopType.FunctionEvaluationFromGame)throw new Error("Expected external function evaluation to be complete. Stack trace: "+this.callStack.callStackTrace);let e=this.callStack.currentElement.evaluationStackHeightWhenPushed,t=null;for(;this.evaluationStack.length>e;){let n=this.PopEvaluationStack();t===null&&(t=n);}if(this.PopCallStack(Pt.PushPopType.FunctionEvaluationFromGame),t){if(t instanceof Wg.Void)return null;let n=(0, oe.asOrThrows)(t,he.Value);return n.valueType==he.ValueType.DivertTarget?"-> "+n.valueObject.toString():n.valueObject}return null}AddError(e,t){t?(this._currentWarnings==null&&(this._currentWarnings=[]),this._currentWarnings.push(e)):(this._currentErrors==null&&(this._currentErrors=[]),this._currentErrors.push(e));}OutputStreamDirty(){this._outputStreamTextDirty=true,this._outputStreamTagsDirty=true;}};Ls.StoryState=Nl;});var sc=b(Bs=>{Object.defineProperty(Bs,"__esModule",{value:true});Bs.Stopwatch=void 0;var Il=class{constructor(){this.startTime=void 0;}get ElapsedMilliseconds(){return typeof this.startTime>"u"?0:new Date().getTime()-this.startTime}Start(){this.startTime=new Date().getTime();}Stop(){this.startTime=void 0;}};Bs.Stopwatch=Il;});var oc=b(Ws=>{Object.defineProperty(Ws,"__esModule",{value:true});Ws.ErrorType=void 0;var ac;(function(i){i[i.Author=0]="Author",i[i.Warning=1]="Warning",i[i.Error=2]="Error";})(ac||(Ws.ErrorType=ac={}));});var si=b(Kt=>{Object.defineProperty(Kt,"__esModule",{value:true});Kt.Story=Kt.InkList=void 0;var ye=se(),Vl=Ie(),kl=En(),$g=rc(),R=ge(),Ke=Mt(),Jg=ar(),Hg=Cl(),lc=ot(),F=te(),Rl=Ne(),hi=qt(),js=bs(),Ug=xt(),zg=Cn(),Kg=at(),Ut=Rn(),Ll=xl(),zt=Wt(),Xg=vl(),Yg=sc(),Nt=Un(),ci=ke(),L=U(),H=me(),uc=Tl(),hc=oc(),Qg=ke();Object.defineProperty(Kt,"InkList",{enumerable:true,get:function(){return Qg.InkList}});Number.isInteger||(Number.isInteger=function(e){return typeof e=="number"&&isFinite(e)&&e>-9007199254740992&&e<9007199254740992&&Math.floor(e)===e});var Dn=class i extends Vl.InkObject{get currentChoices(){let e=[];if(this._state===null)return (0, H.throwNullException)("this._state");for(let t of this._state.currentChoices)t.isInvisibleDefault||(t.index=e.length,e.push(t));return e}get currentText(){return this.IfAsyncWeCant("call currentText since it's a work in progress"),this.state.currentText}get currentTags(){return this.IfAsyncWeCant("call currentTags since it's a work in progress"),this.state.currentTags}get currentErrors(){return this.state.currentErrors}get currentWarnings(){return this.state.currentWarnings}get currentFlowName(){return this.state.currentFlowName}get currentFlowIsDefaultFlow(){return this.state.currentFlowIsDefaultFlow}get aliveFlowNames(){return this.state.aliveFlowNames}get hasError(){return this.state.hasError}get hasWarning(){return this.state.hasWarning}get variablesState(){return this.state.variablesState}get listDefinitions(){return this._listDefinitions}get state(){return this._state}StartProfiling(){}EndProfiling(){}constructor(){super(),this.inkVersionMinimumCompatible=18,this.onError=null,this.onDidContinue=null,this.onMakeChoice=null,this.onEvaluateFunction=null,this.onCompleteEvaluateFunction=null,this.onChoosePathString=null,this._prevContainers=[],this.allowExternalFunctionFallbacks=false,this._listDefinitions=null,this._variableObservers=null,this._hasValidatedExternals=false,this._temporaryEvaluationContainer=null,this._asyncContinueActive=false,this._stateSnapshotAtLastNewline=null,this._sawLookaheadUnsafeFunctionAfterNewline=false,this._recursiveContinueCount=0,this._asyncSaving=false,this._profiler=null;let e,t=null,n=null;if(arguments[0]instanceof ye.Container)e=arguments[0],typeof arguments[1]<"u"&&(t=arguments[1]),this._mainContentContainer=e;else if(typeof arguments[0]=="string"){let r=arguments[0];n=uc.SimpleJson.TextToDictionary(r);}else n=arguments[0];if(t!=null&&(this._listDefinitions=new Xg.ListDefinitionsOrigin(t)),this._externals=new Map,n!==null){let r=n,a=r.inkVersion;if(a==null)throw new Error("ink version number not found. Are you sure it's a valid .ink.json file?");let s=parseInt(a);if(s>i.inkVersionCurrent)throw new Error("Version of ink used to build story was newer than the current version of the engine");if(s<this.inkVersionMinimumCompatible)throw new Error("Version of ink used to build story is too old to be loaded by this version of the engine");s!=i.inkVersionCurrent&&console.warn(`WARNING: Version of ink ${i.inkVersionCurrent} used to build story doesn't match current version of engine (${s}). Non-critical, but recommend synchronising.`);let o=r.root;if(o==null)throw new Error("Root node for ink not found. Are you sure it's a valid .ink.json file?");let l;(l=r.listDefs)&&(this._listDefinitions=kl.JsonSerialisation.JTokenToListDefinitions(l)),this._mainContentContainer=(0, L.asOrThrows)(kl.JsonSerialisation.JTokenToRuntimeObject(o),ye.Container),this.ResetState();}}ToJson(e){let t=false;if(e||(t=true,e=new uc.SimpleJson.Writer),e.WriteObjectStart(),e.WriteIntProperty("inkVersion",i.inkVersionCurrent),e.WriteProperty("root",n=>kl.JsonSerialisation.WriteRuntimeContainer(n,this._mainContentContainer)),this._listDefinitions!=null){e.WritePropertyStart("listDefs"),e.WriteObjectStart();for(let n of this._listDefinitions.lists){e.WritePropertyStart(n.name),e.WriteObjectStart();for(let[r,a]of n.items){let s=ci.InkListItem.fromSerializedKey(r),o=a;e.WriteIntProperty(s.itemName,o);}e.WriteObjectEnd(),e.WritePropertyEnd();}e.WriteObjectEnd(),e.WritePropertyEnd();}if(e.WriteObjectEnd(),t)return e.toString()}ResetState(){this.IfAsyncWeCant("ResetState"),this._state=new $g.StoryState(this),this._state.variablesState.ObserveVariableChange(this.VariableStateDidChangeEvent.bind(this)),this.ResetGlobals();}ResetErrors(){if(this._state===null)return (0, H.throwNullException)("this._state");this._state.ResetErrors();}ResetCallstack(){if(this.IfAsyncWeCant("ResetCallstack"),this._state===null)return (0, H.throwNullException)("this._state");this._state.ForceEnd();}ResetGlobals(){if(this._mainContentContainer.namedContent.get("global decl")){let e=this.state.currentPointer.copy();this.ChoosePath(new Rl.Path("global decl"),false),this.ContinueInternal(),this.state.currentPointer=e;}this.state.variablesState.SnapshotDefaultGlobals();}SwitchFlow(e){if(this.IfAsyncWeCant("switch flow"),this._asyncSaving)throw new Error("Story is already in background saving mode, can't switch flow to "+e);this.state.SwitchFlow_Internal(e);}RemoveFlow(e){this.state.RemoveFlow_Internal(e);}SwitchToDefaultFlow(){this.state.SwitchToDefaultFlow_Internal();}Continue(){return this.ContinueAsync(0),this.currentText}get canContinue(){return this.state.canContinue}get asyncContinueComplete(){return !this._asyncContinueActive}ContinueAsync(e){this._hasValidatedExternals||this.ValidateExternalBindings(),this.ContinueInternal(e);}ContinueInternal(e=0){this._profiler!=null&&this._profiler.PreContinue();let t=e>0;if(this._recursiveContinueCount++,this._asyncContinueActive)this._asyncContinueActive&&!t&&(this._asyncContinueActive=false);else {if(this._asyncContinueActive=t,!this.canContinue)throw new Error("Can't continue - should check canContinue before calling Continue");this._state.didSafeExit=false,this._state.ResetOutput(),this._recursiveContinueCount==1&&this._state.variablesState.StartVariableObservation();}let n=new Yg.Stopwatch;n.Start();let r=false;this._sawLookaheadUnsafeFunctionAfterNewline=false;do{try{r=this.ContinueSingleStep();}catch(s){if(!(s instanceof Ut.StoryException))throw s;this.AddError(s.message,void 0,s.useEndLineNumber);break}if(r||this._asyncContinueActive&&n.ElapsedMilliseconds>e)break}while(this.canContinue);n.Stop();let a=null;if((r||!this.canContinue)&&(this._stateSnapshotAtLastNewline!==null&&this.RestoreStateSnapshot(),this.canContinue||(this.state.callStack.canPopThread&&this.AddError("Thread available to pop, threads should always be flat by the end of evaluation?"),this.state.generatedChoices.length==0&&!this.state.didSafeExit&&this._temporaryEvaluationContainer==null&&(this.state.callStack.CanPop(Ke.PushPopType.Tunnel)?this.AddError("unexpectedly reached end of content. Do you need a '->->' to return from a tunnel?"):this.state.callStack.CanPop(Ke.PushPopType.Function)?this.AddError("unexpectedly reached end of content. Do you need a '~ return'?"):this.state.callStack.canPop?this.AddError("unexpectedly reached end of content for unknown reason. Please debug compiler!"):this.AddError("ran out of content. Do you need a '-> DONE' or '-> END'?"))),this.state.didSafeExit=false,this._sawLookaheadUnsafeFunctionAfterNewline=false,this._recursiveContinueCount==1&&(a=this._state.variablesState.CompleteVariableObservation()),this._asyncContinueActive=false,this.onDidContinue!==null&&this.onDidContinue()),this._recursiveContinueCount--,this._profiler!=null&&this._profiler.PostContinue(),this.state.hasError||this.state.hasWarning)if(this.onError!==null){if(this.state.hasError)for(let s of this.state.currentErrors)this.onError(s,hc.ErrorType.Error);if(this.state.hasWarning)for(let s of this.state.currentWarnings)this.onError(s,hc.ErrorType.Warning);this.ResetErrors();}else {let s=new zt.StringBuilder;throw s.Append("Ink had "),this.state.hasError&&(s.Append(`${this.state.currentErrors.length}`),s.Append(this.state.currentErrors.length==1?" error":" errors"),this.state.hasWarning&&s.Append(" and ")),this.state.hasWarning&&(s.Append(`${this.state.currentWarnings.length}`),s.Append(this.state.currentWarnings.length==1?" warning":" warnings"),this.state.hasWarning&&s.Append(" and ")),s.Append(". It is strongly suggested that you assign an error handler to story.onError. The first issue was: "),s.Append(this.state.hasError?this.state.currentErrors[0]:this.state.currentWarnings[0]),new Ut.StoryException(s.toString())}a!=null&&Object.keys(a).length>0&&this._state.variablesState.NotifyObservers(a);}ContinueSingleStep(){if(this._profiler!=null&&this._profiler.PreStep(),this.Step(),this._profiler!=null&&this._profiler.PostStep(),!this.canContinue&&!this.state.callStack.elementIsEvaluateFromGame&&this.TryFollowDefaultInvisibleChoice(),this._profiler!=null&&this._profiler.PreSnapshot(),!this.state.inStringEvaluation){if(this._stateSnapshotAtLastNewline!==null){if(this._stateSnapshotAtLastNewline.currentTags===null)return (0, H.throwNullException)("this._stateAtLastNewline.currentTags");if(this.state.currentTags===null)return (0, H.throwNullException)("this.state.currentTags");let e=this.CalculateNewlineOutputStateChange(this._stateSnapshotAtLastNewline.currentText,this.state.currentText,this._stateSnapshotAtLastNewline.currentTags.length,this.state.currentTags.length);if(e==i.OutputStateChange.ExtendedBeyondNewline||this._sawLookaheadUnsafeFunctionAfterNewline)return this.RestoreStateSnapshot(),true;e==i.OutputStateChange.NewlineRemoved&&this.DiscardSnapshot();}this.state.outputStreamEndsInNewline&&(this.canContinue?this._stateSnapshotAtLastNewline==null&&this.StateSnapshot():this.DiscardSnapshot());}return this._profiler!=null&&this._profiler.PostSnapshot(),false}CalculateNewlineOutputStateChange(e,t,n,r){if(e===null)return (0, H.throwNullException)("prevText");if(t===null)return (0, H.throwNullException)("currText");let a=t.length>=e.length&&e.length>0&&t.charAt(e.length-1)==`
|
|
27
|
-
`;if(n==r&&e.length==t.length&&a)return i.OutputStateChange.NoChange;if(!a)return i.OutputStateChange.NewlineRemoved;if(r>n)return i.OutputStateChange.ExtendedBeyondNewline;for(let s=e.length;s<t.length;s++){let o=t.charAt(s);if(o!=" "&&o!=" ")return i.OutputStateChange.ExtendedBeyondNewline}return i.OutputStateChange.NoChange}ContinueMaximally(){this.IfAsyncWeCant("ContinueMaximally");let e=new zt.StringBuilder;for(;this.canContinue;)e.Append(this.Continue());return e.toString()}ContentAtPath(e){return this.mainContentContainer.ContentAtPath(e)}KnotContainerWithName(e){let t=this.mainContentContainer.namedContent.get(e);return t instanceof ye.Container?t:null}PointerAtPath(e){if(e.length==0)return Nt.Pointer.Null;let t=new Nt.Pointer,n=e.length,r=null;return e.lastComponent===null?(0, H.throwNullException)("path.lastComponent"):(e.lastComponent.isIndex?(n=e.length-1,r=this.mainContentContainer.ContentAtPath(e,void 0,n),t.container=r.container,t.index=e.lastComponent.index):(r=this.mainContentContainer.ContentAtPath(e),t.container=r.container,t.index=-1),r.obj==null||r.obj==this.mainContentContainer&&n>0?this.Error("Failed to find content at path '"+e+"', and no approximation of it was possible."):r.approximate&&this.Warning("Failed to find content at path '"+e+"', so it was approximated to: '"+r.obj.path+"'."),t)}StateSnapshot(){this._stateSnapshotAtLastNewline=this._state,this._state=this._state.CopyAndStartPatching(false);}RestoreStateSnapshot(){this._stateSnapshotAtLastNewline===null&&(0, H.throwNullException)("_stateSnapshotAtLastNewline"),this._stateSnapshotAtLastNewline.RestoreAfterPatch(),this._state=this._stateSnapshotAtLastNewline,this._stateSnapshotAtLastNewline=null,this._asyncSaving||this._state.ApplyAnyPatch();}DiscardSnapshot(){this._asyncSaving||this._state.ApplyAnyPatch(),this._stateSnapshotAtLastNewline=null;}CopyStateForBackgroundThreadSave(){if(this.IfAsyncWeCant("start saving on a background thread"),this._asyncSaving)throw new Error("Story is already in background saving mode, can't call CopyStateForBackgroundThreadSave again!");let e=this._state;return this._state=this._state.CopyAndStartPatching(true),this._asyncSaving=true,e}BackgroundSaveComplete(){this._stateSnapshotAtLastNewline===null&&this._state.ApplyAnyPatch(),this._asyncSaving=false;}Step(){let e=true,t=this.state.currentPointer.copy();if(t.isNull)return;let n=(0, L.asOrNull)(t.Resolve(),ye.Container);for(;n&&(this.VisitContainer(n,true),n.content.length!=0);)t=Nt.Pointer.StartOf(n),n=(0, L.asOrNull)(t.Resolve(),ye.Container);this.state.currentPointer=t.copy(),this._profiler!=null&&this._profiler.Step(this.state.callStack);let r=t.Resolve(),a=this.PerformLogicAndFlowControl(r);if(this.state.currentPointer.isNull)return;a&&(e=false);let s=(0, L.asOrNull)(r,Jg.ChoicePoint);if(s){let l=this.ProcessChoice(s);l&&this.state.generatedChoices.push(l),r=null,e=false;}if(r instanceof ye.Container&&(e=false),e){let l=(0, L.asOrNull)(r,F.VariablePointerValue);if(l&&l.contextIndex==-1){let u=this.state.callStack.ContextForVariableNamed(l.variableName);r=new F.VariablePointerValue(l.variableName,u);}this.state.inExpressionEvaluation?this.state.PushEvaluationStack(r):this.state.PushToOutputStream(r);}this.NextContent();let o=(0, L.asOrNull)(r,R.ControlCommand);o&&o.commandType==R.ControlCommand.CommandType.StartThread&&this.state.callStack.PushThread();}VisitContainer(e,t){(!e.countingAtStartOnly||t)&&(e.visitsShouldBeCounted&&this.state.IncrementVisitCountForContainer(e),e.turnIndexShouldBeCounted&&this.state.RecordTurnIndexVisitToContainer(e));}VisitChangedContainersDueToDivert(){let e=this.state.previousPointer.copy(),t=this.state.currentPointer.copy();if(t.isNull||t.index==-1)return;if(this._prevContainers.length=0,!e.isNull){let s=e.Resolve(),o=(0, L.asOrNull)(s,ye.Container)||(0, L.asOrNull)(e.container,ye.Container);for(;o;)this._prevContainers.push(o),o=(0, L.asOrNull)(o.parent,ye.Container);}let n=t.Resolve();if(n==null)return;let r=(0, L.asOrNull)(n.parent,ye.Container),a=true;for(;r&&(this._prevContainers.indexOf(r)<0||r.countingAtStartOnly);){let s=r.content.length>0&&n==r.content[0]&&a;s||(a=false),this.VisitContainer(r,s),n=r,r=(0, L.asOrNull)(r.parent,ye.Container);}}PopChoiceStringAndTags(e){let t=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.StringValue);for(;this.state.evaluationStack.length>0&&(0, L.asOrNull)(this.state.PeekEvaluationStack(),js.Tag)!=null;){let n=(0, L.asOrNull)(this.state.PopEvaluationStack(),js.Tag);n&&e.push(n.text);}return t.value}ProcessChoice(e){let t=true;if(e.hasCondition){let o=this.state.PopEvaluationStack();this.IsTruthy(o)||(t=false);}let n="",r="",a=[];if(e.hasChoiceOnlyContent&&(r=this.PopChoiceStringAndTags(a)||""),e.hasStartContent&&(n=this.PopChoiceStringAndTags(a)||""),e.onceOnly&&this.state.VisitCountForContainer(e.choiceTarget)>0&&(t=false),!t)return null;let s=new Hg.Choice;return s.targetPath=e.pathOnChoice,s.sourcePath=e.path.toString(),s.isInvisibleDefault=e.isInvisibleDefault,s.threadAtGeneration=this.state.callStack.ForkThread(),s.tags=a.reverse(),s.text=(n+r).replace(/^[ \t]+|[ \t]+$/g,""),s}IsTruthy(e){let t=false;if(e instanceof F.Value){let n=e;if(n instanceof F.DivertTargetValue){let r=n;return this.Error("Shouldn't use a divert target (to "+r.targetPath+") as a conditional value. Did you intend a function call 'likeThis()' or a read count check 'likeThis'? (no arrows)"),false}return n.isTruthy}return t}PerformLogicAndFlowControl(e){if(e==null)return false;if(e instanceof lc.Divert){let t=e;if(t.isConditional){let n=this.state.PopEvaluationStack();if(!this.IsTruthy(n))return true}if(t.hasVariableTarget){let n=t.variableDivertName,r=this.state.variablesState.GetVariableWithName(n);if(r==null)this.Error("Tried to divert using a target from a variable that could not be found ("+n+")");else if(!(r instanceof F.DivertTargetValue)){let s=(0, L.asOrNull)(r,F.IntValue),o="Tried to divert to a target from a variable, but the variable ("+n+") didn't contain a divert target, it ";s instanceof F.IntValue&&s.value==0?o+="was empty/null (the value 0).":o+="contained '"+r+"'.",this.Error(o);}let a=(0, L.asOrThrows)(r,F.DivertTargetValue);this.state.divertedPointer=this.PointerAtPath(a.targetPath);}else {if(t.isExternal)return this.CallExternalFunction(t.targetPathString,t.externalArgs),true;this.state.divertedPointer=t.targetPointer.copy();}return t.pushesToStack&&this.state.callStack.Push(t.stackPushType,void 0,this.state.outputStream.length),this.state.divertedPointer.isNull&&!t.isExternal&&(t&&t.debugMetadata&&t.debugMetadata.sourceName!=null?this.Error("Divert target doesn't exist: "+t.debugMetadata.sourceName):this.Error("Divert resolution failed: "+t)),true}else if(e instanceof R.ControlCommand){let t=e;switch(t.commandType){case R.ControlCommand.CommandType.EvalStart:this.Assert(this.state.inExpressionEvaluation===false,"Already in expression evaluation?"),this.state.inExpressionEvaluation=true;break;case R.ControlCommand.CommandType.EvalEnd:this.Assert(this.state.inExpressionEvaluation===true,"Not in expression evaluation mode"),this.state.inExpressionEvaluation=false;break;case R.ControlCommand.CommandType.EvalOutput:if(this.state.evaluationStack.length>0){let m=this.state.PopEvaluationStack();if(!(m instanceof hi.Void)){let E=new F.StringValue(m.toString());this.state.PushToOutputStream(E);}}break;case R.ControlCommand.CommandType.NoOp:break;case R.ControlCommand.CommandType.Duplicate:this.state.PushEvaluationStack(this.state.PeekEvaluationStack());break;case R.ControlCommand.CommandType.PopEvaluatedValue:this.state.PopEvaluationStack();break;case R.ControlCommand.CommandType.PopFunction:case R.ControlCommand.CommandType.PopTunnel:let n=t.commandType==R.ControlCommand.CommandType.PopFunction?Ke.PushPopType.Function:Ke.PushPopType.Tunnel,r=null;if(n==Ke.PushPopType.Tunnel){let m=this.state.PopEvaluationStack();r=(0, L.asOrNull)(m,F.DivertTargetValue),r===null&&this.Assert(m instanceof hi.Void,"Expected void if ->-> doesn't override target");}if(this.state.TryExitFunctionEvaluationFromGame())break;if(this.state.callStack.currentElement.type!=n||!this.state.callStack.canPop){let m=new Map;m.set(Ke.PushPopType.Function,"function return statement (~ return)"),m.set(Ke.PushPopType.Tunnel,"tunnel onwards statement (->->)");let E=m.get(this.state.callStack.currentElement.type);this.state.callStack.canPop||(E="end of flow (-> END or choice)");let x="Found "+m.get(n)+", when expected "+E;this.Error(x);}else this.state.PopCallStack(),r&&(this.state.divertedPointer=this.PointerAtPath(r.targetPath));break;case R.ControlCommand.CommandType.BeginString:this.state.PushToOutputStream(t),this.Assert(this.state.inExpressionEvaluation===true,"Expected to be in an expression when evaluating a string"),this.state.inExpressionEvaluation=false;break;case R.ControlCommand.CommandType.BeginTag:this.state.PushToOutputStream(t);break;case R.ControlCommand.CommandType.EndTag:{if(this.state.inStringEvaluation){let m=[],E=0;for(let N=this.state.outputStream.length-1;N>=0;--N){let ee=this.state.outputStream[N];E++;let Ee=(0, L.asOrNull)(ee,R.ControlCommand);if(Ee!=null){if(Ee.commandType==R.ControlCommand.CommandType.BeginTag)break;this.Error("Unexpected ControlCommand while extracting tag from choice");break}ee instanceof F.StringValue&&m.push(ee);}this.state.PopFromOutputStream(E);let x=new zt.StringBuilder;for(let N of m.reverse())x.Append(N.toString());let P=new js.Tag(this.state.CleanOutputWhitespace(x.toString()));this.state.PushEvaluationStack(P);}else this.state.PushToOutputStream(t);break}case R.ControlCommand.CommandType.EndString:{let m=[],E=[],x=0;for(let N=this.state.outputStream.length-1;N>=0;--N){let ee=this.state.outputStream[N];x++;let Ee=(0, L.asOrNull)(ee,R.ControlCommand);if(Ee&&Ee.commandType==R.ControlCommand.CommandType.BeginString)break;ee instanceof js.Tag&&E.push(ee),ee instanceof F.StringValue&&m.push(ee);}this.state.PopFromOutputStream(x);for(let N of E)this.state.PushToOutputStream(N);m=m.reverse();let P=new zt.StringBuilder;for(let N of m)P.Append(N.toString());this.state.inExpressionEvaluation=true,this.state.PushEvaluationStack(new F.StringValue(P.toString()));break}case R.ControlCommand.CommandType.ChoiceCount:let a=this.state.generatedChoices.length;this.state.PushEvaluationStack(new F.IntValue(a));break;case R.ControlCommand.CommandType.Turns:this.state.PushEvaluationStack(new F.IntValue(this.state.currentTurnIndex+1));break;case R.ControlCommand.CommandType.TurnsSince:case R.ControlCommand.CommandType.ReadCount:let s=this.state.PopEvaluationStack();if(!(s instanceof F.DivertTargetValue)){let m="";s instanceof F.IntValue&&(m=". Did you accidentally pass a read count ('knot_name') instead of a target ('-> knot_name')?"),this.Error("TURNS_SINCE / READ_COUNT expected a divert target (knot, stitch, label name), but saw "+s+m);break}let o=(0, L.asOrThrows)(s,F.DivertTargetValue),l=(0, L.asOrNull)(this.ContentAtPath(o.targetPath).correctObj,ye.Container),u;l!=null?t.commandType==R.ControlCommand.CommandType.TurnsSince?u=this.state.TurnsSinceForContainer(l):u=this.state.VisitCountForContainer(l):(t.commandType==R.ControlCommand.CommandType.TurnsSince?u=-1:u=0,this.Warning("Failed to find container for "+t.toString()+" lookup at "+o.targetPath.toString())),this.state.PushEvaluationStack(new F.IntValue(u));break;case R.ControlCommand.CommandType.Random:{let m=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue),E=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue);if(E==null||!(E instanceof F.IntValue))return this.Error("Invalid value for minimum parameter of RANDOM(min, max)");if(m==null||!(m instanceof F.IntValue))return this.Error("Invalid value for maximum parameter of RANDOM(min, max)");if(m.value===null)return (0, H.throwNullException)("maxInt.value");if(E.value===null)return (0, H.throwNullException)("minInt.value");let x=m.value-E.value+1;(!isFinite(x)||x>Number.MAX_SAFE_INTEGER)&&(x=Number.MAX_SAFE_INTEGER,this.Error("RANDOM was called with a range that exceeds the size that ink numbers can use.")),x<=0&&this.Error("RANDOM was called with minimum as "+E.value+" and maximum as "+m.value+". The maximum must be larger");let P=this.state.storySeed+this.state.previousRandom,ee=new Ll.PRNG(P).next(),Ee=ee%x+E.value;this.state.PushEvaluationStack(new F.IntValue(Ee)),this.state.previousRandom=ee;break}case R.ControlCommand.CommandType.SeedRandom:let h=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue);if(h==null||!(h instanceof F.IntValue))return this.Error("Invalid value passed to SEED_RANDOM");if(h.value===null)return (0, H.throwNullException)("minInt.value");this.state.storySeed=h.value,this.state.previousRandom=0,this.state.PushEvaluationStack(new hi.Void);break;case R.ControlCommand.CommandType.VisitIndex:let c=this.state.VisitCountForContainer(this.state.currentPointer.container)-1;this.state.PushEvaluationStack(new F.IntValue(c));break;case R.ControlCommand.CommandType.SequenceShuffleIndex:let d=this.NextSequenceShuffleIndex();this.state.PushEvaluationStack(new F.IntValue(d));break;case R.ControlCommand.CommandType.StartThread:break;case R.ControlCommand.CommandType.Done:this.state.callStack.canPopThread?this.state.callStack.PopThread():(this.state.didSafeExit=true,this.state.currentPointer=Nt.Pointer.Null);break;case R.ControlCommand.CommandType.End:this.state.ForceEnd();break;case R.ControlCommand.CommandType.ListFromInt:let f=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue),y=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.StringValue);if(f===null)throw new Ut.StoryException("Passed non-integer when creating a list element from a numerical value.");let v=null;if(this.listDefinitions===null)return (0, H.throwNullException)("this.listDefinitions");let w=this.listDefinitions.TryListGetDefinition(y.value,null);if(w.exists){if(f.value===null)return (0, H.throwNullException)("minInt.value");let m=w.result.TryGetItemWithValue(f.value,ci.InkListItem.Null);m.exists&&(v=new F.ListValue(m.result,f.value));}else throw new Ut.StoryException("Failed to find LIST called "+y.value);v==null&&(v=new F.ListValue),this.state.PushEvaluationStack(v);break;case R.ControlCommand.CommandType.ListRange:let A=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.Value),C=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.Value),p=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.ListValue);if(p===null||C===null||A===null)throw new Ut.StoryException("Expected list, minimum and maximum for LIST_RANGE");if(p.value===null)return (0, H.throwNullException)("targetList.value");let S=p.value.ListWithSubRange(C.valueObject,A.valueObject);this.state.PushEvaluationStack(new F.ListValue(S));break;case R.ControlCommand.CommandType.ListRandom:{let m=this.state.PopEvaluationStack();if(m===null)throw new Ut.StoryException("Expected list for LIST_RANDOM");let E=m.value,x=null;if(E===null)throw (0, H.throwNullException)("list");if(E.Count==0)x=new ci.InkList;else {let P=this.state.storySeed+this.state.previousRandom,ee=new Ll.PRNG(P).next(),Ee=ee%E.Count,Yt=E.entries();for(let Yl=0;Yl<=Ee-1;Yl++)Yt.next();let Xl=Yt.next().value,yi={Key:ci.InkListItem.fromSerializedKey(Xl[0]),Value:Xl[1]};if(yi.Key.originName===null)return (0, H.throwNullException)("randomItem.Key.originName");x=new ci.InkList(yi.Key.originName,this),x.Add(yi.Key,yi.Value),this.state.previousRandom=ee;}this.state.PushEvaluationStack(new F.ListValue(x));break}default:this.Error("unhandled ControlCommand: "+t);break}return true}else if(e instanceof Ug.VariableAssignment){let t=e,n=this.state.PopEvaluationStack();return this.state.variablesState.Assign(t,n),true}else if(e instanceof zg.VariableReference){let t=e,n=null;if(t.pathForCount!=null){let r=t.containerForCount,a=this.state.VisitCountForContainer(r);n=new F.IntValue(a);}else n=this.state.variablesState.GetVariableWithName(t.name),n==null&&(this.Warning("Variable not found: '"+t.name+"'. Using default value of 0 (false). This can happen with temporary variables if the declaration hasn't yet been hit. Globals are always given a default value on load if a value doesn't exist in the save state."),n=new F.IntValue(0));return this.state.PushEvaluationStack(n),true}else if(e instanceof Kg.NativeFunctionCall){let t=e,n=this.state.PopEvaluationStack(t.numberOfParameters),r=t.Call(n);return this.state.PushEvaluationStack(r),true}return false}ChoosePathString(e,t=true,n=[]){if(this.IfAsyncWeCant("call ChoosePathString right now"),this.onChoosePathString!==null&&this.onChoosePathString(e,n),t)this.ResetCallstack();else if(this.state.callStack.currentElement.type==Ke.PushPopType.Function){let r="",a=this.state.callStack.currentElement.currentPointer.container;throw a!=null&&(r="("+a.path.toString()+") "),new Error("Story was running a function "+r+"when you called ChoosePathString("+e+`) - this is almost certainly not not what you want! Full stack trace:
|
|
28
|
-
`+this.state.callStack.callStackTrace)}this.state.PassArgumentsToEvaluationStack(n),this.ChoosePath(new Rl.Path(e));}IfAsyncWeCant(e){if(this._asyncContinueActive)throw new Error("Can't "+e+". Story is in the middle of a ContinueAsync(). Make more ContinueAsync() calls or a single Continue() call beforehand.")}ChoosePath(e,t=true){this.state.SetChosenPath(e,t),this.VisitChangedContainersDueToDivert();}ChooseChoiceIndex(e){e=e;let t=this.currentChoices;this.Assert(e>=0&&e<t.length,"choice out of range");let n=t[e];if(this.onMakeChoice!==null&&this.onMakeChoice(n),n.threadAtGeneration===null)return (0, H.throwNullException)("choiceToChoose.threadAtGeneration");if(n.targetPath===null)return (0, H.throwNullException)("choiceToChoose.targetPath");this.state.callStack.currentThread=n.threadAtGeneration,this.ChoosePath(n.targetPath);}HasFunction(e){try{return this.KnotContainerWithName(e)!=null}catch{return false}}EvaluateFunction(e,t=[],n=false){if(this.onEvaluateFunction!==null&&this.onEvaluateFunction(e,t),this.IfAsyncWeCant("evaluate a function"),e==null)throw new Error("Function is null");if(e==""||e.trim()=="")throw new Error("Function is empty or white space.");let r=this.KnotContainerWithName(e);if(r==null)throw new Error("Function doesn't exist: '"+e+"'");let a=[];a.push(...this.state.outputStream),this._state.ResetOutput(),this.state.StartFunctionEvaluationFromGame(r,t);let s=new zt.StringBuilder;for(;this.canContinue;)s.Append(this.Continue());let o=s.toString();this._state.ResetOutput(a);let l=this.state.CompleteFunctionEvaluationFromGame();return this.onCompleteEvaluateFunction!=null&&this.onCompleteEvaluateFunction(e,t,o,l),n?{returned:l,output:o}:l}EvaluateExpression(e){let t=this.state.callStack.elements.length;this.state.callStack.Push(Ke.PushPopType.Tunnel),this._temporaryEvaluationContainer=e,this.state.GoToStart();let n=this.state.evaluationStack.length;return this.Continue(),this._temporaryEvaluationContainer=null,this.state.callStack.elements.length>t&&this.state.PopCallStack(),this.state.evaluationStack.length>n?this.state.PopEvaluationStack():null}CallExternalFunction(e,t){if(e===null)return (0, H.throwNullException)("funcName");let n=this._externals.get(e),r=null,a=typeof n<"u";if(a&&!n.lookAheadSafe&&this._state.inStringEvaluation&&this.Error("External function "+e+` could not be called because 1) it wasn't marked as lookaheadSafe when BindExternalFunction was called and 2) the story is in the middle of string generation, either because choice text is being generated, or because you have ink like "hello {func()}". You can work around this by generating the result of your function into a temporary variable before the string or choice gets generated: ~ temp x = `+e+"()"),a&&!n.lookAheadSafe&&this._stateSnapshotAtLastNewline!==null){this._sawLookaheadUnsafeFunctionAfterNewline=true;return}if(!a)if(this.allowExternalFunctionFallbacks){r=this.KnotContainerWithName(e),this.Assert(r!==null,"Trying to call EXTERNAL function '"+e+"' which has not been bound, and fallback ink function could not be found."),this.state.callStack.Push(Ke.PushPopType.Function,void 0,this.state.outputStream.length),this.state.divertedPointer=Nt.Pointer.StartOf(r);return}else this.Assert(false,"Trying to call EXTERNAL function '"+e+"' which has not been bound (and ink fallbacks disabled).");let s=[];for(let u=0;u<t;++u){let c=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.Value).valueObject;s.push(c);}s.reverse();let o=n.function(s),l=null;o!=null?(l=F.Value.Create(o),this.Assert(l!==null,"Could not create ink value from returned object of type "+typeof o)):l=new hi.Void,this.state.PushEvaluationStack(l);}BindExternalFunctionGeneral(e,t,n=true){this.IfAsyncWeCant("bind an external function"),this.Assert(!this._externals.has(e),"Function '"+e+"' has already been bound."),this._externals.set(e,{function:t,lookAheadSafe:n});}TryCoerce(e){return e}BindExternalFunction(e,t,n=false){this.Assert(t!=null,"Can't bind a null function"),this.BindExternalFunctionGeneral(e,r=>{this.Assert(r.length>=t.length,"External function expected "+t.length+" arguments");let a=[];for(let s=0,o=r.length;s<o;s++)a[s]=this.TryCoerce(r[s]);return t.apply(null,a)},n);}UnbindExternalFunction(e){this.IfAsyncWeCant("unbind an external a function"),this.Assert(this._externals.has(e),"Function '"+e+"' has not been bound."),this._externals.delete(e);}ValidateExternalBindings(){let e=null,t=null,n=arguments[1]||new Set;if(arguments[0]instanceof ye.Container&&(e=arguments[0]),arguments[0]instanceof Vl.InkObject&&(t=arguments[0]),e===null&&t===null)if(this.ValidateExternalBindings(this._mainContentContainer,n),this._hasValidatedExternals=true,n.size==0)this._hasValidatedExternals=true;else {let r="Error: Missing function binding for external";r+=n.size>1?"s":"",r+=": '",r+=Array.from(n).join("', '"),r+="' ",r+=this.allowExternalFunctionFallbacks?", and no fallback ink function found.":" (ink fallbacks disabled)",this.Error(r);}else if(e!=null){for(let r of e.content){let a=r;(a==null||!a.hasValidName)&&this.ValidateExternalBindings(r,n);}for(let[,r]of e.namedContent)this.ValidateExternalBindings((0, L.asOrNull)(r,Vl.InkObject),n);}else if(t!=null){let r=(0, L.asOrNull)(t,lc.Divert);if(r&&r.isExternal){let a=r.targetPathString;if(a===null)return (0, H.throwNullException)("name");this._externals.has(a)||this.allowExternalFunctionFallbacks&&this.mainContentContainer.namedContent.has(a)||n.add(a);}}}ObserveVariable(e,t){if(this.IfAsyncWeCant("observe a new variable"),this._variableObservers===null&&(this._variableObservers=new Map),!this.state.variablesState.GlobalVariableExistsWithName(e))throw new Error("Cannot observe variable '"+e+"' because it wasn't declared in the ink story.");this._variableObservers.has(e)?this._variableObservers.get(e).push(t):this._variableObservers.set(e,[t]);}ObserveVariables(e,t){for(let n=0,r=e.length;n<r;n++)this.ObserveVariable(e[n],t[n]);}RemoveVariableObserver(e,t){if(this.IfAsyncWeCant("remove a variable observer"),this._variableObservers!==null){if(t!=null){if(this._variableObservers.has(t))if(e!=null){let n=this._variableObservers.get(t);n!=null&&(n.splice(n.indexOf(e),1),n.length===0&&this._variableObservers.delete(t));}else this._variableObservers.delete(t);}else if(e!=null){let n=this._variableObservers.keys();for(let r of n){let a=this._variableObservers.get(r);a!=null&&(a.splice(a.indexOf(e),1),a.length===0&&this._variableObservers.delete(r));}}}}VariableStateDidChangeEvent(e,t){if(this._variableObservers===null)return;let n=this._variableObservers.get(e);if(typeof n<"u"){if(!(t instanceof F.Value))throw new Error("Tried to get the value of a variable that isn't a standard type");let r=(0, L.asOrThrows)(t,F.Value);for(let a of n)a(e,r.valueObject);}}get globalTags(){return this.TagsAtStartOfFlowContainerWithPathString("")}TagsForContentAtPath(e){return this.TagsAtStartOfFlowContainerWithPathString(e)}TagsAtStartOfFlowContainerWithPathString(e){let t=new Rl.Path(e),n=this.ContentAtPath(t).container;if(n===null)return (0, H.throwNullException)("flowContainer");for(;;){let s=n.content[0];if(s instanceof ye.Container)n=s;else break}let r=false,a=null;for(let s of n.content){let o=(0, L.asOrNull)(s,R.ControlCommand);if(o!=null)o.commandType==R.ControlCommand.CommandType.BeginTag?r=true:o.commandType==R.ControlCommand.CommandType.EndTag&&(r=false);else if(r){let l=(0, L.asOrNull)(s,F.StringValue);l!==null?(a===null&&(a=[]),l.value!==null&&a.push(l.value)):this.Error("Tag contained non-text content. Only plain text is allowed when using globalTags or TagsAtContentPath. If you want to evaluate dynamic content, you need to use story.Continue().");}else break}return a}BuildStringOfHierarchy(){let e=new zt.StringBuilder;return this.mainContentContainer.BuildStringOfHierarchy(e,0,this.state.currentPointer.Resolve()),e.toString()}BuildStringOfContainer(e){let t=new zt.StringBuilder;return e.BuildStringOfHierarchy(t,0,this.state.currentPointer.Resolve()),t.toString()}NextContent(){if(this.state.previousPointer=this.state.currentPointer.copy(),!this.state.divertedPointer.isNull&&(this.state.currentPointer=this.state.divertedPointer.copy(),this.state.divertedPointer=Nt.Pointer.Null,this.VisitChangedContainersDueToDivert(),!this.state.currentPointer.isNull))return;if(!this.IncrementContentPointer()){let t=false;this.state.callStack.CanPop(Ke.PushPopType.Function)?(this.state.PopCallStack(Ke.PushPopType.Function),this.state.inExpressionEvaluation&&this.state.PushEvaluationStack(new hi.Void),t=true):this.state.callStack.canPopThread?(this.state.callStack.PopThread(),t=true):this.state.TryExitFunctionEvaluationFromGame(),t&&!this.state.currentPointer.isNull&&this.NextContent();}}IncrementContentPointer(){let e=true,t=this.state.callStack.currentElement.currentPointer.copy();if(t.index++,t.container===null)return (0, H.throwNullException)("pointer.container");for(;t.index>=t.container.content.length;){e=false;let n=(0, L.asOrNull)(t.container.parent,ye.Container);if(!(n instanceof ye.Container))break;let r=n.content.indexOf(t.container);if(r==-1)break;if(t=new Nt.Pointer(n,r),t.index++,e=true,t.container===null)return (0, H.throwNullException)("pointer.container")}return e||(t=Nt.Pointer.Null),this.state.callStack.currentElement.currentPointer=t.copy(),e}TryFollowDefaultInvisibleChoice(){let e=this._state.currentChoices,t=e.filter(r=>r.isInvisibleDefault);if(t.length==0||e.length>t.length)return false;let n=t[0];return n.targetPath===null?(0, H.throwNullException)("choice.targetPath"):n.threadAtGeneration===null?(0, H.throwNullException)("choice.threadAtGeneration"):(this.state.callStack.currentThread=n.threadAtGeneration,this._stateSnapshotAtLastNewline!==null&&(this.state.callStack.currentThread=this.state.callStack.ForkThread()),this.ChoosePath(n.targetPath,false),true)}NextSequenceShuffleIndex(){let e=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue);if(!(e instanceof F.IntValue))return this.Error("expected number of elements in sequence for shuffle index"),0;let t=this.state.currentPointer.container;if(t===null)return (0, H.throwNullException)("seqContainer");if(e.value===null)return (0, H.throwNullException)("numElementsIntVal.value");let n=e.value,a=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.IntValue).value;if(a===null)return (0, H.throwNullException)("seqCount");let s=a/n,o=a%n,l=t.path.toString(),u=0;for(let f=0,y=l.length;f<y;f++)u+=l.charCodeAt(f)||0;let h=u+s+this.state.storySeed,c=new Ll.PRNG(Math.floor(h)),d=[];for(let f=0;f<n;++f)d.push(f);for(let f=0;f<=o;++f){let y=c.next()%d.length,v=d[y];if(d.splice(y,1),f==o)return v}throw new Error("Should never reach here")}Error(e,t=false){let n=new Ut.StoryException(e);throw n.useEndLineNumber=t,n}Warning(e){this.AddError(e,true);}AddError(e,t=false,n=false){let r=this.currentDebugMetadata,a=t?"WARNING":"ERROR";if(r!=null){let s=n?r.endLineNumber:r.startLineNumber;e="RUNTIME "+a+": '"+r.fileName+"' line "+s+": "+e;}else this.state.currentPointer.isNull?e="RUNTIME "+a+": "+e:e="RUNTIME "+a+": ("+this.state.currentPointer+"): "+e;this.state.AddError(e,t),t||this.state.ForceEnd();}Assert(e,t=null){if(e==false)throw t==null&&(t="Story assert"),new Error(t+" "+this.currentDebugMetadata)}get currentDebugMetadata(){let e,t=this.state.currentPointer;if(!t.isNull&&t.Resolve()!==null&&(e=t.Resolve().debugMetadata,e!==null))return e;for(let n=this.state.callStack.elements.length-1;n>=0;--n)if(t=this.state.callStack.elements[n].currentPointer,!t.isNull&&t.Resolve()!==null&&(e=t.Resolve().debugMetadata,e!==null))return e;for(let n=this.state.outputStream.length-1;n>=0;--n)if(e=this.state.outputStream[n].debugMetadata,e!==null)return e;return null}get mainContentContainer(){return this._temporaryEvaluationContainer?this._temporaryEvaluationContainer:this._mainContentContainer}};Kt.Story=Dn;Dn.inkVersionCurrent=21;(function(i){(function(t){t[t.NoChange=0]="NoChange",t[t.ExtendedBeyondNewline=1]="ExtendedBeyondNewline",t[t.NewlineRemoved=2]="NewlineRemoved";})(i.OutputStateChange||(i.OutputStateChange={}));})(Dn||(Kt.Story=Dn={}));});var dc=b(Js=>{Object.defineProperty(Js,"__esModule",{value:true});Js.Story=void 0;var Zg=Bi(),eC=br(),qs=se(),Ms=ge(),di=tn(),Gs=lt(),cc=pn(),tC=sl(),nC=Zr(),iC=cl(),rC=si(),bn=yt(),sC=Tt(),aC=xt(),pi=U(),oC=Xn(),lC=Yn(),uC=$t(),$s=class i extends Gs.FlowBase{get flowLevel(){return cc.FlowLevel.Story}get hadError(){return this._hadError}get hadWarning(){return this._hadWarning}constructor(e,t=false){super(null,e,null,false,t),this._errorHandler=null,this._hadError=false,this._hadWarning=false,this._dontFlattenContainers=new Set,this._listDefs=new Map,this.constants=new Map,this.externals=new Map,this.countAllVisits=false,this.ExportRuntime=(n=null)=>{var r,a;this._errorHandler=n,this.constants=new Map;for(let h of this.FindAll(eC.ConstantDeclaration)()){let c=this.constants.get(h.constantName);if(c&&!c.Equals(h.expression)){let d=`CONST '${h.constantName}' has been redefined with a different value. Multiple definitions of the same CONST are valid so long as they contain the same value. Initial definition was on ${c.debugMetadata}.`;this.Error(d,h,false);}this.constants.set(h.constantName,h.expression);}this._listDefs=new Map;for(let h of this.FindAll(nC.ListDefinition)())!((r=h.identifier)===null||r===void 0)&&r.name&&this._listDefs.set((a=h.identifier)===null||a===void 0?void 0:a.name,h);this.externals=new Map,this.ResolveWeavePointNaming();let s=this.runtimeObject,o=new qs.Container;o.AddContent(Ms.ControlCommand.EvalStart());let l=[];for(let[h,c]of this.variableDeclarations)if(c.isGlobalDeclaration){if(c.listDefinition)this._listDefs.set(h,c.listDefinition),o.AddContent(c.listDefinition.runtimeObject),l.push(c.listDefinition.runtimeListDefinition);else {if(!c.expression)throw new Error;c.expression.GenerateIntoContainer(o);}let d=new aC.VariableAssignment(h,true);d.isGlobal=true,o.AddContent(d);}o.AddContent(Ms.ControlCommand.EvalEnd()),o.AddContent(Ms.ControlCommand.End()),this.variableDeclarations.size>0&&(o.name="global decl",s.AddToNamedContentOnly(o)),s.AddContent(Ms.ControlCommand.Done());let u=new rC.Story(s,l);return this.runtimeObject=u,this.hadError||(this.FlattenContainersIn(s),this.ResolveReferences(this),this.hadError)?null:(u.ResetState(),u)},this.ResolveList=n=>{let r=this._listDefs.get(n);return r||null},this.ResolveListItem=(n,r,a=null)=>{let s=null;if(n)return (s=this._listDefs.get(n))?s.ItemNamed(r):null;{let o=null,l=null;for(let[,u]of this._listDefs.entries()){let h=u.ItemNamed(r);h&&(o?this.Error(`Ambiguous item name '${r}' found in multiple sets, including ${l.identifier} and ${u.identifier}`,a,false):(o=h,l=u));}return o}},this.FlattenContainersIn=n=>{let r=new Set;if(n.content)for(let a of n.content){let s=(0, pi.asOrNull)(a,qs.Container);s&&r.add(s);}if(n.namedContent)for(let[,a]of n.namedContent){let s=(0, pi.asOrNull)(a,qs.Container);s&&r.add(s);}for(let a of r)this.TryFlattenContainer(a),this.FlattenContainersIn(a);},this.TryFlattenContainer=n=>{if(n.namedContent&&n.namedContent.size>0||n.hasValidName||this._dontFlattenContainers.has(n))return;let r=(0, pi.asOrNull)(n.parent,qs.Container);if(r){let a=r.content.indexOf(n);r.content.splice(a,1);let s=n.ownDebugMetadata;if(n.content)for(let o of n.content)o.parent=null,s!==null&&o.ownDebugMetadata===null&&(o.debugMetadata=s),r.InsertContent(o,a),a+=1;}},this.Error=(n,r,a)=>{let s=a?di.ErrorType.Warning:di.ErrorType.Error,o="";if(r instanceof Zg.AuthorWarning?(o+="TODO: ",s=di.ErrorType.Author):a?o+="WARNING: ":o+="ERROR: ",r&&r.debugMetadata!==null&&r.debugMetadata.startLineNumber>=1&&(r.debugMetadata.fileName!=null&&(o+=`'${r.debugMetadata.fileName}' `),o+=`line ${r.debugMetadata.startLineNumber}: `),o+=n,n=o,this._errorHandler!==null)this._errorHandler(n,s);else throw new Error(n);this._hadError=s===di.ErrorType.Error,this._hadWarning=s===di.ErrorType.Warning;},this.ResetError=()=>{this._hadError=false,this._hadWarning=false;},this.IsExternal=n=>this.externals.has(n),this.AddExternal=n=>{this.externals.has(n.name)?this.Error(`Duplicate EXTERNAL definition of '${n.name}'`,n,false):n.name&&this.externals.set(n.name,n);},this.DontFlattenContainer=n=>{this._dontFlattenContainers.add(n);},this.NameConflictError=(n,r,a,s)=>{n.Error(`${s} '${r}': name has already been used for a ${a.typeName.toLowerCase()} on ${a.debugMetadata}`);},this.CheckForNamingCollisions=(n,r,a,s="")=>{var o;let l=s||n.typeName;if(i.IsReservedKeyword(r?.name)){n.Error(`'${r}' cannot be used for the name of a ${l.toLowerCase()} because it's a reserved keyword`);return}else if(lC.FunctionCall.IsBuiltIn(r?.name||"")){n.Error(`'${r}' cannot be used for the name of a ${l.toLowerCase()} because it's a built in function`);return}let u=this.ContentWithNameAtLevel(r?.name||"",cc.FlowLevel.Knot),h=(0, pi.asOrNull)(u,Gs.FlowBase);if(h&&(h!==n||a===bn.SymbolType.Arg)){this.NameConflictError(n,r?.name||"",h,l);return}if(a<bn.SymbolType.List)return;for(let[y,v]of this._listDefs)if(r?.name===y&&n!==v&&v.variableAssignment!==n&&this.NameConflictError(n,r?.name,v,l),!(n instanceof iC.ListElementDefinition))for(let w of v.itemDefinitions)r?.name===w.name&&this.NameConflictError(n,r?.name||"",w,l);if(a<=bn.SymbolType.Var)return;let c=r?.name&&this.variableDeclarations.get(r?.name)||null;if(c&&c!==n&&c.isGlobalDeclaration&&c.listDefinition==null&&this.NameConflictError(n,r?.name||"",c,l),a<bn.SymbolType.SubFlowAndWeave)return;let f=new uC.Path(r).ResolveFromContext(n);if(f&&f!==n){this.NameConflictError(n,r?.name||"",f,l);return}if(!(a<bn.SymbolType.Arg)&&a!==bn.SymbolType.Arg){let y=(0, pi.asOrNull)(n,Gs.FlowBase);if(y||(y=(0, oC.ClosestFlowBase)(n)),y&&y.hasParameters&&y.args){for(let v of y.args)if(((o=v.identifier)===null||o===void 0?void 0:o.name)===r?.name){n.Error(`${l} '${r}': name has already been used for a argument to ${y.identifier} on ${y.debugMetadata}`);return}}}};}get typeName(){return "Story"}PreProcessTopLevelObjects(e){super.PreProcessTopLevelObjects(e);let t=[];for(let n of e)if(n instanceof tC.IncludedFile){let r=n,a=e.indexOf(n);if(e.splice(a,1),r.includedStory){let s=[],o=r.includedStory;if(o.content!=null){for(let l of o.content)l instanceof Gs.FlowBase?t.push(l):s.push(l);s.push(new sC.Text(`
|
|
29
|
-
`)),e.splice(a,0,...s);}}continue}e.splice(0,0,...t);}};Js.Story=$s;$s.IsReservedKeyword=i=>{switch(i){case "true":case "false":case "not":case "return":case "else":case "VAR":case "CONST":case "temp":case "LIST":case "function":return true}return false};});var
|
|
26
|
+
`)),a<t.length-1)){let h=t.length-a-1,c=new he.StringValue(t.substring(a+1,a+1+h));o.push(c);}return o}PushToOutputStreamIndividual(e){let t=(0, oe.asOrNull)(e,Pl.Glue),n=(0, oe.asOrNull)(e,he.StringValue),r=true;if(t)this.TrimNewlinesFromOutputStream(),r=true;else if(n){let a=-1,s=this.callStack.currentElement;s.type==Pt.PushPopType.Function&&(a=s.functionStartInOutputStream);let o=-1;for(let u=this.outputStream.length-1;u>=0;u--){let h=this.outputStream[u],c=h instanceof Te.ControlCommand?h:null;if((h instanceof Pl.Glue?h:null)!=null){o=u;break}else if(c!=null&&c.commandType==Te.ControlCommand.CommandType.BeginString){u>=a&&(a=-1);break}}let l=-1;if(o!=-1&&a!=-1?l=Math.min(a,o):o!=-1?l=o:l=a,l!=-1){if(n.isNewline)r=false;else if(n.isNonWhitespace&&(o>-1&&this.RemoveExistingGlue(),a>-1)){let u=this.callStack.elements;for(let h=u.length-1;h>=0;h--){let c=u[h];if(c.type==Pt.PushPopType.Function)c.functionStartInOutputStream=-1;else break}}}else n.isNewline&&(this.outputStreamEndsInNewline||!this.outputStreamContainsContent)&&(r=false);}if(r){if(e===null)return (0, ze.throwNullException)("obj");this.outputStream.push(e),this.OutputStreamDirty();}}TrimNewlinesFromOutputStream(){let e=-1,t=this.outputStream.length-1;for(;t>=0;){let n=this.outputStream[t],r=(0, oe.asOrNull)(n,Te.ControlCommand),a=(0, oe.asOrNull)(n,he.StringValue);if(r!=null||a!=null&&a.isNonWhitespace)break;a!=null&&a.isNewline&&(e=t),t--;}if(e>=0)for(t=e;t<this.outputStream.length;)(0, oe.asOrNull)(this.outputStream[t],he.StringValue)?this.outputStream.splice(t,1):t++;this.OutputStreamDirty();}RemoveExistingGlue(){for(let e=this.outputStream.length-1;e>=0;e--){let t=this.outputStream[e];if(t instanceof Pl.Glue)this.outputStream.splice(e,1);else if(t instanceof Te.ControlCommand)break}this.OutputStreamDirty();}get outputStreamEndsInNewline(){if(this.outputStream.length>0)for(let e=this.outputStream.length-1;e>=0&&!(this.outputStream[e]instanceof Te.ControlCommand);e--){let n=this.outputStream[e];if(n instanceof he.StringValue){if(n.isNewline)return true;if(n.isNonWhitespace)break}}return false}get outputStreamContainsContent(){for(let e of this.outputStream)if(e instanceof he.StringValue)return true;return false}get inStringEvaluation(){for(let e=this.outputStream.length-1;e>=0;e--){let t=(0, oe.asOrNull)(this.outputStream[e],Te.ControlCommand);if(t instanceof Te.ControlCommand&&t.commandType==Te.ControlCommand.CommandType.BeginString)return true}return false}PushEvaluationStack(e){let t=(0, oe.asOrNull)(e,he.ListValue);if(t){let n=t.value;if(n===null)return (0, ze.throwNullException)("rawList");if(n.originNames!=null){n.origins||(n.origins=[]),n.origins.length=0;for(let r of n.originNames){if(this.story.listDefinitions===null)return (0, ze.throwNullException)("StoryState.story.listDefinitions");let a=this.story.listDefinitions.TryListGetDefinition(r,null);if(a.result===null)return (0, ze.throwNullException)("StoryState def.result");n.origins.indexOf(a.result)<0&&n.origins.push(a.result);}}}if(e===null)return (0, ze.throwNullException)("obj");this.evaluationStack.push(e);}PopEvaluationStack(e){if(typeof e>"u"){let t=this.evaluationStack.pop();return (0, oe.nullIfUndefined)(t)}else {if(e>this.evaluationStack.length)throw new Error("trying to pop too many objects");let t=this.evaluationStack.splice(this.evaluationStack.length-e,e);return (0, oe.nullIfUndefined)(t)}}PeekEvaluationStack(){return this.evaluationStack[this.evaluationStack.length-1]}ForceEnd(){this.callStack.Reset(),this._currentFlow.currentChoices.length=0,this.currentPointer=Sn.Pointer.Null,this.previousPointer=Sn.Pointer.Null,this.didSafeExit=true;}TrimWhitespaceFromFunctionEnd(){jg.Debug.Assert(this.callStack.currentElement.type==Pt.PushPopType.Function);let e=this.callStack.currentElement.functionStartInOutputStream;e==-1&&(e=0);for(let t=this.outputStream.length-1;t>=e;t--){let n=this.outputStream[t],r=(0, oe.asOrNull)(n,he.StringValue),a=(0, oe.asOrNull)(n,Te.ControlCommand);if(r!=null){if(a)break;if(r.isNewline||r.isInlineWhitespace)this.outputStream.splice(t,1),this.OutputStreamDirty();else break}}}PopCallStack(e=null){this.callStack.currentElement.type==Pt.PushPopType.Function&&this.TrimWhitespaceFromFunctionEnd(),this.callStack.Pop(e);}SetChosenPath(e,t){this._currentFlow.currentChoices.length=0;let n=this.story.PointerAtPath(e);!n.isNull&&n.index==-1&&(n.index=0),this.currentPointer=n,t&&this.currentTurnIndex++;}StartFunctionEvaluationFromGame(e,t){this.callStack.Push(Pt.PushPopType.FunctionEvaluationFromGame,this.evaluationStack.length),this.callStack.currentElement.currentPointer=Sn.Pointer.StartOf(e),this.PassArgumentsToEvaluationStack(t);}PassArgumentsToEvaluationStack(e){if(e!==null)for(let t=0;t<e.length;t++){if(!(typeof e[t]=="number"||typeof e[t]=="string"||typeof e[t]=="boolean"||e[t]instanceof Gg.InkList))throw new Error("ink arguments when calling EvaluateFunction / ChoosePathStringWithParameters must benumber, string, bool or InkList. Argument was "+((0, oe.nullIfUndefined)(e[t])===null?"null":e[t].constructor.name));this.PushEvaluationStack(he.Value.Create(e[t]));}}TryExitFunctionEvaluationFromGame(){return this.callStack.currentElement.type==Pt.PushPopType.FunctionEvaluationFromGame?(this.currentPointer=Sn.Pointer.Null,this.didSafeExit=true,true):false}CompleteFunctionEvaluationFromGame(){if(this.callStack.currentElement.type!=Pt.PushPopType.FunctionEvaluationFromGame)throw new Error("Expected external function evaluation to be complete. Stack trace: "+this.callStack.callStackTrace);let e=this.callStack.currentElement.evaluationStackHeightWhenPushed,t=null;for(;this.evaluationStack.length>e;){let n=this.PopEvaluationStack();t===null&&(t=n);}if(this.PopCallStack(Pt.PushPopType.FunctionEvaluationFromGame),t){if(t instanceof Wg.Void)return null;let n=(0, oe.asOrThrows)(t,he.Value);return n.valueType==he.ValueType.DivertTarget?"-> "+n.valueObject.toString():n.valueObject}return null}AddError(e,t){t?(this._currentWarnings==null&&(this._currentWarnings=[]),this._currentWarnings.push(e)):(this._currentErrors==null&&(this._currentErrors=[]),this._currentErrors.push(e));}OutputStreamDirty(){this._outputStreamTextDirty=true,this._outputStreamTagsDirty=true;}};Ls.StoryState=Nl;});var oc=A(Bs=>{Object.defineProperty(Bs,"__esModule",{value:true});Bs.Stopwatch=void 0;var Il=class{constructor(){this.startTime=void 0;}get ElapsedMilliseconds(){return typeof this.startTime>"u"?0:new Date().getTime()-this.startTime}Start(){this.startTime=new Date().getTime();}Stop(){this.startTime=void 0;}};Bs.Stopwatch=Il;});var uc=A(Ws=>{Object.defineProperty(Ws,"__esModule",{value:true});Ws.ErrorType=void 0;var lc;(function(i){i[i.Author=0]="Author",i[i.Warning=1]="Warning",i[i.Error=2]="Error";})(lc||(Ws.ErrorType=lc={}));});var si=A(Kt=>{Object.defineProperty(Kt,"__esModule",{value:true});Kt.Story=Kt.InkList=void 0;var ye=se(),Vl=Ie(),kl=En(),$g=ac(),R=ge(),Ke=Mt(),Jg=ar(),Hg=Cl(),hc=ot(),F=te(),Rl=Ne(),hi=qt(),js=bs(),Ug=xt(),zg=Cn(),Kg=at(),Ut=Rn(),Ll=xl(),zt=Wt(),Xg=vl(),Yg=oc(),Nt=Un(),ci=ke(),L=U(),H=me(),cc=Tl(),dc=uc(),Qg=ke();Object.defineProperty(Kt,"InkList",{enumerable:true,get:function(){return Qg.InkList}});Number.isInteger||(Number.isInteger=function(e){return typeof e=="number"&&isFinite(e)&&e>-9007199254740992&&e<9007199254740992&&Math.floor(e)===e});var Dn=class i extends Vl.InkObject{get currentChoices(){let e=[];if(this._state===null)return (0, H.throwNullException)("this._state");for(let t of this._state.currentChoices)t.isInvisibleDefault||(t.index=e.length,e.push(t));return e}get currentText(){return this.IfAsyncWeCant("call currentText since it's a work in progress"),this.state.currentText}get currentTags(){return this.IfAsyncWeCant("call currentTags since it's a work in progress"),this.state.currentTags}get currentErrors(){return this.state.currentErrors}get currentWarnings(){return this.state.currentWarnings}get currentFlowName(){return this.state.currentFlowName}get currentFlowIsDefaultFlow(){return this.state.currentFlowIsDefaultFlow}get aliveFlowNames(){return this.state.aliveFlowNames}get hasError(){return this.state.hasError}get hasWarning(){return this.state.hasWarning}get variablesState(){return this.state.variablesState}get listDefinitions(){return this._listDefinitions}get state(){return this._state}StartProfiling(){}EndProfiling(){}constructor(){super(),this.inkVersionMinimumCompatible=18,this.onError=null,this.onDidContinue=null,this.onMakeChoice=null,this.onEvaluateFunction=null,this.onCompleteEvaluateFunction=null,this.onChoosePathString=null,this._prevContainers=[],this.allowExternalFunctionFallbacks=false,this._listDefinitions=null,this._variableObservers=null,this._hasValidatedExternals=false,this._temporaryEvaluationContainer=null,this._asyncContinueActive=false,this._stateSnapshotAtLastNewline=null,this._sawLookaheadUnsafeFunctionAfterNewline=false,this._recursiveContinueCount=0,this._asyncSaving=false,this._profiler=null;let e,t=null,n=null;if(arguments[0]instanceof ye.Container)e=arguments[0],typeof arguments[1]<"u"&&(t=arguments[1]),this._mainContentContainer=e;else if(typeof arguments[0]=="string"){let r=arguments[0];n=cc.SimpleJson.TextToDictionary(r);}else n=arguments[0];if(t!=null&&(this._listDefinitions=new Xg.ListDefinitionsOrigin(t)),this._externals=new Map,n!==null){let r=n,a=r.inkVersion;if(a==null)throw new Error("ink version number not found. Are you sure it's a valid .ink.json file?");let s=parseInt(a);if(s>i.inkVersionCurrent)throw new Error("Version of ink used to build story was newer than the current version of the engine");if(s<this.inkVersionMinimumCompatible)throw new Error("Version of ink used to build story is too old to be loaded by this version of the engine");s!=i.inkVersionCurrent&&console.warn(`WARNING: Version of ink ${i.inkVersionCurrent} used to build story doesn't match current version of engine (${s}). Non-critical, but recommend synchronising.`);let o=r.root;if(o==null)throw new Error("Root node for ink not found. Are you sure it's a valid .ink.json file?");let l;(l=r.listDefs)&&(this._listDefinitions=kl.JsonSerialisation.JTokenToListDefinitions(l)),this._mainContentContainer=(0, L.asOrThrows)(kl.JsonSerialisation.JTokenToRuntimeObject(o),ye.Container),this.ResetState();}}ToJson(e){let t=false;if(e||(t=true,e=new cc.SimpleJson.Writer),e.WriteObjectStart(),e.WriteIntProperty("inkVersion",i.inkVersionCurrent),e.WriteProperty("root",n=>kl.JsonSerialisation.WriteRuntimeContainer(n,this._mainContentContainer)),this._listDefinitions!=null){e.WritePropertyStart("listDefs"),e.WriteObjectStart();for(let n of this._listDefinitions.lists){e.WritePropertyStart(n.name),e.WriteObjectStart();for(let[r,a]of n.items){let s=ci.InkListItem.fromSerializedKey(r),o=a;e.WriteIntProperty(s.itemName,o);}e.WriteObjectEnd(),e.WritePropertyEnd();}e.WriteObjectEnd(),e.WritePropertyEnd();}if(e.WriteObjectEnd(),t)return e.toString()}ResetState(){this.IfAsyncWeCant("ResetState"),this._state=new $g.StoryState(this),this._state.variablesState.ObserveVariableChange(this.VariableStateDidChangeEvent.bind(this)),this.ResetGlobals();}ResetErrors(){if(this._state===null)return (0, H.throwNullException)("this._state");this._state.ResetErrors();}ResetCallstack(){if(this.IfAsyncWeCant("ResetCallstack"),this._state===null)return (0, H.throwNullException)("this._state");this._state.ForceEnd();}ResetGlobals(){if(this._mainContentContainer.namedContent.get("global decl")){let e=this.state.currentPointer.copy();this.ChoosePath(new Rl.Path("global decl"),false),this.ContinueInternal(),this.state.currentPointer=e;}this.state.variablesState.SnapshotDefaultGlobals();}SwitchFlow(e){if(this.IfAsyncWeCant("switch flow"),this._asyncSaving)throw new Error("Story is already in background saving mode, can't switch flow to "+e);this.state.SwitchFlow_Internal(e);}RemoveFlow(e){this.state.RemoveFlow_Internal(e);}SwitchToDefaultFlow(){this.state.SwitchToDefaultFlow_Internal();}Continue(){return this.ContinueAsync(0),this.currentText}get canContinue(){return this.state.canContinue}get asyncContinueComplete(){return !this._asyncContinueActive}ContinueAsync(e){this._hasValidatedExternals||this.ValidateExternalBindings(),this.ContinueInternal(e);}ContinueInternal(e=0){this._profiler!=null&&this._profiler.PreContinue();let t=e>0;if(this._recursiveContinueCount++,this._asyncContinueActive)this._asyncContinueActive&&!t&&(this._asyncContinueActive=false);else {if(this._asyncContinueActive=t,!this.canContinue)throw new Error("Can't continue - should check canContinue before calling Continue");this._state.didSafeExit=false,this._state.ResetOutput(),this._recursiveContinueCount==1&&this._state.variablesState.StartVariableObservation();}let n=new Yg.Stopwatch;n.Start();let r=false;this._sawLookaheadUnsafeFunctionAfterNewline=false;do{try{r=this.ContinueSingleStep();}catch(s){if(!(s instanceof Ut.StoryException))throw s;this.AddError(s.message,void 0,s.useEndLineNumber);break}if(r||this._asyncContinueActive&&n.ElapsedMilliseconds>e)break}while(this.canContinue);n.Stop();let a=null;if((r||!this.canContinue)&&(this._stateSnapshotAtLastNewline!==null&&this.RestoreStateSnapshot(),this.canContinue||(this.state.callStack.canPopThread&&this.AddError("Thread available to pop, threads should always be flat by the end of evaluation?"),this.state.generatedChoices.length==0&&!this.state.didSafeExit&&this._temporaryEvaluationContainer==null&&(this.state.callStack.CanPop(Ke.PushPopType.Tunnel)?this.AddError("unexpectedly reached end of content. Do you need a '->->' to return from a tunnel?"):this.state.callStack.CanPop(Ke.PushPopType.Function)?this.AddError("unexpectedly reached end of content. Do you need a '~ return'?"):this.state.callStack.canPop?this.AddError("unexpectedly reached end of content for unknown reason. Please debug compiler!"):this.AddError("ran out of content. Do you need a '-> DONE' or '-> END'?"))),this.state.didSafeExit=false,this._sawLookaheadUnsafeFunctionAfterNewline=false,this._recursiveContinueCount==1&&(a=this._state.variablesState.CompleteVariableObservation()),this._asyncContinueActive=false,this.onDidContinue!==null&&this.onDidContinue()),this._recursiveContinueCount--,this._profiler!=null&&this._profiler.PostContinue(),this.state.hasError||this.state.hasWarning)if(this.onError!==null){if(this.state.hasError)for(let s of this.state.currentErrors)this.onError(s,dc.ErrorType.Error);if(this.state.hasWarning)for(let s of this.state.currentWarnings)this.onError(s,dc.ErrorType.Warning);this.ResetErrors();}else {let s=new zt.StringBuilder;throw s.Append("Ink had "),this.state.hasError&&(s.Append(`${this.state.currentErrors.length}`),s.Append(this.state.currentErrors.length==1?" error":" errors"),this.state.hasWarning&&s.Append(" and ")),this.state.hasWarning&&(s.Append(`${this.state.currentWarnings.length}`),s.Append(this.state.currentWarnings.length==1?" warning":" warnings"),this.state.hasWarning&&s.Append(" and ")),s.Append(". It is strongly suggested that you assign an error handler to story.onError. The first issue was: "),s.Append(this.state.hasError?this.state.currentErrors[0]:this.state.currentWarnings[0]),new Ut.StoryException(s.toString())}a!=null&&Object.keys(a).length>0&&this._state.variablesState.NotifyObservers(a);}ContinueSingleStep(){if(this._profiler!=null&&this._profiler.PreStep(),this.Step(),this._profiler!=null&&this._profiler.PostStep(),!this.canContinue&&!this.state.callStack.elementIsEvaluateFromGame&&this.TryFollowDefaultInvisibleChoice(),this._profiler!=null&&this._profiler.PreSnapshot(),!this.state.inStringEvaluation){if(this._stateSnapshotAtLastNewline!==null){if(this._stateSnapshotAtLastNewline.currentTags===null)return (0, H.throwNullException)("this._stateAtLastNewline.currentTags");if(this.state.currentTags===null)return (0, H.throwNullException)("this.state.currentTags");let e=this.CalculateNewlineOutputStateChange(this._stateSnapshotAtLastNewline.currentText,this.state.currentText,this._stateSnapshotAtLastNewline.currentTags.length,this.state.currentTags.length);if(e==i.OutputStateChange.ExtendedBeyondNewline||this._sawLookaheadUnsafeFunctionAfterNewline)return this.RestoreStateSnapshot(),true;e==i.OutputStateChange.NewlineRemoved&&this.DiscardSnapshot();}this.state.outputStreamEndsInNewline&&(this.canContinue?this._stateSnapshotAtLastNewline==null&&this.StateSnapshot():this.DiscardSnapshot());}return this._profiler!=null&&this._profiler.PostSnapshot(),false}CalculateNewlineOutputStateChange(e,t,n,r){if(e===null)return (0, H.throwNullException)("prevText");if(t===null)return (0, H.throwNullException)("currText");let a=t.length>=e.length&&e.length>0&&t.charAt(e.length-1)==`
|
|
27
|
+
`;if(n==r&&e.length==t.length&&a)return i.OutputStateChange.NoChange;if(!a)return i.OutputStateChange.NewlineRemoved;if(r>n)return i.OutputStateChange.ExtendedBeyondNewline;for(let s=e.length;s<t.length;s++){let o=t.charAt(s);if(o!=" "&&o!=" ")return i.OutputStateChange.ExtendedBeyondNewline}return i.OutputStateChange.NoChange}ContinueMaximally(){this.IfAsyncWeCant("ContinueMaximally");let e=new zt.StringBuilder;for(;this.canContinue;)e.Append(this.Continue());return e.toString()}ContentAtPath(e){return this.mainContentContainer.ContentAtPath(e)}KnotContainerWithName(e){let t=this.mainContentContainer.namedContent.get(e);return t instanceof ye.Container?t:null}PointerAtPath(e){if(e.length==0)return Nt.Pointer.Null;let t=new Nt.Pointer,n=e.length,r=null;return e.lastComponent===null?(0, H.throwNullException)("path.lastComponent"):(e.lastComponent.isIndex?(n=e.length-1,r=this.mainContentContainer.ContentAtPath(e,void 0,n),t.container=r.container,t.index=e.lastComponent.index):(r=this.mainContentContainer.ContentAtPath(e),t.container=r.container,t.index=-1),r.obj==null||r.obj==this.mainContentContainer&&n>0?this.Error("Failed to find content at path '"+e+"', and no approximation of it was possible."):r.approximate&&this.Warning("Failed to find content at path '"+e+"', so it was approximated to: '"+r.obj.path+"'."),t)}StateSnapshot(){this._stateSnapshotAtLastNewline=this._state,this._state=this._state.CopyAndStartPatching(false);}RestoreStateSnapshot(){this._stateSnapshotAtLastNewline===null&&(0, H.throwNullException)("_stateSnapshotAtLastNewline"),this._stateSnapshotAtLastNewline.RestoreAfterPatch(),this._state=this._stateSnapshotAtLastNewline,this._stateSnapshotAtLastNewline=null,this._asyncSaving||this._state.ApplyAnyPatch();}DiscardSnapshot(){this._asyncSaving||this._state.ApplyAnyPatch(),this._stateSnapshotAtLastNewline=null;}CopyStateForBackgroundThreadSave(){if(this.IfAsyncWeCant("start saving on a background thread"),this._asyncSaving)throw new Error("Story is already in background saving mode, can't call CopyStateForBackgroundThreadSave again!");let e=this._state;return this._state=this._state.CopyAndStartPatching(true),this._asyncSaving=true,e}BackgroundSaveComplete(){this._stateSnapshotAtLastNewline===null&&this._state.ApplyAnyPatch(),this._asyncSaving=false;}Step(){let e=true,t=this.state.currentPointer.copy();if(t.isNull)return;let n=(0, L.asOrNull)(t.Resolve(),ye.Container);for(;n&&(this.VisitContainer(n,true),n.content.length!=0);)t=Nt.Pointer.StartOf(n),n=(0, L.asOrNull)(t.Resolve(),ye.Container);this.state.currentPointer=t.copy(),this._profiler!=null&&this._profiler.Step(this.state.callStack);let r=t.Resolve(),a=this.PerformLogicAndFlowControl(r);if(this.state.currentPointer.isNull)return;a&&(e=false);let s=(0, L.asOrNull)(r,Jg.ChoicePoint);if(s){let l=this.ProcessChoice(s);l&&this.state.generatedChoices.push(l),r=null,e=false;}if(r instanceof ye.Container&&(e=false),e){let l=(0, L.asOrNull)(r,F.VariablePointerValue);if(l&&l.contextIndex==-1){let u=this.state.callStack.ContextForVariableNamed(l.variableName);r=new F.VariablePointerValue(l.variableName,u);}this.state.inExpressionEvaluation?this.state.PushEvaluationStack(r):this.state.PushToOutputStream(r);}this.NextContent();let o=(0, L.asOrNull)(r,R.ControlCommand);o&&o.commandType==R.ControlCommand.CommandType.StartThread&&this.state.callStack.PushThread();}VisitContainer(e,t){(!e.countingAtStartOnly||t)&&(e.visitsShouldBeCounted&&this.state.IncrementVisitCountForContainer(e),e.turnIndexShouldBeCounted&&this.state.RecordTurnIndexVisitToContainer(e));}VisitChangedContainersDueToDivert(){let e=this.state.previousPointer.copy(),t=this.state.currentPointer.copy();if(t.isNull||t.index==-1)return;if(this._prevContainers.length=0,!e.isNull){let s=e.Resolve(),o=(0, L.asOrNull)(s,ye.Container)||(0, L.asOrNull)(e.container,ye.Container);for(;o;)this._prevContainers.push(o),o=(0, L.asOrNull)(o.parent,ye.Container);}let n=t.Resolve();if(n==null)return;let r=(0, L.asOrNull)(n.parent,ye.Container),a=true;for(;r&&(this._prevContainers.indexOf(r)<0||r.countingAtStartOnly);){let s=r.content.length>0&&n==r.content[0]&&a;s||(a=false),this.VisitContainer(r,s),n=r,r=(0, L.asOrNull)(r.parent,ye.Container);}}PopChoiceStringAndTags(e){let t=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.StringValue);for(;this.state.evaluationStack.length>0&&(0, L.asOrNull)(this.state.PeekEvaluationStack(),js.Tag)!=null;){let n=(0, L.asOrNull)(this.state.PopEvaluationStack(),js.Tag);n&&e.push(n.text);}return t.value}ProcessChoice(e){let t=true;if(e.hasCondition){let o=this.state.PopEvaluationStack();this.IsTruthy(o)||(t=false);}let n="",r="",a=[];if(e.hasChoiceOnlyContent&&(r=this.PopChoiceStringAndTags(a)||""),e.hasStartContent&&(n=this.PopChoiceStringAndTags(a)||""),e.onceOnly&&this.state.VisitCountForContainer(e.choiceTarget)>0&&(t=false),!t)return null;let s=new Hg.Choice;return s.targetPath=e.pathOnChoice,s.sourcePath=e.path.toString(),s.isInvisibleDefault=e.isInvisibleDefault,s.threadAtGeneration=this.state.callStack.ForkThread(),s.tags=a.reverse(),s.text=(n+r).replace(/^[ \t]+|[ \t]+$/g,""),s}IsTruthy(e){let t=false;if(e instanceof F.Value){let n=e;if(n instanceof F.DivertTargetValue){let r=n;return this.Error("Shouldn't use a divert target (to "+r.targetPath+") as a conditional value. Did you intend a function call 'likeThis()' or a read count check 'likeThis'? (no arrows)"),false}return n.isTruthy}return t}PerformLogicAndFlowControl(e){if(e==null)return false;if(e instanceof hc.Divert){let t=e;if(t.isConditional){let n=this.state.PopEvaluationStack();if(!this.IsTruthy(n))return true}if(t.hasVariableTarget){let n=t.variableDivertName,r=this.state.variablesState.GetVariableWithName(n);if(r==null)this.Error("Tried to divert using a target from a variable that could not be found ("+n+")");else if(!(r instanceof F.DivertTargetValue)){let s=(0, L.asOrNull)(r,F.IntValue),o="Tried to divert to a target from a variable, but the variable ("+n+") didn't contain a divert target, it ";s instanceof F.IntValue&&s.value==0?o+="was empty/null (the value 0).":o+="contained '"+r+"'.",this.Error(o);}let a=(0, L.asOrThrows)(r,F.DivertTargetValue);this.state.divertedPointer=this.PointerAtPath(a.targetPath);}else {if(t.isExternal)return this.CallExternalFunction(t.targetPathString,t.externalArgs),true;this.state.divertedPointer=t.targetPointer.copy();}return t.pushesToStack&&this.state.callStack.Push(t.stackPushType,void 0,this.state.outputStream.length),this.state.divertedPointer.isNull&&!t.isExternal&&(t&&t.debugMetadata&&t.debugMetadata.sourceName!=null?this.Error("Divert target doesn't exist: "+t.debugMetadata.sourceName):this.Error("Divert resolution failed: "+t)),true}else if(e instanceof R.ControlCommand){let t=e;switch(t.commandType){case R.ControlCommand.CommandType.EvalStart:this.Assert(this.state.inExpressionEvaluation===false,"Already in expression evaluation?"),this.state.inExpressionEvaluation=true;break;case R.ControlCommand.CommandType.EvalEnd:this.Assert(this.state.inExpressionEvaluation===true,"Not in expression evaluation mode"),this.state.inExpressionEvaluation=false;break;case R.ControlCommand.CommandType.EvalOutput:if(this.state.evaluationStack.length>0){let m=this.state.PopEvaluationStack();if(!(m instanceof hi.Void)){let E=new F.StringValue(m.toString());this.state.PushToOutputStream(E);}}break;case R.ControlCommand.CommandType.NoOp:break;case R.ControlCommand.CommandType.Duplicate:this.state.PushEvaluationStack(this.state.PeekEvaluationStack());break;case R.ControlCommand.CommandType.PopEvaluatedValue:this.state.PopEvaluationStack();break;case R.ControlCommand.CommandType.PopFunction:case R.ControlCommand.CommandType.PopTunnel:let n=t.commandType==R.ControlCommand.CommandType.PopFunction?Ke.PushPopType.Function:Ke.PushPopType.Tunnel,r=null;if(n==Ke.PushPopType.Tunnel){let m=this.state.PopEvaluationStack();r=(0, L.asOrNull)(m,F.DivertTargetValue),r===null&&this.Assert(m instanceof hi.Void,"Expected void if ->-> doesn't override target");}if(this.state.TryExitFunctionEvaluationFromGame())break;if(this.state.callStack.currentElement.type!=n||!this.state.callStack.canPop){let m=new Map;m.set(Ke.PushPopType.Function,"function return statement (~ return)"),m.set(Ke.PushPopType.Tunnel,"tunnel onwards statement (->->)");let E=m.get(this.state.callStack.currentElement.type);this.state.callStack.canPop||(E="end of flow (-> END or choice)");let x="Found "+m.get(n)+", when expected "+E;this.Error(x);}else this.state.PopCallStack(),r&&(this.state.divertedPointer=this.PointerAtPath(r.targetPath));break;case R.ControlCommand.CommandType.BeginString:this.state.PushToOutputStream(t),this.Assert(this.state.inExpressionEvaluation===true,"Expected to be in an expression when evaluating a string"),this.state.inExpressionEvaluation=false;break;case R.ControlCommand.CommandType.BeginTag:this.state.PushToOutputStream(t);break;case R.ControlCommand.CommandType.EndTag:{if(this.state.inStringEvaluation){let m=[],E=0;for(let N=this.state.outputStream.length-1;N>=0;--N){let ee=this.state.outputStream[N];E++;let Ee=(0, L.asOrNull)(ee,R.ControlCommand);if(Ee!=null){if(Ee.commandType==R.ControlCommand.CommandType.BeginTag)break;this.Error("Unexpected ControlCommand while extracting tag from choice");break}ee instanceof F.StringValue&&m.push(ee);}this.state.PopFromOutputStream(E);let x=new zt.StringBuilder;for(let N of m.reverse())x.Append(N.toString());let P=new js.Tag(this.state.CleanOutputWhitespace(x.toString()));this.state.PushEvaluationStack(P);}else this.state.PushToOutputStream(t);break}case R.ControlCommand.CommandType.EndString:{let m=[],E=[],x=0;for(let N=this.state.outputStream.length-1;N>=0;--N){let ee=this.state.outputStream[N];x++;let Ee=(0, L.asOrNull)(ee,R.ControlCommand);if(Ee&&Ee.commandType==R.ControlCommand.CommandType.BeginString)break;ee instanceof js.Tag&&E.push(ee),ee instanceof F.StringValue&&m.push(ee);}this.state.PopFromOutputStream(x);for(let N of E)this.state.PushToOutputStream(N);m=m.reverse();let P=new zt.StringBuilder;for(let N of m)P.Append(N.toString());this.state.inExpressionEvaluation=true,this.state.PushEvaluationStack(new F.StringValue(P.toString()));break}case R.ControlCommand.CommandType.ChoiceCount:let a=this.state.generatedChoices.length;this.state.PushEvaluationStack(new F.IntValue(a));break;case R.ControlCommand.CommandType.Turns:this.state.PushEvaluationStack(new F.IntValue(this.state.currentTurnIndex+1));break;case R.ControlCommand.CommandType.TurnsSince:case R.ControlCommand.CommandType.ReadCount:let s=this.state.PopEvaluationStack();if(!(s instanceof F.DivertTargetValue)){let m="";s instanceof F.IntValue&&(m=". Did you accidentally pass a read count ('knot_name') instead of a target ('-> knot_name')?"),this.Error("TURNS_SINCE / READ_COUNT expected a divert target (knot, stitch, label name), but saw "+s+m);break}let o=(0, L.asOrThrows)(s,F.DivertTargetValue),l=(0, L.asOrNull)(this.ContentAtPath(o.targetPath).correctObj,ye.Container),u;l!=null?t.commandType==R.ControlCommand.CommandType.TurnsSince?u=this.state.TurnsSinceForContainer(l):u=this.state.VisitCountForContainer(l):(t.commandType==R.ControlCommand.CommandType.TurnsSince?u=-1:u=0,this.Warning("Failed to find container for "+t.toString()+" lookup at "+o.targetPath.toString())),this.state.PushEvaluationStack(new F.IntValue(u));break;case R.ControlCommand.CommandType.Random:{let m=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue),E=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue);if(E==null||!(E instanceof F.IntValue))return this.Error("Invalid value for minimum parameter of RANDOM(min, max)");if(m==null||!(m instanceof F.IntValue))return this.Error("Invalid value for maximum parameter of RANDOM(min, max)");if(m.value===null)return (0, H.throwNullException)("maxInt.value");if(E.value===null)return (0, H.throwNullException)("minInt.value");let x=m.value-E.value+1;(!isFinite(x)||x>Number.MAX_SAFE_INTEGER)&&(x=Number.MAX_SAFE_INTEGER,this.Error("RANDOM was called with a range that exceeds the size that ink numbers can use.")),x<=0&&this.Error("RANDOM was called with minimum as "+E.value+" and maximum as "+m.value+". The maximum must be larger");let P=this.state.storySeed+this.state.previousRandom,ee=new Ll.PRNG(P).next(),Ee=ee%x+E.value;this.state.PushEvaluationStack(new F.IntValue(Ee)),this.state.previousRandom=ee;break}case R.ControlCommand.CommandType.SeedRandom:let h=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue);if(h==null||!(h instanceof F.IntValue))return this.Error("Invalid value passed to SEED_RANDOM");if(h.value===null)return (0, H.throwNullException)("minInt.value");this.state.storySeed=h.value,this.state.previousRandom=0,this.state.PushEvaluationStack(new hi.Void);break;case R.ControlCommand.CommandType.VisitIndex:let c=this.state.VisitCountForContainer(this.state.currentPointer.container)-1;this.state.PushEvaluationStack(new F.IntValue(c));break;case R.ControlCommand.CommandType.SequenceShuffleIndex:let d=this.NextSequenceShuffleIndex();this.state.PushEvaluationStack(new F.IntValue(d));break;case R.ControlCommand.CommandType.StartThread:break;case R.ControlCommand.CommandType.Done:this.state.callStack.canPopThread?this.state.callStack.PopThread():(this.state.didSafeExit=true,this.state.currentPointer=Nt.Pointer.Null);break;case R.ControlCommand.CommandType.End:this.state.ForceEnd();break;case R.ControlCommand.CommandType.ListFromInt:let f=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue),y=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.StringValue);if(f===null)throw new Ut.StoryException("Passed non-integer when creating a list element from a numerical value.");let v=null;if(this.listDefinitions===null)return (0, H.throwNullException)("this.listDefinitions");let w=this.listDefinitions.TryListGetDefinition(y.value,null);if(w.exists){if(f.value===null)return (0, H.throwNullException)("minInt.value");let m=w.result.TryGetItemWithValue(f.value,ci.InkListItem.Null);m.exists&&(v=new F.ListValue(m.result,f.value));}else throw new Ut.StoryException("Failed to find LIST called "+y.value);v==null&&(v=new F.ListValue),this.state.PushEvaluationStack(v);break;case R.ControlCommand.CommandType.ListRange:let D=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.Value),C=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.Value),p=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.ListValue);if(p===null||C===null||D===null)throw new Ut.StoryException("Expected list, minimum and maximum for LIST_RANGE");if(p.value===null)return (0, H.throwNullException)("targetList.value");let S=p.value.ListWithSubRange(C.valueObject,D.valueObject);this.state.PushEvaluationStack(new F.ListValue(S));break;case R.ControlCommand.CommandType.ListRandom:{let m=this.state.PopEvaluationStack();if(m===null)throw new Ut.StoryException("Expected list for LIST_RANDOM");let E=m.value,x=null;if(E===null)throw (0, H.throwNullException)("list");if(E.Count==0)x=new ci.InkList;else {let P=this.state.storySeed+this.state.previousRandom,ee=new Ll.PRNG(P).next(),Ee=ee%E.Count,Yt=E.entries();for(let Yl=0;Yl<=Ee-1;Yl++)Yt.next();let Xl=Yt.next().value,yi={Key:ci.InkListItem.fromSerializedKey(Xl[0]),Value:Xl[1]};if(yi.Key.originName===null)return (0, H.throwNullException)("randomItem.Key.originName");x=new ci.InkList(yi.Key.originName,this),x.Add(yi.Key,yi.Value),this.state.previousRandom=ee;}this.state.PushEvaluationStack(new F.ListValue(x));break}default:this.Error("unhandled ControlCommand: "+t);break}return true}else if(e instanceof Ug.VariableAssignment){let t=e,n=this.state.PopEvaluationStack();return this.state.variablesState.Assign(t,n),true}else if(e instanceof zg.VariableReference){let t=e,n=null;if(t.pathForCount!=null){let r=t.containerForCount,a=this.state.VisitCountForContainer(r);n=new F.IntValue(a);}else n=this.state.variablesState.GetVariableWithName(t.name),n==null&&(this.Warning("Variable not found: '"+t.name+"'. Using default value of 0 (false). This can happen with temporary variables if the declaration hasn't yet been hit. Globals are always given a default value on load if a value doesn't exist in the save state."),n=new F.IntValue(0));return this.state.PushEvaluationStack(n),true}else if(e instanceof Kg.NativeFunctionCall){let t=e,n=this.state.PopEvaluationStack(t.numberOfParameters),r=t.Call(n);return this.state.PushEvaluationStack(r),true}return false}ChoosePathString(e,t=true,n=[]){if(this.IfAsyncWeCant("call ChoosePathString right now"),this.onChoosePathString!==null&&this.onChoosePathString(e,n),t)this.ResetCallstack();else if(this.state.callStack.currentElement.type==Ke.PushPopType.Function){let r="",a=this.state.callStack.currentElement.currentPointer.container;throw a!=null&&(r="("+a.path.toString()+") "),new Error("Story was running a function "+r+"when you called ChoosePathString("+e+`) - this is almost certainly not not what you want! Full stack trace:
|
|
28
|
+
`+this.state.callStack.callStackTrace)}this.state.PassArgumentsToEvaluationStack(n),this.ChoosePath(new Rl.Path(e));}IfAsyncWeCant(e){if(this._asyncContinueActive)throw new Error("Can't "+e+". Story is in the middle of a ContinueAsync(). Make more ContinueAsync() calls or a single Continue() call beforehand.")}ChoosePath(e,t=true){this.state.SetChosenPath(e,t),this.VisitChangedContainersDueToDivert();}ChooseChoiceIndex(e){e=e;let t=this.currentChoices;this.Assert(e>=0&&e<t.length,"choice out of range");let n=t[e];if(this.onMakeChoice!==null&&this.onMakeChoice(n),n.threadAtGeneration===null)return (0, H.throwNullException)("choiceToChoose.threadAtGeneration");if(n.targetPath===null)return (0, H.throwNullException)("choiceToChoose.targetPath");this.state.callStack.currentThread=n.threadAtGeneration,this.ChoosePath(n.targetPath);}HasFunction(e){try{return this.KnotContainerWithName(e)!=null}catch{return false}}EvaluateFunction(e,t=[],n=false){if(this.onEvaluateFunction!==null&&this.onEvaluateFunction(e,t),this.IfAsyncWeCant("evaluate a function"),e==null)throw new Error("Function is null");if(e==""||e.trim()=="")throw new Error("Function is empty or white space.");let r=this.KnotContainerWithName(e);if(r==null)throw new Error("Function doesn't exist: '"+e+"'");let a=[];a.push(...this.state.outputStream),this._state.ResetOutput(),this.state.StartFunctionEvaluationFromGame(r,t);let s=new zt.StringBuilder;for(;this.canContinue;)s.Append(this.Continue());let o=s.toString();this._state.ResetOutput(a);let l=this.state.CompleteFunctionEvaluationFromGame();return this.onCompleteEvaluateFunction!=null&&this.onCompleteEvaluateFunction(e,t,o,l),n?{returned:l,output:o}:l}EvaluateExpression(e){let t=this.state.callStack.elements.length;this.state.callStack.Push(Ke.PushPopType.Tunnel),this._temporaryEvaluationContainer=e,this.state.GoToStart();let n=this.state.evaluationStack.length;return this.Continue(),this._temporaryEvaluationContainer=null,this.state.callStack.elements.length>t&&this.state.PopCallStack(),this.state.evaluationStack.length>n?this.state.PopEvaluationStack():null}CallExternalFunction(e,t){if(e===null)return (0, H.throwNullException)("funcName");let n=this._externals.get(e),r=null,a=typeof n<"u";if(a&&!n.lookAheadSafe&&this._state.inStringEvaluation&&this.Error("External function "+e+` could not be called because 1) it wasn't marked as lookaheadSafe when BindExternalFunction was called and 2) the story is in the middle of string generation, either because choice text is being generated, or because you have ink like "hello {func()}". You can work around this by generating the result of your function into a temporary variable before the string or choice gets generated: ~ temp x = `+e+"()"),a&&!n.lookAheadSafe&&this._stateSnapshotAtLastNewline!==null){this._sawLookaheadUnsafeFunctionAfterNewline=true;return}if(!a)if(this.allowExternalFunctionFallbacks){r=this.KnotContainerWithName(e),this.Assert(r!==null,"Trying to call EXTERNAL function '"+e+"' which has not been bound, and fallback ink function could not be found."),this.state.callStack.Push(Ke.PushPopType.Function,void 0,this.state.outputStream.length),this.state.divertedPointer=Nt.Pointer.StartOf(r);return}else this.Assert(false,"Trying to call EXTERNAL function '"+e+"' which has not been bound (and ink fallbacks disabled).");let s=[];for(let u=0;u<t;++u){let c=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.Value).valueObject;s.push(c);}s.reverse();let o=n.function(s),l=null;o!=null?(l=F.Value.Create(o),this.Assert(l!==null,"Could not create ink value from returned object of type "+typeof o)):l=new hi.Void,this.state.PushEvaluationStack(l);}BindExternalFunctionGeneral(e,t,n=true){this.IfAsyncWeCant("bind an external function"),this.Assert(!this._externals.has(e),"Function '"+e+"' has already been bound."),this._externals.set(e,{function:t,lookAheadSafe:n});}TryCoerce(e){return e}BindExternalFunction(e,t,n=false){this.Assert(t!=null,"Can't bind a null function"),this.BindExternalFunctionGeneral(e,r=>{this.Assert(r.length>=t.length,"External function expected "+t.length+" arguments");let a=[];for(let s=0,o=r.length;s<o;s++)a[s]=this.TryCoerce(r[s]);return t.apply(null,a)},n);}UnbindExternalFunction(e){this.IfAsyncWeCant("unbind an external a function"),this.Assert(this._externals.has(e),"Function '"+e+"' has not been bound."),this._externals.delete(e);}ValidateExternalBindings(){let e=null,t=null,n=arguments[1]||new Set;if(arguments[0]instanceof ye.Container&&(e=arguments[0]),arguments[0]instanceof Vl.InkObject&&(t=arguments[0]),e===null&&t===null)if(this.ValidateExternalBindings(this._mainContentContainer,n),this._hasValidatedExternals=true,n.size==0)this._hasValidatedExternals=true;else {let r="Error: Missing function binding for external";r+=n.size>1?"s":"",r+=": '",r+=Array.from(n).join("', '"),r+="' ",r+=this.allowExternalFunctionFallbacks?", and no fallback ink function found.":" (ink fallbacks disabled)",this.Error(r);}else if(e!=null){for(let r of e.content){let a=r;(a==null||!a.hasValidName)&&this.ValidateExternalBindings(r,n);}for(let[,r]of e.namedContent)this.ValidateExternalBindings((0, L.asOrNull)(r,Vl.InkObject),n);}else if(t!=null){let r=(0, L.asOrNull)(t,hc.Divert);if(r&&r.isExternal){let a=r.targetPathString;if(a===null)return (0, H.throwNullException)("name");this._externals.has(a)||this.allowExternalFunctionFallbacks&&this.mainContentContainer.namedContent.has(a)||n.add(a);}}}ObserveVariable(e,t){if(this.IfAsyncWeCant("observe a new variable"),this._variableObservers===null&&(this._variableObservers=new Map),!this.state.variablesState.GlobalVariableExistsWithName(e))throw new Error("Cannot observe variable '"+e+"' because it wasn't declared in the ink story.");this._variableObservers.has(e)?this._variableObservers.get(e).push(t):this._variableObservers.set(e,[t]);}ObserveVariables(e,t){for(let n=0,r=e.length;n<r;n++)this.ObserveVariable(e[n],t[n]);}RemoveVariableObserver(e,t){if(this.IfAsyncWeCant("remove a variable observer"),this._variableObservers!==null){if(t!=null){if(this._variableObservers.has(t))if(e!=null){let n=this._variableObservers.get(t);n!=null&&(n.splice(n.indexOf(e),1),n.length===0&&this._variableObservers.delete(t));}else this._variableObservers.delete(t);}else if(e!=null){let n=this._variableObservers.keys();for(let r of n){let a=this._variableObservers.get(r);a!=null&&(a.splice(a.indexOf(e),1),a.length===0&&this._variableObservers.delete(r));}}}}VariableStateDidChangeEvent(e,t){if(this._variableObservers===null)return;let n=this._variableObservers.get(e);if(typeof n<"u"){if(!(t instanceof F.Value))throw new Error("Tried to get the value of a variable that isn't a standard type");let r=(0, L.asOrThrows)(t,F.Value);for(let a of n)a(e,r.valueObject);}}get globalTags(){return this.TagsAtStartOfFlowContainerWithPathString("")}TagsForContentAtPath(e){return this.TagsAtStartOfFlowContainerWithPathString(e)}TagsAtStartOfFlowContainerWithPathString(e){let t=new Rl.Path(e),n=this.ContentAtPath(t).container;if(n===null)return (0, H.throwNullException)("flowContainer");for(;;){let s=n.content[0];if(s instanceof ye.Container)n=s;else break}let r=false,a=null;for(let s of n.content){let o=(0, L.asOrNull)(s,R.ControlCommand);if(o!=null)o.commandType==R.ControlCommand.CommandType.BeginTag?r=true:o.commandType==R.ControlCommand.CommandType.EndTag&&(r=false);else if(r){let l=(0, L.asOrNull)(s,F.StringValue);l!==null?(a===null&&(a=[]),l.value!==null&&a.push(l.value)):this.Error("Tag contained non-text content. Only plain text is allowed when using globalTags or TagsAtContentPath. If you want to evaluate dynamic content, you need to use story.Continue().");}else break}return a}BuildStringOfHierarchy(){let e=new zt.StringBuilder;return this.mainContentContainer.BuildStringOfHierarchy(e,0,this.state.currentPointer.Resolve()),e.toString()}BuildStringOfContainer(e){let t=new zt.StringBuilder;return e.BuildStringOfHierarchy(t,0,this.state.currentPointer.Resolve()),t.toString()}NextContent(){if(this.state.previousPointer=this.state.currentPointer.copy(),!this.state.divertedPointer.isNull&&(this.state.currentPointer=this.state.divertedPointer.copy(),this.state.divertedPointer=Nt.Pointer.Null,this.VisitChangedContainersDueToDivert(),!this.state.currentPointer.isNull))return;if(!this.IncrementContentPointer()){let t=false;this.state.callStack.CanPop(Ke.PushPopType.Function)?(this.state.PopCallStack(Ke.PushPopType.Function),this.state.inExpressionEvaluation&&this.state.PushEvaluationStack(new hi.Void),t=true):this.state.callStack.canPopThread?(this.state.callStack.PopThread(),t=true):this.state.TryExitFunctionEvaluationFromGame(),t&&!this.state.currentPointer.isNull&&this.NextContent();}}IncrementContentPointer(){let e=true,t=this.state.callStack.currentElement.currentPointer.copy();if(t.index++,t.container===null)return (0, H.throwNullException)("pointer.container");for(;t.index>=t.container.content.length;){e=false;let n=(0, L.asOrNull)(t.container.parent,ye.Container);if(!(n instanceof ye.Container))break;let r=n.content.indexOf(t.container);if(r==-1)break;if(t=new Nt.Pointer(n,r),t.index++,e=true,t.container===null)return (0, H.throwNullException)("pointer.container")}return e||(t=Nt.Pointer.Null),this.state.callStack.currentElement.currentPointer=t.copy(),e}TryFollowDefaultInvisibleChoice(){let e=this._state.currentChoices,t=e.filter(r=>r.isInvisibleDefault);if(t.length==0||e.length>t.length)return false;let n=t[0];return n.targetPath===null?(0, H.throwNullException)("choice.targetPath"):n.threadAtGeneration===null?(0, H.throwNullException)("choice.threadAtGeneration"):(this.state.callStack.currentThread=n.threadAtGeneration,this._stateSnapshotAtLastNewline!==null&&(this.state.callStack.currentThread=this.state.callStack.ForkThread()),this.ChoosePath(n.targetPath,false),true)}NextSequenceShuffleIndex(){let e=(0, L.asOrNull)(this.state.PopEvaluationStack(),F.IntValue);if(!(e instanceof F.IntValue))return this.Error("expected number of elements in sequence for shuffle index"),0;let t=this.state.currentPointer.container;if(t===null)return (0, H.throwNullException)("seqContainer");if(e.value===null)return (0, H.throwNullException)("numElementsIntVal.value");let n=e.value,a=(0, L.asOrThrows)(this.state.PopEvaluationStack(),F.IntValue).value;if(a===null)return (0, H.throwNullException)("seqCount");let s=a/n,o=a%n,l=t.path.toString(),u=0;for(let f=0,y=l.length;f<y;f++)u+=l.charCodeAt(f)||0;let h=u+s+this.state.storySeed,c=new Ll.PRNG(Math.floor(h)),d=[];for(let f=0;f<n;++f)d.push(f);for(let f=0;f<=o;++f){let y=c.next()%d.length,v=d[y];if(d.splice(y,1),f==o)return v}throw new Error("Should never reach here")}Error(e,t=false){let n=new Ut.StoryException(e);throw n.useEndLineNumber=t,n}Warning(e){this.AddError(e,true);}AddError(e,t=false,n=false){let r=this.currentDebugMetadata,a=t?"WARNING":"ERROR";if(r!=null){let s=n?r.endLineNumber:r.startLineNumber;e="RUNTIME "+a+": '"+r.fileName+"' line "+s+": "+e;}else this.state.currentPointer.isNull?e="RUNTIME "+a+": "+e:e="RUNTIME "+a+": ("+this.state.currentPointer+"): "+e;this.state.AddError(e,t),t||this.state.ForceEnd();}Assert(e,t=null){if(e==false)throw t==null&&(t="Story assert"),new Error(t+" "+this.currentDebugMetadata)}get currentDebugMetadata(){let e,t=this.state.currentPointer;if(!t.isNull&&t.Resolve()!==null&&(e=t.Resolve().debugMetadata,e!==null))return e;for(let n=this.state.callStack.elements.length-1;n>=0;--n)if(t=this.state.callStack.elements[n].currentPointer,!t.isNull&&t.Resolve()!==null&&(e=t.Resolve().debugMetadata,e!==null))return e;for(let n=this.state.outputStream.length-1;n>=0;--n)if(e=this.state.outputStream[n].debugMetadata,e!==null)return e;return null}get mainContentContainer(){return this._temporaryEvaluationContainer?this._temporaryEvaluationContainer:this._mainContentContainer}};Kt.Story=Dn;Dn.inkVersionCurrent=21;(function(i){(function(t){t[t.NoChange=0]="NoChange",t[t.ExtendedBeyondNewline=1]="ExtendedBeyondNewline",t[t.NewlineRemoved=2]="NewlineRemoved";})(i.OutputStateChange||(i.OutputStateChange={}));})(Dn||(Kt.Story=Dn={}));});var fc=A(Js=>{Object.defineProperty(Js,"__esModule",{value:true});Js.Story=void 0;var Zg=Bi(),eC=br(),qs=se(),Ms=ge(),di=tn(),Gs=lt(),pc=pn(),tC=sl(),nC=Zr(),iC=cl(),rC=si(),bn=yt(),sC=Tt(),aC=xt(),pi=U(),oC=Xn(),lC=Yn(),uC=$t(),$s=class i extends Gs.FlowBase{get flowLevel(){return pc.FlowLevel.Story}get hadError(){return this._hadError}get hadWarning(){return this._hadWarning}constructor(e,t=false){super(null,e,null,false,t),this._errorHandler=null,this._hadError=false,this._hadWarning=false,this._dontFlattenContainers=new Set,this._listDefs=new Map,this.constants=new Map,this.externals=new Map,this.countAllVisits=false,this.ExportRuntime=(n=null)=>{var r,a;this._errorHandler=n,this.constants=new Map;for(let h of this.FindAll(eC.ConstantDeclaration)()){let c=this.constants.get(h.constantName);if(c&&!c.Equals(h.expression)){let d=`CONST '${h.constantName}' has been redefined with a different value. Multiple definitions of the same CONST are valid so long as they contain the same value. Initial definition was on ${c.debugMetadata}.`;this.Error(d,h,false);}this.constants.set(h.constantName,h.expression);}this._listDefs=new Map;for(let h of this.FindAll(nC.ListDefinition)())!((r=h.identifier)===null||r===void 0)&&r.name&&this._listDefs.set((a=h.identifier)===null||a===void 0?void 0:a.name,h);this.externals=new Map,this.ResolveWeavePointNaming();let s=this.runtimeObject,o=new qs.Container;o.AddContent(Ms.ControlCommand.EvalStart());let l=[];for(let[h,c]of this.variableDeclarations)if(c.isGlobalDeclaration){if(c.listDefinition)this._listDefs.set(h,c.listDefinition),o.AddContent(c.listDefinition.runtimeObject),l.push(c.listDefinition.runtimeListDefinition);else {if(!c.expression)throw new Error;c.expression.GenerateIntoContainer(o);}let d=new aC.VariableAssignment(h,true);d.isGlobal=true,o.AddContent(d);}o.AddContent(Ms.ControlCommand.EvalEnd()),o.AddContent(Ms.ControlCommand.End()),this.variableDeclarations.size>0&&(o.name="global decl",s.AddToNamedContentOnly(o)),s.AddContent(Ms.ControlCommand.Done());let u=new rC.Story(s,l);return this.runtimeObject=u,this.hadError||(this.FlattenContainersIn(s),this.ResolveReferences(this),this.hadError)?null:(u.ResetState(),u)},this.ResolveList=n=>{let r=this._listDefs.get(n);return r||null},this.ResolveListItem=(n,r,a=null)=>{let s=null;if(n)return (s=this._listDefs.get(n))?s.ItemNamed(r):null;{let o=null,l=null;for(let[,u]of this._listDefs.entries()){let h=u.ItemNamed(r);h&&(o?this.Error(`Ambiguous item name '${r}' found in multiple sets, including ${l.identifier} and ${u.identifier}`,a,false):(o=h,l=u));}return o}},this.FlattenContainersIn=n=>{let r=new Set;if(n.content)for(let a of n.content){let s=(0, pi.asOrNull)(a,qs.Container);s&&r.add(s);}if(n.namedContent)for(let[,a]of n.namedContent){let s=(0, pi.asOrNull)(a,qs.Container);s&&r.add(s);}for(let a of r)this.TryFlattenContainer(a),this.FlattenContainersIn(a);},this.TryFlattenContainer=n=>{if(n.namedContent&&n.namedContent.size>0||n.hasValidName||this._dontFlattenContainers.has(n))return;let r=(0, pi.asOrNull)(n.parent,qs.Container);if(r){let a=r.content.indexOf(n);r.content.splice(a,1);let s=n.ownDebugMetadata;if(n.content)for(let o of n.content)o.parent=null,s!==null&&o.ownDebugMetadata===null&&(o.debugMetadata=s),r.InsertContent(o,a),a+=1;}},this.Error=(n,r,a)=>{let s=a?di.ErrorType.Warning:di.ErrorType.Error,o="";if(r instanceof Zg.AuthorWarning?(o+="TODO: ",s=di.ErrorType.Author):a?o+="WARNING: ":o+="ERROR: ",r&&r.debugMetadata!==null&&r.debugMetadata.startLineNumber>=1&&(r.debugMetadata.fileName!=null&&(o+=`'${r.debugMetadata.fileName}' `),o+=`line ${r.debugMetadata.startLineNumber}: `),o+=n,n=o,this._errorHandler!==null)this._errorHandler(n,s);else throw new Error(n);this._hadError=s===di.ErrorType.Error,this._hadWarning=s===di.ErrorType.Warning;},this.ResetError=()=>{this._hadError=false,this._hadWarning=false;},this.IsExternal=n=>this.externals.has(n),this.AddExternal=n=>{this.externals.has(n.name)?this.Error(`Duplicate EXTERNAL definition of '${n.name}'`,n,false):n.name&&this.externals.set(n.name,n);},this.DontFlattenContainer=n=>{this._dontFlattenContainers.add(n);},this.NameConflictError=(n,r,a,s)=>{n.Error(`${s} '${r}': name has already been used for a ${a.typeName.toLowerCase()} on ${a.debugMetadata}`);},this.CheckForNamingCollisions=(n,r,a,s="")=>{var o;let l=s||n.typeName;if(i.IsReservedKeyword(r?.name)){n.Error(`'${r}' cannot be used for the name of a ${l.toLowerCase()} because it's a reserved keyword`);return}else if(lC.FunctionCall.IsBuiltIn(r?.name||"")){n.Error(`'${r}' cannot be used for the name of a ${l.toLowerCase()} because it's a built in function`);return}let u=this.ContentWithNameAtLevel(r?.name||"",pc.FlowLevel.Knot),h=(0, pi.asOrNull)(u,Gs.FlowBase);if(h&&(h!==n||a===bn.SymbolType.Arg)){this.NameConflictError(n,r?.name||"",h,l);return}if(a<bn.SymbolType.List)return;for(let[y,v]of this._listDefs)if(r?.name===y&&n!==v&&v.variableAssignment!==n&&this.NameConflictError(n,r?.name,v,l),!(n instanceof iC.ListElementDefinition))for(let w of v.itemDefinitions)r?.name===w.name&&this.NameConflictError(n,r?.name||"",w,l);if(a<=bn.SymbolType.Var)return;let c=r?.name&&this.variableDeclarations.get(r?.name)||null;if(c&&c!==n&&c.isGlobalDeclaration&&c.listDefinition==null&&this.NameConflictError(n,r?.name||"",c,l),a<bn.SymbolType.SubFlowAndWeave)return;let f=new uC.Path(r).ResolveFromContext(n);if(f&&f!==n){this.NameConflictError(n,r?.name||"",f,l);return}if(!(a<bn.SymbolType.Arg)&&a!==bn.SymbolType.Arg){let y=(0, pi.asOrNull)(n,Gs.FlowBase);if(y||(y=(0, oC.ClosestFlowBase)(n)),y&&y.hasParameters&&y.args){for(let v of y.args)if(((o=v.identifier)===null||o===void 0?void 0:o.name)===r?.name){n.Error(`${l} '${r}': name has already been used for a argument to ${y.identifier} on ${y.debugMetadata}`);return}}}};}get typeName(){return "Story"}PreProcessTopLevelObjects(e){super.PreProcessTopLevelObjects(e);let t=[];for(let n of e)if(n instanceof tC.IncludedFile){let r=n,a=e.indexOf(n);if(e.splice(a,1),r.includedStory){let s=[],o=r.includedStory;if(o.content!=null){for(let l of o.content)l instanceof Gs.FlowBase?t.push(l):s.push(l);s.push(new sC.Text(`
|
|
29
|
+
`)),e.splice(a,0,...s);}}continue}e.splice(0,0,...t);}};Js.Story=$s;$s.IsReservedKeyword=i=>{switch(i){case "true":case "false":case "not":case "return":case "else":case "VAR":case "CONST":case "temp":case "LIST":case "function":return true}return false};});var gc=A(Hs=>{Object.defineProperty(Hs,"__esModule",{value:true});Hs.StringExpression=void 0;var mc=ge(),hC=$e(),cC=Tt(),dC=U(),Bl=class i extends hC.Expression{get isSingleString(){return !(this.content.length!==1||!(this.content[0]instanceof cC.Text))}constructor(e){super(),this.GenerateIntoContainer=t=>{t.AddContent(mc.ControlCommand.BeginString());for(let n of this.content)t.AddContent(n.runtimeObject);t.AddContent(mc.ControlCommand.EndString());},this.toString=()=>{let t="";for(let n of this.content)t+=n;return t},this.AddContent(e);}get typeName(){return "String"}Equals(e){let t=(0, dC.asOrNull)(e,i);if(t===null||!this.isSingleString||!t.isSingleString)return false;let n=this.toString(),r=t.toString();return n===r}};Hs.StringExpression=Bl;});var yc=A(An=>{Object.defineProperty(An,"__esModule",{value:true});An.LegacyTag=An.Tag=void 0;var pC=Z(),Cc=ge(),Wl=class extends pC.ParsedObject{constructor(e,t=false){super(),this.GenerateRuntimeObject=()=>this.isStart?Cc.ControlCommand.BeginTag():Cc.ControlCommand.EndTag(),this.toString=()=>this.isStart?"#StartTag":"#EndTag",this.isStart=e,this.inChoice=t;}get typeName(){return "Tag"}};An.Tag=Wl;var fC=el(),jl=class extends fC.Wrap{constructor(e){super(e);}get typeName(){return "Tag"}};An.LegacyTag=jl;});var vc=A(Us=>{Object.defineProperty(Us,"__esModule",{value:true});Us.DefaultFileHandler=void 0;var ql=class{constructor(e){this.rootPath=e,this.ResolveInkFilename=()=>{throw Error("Can't resolve filename because no FileHandler was provided when instantiating the parser / compiler.")},this.LoadInkFileContents=()=>{throw Error("Can't load ink content because no FileHandler was provided when instantiating the parser / compiler.")};}};Us.DefaultFileHandler=ql;});var Jl=A(Ys=>{Object.defineProperty(Ys,"__esModule",{value:true});Ys.InkParser=void 0;var mC=Mu(),gC=Bi(),CC=za(),Ze=th(),de=Jn(),yC=dn(),vC=hh(),EC=Er(),fi=Oo(),Be=Vr(),SC=br(),zs=Nh(),DC=Ih(),Xt=gn(),Ml=mn(),bC=$e(),AC=Vh(),Ec=kh(),Ks=Yn(),wC=Kn(),xC=Rh(),_C=ps(),Xs=Bh(),Sc=sl(),TC=Wh(),OC=ll(),Dc=qh(),PC=Zr(),FC=cl(),NC=wo(),bc=Z(),IC=$t(),Ac=go(),wc=Bo(),ce=ko(),Oe=dl(),VC=fl(),xc=fc(),mi=gc(),vt=so(),wn=yc(),Et=Tt(),_c=jo(),Gl=Ho(),$l=yn(),kC=Ha(),It=U(),gi=Fr(),xn=er(),Tc=tn(),RC=vc(),K=class i extends vt.StringParser{get fileHandler(){if(!this._fileHandler)throw new Error("No FileHandler defined");return this._fileHandler}set fileHandler(e){this._fileHandler=e;}constructor(e,t=null,n=null,r=null,a=null){if(super(e),this.ParseStory=()=>{let s=this.StatementsAtLevel(Oe.StatementLevel.Top);return new xc.Story(s,this._rootParser!==this)},this.SeparatedList=(s,o)=>{let l=this.Parse(s);if(l===null)return null;let u=[];u.push(l);do{let h=this.BeginRule();if(o()===null){this.FailRule(h);break}let d=this.Parse(s);if(d===null){this.FailRule(h);break}this.SucceedRule(h),u.push(d);}while(true);return u},this.CreateDebugMetadata=(s,o)=>{let l=new DC.DebugMetadata;return l.startLineNumber=(s?.lineIndex||0)+1,l.endLineNumber=o.lineIndex+1,l.startCharacterNumber=(s?.characterInLineIndex||0)+1,l.endCharacterNumber=o.characterInLineIndex+1,l.fileName=this._filename,l},this.RuleDidSucceed=(s,o,l)=>{let u=(0, It.asOrNull)(s,bc.ParsedObject);u&&(u.debugMetadata=this.CreateDebugMetadata(o,l));let h=Array.isArray(s)?s:null;if(h!==null)for(let d of h)(0, It.asOrNull)(d,bc.ParsedObject)&&(d.hasOwnDebugMetadata||(d.debugMetadata=this.CreateDebugMetadata(o,l)));let c=(0, It.asOrNull)(s,gi.Identifier);c!=null&&(c.debugMetadata=this.CreateDebugMetadata(o,l));},this.OnStringParserError=(s,o,l=0,u=false)=>{let c=u?"WARNING:":"ERROR:";if(this._filename!==null&&(c+=` '${this._filename}'`),c+=` line ${l+1}: ${s}`,this._externalErrorHandler!==null)this._externalErrorHandler(c,u?Tc.ErrorType.Warning:Tc.ErrorType.Error);else throw new Error(c)},this.AuthorWarning=()=>{this.Whitespace();let s=this.Parse(this.IdentifierWithMetadata);if(s===null||s.name!=="TODO")return null;this.Whitespace(),this.ParseString(":"),this.Whitespace();let o=this.ParseUntilCharactersFromString(`
|
|
30
30
|
\r`);return o?new gC.AuthorWarning(o):null},this.ExtendIdentifierCharacterRanges=s=>{let o=i.ListAllCharacterRanges();for(let l of o)s.AddCharacters(l.ToCharacterSet());},this._parsingChoice=false,this.Choice=()=>{let s=true,o=this.Interleave(this.OptionalExclude(this.Whitespace),this.String("*"));if(!o){if(o=this.Interleave(this.OptionalExclude(this.Whitespace),this.String("+")),o===null)return null;s=false;}let l=this.Parse(this.BracketedName);this.Whitespace(),l!=null&&this.Newline();let u=this.Parse(this.ChoiceCondition);if(this.Whitespace(),this._parsingChoice)throw new Error("Already parsing a choice - shouldn't have nested choices");this._parsingChoice=true;let h=null,c=this.Parse(this.MixedTextAndLogic);c&&(h=new Be.ContentList(c));let d=null,f=null,y=this.ParseString("[")!==null;if(y){this.EndTagIfNecessary(h);let C=this.Parse(this.MixedTextAndLogic);C!==null&&(d=new Be.ContentList(C)),this.Expect(this.String("]"),"closing ']' for weave-style option"),this.EndTagIfNecessary(d);let p=this.Parse(this.MixedTextAndLogic);p!==null&&(f=new Be.ContentList(p));}this.Whitespace(),this.EndTagIfNecessary(f??h);let v=this.Parse(this.MultiDivert);this._parsingChoice=false,this.Whitespace();let w=!h&&!f&&!d;if(w&&v===null&&this.Warning("Choice is completely empty. Interpretting as a default fallback choice. Add a divert arrow to remove this warning: * ->"),!h&&y&&!d&&this.Warning("Blank choice - if you intended a default fallback choice, use the `* ->` syntax"),f||(f=new Be.ContentList),this.EndTagIfNecessary(f),v!==null)for(let C of v){let p=(0, It.asOrNull)(C,Xt.Divert);p&&p.isEmpty||f.AddContent(C);}f.AddContent(new Et.Text(`
|
|
31
|
-
`));let
|
|
31
|
+
`));let D=new yC.Choice(h,d,f);return l&&(D.identifier=l),D.indentationDepth=o.length,D.hasWeaveStyleInlineBrackets=y,D.condition=u,D.onceOnly=s,D.isInvisibleDefault=w,D},this.ChoiceCondition=()=>{let s=this.Interleave(this.ChoiceSingleCondition,this.ChoiceConditionsSpace);return s===null?null:s.length===1?s[0]:new NC.MultipleConditionExpression(s)},this.ChoiceConditionsSpace=()=>(this.Newline(),this.Whitespace(),vt.ParseSuccess),this.ChoiceSingleCondition=()=>{if(this.ParseString("{")===null)return null;let s=this.Expect(this.Expression,"choice condition inside { }");return this.DisallowIncrement(s),this.Expect(this.String("}"),"closing '}' for choice condition"),s},this.Gather=()=>{let s=this.Parse(this.GatherDashes);if(s===null)return null;let o=Number(s),l=this.Parse(this.BracketedName),u=new wC.Gather(l,o);return this.Newline(),u},this.GatherDashes=()=>{this.Whitespace();let s=0;for(;this.ParseDashNotArrow()!==null;)s+=1,this.Whitespace();return s===0?null:s},this.ParseDashNotArrow=()=>{let s=this.BeginRule();return this.ParseString("->")===null&&this.ParseSingleCharacter()==="-"?this.SucceedRule(s):this.FailRule(s)},this.BracketedName=()=>{if(this.ParseString("(")===null)return null;this.Whitespace();let s=this.Parse(this.IdentifierWithMetadata);return s===null?null:(this.Whitespace(),this.Expect(this.String(")"),"closing ')' for bracketed name"),s)},this.InnerConditionalContent=s=>{if(s===void 0){let c=this.Parse(this.ConditionExpression),d=this.Parse(()=>this.InnerConditionalContent(c));return d===null?null:d}let o,l=s!==null,u=this.Parse(this.Newline)===null;if(u&&!l)return null;if(u)o=this.InlineConditionalBranches();else {if(o=this.MultilineConditionalBranches(),o===null){if(s){let c=this.StatementsAtLevel(Oe.StatementLevel.InnerBlock);if(c!==null){o=[new fi.ConditionalSingleBranch(c)];let f=this.Parse(this.SingleMultilineCondition);f&&(f.isElse||(this.ErrorWithParsedObject("Expected an '- else:' clause here rather than an extra condition",f),f.isElse=true),o.push(f));}}if(o===null)return null}else if(o.length===1&&o[0].isElse&&s){let c=new fi.ConditionalSingleBranch(null);c.isTrueBranch=true,o.unshift(c);}if(s){let c=false;for(let d=0;d<o.length;++d){let f=o[d],y=d===o.length-1;f.ownExpression?(f.matchingEquality=true,c=true):c&&y?(f.matchingEquality=true,f.isElse=true):!y&&o.length>2?this.ErrorWithParsedObject("Only final branch can be an 'else'. Did you miss a ':'?",f):d===0?f.isTrueBranch=true:f.isElse=true;}}else {for(let c=0;c<o.length;++c){let d=o[c],f=c===o.length-1;if(d.ownExpression===null)if(f)d.isElse=true;else if(d.isElse){let y=o[o.length-1];y.isElse?this.ErrorWithParsedObject("Multiple 'else' cases. Can have a maximum of one, at the end.",y):this.ErrorWithParsedObject("'else' case in conditional should always be the final one",d);}else this.ErrorWithParsedObject("Branch doesn't have condition. Are you missing a ':'? ",d);}o.length===1&&o[0].ownExpression===null&&this.ErrorWithParsedObject("Condition block with no conditions",o[0]);}}if(o===null)return null;for(let c of o)c.isInline=u;return new EC.Conditional(s,o)},this.InlineConditionalBranches=()=>{let s=this.Interleave(this.MixedTextAndLogic,this.Exclude(this.String("|")),null,false);if(s===null||s.length===0)return null;let o=[];if(s.length>2)this.Error("Expected one or two alternatives separated by '|' in inline conditional");else {let l=new fi.ConditionalSingleBranch(s[0]);if(l.isTrueBranch=true,o.push(l),s.length>1){let u=new fi.ConditionalSingleBranch(s[1]);u.isElse=true,o.push(u);}}return o},this.MultilineConditionalBranches=()=>{this.MultilineWhitespace();let s=this.OneOrMore(this.SingleMultilineCondition);return s===null?null:(this.MultilineWhitespace(),s)},this.SingleMultilineCondition=()=>{if(this.Whitespace(),this.ParseString("->")!==null||this.ParseString("-")===null)return null;this.Whitespace();let s=null,o=this.Parse(this.ElseExpression)!==null;o||(s=this.Parse(this.ConditionExpression));let l=this.StatementsAtLevel(Oe.StatementLevel.InnerBlock);s===null&&l===null&&(this.Error("expected content for the conditional branch following '-'"),l=[new Et.Text("")]),this.MultilineWhitespace();let u=new fi.ConditionalSingleBranch(l);return u.ownExpression=s,u.isElse=o,u},this.ConditionExpression=()=>{let s=this.Parse(this.Expression);return s===null||(this.DisallowIncrement(s),this.Whitespace(),this.ParseString(":")===null)?null:s},this.ElseExpression=()=>this.ParseString("else")===null||(this.Whitespace(),this.ParseString(":")===null)?null:vt.ParseSuccess,this._nonTextPauseCharacters=null,this._nonTextEndCharacters=null,this._notTextEndCharactersChoice=null,this._notTextEndCharactersString=null,this.TrimEndWhitespace=(s,o)=>{if(s.length>0){let l=s.length-1,u=s[l];if(u instanceof Et.Text){let h=u;h.text=h.text.replace(new RegExp(/[ \t]+$/g),""),o?h.text+=" ":h.text.length===0&&(s.splice(l,1),this.TrimEndWhitespace(s,false));}}},this.LineOfMixedTextAndLogic=()=>{this.Parse(this.Whitespace);let s=this.Parse(this.MixedTextAndLogic);if(!s||!s.length)return null;let o=s[0];return o&&o.text&&o.text.startsWith("return")&&this.Warning("Do you need a '~' before 'return'? If not, perhaps use a glue: <> (since it's lowercase) or rewrite somehow?"),s.length===0?null:(s[s.length-1]instanceof Xt.Divert||this.TrimEndWhitespace(s,false),this.EndTagIfNecessary(s),s.length>0&&s[0]instanceof wn.Tag&&s[0].isStart||s.push(new Et.Text(`
|
|
32
32
|
`)),this.Expect(this.EndOfLine,"end of line",this.SkipToNextLine),s)},this.MixedTextAndLogic=()=>{this.ParseObject(this.Spaced(this.String("~")))!==null&&this.Error("You shouldn't use a '~' here - tildas are for logic that's on its own line. To do inline logic, use { curly braces } instead");let o=this.Interleave(this.Optional(this.ContentText),this.Optional(this.InlineLogicOrGlueOrStartTag));if(!this._parsingChoice){let l=this.Parse(this.MultiDivert);l!==null&&(o===null&&(o=[]),this.EndTagIfNecessary(o),this.TrimEndWhitespace(o,true),o.push(...l));}return o||null},this.ContentText=()=>this.ContentTextAllowingEscapeChar(),this.ContentTextAllowingEscapeChar=()=>{let s=null;do{let o=this.Parse(this.ContentTextNoEscape),l=this.ParseString("\\")!==null;if(l||o!==null){if(s===null&&(s=""),o!==null&&(s+=String(o)),l){let u=this.ParseSingleCharacter();s+=u;}}else break}while(true);return s!==null?new Et.Text(s):null},this.ContentTextNoEscape=()=>{this._nonTextPauseCharacters===null&&(this._nonTextPauseCharacters=new de.CharacterSet("-<")),this._nonTextEndCharacters===null&&(this._nonTextEndCharacters=new de.CharacterSet(`{}|
|
|
33
|
-
\r\\#`),this._notTextEndCharactersChoice=new de.CharacterSet(this._nonTextEndCharacters),this._notTextEndCharactersChoice.AddCharacters("[]"),this._notTextEndCharactersString=new de.CharacterSet(this._nonTextEndCharacters),this._notTextEndCharactersString.AddCharacters('"'));let s=()=>this.OneOf([this.ParseDivertArrow,this.ParseThreadArrow,this.EndOfLine,this.Glue]),o=null;this.parsingStringExpression?o=this._notTextEndCharactersString:this._parsingChoice?o=this._notTextEndCharactersChoice:o=this._nonTextEndCharacters;let l=this.ParseUntil(s,this._nonTextPauseCharacters,o);return l!==null?l:null},this.MultiDivert=()=>{this.Whitespace();let s=[],o=this.Parse(this.StartThread);if(o)return s=[o],s;let l=this.Interleave(this.ParseDivertArrowOrTunnelOnwards,this.DivertIdentifierWithArguments);if(!l)return null;s=[],this.EndTagIfNecessary(s);for(let u=0;u<l.length;++u)if(u%2===0){if(l[u]==="->->"){u===0||u===l.length-1||u===l.length-2||this.Error("Tunnel onwards '->->' must only come at the begining or the start of a divert");let d=new
|
|
33
|
+
\r\\#`),this._notTextEndCharactersChoice=new de.CharacterSet(this._nonTextEndCharacters),this._notTextEndCharactersChoice.AddCharacters("[]"),this._notTextEndCharactersString=new de.CharacterSet(this._nonTextEndCharacters),this._notTextEndCharactersString.AddCharacters('"'));let s=()=>this.OneOf([this.ParseDivertArrow,this.ParseThreadArrow,this.EndOfLine,this.Glue]),o=null;this.parsingStringExpression?o=this._notTextEndCharactersString:this._parsingChoice?o=this._notTextEndCharactersChoice:o=this._nonTextEndCharacters;let l=this.ParseUntil(s,this._nonTextPauseCharacters,o);return l!==null?l:null},this.MultiDivert=()=>{this.Whitespace();let s=[],o=this.Parse(this.StartThread);if(o)return s=[o],s;let l=this.Interleave(this.ParseDivertArrowOrTunnelOnwards,this.DivertIdentifierWithArguments);if(!l)return null;s=[],this.EndTagIfNecessary(s);for(let u=0;u<l.length;++u)if(u%2===0){if(l[u]==="->->"){u===0||u===l.length-1||u===l.length-2||this.Error("Tunnel onwards '->->' must only come at the begining or the start of a divert");let d=new _c.TunnelOnwards;if(u<l.length-1){let f=(0, It.asOrNull)(l[u+1],Xt.Divert);d.divertAfter=f;}s.push(d);break}}else {let c=l[u];u<l.length-1&&(c.isTunnel=true),s.push(c);}if(s.length===0&&l.length===1){let u=new Xt.Divert(null);u.isEmpty=true,s.push(u),this._parsingChoice||this.Error("Empty diverts (->) are only valid on choices");}return s},this.StartThread=()=>{if(this.Whitespace(),this.ParseThreadArrow()===null)return null;this.Whitespace();let s=this.Expect(this.DivertIdentifierWithArguments,"target for new thread",()=>new Xt.Divert(null));return s.isThread=true,s},this.DivertIdentifierWithArguments=()=>{this.Whitespace();let s=this.Parse(this.DotSeparatedDivertPathComponents);if(!s)return null;this.Whitespace();let o=this.Parse(this.ExpressionFunctionCallArguments);this.Whitespace();let l=new IC.Path(s);return new Xt.Divert(l,o)},this.SingleDivert=()=>{let s=this.Parse(this.MultiDivert);if(!s||s.length!==1||s[0]instanceof _c.TunnelOnwards)return null;let l=s[0];return l.isTunnel?null:l},this.DotSeparatedDivertPathComponents=()=>this.Interleave(this.Spaced(this.IdentifierWithMetadata),this.Exclude(this.String("."))),this.ParseDivertArrowOrTunnelOnwards=()=>{let s=0;for(;this.ParseString("->")!==null;)s+=1;return s===0?null:s===1?"->":(s===2||this.Error("Unexpected number of arrows in divert. Should only have '->' or '->->'"),"->->")},this.ParseDivertArrow=()=>this.ParseString("->"),this.ParseThreadArrow=()=>this.ParseString("<-"),this._binaryOperators=[],this._maxBinaryOpLength=0,this.TempDeclarationOrAssignment=()=>{this.Whitespace();let s=this.ParseTempKeyword();this.Whitespace();let o=null;if(s?o=this.Expect(this.IdentifierWithMetadata,"variable name"):o=this.Parse(this.IdentifierWithMetadata),o===null)return null;this.Whitespace();let l=this.ParseString("+")!==null,u=this.ParseString("-")!==null;if(l&&u&&this.Error("Unexpected sequence '+-'"),this.ParseString("=")===null)return s&&this.Error("Expected '='"),null;let h=this.Expect(this.Expression,"value expression to be assigned");return l||u?new Xs.IncDecExpression(o,h,l):new Gl.VariableAssignment({variableIdentifier:o,assignedExpression:h,isTemporaryNewDeclaration:s})},this.DisallowIncrement=s=>{s instanceof Xs.IncDecExpression&&this.Error("Can't use increment/decrement here. It can only be used on a ~ line");},this.ParseTempKeyword=()=>{let s=this.BeginRule();return this.Parse(this.Identifier)==="temp"?(this.SucceedRule(s),true):(this.FailRule(s),false)},this.ReturnStatement=()=>{if(this.Whitespace(),this.Parse(this.Identifier)!=="return")return null;this.Whitespace();let o=this.Parse(this.Expression);return new Ac.ReturnType(o)},this.Expression=(s=0)=>{this.Whitespace();let o=this.ExpressionUnary();if(o===null)return null;for(this.Whitespace();;){let l=this.BeginRule(),u=this.ParseInfixOperator();if(u!==null&&u.precedence>s){let h=`right side of '${u.type}' expression`,c=this.Expect(()=>this.ExpressionInfixRight(o,u),h);if(c===null)return this.FailRule(l),null;o=this.SucceedRule(l,c);continue}this.FailRule(l);break}return this.Whitespace(),o},this.ExpressionUnary=()=>{let s=this.Parse(this.ExpressionDivertTarget);if(s!==null)return s;let o=this.OneOf([this.String("-"),this.String("!")]);o===null&&(o=this.Parse(this.ExpressionNot)),this.Whitespace();let l=this.OneOf([this.ExpressionList,this.ExpressionParen,this.ExpressionFunctionCall,this.ExpressionVariableName,this.ExpressionLiteral]);if(l===null&&o!==null&&(l=this.ExpressionUnary()),l===null)return null;o!==null&&(l=kC.UnaryExpression.WithInner(l,o)),this.Whitespace();let u=this.OneOf([this.String("++"),this.String("--")]);if(u!==null){let h=u==="++";if(!(l instanceof $l.VariableReference))this.Error(`can only increment and decrement variables, but saw '${l}'.`);else {let c=l;l=new Xs.IncDecExpression(c.identifier,h);}}return l},this.ExpressionNot=()=>{let s=this.Identifier();return s==="not"?s:null},this.ExpressionLiteral=()=>this.OneOf([this.ExpressionFloat,this.ExpressionInt,this.ExpressionBool,this.ExpressionString]),this.ExpressionDivertTarget=()=>{this.Whitespace();let s=this.Parse(this.SingleDivert);return !s||s&&s.isThread?null:(this.Whitespace(),new Ml.DivertTarget(s))},this.ExpressionInt=()=>{let s=this.ParseInt();return s===null?null:new xn.NumberExpression(s,"int")},this.ExpressionFloat=()=>{let s=this.ParseFloat();return s===null?null:new xn.NumberExpression(s,"float")},this.ExpressionString=()=>{if(this.ParseString('"')===null)return null;this.parsingStringExpression=true;let o=this.Parse(this.MixedTextAndLogic);return this.Expect(this.String('"'),"close quote for string expression"),this.parsingStringExpression=false,o===null?o=[new Et.Text("")]:o.find(l=>l instanceof Xt.Divert)&&this.Error("String expressions cannot contain diverts (->)"),new mi.StringExpression(o)},this.ExpressionBool=()=>{let s=this.Parse(this.Identifier);return s==="true"?new xn.NumberExpression(true,"bool"):s==="false"?new xn.NumberExpression(false,"bool"):null},this.ExpressionFunctionCall=()=>{let s=this.Parse(this.IdentifierWithMetadata);if(s===null)return null;this.Whitespace();let o=this.Parse(this.ExpressionFunctionCallArguments);return o===null?null:new Ks.FunctionCall(s,o)},this.ExpressionFunctionCallArguments=()=>{if(this.ParseString("(")===null)return null;let s=this.Exclude(this.String(",")),o=this.Interleave(this.Expression,s);return o===null&&(o=[]),this.Whitespace(),this.Expect(this.String(")"),"closing ')' for function call"),o},this.ExpressionVariableName=()=>{let s=this.Interleave(this.IdentifierWithMetadata,this.Exclude(this.Spaced(this.String("."))));return s===null||xc.Story.IsReservedKeyword(s[0].name)?null:new $l.VariableReference(s)},this.ExpressionParen=()=>{if(this.ParseString("(")===null)return null;let s=this.Parse(this.Expression);return s===null?null:(this.Whitespace(),this.Expect(this.String(")"),"closing parenthesis ')' for expression"),s)},this.ExpressionInfixRight=(s,o)=>{if(!s)return null;this.Whitespace();let l=this.Parse(()=>this.Expression(o.precedence));return l?new CC.BinaryExpression(s,l,o.type):null},this.ParseInfixOperator=()=>{for(let s of this._binaryOperators){let o=this.BeginRule();if(this.ParseString(s.type)!==null){if(s.requireWhitespace&&this.Whitespace()===null){this.FailRule(o);continue}return this.SucceedRule(o,s)}this.FailRule(o);}return null},this.ExpressionList=()=>{if(this.Whitespace(),this.ParseString("(")===null)return null;this.Whitespace();let s=this.SeparatedList(this.ListMember,this.Spaced(this.String(",")));return this.Whitespace(),this.ParseString(")")===null?null:new Dc.List(s)},this.ListMember=()=>{this.Whitespace();let s=this.Parse(this.IdentifierWithMetadata);if(s===null)return null;if(this.ParseString(".")!==null){let l=this.Expect(this.IdentifierWithMetadata,`element name within the set ${s}`);s.name+=`.${l?.name}`;}return this.Whitespace(),s},this.RegisterExpressionOperators=()=>{this.RegisterBinaryOperator("&&",1),this.RegisterBinaryOperator("||",1),this.RegisterBinaryOperator("and",1,true),this.RegisterBinaryOperator("or",1,true),this.RegisterBinaryOperator("==",2),this.RegisterBinaryOperator(">=",2),this.RegisterBinaryOperator("<=",2),this.RegisterBinaryOperator("<",2),this.RegisterBinaryOperator(">",2),this.RegisterBinaryOperator("!=",2),this.RegisterBinaryOperator("?",3),this.RegisterBinaryOperator("has",3,true),this.RegisterBinaryOperator("!?",3),this.RegisterBinaryOperator("hasnt",3,true),this.RegisterBinaryOperator("^",3),this.RegisterBinaryOperator("+",4),this.RegisterBinaryOperator("-",5),this.RegisterBinaryOperator("*",6),this.RegisterBinaryOperator("/",7),this.RegisterBinaryOperator("%",8),this.RegisterBinaryOperator("mod",8,true);},this.RegisterBinaryOperator=(s,o,l=false)=>{let u=new TC.InfixOperator(s,o,l);this._binaryOperators.push(u),this._maxBinaryOpLength=Math.max(this._maxBinaryOpLength,s.length);},this._openFilenames=[],this.IncludeStatement=()=>{if(this.Whitespace(),this.ParseString("INCLUDE")===null)return null;this.Whitespace();let s=this.Expect(()=>this.ParseUntilCharactersFromString(`
|
|
34
34
|
\r`),"filename for include statement");s=s.replace(new RegExp(/[ \t]+$/g),"");let o=this.fileHandler.ResolveInkFilename(s,this._filename);if(this.FilenameIsAlreadyOpen(o))return this.Error(`Recursive INCLUDE detected: '${o}' is already open.`),this.ParseUntilCharactersFromString(`\r
|
|
35
|
-
`),new
|
|
36
|
-
Error:${h}`);}return u!=null&&(l=new i(u,s,this._externalErrorHandler,this._rootParser,this.fileHandler).ParseStory()),this.RemoveOpenFilename(o),new
|
|
35
|
+
`),new Sc.IncludedFile(null);this.AddOpenFilename(o);let l=null,u="";try{u=this._rootParser.fileHandler.LoadInkFileContents(o,this._filename);}catch(h){this.Error(`Failed to load: '${s}'.
|
|
36
|
+
Error:${h}`);}return u!=null&&(l=new i(u,s,this._externalErrorHandler,this._rootParser,this.fileHandler).ParseStory()),this.RemoveOpenFilename(o),new Sc.IncludedFile(l)},this.FilenameIsAlreadyOpen=s=>this._rootParser._openFilenames.includes(s),this.AddOpenFilename=s=>{this._rootParser._openFilenames.push(s);},this.RemoveOpenFilename=s=>{this._rootParser._openFilenames.splice(this._rootParser._openFilenames.indexOf(s),1);},this.KnotDefinition=()=>{let s=this.Parse(this.KnotDeclaration);if(s===null)return null;this.Expect(this.EndOfLine,"end of line after knot name definition",this.SkipToNextLine);let o=()=>this.StatementsAtLevel(Oe.StatementLevel.Knot),l=this.Expect(o,"at least one line within the knot",this.KnotStitchNoContentRecoveryRule);return new OC.Knot(s.name,l,s.args,s.isFunction)},this.KnotDeclaration=()=>{if(this.Whitespace(),this.KnotTitleEquals()===null)return null;this.Whitespace();let s=this.Parse(this.IdentifierWithMetadata),o,l=s?.name==="function";l?(this.Expect(this.Whitespace,"whitespace after the 'function' keyword"),o=this.Parse(this.IdentifierWithMetadata)):o=s,o===null&&(this.Error(`Expected the name of the ${l?"function":"knot"}`),o=new gi.Identifier("")),this.Whitespace();let u=this.Parse(this.BracketedKnotDeclArguments);return this.Whitespace(),this.Parse(this.KnotTitleEquals),new Ec.FlowDecl(o,u,l)},this.KnotTitleEquals=()=>{let s=this.ParseCharactersFromString("=");return s===null||s.length<=1?null:s},this.StitchDefinition=()=>{let s=this.Parse(this.StitchDeclaration);if(s===null)return null;this.Expect(this.EndOfLine,"end of line after stitch name",this.SkipToNextLine);let o=()=>this.StatementsAtLevel(Oe.StatementLevel.Stitch),l=this.Expect(o,"at least one line within the stitch",this.KnotStitchNoContentRecoveryRule);return new VC.Stitch(s.name,l,s.args,s.isFunction)},this.StitchDeclaration=()=>{if(this.Whitespace(),this.ParseString("=")===null||this.ParseString("=")!==null)return null;this.Whitespace();let s=this.ParseString("function")!==null;s&&this.Whitespace();let o=this.Parse(this.IdentifierWithMetadata);if(o===null)return null;this.Whitespace();let l=this.Parse(this.BracketedKnotDeclArguments);return this.Whitespace(),new Ec.FlowDecl(o,l,s)},this.KnotStitchNoContentRecoveryRule=()=>(this.ParseUntil(this.KnotDeclaration,new de.CharacterSet("="),null),[new Et.Text("<ERROR IN FLOW>")]),this.BracketedKnotDeclArguments=()=>{if(this.ParseString("(")===null)return null;let s=this.Interleave(this.Spaced(this.FlowDeclArgument),this.Exclude(this.String(",")));return this.Expect(this.String(")"),"closing ')' for parameter list"),s===null&&(s=[]),s},this.FlowDeclArgument=()=>{let s=this.Parse(this.IdentifierWithMetadata);this.Whitespace();let o=this.ParseDivertArrow();this.Whitespace();let l=this.Parse(this.IdentifierWithMetadata);if(s==null&&l===null)return null;let u=new mC.Argument;return o!==null&&(u.isDivertTarget=true),s!==null&&s.name==="ref"?(l===null&&this.Error("Expected an parameter name after 'ref'"),u.identifier=l,u.isByReference=true):(u.isDivertTarget?u.identifier=l:u.identifier=s,u.identifier===null&&this.Error("Expected an parameter name"),u.isByReference=false),u},this.ExternalDeclaration=()=>{this.Whitespace();let s=this.Parse(this.IdentifierWithMetadata);if(s===null||s.name!="EXTERNAL")return null;this.Whitespace();let o=this.Expect(this.IdentifierWithMetadata,"name of external function")||new gi.Identifier("");this.Whitespace();let l=this.Expect(this.BracketedKnotDeclArguments,`declaration of arguments for EXTERNAL, even if empty, i.e. 'EXTERNAL ${o}()'`);l===null&&(l=[]);let u=l.map(h=>{var c;return (c=h.identifier)===null||c===void 0?void 0:c.name}).filter(It.filterUndef);return new AC.ExternalDeclaration(o,u)},this._identifierCharSet=null,this.LogicLine=()=>{if(this.Whitespace(),this.ParseString("~")===null)return null;this.Whitespace();let s=()=>this.OneOf([this.ReturnStatement,this.TempDeclarationOrAssignment,this.Expression]),o=this.Expect(s,"expression after '~'",this.SkipToNextLine);if(o===null)return new Be.ContentList;o instanceof bC.Expression&&!(o instanceof Ks.FunctionCall||o instanceof Xs.IncDecExpression)&&this.Error(`Logic following a '~' can't be that type of expression. It can only be something like:
|
|
37
37
|
~ return
|
|
38
38
|
~ var x = blah
|
|
39
39
|
~ x++
|
|
40
40
|
~ myFunction()`);let l=(0, It.asOrNull)(o,Ks.FunctionCall);return l&&(l.shouldPopReturnedValue=true),o.Find(Ks.FunctionCall)()!==null&&(o=new Be.ContentList(o,new Et.Text(`
|
|
41
|
-
`))),this.Expect(this.EndOfLine,"end of line",this.SkipToNextLine),o},this.VariableDeclaration=()=>{if(this.Whitespace(),this.Parse(this.Identifier)!=="VAR")return null;this.Whitespace();let o=this.Expect(this.IdentifierWithMetadata,"variable name");this.Whitespace(),this.Expect(this.String("="),"the '=' for an assignment of a value, e.g. '= 5' (initial values are mandatory)"),this.Whitespace();let u=this.Expect(this.Expression,"initial value for ");return u?(u instanceof xn.NumberExpression||u instanceof mi.StringExpression||u instanceof Ml.DivertTarget||u instanceof $l.VariableReference||u instanceof
|
|
42
|
-
`)),new Be.ContentList(s)},this._statementRulesAtLevel=[],this._statementBreakRulesAtLevel=[],this.StatementsAtLevel=s=>(s===Oe.StatementLevel.InnerBlock&&this.Parse(this.GatherDashes)!==null&&this.Error("You can't use a gather (the dashes) within the { curly braces } context. For multi-line sequences and conditions, you should only use one dash."),this.Interleave(this.Optional(this.MultilineWhitespace),()=>this.StatementAtLevel(s),()=>this.StatementsBreakForLevel(s))),this.StatementAtLevel=s=>{let o=this._statementRulesAtLevel[s],l=this.OneOf(o);return s===Oe.StatementLevel.Top&&l instanceof
|
|
43
|
-
\r`),this.ParseNewline(),vt.ParseSuccess),this.Line=s=>()=>{let o=this.ParseObject(s);return o===null?null:(this.Expect(this.EndOfLine,"end of line",this.SkipToNextLine),o)},this.StartTag=()=>{if(this.Whitespace(),this.ParseString("#")===null)return null;this.parsingStringExpression&&this.Error("Tags aren't allowed inside of strings. Please use \\# if you want a hash symbol.");let s=null;if(this.tagActive){let o=new Be.ContentList;o.AddContent(new wn.Tag(false)),o.AddContent(new wn.Tag(true)),s=o;}else s=new wn.Tag(true);return this.tagActive=true,this.Whitespace(),s},this._inlineWhitespaceChars=new de.CharacterSet(" "),this.EndOfLine=()=>this.OneOf([this.Newline,this.EndOfFile]),this.Newline=()=>(this.Whitespace(),this.ParseNewline()!==null?vt.ParseSuccess:null),this.EndOfFile=()=>(this.Whitespace(),this.endOfInput?vt.ParseSuccess:null),this.MultilineWhitespace=()=>{let s=this.OneOrMore(this.Newline);return s===null?null:s.length>=1?vt.ParseSuccess:null},this.Whitespace=()=>this.ParseCharactersFromCharSet(this._inlineWhitespaceChars)!==null?vt.ParseSuccess:null,this.Spaced=s=>()=>{this.Whitespace();let o=this.ParseObject(s);return o===null?null:(this.Whitespace(),o)},this.AnyWhitespace=()=>{let s=false;for(;this.OneOf([this.Whitespace,this.MultilineWhitespace])!==null;)s=true;return s?vt.ParseSuccess:null},this.MultiSpaced=s=>()=>{this.AnyWhitespace();let o=this.ParseObject(s);return o===null?null:(this.AnyWhitespace(),o)},this._filename=null,this._externalErrorHandler=null,this._fileHandler=null,this._filename=t,this.RegisterExpressionOperators(),this.GenerateStatementLevelRules(),this.errorHandler=this.OnStringParserError,this._externalErrorHandler=n,a===null?this._fileHandler=new RC.DefaultFileHandler:this._fileHandler=a,r===null){if(this._rootParser=this,this._openFilenames=[],this._filename!==null){let s=this.fileHandler.ResolveInkFilename(this._filename);this._openFilenames.push(s);}}else this._rootParser=r;}PreProcessInputString(e){return new vC.CommentEliminator(e).Process()}get parsingStringExpression(){return this.GetFlag(Number(zs.CustomFlags.ParsingString))}set parsingStringExpression(e){this.SetFlag(Number(zs.CustomFlags.ParsingString),e);}get tagActive(){return this.GetFlag(Number(zs.CustomFlags.TagActive))}set tagActive(e){this.SetFlag(Number(zs.CustomFlags.TagActive),e);}get identifierCharSet(){return this._identifierCharSet===null&&((this._identifierCharSet=new de.CharacterSet).AddRange("A","Z").AddRange("a","z").AddRange("0","9").Add("_"),this.ExtendIdentifierCharacterRanges(this._identifierCharSet)),this._identifierCharSet}EndTagIfNecessary(e){this.tagActive&&(e!=null&&(e instanceof Be.ContentList?e.AddContent(new wn.Tag(false)):e.push(new wn.Tag(false))),this.tagActive=false);}};Ys.InkParser=K;K.LatinBasic=Ze.CharacterRange.Define("A","z",new de.CharacterSet().AddRange("[","`"));K.LatinExtendedA=Ze.CharacterRange.Define("\u0100","\u017F");K.LatinExtendedB=Ze.CharacterRange.Define("\u0180","\u024F");K.Greek=Ze.CharacterRange.Define("\u0370","\u03FF",new de.CharacterSet().AddRange("\u0378","\u0385").AddCharacters("\u0374\u0375\u0378\u0387\u038B\u038D\u03A2"));K.Cyrillic=Ze.CharacterRange.Define("\u0400","\u04FF",new de.CharacterSet().AddRange("\u0482","\u0489"));K.Armenian=Ze.CharacterRange.Define("\u0530","\u058F",new de.CharacterSet().AddCharacters("\u0530").AddRange("\u0557","\u0560").AddRange("\u0588","\u058E"));K.Hebrew=Ze.CharacterRange.Define("\u0590","\u05FF",new de.CharacterSet);K.Arabic=Ze.CharacterRange.Define("\u0600","\u06FF",new de.CharacterSet);K.Korean=Ze.CharacterRange.Define("\uAC00","\uD7AF",new de.CharacterSet);K.Latin1Supplement=Ze.CharacterRange.Define("\x80","\xFF",new de.CharacterSet);K.Chinese=Ze.CharacterRange.Define("\u4E00","\u9FFF",new de.CharacterSet);K.ListAllCharacterRanges=()=>[K.LatinBasic,K.LatinExtendedA,K.LatinExtendedB,K.Arabic,K.Armenian,K.Cyrillic,K.Greek,K.Hebrew,K.Korean,K.Latin1Supplement,K.Chinese];});var
|
|
44
|
-
`||c=="\r"?h=true:h&&(u++,h=false);t+=u;}let n=i.FindAll(jC.Knot)(),r=i.FindAll(qC.Stitch)(),a=i.FindAll(LC.Choice)(),s=i.FindAll(WC.Gather)(l=>l.debugMetadata!=null),o=i.FindAll(BC.Divert)();return {words:t,knots:n.length,functions:n.filter(l=>l.isFunction).length,stitches:r.length,gathers:s.length,diverts:o.length-1,choices:a.length}}Qs.GenerateStoryStats=GC;});var Tc=b(Zs=>{Object.defineProperty(Zs,"__esModule",{value:true});Zs.JsonFileHandler=void 0;var Hl=class{constructor(e){this.fileHierarchy=e,this.ResolveInkFilename=t=>{if(Object.keys(this.fileHierarchy).includes(t))return t;throw new Error(`Cannot locate ${t}. Are you trying a relative import ? This is not yet implemented.`)},this.LoadInkFileContents=t=>{if(Object.keys(this.fileHierarchy).includes(t))return this.fileHierarchy[t];throw new Error(`Cannot open ${t}.`)};}};Zs.JsonFileHandler=Hl;});var Pc=b(ve=>{Object.defineProperty(ve,"__esModule",{value:true});ve.Compiler=ve.Story=ve.InkList=ve.JsonFileHandler=ve.StatementLevel=ve.InkParser=ve.CompilerOptions=void 0;var $C=Oa(),JC=Bu(),Ul=tn(),HC=Jl(),UC=te(),zC=U(),KC=_c(),XC=Oa();Object.defineProperty(ve,"CompilerOptions",{enumerable:true,get:function(){return XC.CompilerOptions}});var YC=Jl();Object.defineProperty(ve,"InkParser",{enumerable:true,get:function(){return YC.InkParser}});var QC=dl();Object.defineProperty(ve,"StatementLevel",{enumerable:true,get:function(){return QC.StatementLevel}});var ZC=Tc();Object.defineProperty(ve,"JsonFileHandler",{enumerable:true,get:function(){return ZC.JsonFileHandler}});var Oc=si();Object.defineProperty(ve,"InkList",{enumerable:true,get:function(){return Oc.InkList}});Object.defineProperty(ve,"Story",{enumerable:true,get:function(){return Oc.Story}});var zl=class{get errors(){return this._errors}get warnings(){return this._warnings}get authorMessages(){return this._authorMessages}get inputString(){return this._inputString}get options(){return this._options}get parsedStory(){if(!this._parsedStory)throw new Error;return this._parsedStory}get runtimeStory(){if(!this._runtimeStory)throw new Error("Compilation failed.");return this._runtimeStory}get parser(){if(!this._parser)throw new Error;return this._parser}get debugSourceRanges(){return this._debugSourceRanges}constructor(e,t=null){this._errors=[],this._warnings=[],this._authorMessages=[],this._parsedStory=null,this._runtimeStory=null,this._parser=null,this._debugSourceRanges=[],this.Compile=()=>(this._parser=new HC.InkParser(this.inputString,this.options.sourceFilename||null,this.OnError,null,this.options.fileHandler),this._parsedStory=this.parser.ParseStory(),this.errors.length===0?(this.parsedStory.countAllVisits=this.options.countAllVisits,this._runtimeStory=this.parsedStory.ExportRuntime(this.OnError)):this._runtimeStory=null,this.runtimeStory),this.RetrieveDebugSourceForLatestContent=()=>{var n;for(let r of this.runtimeStory.state.outputStream){let a=(0, zC.asOrNull)(r,UC.StringValue);if(a!==null){let s=new JC.DebugSourceRange(((n=a.value)===null||n===void 0?void 0:n.length)||0,a.debugMetadata,a.value||"unknown");this.debugSourceRanges.push(s);}}},this.GenerateStats=()=>this._parsedStory===null?null:(0, KC.GenerateStoryStats)(this._parsedStory),this.DebugMetadataForContentAtOffset=n=>{let r=0,a=null;for(let s of this.debugSourceRanges){if(s.debugMetadata!==null&&(a=s.debugMetadata),n>=r&&n<r+s.length)return a;r+=s.length;}return null},this.OnError=(n,r)=>{switch(r){case Ul.ErrorType.Author:this._authorMessages.push(n);break;case Ul.ErrorType.Warning:this._warnings.push(n);break;case Ul.ErrorType.Error:this._errors.push(n);break}this.options.errorHandler!==null&&this.options.errorHandler(n,r);},this._inputString=e,this._options=t||new $C.CompilerOptions;}};ve.Compiler=zl;});var Mc=Object.defineProperty,Gc=(i,e,t)=>e in i?Mc(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,Pe=(i,e,t)=>Gc(i,typeof e!="symbol"?e+"":e,t),De;(i=>(i.log=(e,...t)=>console.log(`[Pixi\u2019VN Json] ${e}`,...t),i.warn=(e,...t)=>console.warn(`[Pixi\u2019VN Json] ${e}`,...t),i.error=(e,...t)=>console.error(`[Pixi\u2019VN Json] ${e}`,...t),i.info=(e,...t)=>console.info(`[Pixi\u2019VN Json] ${e}`,...t)))(De||(De={}));var Se=class G{static init(e){e.loadAssets&&(G._loadAssets=e.loadAssets),e.soundOperation&&(G._soundOperation=e.soundOperation),e.imageOperation&&(G._imageOperation=e.imageOperation),e.videoOperation&&(G._videoOperation=e.videoOperation),e.imageContainerOperation&&(G._imageContainerOperation=e.imageContainerOperation),e.textOperation&&(G._textOperation=e.textOperation),e.canvasElementOperation&&(G._canvasElementOperation=e.canvasElementOperation),e.setStorageValue&&(G._setStorageValue=e.setStorageValue),e.setInitialStorageValue&&(G._setInitialStorageValue=e.setInitialStorageValue),e.narrationOperation&&(G._narrationOperation=e.narrationOperation),e.effectOperation&&(G._effectOperation=e.effectOperation),e.animateOperation&&(G._animateOperation=e.animateOperation),e.getLogichValue&&(G._getLogichValue=e.getLogichValue),e.getConditionalStep&&(G._getConditionalStep=e.getConditionalStep);}static get loadAssets(){return G._loadAssets}static get soundOperation(){return G._soundOperation}static get imageOperation(){return G._imageOperation}static get videoOperation(){return G._videoOperation}static get imageContainerOperation(){return G._imageContainerOperation}static get textOperation(){return G._textOperation}static get canvasElementOperation(){return G._canvasElementOperation}static get setStorageValue(){return G._setStorageValue}static get setInitialStorageValue(){return G._setInitialStorageValue}static get narrationOperation(){return G._narrationOperation}static get effectOperation(){return G._effectOperation}static get animateOperation(){return G._animateOperation}static get getLogichValue(){return G._getLogichValue}static get getConditionalStep(){return G._getConditionalStep}};Pe(Se,"_loadAssets",()=>{}),Pe(Se,"_soundOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_imageOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_videoOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_imageContainerOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_textOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_canvasElementOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_setStorageValue",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_setInitialStorageValue",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_narrationOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_effectOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_animateOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_getLogichValue",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_getConditionalStep",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")});var _=Se;var $c=Object.defineProperty,Jc=(i,e,t)=>e in i?$c(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,ra=(i,e,t)=>Jc(i,typeof e!="symbol"?e+"":e,t);function Hc(i,e={}){let t="";return i.values.forEach(n=>{if(typeof n=="string")t+=n;else {let r=_.getLogichValue(n,e);t+=`${r}`;}}),t}var vi=class V{static t(e){return Array.isArray(e)?e.map(t=>V.translate(`${t}`)):V.translate(`${e}`)}static set beforeToTranslate(e){V._beforeToTranslate=e;}static set translate(e){V._translate=e;}static get translate(){return e=>{let t=e;return V._beforeToTranslate&&(t=V._beforeToTranslate(t)),t=V._translate(t),V._afterToTranslate&&(t=V._afterToTranslate(t)),t}}static set afterToTranslate(e){V._afterToTranslate=e;}static addKey(e,t,n){let r=n.defaultValue||"empty_string";typeof t=="string"&&(t=[t]),Array.isArray(t)&&t.forEach(a=>{e[a]===void 0&&(r==="empty_string"?e[a]="":r==="copy_key"&&(V._beforeToTranslate?e[a]=V._beforeToTranslate(a):e[a]=a));});}static getConditionalsThenElse(e,t=[]){if(typeof e=="object"&&e&&"type"in e)if(e.type==="ifelse")e.then&&V.getConditionalsThenElse(e.then,t),e.else&&V.getConditionalsThenElse(e.else,t);else if(e.type==="stepswitch"){if(e.elements)if(Array.isArray(e.elements))e.elements.forEach(n=>{V.getConditionalsThenElse(n,t);});else if(e.elements.type==="ifelse"){let n=[];V.getConditionalsThenElse(e.elements,n),n.forEach(r=>{t.push(...r);});}else if(e.elements.type==="stepswitch"){let n=[];V.getConditionalsThenElse(e.elements,n),n.forEach(r=>{t.push(...r);});}else V.getConditionalsThenElse(e.elements,t);}else e.type==="resulttocombine"?(e.firstItem&&V.getConditionalsThenElse(e.firstItem,t),e.secondConditionalItem&&e.secondConditionalItem.forEach(n=>{V.getConditionalsThenElse(n,t);})):t.push(e);else e&&t.push(e);return t}static async generateJsonTranslation(e,t={},n={}){let{defaultValue:r="copy_key",operationStringConvert:a}=n,s=e.map(async o=>{if(o.choices){let l=[];Array.isArray(o.choices)?l=[o.choices]:l=V.getConditionalsThenElse(o.choices),l.forEach(u=>u.forEach(h=>{if("type"in h){let c=[];h.type==="ifelse"||h.type==="stepswitch"?V.getConditionalsThenElse(h,c):c=[h],c.map(d=>V.getConditionalsThenElse(d.text)).forEach(d=>{Array.isArray(d)&&d.forEach(f=>{Array.isArray(f)?f.forEach(y=>{typeof y=="string"?V.addKey(t,y,{defaultValue:r}):V.getConditionalsThenElse(y).forEach(v=>{Array.isArray(v)?v.forEach(w=>{typeof w=="string"&&V.addKey(t,w,{defaultValue:r});}):typeof v=="string"&&V.addKey(t,v,{defaultValue:r});});}):typeof f=="string"&&V.addKey(t,f,{defaultValue:r});});});}}));}if(o.dialogue){let l=[];Array.isArray(o.dialogue)?l=[o.dialogue]:l=V.getConditionalsThenElse(o.dialogue),l.forEach(u=>{if(typeof u=="string")V.addKey(t,u,{defaultValue:r});else if("text"in u){let h=V.getConditionalsThenElse(u.text);typeof h=="string"&&(h=[h]),h.forEach(c=>{typeof c=="string"?V.addKey(t,c,{defaultValue:r}):V.getConditionalsThenElse(c).forEach(d=>{typeof d=="string"?V.addKey(t,d,{defaultValue:r}):Array.isArray(d)&&d.forEach(f=>{typeof f=="string"?V.addKey(t,f,{defaultValue:r}):V.getConditionalsThenElse(f).forEach(y=>{typeof y=="string"&&V.addKey(t,y,{defaultValue:r});});});});});}});}if(o.operations)for(let l of o.operations){if(l.type==="operationtoconvert"&&a){let u=Hc(l),h=await a(u,o,{});if(!h)return;l=h;}l.type==="text"&&l.operationType==="show"&&V.addKey(t,l.text,{defaultValue:r});}o.conditionalStep&&V.getConditionalsThenElse(o.conditionalStep).forEach(l=>{Array.isArray(l)?V.generateJsonTranslation(l,t,n):V.generateJsonTranslation([l],t,n);});});return await Promise.all(s),t}};ra(vi,"_beforeToTranslate"),ra(vi,"_translate",i=>i),ra(vi,"_afterToTranslate");var Uc=vi,be=Uc;var fd=Object.defineProperty,md=(i,e,t)=>e in i?fd(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,Fe=(i,e,t)=>md(i,typeof e!="symbol"?e+"":e,t);async function Ql(i){let e=_.getLogichValue(i,{});if(e)switch(e.type){case "assets":switch(e.operationType){case "load":await Assets.load(e.aliases);break;case "lazyload":Assets.backgroundLoad(e.aliases);break}break;case "bundle":switch(e.operationType){case "load":await Assets.loadBundle(e.aliases);break;case "lazyload":Assets.backgroundLoadBundle(e.aliases);break}break}}var q;(i=>(i.log=(e,...t)=>console.log(`[Pixi\u2019VN Json] ${e}`,...t),i.warn=(e,...t)=>console.warn(`[Pixi\u2019VN Json] ${e}`,...t),i.error=(e,...t)=>console.error(`[Pixi\u2019VN Json] ${e}`,...t),i.info=(e,...t)=>console.info(`[Pixi\u2019VN Json] ${e}`,...t)))(q||(q={}));async function Di(i,e,t){switch(t.type){case "fade":await showWithFade(e.alias,i,t.props,t.priority);break;case "dissolve":await showWithDissolve(e.alias,i,t.props,t.priority);break;case "movein":case "moveout":await moveIn(e.alias,i,t.props,t.priority);break;case "zoomin":case "zoomout":await zoomIn(e.alias,i,t.props,t.priority);break;case "pushin":case "pushout":await pushIn(e.alias,i,t.props,t.priority);break}}function _n(i){if(i.transition)switch(i.transition.type){case "fade":removeWithFade(i.alias,i.transition.props,i.transition.priority);break;case "dissolve":removeWithDissolve(i.alias,i.transition.props,i.transition.priority);break;case "movein":case "moveout":moveOut(i.alias,i.transition.props,i.transition.priority);break;case "zoomin":case "zoomout":zoomOut(i.alias,i.transition.props,i.transition.priority);break;case "pushin":case "pushout":pushOut(i.alias,i.transition.props,i.transition.priority);break}else canvas.remove(i.alias);}async function Zl(i){switch(i.operationType){case "show":if(i.transition){let e=new ImageSprite(i.props,i.url||i.alias);await Di(e,i,i.transition);}else await showImage(i.alias,i.url,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`Image with alias ${i.alias} not found.`);break}case "remove":_n(i);break}}async function eu(i){switch(i.operationType){case "show":if(i.transition){let e=new VideoSprite(i.props,i.url||i.alias);await Di(e,i,i.transition);}else await showVideo(i.alias,i.url,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`Video with alias ${i.alias} not found.`);break}case "remove":_n(i);break;case "pause":case "resume":{let e=canvas.find(i.alias);e?e.paused=i.operationType==="pause":q.error(`Video with alias ${i.alias} not found.`);break}}}async function tu(i){switch(i.operationType){case "show":if(i.transition){let e=new ImageContainer(i.props,i.urls);await Di(e,i,i.transition);}else await showImageContainer(i.alias,i.urls,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`ImageContainer with alias ${i.alias} not found.`);break}case "remove":_n(i);break}}async function nu(i){switch(i.operationType){case "show":if(i.props=i.props||{},i.props.text=be.t(i.text),i.transition){let e=new Text(i.props);await Di(e,i,i.transition);}else showText(i.alias,i.text,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`Text with alias ${i.alias} not found.`);break}case "remove":_n(i);break}}async function iu(i){switch(i.operationType){case "edit":try{let e=canvas.find(i.alias);e?i.props&&e.setMemory({...e.memory,...i.props}):q.error(`Canvas Element with alias ${i.alias} not found.`);}catch(e){q.error(`There was an error while trying to edit the canvas element with alias ${i.alias}.`,e);}break;case "remove":_n(i);break}}async function ru(i){i.type==="shake"&&await shakeEffect(i.alias,i.props,i.priority);}function su(i){switch(i.type){case "animate":canvas.animate(i.alias,i.keyframes,i.options,i.priority);break;case "animate-sequence":canvas.animate(i.alias,i.sequence,i.options,i.priority);break}}function au(i){switch(i.type){case "input":narration.requestInput({type:i.valueType},i.defaultValue);break;case "dialogue":narration.dialogue=void 0;break}}function ou(i){switch(i.operationType){case "play":i.url?sound.play(i.alias,i.url,i.props):sound.play(i.alias,i.props);break;case "stop":switch(i.type){case "sound":sound.stop(i.alias);break;case "all":sound.stopAll();break}break;case "pause":switch(i.type){case "sound":sound.pause(i.alias);break;case "channel":sound.findChannel(i.alias).pauseAll();break;case "all":sound.pauseAll();break}break;case "resume":switch(i.type){case "sound":sound.resume(i.alias);break;case "channel":sound.findChannel(i.alias).resumeAll();break;case "all":sound.resumeAll();break}break;case "edit":Object.entries(i.props).forEach(([e,t])=>{let n=sound.find(i.alias);n&&(e==="volume"?n.volume.value=t:n.paused=t);});break}}var sa="___param___",Ae=class ${static init(e){e.loadAssets&&($._loadAssets=e.loadAssets),e.soundOperation&&($._soundOperation=e.soundOperation),e.imageOperation&&($._imageOperation=e.imageOperation),e.videoOperation&&($._videoOperation=e.videoOperation),e.imageContainerOperation&&($._imageContainerOperation=e.imageContainerOperation),e.textOperation&&($._textOperation=e.textOperation),e.canvasElementOperation&&($._canvasElementOperation=e.canvasElementOperation),e.setStorageValue&&($._setStorageValue=e.setStorageValue),e.setInitialStorageValue&&($._setInitialStorageValue=e.setInitialStorageValue),e.narrationOperation&&($._narrationOperation=e.narrationOperation),e.effectOperation&&($._effectOperation=e.effectOperation),e.animateOperation&&($._animateOperation=e.animateOperation),e.getLogichValue&&($._getLogichValue=e.getLogichValue),e.getConditionalStep&&($._getConditionalStep=e.getConditionalStep);}static get loadAssets(){return $._loadAssets}static get soundOperation(){return $._soundOperation}static get imageOperation(){return $._imageOperation}static get videoOperation(){return $._videoOperation}static get imageContainerOperation(){return $._imageContainerOperation}static get textOperation(){return $._textOperation}static get canvasElementOperation(){return $._canvasElementOperation}static get setStorageValue(){return $._setStorageValue}static get setInitialStorageValue(){return $._setInitialStorageValue}static get narrationOperation(){return $._narrationOperation}static get effectOperation(){return $._effectOperation}static get animateOperation(){return $._animateOperation}static get getLogichValue(){return $._getLogichValue}static get getConditionalStep(){return $._getConditionalStep}};Fe(Ae,"_loadAssets",()=>{}),Fe(Ae,"_soundOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_imageOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_videoOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_imageContainerOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_textOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_canvasElementOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_setStorageValue",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_setInitialStorageValue",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_narrationOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_effectOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_animateOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_getLogichValue",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_getConditionalStep",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")});var gd=Ae;function Cd(i,e){if(e&&typeof e=="object"&&typeof i.functionName=="string"&&i.functionName in e){let t=e[i.functionName];if(typeof t=="function"){let n=i.args.map(r=>gd.getLogichValue(r,e));return t(...n)}else q.warn(`getLogichValue function ${i.functionName} not found in props`);}}function lu(i,e){let t=_.getLogichValue(i,e);return t&&typeof t=="object"&&"type"in t?_.getLogichValue(t,e):t}function uu(i,e={}){let t=lu(i.value,e);switch(i.storageType){case "flagStorage":storage.setFlag(i.key,i.value);break;case "storage":storage.set(i.key,t);break;case "tempstorage":storage.setTempVariable(i.key,t);break;case "params":{let n=storage.get(`${sa}${narration.openedLabels.length-1}`)||[];n.length>i.key&&(n[i.key]=t),storage.setTempVariable(`${sa}${narration.openedLabels.length-1}`,n);break}}}function hu(i,e={}){let t=lu(i.value,e);switch(i.storageType){case "storage":case "tempstorage":storage.default={[i.key]:t};break}}function aa(i,e={}){let t=oa(i,e);if(t&&typeof t=="object"&&"type"in t)switch(t.type){case "value":return vd(t,e);case "arithmetic":case "arithmeticsingle":return yd(t,e);case "compare":case "union":return Ed(t,e);case "function":return Cd(t,e)}return t}function yd(i,e){let t=_.getLogichValue(i.leftValue,e);switch(i.type){case "arithmetic":{let n=_.getLogichValue(i.rightValue,e);switch(i.operator){case "*":return t*n;case "/":return t/n;case "+":return typeof t=="string"||typeof n=="string"?`${t}${n}`:Array.isArray(t)&&Array.isArray(n)?[...t,...n]:Array.isArray(t)?[...t,n]:Array.isArray(n)?[t,...n]:t+n;case "-":if(Array.isArray(t)&&Array.isArray(n))return t.filter(r=>!n.includes(r));if(Array.isArray(t))return t.filter(r=>r!==n);if(Array.isArray(n)){q.warn("getValueFromArithmeticOperations cannot subtract array from non-array");return}return t-n;case "%":return t%n;case "POW":return t**n;case "RANDOM":return narration.getRandomNumber(t,n);case "INTERSECTION":if(Array.isArray(t)&&Array.isArray(n))return t.filter(r=>n.includes(r));q.warn("getValueFromArithmeticOperations cannot intersect non-array values");return;default:q.warn("getValueFromArithmeticOperations unknown operator",i);return}}case "arithmeticsingle":switch(i.operator){case "INT":return Number(t);case "FLOOR":return Math.floor(t)}break}}function vd(i,e){if(i&&typeof i=="object"&&"type"in i&&i.type==="value"&&i.storageOperationType==="get")switch(i.storageType){case "storage":case "tempstorage":return i.key==="_input_value_"?narration.inputValue:storage.get(i.key);case "flagStorage":return storage.getFlag(i.key);case "label":return narration.getTimesLabelOpened(i.label);case "choice":return narration.getTimesChoiceMade(i.index);case "logic":return _.getLogichValue(i.operation,e);case "params":{let t=storage.get(`${sa}${narration.openedLabels.length-1}`)||[];if(t&&t.length>i.key)return t[i.key];q.warn("getValue params not found");return}}return i}function Ed(i,e){if(!i)return false;if(typeof i!="object"||!("type"in i))return !!i;switch(i.type){case "compare":{let t=_.getLogichValue(i.leftValue,e),n=_.getLogichValue(i.rightValue,e);switch(i.operator){case "==":return Array.isArray(t)&&Array.isArray(n)?t.length===n.length&&t.every(r=>n.includes(r)):t===n;case "!=":return Array.isArray(t)&&Array.isArray(n)?t.length!==n.length||!t.every(r=>n.includes(r)):t!==n;case "<":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)<0:Array.isArray(t)&&Array.isArray(n)?t.length<n.length:t<n;case "<=":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)<=0:Array.isArray(t)&&Array.isArray(n)?t.length<=n.length:t<=n;case ">":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)>0:Array.isArray(t)&&Array.isArray(n)?t.length>n.length:t>n;case ">=":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)>=0:Array.isArray(t)&&Array.isArray(n)?t.length>=n.length:t>=n;case "CONTAINS":return Array.isArray(t)&&Array.isArray(n)?n.every(r=>t.includes(r)):Array.isArray(t)?t.includes(n):t.toString().includes(n.toString())}break}case "value":{let t=_.getLogichValue(i,e);return Array.isArray(t)?t.length>0:t&&typeof t=="object"?Object.keys(t).length>0:!!t}case "union":return Sd(i,e)}return !!i}function Sd(i,e){if(i.unionType==="not"){let n=aa(i.condition,e);return Array.isArray(n)?n.length===0:n&&typeof n=="object"?Object.keys(n).length===0:!n}let t=n=>_.getLogichValue(n,e)||false;return i.unionType==="and"?i.conditions.every(t):i.conditions.some(t)}function Dd(i,e){return Math.floor(Math.random()*(e-i+1)+i)}function oa(i,e={}){if(Array.isArray(i)||!i)return i;if(i&&typeof i=="object"&&"type"in i)switch(i.type){case "resulttocombine":return bd(i,e);case "ifelse":return _.getLogichValue(i.condition,e)?_.getLogichValue(i.then,e):_.getLogichValue(i.else,e);case "stepswitch":{let t=_.getLogichValue(i.elements,e)||[];if(t.length===0){q.error("getValueFromConditionalStatements elements.length === 0");return}switch(i.choiceType){case "random":{let n=Dd(0,t.length-1);return _.getLogichValue(t[n],e)}case "loop":{let n=NarrationManagerStatic.getCurrentStepTimesCounter(i.nestedId)-1;return n>t.length-1?(n=n%t.length,_.getLogichValue(t[n],e)):_.getLogichValue(t[n],e)}case "sequential":{let n,r=NarrationManagerStatic.getCurrentStepTimesCounter(i.nestedId)-1;return i.end==="lastItem"&&(n=_.getLogichValue(t[t.length-1],e)),r>t.length-1?n:_.getLogichValue(t[r],e)}case "sequentialrandom":{let n=NarrationManagerStatic.getRandomNumber(0,t.length-1,{nestedId:i.nestedId,onceOnly:true});if(n===void 0&&i.end==="lastItem"){let r=NarrationManagerStatic.getCurrentStepTimesCounterData(i.nestedId);if(!r?.usedRandomNumbers){q.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}let a=r.usedRandomNumbers[`0-${t.length-1}`];return _.getLogichValue(t[a[a.length-1]],e)}if(n===void 0){q.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}return _.getLogichValue(t[n],e)}}}}return i}function bi(i,e={}){if(i.conditionalStep){let t=createExportableElement(_.getLogichValue(i.conditionalStep,e));if(t?.glueEnabled===void 0&&delete t?.glueEnabled,t?.goNextStep===void 0&&delete t?.goNextStep,t?.end===void 0&&delete t?.end,t?.choices===void 0&&delete t?.choices,t?.dialogue===void 0&&delete t?.dialogue,t?.labelToOpen===void 0&&delete t?.labelToOpen,t?.operations===void 0&&delete t?.operations,t){let n={...i,conditionalStep:void 0,...t};return bi(n,e)}else narration.dialogGlue&&(narration.dialogGlue=false);}return i}function bd(i,e){let t=i.firstItem,n=(i.secondConditionalItem??[]).flatMap(a=>Array.isArray(a)?a.map(s=>_.getLogichValue(s,e)):[_.getLogichValue(a,e)]),r=t?[t,...n]:n;if(r.length===0){q.warn("combinateResult toCheck.length === 0");return}if(typeof r[0]=="string")return be.t(r);if(typeof r[0]=="object"){let a=r,s,o=false,l=a.map((C,p)=>{C=bi(C,e);let S=_.getLogichValue(C.dialogue,e)||"";return p===0?(s=_.getLogichValue(C.glueEnabled,e)||false,S):(typeof S=="object"&&"text"in S&&(S=`${S.character}: ${S.text}`),s===false&&o&&(S=`
|
|
45
|
-
|
|
46
|
-
${S}`),S&&(o=true),s=_.getLogichValue(C.glueEnabled,e)||false,S)}),u=_.getLogichValue(l[0],e),h=typeof u=="object"&&"character"in u?u.character:void 0,c=l.flatMap(C=>{let p;C&&typeof C=="object"&&"text"in C?p=C.text:p=C;let S;return Array.isArray(p)?S=p.map(m=>{let E=_.getLogichValue(m,e);return be.t(`${E}`)}):S=_.getLogichValue(p,e)||"",be.t(S)}),d=a.find(C=>C.end),f=a.find(C=>C.choices),y=false,v=false;a.length>0&&(a[0].glueEnabled&&a[0].goNextStep&&a[0].dialogue===void 0&&(narration.dialogGlue=true),y=a[a.length-1].glueEnabled,v=a.reverse().find(C=>!(C.operations&&(!C.dialogue||!C.choices)))?.goNextStep);let w=a.find(C=>C.labelToOpen),A=[];return a.forEach(C=>{C.operations&&(A=[...A,...C.operations]);}),{dialogue:h?{character:h,text:c}:c,end:d?.end,choices:f?.choices,glueEnabled:y,goNextStep:v,labelToOpen:w?.labelToOpen,operations:A}}}var _d=Object.create,la=Object.defineProperty,Td=Object.getOwnPropertyDescriptor,Od=Object.getOwnPropertyNames,Pd=Object.getPrototypeOf,Fd=Object.prototype.hasOwnProperty,Nd=(i,e,t)=>e in i?la(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,du=(i=>typeof Vt<"u"?Vt:typeof Proxy<"u"?new Proxy(i,{get:(e,t)=>(typeof Vt<"u"?Vt:e)[t]}):i)(function(i){if(typeof Vt<"u")return Vt.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')}),mu=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Id=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Od(e))!Fd.call(i,r)&&r!==t&&la(i,r,{get:()=>e[r],enumerable:!(n=Td(e,r))||n.enumerable});return i},Vd=(i,e,t)=>(t=i!=null?_d(Pd(i)):{},Id(la(t,"default",{value:i,enumerable:true}),i)),pe=(i,e,t)=>Nd(i,typeof e!="symbol"?e+"":e,t),kd=mu((i,e)=>{(function(t,n){typeof i=="object"?e.exports=i=n():typeof define=="function"&&define.amd?define([],n):t.CryptoJS=n();})(i,function(){var t=t||(function(n,r){var a;if(typeof window<"u"&&window.crypto&&(a=window.crypto),typeof self<"u"&&self.crypto&&(a=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(a=globalThis.crypto),!a&&typeof window<"u"&&window.msCrypto&&(a=window.msCrypto),!a&&typeof global<"u"&&global.crypto&&(a=global.crypto),!a&&typeof du=="function")try{a=du("crypto");}catch{}var s=function(){if(a){if(typeof a.getRandomValues=="function")try{return a.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof a.randomBytes=="function")try{return a.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},o=Object.create||(function(){function C(){}return function(p){var S;return C.prototype=p,S=new C,C.prototype=null,S}})(),l={},u=l.lib={},h=u.Base=(function(){return {extend:function(C){var p=o(this);return C&&p.mixIn(C),(!p.hasOwnProperty("init")||this.init===p.init)&&(p.init=function(){p.$super.init.apply(this,arguments);}),p.init.prototype=p,p.$super=this,p},create:function(){var C=this.extend();return C.init.apply(C,arguments),C},init:function(){},mixIn:function(C){for(var p in C)C.hasOwnProperty(p)&&(this[p]=C[p]);C.hasOwnProperty("toString")&&(this.toString=C.toString);},clone:function(){return this.init.prototype.extend(this)}}})(),c=u.WordArray=h.extend({init:function(C,p){C=this.words=C||[],p!=r?this.sigBytes=p:this.sigBytes=C.length*4;},toString:function(C){return (C||f).stringify(this)},concat:function(C){var p=this.words,S=C.words,m=this.sigBytes,E=C.sigBytes;if(this.clamp(),m%4)for(var x=0;x<E;x++){var P=S[x>>>2]>>>24-x%4*8&255;p[m+x>>>2]|=P<<24-(m+x)%4*8;}else for(var N=0;N<E;N+=4)p[m+N>>>2]=S[N>>>2];return this.sigBytes+=E,this},clamp:function(){var C=this.words,p=this.sigBytes;C[p>>>2]&=4294967295<<32-p%4*8,C.length=n.ceil(p/4);},clone:function(){var C=h.clone.call(this);return C.words=this.words.slice(0),C},random:function(C){for(var p=[],S=0;S<C;S+=4)p.push(s());return new c.init(p,C)}}),d=l.enc={},f=d.Hex={stringify:function(C){for(var p=C.words,S=C.sigBytes,m=[],E=0;E<S;E++){var x=p[E>>>2]>>>24-E%4*8&255;m.push((x>>>4).toString(16)),m.push((x&15).toString(16));}return m.join("")},parse:function(C){for(var p=C.length,S=[],m=0;m<p;m+=2)S[m>>>3]|=parseInt(C.substr(m,2),16)<<24-m%8*4;return new c.init(S,p/2)}},y=d.Latin1={stringify:function(C){for(var p=C.words,S=C.sigBytes,m=[],E=0;E<S;E++){var x=p[E>>>2]>>>24-E%4*8&255;m.push(String.fromCharCode(x));}return m.join("")},parse:function(C){for(var p=C.length,S=[],m=0;m<p;m++)S[m>>>2]|=(C.charCodeAt(m)&255)<<24-m%4*8;return new c.init(S,p)}},v=d.Utf8={stringify:function(C){try{return decodeURIComponent(escape(y.stringify(C)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(C){return y.parse(unescape(encodeURIComponent(C)))}},w=u.BufferedBlockAlgorithm=h.extend({reset:function(){this._data=new c.init,this._nDataBytes=0;},_append:function(C){typeof C=="string"&&(C=v.parse(C)),this._data.concat(C),this._nDataBytes+=C.sigBytes;},_process:function(C){var p,S=this._data,m=S.words,E=S.sigBytes,x=this.blockSize,P=x*4,N=E/P;C?N=n.ceil(N):N=n.max((N|0)-this._minBufferSize,0);var ee=N*x,Ee=n.min(ee*4,E);if(ee){for(var Yt=0;Yt<ee;Yt+=x)this._doProcessBlock(m,Yt);p=m.splice(0,ee),S.sigBytes-=Ee;}return new c.init(p,Ee)},clone:function(){var C=h.clone.call(this);return C._data=this._data.clone(),C},_minBufferSize:0});u.Hasher=w.extend({cfg:h.extend(),init:function(C){this.cfg=this.cfg.extend(C),this.reset();},reset:function(){w.reset.call(this),this._doReset();},update:function(C){return this._append(C),this._process(),this},finalize:function(C){C&&this._append(C);var p=this._doFinalize();return p},blockSize:16,_createHelper:function(C){return function(p,S){return new C.init(S).finalize(p)}},_createHmacHelper:function(C){return function(p,S){return new A.HMAC.init(C,S).finalize(p)}}});var A=l.algo={};return l})(Math);return t});}),Rd=mu((i,e)=>{(function(t,n){typeof i=="object"?e.exports=i=n(kd()):typeof define=="function"&&define.amd?define(["./core"],n):n(t.CryptoJS);})(i,function(t){return (function(){var n=t,r=n.lib,a=r.WordArray,s=r.Hasher,o=n.algo,l=[],u=o.SHA1=s.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878,3285377520]);},_doProcessBlock:function(h,c){for(var d=this._hash.words,f=d[0],y=d[1],v=d[2],w=d[3],A=d[4],C=0;C<80;C++){if(C<16)l[C]=h[c+C]|0;else {var p=l[C-3]^l[C-8]^l[C-14]^l[C-16];l[C]=p<<1|p>>>31;}var S=(f<<5|f>>>27)+A+l[C];C<20?S+=(y&v|~y&w)+1518500249:C<40?S+=(y^v^w)+1859775393:C<60?S+=(y&v|y&w|v&w)-1894007588:S+=(y^v^w)-899497514,A=w,w=v,v=y<<30|y>>>2,y=f,f=S;}d[0]=d[0]+f|0,d[1]=d[1]+y|0,d[2]=d[2]+v|0,d[3]=d[3]+w|0,d[4]=d[4]+A|0;},_doFinalize:function(){var h=this._data,c=h.words,d=this._nDataBytes*8,f=h.sigBytes*8;return c[f>>>5]|=128<<24-f%32,c[(f+64>>>9<<4)+14]=Math.floor(d/4294967296),c[(f+64>>>9<<4)+15]=d,h.sigBytes=c.length*4,this._process(),this._hash},clone:function(){var h=s.clone.call(this);return h._hash=this._hash.clone(),h}});n.SHA1=s._createHelper(u),n.HmacSHA1=s._createHmacHelper(u);})(),t.SHA1});}),pu="___param___",re;(i=>(i.log=(e,...t)=>console.log(`[Pixi\u2019VN Json] ${e}`,...t),i.warn=(e,...t)=>console.warn(`[Pixi\u2019VN Json] ${e}`,...t),i.error=(e,...t)=>console.error(`[Pixi\u2019VN Json] ${e}`,...t),i.info=(e,...t)=>console.info(`[Pixi\u2019VN Json] ${e}`,...t)))(re||(re={}));var xe=class J{static init(e){e.loadAssets&&(J._loadAssets=e.loadAssets),e.soundOperation&&(J._soundOperation=e.soundOperation),e.imageOperation&&(J._imageOperation=e.imageOperation),e.videoOperation&&(J._videoOperation=e.videoOperation),e.imageContainerOperation&&(J._imageContainerOperation=e.imageContainerOperation),e.textOperation&&(J._textOperation=e.textOperation),e.canvasElementOperation&&(J._canvasElementOperation=e.canvasElementOperation),e.setStorageValue&&(J._setStorageValue=e.setStorageValue),e.setInitialStorageValue&&(J._setInitialStorageValue=e.setInitialStorageValue),e.narrationOperation&&(J._narrationOperation=e.narrationOperation),e.effectOperation&&(J._effectOperation=e.effectOperation),e.animateOperation&&(J._animateOperation=e.animateOperation),e.getLogichValue&&(J._getLogichValue=e.getLogichValue),e.getConditionalStep&&(J._getConditionalStep=e.getConditionalStep);}static get loadAssets(){return J._loadAssets}static get soundOperation(){return J._soundOperation}static get imageOperation(){return J._imageOperation}static get videoOperation(){return J._videoOperation}static get imageContainerOperation(){return J._imageContainerOperation}static get textOperation(){return J._textOperation}static get canvasElementOperation(){return J._canvasElementOperation}static get setStorageValue(){return J._setStorageValue}static get setInitialStorageValue(){return J._setInitialStorageValue}static get narrationOperation(){return J._narrationOperation}static get effectOperation(){return J._effectOperation}static get animateOperation(){return J._animateOperation}static get getLogichValue(){return J._getLogichValue}static get getConditionalStep(){return J._getConditionalStep}};pe(xe,"_loadAssets",()=>{}),pe(xe,"_soundOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_imageOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_videoOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_imageContainerOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_textOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_canvasElementOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_setStorageValue",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_setInitialStorageValue",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_narrationOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_effectOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_animateOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_getLogichValue",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_getConditionalStep",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")});var Ld=xe;function Bd(i,e){if(e&&typeof e=="object"&&typeof i.functionName=="string"&&i.functionName in e){let t=e[i.functionName];if(typeof t=="function"){let n=i.args.map(r=>Ld.getLogichValue(r,e));return t(...n)}else re.warn(`getLogichValue function ${i.functionName} not found in props`);}}function Wd(i,e={}){let t="";return i.values.forEach(n=>{if(typeof n=="string")t+=n;else {let r=_.getLogichValue(n,e);t+=`${r}`;}}),t}async function gu(i,e,t){let n=_.getLogichValue(i,e);if(n)switch(n.type){case "sound":_.soundOperation(n);break;case "assets":case "bundle":await _.loadAssets(n);break;case "image":await _.imageOperation(n);break;case "video":await _.videoOperation(n);break;case "imagecontainer":await _.imageContainerOperation(n);break;case "text":await _.textOperation(n);break;case "canvaselement":await _.canvasElementOperation(n);break;case "value":_.setStorageValue(n,e);break;case "operationtoconvert":if(t){let r=Wd(n,e),a=await t(r);a&&await gu(a,e,t);}break;case "input":case "dialogue":_.narrationOperation(n);break;case "shake":await _.effectOperation(n);break;case "animate":case "animate-sequence":_.animateOperation(n);break;case "function":await Bd(n,e);break}}function fu(i){let e=_.getLogichValue(i,{});e&&e.type==="value"&&e.storageOperationType==="set"&&(e.storageType==="storage"||e.storageType==="tempstorage")&&_.setInitialStorageValue(e);}var jd=Vd(Rd()),qd=class extends LabelAbstract{constructor(i,e,t,n={}){t||(t={}),t.onLoadingLabel=async()=>{for(let r of e){let a;if(typeof r=="function"?a=r():a=r,a=_.getConditionalStep(a),a.operations)try{let s=a.operations.map(o=>_.loadAssets(o));await Promise.all(s);}catch(s){re.error("The operation in the onLoadingLabel function of the label has an error:",s);}}},super(i,t),pe(this,"_steps"),pe(this,"operationStringConvert"),pe(this,"skipEmptyDialogs",false),this._steps=e,this.operationStringConvert=n.operationStringConvert,this.skipEmptyDialogs=n.skipEmptyDialogs||false;}get steps(){return this._steps.map(i=>this.stepConverter(i))}get stepCount(){return this._steps.length}getStepById(i){if(i<0||i>=this._steps.length)return;let e=this._steps[i];return this.stepConverter(e)}getStepSha(i){if(i<0||i>=this.steps.length)return;let e=this._steps[i];return (0, jd.default)(e.toString().toLocaleLowerCase()).toString()}getDialogueText(i,e){let t="";if(Array.isArray(i)){let n=[];i.forEach(r=>{if(typeof r=="string")n.push(r);else if(r&&typeof r=="object"){let a=_.getLogichValue(r,e);a?(a&&!Array.isArray(a)&&typeof a=="object"&&(a=_.getLogichValue(a,e)||""),Array.isArray(a)?n=n.map(s=>`${s}`).concat(a):n.push(`${a}`)):n.push(`${r}`);}else n.push(`${r}`);}),t=n;}else {let n=_.getLogichValue(i,e);n&&!Array.isArray(n)&&typeof n=="object"&&(n=_.getLogichValue(n,e)),n&&Array.isArray(n)?t=n.map(r=>`${r}`):t=`${n}`;}return t}getDialogue(i,e){if(i==null)return;let t=_.getLogichValue(i,e);return t==null?`${t}`:typeof t=="object"&&"character"in t&&"text"in t?{character:t.character,text:be.t(this.getDialogueText(t.text,e))}:be.t(this.getDialogueText(t,e))}getChoices(i,e){return _.getLogichValue(i,e)?.map(t=>_.getLogichValue(t,e)).filter(t=>t!==void 0)}stepConverter(i){return async e=>{let t=typeof i=="function"?i():i;t=createExportableElement(t),t=_.getConditionalStep(t,e);let n=this.operationStringConvert?d=>this.operationStringConvert(d,t,e):void 0,{operations:r=[]}=t;for(let d of r)await gu(d,e,n);let{labelToOpen:a=[]}=t,s=this.getChoices(t.choices,e),o=_.getLogichValue(t.glueEnabled,e),l=this.getDialogue(t.dialogue,e),u=[];Array.isArray(a)||(a=[a]),a.forEach(d=>{let f=_.getLogichValue(d,e);f&&u.push(f);});let h=_.getLogichValue(t.goNextStep,e),c=_.getLogichValue(t.end,e);if(s){let d=s.map(f=>{let y="";if(Array.isArray(f.text)){let v=[];f.text.forEach(w=>{if(typeof w=="string")v.push(be.t(w));else if(w&&typeof w=="object"){let A=_.getLogichValue(w,e);A&&!Array.isArray(A)&&typeof A=="object"&&(A=_.getLogichValue(A,e)||""),A&&(Array.isArray(A)?v=v.concat(be.t(A)):v.push(be.t(A)));}}),y=v;}else typeof f.text=="string"&&(y=be.t(f.text));return {label:f.label,text:y,props:f.props,type:f.type,oneTime:f.oneTime,onlyHaveNoChoice:f.onlyHaveNoChoice,autoSelect:f.autoSelect}});narration.choices=d;}else narration.choices=void 0;l!==void 0&&(narration.dialogue=l,this.skipEmptyDialogs&&typeof l=="string"&&(l===""||RegExp(/^\s+$/).test(l))&&(h=true)),o?narration.dialogGlue=true:o===false&&(narration.dialogGlue=false);for(let d of u){let f=d.label;typeof f=="object"&&(f=_.getLogichValue(f,e)||"");let y=d.params?.map(v=>_.getLogichValue(v,e));e={...e,...d.props},d.type==="jump"?(narration.openedLabels.length>0&&narration.closeCurrentLabel(),storage.setTempVariable(`${pu}${narration.openedLabels.length}`,y),await narration.call(f,e)):(storage.setTempVariable(`${pu}${narration.openedLabels.length}`,y),await narration.call(f,e));}c==="game_end"?(narration.closeAllLabels(),await narration.continue(e,{runNow:true})):c==="label_end"&&narration.closeCurrentLabel(),h&&await narration.continue(e,{runNow:true});}}};async function Dy(i,e={}){if(!Array.isArray(i))if(typeof i=="object"||typeof i=="string")i=[i];else {re.error("Error parsing imported Pixi'VN JSON: data is not an object");return}let t=i.map(a=>{if(typeof a=="string")try{return JSON.parse(a)}catch(s){return re.error("Error parsing imported Pixi'VN JSON",s),{}}return a}),n=t.map(async a=>{if(a.initialOperations)for(let s of a.initialOperations)s.type==="value"&&(typeof s.value!="object"||!s.value||!("type"in s.value))&&fu(s);return Promise.resolve()});await Promise.all(n);let r=t.map(async a=>{if(a.initialOperations)for(let s of a.initialOperations)(s.type!=="value"||s.type==="value"&&typeof s.value=="object"&&s.value&&"type"in s.value)&&fu(s);if(a.labels){let s=a.labels;for(let o in s)try{let l=s[o],u=new qd(o,l,void 0,e);RegisteredLabels.add(u);}catch(l){re.error(`Error creating JSON label ${o}`,l);}}return Promise.resolve()});await Promise.all(r);}var ua;(i=>{let e=new Set;function t(a){e.add(a);}i.add=t;function n(){e.clear();}i.clear=n;function r(a,s={}){let o=h=>aa(h,s)??void 0,l=oa(a,s);if(e.size===0)return o(l);let u=o;for(let h of e){let c=u;u=d=>h(d,c)??void 0;}return u(l)}i.getLogichValue=r;})(ua||(ua={}));var $d={version:"1.13.3"};var Cu=`https://pixi-vn.web.app/schemas/${$d.version}/schema.json`,yu=["==","!=","<","<=",">",">=","CONTAINS"],ha;(i=>{i.options={replaceRegex:/\[([^\]]+)\]/};let e=[],t=false,n=false;function r(u,h){e.unshift({fn:u,opts:h});let c=h.type??"before-translation";c==="before-translation"&&!t?(be.beforeToTranslate=d=>o(d,{type:"before-translation"}),t=true):c==="after-translation"&&!n&&(be.afterToTranslate=d=>o(d,{type:"after-translation"}),n=true);}i.add=r;function a(u){let h=e.findIndex(c=>c.fn===u);h!==-1&&e.splice(h,1);}i.remove=a;function s(){return e.map(u=>u.opts)}i.info=s;function o(u,h){let c=e.filter(d=>(d.opts.type??"before-translation")===h.type);for(let d of c)u=l(u,d.fn,d.opts.validation);return u}i.replace=o;function l(u,h,c){let d=new RegExp(i.options.replaceRegex.source,"g"),f=[...u.matchAll(d)],y=new Set,v=[];for(let w of f)y.has(w[1])||(y.add(w[1]),v.push(w[1]));for(let w of v){if(c==="characterId"){if(!RegisteredCharacters.has(w))continue}else if(c!=="all"){if(c instanceof RegExp){if(!c.test(w))continue}else if(c instanceof ZodType&&!c.safeParse(w).success)continue}let A=h(w);A!==void 0&&(u=u.replaceAll(`[${w}]`,A));}return u}})(ha||(ha={}));function Fy(){_.init({animateOperation:su,canvasElementOperation:iu,effectOperation:ru,imageContainerOperation:tu,imageOperation:Zl,textOperation:nu,narrationOperation:au,loadAssets:Ql,soundOperation:ou,videoOperation:eu,setStorageValue:uu,setInitialStorageValue:hu,getLogichValue:ua.getLogichValue,getConditionalStep:bi});}var j;(r=>(r.log=(a,...s)=>console.log(`[Pixi\u2019VN Ink] ${a}`,...s),r.warn=(a,...s)=>console.warn(`[Pixi\u2019VN Ink] ${a}`,...s),r.error=(a,...s)=>console.error(`[Pixi\u2019VN Ink] ${a}`,...s),r.info=(a,...s)=>console.info(`[Pixi\u2019VN Ink] ${a}`,...s)))(j||(j={}));var Jd=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,Hd=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,Ud=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,ca={Space_Separator:Jd,ID_Start:Hd,ID_Continue:Ud},ie={isSpaceSeparator(i){return typeof i=="string"&&ca.Space_Separator.test(i)},isIdStartChar(i){return typeof i=="string"&&(i>="a"&&i<="z"||i>="A"&&i<="Z"||i==="$"||i==="_"||ca.ID_Start.test(i))},isIdContinueChar(i){return typeof i=="string"&&(i>="a"&&i<="z"||i>="A"&&i<="Z"||i>="0"&&i<="9"||i==="$"||i==="_"||i==="\u200C"||i==="\u200D"||ca.ID_Continue.test(i))},isDigit(i){return typeof i=="string"&&/[0-9]/.test(i)},isHexDigit(i){return typeof i=="string"&&/[0-9A-Fa-f]/.test(i)}},pa,_e,mt,wi,St,Ye,le,ga,On,zd=function(e,t){pa=String(e),_e="start",mt=[],wi=0,St=1,Ye=0,le=void 0,ga=void 0,On=void 0;do le=Kd(),Qd[_e]();while(le.type!=="eof");return typeof t=="function"?fa({"":On},"",t):On};function fa(i,e,t){let n=i[e];if(n!=null&&typeof n=="object")if(Array.isArray(n))for(let r=0;r<n.length;r++){let a=String(r),s=fa(n,a,t);s===void 0?delete n[a]:Object.defineProperty(n,a,{value:s,writable:true,enumerable:true,configurable:true});}else for(let r in n){let a=fa(n,r,t);a===void 0?delete n[r]:Object.defineProperty(n,r,{value:a,writable:true,enumerable:true,configurable:true});}return t.call(i,e,n)}var k,I,Tn,ft,B;function Kd(){for(k="default",I="",Tn=false,ft=1;;){B=gt();let i=Eu[k]();if(i)return i}}function gt(){if(pa[wi])return String.fromCodePoint(pa.codePointAt(wi))}function D(){let i=gt();return i===`
|
|
47
|
-
`?(St++,Ye=0):i?Ye+=i.length:Ye++,i&&(wi+=i.length),i}var
|
|
48
|
-
`:case "\r":case "\u2028":case "\u2029":
|
|
49
|
-
`:case "\r":case "\u2028":case "\u2029":
|
|
50
|
-
`:case "\r":throw Y(
|
|
51
|
-
`;case "r":return
|
|
52
|
-
`:case "\u2028":case "\u2029":return
|
|
53
|
-
`&&
|
|
41
|
+
`))),this.Expect(this.EndOfLine,"end of line",this.SkipToNextLine),o},this.VariableDeclaration=()=>{if(this.Whitespace(),this.Parse(this.Identifier)!=="VAR")return null;this.Whitespace();let o=this.Expect(this.IdentifierWithMetadata,"variable name");this.Whitespace(),this.Expect(this.String("="),"the '=' for an assignment of a value, e.g. '= 5' (initial values are mandatory)"),this.Whitespace();let u=this.Expect(this.Expression,"initial value for ");return u?(u instanceof xn.NumberExpression||u instanceof mi.StringExpression||u instanceof Ml.DivertTarget||u instanceof $l.VariableReference||u instanceof Dc.List||this.Error("initial value for a variable must be a number, constant, list or divert target"),this.Parse(this.ListElementDefinitionSeparator)!==null?this.Error("Unexpected ','. If you're trying to declare a new list, use the LIST keyword, not VAR"):u instanceof mi.StringExpression&&(u.isSingleString||this.Error("Constant strings cannot contain any logic.")),new Gl.VariableAssignment({assignedExpression:u,isGlobalDeclaration:true,variableIdentifier:o})):null},this.ListDeclaration=()=>{if(this.Whitespace(),this.Parse(this.Identifier)!="LIST")return null;this.Whitespace();let o=this.Expect(this.IdentifierWithMetadata,"list name");this.Whitespace(),this.Expect(this.String("="),"the '=' for an assignment of the list definition"),this.Whitespace();let l=this.Expect(this.ListDefinition,"list item names");return l?(l.identifier=new gi.Identifier(o.name),new Gl.VariableAssignment({variableIdentifier:o,listDef:l})):null},this.ListDefinition=()=>{this.AnyWhitespace();let s=this.SeparatedList(this.ListElementDefinition,this.ListElementDefinitionSeparator);return s===null?null:new PC.ListDefinition(s)},this.ListElementDefinitionSeparator=()=>(this.AnyWhitespace(),this.ParseString(",")===null?null:(this.AnyWhitespace(),",")),this.ListElementDefinition=()=>{let s=this.ParseString("(")!==null,o=s;this.Whitespace();let l=this.Parse(this.IdentifierWithMetadata);if(l===null)return null;this.Whitespace(),s&&this.ParseString(")")!=null&&(o=false,this.Whitespace());let u=null;if(this.ParseString("=")!==null){this.Whitespace();let h=this.Expect(this.ExpressionInt,"value to be assigned to list item");h!==null&&(u=h.value),o&&(this.Whitespace(),this.ParseString(")")!==null&&(o=false));}return o&&this.Error("Expected closing ')'"),new FC.ListElementDefinition(l,s,u)},this.ConstDeclaration=()=>{if(this.Whitespace(),this.Parse(this.Identifier)!=="CONST")return null;this.Whitespace();let o=this.Expect(this.IdentifierWithMetadata,"constant name");this.Whitespace(),this.Expect(this.String("="),"the '=' for an assignment of a value, e.g. '= 5' (initial values are mandatory)"),this.Whitespace();let l=this.Expect(this.Expression,"initial value for ");return l instanceof xn.NumberExpression||l instanceof Ml.DivertTarget||l instanceof mi.StringExpression?l instanceof mi.StringExpression&&(l.isSingleString||this.Error("Constant strings cannot contain any logic.")):this.Error("initial value for a constant must be a number or divert target"),new SC.ConstantDeclaration(o,l)},this.InlineLogicOrGlueOrStartTag=()=>this.OneOf([this.InlineLogic,this.Glue,this.StartTag]),this.Glue=()=>this.ParseString("<>")!==null?new xC.Glue(new _C.Glue):null,this.InlineLogic=()=>{if(this.ParseString("{")===null)return null;let s=this.parsingStringExpression,o=this.tagActive;this.Whitespace();let l=this.Expect(this.InnerLogic,"some kind of logic, conditional or sequence within braces: { ... }");if(l===null)return this.parsingStringExpression=s,null;this.DisallowIncrement(l);let u=(0, It.asOrNull)(l,Be.ContentList);return u||(u=new Be.ContentList(l)),this.Whitespace(),this.Expect(this.String("}"),"closing brace '}' for inline logic"),this.parsingStringExpression=s,o||this.EndTagIfNecessary(u),u},this.InnerLogic=()=>{this.Whitespace();let s=this.ParseObject(this.SequenceTypeAnnotation);if(s!==null){let u=this.Expect(this.InnerSequenceObjects,"sequence elements (for cycle/stoping etc)");return u===null?null:new wc.Sequence(u,s)}let o=this.Parse(this.ConditionExpression);if(o)return this.Expect(()=>this.InnerConditionalContent(o),"conditional content following query");let l=[this.InnerConditionalContent,this.InnerSequence,this.InnerExpression];for(let u of l){let h=this.BeginRule(),c=this.ParseObject(u);if(c)if(this.Peek(this.Spaced(this.String("}")))===null)this.FailRule(h);else return this.SucceedRule(h,c);else this.FailRule(h);}return null},this.InnerExpression=()=>{let s=this.Parse(this.Expression);return s&&(s.outputWhenComplete=true),s},this.IdentifierWithMetadata=()=>{let s=this.Identifier();return s===null?null:new gi.Identifier(s)},this.Identifier=()=>{let s=this.ParseCharactersFromCharSet(this.identifierCharSet);if(s===null)return null;let o=true;for(let l of s)if(!(l>="0"&&l<="9")){o=false;break}return o?null:s},this._sequenceTypeSymbols=new de.CharacterSet("!&~$"),this.InnerSequence=()=>{this.Whitespace();let s=ce.SequenceType.Stopping,o=this.Parse(this.SequenceTypeAnnotation);o!==null&&(s=o);let l=this.Parse(this.InnerSequenceObjects);return l===null||l.length<=1?null:new wc.Sequence(l,s)},this.SequenceTypeAnnotation=()=>{let s=this.Parse(this.SequenceTypeSymbolAnnotation);if(s===null&&(s=this.Parse(this.SequenceTypeWordAnnotation)),s===null)return null;switch(s){case ce.SequenceType.Once:case ce.SequenceType.Cycle:case ce.SequenceType.Stopping:case ce.SequenceType.Shuffle:case ce.SequenceType.Shuffle|ce.SequenceType.Stopping:case ce.SequenceType.Shuffle|ce.SequenceType.Once:break;default:return this.Error(`Sequence type combination not supported: ${s}`),ce.SequenceType.Stopping}return s},this.SequenceTypeSymbolAnnotation=()=>{this._sequenceTypeSymbols===null&&(this._sequenceTypeSymbols=new de.CharacterSet("!&~$ "));let s=0,o=this.ParseCharactersFromCharSet(this._sequenceTypeSymbols);if(o===null)return null;for(let l of o)switch(l){case "!":s|=ce.SequenceType.Once;break;case "&":s|=ce.SequenceType.Cycle;break;case "~":s|=ce.SequenceType.Shuffle;break;case "$":s|=ce.SequenceType.Stopping;break}return s===0?null:s},this.SequenceTypeWordAnnotation=()=>{let s=this.Interleave(this.SequenceTypeSingleWord,this.Exclude(this.Whitespace));if(s===null||s.length===0||this.ParseString(":")===null)return null;let o=0;for(let l of s)o|=l;return o},this.SequenceTypeSingleWord=()=>{let s=null,o=this.Parse(this.IdentifierWithMetadata);if(o!==null)switch(o.name){case "once":s=ce.SequenceType.Once;break;case "cycle":s=ce.SequenceType.Cycle;break;case "shuffle":s=ce.SequenceType.Shuffle;break;case "stopping":s=ce.SequenceType.Stopping;break}return s===null?null:s},this.InnerSequenceObjects=()=>{let s=this.Parse(this.Newline)!==null,o=null;return s?o=this.Parse(this.InnerMultilineSequenceObjects):o=this.Parse(this.InnerInlineSequenceObjects),o},this.InnerInlineSequenceObjects=()=>{let s=this.Interleave(this.Optional(this.MixedTextAndLogic),this.String("|"),null,false);if(s===null)return null;let o=[],l=false;for(let u of s)if(u==="|")l||o.push(new Be.ContentList),l=false;else {let h=u;h===null?this.Error(`Expected content, but got ${u} (this is an ink compiler bug!)`):o.push(new Be.ContentList(h)),l=true;}return l||o.push(new Be.ContentList),o},this.InnerMultilineSequenceObjects=()=>{this.MultilineWhitespace();let s=this.OneOrMore(this.SingleMultilineSequenceElement);return s===null?null:s},this.SingleMultilineSequenceElement=()=>{if(this.Whitespace(),this.ParseString("->")!==null||this.ParseString("-")===null)return null;this.Whitespace();let s=this.StatementsAtLevel(Oe.StatementLevel.InnerBlock);return s===null?this.MultilineWhitespace():s.unshift(new Et.Text(`
|
|
42
|
+
`)),new Be.ContentList(s)},this._statementRulesAtLevel=[],this._statementBreakRulesAtLevel=[],this.StatementsAtLevel=s=>(s===Oe.StatementLevel.InnerBlock&&this.Parse(this.GatherDashes)!==null&&this.Error("You can't use a gather (the dashes) within the { curly braces } context. For multi-line sequences and conditions, you should only use one dash."),this.Interleave(this.Optional(this.MultilineWhitespace),()=>this.StatementAtLevel(s),()=>this.StatementsBreakForLevel(s))),this.StatementAtLevel=s=>{let o=this._statementRulesAtLevel[s],l=this.OneOf(o);return s===Oe.StatementLevel.Top&&l instanceof Ac.ReturnType&&this.Error("should not have return statement outside of a knot"),l},this.StatementsBreakForLevel=s=>{this.Whitespace();let o=this._statementBreakRulesAtLevel[s],l=this.OneOf(o);return l===null?null:l},this.GenerateStatementLevelRules=()=>{let s=Object.values(Oe.StatementLevel);this._statementRulesAtLevel="f".repeat(s.length).split("f").map(()=>[]),this._statementBreakRulesAtLevel="f".repeat(s.length).split("f").map(()=>[]);for(let o of s){let l=[],u=[];l.push(this.Line(this.MultiDivert)),o>=Oe.StatementLevel.Top&&l.push(this.KnotDefinition),l.push(this.Line(this.Choice)),l.push(this.Line(this.AuthorWarning)),o>Oe.StatementLevel.InnerBlock&&l.push(this.Gather),o>=Oe.StatementLevel.Knot&&l.push(this.StitchDefinition),l.push(this.Line(this.ListDeclaration)),l.push(this.Line(this.VariableDeclaration)),l.push(this.Line(this.ConstDeclaration)),l.push(this.Line(this.ExternalDeclaration)),l.push(this.Line(this.IncludeStatement)),l.push(this.LogicLine),l.push(this.LineOfMixedTextAndLogic),o<=Oe.StatementLevel.Knot&&u.push(this.KnotDeclaration),o<=Oe.StatementLevel.Stitch&&u.push(this.StitchDeclaration),o<=Oe.StatementLevel.InnerBlock&&(u.push(this.ParseDashNotArrow),u.push(this.String("}"))),this._statementRulesAtLevel[o]=l,this._statementBreakRulesAtLevel[o]=u;}},this.SkipToNextLine=()=>(this.ParseUntilCharactersFromString(`
|
|
43
|
+
\r`),this.ParseNewline(),vt.ParseSuccess),this.Line=s=>()=>{let o=this.ParseObject(s);return o===null?null:(this.Expect(this.EndOfLine,"end of line",this.SkipToNextLine),o)},this.StartTag=()=>{if(this.Whitespace(),this.ParseString("#")===null)return null;this.parsingStringExpression&&this.Error("Tags aren't allowed inside of strings. Please use \\# if you want a hash symbol.");let s=null;if(this.tagActive){let o=new Be.ContentList;o.AddContent(new wn.Tag(false)),o.AddContent(new wn.Tag(true)),s=o;}else s=new wn.Tag(true);return this.tagActive=true,this.Whitespace(),s},this._inlineWhitespaceChars=new de.CharacterSet(" "),this.EndOfLine=()=>this.OneOf([this.Newline,this.EndOfFile]),this.Newline=()=>(this.Whitespace(),this.ParseNewline()!==null?vt.ParseSuccess:null),this.EndOfFile=()=>(this.Whitespace(),this.endOfInput?vt.ParseSuccess:null),this.MultilineWhitespace=()=>{let s=this.OneOrMore(this.Newline);return s===null?null:s.length>=1?vt.ParseSuccess:null},this.Whitespace=()=>this.ParseCharactersFromCharSet(this._inlineWhitespaceChars)!==null?vt.ParseSuccess:null,this.Spaced=s=>()=>{this.Whitespace();let o=this.ParseObject(s);return o===null?null:(this.Whitespace(),o)},this.AnyWhitespace=()=>{let s=false;for(;this.OneOf([this.Whitespace,this.MultilineWhitespace])!==null;)s=true;return s?vt.ParseSuccess:null},this.MultiSpaced=s=>()=>{this.AnyWhitespace();let o=this.ParseObject(s);return o===null?null:(this.AnyWhitespace(),o)},this._filename=null,this._externalErrorHandler=null,this._fileHandler=null,this._filename=t,this.RegisterExpressionOperators(),this.GenerateStatementLevelRules(),this.errorHandler=this.OnStringParserError,this._externalErrorHandler=n,a===null?this._fileHandler=new RC.DefaultFileHandler:this._fileHandler=a,r===null){if(this._rootParser=this,this._openFilenames=[],this._filename!==null){let s=this.fileHandler.ResolveInkFilename(this._filename);this._openFilenames.push(s);}}else this._rootParser=r;}PreProcessInputString(e){return new vC.CommentEliminator(e).Process()}get parsingStringExpression(){return this.GetFlag(Number(zs.CustomFlags.ParsingString))}set parsingStringExpression(e){this.SetFlag(Number(zs.CustomFlags.ParsingString),e);}get tagActive(){return this.GetFlag(Number(zs.CustomFlags.TagActive))}set tagActive(e){this.SetFlag(Number(zs.CustomFlags.TagActive),e);}get identifierCharSet(){return this._identifierCharSet===null&&((this._identifierCharSet=new de.CharacterSet).AddRange("A","Z").AddRange("a","z").AddRange("0","9").Add("_"),this.ExtendIdentifierCharacterRanges(this._identifierCharSet)),this._identifierCharSet}EndTagIfNecessary(e){this.tagActive&&(e!=null&&(e instanceof Be.ContentList?e.AddContent(new wn.Tag(false)):e.push(new wn.Tag(false))),this.tagActive=false);}};Ys.InkParser=K;K.LatinBasic=Ze.CharacterRange.Define("A","z",new de.CharacterSet().AddRange("[","`"));K.LatinExtendedA=Ze.CharacterRange.Define("\u0100","\u017F");K.LatinExtendedB=Ze.CharacterRange.Define("\u0180","\u024F");K.Greek=Ze.CharacterRange.Define("\u0370","\u03FF",new de.CharacterSet().AddRange("\u0378","\u0385").AddCharacters("\u0374\u0375\u0378\u0387\u038B\u038D\u03A2"));K.Cyrillic=Ze.CharacterRange.Define("\u0400","\u04FF",new de.CharacterSet().AddRange("\u0482","\u0489"));K.Armenian=Ze.CharacterRange.Define("\u0530","\u058F",new de.CharacterSet().AddCharacters("\u0530").AddRange("\u0557","\u0560").AddRange("\u0588","\u058E"));K.Hebrew=Ze.CharacterRange.Define("\u0590","\u05FF",new de.CharacterSet);K.Arabic=Ze.CharacterRange.Define("\u0600","\u06FF",new de.CharacterSet);K.Korean=Ze.CharacterRange.Define("\uAC00","\uD7AF",new de.CharacterSet);K.Latin1Supplement=Ze.CharacterRange.Define("\x80","\xFF",new de.CharacterSet);K.Chinese=Ze.CharacterRange.Define("\u4E00","\u9FFF",new de.CharacterSet);K.ListAllCharacterRanges=()=>[K.LatinBasic,K.LatinExtendedA,K.LatinExtendedB,K.Arabic,K.Armenian,K.Cyrillic,K.Greek,K.Hebrew,K.Korean,K.Latin1Supplement,K.Chinese];});var Oc=A(Qs=>{Object.defineProperty(Qs,"__esModule",{value:true});Qs.GenerateStoryStats=void 0;var LC=dn(),BC=gn(),WC=Kn(),jC=ll(),qC=fl(),MC=Tt();function GC(i){let e=i.FindAll(MC.Text)(),t=0;for(let l of e){let u=0,h=true;for(let c of l.text)c==" "||c==" "||c==`
|
|
44
|
+
`||c=="\r"?h=true:h&&(u++,h=false);t+=u;}let n=i.FindAll(jC.Knot)(),r=i.FindAll(qC.Stitch)(),a=i.FindAll(LC.Choice)(),s=i.FindAll(WC.Gather)(l=>l.debugMetadata!=null),o=i.FindAll(BC.Divert)();return {words:t,knots:n.length,functions:n.filter(l=>l.isFunction).length,stitches:r.length,gathers:s.length,diverts:o.length-1,choices:a.length}}Qs.GenerateStoryStats=GC;});var Pc=A(Zs=>{Object.defineProperty(Zs,"__esModule",{value:true});Zs.JsonFileHandler=void 0;var Hl=class{constructor(e){this.fileHierarchy=e,this.ResolveInkFilename=t=>{if(Object.keys(this.fileHierarchy).includes(t))return t;throw new Error(`Cannot locate ${t}. Are you trying a relative import ? This is not yet implemented.`)},this.LoadInkFileContents=t=>{if(Object.keys(this.fileHierarchy).includes(t))return this.fileHierarchy[t];throw new Error(`Cannot open ${t}.`)};}};Zs.JsonFileHandler=Hl;});var Nc=A(ve=>{Object.defineProperty(ve,"__esModule",{value:true});ve.Compiler=ve.Story=ve.InkList=ve.JsonFileHandler=ve.StatementLevel=ve.InkParser=ve.CompilerOptions=void 0;var $C=Oa(),JC=ju(),Ul=tn(),HC=Jl(),UC=te(),zC=U(),KC=Oc(),XC=Oa();Object.defineProperty(ve,"CompilerOptions",{enumerable:true,get:function(){return XC.CompilerOptions}});var YC=Jl();Object.defineProperty(ve,"InkParser",{enumerable:true,get:function(){return YC.InkParser}});var QC=dl();Object.defineProperty(ve,"StatementLevel",{enumerable:true,get:function(){return QC.StatementLevel}});var ZC=Pc();Object.defineProperty(ve,"JsonFileHandler",{enumerable:true,get:function(){return ZC.JsonFileHandler}});var Fc=si();Object.defineProperty(ve,"InkList",{enumerable:true,get:function(){return Fc.InkList}});Object.defineProperty(ve,"Story",{enumerable:true,get:function(){return Fc.Story}});var zl=class{get errors(){return this._errors}get warnings(){return this._warnings}get authorMessages(){return this._authorMessages}get inputString(){return this._inputString}get options(){return this._options}get parsedStory(){if(!this._parsedStory)throw new Error;return this._parsedStory}get runtimeStory(){if(!this._runtimeStory)throw new Error("Compilation failed.");return this._runtimeStory}get parser(){if(!this._parser)throw new Error;return this._parser}get debugSourceRanges(){return this._debugSourceRanges}constructor(e,t=null){this._errors=[],this._warnings=[],this._authorMessages=[],this._parsedStory=null,this._runtimeStory=null,this._parser=null,this._debugSourceRanges=[],this.Compile=()=>(this._parser=new HC.InkParser(this.inputString,this.options.sourceFilename||null,this.OnError,null,this.options.fileHandler),this._parsedStory=this.parser.ParseStory(),this.errors.length===0?(this.parsedStory.countAllVisits=this.options.countAllVisits,this._runtimeStory=this.parsedStory.ExportRuntime(this.OnError)):this._runtimeStory=null,this.runtimeStory),this.RetrieveDebugSourceForLatestContent=()=>{var n;for(let r of this.runtimeStory.state.outputStream){let a=(0, zC.asOrNull)(r,UC.StringValue);if(a!==null){let s=new JC.DebugSourceRange(((n=a.value)===null||n===void 0?void 0:n.length)||0,a.debugMetadata,a.value||"unknown");this.debugSourceRanges.push(s);}}},this.GenerateStats=()=>this._parsedStory===null?null:(0, KC.GenerateStoryStats)(this._parsedStory),this.DebugMetadataForContentAtOffset=n=>{let r=0,a=null;for(let s of this.debugSourceRanges){if(s.debugMetadata!==null&&(a=s.debugMetadata),n>=r&&n<r+s.length)return a;r+=s.length;}return null},this.OnError=(n,r)=>{switch(r){case Ul.ErrorType.Author:this._authorMessages.push(n);break;case Ul.ErrorType.Warning:this._warnings.push(n);break;case Ul.ErrorType.Error:this._errors.push(n);break}this.options.errorHandler!==null&&this.options.errorHandler(n,r);},this._inputString=e,this._options=t||new $C.CompilerOptions;}};ve.Compiler=zl;});var $c=Object.defineProperty,Jc=(i,e,t)=>e in i?$c(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,Pe=(i,e,t)=>Jc(i,typeof e!="symbol"?e+"":e,t),De;(i=>(i.log=(e,...t)=>console.log(`[Pixi\u2019VN Json] ${e}`,...t),i.warn=(e,...t)=>console.warn(`[Pixi\u2019VN Json] ${e}`,...t),i.error=(e,...t)=>console.error(`[Pixi\u2019VN Json] ${e}`,...t),i.info=(e,...t)=>console.info(`[Pixi\u2019VN Json] ${e}`,...t)))(De||(De={}));var Se=class G{static init(e){e.loadAssets&&(G._loadAssets=e.loadAssets),e.soundOperation&&(G._soundOperation=e.soundOperation),e.imageOperation&&(G._imageOperation=e.imageOperation),e.videoOperation&&(G._videoOperation=e.videoOperation),e.imageContainerOperation&&(G._imageContainerOperation=e.imageContainerOperation),e.textOperation&&(G._textOperation=e.textOperation),e.canvasElementOperation&&(G._canvasElementOperation=e.canvasElementOperation),e.setStorageValue&&(G._setStorageValue=e.setStorageValue),e.setInitialStorageValue&&(G._setInitialStorageValue=e.setInitialStorageValue),e.narrationOperation&&(G._narrationOperation=e.narrationOperation),e.effectOperation&&(G._effectOperation=e.effectOperation),e.animateOperation&&(G._animateOperation=e.animateOperation),e.getLogichValue&&(G._getLogichValue=e.getLogichValue),e.getConditionalStep&&(G._getConditionalStep=e.getConditionalStep);}static get loadAssets(){return G._loadAssets}static get soundOperation(){return G._soundOperation}static get imageOperation(){return G._imageOperation}static get videoOperation(){return G._videoOperation}static get imageContainerOperation(){return G._imageContainerOperation}static get textOperation(){return G._textOperation}static get canvasElementOperation(){return G._canvasElementOperation}static get setStorageValue(){return G._setStorageValue}static get setInitialStorageValue(){return G._setInitialStorageValue}static get narrationOperation(){return G._narrationOperation}static get effectOperation(){return G._effectOperation}static get animateOperation(){return G._animateOperation}static get getLogichValue(){return G._getLogichValue}static get getConditionalStep(){return G._getConditionalStep}};Pe(Se,"_loadAssets",()=>{}),Pe(Se,"_soundOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_imageOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_videoOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_imageContainerOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_textOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_canvasElementOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_setStorageValue",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_setInitialStorageValue",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_narrationOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_effectOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_animateOperation",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_getLogichValue",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Pe(Se,"_getConditionalStep",()=>{throw De.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")});var _=Se;var Hc=Object.defineProperty,Uc=(i,e,t)=>e in i?Hc(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,ra=(i,e,t)=>Uc(i,typeof e!="symbol"?e+"":e,t);function zc(i,e={}){let t="";return i.values.forEach(n=>{if(typeof n=="string")t+=n;else {let r=_.getLogichValue(n,e);t+=`${r}`;}}),t}var vi=class V{static t(e){return Array.isArray(e)?e.map(t=>V.translate(`${t}`)):V.translate(`${e}`)}static set beforeToTranslate(e){V._beforeToTranslate=e;}static set translate(e){V._translate=e;}static get translate(){return e=>{let t=e;return V._beforeToTranslate&&(t=V._beforeToTranslate(t)),t=V._translate(t),V._afterToTranslate&&(t=V._afterToTranslate(t)),t}}static set afterToTranslate(e){V._afterToTranslate=e;}static addKey(e,t,n){let r=n.defaultValue||"empty_string";typeof t=="string"&&(t=[t]),Array.isArray(t)&&t.forEach(a=>{e[a]===void 0&&(r==="empty_string"?e[a]="":r==="copy_key"&&(V._beforeToTranslate?e[a]=V._beforeToTranslate(a):e[a]=a));});}static getConditionalsThenElse(e,t=[]){if(typeof e=="object"&&e&&"type"in e)if(e.type==="ifelse")e.then&&V.getConditionalsThenElse(e.then,t),e.else&&V.getConditionalsThenElse(e.else,t);else if(e.type==="stepswitch"){if(e.elements)if(Array.isArray(e.elements))e.elements.forEach(n=>{V.getConditionalsThenElse(n,t);});else if(e.elements.type==="ifelse"){let n=[];V.getConditionalsThenElse(e.elements,n),n.forEach(r=>{t.push(...r);});}else if(e.elements.type==="stepswitch"){let n=[];V.getConditionalsThenElse(e.elements,n),n.forEach(r=>{t.push(...r);});}else V.getConditionalsThenElse(e.elements,t);}else e.type==="resulttocombine"?(e.firstItem&&V.getConditionalsThenElse(e.firstItem,t),e.secondConditionalItem&&e.secondConditionalItem.forEach(n=>{V.getConditionalsThenElse(n,t);})):t.push(e);else e&&t.push(e);return t}static async generateJsonTranslation(e,t={},n={}){let{defaultValue:r="copy_key",operationStringConvert:a}=n,s=e.map(async o=>{if(o.choices){let l=[];Array.isArray(o.choices)?l=[o.choices]:l=V.getConditionalsThenElse(o.choices),l.forEach(u=>u.forEach(h=>{if("type"in h){let c=[];h.type==="ifelse"||h.type==="stepswitch"?V.getConditionalsThenElse(h,c):c=[h],c.map(d=>V.getConditionalsThenElse(d.text)).forEach(d=>{Array.isArray(d)&&d.forEach(f=>{Array.isArray(f)?f.forEach(y=>{typeof y=="string"?V.addKey(t,y,{defaultValue:r}):V.getConditionalsThenElse(y).forEach(v=>{Array.isArray(v)?v.forEach(w=>{typeof w=="string"&&V.addKey(t,w,{defaultValue:r});}):typeof v=="string"&&V.addKey(t,v,{defaultValue:r});});}):typeof f=="string"&&V.addKey(t,f,{defaultValue:r});});});}}));}if(o.dialogue){let l=[];Array.isArray(o.dialogue)?l=[o.dialogue]:l=V.getConditionalsThenElse(o.dialogue),l.forEach(u=>{if(typeof u=="string")V.addKey(t,u,{defaultValue:r});else if("text"in u){let h=V.getConditionalsThenElse(u.text);typeof h=="string"&&(h=[h]),h.forEach(c=>{typeof c=="string"?V.addKey(t,c,{defaultValue:r}):V.getConditionalsThenElse(c).forEach(d=>{typeof d=="string"?V.addKey(t,d,{defaultValue:r}):Array.isArray(d)&&d.forEach(f=>{typeof f=="string"?V.addKey(t,f,{defaultValue:r}):V.getConditionalsThenElse(f).forEach(y=>{typeof y=="string"&&V.addKey(t,y,{defaultValue:r});});});});});}});}if(o.operations)for(let l of o.operations){if(l.type==="operationtoconvert"&&a){let u=zc(l),h=await a(u,o,{});if(!h)return;l=h;}l.type==="text"&&l.operationType==="show"&&V.addKey(t,l.text,{defaultValue:r});}o.conditionalStep&&V.getConditionalsThenElse(o.conditionalStep).forEach(l=>{Array.isArray(l)?V.generateJsonTranslation(l,t,n):V.generateJsonTranslation([l],t,n);});});return await Promise.all(s),t}};ra(vi,"_beforeToTranslate"),ra(vi,"_translate",i=>i),ra(vi,"_afterToTranslate");var Kc=vi,be=Kc;var gd=Object.defineProperty,Cd=(i,e,t)=>e in i?gd(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,Fe=(i,e,t)=>Cd(i,typeof e!="symbol"?e+"":e,t);async function Ql(i){let e=_.getLogichValue(i,{});if(e)switch(e.type){case "assets":switch(e.operationType){case "load":await Assets.load(e.aliases);break;case "lazyload":Assets.backgroundLoad(e.aliases);break}break;case "bundle":switch(e.operationType){case "load":await Assets.loadBundle(e.aliases);break;case "lazyload":Assets.backgroundLoadBundle(e.aliases);break}break}}var q;(i=>(i.log=(e,...t)=>console.log(`[Pixi\u2019VN Json] ${e}`,...t),i.warn=(e,...t)=>console.warn(`[Pixi\u2019VN Json] ${e}`,...t),i.error=(e,...t)=>console.error(`[Pixi\u2019VN Json] ${e}`,...t),i.info=(e,...t)=>console.info(`[Pixi\u2019VN Json] ${e}`,...t)))(q||(q={}));async function Di(i,e,t){switch(t.type){case "fade":await showWithFade(e.alias,i,t.props,t.priority);break;case "dissolve":await showWithDissolve(e.alias,i,t.props,t.priority);break;case "movein":case "moveout":await moveIn(e.alias,i,t.props,t.priority);break;case "zoomin":case "zoomout":await zoomIn(e.alias,i,t.props,t.priority);break;case "pushin":case "pushout":await pushIn(e.alias,i,t.props,t.priority);break}}function _n(i){if(i.transition)switch(i.transition.type){case "fade":removeWithFade(i.alias,i.transition.props,i.transition.priority);break;case "dissolve":removeWithDissolve(i.alias,i.transition.props,i.transition.priority);break;case "movein":case "moveout":moveOut(i.alias,i.transition.props,i.transition.priority);break;case "zoomin":case "zoomout":zoomOut(i.alias,i.transition.props,i.transition.priority);break;case "pushin":case "pushout":pushOut(i.alias,i.transition.props,i.transition.priority);break}else canvas.remove(i.alias);}async function Zl(i){switch(i.operationType){case "show":if(i.transition){let e=new ImageSprite(i.props,i.url||i.alias);await Di(e,i,i.transition);}else await showImage(i.alias,i.url,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`Image with alias ${i.alias} not found.`);break}case "remove":_n(i);break}}async function eu(i){switch(i.operationType){case "show":if(i.transition){let e=new VideoSprite(i.props,i.url||i.alias);await Di(e,i,i.transition);}else await showVideo(i.alias,i.url,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`Video with alias ${i.alias} not found.`);break}case "remove":_n(i);break;case "pause":case "resume":{let e=canvas.find(i.alias);e?e.paused=i.operationType==="pause":q.error(`Video with alias ${i.alias} not found.`);break}}}async function tu(i){switch(i.operationType){case "show":if(i.transition){let e=new ImageContainer(i.props,i.urls);await Di(e,i,i.transition);}else await showImageContainer(i.alias,i.urls,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`ImageContainer with alias ${i.alias} not found.`);break}case "remove":_n(i);break}}async function nu(i){switch(i.operationType){case "show":if(i.props=i.props||{},i.props.text=be.t(i.text),i.transition){let e=new Text(i.props);await Di(e,i,i.transition);}else showText(i.alias,i.text,i.props);break;case "edit":{let e=canvas.find(i.alias);e?i.props&&await e.setMemory({...e.memory,...i.props}):q.error(`Text with alias ${i.alias} not found.`);break}case "remove":_n(i);break}}async function iu(i){switch(i.operationType){case "edit":try{let e=canvas.find(i.alias);e?i.props&&e.setMemory({...e.memory,...i.props}):q.error(`Canvas Element with alias ${i.alias} not found.`);}catch(e){q.error(`There was an error while trying to edit the canvas element with alias ${i.alias}.`,e);}break;case "remove":_n(i);break}}async function ru(i){i.type==="shake"&&await shakeEffect(i.alias,i.props,i.priority);}function su(i){switch(i.type){case "animate":canvas.animate(i.alias,i.keyframes,i.options,i.priority);break;case "animate-sequence":canvas.animate(i.alias,i.sequence,i.options,i.priority);break}}function au(i){switch(i.type){case "input":narration.requestInput({type:i.valueType},i.defaultValue);break;case "dialogue":narration.dialogue=void 0;break}}function ou(i){switch(i.operationType){case "play":i.url?sound.play(i.alias,i.url,i.props):sound.play(i.alias,i.props);break;case "stop":switch(i.type){case "sound":sound.stop(i.alias);break;case "all":sound.stopAll();break}break;case "pause":switch(i.type){case "sound":sound.pause(i.alias);break;case "channel":sound.findChannel(i.alias).pauseAll();break;case "all":sound.pauseAll();break}break;case "resume":switch(i.type){case "sound":sound.resume(i.alias);break;case "channel":sound.findChannel(i.alias).resumeAll();break;case "all":sound.resumeAll();break}break;case "edit":Object.entries(i.props).forEach(([e,t])=>{let n=sound.find(i.alias);n&&(e==="volume"?n.volume.value=t:n.paused=t);});break}}var sa="___param___",Ae=class ${static init(e){e.loadAssets&&($._loadAssets=e.loadAssets),e.soundOperation&&($._soundOperation=e.soundOperation),e.imageOperation&&($._imageOperation=e.imageOperation),e.videoOperation&&($._videoOperation=e.videoOperation),e.imageContainerOperation&&($._imageContainerOperation=e.imageContainerOperation),e.textOperation&&($._textOperation=e.textOperation),e.canvasElementOperation&&($._canvasElementOperation=e.canvasElementOperation),e.setStorageValue&&($._setStorageValue=e.setStorageValue),e.setInitialStorageValue&&($._setInitialStorageValue=e.setInitialStorageValue),e.narrationOperation&&($._narrationOperation=e.narrationOperation),e.effectOperation&&($._effectOperation=e.effectOperation),e.animateOperation&&($._animateOperation=e.animateOperation),e.getLogichValue&&($._getLogichValue=e.getLogichValue),e.getConditionalStep&&($._getConditionalStep=e.getConditionalStep);}static get loadAssets(){return $._loadAssets}static get soundOperation(){return $._soundOperation}static get imageOperation(){return $._imageOperation}static get videoOperation(){return $._videoOperation}static get imageContainerOperation(){return $._imageContainerOperation}static get textOperation(){return $._textOperation}static get canvasElementOperation(){return $._canvasElementOperation}static get setStorageValue(){return $._setStorageValue}static get setInitialStorageValue(){return $._setInitialStorageValue}static get narrationOperation(){return $._narrationOperation}static get effectOperation(){return $._effectOperation}static get animateOperation(){return $._animateOperation}static get getLogichValue(){return $._getLogichValue}static get getConditionalStep(){return $._getConditionalStep}};Fe(Ae,"_loadAssets",()=>{}),Fe(Ae,"_soundOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_imageOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_videoOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_imageContainerOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_textOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_canvasElementOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_setStorageValue",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_setInitialStorageValue",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_narrationOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_effectOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_animateOperation",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_getLogichValue",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),Fe(Ae,"_getConditionalStep",()=>{throw q.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")});var yd=Ae;function vd(i,e){if(e&&typeof e=="object"&&typeof i.functionName=="string"&&i.functionName in e){let t=e[i.functionName];if(typeof t=="function"){let n=i.args.map(r=>yd.getLogichValue(r,e));return t(...n)}else q.warn(`getLogichValue function ${i.functionName} not found in props`);}}function lu(i,e){let t=_.getLogichValue(i,e);return t&&typeof t=="object"&&"type"in t?_.getLogichValue(t,e):t}function uu(i,e={}){let t=lu(i.value,e);switch(i.storageType){case "flagStorage":storage.setFlag(i.key,i.value);break;case "storage":storage.set(i.key,t);break;case "tempstorage":storage.setTempVariable(i.key,t);break;case "params":{let n=storage.get(`${sa}${narration.openedLabels.length-1}`)||[];n.length>i.key&&(n[i.key]=t),storage.setTempVariable(`${sa}${narration.openedLabels.length-1}`,n);break}}}function hu(i,e={}){let t=lu(i.value,e);switch(i.storageType){case "storage":case "tempstorage":storage.default={[i.key]:t};break}}function aa(i,e={}){let t=oa(i,e);if(t&&typeof t=="object"&&"type"in t)switch(t.type){case "value":return Sd(t,e);case "arithmetic":case "arithmeticsingle":return Ed(t,e);case "compare":case "union":return Dd(t,e);case "function":return vd(t,e)}return t}function Ed(i,e){let t=_.getLogichValue(i.leftValue,e);switch(i.type){case "arithmetic":{let n=_.getLogichValue(i.rightValue,e);switch(i.operator){case "*":return t*n;case "/":return t/n;case "+":return typeof t=="string"||typeof n=="string"?`${t}${n}`:Array.isArray(t)&&Array.isArray(n)?[...t,...n]:Array.isArray(t)?[...t,n]:Array.isArray(n)?[t,...n]:t+n;case "-":if(Array.isArray(t)&&Array.isArray(n))return t.filter(r=>!n.includes(r));if(Array.isArray(t))return t.filter(r=>r!==n);if(Array.isArray(n)){q.warn("getValueFromArithmeticOperations cannot subtract array from non-array");return}return t-n;case "%":return t%n;case "POW":return t**n;case "RANDOM":return narration.getRandomNumber(t,n);case "INTERSECTION":if(Array.isArray(t)&&Array.isArray(n))return t.filter(r=>n.includes(r));q.warn("getValueFromArithmeticOperations cannot intersect non-array values");return;default:q.warn("getValueFromArithmeticOperations unknown operator",i);return}}case "arithmeticsingle":switch(i.operator){case "INT":return Number(t);case "FLOOR":return Math.floor(t)}break}}function Sd(i,e){if(i&&typeof i=="object"&&"type"in i&&i.type==="value"&&i.storageOperationType==="get")switch(i.storageType){case "storage":case "tempstorage":return i.key==="_input_value_"?narration.inputValue:storage.get(i.key);case "flagStorage":return storage.getFlag(i.key);case "label":return narration.getTimesLabelOpened(i.label);case "choice":return narration.getTimesChoiceMade(i.index);case "logic":return _.getLogichValue(i.operation,e);case "params":{let t=storage.get(`${sa}${narration.openedLabels.length-1}`)||[];if(t&&t.length>i.key)return t[i.key];q.warn("getValue params not found");return}}return i}function Dd(i,e){if(!i)return false;if(typeof i!="object"||!("type"in i))return !!i;switch(i.type){case "compare":{let t=_.getLogichValue(i.leftValue,e),n=_.getLogichValue(i.rightValue,e);switch(i.operator){case "==":return Array.isArray(t)&&Array.isArray(n)?t.length===n.length&&t.every(r=>n.includes(r)):t===n;case "!=":return Array.isArray(t)&&Array.isArray(n)?t.length!==n.length||!t.every(r=>n.includes(r)):t!==n;case "<":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)<0:Array.isArray(t)&&Array.isArray(n)?t.length<n.length:t<n;case "<=":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)<=0:Array.isArray(t)&&Array.isArray(n)?t.length<=n.length:t<=n;case ">":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)>0:Array.isArray(t)&&Array.isArray(n)?t.length>n.length:t>n;case ">=":return typeof t=="string"&&typeof n=="string"?t.localeCompare(n)>=0:Array.isArray(t)&&Array.isArray(n)?t.length>=n.length:t>=n;case "CONTAINS":return Array.isArray(t)&&Array.isArray(n)?n.every(r=>t.includes(r)):Array.isArray(t)?t.includes(n):t.toString().includes(n.toString())}break}case "value":{let t=_.getLogichValue(i,e);return Array.isArray(t)?t.length>0:t&&typeof t=="object"?Object.keys(t).length>0:!!t}case "union":return bd(i,e)}return !!i}function bd(i,e){if(i.unionType==="not"){let n=aa(i.condition,e);return Array.isArray(n)?n.length===0:n&&typeof n=="object"?Object.keys(n).length===0:!n}let t=n=>_.getLogichValue(n,e)||false;return i.unionType==="and"?i.conditions.every(t):i.conditions.some(t)}function Ad(i,e){return Math.floor(Math.random()*(e-i+1)+i)}function oa(i,e={}){if(Array.isArray(i)||!i)return i;if(i&&typeof i=="object"&&"type"in i)switch(i.type){case "resulttocombine":return wd(i,e);case "ifelse":return _.getLogichValue(i.condition,e)?_.getLogichValue(i.then,e):_.getLogichValue(i.else,e);case "stepswitch":{let t=_.getLogichValue(i.elements,e)||[];if(t.length===0){q.error("getValueFromConditionalStatements elements.length === 0");return}switch(i.choiceType){case "random":{let n=Ad(0,t.length-1);return _.getLogichValue(t[n],e)}case "loop":{let n=NarrationManagerStatic.getCurrentStepTimesCounter(i.nestedId)-1;return n>t.length-1?(n=n%t.length,_.getLogichValue(t[n],e)):_.getLogichValue(t[n],e)}case "sequential":{let n,r=NarrationManagerStatic.getCurrentStepTimesCounter(i.nestedId)-1;return i.end==="lastItem"&&(n=_.getLogichValue(t[t.length-1],e)),r>t.length-1?n:_.getLogichValue(t[r],e)}case "sequentialrandom":{let n=NarrationManagerStatic.getRandomNumber(0,t.length-1,{nestedId:i.nestedId,onceOnly:true});if(n===void 0&&i.end==="lastItem"){let r=NarrationManagerStatic.getCurrentStepTimesCounterData(i.nestedId);if(!r?.usedRandomNumbers){q.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}let a=r.usedRandomNumbers[`0-${t.length-1}`];return _.getLogichValue(t[a[a.length-1]],e)}if(n===void 0){q.warn("getValueFromConditionalStatements randomIndexWhitExclude == undefined");return}return _.getLogichValue(t[n],e)}}}}return i}function bi(i,e={}){if(i.conditionalStep){let t=createExportableElement(_.getLogichValue(i.conditionalStep,e));if(t?.glueEnabled===void 0&&delete t?.glueEnabled,t?.goNextStep===void 0&&delete t?.goNextStep,t?.end===void 0&&delete t?.end,t?.choices===void 0&&delete t?.choices,t?.dialogue===void 0&&delete t?.dialogue,t?.labelToOpen===void 0&&delete t?.labelToOpen,t?.operations===void 0&&delete t?.operations,t){let n={...i,conditionalStep:void 0,...t};return bi(n,e)}else narration.dialogGlue&&(narration.dialogGlue=false);}return i}function wd(i,e){let t=i.firstItem,n=(i.secondConditionalItem??[]).flatMap(a=>Array.isArray(a)?a.map(s=>_.getLogichValue(s,e)):[_.getLogichValue(a,e)]),r=t?[t,...n]:n;if(r.length===0){q.warn("combinateResult toCheck.length === 0");return}if(typeof r[0]=="string")return be.t(r);if(typeof r[0]=="object"){let a=r,s,o=false,l=a.map((C,p)=>{C=bi(C,e);let S=_.getLogichValue(C.dialogue,e)||"";return p===0?(s=_.getLogichValue(C.glueEnabled,e)||false,S):(typeof S=="object"&&"text"in S&&(S=`${S.character}: ${S.text}`),s===false&&o&&(S=`
|
|
45
|
+
|
|
46
|
+
${S}`),S&&(o=true),s=_.getLogichValue(C.glueEnabled,e)||false,S)}),u=_.getLogichValue(l[0],e),h=typeof u=="object"&&"character"in u?u.character:void 0,c=l.flatMap(C=>{let p;C&&typeof C=="object"&&"text"in C?p=C.text:p=C;let S;return Array.isArray(p)?S=p.map(m=>{let E=_.getLogichValue(m,e);return be.t(`${E}`)}):S=_.getLogichValue(p,e)||"",be.t(S)}),d=a.find(C=>C.end),f=a.find(C=>C.choices),y=false,v=false;a.length>0&&(a[0].glueEnabled&&a[0].goNextStep&&a[0].dialogue===void 0&&(narration.dialogGlue=true),y=a[a.length-1].glueEnabled,v=a.reverse().find(C=>!(C.operations&&(!C.dialogue||!C.choices)))?.goNextStep);let w=a.find(C=>C.labelToOpen),D=[];return a.forEach(C=>{C.operations&&(D=[...D,...C.operations]);}),{dialogue:h?{character:h,text:c}:c,end:d?.end,choices:f?.choices,glueEnabled:y,goNextStep:v,labelToOpen:w?.labelToOpen,operations:D}}}var Od=Object.create,la=Object.defineProperty,Pd=Object.getOwnPropertyDescriptor,Fd=Object.getOwnPropertyNames,Nd=Object.getPrototypeOf,Id=Object.prototype.hasOwnProperty,Vd=(i,e,t)=>e in i?la(i,e,{enumerable:true,configurable:true,writable:true,value:t}):i[e]=t,du=(i=>typeof Vt<"u"?Vt:typeof Proxy<"u"?new Proxy(i,{get:(e,t)=>(typeof Vt<"u"?Vt:e)[t]}):i)(function(i){if(typeof Vt<"u")return Vt.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')}),mu=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),kd=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Fd(e))!Id.call(i,r)&&r!==t&&la(i,r,{get:()=>e[r],enumerable:!(n=Pd(e,r))||n.enumerable});return i},Rd=(i,e,t)=>(t=i!=null?Od(Nd(i)):{},kd(la(t,"default",{value:i,enumerable:true}),i)),pe=(i,e,t)=>Vd(i,typeof e!="symbol"?e+"":e,t),Ld=mu((i,e)=>{(function(t,n){typeof i=="object"?e.exports=i=n():typeof define=="function"&&define.amd?define([],n):t.CryptoJS=n();})(i,function(){var t=t||(function(n,r){var a;if(typeof window<"u"&&window.crypto&&(a=window.crypto),typeof self<"u"&&self.crypto&&(a=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(a=globalThis.crypto),!a&&typeof window<"u"&&window.msCrypto&&(a=window.msCrypto),!a&&typeof global<"u"&&global.crypto&&(a=global.crypto),!a&&typeof du=="function")try{a=du("crypto");}catch{}var s=function(){if(a){if(typeof a.getRandomValues=="function")try{return a.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof a.randomBytes=="function")try{return a.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},o=Object.create||(function(){function C(){}return function(p){var S;return C.prototype=p,S=new C,C.prototype=null,S}})(),l={},u=l.lib={},h=u.Base=(function(){return {extend:function(C){var p=o(this);return C&&p.mixIn(C),(!p.hasOwnProperty("init")||this.init===p.init)&&(p.init=function(){p.$super.init.apply(this,arguments);}),p.init.prototype=p,p.$super=this,p},create:function(){var C=this.extend();return C.init.apply(C,arguments),C},init:function(){},mixIn:function(C){for(var p in C)C.hasOwnProperty(p)&&(this[p]=C[p]);C.hasOwnProperty("toString")&&(this.toString=C.toString);},clone:function(){return this.init.prototype.extend(this)}}})(),c=u.WordArray=h.extend({init:function(C,p){C=this.words=C||[],p!=r?this.sigBytes=p:this.sigBytes=C.length*4;},toString:function(C){return (C||f).stringify(this)},concat:function(C){var p=this.words,S=C.words,m=this.sigBytes,E=C.sigBytes;if(this.clamp(),m%4)for(var x=0;x<E;x++){var P=S[x>>>2]>>>24-x%4*8&255;p[m+x>>>2]|=P<<24-(m+x)%4*8;}else for(var N=0;N<E;N+=4)p[m+N>>>2]=S[N>>>2];return this.sigBytes+=E,this},clamp:function(){var C=this.words,p=this.sigBytes;C[p>>>2]&=4294967295<<32-p%4*8,C.length=n.ceil(p/4);},clone:function(){var C=h.clone.call(this);return C.words=this.words.slice(0),C},random:function(C){for(var p=[],S=0;S<C;S+=4)p.push(s());return new c.init(p,C)}}),d=l.enc={},f=d.Hex={stringify:function(C){for(var p=C.words,S=C.sigBytes,m=[],E=0;E<S;E++){var x=p[E>>>2]>>>24-E%4*8&255;m.push((x>>>4).toString(16)),m.push((x&15).toString(16));}return m.join("")},parse:function(C){for(var p=C.length,S=[],m=0;m<p;m+=2)S[m>>>3]|=parseInt(C.substr(m,2),16)<<24-m%8*4;return new c.init(S,p/2)}},y=d.Latin1={stringify:function(C){for(var p=C.words,S=C.sigBytes,m=[],E=0;E<S;E++){var x=p[E>>>2]>>>24-E%4*8&255;m.push(String.fromCharCode(x));}return m.join("")},parse:function(C){for(var p=C.length,S=[],m=0;m<p;m++)S[m>>>2]|=(C.charCodeAt(m)&255)<<24-m%4*8;return new c.init(S,p)}},v=d.Utf8={stringify:function(C){try{return decodeURIComponent(escape(y.stringify(C)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(C){return y.parse(unescape(encodeURIComponent(C)))}},w=u.BufferedBlockAlgorithm=h.extend({reset:function(){this._data=new c.init,this._nDataBytes=0;},_append:function(C){typeof C=="string"&&(C=v.parse(C)),this._data.concat(C),this._nDataBytes+=C.sigBytes;},_process:function(C){var p,S=this._data,m=S.words,E=S.sigBytes,x=this.blockSize,P=x*4,N=E/P;C?N=n.ceil(N):N=n.max((N|0)-this._minBufferSize,0);var ee=N*x,Ee=n.min(ee*4,E);if(ee){for(var Yt=0;Yt<ee;Yt+=x)this._doProcessBlock(m,Yt);p=m.splice(0,ee),S.sigBytes-=Ee;}return new c.init(p,Ee)},clone:function(){var C=h.clone.call(this);return C._data=this._data.clone(),C},_minBufferSize:0});u.Hasher=w.extend({cfg:h.extend(),init:function(C){this.cfg=this.cfg.extend(C),this.reset();},reset:function(){w.reset.call(this),this._doReset();},update:function(C){return this._append(C),this._process(),this},finalize:function(C){C&&this._append(C);var p=this._doFinalize();return p},blockSize:16,_createHelper:function(C){return function(p,S){return new C.init(S).finalize(p)}},_createHmacHelper:function(C){return function(p,S){return new D.HMAC.init(C,S).finalize(p)}}});var D=l.algo={};return l})(Math);return t});}),Bd=mu((i,e)=>{(function(t,n){typeof i=="object"?e.exports=i=n(Ld()):typeof define=="function"&&define.amd?define(["./core"],n):n(t.CryptoJS);})(i,function(t){return (function(){var n=t,r=n.lib,a=r.WordArray,s=r.Hasher,o=n.algo,l=[],u=o.SHA1=s.extend({_doReset:function(){this._hash=new a.init([1732584193,4023233417,2562383102,271733878,3285377520]);},_doProcessBlock:function(h,c){for(var d=this._hash.words,f=d[0],y=d[1],v=d[2],w=d[3],D=d[4],C=0;C<80;C++){if(C<16)l[C]=h[c+C]|0;else {var p=l[C-3]^l[C-8]^l[C-14]^l[C-16];l[C]=p<<1|p>>>31;}var S=(f<<5|f>>>27)+D+l[C];C<20?S+=(y&v|~y&w)+1518500249:C<40?S+=(y^v^w)+1859775393:C<60?S+=(y&v|y&w|v&w)-1894007588:S+=(y^v^w)-899497514,D=w,w=v,v=y<<30|y>>>2,y=f,f=S;}d[0]=d[0]+f|0,d[1]=d[1]+y|0,d[2]=d[2]+v|0,d[3]=d[3]+w|0,d[4]=d[4]+D|0;},_doFinalize:function(){var h=this._data,c=h.words,d=this._nDataBytes*8,f=h.sigBytes*8;return c[f>>>5]|=128<<24-f%32,c[(f+64>>>9<<4)+14]=Math.floor(d/4294967296),c[(f+64>>>9<<4)+15]=d,h.sigBytes=c.length*4,this._process(),this._hash},clone:function(){var h=s.clone.call(this);return h._hash=this._hash.clone(),h}});n.SHA1=s._createHelper(u),n.HmacSHA1=s._createHmacHelper(u);})(),t.SHA1});}),pu="___param___",re;(i=>(i.log=(e,...t)=>console.log(`[Pixi\u2019VN Json] ${e}`,...t),i.warn=(e,...t)=>console.warn(`[Pixi\u2019VN Json] ${e}`,...t),i.error=(e,...t)=>console.error(`[Pixi\u2019VN Json] ${e}`,...t),i.info=(e,...t)=>console.info(`[Pixi\u2019VN Json] ${e}`,...t)))(re||(re={}));var xe=class J{static init(e){e.loadAssets&&(J._loadAssets=e.loadAssets),e.soundOperation&&(J._soundOperation=e.soundOperation),e.imageOperation&&(J._imageOperation=e.imageOperation),e.videoOperation&&(J._videoOperation=e.videoOperation),e.imageContainerOperation&&(J._imageContainerOperation=e.imageContainerOperation),e.textOperation&&(J._textOperation=e.textOperation),e.canvasElementOperation&&(J._canvasElementOperation=e.canvasElementOperation),e.setStorageValue&&(J._setStorageValue=e.setStorageValue),e.setInitialStorageValue&&(J._setInitialStorageValue=e.setInitialStorageValue),e.narrationOperation&&(J._narrationOperation=e.narrationOperation),e.effectOperation&&(J._effectOperation=e.effectOperation),e.animateOperation&&(J._animateOperation=e.animateOperation),e.getLogichValue&&(J._getLogichValue=e.getLogichValue),e.getConditionalStep&&(J._getConditionalStep=e.getConditionalStep);}static get loadAssets(){return J._loadAssets}static get soundOperation(){return J._soundOperation}static get imageOperation(){return J._imageOperation}static get videoOperation(){return J._videoOperation}static get imageContainerOperation(){return J._imageContainerOperation}static get textOperation(){return J._textOperation}static get canvasElementOperation(){return J._canvasElementOperation}static get setStorageValue(){return J._setStorageValue}static get setInitialStorageValue(){return J._setInitialStorageValue}static get narrationOperation(){return J._narrationOperation}static get effectOperation(){return J._effectOperation}static get animateOperation(){return J._animateOperation}static get getLogichValue(){return J._getLogichValue}static get getConditionalStep(){return J._getConditionalStep}};pe(xe,"_loadAssets",()=>{}),pe(xe,"_soundOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_imageOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_videoOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_imageContainerOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_textOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_canvasElementOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_setStorageValue",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_setInitialStorageValue",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_narrationOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_effectOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_animateOperation",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_getLogichValue",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")}),pe(xe,"_getConditionalStep",()=>{throw re.error("An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue."),new PixiError("invalid_usage","An error occurred! pixi-vn-json was not initialized. Please contact the Pixi'VN team to report the issue.")});var Wd=xe;function jd(i,e){if(e&&typeof e=="object"&&typeof i.functionName=="string"&&i.functionName in e){let t=e[i.functionName];if(typeof t=="function"){let n=i.args.map(r=>Wd.getLogichValue(r,e));return t(...n)}else re.warn(`getLogichValue function ${i.functionName} not found in props`);}}function qd(i,e={}){let t="";return i.values.forEach(n=>{if(typeof n=="string")t+=n;else {let r=_.getLogichValue(n,e);t+=`${r}`;}}),t}async function gu(i,e,t){let n=_.getLogichValue(i,e);if(n)switch(n.type){case "sound":_.soundOperation(n);break;case "assets":case "bundle":await _.loadAssets(n);break;case "image":await _.imageOperation(n);break;case "video":await _.videoOperation(n);break;case "imagecontainer":await _.imageContainerOperation(n);break;case "text":await _.textOperation(n);break;case "canvaselement":await _.canvasElementOperation(n);break;case "value":_.setStorageValue(n,e);break;case "operationtoconvert":if(t){let r=qd(n,e),a=await t(r);a&&await gu(a,e,t);}break;case "input":case "dialogue":_.narrationOperation(n);break;case "shake":await _.effectOperation(n);break;case "animate":case "animate-sequence":_.animateOperation(n);break;case "function":await jd(n,e);break}}function fu(i){let e=_.getLogichValue(i,{});e&&e.type==="value"&&e.storageOperationType==="set"&&(e.storageType==="storage"||e.storageType==="tempstorage")&&_.setInitialStorageValue(e);}var Md=Rd(Bd()),Gd=class extends LabelAbstract{constructor(i,e,t,n={}){t||(t={}),t.onLoadingLabel=async()=>{for(let r of e){let a;if(typeof r=="function"?a=r():a=r,a=_.getConditionalStep(a),a.operations)try{let s=a.operations.map(o=>_.loadAssets(o));await Promise.all(s);}catch(s){re.error("The operation in the onLoadingLabel function of the label has an error:",s);}}},super(i,t),pe(this,"_steps"),pe(this,"operationStringConvert"),pe(this,"skipEmptyDialogs",false),this._steps=e,this.operationStringConvert=n.operationStringConvert,this.skipEmptyDialogs=n.skipEmptyDialogs||false;}get steps(){return this._steps.map(i=>this.stepConverter(i))}get stepCount(){return this._steps.length}getStepById(i){if(i<0||i>=this._steps.length)return;let e=this._steps[i];return this.stepConverter(e)}getStepSha(i){if(i<0||i>=this.steps.length)return;let e=this._steps[i];return (0, Md.default)(e.toString().toLocaleLowerCase()).toString()}getDialogueText(i,e){let t="";if(Array.isArray(i)){let n=[];i.forEach(r=>{if(typeof r=="string")n.push(r);else if(r&&typeof r=="object"){let a=_.getLogichValue(r,e);a?(a&&!Array.isArray(a)&&typeof a=="object"&&(a=_.getLogichValue(a,e)||""),Array.isArray(a)?n=n.map(s=>`${s}`).concat(a):n.push(`${a}`)):n.push(`${r}`);}else n.push(`${r}`);}),t=n;}else {let n=_.getLogichValue(i,e);n&&!Array.isArray(n)&&typeof n=="object"&&(n=_.getLogichValue(n,e)),n&&Array.isArray(n)?t=n.map(r=>`${r}`):t=`${n}`;}return t}getDialogue(i,e){if(i==null)return;let t=_.getLogichValue(i,e);return t==null?`${t}`:typeof t=="object"&&"character"in t&&"text"in t?{character:t.character,text:be.t(this.getDialogueText(t.text,e))}:be.t(this.getDialogueText(t,e))}getChoices(i,e){return _.getLogichValue(i,e)?.map(t=>_.getLogichValue(t,e)).filter(t=>t!==void 0)}stepConverter(i){return async e=>{let t=typeof i=="function"?i():i;t=createExportableElement(t),t=_.getConditionalStep(t,e);let n=this.operationStringConvert?d=>this.operationStringConvert(d,t,e):void 0,{operations:r=[]}=t;for(let d of r)await gu(d,e,n);let{labelToOpen:a=[]}=t,s=this.getChoices(t.choices,e),o=_.getLogichValue(t.glueEnabled,e),l=this.getDialogue(t.dialogue,e),u=[];Array.isArray(a)||(a=[a]),a.forEach(d=>{let f=_.getLogichValue(d,e);f&&u.push(f);});let h=_.getLogichValue(t.goNextStep,e),c=_.getLogichValue(t.end,e);if(s){let d=s.map(f=>{let y="";if(Array.isArray(f.text)){let v=[];f.text.forEach(w=>{if(typeof w=="string")v.push(be.t(w));else if(w&&typeof w=="object"){let D=_.getLogichValue(w,e);D&&!Array.isArray(D)&&typeof D=="object"&&(D=_.getLogichValue(D,e)||""),D&&(Array.isArray(D)?v=v.concat(be.t(D)):v.push(be.t(D)));}}),y=v;}else typeof f.text=="string"&&(y=be.t(f.text));return {label:f.label,text:y,props:f.props,type:f.type,oneTime:f.oneTime,onlyHaveNoChoice:f.onlyHaveNoChoice,autoSelect:f.autoSelect}});narration.choices=d;}else narration.choices=void 0;l!==void 0&&(narration.dialogue=l,this.skipEmptyDialogs&&typeof l=="string"&&(l===""||RegExp(/^\s+$/).test(l))&&(h=true)),o?narration.dialogGlue=true:o===false&&(narration.dialogGlue=false);for(let d of u){let f=d.label;typeof f=="object"&&(f=_.getLogichValue(f,e)||"");let y=d.params?.map(v=>_.getLogichValue(v,e));e={...e,...d.props},d.type==="jump"?(narration.openedLabels.length>0&&narration.closeCurrentLabel(),storage.setTempVariable(`${pu}${narration.openedLabels.length}`,y),await narration.call(f,e)):(storage.setTempVariable(`${pu}${narration.openedLabels.length}`,y),await narration.call(f,e));}c==="game_end"?(narration.closeAllLabels(),await narration.continue(e,{runNow:true})):c==="label_end"&&narration.closeCurrentLabel(),h&&await narration.continue(e,{runNow:true});}}};async function Dy(i,e={}){if(!Array.isArray(i))if(typeof i=="object"||typeof i=="string")i=[i];else {re.error("Error parsing imported Pixi'VN JSON: data is not an object");return}let t=i.map(a=>{if(typeof a=="string")try{return JSON.parse(a)}catch(s){return re.error("Error parsing imported Pixi'VN JSON",s),{}}return a}),n=t.map(async a=>{if(a.initialOperations)for(let s of a.initialOperations)s.type==="value"&&(typeof s.value!="object"||!s.value||!("type"in s.value))&&fu(s);return Promise.resolve()});await Promise.all(n);let r=t.map(async a=>{if(a.initialOperations)for(let s of a.initialOperations)(s.type!=="value"||s.type==="value"&&typeof s.value=="object"&&s.value&&"type"in s.value)&&fu(s);if(a.labels){let s=a.labels;for(let o in s)try{let l=s[o],u=new Gd(o,l,void 0,e);RegisteredLabels.add(u);}catch(l){re.error(`Error creating JSON label ${o}`,l);}}return Promise.resolve()});await Promise.all(r);}var ua;(i=>{let e=new Set;function t(a){e.add(a);}i.add=t;function n(){e.clear();}i.clear=n;function r(a,s={}){let o=h=>aa(h,s)??void 0,l=oa(a,s);if(e.size===0)return o(l);let u=o;for(let h of e){let c=u;u=d=>h(d,c)??void 0;}return u(l)}i.getLogichValue=r;})(ua||(ua={}));var $d={version:"1.13.8"};var vu=`https://pixi-vn.com/schemas/${$d.version}/schema.json`,Eu=["==","!=","<","<=",">",">=","CONTAINS"],ha;(i=>{i.options={replaceRegex:/\[([^\]]+)\]/};let e=[],t=false,n=false;function r(h,c){e.unshift({fn:h,opts:c});let d=c.type??"before-translation";d==="before-translation"&&!t?(be.beforeToTranslate=f=>o(f,{type:"before-translation"}),t=true):d==="after-translation"&&!n&&(be.afterToTranslate=f=>o(f,{type:"after-translation"}),n=true);}i.add=r;function a(h){let c=e.findIndex(d=>d.fn===h);c!==-1&&e.splice(c,1);}i.remove=a;function s(){return e.map(h=>h.opts)}i.info=s;function o(h,c){for(let f of e.filter(y=>y.opts.i18nInterpolation))h=l(h,f.fn,f.opts.validation);let d=e.filter(f=>(f.opts.type??"before-translation")===c.type);for(let f of d)h=u(h,f.fn,f.opts.validation);return h}i.replace=o;function l(h,c,d){let f=new RegExp(i.options.replaceRegex.source,"g"),y=[...h.matchAll(f)],v=new Set,w=[];for(let D of y)v.has(D[1])||(v.add(D[1]),w.push(D[1]));for(let D of w){if(d==="characterId"){if(!RegisteredCharacters.has(D))continue}else if(d!=="all"){if(d instanceof RegExp){if(!d.test(D))continue}else if(d instanceof ZodType&&!d.safeParse(D).success)continue}c(D)!==void 0&&(h=h.replace(`[${D}]`,`{{[${D}]}}`));}return h}function u(h,c,d){let f=new RegExp(i.options.replaceRegex.source,"g"),y=[...h.matchAll(f)],v=new Set,w=[];for(let D of y)v.has(D[1])||(v.add(D[1]),w.push(D[1]));for(let D of w){if(d==="characterId"){if(!RegisteredCharacters.has(D))continue}else if(d!=="all"){if(d instanceof RegExp){if(!d.test(D))continue}else if(d instanceof ZodType&&!d.safeParse(D).success)continue}let C=c(D);C!==void 0&&(h=h.replaceAll(`[${D}]`,C));}return h}})(ha||(ha={}));function Fy(){_.init({animateOperation:su,canvasElementOperation:iu,effectOperation:ru,imageContainerOperation:tu,imageOperation:Zl,textOperation:nu,narrationOperation:au,loadAssets:Ql,soundOperation:ou,videoOperation:eu,setStorageValue:uu,setInitialStorageValue:hu,getLogichValue:ua.getLogichValue,getConditionalStep:bi});}var j;(r=>(r.log=(a,...s)=>console.log(`[Pixi\u2019VN Ink] ${a}`,...s),r.warn=(a,...s)=>console.warn(`[Pixi\u2019VN Ink] ${a}`,...s),r.error=(a,...s)=>console.error(`[Pixi\u2019VN Ink] ${a}`,...s),r.info=(a,...s)=>console.info(`[Pixi\u2019VN Ink] ${a}`,...s)))(j||(j={}));var Jd=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,Hd=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,Ud=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,ca={Space_Separator:Jd,ID_Start:Hd,ID_Continue:Ud},ie={isSpaceSeparator(i){return typeof i=="string"&&ca.Space_Separator.test(i)},isIdStartChar(i){return typeof i=="string"&&(i>="a"&&i<="z"||i>="A"&&i<="Z"||i==="$"||i==="_"||ca.ID_Start.test(i))},isIdContinueChar(i){return typeof i=="string"&&(i>="a"&&i<="z"||i>="A"&&i<="Z"||i>="0"&&i<="9"||i==="$"||i==="_"||i==="\u200C"||i==="\u200D"||ca.ID_Continue.test(i))},isDigit(i){return typeof i=="string"&&/[0-9]/.test(i)},isHexDigit(i){return typeof i=="string"&&/[0-9A-Fa-f]/.test(i)}},pa,_e,mt,wi,St,Ye,le,ga,On,zd=function(e,t){pa=String(e),_e="start",mt=[],wi=0,St=1,Ye=0,le=void 0,ga=void 0,On=void 0;do le=Kd(),Qd[_e]();while(le.type!=="eof");return typeof t=="function"?fa({"":On},"",t):On};function fa(i,e,t){let n=i[e];if(n!=null&&typeof n=="object")if(Array.isArray(n))for(let r=0;r<n.length;r++){let a=String(r),s=fa(n,a,t);s===void 0?delete n[a]:Object.defineProperty(n,a,{value:s,writable:true,enumerable:true,configurable:true});}else for(let r in n){let a=fa(n,r,t);a===void 0?delete n[r]:Object.defineProperty(n,r,{value:a,writable:true,enumerable:true,configurable:true});}return t.call(i,e,n)}var k,I,Tn,ft,B;function Kd(){for(k="default",I="",Tn=false,ft=1;;){B=gt();let i=Du[k]();if(i)return i}}function gt(){if(pa[wi])return String.fromCodePoint(pa.codePointAt(wi))}function b(){let i=gt();return i===`
|
|
47
|
+
`?(St++,Ye=0):i?Ye+=i.length:Ye++,i&&(wi+=i.length),i}var Du={default(){switch(B){case " ":case "\v":case "\f":case " ":case "\xA0":case "\uFEFF":case `
|
|
48
|
+
`:case "\r":case "\u2028":case "\u2029":b();return;case "/":b(),k="comment";return;case void 0:return b(),X("eof")}if(ie.isSpaceSeparator(B)){b();return}return Du[_e]()},comment(){switch(B){case "*":b(),k="multiLineComment";return;case "/":b(),k="singleLineComment";return}throw Y(b())},multiLineComment(){switch(B){case "*":b(),k="multiLineCommentAsterisk";return;case void 0:throw Y(b())}b();},multiLineCommentAsterisk(){switch(B){case "*":b();return;case "/":b(),k="default";return;case void 0:throw Y(b())}b(),k="multiLineComment";},singleLineComment(){switch(B){case `
|
|
49
|
+
`:case "\r":case "\u2028":case "\u2029":b(),k="default";return;case void 0:return b(),X("eof")}b();},value(){switch(B){case "{":case "[":return X("punctuator",b());case "n":return b(),kt("ull"),X("null",null);case "t":return b(),kt("rue"),X("boolean",true);case "f":return b(),kt("alse"),X("boolean",false);case "-":case "+":b()==="-"&&(ft=-1),k="sign";return;case ".":I=b(),k="decimalPointLeading";return;case "0":I=b(),k="zero";return;case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":I=b(),k="decimalInteger";return;case "I":return b(),kt("nfinity"),X("numeric",1/0);case "N":return b(),kt("aN"),X("numeric",NaN);case '"':case "'":Tn=b()==='"',I="",k="string";return}throw Y(b())},identifierNameStartEscape(){if(B!=="u")throw Y(b());b();let i=ma();switch(i){case "$":case "_":break;default:if(!ie.isIdStartChar(i))throw Su();break}I+=i,k="identifierName";},identifierName(){switch(B){case "$":case "_":case "\u200C":case "\u200D":I+=b();return;case "\\":b(),k="identifierNameEscape";return}if(ie.isIdContinueChar(B)){I+=b();return}return X("identifier",I)},identifierNameEscape(){if(B!=="u")throw Y(b());b();let i=ma();switch(i){case "$":case "_":case "\u200C":case "\u200D":break;default:if(!ie.isIdContinueChar(i))throw Su();break}I+=i,k="identifierName";},sign(){switch(B){case ".":I=b(),k="decimalPointLeading";return;case "0":I=b(),k="zero";return;case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":I=b(),k="decimalInteger";return;case "I":return b(),kt("nfinity"),X("numeric",ft*(1/0));case "N":return b(),kt("aN"),X("numeric",NaN)}throw Y(b())},zero(){switch(B){case ".":I+=b(),k="decimalPoint";return;case "e":case "E":I+=b(),k="decimalExponent";return;case "x":case "X":I+=b(),k="hexadecimal";return}return X("numeric",ft*0)},decimalInteger(){switch(B){case ".":I+=b(),k="decimalPoint";return;case "e":case "E":I+=b(),k="decimalExponent";return}if(ie.isDigit(B)){I+=b();return}return X("numeric",ft*Number(I))},decimalPointLeading(){if(ie.isDigit(B)){I+=b(),k="decimalFraction";return}throw Y(b())},decimalPoint(){switch(B){case "e":case "E":I+=b(),k="decimalExponent";return}if(ie.isDigit(B)){I+=b(),k="decimalFraction";return}return X("numeric",ft*Number(I))},decimalFraction(){switch(B){case "e":case "E":I+=b(),k="decimalExponent";return}if(ie.isDigit(B)){I+=b();return}return X("numeric",ft*Number(I))},decimalExponent(){switch(B){case "+":case "-":I+=b(),k="decimalExponentSign";return}if(ie.isDigit(B)){I+=b(),k="decimalExponentInteger";return}throw Y(b())},decimalExponentSign(){if(ie.isDigit(B)){I+=b(),k="decimalExponentInteger";return}throw Y(b())},decimalExponentInteger(){if(ie.isDigit(B)){I+=b();return}return X("numeric",ft*Number(I))},hexadecimal(){if(ie.isHexDigit(B)){I+=b(),k="hexadecimalInteger";return}throw Y(b())},hexadecimalInteger(){if(ie.isHexDigit(B)){I+=b();return}return X("numeric",ft*Number(I))},string(){switch(B){case "\\":b(),I+=Xd();return;case '"':if(Tn)return b(),X("string",I);I+=b();return;case "'":if(!Tn)return b(),X("string",I);I+=b();return;case `
|
|
50
|
+
`:case "\r":throw Y(b());case "\u2028":case "\u2029":Zd(B);break;case void 0:throw Y(b())}I+=b();},start(){switch(B){case "{":case "[":return X("punctuator",b())}k="value";},beforePropertyName(){switch(B){case "$":case "_":I=b(),k="identifierName";return;case "\\":b(),k="identifierNameStartEscape";return;case "}":return X("punctuator",b());case '"':case "'":Tn=b()==='"',k="string";return}if(ie.isIdStartChar(B)){I+=b(),k="identifierName";return}throw Y(b())},afterPropertyName(){if(B===":")return X("punctuator",b());throw Y(b())},beforePropertyValue(){k="value";},afterPropertyValue(){switch(B){case ",":case "}":return X("punctuator",b())}throw Y(b())},beforeArrayValue(){if(B==="]")return X("punctuator",b());k="value";},afterArrayValue(){switch(B){case ",":case "]":return X("punctuator",b())}throw Y(b())},end(){throw Y(b())}};function X(i,e){return {type:i,value:e,line:St,column:Ye}}function kt(i){for(let e of i){if(gt()!==e)throw Y(b());b();}}function Xd(){switch(gt()){case "b":return b(),"\b";case "f":return b(),"\f";case "n":return b(),`
|
|
51
|
+
`;case "r":return b(),"\r";case "t":return b()," ";case "v":return b(),"\v";case "0":if(b(),ie.isDigit(gt()))throw Y(b());return "\0";case "x":return b(),Yd();case "u":return b(),ma();case `
|
|
52
|
+
`:case "\u2028":case "\u2029":return b(),"";case "\r":return b(),gt()===`
|
|
53
|
+
`&&b(),"";case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":throw Y(b());case void 0:throw Y(b())}return b()}function Yd(){let i="",e=gt();if(!ie.isHexDigit(e)||(i+=b(),e=gt(),!ie.isHexDigit(e)))throw Y(b());return i+=b(),String.fromCodePoint(parseInt(i,16))}function ma(){let i="",e=4;for(;e-- >0;){let t=gt();if(!ie.isHexDigit(t))throw Y(b());i+=b();}return String.fromCodePoint(parseInt(i,16))}var Qd={start(){if(le.type==="eof")throw Rt();da();},beforePropertyName(){switch(le.type){case "identifier":case "string":ga=le.value,_e="afterPropertyName";return;case "punctuator":Ai();return;case "eof":throw Rt()}},afterPropertyName(){if(le.type==="eof")throw Rt();_e="beforePropertyValue";},beforePropertyValue(){if(le.type==="eof")throw Rt();da();},beforeArrayValue(){if(le.type==="eof")throw Rt();if(le.type==="punctuator"&&le.value==="]"){Ai();return}da();},afterPropertyValue(){if(le.type==="eof")throw Rt();switch(le.value){case ",":_e="beforePropertyName";return;case "}":Ai();}},afterArrayValue(){if(le.type==="eof")throw Rt();switch(le.value){case ",":_e="beforeArrayValue";return;case "]":Ai();}},end(){}};function da(){let i;switch(le.type){case "punctuator":switch(le.value){case "{":i={};break;case "[":i=[];break}break;case "null":case "boolean":case "numeric":case "string":i=le.value;break}if(On===void 0)On=i;else {let e=mt[mt.length-1];Array.isArray(e)?e.push(i):Object.defineProperty(e,ga,{value:i,writable:true,enumerable:true,configurable:true});}if(i!==null&&typeof i=="object")mt.push(i),Array.isArray(i)?_e="beforeArrayValue":_e="beforePropertyName";else {let e=mt[mt.length-1];e==null?_e="end":Array.isArray(e)?_e="afterArrayValue":_e="afterPropertyValue";}}function Ai(){mt.pop();let i=mt[mt.length-1];i==null?_e="end":Array.isArray(i)?_e="afterArrayValue":_e="afterPropertyValue";}function Y(i){return xi(i===void 0?`JSON5: invalid end of input at ${St}:${Ye}`:`JSON5: invalid character '${bu(i)}' at ${St}:${Ye}`)}function Rt(){return xi(`JSON5: invalid end of input at ${St}:${Ye}`)}function Su(){return Ye-=5,xi(`JSON5: invalid identifier character at ${St}:${Ye}`)}function Zd(i){console.warn(`JSON5: '${bu(i)}' in strings is not valid ECMAScript; consider escaping`);}function bu(i){let e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(e[i])return e[i];if(i<" "){let t=i.charCodeAt(0).toString(16);return "\\x"+("00"+t).substring(t.length)}return i}function xi(i){let e=new SyntaxError(i);return e.lineNumber=St,e.columnNumber=Ye,e}var ep=function(e,t,n){let r=[],a="",s,o,l="",u;if(t!=null&&typeof t=="object"&&!Array.isArray(t)&&(n=t.space,u=t.quote,t=t.replacer),typeof t=="function")o=t;else if(Array.isArray(t)){s=[];for(let v of t){let w;typeof v=="string"?w=v:(typeof v=="number"||v instanceof String||v instanceof Number)&&(w=String(v)),w!==void 0&&s.indexOf(w)<0&&s.push(w);}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),typeof n=="number"?n>0&&(n=Math.min(10,Math.floor(n)),l=" ".substr(0,n)):typeof n=="string"&&(l=n.substr(0,10)),h("",{"":e});function h(v,w){let D=w[v];switch(D!=null&&(typeof D.toJSON5=="function"?D=D.toJSON5(v):typeof D.toJSON=="function"&&(D=D.toJSON(v))),o&&(D=o.call(w,v,D)),D instanceof Number?D=Number(D):D instanceof String?D=String(D):D instanceof Boolean&&(D=D.valueOf()),D){case null:return "null";case true:return "true";case false:return "false"}if(typeof D=="string")return c(D);if(typeof D=="number")return String(D);if(typeof D=="object")return Array.isArray(D)?y(D):d(D)}function c(v){let w={"'":.1,'"':.2},D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},C="";for(let S=0;S<v.length;S++){let m=v[S];switch(m){case "'":case '"':w[m]++,C+=m;continue;case "\0":if(ie.isDigit(v[S+1])){C+="\\x00";continue}}if(D[m]){C+=D[m];continue}if(m<" "){let E=m.charCodeAt(0).toString(16);C+="\\x"+("00"+E).substring(E.length);continue}C+=m;}let p=u||Object.keys(w).reduce((S,m)=>w[S]<w[m]?S:m);return C=C.replace(new RegExp(p,"g"),D[p]),p+C+p}function d(v){if(r.indexOf(v)>=0)throw TypeError("Converting circular structure to JSON5");r.push(v);let w=a;a=a+l;let D=s||Object.keys(v),C=[];for(let S of D){let m=h(S,v);if(m!==void 0){let E=f(S)+":";l!==""&&(E+=" "),E+=m,C.push(E);}}let p;if(C.length===0)p="{}";else {let S;if(l==="")S=C.join(","),p="{"+S+"}";else {let m=`,
|
|
54
54
|
`+a;S=C.join(m),p=`{
|
|
55
55
|
`+a+S+`,
|
|
56
|
-
`+w+"}";}}return r.pop(),a=w,p}function f(v){if(v.length===0)return c(v);let w=String.fromCodePoint(v.codePointAt(0));if(!ie.isIdStartChar(w))return c(v);for(let
|
|
57
|
-
`+a,S=
|
|
56
|
+
`+w+"}";}}return r.pop(),a=w,p}function f(v){if(v.length===0)return c(v);let w=String.fromCodePoint(v.codePointAt(0));if(!ie.isIdStartChar(w))return c(v);for(let D=w.length;D<v.length;D++)if(!ie.isIdContinueChar(String.fromCodePoint(v.codePointAt(D))))return c(v);return v}function y(v){if(r.indexOf(v)>=0)throw TypeError("Converting circular structure to JSON5");r.push(v);let w=a;a=a+l;let D=[];for(let p=0;p<v.length;p++){let S=h(String(p),v);D.push(S!==void 0?S:"null");}let C;if(D.length===0)C="[]";else if(l==="")C="["+D.join(",")+"]";else {let p=`,
|
|
57
|
+
`+a,S=D.join(p);C=`[
|
|
58
58
|
`+a+S+`,
|
|
59
|
-
`+w+"]";}return r.pop(),a=w,C}},tp={parse:zd,stringify:ep},np=tp,Pn=np;var
|
|
59
|
+
`+w+"]";}return r.pop(),a=w,C}},tp={parse:zd,stringify:ep},np=tp,Pn=np;var wu="\xA7SPACE\xA7",xu="\xA7DOUBLE_QUOTES\xA7",_u="\xA7QUOTES\xA7",Tu="SPECIAL_\xA7QUOTES\xA7",Ou="\xA7CURLY_BRACKETS1\xA7",ip="\xA7INK_VAR\xA7",Pu="\xA7CURLY_BRACKETS2\xA7",T;(C=>{let i=[],e=[];async function t(p,S){for(let m=0;m<i.length;m++)try{let{validation:E}=i[m].opts;if(E instanceof RegExp){if(!E.test(p.join(" ")))continue}else if(E instanceof ZodType&&!E.safeParse(p).success)continue;let x=await i[m].fn(p,S,c);if(x===!0||typeof x=="string")return x}catch{}return false}function n(p,S={name:"custom-command",validation:/^/}){i.unshift({fn:p,opts:S});}C.add=n;function r(){return [...e.map(p=>p.opts),...i.map(p=>p.opts)]}C.info=r;function a(p,S){e.unshift({fn:p,opts:S});}C.addMapper=a;function s(){i.length=0;}C.clear=s;function o(){e.length=0;}C.clearMappers=o;async function l(p,S,m){try{let E=u(p),x=await t(E,m);return x===!0?void 0:typeof x=="string"?(x.startsWith("#")&&(x=x.substring(1)),await C.run(x,S,m)):h(E,S)}catch(E){throw j.error("Error parsing ink hashtag-command",p),E}}C.run=l;function u(p,S){if(p=p.replaceAll('\\"',xu),p=p.replaceAll("\\'",_u),p=p.replaceAll("\\`",Tu),p=p.replaceAll("\\{",Ou),p=p.replaceAll("\\}",Pu),S?.mergeInkVariables){let P;do P=p,p=p.replace(/\{[^{}:]*\}/g,ip);while(p!==P)}p=p.replaceAll("{"," { "),p=p.replaceAll("}"," } "),p=p.replaceAll(Ou,"{"),p=p.replaceAll(Pu,"}");let m=[],E,x="";for(let P=0;P<p.length;P++){let N=p[P];N==='"'||N==="'"||N==="`"?E===void 0?(m.push(x),x="",E=N,x+=N):E===N?(E=void 0,x+=N,m.push(x),x=""):x+=N:x+=N;}return x!==""&&m.push(x),m.forEach((P,N)=>{N%2===1&&(m[N]=P.replaceAll(" ",wu));}),p=m.join(""),m=p.split(" ").filter(P=>P!==""),m=m.map(P=>P.replaceAll(wu," ").replaceAll(xu,'"').replaceAll(_u,"'").replaceAll(Tu,"`")),m=v(m),m=m.map(P=>P.startsWith('"')&&P.endsWith('"')||P.startsWith("'")&&P.endsWith("'")||P.startsWith("`")&&P.endsWith("`")?P.slice(1,-1):P),m}C.convertTagTolist=u;function h(p,S){for(let m of e){let{validation:E}=m.opts,x=false;if(E instanceof RegExp?x=E.test(p.join(" ")):E instanceof ZodType&&(x=E.safeParse(p).success),x)return m.fn(p,S)}j.error("The operation is not valid",p);}C.convertOperation=h;function c(p){return d(p)}C.convertListStringToObj=c;function d(p){if(p.length===0)return {};if(p.length%2!==0)throw j.error("The props list must have a pair number of elements",p),new Error("The props list must have a pair number of elements");let S="{";p.forEach((m,E)=>{if(E%2===0)S+=`"${m}": `;else {switch(m){case "null":case "undefined":case "true":case "false":S+=`${m}`;break;default:y(m)?(m=f(m),S+=`"${m}"`):m.startsWith("{")&&m.endsWith("}")?S+=`${m}`:m.startsWith('"')&&m.endsWith('"')?S+=`${m}`:Number.isNaN(parseFloat(m))?S+=`"${m}"`:S+=`${m}`;}E<p.length-1&&(S+=", ");}}),S+="}";try{return Pn.parse(S)}catch(m){throw j.error("Error parsing ink json",S),m}}function f(p){return p.startsWith('"')&&p.endsWith('"')||p.startsWith("'")&&p.endsWith("'")||p.startsWith("`")&&p.endsWith("`")?p.substring(1,p.length-1):p}function y(p){return !!(p.startsWith('"')&&p.endsWith('"')||p.startsWith("'")&&p.endsWith("'")||p.startsWith("`")&&p.endsWith("`"))}function v(p){return w(p).tokens}C.mergeJsonBlocks=v;function w(p){let S=[],m=false;for(let E=0;E<p.length;E++){let x=p[E];if(x!=="{"){S.push(x);continue}let P=D(p,E);if(P===-1){S.push(x);continue}let N=w(p.slice(E+1,P)),ee=["{",...N.tokens,"}"],Ee=ee.join(" ");if(!N.hasInvalidMatchedBlock)try{Pn.parse(Ee),S.push(Ee),E=P;continue}catch{}m=true,S.push(...ee),E=P;}return {tokens:S,hasInvalidMatchedBlock:m}}function D(p,S){let m=0;for(let E=S;E<p.length;E++)if(p[E]==="{")m++;else if(p[E]==="}"&&(m--,m===0))return E;return -1}})(T||(T={}));function rp(i){T.add(i);}T.addMapper((i,e)=>{e.labelToOpen={label:i[1],type:"call"},e.goNextStep=void 0;},{name:"call",description:"Calls the label specified by the second token, then returns to the current position.\n\n```ink\n# call label_name\n```",validation:g.tuple([g.literal("call"),g.string()])});T.addMapper((i,e)=>{e.labelToOpen={label:i[1],type:"jump"},e.goNextStep=void 0;},{name:"jump",description:"Jumps to the label specified by the second token without returning.\n\n```ink\n# jump label_name\n```",validation:g.tuple([g.literal("jump"),g.string()])});T.addMapper((i,e)=>("dialogue"in e&&delete e.dialogue,"goNextStep"in e&&delete e.goNextStep,{type:"dialogue",operationType:"clean"}),{name:"pause",description:"Clears the current dialogue and waits for user input before advancing.\n\n```ink\n# pause\n```",validation:g.tuple([g.literal("pause")])});T.addMapper((i,e)=>{e.goNextStep=true,e.glueEnabled=false;},{name:"continue",description:"Forces the story to proceed to the next step automatically.\n\n```ink\n# continue\n```",validation:g.tuple([g.literal("continue")])});T.addMapper(i=>({type:"video",operationType:i[0],alias:i[2]}),{name:"video-pause-resume",description:"Pauses or resumes a video canvas element identified by its alias.\n\n```ink\n# pause video <alias>\n# resume video <alias>\n```",validation:g.tuple([g.enum(["pause","resume"]),g.literal("video"),g.string()])});T.addMapper(i=>({type:i[1],operationType:i[0],aliases:i.slice(2)}),{name:"assets-bundle-load",description:`Loads (eagerly or lazily) a set of asset or bundle aliases.
|
|
60
60
|
|
|
61
61
|
\`\`\`ink
|
|
62
62
|
# load assets <alias...>
|
|
63
63
|
# lazyload assets <alias...>
|
|
64
64
|
# load bundle <alias...>
|
|
65
65
|
# lazyload bundle <alias...>
|
|
66
|
-
\`\`\``,validation:g.tuple([g.enum(["load","lazyload"]),g.enum(["assets","bundle"])]).rest(g.string())});T.addMapper(i=>({type:"all",operationType:i[0]}),{name:"all-sounds-pause-resume-stop",description:"Pauses, resumes, or stops all active sounds at once.\n\n```ink\n# pause all sounds\n# resume all sounds\n# stop all sounds\n```",validation:g.tuple([g.enum(["pause","resume","stop"]),g.literal("all"),g.enum(["sounds","sound"])])});T.addMapper(i=>({type:"sound",operationType:"pause",alias:i[2]}),{name:"pause-sound",description:"Pauses the sound identified by its alias.\n\n```ink\n# pause sound <alias>\n```",validation:g.tuple([g.literal("pause"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"channel",operationType:"pause",alias:i[2]}),{name:"pause-channel",description:"Pauses the audio channel identified by its alias.\n\n```ink\n# pause channel <alias>\n```",validation:g.tuple([g.literal("pause"),g.literal("channel"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"resume",alias:i[2]}),{name:"resume-sound",description:"Resumes the sound identified by its alias.\n\n```ink\n# resume sound <alias>\n```",validation:g.tuple([g.literal("resume"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"channel",operationType:"resume",alias:i[2]}),{name:"resume-channel",description:"Resumes the audio channel identified by its alias.\n\n```ink\n# resume channel <alias>\n```",validation:g.tuple([g.literal("resume"),g.literal("channel"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"stop",alias:i[2]}),{name:"stop-sound",description:"Stops the sound identified by its alias.\n\n```ink\n# stop sound <alias>\n```",validation:g.tuple([g.literal("stop"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"stop",alias:i[2]}),{name:"remove-sound",description:"Removes (stops) the sound identified by its alias.\n\n```ink\n# remove sound <alias>\n```",deprecated:true,validation:g.tuple([g.literal("remove"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-sound",description:"Edits the properties of a sound identified by its alias.\n\n```ink\n# edit sound <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("sound"),g.string()]).rest(g.string()).refine(i=>(i.length-3)%2===0)});T.addMapper(i=>{let e=i[2],t={type:"sound",operationType:"play",alias:e,url:e};return i.length>3&&(t.props=T.convertListStringToObj(i.slice(3))),t},{name:"play-sound",description:"Plays a sound using its alias as the URL, with optional key/value properties.\n\n```ink\n# play sound <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("play"),g.literal("sound"),g.string()]).rest(g.string()).refine(i=>(i.length-3)%2===0)});T.addMapper(i=>{let e=i[2],t=i[3],n={type:"sound",operationType:"play",alias:e,url:t};return i.length>4&&(n.props=T.convertListStringToObj(i.slice(4))),n},{name:"play-sound-with-source",description:"Plays a sound with an explicit source URL and optional key/value properties.\n \n```ink\n# play sound <alias> <source> [<key> <value> \u2026]\n```\n",validation:g.tuple([g.literal("play"),g.literal("sound"),g.string()]).rest(g.string()).refine(i=>i.length>3&&(i.length-3)%2!==0)});function et(i){let e=[],t=0,n="";for(let r of i)r.startsWith("{")?(t++,n+=r):r.endsWith("}")&&t>0?(t--,n+=r,t===0&&(e.push(n),n="")):t>0?n+=r:e.push(r);return e}function _i(i,e){switch(i){case "dissolve":case "fade":case "movein":case "moveout":case "zoomin":case "zoomout":case "pushin":case "pushout":break;default:return}let t={type:i};if(e.length>0)try{t.props=T.convertListStringToObj(e);}catch{}return t}function Ou(i,e,t){let n,r;t.length%2===0?(n=e,r=t):(n=t[0],r=t.slice(1));let a={type:i,operationType:"show",alias:e,url:n};if(r.length>0){if(r.includes("with")&&r.length>r.indexOf("with")+1){let s=r[r.indexOf("with")+1],o=r.slice(r.indexOf("with")+2);r=r.slice(0,r.indexOf("with"));let l=_i(s,o);l!==void 0&&(a.transition=l);}r.length>0&&(a.props=T.convertListStringToObj(r));}return a}function sp(i,e){let t,n;e.length%2===0?(t=i,n=e):(t=e[0],n=e.slice(1));let r={type:"text",operationType:"show",alias:i,text:t};if(n.length>0){if(n.includes("with")&&n.length>n.indexOf("with")+1){let a=n[n.indexOf("with")+1],s=n.slice(n.indexOf("with")+2);n=n.slice(0,n.indexOf("with"));let o=_i(a,s);o!==void 0&&(r.transition=o);}n.length>0&&(r.props=T.convertListStringToObj(n));}return r}function Fn(i,e,t){let n={type:i,operationType:"remove",alias:e};if(t.includes("with")&&t.length>t.indexOf("with")+1){let r=t[t.indexOf("with")+1],a=t.slice(t.indexOf("with")+2),s=_i(r,a);s!==void 0&&(n.transition=s);}return n}function Ca(i,e){let t=l=>l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'")||l.startsWith("`")&&l.endsWith("`")?l.substring(1,l.length-1):l,n=[],r=e.findIndex(l=>l.startsWith("[")),a=e.findIndex(l=>l.endsWith("]"));if(r===-1||a===-1){j.error("Show imagecontainer must have a list of image ulrs",e);return}if(n=e.slice(r,a+1),n.length<2){j.error("Show imagecontainer must have a list of image ulrs",e);return}n[0]==="["?n.shift():n[0]=n[0].substring(1),n[n.length-1]==="]"?n.pop():n[n.length-1]=n[n.length-1].substring(0,n[n.length-1].length-1);let s={type:"imagecontainer",operationType:"show",alias:i,urls:n.map(l=>t(l))},o=e.slice(a+1);if(o.length>0){if(o.includes("with")&&o.length>o.indexOf("with")+1){let l=o[o.indexOf("with")+1],u=o.slice(o.indexOf("with")+2);o=o.slice(0,o.indexOf("with"));let h=_i(l,u);h!==void 0&&(s.transition=h);}o.length>0&&(s.props=T.convertListStringToObj(o));}return s}function ya(i){let e=i.slice(3),t=e.findIndex(s=>s.startsWith("[")),n=e.findIndex(s=>s.endsWith("]"));if(t===-1||n===-1||n<t)return;let r=e.slice(n+1),a=r.indexOf("with");return a===-1?{beforeWith:r,afterWith:[]}:{beforeWith:r.slice(0,a),afterWith:r.slice(a+1)}}T.addMapper(i=>({alias:i[1],type:"shake",props:T.convertListStringToObj(i.slice(2))}),{name:"shake-effect",description:"Applies shake effect to a canvas alias with optional key/value parameters.\n\n```ink\n# shake <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("shake"),g.string()]).rest(g.string()).refine(i=>(i.length-2)%2===0)});T.addMapper(i=>{let e=i.slice(2),t=e,n=[];if(e.includes("options")){let a=e.indexOf("options");t=e.slice(0,a),n=e.slice(a+1);}return {alias:i[1],type:"animate",keyframes:T.convertListStringToObj(t),options:T.convertListStringToObj(n)}},{name:"animate-effect",description:"Animates a canvas alias with keyframes and optional options section, both in key/value pairs.\n\n```ink\n# animate <alias> [<key> <value> \u2026] [options <key> <value> \u2026]\n```",validation:g.tuple([g.literal("animate"),g.string()]).rest(g.string()).refine(i=>{let e=i.slice(2),t=e.indexOf("options");if(t===-1)return e.length%2===0;if(e.lastIndexOf("options")!==t)return false;let n=e.slice(0,t),r=e.slice(t+1);return n.length%2===0&&r.length%2===0})});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Ou("image",e,t)},{name:"show-image",description:"Shows an image canvas element with optional source, properties, and transition.\n\n```ink\n# show image <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("show"),g.literal("image"),g.string()]).rest(g.string())});T.addMapper(i=>Ca(i[2],et(i.slice(3))),{name:"show-imagecontainer",description:"Shows an image-container canvas element with list and optional key/value properties.\n\n```ink\n# show imagecontainer <alias> [<list>] [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("show"),g.literal("imagecontainer"),g.string()]).rest(g.string()).refine(i=>{let e=ya(i);return e===void 0?false:e.afterWith.length===0&&e.beforeWith.length%2===0})});T.addMapper(i=>Ca(i[2],et(i.slice(3))),{name:"show-imagecontainer-with-transition",description:"Shows an image-container canvas element with list, optional properties, and transition.\n\n```ink\n# show imagecontainer <alias> [<list>] [<key> <value> \u2026] with <transition>\n```",validation:g.tuple([g.literal("show"),g.literal("imagecontainer"),g.string()]).rest(g.string()).refine(i=>{let e=ya(i);return e===void 0?false:e.afterWith.length===1&&e.beforeWith.length%2===0})});T.addMapper(i=>Ca(i[2],et(i.slice(3))),{name:"show-imagecontainer-with-transition-props",description:"Shows an image-container canvas element with list, optional properties, transition, and transition properties.\n\n```ink\n# show imagecontainer <alias> [<list>] [<key> <value> \u2026] with <transition> <key> <value> \u2026\n```",validation:g.tuple([g.literal("show"),g.literal("imagecontainer"),g.string()]).rest(g.string()).refine(i=>{let e=ya(i);return e===void 0?false:e.afterWith.length>1&&(e.afterWith.length-1)%2===0&&e.beforeWith.length%2===0})});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Ou("video",e,t)},{name:"show-video",description:"Shows a video canvas element with optional source, properties, and transition.\n\n```ink\n# show video <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("show"),g.literal("video"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2];return sp(e,i.slice(3))},{name:"show-text",description:"Shows a text canvas element with optional text, properties, and transition.\n\n```ink\n# show text <alias> [<text>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("show"),g.literal("text"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("image",e,t)},{name:"remove-image",description:"Removes an image canvas element with optional source/properties and transition.\n\n```ink\n# remove image <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("image"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("video",e,t)},{name:"remove-video",description:"Removes a video canvas element with optional source/properties and transition.\n\n```ink\n# remove video <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("video"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("canvaselement",e,t)},{name:"remove-canvaselement",description:"Removes a canvas element with optional properties and optional transition params.\n\n```ink\n# remove canvaselement <alias> [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("canvaselement"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("text",e,t)},{name:"remove-text",description:"Removes a text canvas element with optional properties and transition.\n\n```ink\n# remove text <alias> [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("text"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("imagecontainer",e,t)},{name:"remove-imagecontainer",description:"Removes an image-container canvas element with optional properties and transition.\n\n```ink\n# remove imagecontainer <alias> [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("imagecontainer"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"image",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-image",description:"Edits the properties of an image canvas element identified by its alias.\n\n```ink\n# edit image <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("image"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"imagecontainer",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-imagecontainer",description:"Edits the properties of an image-container canvas element identified by its alias.\n\n```ink\n# edit imagecontainer <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("imagecontainer"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"canvaselement",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-canvaselement",description:"Edits the properties of a canvas element identified by its alias.\n\n```ink\n# edit canvaselement <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("canvaselement"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"video",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-video",description:"Edits the properties of a video canvas element identified by its alias.\n\n```ink\n# edit video <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("video"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"text",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-text",description:"Edits the properties of a text canvas element identified by its alias.\n\n```ink\n# edit text <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("text"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"input",operationType:"request"}),{name:"request-input",description:"Requests player input without any additional constraints.\n\n```ink\n# request input\n```",validation:g.tuple([g.literal("request"),g.literal("input")])});T.addMapper(i=>{let e={type:"input",operationType:"request"};try{let t=T.convertListStringToObj(i.slice(2));"type"in t&&typeof t.type=="string"&&(e.valueType=t.type),"default"in t&&(e.defaultValue=t.default);}catch{}return e},{name:"request-input-params",description:"Requests player input with optional key/value parameters (e.g. type, default).\n\n```ink\n# request input <key> <value> [<key> <value> \u2026]\n# request input type number default 18\n```",validation:g.tuple([g.literal("request"),g.literal("input")]).rest(g.string()).refine(i=>i.length>2&&(i.length-2)%2===0)});var Ti="global decl",Lt="___external_value___",Pu=/\[([^\]]+)\]/;var Fu=["+","-","/","*","%","_","==",">","<",">=","<=","!=","!","&&","||","MIN","MAX"],Nu=["+","-","/","*","%","POW","RANDOM","L^"],Iu=["INT","FLOOR","FLOAT"];function Qt(i,e){if(i.endsWith(".s"))return;if(new RegExp(/.*\.[0-9]+\..*$/).test(i)&&(i=i.split(".").filter(r=>!r.match(/^[0-9]+$/)).join("."),!i.startsWith(".")))return i.replaceAll(".","_|_");if(!new RegExp(/^\.\^.*$/).test(i)&&i.includes("g-")){let n=i.split("g-");return va(e)+"_|_"+"g-"+n[n.length-1]}let t=0;for(;new RegExp(/^\.\^.*$/).test(i);)t++,i=i.substring(2);if(t=t-1,new RegExp(/^\..*$/).test(i)&&e){let n=i.substring(1);return va(e,t)+"_|_"+n.replaceAll(".","_|_")}return i.replaceAll(".","_|_")||va(e,t).replaceAll(".","_|_")}function va(i,e=0){let t=i.split("_|_");for(;t.length>1&&e>0;)t.pop()?.includes("g-")&&e--,e--;return t.join("_|_")}var Vu="\xA7DOUBLE_SLASH_CONVERTOR\xA7";function tt(i){return i.startsWith("^")&&(i=i.substring(1)),i=i.replaceAll("\\\\",Vu),i=i.replaceAll("\\n",`
|
|
67
|
-
`),i=i.replaceAll("\\t"," "),i=i.replaceAll(" "," "),i=i.replaceAll(Vu,"\\\\"),i}function Dt(i,e,t,n){let{functions:r}=n;i=i.map(s=>{if(typeof s=="string")switch(s){case "rnd":return "RANDOM";case "?":return "CONTAINS"}return s});let a=[];return i.forEach(s=>{if(typeof s=="string")switch(s){case "&&":case "||":if(a.length>=2){let o={type:"union",unionType:s==="&&"?"and":"or",conditions:[a[a.length-2],a[a.length-1]]};a.pop(),a.pop(),a.push(o);}break;case "!":if(a.length===0)j.error("Error parsing ink file: Conditional statement is not valid",i);else {let o={type:"union",unionType:"not",condition:a[a.length-1]};a[a.length-1]=o;}break;case "!?":if(a.length>1){let o={type:"union",unionType:"not",condition:{type:"compare",operator:"CONTAINS",leftValue:a[a.length-2],rightValue:a[a.length-1]}};a.pop(),a.pop(),a.push(o);}else j.error("Error parsing ink file: Conditional statement is not valid",i);break;default:if(yu.includes(s))if(a.length<2)j.error("Error parsing ink file: Conditional statement is not valid",i);else {let o={type:"compare",operator:s,rightValue:a[a.length-1],leftValue:a[a.length-2]};a.pop(),a.pop(),a.push(o);}else if(Nu.includes(s))if(a.length<2)j.error("Error parsing ink file: Conditional statement is not valid",i);else {s==="L^"&&(s="INTERSECTION");let o={type:"arithmetic",operator:s,rightValue:a[a.length-1],leftValue:a[a.length-2]};a.pop(),a.pop(),a.push(o);}else if(Iu.includes(s)){let o={type:"arithmeticsingle",operator:s,leftValue:a[a.length-1]};a.pop(),a.push(o);}else s.startsWith("^")&&a.push(tt(s));}else if(typeof s=="object"&&"CNT?"in s)if(new RegExp(/.*\.[0-9]\..*/).test(s["CNT?"])){let o=s["CNT?"].split("."),l=o.pop(),u=o.pop();if(u===void 0||l===void 0){j.error("Error parsing ink file: Conditional statement is not valid",i);return}let h=Number(u),c=o.join(".");if(c.includes("^.")){let f=c.split("."),y=f[f.length-1].replaceAll(".","_|_");f.pop(),c=`${f.join(".")}.${y}`,l.includes("c-")&&(c=c+"_|_"+l);}else c=c.replaceAll(".","_|_");let d=Qt(c,e);if(!d)return;a.push({type:"compare",leftValue:Ea(d),operator:">=",rightValue:{type:"value",value:h}});}else {let o=Qt(s["CNT?"],e);if(!o)return;a.push(Ea(o));}else if(typeof s=="object"&&"VAR?"in s)a.push(Bt({key:s["VAR?"],defaultType:"storage"},t));else if(typeof s=="object"&&"f()"in s){let o=s["f()"],l=r.find(h=>h.name===o);if(!l){j.error(`Error parsing ink file: Function ${o} is not defined`,i);return}let u=[];for(let h=0;h<l.args;h++)a.length!==0&&u.push(a.pop());a.push({type:"function",functionName:o,args:u.reverse()});}else if(typeof s=="object"&&"^->"in s)s["^->"].includes("$r")||a.push(s["^->"]);else if(typeof s=="object"&&"list"in s){let o=Object.values(s.list).map(l=>l);a.push(o);}else a.push(s);}),a}function Sa(i,e,t,n){return Dt(i,e,t,n)}function Bt(i,e,t){let{key:n,defaultType:r}=i,a=e.indexOf(n);return a>=0?{type:"value",storageType:"params",storageOperationType:"get",key:a}:{type:"value",storageOperationType:"get",storageType:r,key:n}}function Nn(i,e,t){let{key:n,value:r,defaultType:a,artmeticValue:s}=i,o=e.indexOf(n);if(o>=0)return [{type:"value",storageType:"params",storageOperationType:"set",key:o,value:r}];if(s){if(typeof r=="object"&&"list"in r){let l=Object.values(r.list).map(u=>u);return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:l}]}return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:r}]}else if(typeof r=="object"){if("list"in r&&typeof r.list=="object"){if("origins"in r&&Array.isArray(r.origins)&&r.origins.length>0)return r.origins.reduce(l=>(l.push({type:"value",storageOperationType:"set",storageType:a,key:n,value:Object.values(t.enums[n])}),Object.entries(t.enums[n]).forEach(([u,h])=>{l.push({type:"value",storageOperationType:"set",storageType:a,key:`${n}.${u}`,value:h});}),l),[]);{let l=new Set,u=Object.entries(r.list).reduce((h,[c,d])=>{let[f,y]=c.split(".");return h.push({type:"value",storageOperationType:"set",storageType:a,key:y,value:d}),l.add(f),h},[]);return l.forEach(h=>{u.push({type:"value",storageOperationType:"set",storageType:a,key:h,value:Object.values(t.enums[h])});}),n in t.enums?Object.entries(t.enums[n]).forEach(([h,c])=>{u.push({type:"value",storageOperationType:"set",storageType:a,key:`${n}.${h}`,value:c});}):u.push({type:"value",storageOperationType:"set",storageType:a,key:n,value:Object.values(r.list)}),u}}else if(typeof r=="object"&&"VAR?"in r){if(typeof r["VAR?"]=="string"&&r["VAR?"].includes(".")){let[l,u]=r["VAR?"].split(".");if(l in t.enums&&u in t.enums[l])return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:t.enums[l][u]}]}return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:Bt({key:r["VAR?"],defaultType:"storage"},e)}]}}return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:r}]}function Ea(i){return {type:"value",storageType:"label",storageOperationType:"get",label:i}}function Da(i,e){return e||new RegExp(`${"_|_".replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}c-\\d+$`).test(i)?"call":"jump"}function Oi(i,e){if(e){if(typeof e=="string")e.startsWith("^")&&i.push(tt(e));else if(typeof e=="object"&&"type"in e)switch(e.type){case "value":case "function":console.warn("Warning: trying to add a value or function operation as text. This is likely a mistake, so it will be ignored.");break;default:i.push(e);}}}function ba(i,e,t,n,r,a={}){let{isNewLine:s=true,isHashtagScript:o=false,isThreads:l=false}=a;return op(i,e,t,n,r,{isNewLine:s,isHashtagScript:o,isThreads:l})}function op(i,e,t,n,r,a){if(!e)return;let{isNewLine:s,isHashtagScript:o=false,isThreads:l}=a;if(o){if(Array.isArray(e)&&e.length>0){let u={goNextStep:true},h=[];try{if(e.length===1&&typeof e[0]=="string"&&!e[0].match(Pu)){let c=e[0],d=T.convertTagTolist(c),f=T.convertOperation(d,u);f&&(f.$origin=c,h.push(f));}}catch{}h.length===0&&h.push({type:"operationtoconvert",values:e}),i.push({...u,operations:h});}}else if(typeof e=="string"&&e.startsWith("^")||e&&typeof e=="object"&&"type"in e&&e.type==="value"&&e.storageOperationType==="get"){if(!s&&i.length>0){let u=i[i.length-1];!u.glueEnabled&&!u.operations&&!u.labelToOpen&&(u.glueEnabled=true,u.labelToOpen||(u.goNextStep=true)),i[i.length-1]=u;}typeof e=="string"?i.push(lp(tt(e))):i.push({dialogue:e});}else if(typeof e=="string"){if(e==="end")i.push({end:"game_end"});else if(e==="done")i.push({end:"label_end",goNextStep:true});else if(e==="<>")if(i.length>0){let u=i[i.length-1];u.glueEnabled=true,u.labelToOpen||(u.goNextStep=true),i[i.length-1]=u;}else i.push({glueEnabled:true,goNextStep:false});}else if(typeof e=="object"){if("type"in e)switch(e.type){case "value":e.storageOperationType==="set"?(typeof e.value=="string"&&e.value.startsWith("^")&&(e.value=tt(e.value)),i.push({goNextStep:true,operations:[e]})):console.warn("Warning: trying to add a value get operation as step. This is likely a mistake, so it will be ignored.");break;case "function":i.push({goNextStep:true,operations:[e]});break;default:if(!s&&i.length>0){let u=i[i.length-1];!u.glueEnabled&&!u.operations&&(u.glueEnabled=true,u.labelToOpen||(u.goNextStep=true)),i[i.length-1]=u;}i.push({conditionalStep:e});}else if("->"in e){let u=s?void 0:true;if(u&&t.includes("c-")&&i.length>0&&i[i.length-1]?.dialogue===void 0&&(u=void 0),!s&&i.length>0){let h=i[i.length-1];h.labelToOpen||(h.goNextStep=true),i[i.length-1]=h;}if(e.params&&e.params.length===0&&delete e.params,e.var)i.push({labelToOpen:{label:Bt({key:e["->"],defaultType:"storage"},r),type:l?"call":"jump",params:e.params},glueEnabled:u});else {let h=Qt(e["->"],t);if(!h)return;i.push({labelToOpen:{label:h,type:Da(h,l),params:e.params},glueEnabled:u});}}else if("->t->"in e){let u=s?void 0:true;if(u&&t.includes("c-")&&i.length>0&&i[i.length-1]?.dialogue===void 0&&(u=void 0),!s&&i.length>0){let c=i[i.length-1];c.labelToOpen||(c.goNextStep=true),i[i.length-1]=c;}e.params&&e.params.length===0&&delete e.params;let h=Qt(e["->t->"],t);if(!h)return;i.push({labelToOpen:{label:h,type:"call",params:e.params},glueEnabled:u});}}}function lp(i){let e;if(i.includes(": ")){let t=i.split(": "),n=t[0],r=t.slice(1).join(": ");RegisteredCharacters.has(n)&&(e=n,i=r);}return e?{dialogue:{character:e,text:i}}:{dialogue:i}}function Aa(i,e,t,n=true,r=false){return up(i,e,t,n,r)}function up(i,e,t,n,r=false){e&&(typeof e=="string"&&e.startsWith("^")||e&&typeof e=="object"&&"type"in e&&e.type==="value"&&e.storageOperationType==="get"?typeof e=="string"?i.push(tt(e)):i.push(e):typeof e=="object"&&"type"in e&&i.push(e));}function Pi(i,e,t,n){if(i.length===0){j.error("Error parsing ink file: Arithmetic statement is not valid",i);return}let r=Dt(i,e,t,n);if(r.length===1){let a=r[0];return a&&typeof a=="object"&&"type"in a?{type:"value",storageType:"logic",storageOperationType:"get",operation:a}:a}}function Zt(i,e,t,n="",r,a,s=void 0){let o=[],l="sequential",u=false,h=true;i.forEach(f=>{f==="%"&&(l="loop"),f==="seq"&&(l="random"),f==="MIN"&&(u=true);});let c=i[i.length-1];return Object.keys(c).forEach(f=>{let y=c[f];if(Array.isArray(y)&&y.length>3){y=y.slice(1,y.length-2);let v=[];bt(y,n,r,v,e,e,t,en,s,true,a),v.length===1?o.push(v[0]):o.push({type:"resulttocombine",combine:"cross",secondConditionalItem:v});}else Array.isArray(y)&&y.length===3&&(h=false);}),l==="sequential"?{type:"stepswitch",elements:o,choiceType:l,end:h?"lastItem":void 0,nestedId:s}:u&&l==="random"?{type:"stepswitch",elements:o,choiceType:"sequentialrandom",end:h?"lastItem":void 0,nestedId:s}:{type:"stepswitch",elements:o,choiceType:l}}function bt(i,e,t,n=[],r,a,s,o,l=void 0,u=true,h=[]){let c=false,d=[],f=false,y=false,v=false,w=[],A=[];if(t.preDialog[e]&&(u=false,r(n,`^${t.preDialog[e].text}`,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),t.preDialog[e].glue&&r(n,"<>",e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),delete t.preDialog[e]),i.includes("visit")){let p=Zt(i,a,s,e,t,h,l);p&&(!u&&n.length>0&&r(n,"<>",e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}));return}let C=i[0];if(C&&typeof C=="object"&&"temp="in C){for(;i[0]&&typeof i[0]=="object"&&"temp="in i[0];)h.push(i[0]["temp="]),i.shift();h=h.reverse();}if(i.forEach((p,S)=>{if(y){if(typeof p=="string"&&p==="/#"){let m=[];bt(A,e,t,m,Aa,Aa,s,o,l,u),r(n,m,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),y=false,A=[];}else A.push(p);return}else if(c)if(Array.isArray(p))d.push(p);else if(p&&typeof p=="object")"CNT?"in p?S>0&&i[S-1]==="ev"?(f=true,w.push(p)):f?w.push(p):(d.push(p),u=false):"VAR="in p||"temp="in p?Nn({key:"VAR="in p?p["VAR="]:p["temp="],value:i[S-1],defaultType:"VAR="in p?"storage":"tempstorage"},h,t).forEach(E=>{if(E.value&&typeof E.value=="string"&&E.value==="/str"&&(E.value=i[S-2]),E.value&&typeof E.value=="object"&&"^->"in E.value&&(E.value=E.value["^->"]),d.length>1){let x=Pi(d,e,h,t);d=[],x&&typeof x=="object"&&"type"in x&&x.type==="value"&&"storageType"in x&&x.storageType==="logic"&&(E.value=x.operation);}(typeof E.key!="string"||!E.key.includes("$r"))&&(r(n,E,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=true);}):"VAR?"in p?d.push(p):"^->"in p?p["^->"].includes("$r")||d.push(p):("f()"in p||"list"in p&&typeof p.list=="object")&&d.push(p);else switch(p){case "/ev":f&&w.push(p),c=false,d.push(p);break;case "out":if(d.length>0){let m=d[d.length-1];if(m&&typeof m=="object"&&"VAR?"in m){d.pop();let E=Bt({key:m["VAR?"],defaultType:"storage"},h);r(n,E,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v});}else {let E=[];for(;d.length>0&&d[d.length-1]!=="/ev";)E.push(d.pop());E=E.reverse();let x=Pi(E,e,h,t);d=[],x&&typeof x=="object"&&"type"in x&&x.type==="value"&&"storageType"in x&&x.storageType==="logic"?r(n,{storageOperationType:"get",storageType:"logic",operation:x.operation,type:"value"},e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}):(r(n,"<>",e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),x=`^${x}`,r(n,x,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}));}u=false;}break;case "pop":{let m=d[d.length-1];if(m&&typeof m=="object"&&"f()"in m){let E=[];for(;d.length>0&&d[d.length-1]!=="/ev";)E.push(d.pop());E=E.reverse();let x=Dt(E,e,h,t);d=[],x.forEach(P=>{P&&typeof P=="object"&&"type"in P&&P.type==="function"?r(n,P,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}):j.warn("Unhandled case: value is not a function",P);}),u=false;}else d.push(p);return}default:d.push(p);}else if(typeof p=="string")if(p.startsWith("^"))r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;else if(p==="ev")c=true;else if(p===`
|
|
68
|
-
`)u=true;else if(p==="done"||p==="end")r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;else if(p==="<>")r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;else if(p==="nop"&&f){let m=
|
|
66
|
+
\`\`\``,validation:g.tuple([g.enum(["load","lazyload"]),g.enum(["assets","bundle"])]).rest(g.string())});T.addMapper(i=>({type:"all",operationType:i[0]}),{name:"all-sounds-pause-resume-stop",description:"Pauses, resumes, or stops all active sounds at once.\n\n```ink\n# pause all sounds\n# resume all sounds\n# stop all sounds\n```",validation:g.tuple([g.enum(["pause","resume","stop"]),g.literal("all"),g.enum(["sounds","sound"])])});T.addMapper(i=>({type:"sound",operationType:"pause",alias:i[2]}),{name:"pause-sound",description:"Pauses the sound identified by its alias.\n\n```ink\n# pause sound <alias>\n```",validation:g.tuple([g.literal("pause"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"channel",operationType:"pause",alias:i[2]}),{name:"pause-channel",description:"Pauses the audio channel identified by its alias.\n\n```ink\n# pause channel <alias>\n```",validation:g.tuple([g.literal("pause"),g.literal("channel"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"resume",alias:i[2]}),{name:"resume-sound",description:"Resumes the sound identified by its alias.\n\n```ink\n# resume sound <alias>\n```",validation:g.tuple([g.literal("resume"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"channel",operationType:"resume",alias:i[2]}),{name:"resume-channel",description:"Resumes the audio channel identified by its alias.\n\n```ink\n# resume channel <alias>\n```",validation:g.tuple([g.literal("resume"),g.literal("channel"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"stop",alias:i[2]}),{name:"stop-sound",description:"Stops the sound identified by its alias.\n\n```ink\n# stop sound <alias>\n```",validation:g.tuple([g.literal("stop"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"stop",alias:i[2]}),{name:"remove-sound",description:"Removes (stops) the sound identified by its alias.\n\n```ink\n# remove sound <alias>\n```",deprecated:true,validation:g.tuple([g.literal("remove"),g.literal("sound"),g.string()])});T.addMapper(i=>({type:"sound",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-sound",description:"Edits the properties of a sound identified by its alias.\n\n```ink\n# edit sound <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("sound"),g.string()]).rest(g.string()).refine(i=>(i.length-3)%2===0)});T.addMapper(i=>{let e=i[2],t={type:"sound",operationType:"play",alias:e,url:e};return i.length>3&&(t.props=T.convertListStringToObj(i.slice(3))),t},{name:"play-sound",description:"Plays a sound using its alias as the URL, with optional key/value properties.\n\n```ink\n# play sound <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("play"),g.literal("sound"),g.string()]).rest(g.string()).refine(i=>(i.length-3)%2===0)});T.addMapper(i=>{let e=i[2],t=i[3],n={type:"sound",operationType:"play",alias:e,url:t};return i.length>4&&(n.props=T.convertListStringToObj(i.slice(4))),n},{name:"play-sound-with-source",description:"Plays a sound with an explicit source URL and optional key/value properties.\n \n```ink\n# play sound <alias> <source> [<key> <value> \u2026]\n```\n",validation:g.tuple([g.literal("play"),g.literal("sound"),g.string()]).rest(g.string()).refine(i=>i.length>3&&(i.length-3)%2!==0)});function et(i){let e=[],t=0,n="";for(let r of i)r.startsWith("{")?(t++,n+=r):r.endsWith("}")&&t>0?(t--,n+=r,t===0&&(e.push(n),n="")):t>0?n+=r:e.push(r);return e}function _i(i,e){switch(i){case "dissolve":case "fade":case "movein":case "moveout":case "zoomin":case "zoomout":case "pushin":case "pushout":break;default:return}let t={type:i};if(e.length>0)try{t.props=T.convertListStringToObj(e);}catch{}return t}function Fu(i,e,t){let n,r;t.length%2===0?(n=e,r=t):(n=t[0],r=t.slice(1));let a={type:i,operationType:"show",alias:e,url:n};if(r.length>0){if(r.includes("with")&&r.length>r.indexOf("with")+1){let s=r[r.indexOf("with")+1],o=r.slice(r.indexOf("with")+2);r=r.slice(0,r.indexOf("with"));let l=_i(s,o);l!==void 0&&(a.transition=l);}r.length>0&&(a.props=T.convertListStringToObj(r));}return a}function sp(i,e){let t,n;e.length%2===0?(t=i,n=e):(t=e[0],n=e.slice(1));let r={type:"text",operationType:"show",alias:i,text:t};if(n.length>0){if(n.includes("with")&&n.length>n.indexOf("with")+1){let a=n[n.indexOf("with")+1],s=n.slice(n.indexOf("with")+2);n=n.slice(0,n.indexOf("with"));let o=_i(a,s);o!==void 0&&(r.transition=o);}n.length>0&&(r.props=T.convertListStringToObj(n));}return r}function Fn(i,e,t){let n={type:i,operationType:"remove",alias:e};if(t.includes("with")&&t.length>t.indexOf("with")+1){let r=t[t.indexOf("with")+1],a=t.slice(t.indexOf("with")+2),s=_i(r,a);s!==void 0&&(n.transition=s);}return n}function Ca(i,e){let t=l=>l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'")||l.startsWith("`")&&l.endsWith("`")?l.substring(1,l.length-1):l,n=[],r=e.findIndex(l=>l.startsWith("[")),a=e.findIndex(l=>l.endsWith("]"));if(r===-1||a===-1){j.error("Show imagecontainer must have a list of image ulrs",e);return}if(n=e.slice(r,a+1),n.length<2){j.error("Show imagecontainer must have a list of image ulrs",e);return}n[0]==="["?n.shift():n[0]=n[0].substring(1),n[n.length-1]==="]"?n.pop():n[n.length-1]=n[n.length-1].substring(0,n[n.length-1].length-1);let s={type:"imagecontainer",operationType:"show",alias:i,urls:n.map(l=>t(l))},o=e.slice(a+1);if(o.length>0){if(o.includes("with")&&o.length>o.indexOf("with")+1){let l=o[o.indexOf("with")+1],u=o.slice(o.indexOf("with")+2);o=o.slice(0,o.indexOf("with"));let h=_i(l,u);h!==void 0&&(s.transition=h);}o.length>0&&(s.props=T.convertListStringToObj(o));}return s}function ya(i){let e=i.slice(3),t=e.findIndex(s=>s.startsWith("[")),n=e.findIndex(s=>s.endsWith("]"));if(t===-1||n===-1||n<t)return;let r=e.slice(n+1),a=r.indexOf("with");return a===-1?{beforeWith:r,afterWith:[]}:{beforeWith:r.slice(0,a),afterWith:r.slice(a+1)}}T.addMapper(i=>({alias:i[1],type:"shake",props:T.convertListStringToObj(i.slice(2))}),{name:"shake-effect",description:"Applies shake effect to a canvas alias with optional key/value parameters.\n\n```ink\n# shake <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("shake"),g.string()]).rest(g.string()).refine(i=>(i.length-2)%2===0)});T.addMapper(i=>{let e=i.slice(2),t=e,n=[];if(e.includes("options")){let a=e.indexOf("options");t=e.slice(0,a),n=e.slice(a+1);}return {alias:i[1],type:"animate",keyframes:T.convertListStringToObj(t),options:T.convertListStringToObj(n)}},{name:"animate-effect",description:"Animates a canvas alias with keyframes and optional options section, both in key/value pairs.\n\n```ink\n# animate <alias> [<key> <value> \u2026] [options <key> <value> \u2026]\n```",validation:g.tuple([g.literal("animate"),g.string()]).rest(g.string()).refine(i=>{let e=i.slice(2),t=e.indexOf("options");if(t===-1)return e.length%2===0;if(e.lastIndexOf("options")!==t)return false;let n=e.slice(0,t),r=e.slice(t+1);return n.length%2===0&&r.length%2===0})});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fu("image",e,t)},{name:"show-image",description:"Shows an image canvas element with optional source, properties, and transition.\n\n```ink\n# show image <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("show"),g.literal("image"),g.string()]).rest(g.string())});T.addMapper(i=>Ca(i[2],et(i.slice(3))),{name:"show-imagecontainer",description:"Shows an image-container canvas element with list and optional key/value properties.\n\n```ink\n# show imagecontainer <alias> [<list>] [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("show"),g.literal("imagecontainer"),g.string()]).rest(g.string()).refine(i=>{let e=ya(i);return e===void 0?false:e.afterWith.length===0&&e.beforeWith.length%2===0})});T.addMapper(i=>Ca(i[2],et(i.slice(3))),{name:"show-imagecontainer-with-transition",description:"Shows an image-container canvas element with list, optional properties, and transition.\n\n```ink\n# show imagecontainer <alias> [<list>] [<key> <value> \u2026] with <transition>\n```",validation:g.tuple([g.literal("show"),g.literal("imagecontainer"),g.string()]).rest(g.string()).refine(i=>{let e=ya(i);return e===void 0?false:e.afterWith.length===1&&e.beforeWith.length%2===0})});T.addMapper(i=>Ca(i[2],et(i.slice(3))),{name:"show-imagecontainer-with-transition-props",description:"Shows an image-container canvas element with list, optional properties, transition, and transition properties.\n\n```ink\n# show imagecontainer <alias> [<list>] [<key> <value> \u2026] with <transition> <key> <value> \u2026\n```",validation:g.tuple([g.literal("show"),g.literal("imagecontainer"),g.string()]).rest(g.string()).refine(i=>{let e=ya(i);return e===void 0?false:e.afterWith.length>1&&(e.afterWith.length-1)%2===0&&e.beforeWith.length%2===0})});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fu("video",e,t)},{name:"show-video",description:"Shows a video canvas element with optional source, properties, and transition.\n\n```ink\n# show video <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("show"),g.literal("video"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2];return sp(e,i.slice(3))},{name:"show-text",description:"Shows a text canvas element with optional text, properties, and transition.\n\n```ink\n# show text <alias> [<text>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("show"),g.literal("text"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("image",e,t)},{name:"remove-image",description:"Removes an image canvas element with optional source/properties and transition.\n\n```ink\n# remove image <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("image"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("video",e,t)},{name:"remove-video",description:"Removes a video canvas element with optional source/properties and transition.\n\n```ink\n# remove video <alias> [<source>] [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("video"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("canvaselement",e,t)},{name:"remove-canvaselement",description:"Removes a canvas element with optional properties and optional transition params.\n\n```ink\n# remove canvaselement <alias> [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("canvaselement"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("text",e,t)},{name:"remove-text",description:"Removes a text canvas element with optional properties and transition.\n\n```ink\n# remove text <alias> [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("text"),g.string()]).rest(g.string())});T.addMapper(i=>{let e=i[2],t=et(i.slice(3));return Fn("imagecontainer",e,t)},{name:"remove-imagecontainer",description:"Removes an image-container canvas element with optional properties and transition.\n\n```ink\n# remove imagecontainer <alias> [<key> <value> \u2026] [with <transition> [<key> <value> \u2026]]\n```",validation:g.tuple([g.literal("remove"),g.literal("imagecontainer"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"image",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-image",description:"Edits the properties of an image canvas element identified by its alias.\n\n```ink\n# edit image <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("image"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"imagecontainer",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-imagecontainer",description:"Edits the properties of an image-container canvas element identified by its alias.\n\n```ink\n# edit imagecontainer <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("imagecontainer"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"canvaselement",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-canvaselement",description:"Edits the properties of a canvas element identified by its alias.\n\n```ink\n# edit canvaselement <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("canvaselement"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"video",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-video",description:"Edits the properties of a video canvas element identified by its alias.\n\n```ink\n# edit video <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("video"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"text",operationType:"edit",alias:i[2],props:T.convertListStringToObj(i.slice(3))}),{name:"edit-text",description:"Edits the properties of a text canvas element identified by its alias.\n\n```ink\n# edit text <alias> [<key> <value> \u2026]\n```",validation:g.tuple([g.literal("edit"),g.literal("text"),g.string()]).rest(g.string())});T.addMapper(i=>({type:"input",operationType:"request"}),{name:"request-input",description:"Requests player input without any additional constraints.\n\n```ink\n# request input\n```",validation:g.tuple([g.literal("request"),g.literal("input")])});T.addMapper(i=>{let e={type:"input",operationType:"request"};try{let t=T.convertListStringToObj(i.slice(2));"type"in t&&typeof t.type=="string"&&(e.valueType=t.type),"default"in t&&(e.defaultValue=t.default);}catch{}return e},{name:"request-input-params",description:"Requests player input with optional key/value parameters (e.g. type, default).\n\n```ink\n# request input <key> <value> [<key> <value> \u2026]\n# request input type number default 18\n```",validation:g.tuple([g.literal("request"),g.literal("input")]).rest(g.string()).refine(i=>i.length>2&&(i.length-2)%2===0)});var Ti="global decl",Lt="___external_value___",Nu=/\[([^\]]+)\]/;var Iu=["+","-","/","*","%","_","==",">","<",">=","<=","!=","!","&&","||","MIN","MAX"],Vu=["+","-","/","*","%","POW","RANDOM","L^"],ku=["INT","FLOOR","FLOAT"];function Qt(i,e){if(i.endsWith(".s"))return;if(new RegExp(/.*\.[0-9]+\..*$/).test(i)&&(i=i.split(".").filter(r=>!r.match(/^[0-9]+$/)).join("."),!i.startsWith(".")))return i.replaceAll(".","_|_");if(!new RegExp(/^\.\^.*$/).test(i)&&i.includes("g-")){let n=i.split("g-");return va(e)+"_|_"+"g-"+n[n.length-1]}let t=0;for(;new RegExp(/^\.\^.*$/).test(i);)t++,i=i.substring(2);if(t=t-1,new RegExp(/^\..*$/).test(i)&&e){let n=i.substring(1);return va(e,t)+"_|_"+n.replaceAll(".","_|_")}return i.replaceAll(".","_|_")||va(e,t).replaceAll(".","_|_")}function va(i,e=0){let t=i.split("_|_");for(;t.length>1&&e>0;)t.pop()?.includes("g-")&&e--,e--;return t.join("_|_")}var Ru="\xA7DOUBLE_SLASH_CONVERTOR\xA7";function tt(i){return i.startsWith("^")&&(i=i.substring(1)),i=i.replaceAll("\\\\",Ru),i=i.replaceAll("\\n",`
|
|
67
|
+
`),i=i.replaceAll("\\t"," "),i=i.replaceAll(" "," "),i=i.replaceAll(Ru,"\\\\"),i}function Dt(i,e,t,n){let{functions:r}=n;i=i.map(s=>{if(typeof s=="string")switch(s){case "rnd":return "RANDOM";case "?":return "CONTAINS"}return s});let a=[];return i.forEach(s=>{if(typeof s=="string")switch(s){case "&&":case "||":if(a.length>=2){let o={type:"union",unionType:s==="&&"?"and":"or",conditions:[a[a.length-2],a[a.length-1]]};a.pop(),a.pop(),a.push(o);}break;case "!":if(a.length===0)j.error("Error parsing ink file: Conditional statement is not valid",i);else {let o={type:"union",unionType:"not",condition:a[a.length-1]};a[a.length-1]=o;}break;case "!?":if(a.length>1){let o={type:"union",unionType:"not",condition:{type:"compare",operator:"CONTAINS",leftValue:a[a.length-2],rightValue:a[a.length-1]}};a.pop(),a.pop(),a.push(o);}else j.error("Error parsing ink file: Conditional statement is not valid",i);break;default:if(Eu.includes(s))if(a.length<2)j.error("Error parsing ink file: Conditional statement is not valid",i);else {let o={type:"compare",operator:s,rightValue:a[a.length-1],leftValue:a[a.length-2]};a.pop(),a.pop(),a.push(o);}else if(Vu.includes(s))if(a.length<2)j.error("Error parsing ink file: Conditional statement is not valid",i);else {s==="L^"&&(s="INTERSECTION");let o={type:"arithmetic",operator:s,rightValue:a[a.length-1],leftValue:a[a.length-2]};a.pop(),a.pop(),a.push(o);}else if(ku.includes(s)){let o={type:"arithmeticsingle",operator:s,leftValue:a[a.length-1]};a.pop(),a.push(o);}else s.startsWith("^")&&a.push(tt(s));}else if(typeof s=="object"&&"CNT?"in s)if(new RegExp(/.*\.[0-9]\..*/).test(s["CNT?"])){let o=s["CNT?"].split("."),l=o.pop(),u=o.pop();if(u===void 0||l===void 0){j.error("Error parsing ink file: Conditional statement is not valid",i);return}let h=Number(u),c=o.join(".");if(c.includes("^.")){let f=c.split("."),y=f[f.length-1].replaceAll(".","_|_");f.pop(),c=`${f.join(".")}.${y}`,l.includes("c-")&&(c=c+"_|_"+l);}else c=c.replaceAll(".","_|_");let d=Qt(c,e);if(!d)return;a.push({type:"compare",leftValue:Ea(d),operator:">=",rightValue:{type:"value",value:h}});}else {let o=Qt(s["CNT?"],e);if(!o)return;a.push(Ea(o));}else if(typeof s=="object"&&"VAR?"in s)a.push(Bt({key:s["VAR?"],defaultType:"storage"},t));else if(typeof s=="object"&&"f()"in s){let o=s["f()"],l=r.find(h=>h.name===o);if(!l){j.error(`Error parsing ink file: Function ${o} is not defined`,i);return}let u=[];for(let h=0;h<l.args;h++)a.length!==0&&u.push(a.pop());a.push({type:"function",functionName:o,args:u.reverse()});}else if(typeof s=="object"&&"^->"in s)s["^->"].includes("$r")||a.push(s["^->"]);else if(typeof s=="object"&&"list"in s){let o=Object.values(s.list).map(l=>l);a.push(o);}else a.push(s);}),a}function Sa(i,e,t,n){return Dt(i,e,t,n)}function Bt(i,e,t){let{key:n,defaultType:r}=i,a=e.indexOf(n);return a>=0?{type:"value",storageType:"params",storageOperationType:"get",key:a}:{type:"value",storageOperationType:"get",storageType:r,key:n}}function Nn(i,e,t){let{key:n,value:r,defaultType:a,artmeticValue:s}=i,o=e.indexOf(n);if(o>=0)return [{type:"value",storageType:"params",storageOperationType:"set",key:o,value:r}];if(s){if(typeof r=="object"&&"list"in r){let l=Object.values(r.list).map(u=>u);return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:l}]}return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:r}]}else if(typeof r=="object"){if("list"in r&&typeof r.list=="object"){if("origins"in r&&Array.isArray(r.origins)&&r.origins.length>0)return r.origins.reduce(l=>(l.push({type:"value",storageOperationType:"set",storageType:a,key:n,value:Object.values(t.enums[n])}),Object.entries(t.enums[n]).forEach(([u,h])=>{l.push({type:"value",storageOperationType:"set",storageType:a,key:`${n}.${u}`,value:h});}),l),[]);{let l=new Set,u=Object.entries(r.list).reduce((h,[c,d])=>{let[f,y]=c.split(".");return h.push({type:"value",storageOperationType:"set",storageType:a,key:y,value:d}),l.add(f),h},[]);return l.forEach(h=>{u.push({type:"value",storageOperationType:"set",storageType:a,key:h,value:Object.values(t.enums[h])});}),n in t.enums?Object.entries(t.enums[n]).forEach(([h,c])=>{u.push({type:"value",storageOperationType:"set",storageType:a,key:`${n}.${h}`,value:c});}):u.push({type:"value",storageOperationType:"set",storageType:a,key:n,value:Object.values(r.list)}),u}}else if(typeof r=="object"&&"VAR?"in r){if(typeof r["VAR?"]=="string"&&r["VAR?"].includes(".")){let[l,u]=r["VAR?"].split(".");if(l in t.enums&&u in t.enums[l])return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:t.enums[l][u]}]}return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:Bt({key:r["VAR?"],defaultType:"storage"},e)}]}}return [{type:"value",storageOperationType:"set",storageType:a,key:n,value:r}]}function Ea(i){return {type:"value",storageType:"label",storageOperationType:"get",label:i}}function Da(i,e){return e||new RegExp(`${"_|_".replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}c-\\d+$`).test(i)?"call":"jump"}function Oi(i,e){if(e){if(typeof e=="string")e.startsWith("^")&&i.push(tt(e));else if(typeof e=="object"&&"type"in e)switch(e.type){case "value":case "function":console.warn("Warning: trying to add a value or function operation as text. This is likely a mistake, so it will be ignored.");break;default:i.push(e);}}}function ba(i,e,t,n,r,a={}){let{isNewLine:s=true,isHashtagScript:o=false,isThreads:l=false}=a;return op(i,e,t,n,r,{isNewLine:s,isHashtagScript:o,isThreads:l})}function op(i,e,t,n,r,a){if(!e)return;let{isNewLine:s,isHashtagScript:o=false,isThreads:l}=a;if(o){if(Array.isArray(e)&&e.length>0){let u={goNextStep:true},h=[];try{if(e.length===1&&typeof e[0]=="string"&&!e[0].match(Nu)){let c=e[0],d=T.convertTagTolist(c),f=T.convertOperation(d,u);f&&(f.$origin=c,h.push(f));}}catch{}h.length===0&&h.push({type:"operationtoconvert",values:e}),i.push({...u,operations:h});}}else if(typeof e=="string"&&e.startsWith("^")||e&&typeof e=="object"&&"type"in e&&e.type==="value"&&e.storageOperationType==="get"){if(!s&&i.length>0){let u=i[i.length-1];!u.glueEnabled&&!u.operations&&!u.labelToOpen&&(u.glueEnabled=true,u.labelToOpen||(u.goNextStep=true)),i[i.length-1]=u;}typeof e=="string"?i.push(lp(tt(e))):i.push({dialogue:e});}else if(typeof e=="string"){if(e==="end")i.push({end:"game_end"});else if(e==="done")i.push({end:"label_end",goNextStep:true});else if(e==="<>")if(i.length>0){let u=i[i.length-1];u.glueEnabled=true,u.labelToOpen||(u.goNextStep=true),i[i.length-1]=u;}else i.push({glueEnabled:true,goNextStep:false});}else if(typeof e=="object"){if("type"in e)switch(e.type){case "value":e.storageOperationType==="set"?(typeof e.value=="string"&&e.value.startsWith("^")&&(e.value=tt(e.value)),i.push({goNextStep:true,operations:[e]})):console.warn("Warning: trying to add a value get operation as step. This is likely a mistake, so it will be ignored.");break;case "function":i.push({goNextStep:true,operations:[e]});break;default:if(!s&&i.length>0){let u=i[i.length-1];!u.glueEnabled&&!u.operations&&(u.glueEnabled=true,u.labelToOpen||(u.goNextStep=true)),i[i.length-1]=u;}i.push({conditionalStep:e});}else if("->"in e){let u=s?void 0:true;if(u&&t.includes("c-")&&i.length>0&&i[i.length-1]?.dialogue===void 0&&(u=void 0),!s&&i.length>0){let h=i[i.length-1];h.labelToOpen||(h.goNextStep=true),i[i.length-1]=h;}if(e.params&&e.params.length===0&&delete e.params,e.var)i.push({labelToOpen:{label:Bt({key:e["->"],defaultType:"storage"},r),type:l?"call":"jump",params:e.params},glueEnabled:u});else {let h=Qt(e["->"],t);if(!h)return;i.push({labelToOpen:{label:h,type:Da(h,l),params:e.params},glueEnabled:u});}}else if("->t->"in e){let u=s?void 0:true;if(u&&t.includes("c-")&&i.length>0&&i[i.length-1]?.dialogue===void 0&&(u=void 0),!s&&i.length>0){let c=i[i.length-1];c.labelToOpen||(c.goNextStep=true),i[i.length-1]=c;}e.params&&e.params.length===0&&delete e.params;let h=Qt(e["->t->"],t);if(!h)return;i.push({labelToOpen:{label:h,type:"call",params:e.params},glueEnabled:u});}}}function lp(i){let e;if(i.includes(": ")){let t=i.split(": "),n=t[0],r=t.slice(1).join(": ");RegisteredCharacters.has(n)&&(e=n,i=r);}return e?{dialogue:{character:e,text:i}}:{dialogue:i}}function Aa(i,e,t,n=true,r=false){return up(i,e,t,n,r)}function up(i,e,t,n,r=false){e&&(typeof e=="string"&&e.startsWith("^")||e&&typeof e=="object"&&"type"in e&&e.type==="value"&&e.storageOperationType==="get"?typeof e=="string"?i.push(tt(e)):i.push(e):typeof e=="object"&&"type"in e&&i.push(e));}function Pi(i,e,t,n){if(i.length===0){j.error("Error parsing ink file: Arithmetic statement is not valid",i);return}let r=Dt(i,e,t,n);if(r.length===1){let a=r[0];return a&&typeof a=="object"&&"type"in a?{type:"value",storageType:"logic",storageOperationType:"get",operation:a}:a}}function Zt(i,e,t,n="",r,a,s=void 0){let o=[],l="sequential",u=false,h=true;i.forEach(f=>{f==="%"&&(l="loop"),f==="seq"&&(l="random"),f==="MIN"&&(u=true);});let c=i[i.length-1];return Object.keys(c).forEach(f=>{let y=c[f];if(Array.isArray(y)&&y.length>3){y=y.slice(1,y.length-2);let v=[];bt(y,n,r,v,e,e,t,en,s,true,a),v.length===1?o.push(v[0]):o.push({type:"resulttocombine",combine:"cross",secondConditionalItem:v});}else Array.isArray(y)&&y.length===3&&(h=false);}),l==="sequential"?{type:"stepswitch",elements:o,choiceType:l,end:h?"lastItem":void 0,nestedId:s}:u&&l==="random"?{type:"stepswitch",elements:o,choiceType:"sequentialrandom",end:h?"lastItem":void 0,nestedId:s}:{type:"stepswitch",elements:o,choiceType:l}}function bt(i,e,t,n=[],r,a,s,o,l=void 0,u=true,h=[]){let c=false,d=[],f=false,y=false,v=false,w=[],D=[];if(t.preDialog[e]&&(u=false,r(n,`^${t.preDialog[e].text}`,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),t.preDialog[e].glue&&r(n,"<>",e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),delete t.preDialog[e]),i.includes("visit")){let p=Zt(i,a,s,e,t,h,l);p&&(!u&&n.length>0&&r(n,"<>",e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}));return}let C=i[0];if(C&&typeof C=="object"&&"temp="in C){for(;i[0]&&typeof i[0]=="object"&&"temp="in i[0];)h.push(i[0]["temp="]),i.shift();h=h.reverse();}if(i.forEach((p,S)=>{if(y){if(typeof p=="string"&&p==="/#"){let m=[];bt(D,e,t,m,Aa,Aa,s,o,l,u),r(n,m,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),y=false,D=[];}else D.push(p);return}else if(c)if(Array.isArray(p))d.push(p);else if(p&&typeof p=="object")"CNT?"in p?S>0&&i[S-1]==="ev"?(f=true,w.push(p)):f?w.push(p):(d.push(p),u=false):"VAR="in p||"temp="in p?Nn({key:"VAR="in p?p["VAR="]:p["temp="],value:i[S-1],defaultType:"VAR="in p?"storage":"tempstorage"},h,t).forEach(E=>{if(E.value&&typeof E.value=="string"&&E.value==="/str"&&(E.value=i[S-2]),E.value&&typeof E.value=="object"&&"^->"in E.value&&(E.value=E.value["^->"]),d.length>1){let x=Pi(d,e,h,t);d=[],x&&typeof x=="object"&&"type"in x&&x.type==="value"&&"storageType"in x&&x.storageType==="logic"&&(E.value=x.operation);}(typeof E.key!="string"||!E.key.includes("$r"))&&(r(n,E,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=true);}):"VAR?"in p?d.push(p):"^->"in p?p["^->"].includes("$r")||d.push(p):("f()"in p||"list"in p&&typeof p.list=="object")&&d.push(p);else switch(p){case "/ev":f&&w.push(p),c=false,d.push(p);break;case "out":if(d.length>0){let m=d[d.length-1];if(m&&typeof m=="object"&&"VAR?"in m){d.pop();let E=Bt({key:m["VAR?"],defaultType:"storage"},h);r(n,E,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v});}else {let E=[];for(;d.length>0&&d[d.length-1]!=="/ev";)E.push(d.pop());E=E.reverse();let x=Pi(E,e,h,t);d=[],x&&typeof x=="object"&&"type"in x&&x.type==="value"&&"storageType"in x&&x.storageType==="logic"?r(n,{storageOperationType:"get",storageType:"logic",operation:x.operation,type:"value"},e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}):(r(n,"<>",e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),x=`^${x}`,r(n,x,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}));}u=false;}break;case "pop":{let m=d[d.length-1];if(m&&typeof m=="object"&&"f()"in m){let E=[];for(;d.length>0&&d[d.length-1]!=="/ev";)E.push(d.pop());E=E.reverse();let x=Dt(E,e,h,t);d=[],x.forEach(P=>{P&&typeof P=="object"&&"type"in P&&P.type==="function"?r(n,P,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}):j.warn("Unhandled case: value is not a function",P);}),u=false;}else d.push(p);return}default:d.push(p);}else if(typeof p=="string")if(p.startsWith("^"))r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;else if(p==="ev")c=true;else if(p===`
|
|
68
|
+
`)u=true;else if(p==="done"||p==="end")r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;else if(p==="<>")r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;else if(p==="nop"&&f){let m=Lu(w,a,s,e,t,h,l);m&&r(n,m,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),f=false,w=[];}else p==="#"?y=true:p==="thread"&&(v=true);else if(Array.isArray(p))if(f)w.push(p);else if(p.length>1&&typeof p[p.length-2]=="object"&&p[p.length-2]&&"c"in p[p.length-2]&&typeof p[p.length-1]=="object"&&p[p.length-1]&&"b"in p[p.length-1]){d.pop();let m=[],E=[];for(;d.length>0&&d[d.length-1]!=="/ev";)m.push(d.pop());w=[...w,...m.reverse()],f=true,E.push(p.pop()),E.push(p.pop()),w=[...w,...p],w.push(E);}else if(p.length>1&&typeof p[p.length-1]=="object"&&p[p.length-1]&&"#n"in p[p.length-1]){let m=p.pop();if(!m){j.error("Error parsing ink file: el is undefined");return}let E=m["#n"];delete m["#n"],p.push(m),r(n,{"->":e?e+"_|_"+E:E},e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),s({[E]:p},e,t);}else bt(p,e,t,n,r,a,s,o,l,u,h);else if(p&&typeof p=="object")if("->"in p&&typeof p["->"]=="string"&&!new RegExp(/^\.\^\.\^\.\d\.s$/).test(p["->"])){let m=[];d.length>0&&(m=Sa(["ev",...d],e,h,t)),p.params=m,r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;}else if("->t->"in p&&typeof p["->t->"]=="string"&&!new RegExp(/^\.\^\.\^\.\d\.s$/).test(p["->t->"])){let m=[];d.length>0&&(m=Sa(["ev",...d],e,h,t)),p.params=m,r(n,p,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v}),u=false;}else if("*"in p&&typeof p["*"]=="string")p["*"].includes("c")&&(d.push(p),u=false);else if("s"in p&&Array.isArray(p.s))d.push(p),u=false;else if("CNT?"in p)d.push(p),u=false;else if("VAR="in p||"temp="in p){let m="VAR="in p?p["VAR="]:p["temp="],E,x=[];if(m!=="$r"){for(d.pop(),d[d.length-1]==="/ev"&&d.pop();d.length>0&&d[d.length-1]!=="/ev";)x.push(d.pop());x=x.reverse(),E=Pi(x,e,h,t),d=[],Nn({key:m,value:E,defaultType:"VAR="in p?"storage":"tempstorage",artmeticValue:true},h,t).forEach(N=>{(N.value!==void 0||N.value!==null)&&r(n,N,e,t,h,{isNewLine:u,isHashtagScript:y,isThreads:v});}),u=false;}}else s(p,e,t);}),o(d,n,e,t,h),e.includes("_|_")&&n.length===2){let p=n[0],S=n[1];p&&S&&typeof p=="object"&&"dialogue"in p&&typeof S=="object"&&"labelToOpen"in S&&p.dialogue===" "&&S.labelToOpen&&(n.shift(),delete S.glueEnabled,n[0]=S);}}function xa(i,e,t,n,r,a){if(e.length===0)return;let s=Dt(e,n,t,r);if(s.length===1){let o={type:"ifelse",condition:s[0],then:i,else:a};return o.else||delete o.else,o}else if(s.length>1){let o={type:"ifelse",condition:{type:"union",unionType:"and",conditions:s},then:i,else:a};return o.else||delete o.else,o}}function Lu(i,e,t,n,r,a,s=void 0){if(i.length===0){j.error("Error parsing ink file: Conditional statement is not valid",i);return}let o=[],l=[];if(i.forEach(c=>{Array.isArray(c)?l.push(c):typeof c=="string"&&c==="du"?r.du?o.push(r.du):r.du=o[o.length-1]:(typeof c!="string"||c!=="/ev")&&o.push(c);}),l.length===0){j.error("Error parsing ink file: Conditional statement is not valid",l);return}let u=wa(l[0],e,t,`${n}${"_|_"}then`,r,a,`${s||""}then`),h;return l.length===2?h=wa(l[1],e,t,`${n}${"_|_"}else`,r,a,`${s||""}else`):l.length>2?(l.shift(),l.push("nop"),l=[{b:l}],h=wa(l,e,t,`${n}${"_|_"}else`,r,a,`${s||""}else`)):h=void 0,r.du=void 0,xa(u,o,a,n,r,h)}function wa(i,e,t,n,r,a,s=void 0){let o=[];for(let u of i)typeof u=="object"&&"b"in u&&(u.b=u.b.filter(h=>h!==null&&!(typeof h=="object"&&"->"in h&&new RegExp(/.*\.[0-9]/).test(h["->"]))),bt(u.b,n,r,o,e,e,t,en,s,true,a));return o.length===1?o[0]:{type:"resulttocombine",combine:"cross",secondConditionalItem:o}}function _a(i="",e=""){let t=Array.isArray(i)?i:[i],n=Array.isArray(e)?e:[e];return [...new Set([...t,...n])]}function en(i,e,t,n,r){if(i.length>0){let a={};Bu(i,a,r,n);for(let[s,o]of Object.entries(a)){let l=t+"_|_"+s,u={text:o.text.length===1?o.text[0]:o.text,label:l,props:{},type:Da(l,false),oneTime:o.onetime};o.text.length===0&&(u.onlyHaveNoChoice=true,u.autoSelect=true),u.oneTime===false&&delete u.oneTime;let h=xa(u,o.conditions,r,t,n)||u,c=e[e.length-1];if(typeof c=="object"&&c&&"type"in c&&(c={conditionalStep:c}),e.length>0&&typeof c=="object"&&c&&"choices"in c&&c.choices){let d=c.choices;d&&Array.isArray(d)?d.push(h):j.error("Unhandled case: choices is PixiVNJsonConditionalStatements<PixiVNJsonChoices> | undefined",o,d),c.choices=d.sort((f,y)=>{try{let v=f.label.split("."),w=v[v.length-1].replaceAll(".","_|_"),D=y.label.split("."),C=D[D.length-1].replaceAll(".","_|_");if(w.includes("c-")&&C.includes("c-")){let p=w.split("c-")[1],S=Number(p),m=C.split("c-")[1],E=Number(m);return S-E}}catch{}return 0});}else e.push({choices:[h]});o.preDialog&&(n.preDialog[l]={...o.preDialog});}}}function Bu(i,e,t,n,r){let a=[],s="",o="",l=false,u=[];for(let h=0;h<i.length;h++){let c=i[h];if(typeof c=="string")c.startsWith("^")?a.push(tt(c)):Iu.includes(c)&&u.push(c);else if(Array.isArray(c)&&c.includes("visit")){let d=Zt(c,Oi,(f,y,v)=>{},r,n,t);a.push(d);}else if(c&&typeof c=="object")if("*"in c&&typeof c["*"]&&typeof c["*"]=="string")c["*"].includes("c")&&(s=`c${c["*"].split("c")[1]}`,c.flg&16&&(l=true));else if("s"in c&&Array.isArray(c.s)){let d=Wu(c.s),f=c.s.includes("<>");d&&(r&&e[r]?(e[r].preDialog={text:d,glue:f},e[r].text=_a(d,e[r].text)):(a.push(d),o=d));}else ("CNT?"in c||"VAR?"in c)&&u.push(c);else u.push(c);if(s){e[s]?e[s].text=_a(a,e[s].text):e[s]={text:a,onetime:l,conditions:u},o&&(e[s].preDialog={text:o,glue:false});let d=i.slice(h+1);Bu(d,e,t,n,s);return}}}function Wu(i){for(let e of i)if(typeof e=="string"){if(e.startsWith("^"))return tt(e)}else if(Array.isArray(e)){let t=Wu(e);if(t)return t}}var Fi;(r=>{function i(a,s={}){let{labelToRemove:o=[],initialVarsToRemove:l=[],enums:u={},functions:h=[],preDialog:c={}}=s,d={$schema:vu};if(d.labels=e(a.root,{labelToRemove:o,initialVarsToRemove:l,enums:u,functions:h,preDialog:c}),d.labels&&Ti in d.labels){let f=d.labels[Ti];delete d.labels[Ti],f.forEach(y=>{y.operations&&(d.initialOperations=d.initialOperations?[...d.initialOperations,...y.operations]:[...y.operations]);});}if(d.labels&&Lt in d.labels){let f=d.labels[Lt];delete d.labels[Lt],f.forEach(y=>{y.operations&&(d.initialOperations=d.initialOperations?[...d.initialOperations,...y.operations]:[...y.operations]);});}return o.forEach(f=>{d.labels&&f in d.labels&&delete d.labels[f];}),l.forEach(f=>{d.initialOperations&&(d.initialOperations=d.initialOperations.filter(y=>!(y.type==="value"&&y.key===f)));}),d}r.inkToJson=i;function e(a,s){try{let o={};return t(a,o,s),o}catch(o){j.error("Error parsing ink file",o);}}function t(a,s,o){for(let l of a)if(l)if(Array.isArray(l))if(l.includes("visit")){let u=Zt(l,Oi,(h,c,d)=>{},"",o,[]);u&&(o.externalSwitch=u);}else t(l,s,o);else typeof l=="object"&&(l&&"VAR="in l&&o.externalSwitch&&(s[Lt]||(s[Lt]=[]),s[Lt].push({operations:Nn({defaultType:"storage",key:l["VAR="],value:o.externalSwitch},[],o)})),n(l,s,"",o));}function n(a,s,o="",l){if(a!==null){for(let[u,h]of Object.entries(a))if(Array.isArray(h)){let c=[],d={},f=(o?o+"_|_":"")+u;bt(h,f,l,c,ba,ba,(y,v,w)=>{n(y,d,v,w);},en);for(let[y,v]of Object.entries(d))s[y]=v;c.length>0&&(s[f]=c);}}}})(Fi||(Fi={}));var Vc=ia(Nc(),1),kc=ia(tn(),1),ey=/(?:^|<>)\s*#\s*([^\r\n]+)/g,Ic=new Map;function Rc(i,e){let t=JSON.stringify([e,i]),n=Ic.get(t);if(n)return n;let r=new RegExp(i,e);return Ic.set(t,r),r}function Ci(i,e){if(!e||typeof e!="object")return false;let t=e,n=t.anyOf;if(Array.isArray(n))return n.some(s=>Ci(i,s));let r=t.oneOf;if(Array.isArray(r))return r.some(s=>Ci(i,s));let a=t.allOf;if(Array.isArray(a))return a.every(s=>Ci(i,s));if(typeof t.const=="string")return i===t.const;if(Array.isArray(t.enum))return t.enum.some(s=>typeof s=="string"&&s===i);if(t.type!=="string"||typeof t.minLength=="number"&&i.length<t.minLength||typeof t.maxLength=="number"&&i.length>t.maxLength)return false;if(typeof t.pattern=="string")try{if(!Rc(t.pattern,"").test(i))return !1}catch{return false}return true}function ea(i,e){if(!e||typeof e!="object")return false;let t=e,n=t.anyOf;if(Array.isArray(n))return n.some(o=>ea(i,o));let r=t.oneOf;if(Array.isArray(r))return r.some(o=>ea(i,o));let a=t.allOf;if(Array.isArray(a))return a.every(o=>ea(i,o));if(t.type!=="array"||typeof t.minItems=="number"&&i.length<t.minItems||typeof t.maxItems=="number"&&i.length>t.maxItems)return false;let s=Array.isArray(t.prefixItems)?t.prefixItems:[];if(i.length<s.length)return false;for(let o=0;o<s.length;o++)if(!Ci(i[o],s[o]))return false;return i.length===s.length?true:t.items===false||typeof t.items>"u"?false:t.items===true?true:i.slice(s.length).every(o=>Ci(o,t.items))}function ty(i,e){if(e.type==="regexp")try{let t=Rc(e.source,e.flags);return t.lastIndex=0,t.test(i.join(" "))}catch{return false}return e.type==="literal"?i.join(" ")===e.value:ea(i,e.schema)}function ny(i){let e=i.split(/\r?\n/),t=[];for(let n=0;n<e.length;n++){let r=e[n];for(let a of r.matchAll(ey)){let s=(a[1]??"").trim();if(!s)continue;let o=T.convertTagTolist(s,{mergeInkVariables:true});o.length!==0&&t.push({line:n+1,command:s,tokens:o});}}return t}var ta;(n=>{function i(r,a={labelToRemove:[],initialVarsToRemove:[],functions:[],enums:{}}){let s=[];try{return {json:new Vc.Compiler(r,{errorHandler:(h,c)=>{let d=h.replace(/^[A-Z]+: line \d+: ?/,""),f=h.match(/line (\d+)/);s.push({message:d,type:c,line:f?Number(f[1]):-1});},countAllVisits:!0,fileHandler:{ResolveInkFilename:h=>h,LoadInkFileContents:()=>""},pluginNames:[],sourceFilename:null}).Compile().ToJson()||"",issues:s}}catch{let l=false,u={...a,textSource:r};return e(s,()=>{l=true;},u),l?i(u.textSource,a):{issues:s}}}n.compile=i;function e(r,a,s){let{functions:o,initialVarsToRemove:l,labelToRemove:u}=s,h=r.find(c=>c.type===kc.ErrorType.Error);if(h){if(h.message.includes("Divert target not found")){let c=h.message.match(/Divert target not found: '-> (\w+)'/);if(c?.[1]){let d=c[1],f=`
|
|
69
69
|
|
|
70
70
|
=== ${d} ===
|
|
71
71
|
|
|
@@ -81,7 +81,7 @@ ${S}`),S&&(o=true),s=_.getLogichValue(C.glueEnabled,e)||false,S)}),u=_.getLogich
|
|
|
81
81
|
|
|
82
82
|
~ return
|
|
83
83
|
|
|
84
|
-
`;return s.textSource=s.textSource.concat(f),o.push({name:d,args:0}),u.push(d),a()}}if(h.message.includes(" arguments, but got ")){let c=h.message.match(/Function call to '(\w+)' requires (\d+) arguments, but got (\d+)/);if(c?.[1]){let d=c[1],f=parseInt(c[3]||"0",10),y=f>0?Array.from({length:f},(
|
|
84
|
+
`;return s.textSource=s.textSource.concat(f),o.push({name:d,args:0}),u.push(d),a()}}if(h.message.includes(" arguments, but got ")){let c=h.message.match(/Function call to '(\w+)' requires (\d+) arguments, but got (\d+)/);if(c?.[1]){let d=c[1],f=parseInt(c[3]||"0",10),y=f>0?Array.from({length:f},(D,C)=>`arg${C+1}`).join(", "):"",v=`
|
|
85
85
|
|
|
86
86
|
=== function ${d}(${y}) ===
|
|
87
87
|
|
|
@@ -93,10 +93,10 @@ ${S}`),S&&(o=true),s=_.getLogichValue(C.glueEnabled,e)||false,S)}),u=_.getLogich
|
|
|
93
93
|
|
|
94
94
|
~ return
|
|
95
95
|
|
|
96
|
-
`,""),s.textSource=s.textSource.concat(v);let w=o.find(
|
|
96
|
+
`,""),s.textSource=s.textSource.concat(v);let w=o.find(D=>D.name===d);return w?w.args=f:(o.push({name:d,args:f}),u.push(d)),a()}}if(h.message.includes("Could not find target for read count")){let c=h.message.match(/Could not find target for read count: -> (\w+\.\w+)/);if(c?.[1]){let d=c[1],[f,y]=d.split("."),v=`
|
|
97
97
|
|
|
98
98
|
LIST ${f} = ${y}
|
|
99
99
|
|
|
100
100
|
`;return s.textSource=s.textSource.concat(v),s.initialVarsToRemove.push(f),s.initialVarsToRemove.push(`${f}.${y}`),a()}}if(h.message.includes("variable for increment could not be found")){let c=h.message.match(/variable for increment could not be found: '(\w+)' after searching:/);if(c?.[1]){let d=c[1],f=`VAR ${d} = 0
|
|
101
101
|
|
|
102
|
-
`;return s.textSource=f.concat(s.textSource),s.initialVarsToRemove.push(d),a()}}return r.forEach(c=>{let d=c.message.match(/Function call to '(\w+)' requires (\d+) arguments, but got (\d+)/);d?.[1]&&(c.message=`The function '${d[1]}' have optional arguments, but in ink all arguments must be required. Please make sure to provide all the required arguments for the function call.`);}),{issues:r}}return {issues:r}}n.getErrors=e;function t(r,a){return ny(r).filter(({tokens:s})=>!a.some(({validation:o})=>ty(s,o)))}n.getUnknownHashtagCommands=t;})(ta||(ta={}));var Kl=ia(tn(),1);function tS(i,e={}){let t={labelToRemove:[],initialVarsToRemove:[],functions:e.functions||[],enums:e.enums||{},textSource:i},{json:n,issues:r}=ta.compile(i,t);if(r.forEach(({message:s,type:o})=>{o===Kl.ErrorType.Error?j.error(`Ink compilation error: ${s}`):o===Kl.ErrorType.Warning?j.warn(`Ink compilation warning: ${s}`):j.info(`Ink compilation info: ${s}`);}),!n){j.error("No JSON generated from ink file");return}let a;try{a=Pn.parse(n);}catch{j.error("Error parsing ink file");return}return t.enums=a.listDefs||{},Fi.inkToJson(a,t)}export{
|
|
102
|
+
`;return s.textSource=f.concat(s.textSource),s.initialVarsToRemove.push(d),a()}}return r.forEach(c=>{let d=c.message.match(/Function call to '(\w+)' requires (\d+) arguments, but got (\d+)/);d?.[1]&&(c.message=`The function '${d[1]}' have optional arguments, but in ink all arguments must be required. Please make sure to provide all the required arguments for the function call.`);}),{issues:r}}return {issues:r}}n.getErrors=e;function t(r,a){return ny(r).filter(({tokens:s})=>!a.some(({validation:o})=>ty(s,o)))}n.getUnknownHashtagCommands=t;})(ta||(ta={}));var Kl=ia(tn(),1);function tS(i,e={}){let t={labelToRemove:[],initialVarsToRemove:[],functions:e.functions||[],enums:e.enums||{},textSource:i},{json:n,issues:r}=ta.compile(i,t);if(r.forEach(({message:s,type:o})=>{o===Kl.ErrorType.Error?j.error(`Ink compilation error: ${s}`):o===Kl.ErrorType.Warning?j.warn(`Ink compilation warning: ${s}`):j.info(`Ink compilation info: ${s}`);}),!n){j.error("No JSON generated from ink file");return}let a;try{a=Pn.parse(n);}catch{j.error("Error parsing ink file");return}return t.enums=a.listDefs||{},Fi.inkToJson(a,t)}export{A as a,ia as b,iy as c,be as d,Dy as e,ua as f,ha as g,Fy as h,Nu as i,T as j,rp as k,tn as l,ta as m,tS as n};
|