@shotstack/shotstack-canvas 1.2.6 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/entry.web.js CHANGED
@@ -1,6 +1,1745 @@
1
- var y0=Object.create;var $n=Object.defineProperty;var v0=Object.getOwnPropertyDescriptor;var w0=Object.getOwnPropertyNames;var x0=Object.getPrototypeOf,C0=Object.prototype.hasOwnProperty;var S0=(l,e,t)=>e in l?$n(l,e,{enumerable:true,configurable:true,writable:true,value:t}):l[e]=t;var we=(l,e)=>()=>(e||l((e={exports:{}}).exports,e),e.exports);var A0=(l,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of w0(e))!C0.call(l,s)&&s!==t&&$n(l,s,{get:()=>e[s],enumerable:!(r=v0(e,s))||r.enumerable});return l};var ot=(l,e,t)=>(t=l!=null?y0(x0(l)):{},A0($n(t,"default",{value:l,enumerable:true}),l));var lt=(l,e,t)=>S0(l,typeof e!="symbol"?e+"":e,t);var _a=we((Nr,Nn)=>{(function(l,e){typeof Nr=="object"&&typeof Nn=="object"?Nn.exports=e():typeof define=="function"&&define.amd?define([],e):typeof Nr=="object"?Nr.joi=e():l.joi=e();})(self,(()=>{return l={7629:(t,r,s)=>{let n=s(375),a=s(8571),f=s(9474),u=s(1687),i=s(8652),o=s(8160),c=s(3292),h=s(6354),d=s(8901),g=s(9708),p=s(6914),m=s(2294),y=s(6133),x=s(1152),v=s(8863),k=s(2036),A={Base:class{constructor(w){this.type=w,this.$_root=null,this._definition={},this._reset();}_reset(){this._ids=new m.Ids,this._preferences=null,this._refs=new y.Manager,this._cache=null,this._valids=null,this._invalids=null,this._flags={},this._rules=[],this._singleRules=new Map,this.$_terms={},this.$_temp={ruleset:null,whens:{}};}describe(){return n(typeof g.describe=="function","Manifest functionality disabled"),g.describe(this)}allow(...w){return o.verifyFlat(w,"allow"),this._values(w,"_valids")}alter(w){n(w&&typeof w=="object"&&!Array.isArray(w),"Invalid targets argument"),n(!this._inRuleset(),"Cannot set alterations inside a ruleset");let C=this.clone();C.$_terms.alterations=C.$_terms.alterations||[];for(let S in w){let O=w[S];n(typeof O=="function","Alteration adjuster for",S,"must be a function"),C.$_terms.alterations.push({target:S,adjuster:O});}return C.$_temp.ruleset=false,C}artifact(w){return n(w!==void 0,"Artifact cannot be undefined"),n(!this._cache,"Cannot set an artifact with a rule cache"),this.$_setFlag("artifact",w)}cast(w){return n(w===false||typeof w=="string","Invalid to value"),n(w===false||this._definition.cast[w],"Type",this.type,"does not support casting to",w),this.$_setFlag("cast",w===false?void 0:w)}default(w,C){return this._default("default",w,C)}description(w){return n(w&&typeof w=="string","Description must be a non-empty string"),this.$_setFlag("description",w)}empty(w){let C=this.clone();return w!==void 0&&(w=C.$_compile(w,{override:false})),C.$_setFlag("empty",w,{clone:false})}error(w){return n(w,"Missing error"),n(w instanceof Error||typeof w=="function","Must provide a valid Error object or a function"),this.$_setFlag("error",w)}example(w,C={}){return n(w!==void 0,"Missing example"),o.assertOptions(C,["override"]),this._inner("examples",w,{single:true,override:C.override})}external(w,C){return typeof w=="object"&&(n(!C,"Cannot combine options with description"),C=w.description,w=w.method),n(typeof w=="function","Method must be a function"),n(C===void 0||C&&typeof C=="string","Description must be a non-empty string"),this._inner("externals",{method:w,description:C},{single:true})}failover(w,C){return this._default("failover",w,C)}forbidden(){return this.presence("forbidden")}id(w){return w?(n(typeof w=="string","id must be a non-empty string"),n(/^[^\.]+$/.test(w),"id cannot contain period character"),this.$_setFlag("id",w)):this.$_setFlag("id",void 0)}invalid(...w){return this._values(w,"_invalids")}label(w){return n(w&&typeof w=="string","Label name must be a non-empty string"),this.$_setFlag("label",w)}meta(w){return n(w!==void 0,"Meta cannot be undefined"),this._inner("metas",w,{single:true})}note(...w){n(w.length,"Missing notes");for(let C of w)n(C&&typeof C=="string","Notes must be non-empty strings");return this._inner("notes",w)}only(w=true){return n(typeof w=="boolean","Invalid mode:",w),this.$_setFlag("only",w)}optional(){return this.presence("optional")}prefs(w){n(w,"Missing preferences"),n(w.context===void 0,"Cannot override context"),n(w.externals===void 0,"Cannot override externals"),n(w.warnings===void 0,"Cannot override warnings"),n(w.debug===void 0,"Cannot override debug"),o.checkPreferences(w);let C=this.clone();return C._preferences=o.preferences(C._preferences,w),C}presence(w){return n(["optional","required","forbidden"].includes(w),"Unknown presence mode",w),this.$_setFlag("presence",w)}raw(w=true){return this.$_setFlag("result",w?"raw":void 0)}result(w){return n(["raw","strip"].includes(w),"Unknown result mode",w),this.$_setFlag("result",w)}required(){return this.presence("required")}strict(w){let C=this.clone(),S=w!==void 0&&!w;return C._preferences=o.preferences(C._preferences,{convert:S}),C}strip(w=true){return this.$_setFlag("result",w?"strip":void 0)}tag(...w){n(w.length,"Missing tags");for(let C of w)n(C&&typeof C=="string","Tags must be non-empty strings");return this._inner("tags",w)}unit(w){return n(w&&typeof w=="string","Unit name must be a non-empty string"),this.$_setFlag("unit",w)}valid(...w){o.verifyFlat(w,"valid");let C=this.allow(...w);return C.$_setFlag("only",!!C._valids,{clone:false}),C}when(w,C){let S=this.clone();S.$_terms.whens||(S.$_terms.whens=[]);let O=c.when(S,w,C);if(!["any","link"].includes(S.type)){let F=O.is?[O]:O.switch;for(let T of F)n(!T.then||T.then.type==="any"||T.then.type===S.type,"Cannot combine",S.type,"with",T.then&&T.then.type),n(!T.otherwise||T.otherwise.type==="any"||T.otherwise.type===S.type,"Cannot combine",S.type,"with",T.otherwise&&T.otherwise.type);}return S.$_terms.whens.push(O),S.$_mutateRebuild()}cache(w){n(!this._inRuleset(),"Cannot set caching inside a ruleset"),n(!this._cache,"Cannot override schema cache"),n(this._flags.artifact===void 0,"Cannot cache a rule with an artifact");let C=this.clone();return C._cache=w||i.provider.provision(),C.$_temp.ruleset=false,C}clone(){let w=Object.create(Object.getPrototypeOf(this));return this._assign(w)}concat(w){n(o.isSchema(w),"Invalid schema object"),n(this.type==="any"||w.type==="any"||w.type===this.type,"Cannot merge type",this.type,"with another type:",w.type),n(!this._inRuleset(),"Cannot concatenate onto a schema with open ruleset"),n(!w._inRuleset(),"Cannot concatenate a schema with open ruleset");let C=this.clone();if(this.type==="any"&&w.type!=="any"){let S=w.clone();for(let O of Object.keys(C))O!=="type"&&(S[O]=C[O]);C=S;}C._ids.concat(w._ids),C._refs.register(w,y.toSibling),C._preferences=C._preferences?o.preferences(C._preferences,w._preferences):w._preferences,C._valids=k.merge(C._valids,w._valids,w._invalids),C._invalids=k.merge(C._invalids,w._invalids,w._valids);for(let S of w._singleRules.keys())C._singleRules.has(S)&&(C._rules=C._rules.filter((O=>O.keep||O.name!==S)),C._singleRules.delete(S));for(let S of w._rules)w._definition.rules[S.method].multi||C._singleRules.set(S.name,S),C._rules.push(S);if(C._flags.empty&&w._flags.empty){C._flags.empty=C._flags.empty.concat(w._flags.empty);let S=Object.assign({},w._flags);delete S.empty,u(C._flags,S);}else if(w._flags.empty){C._flags.empty=w._flags.empty;let S=Object.assign({},w._flags);delete S.empty,u(C._flags,S);}else u(C._flags,w._flags);for(let S in w.$_terms){let O=w.$_terms[S];O?C.$_terms[S]?C.$_terms[S]=C.$_terms[S].concat(O):C.$_terms[S]=O.slice():C.$_terms[S]||(C.$_terms[S]=O);}return this.$_root._tracer&&this.$_root._tracer._combine(C,[this,w]),C.$_mutateRebuild()}extend(w){return n(!w.base,"Cannot extend type with another base"),d.type(this,w)}extract(w){return w=Array.isArray(w)?w:w.split("."),this._ids.reach(w)}fork(w,C){n(!this._inRuleset(),"Cannot fork inside a ruleset");let S=this;for(let O of [].concat(w))O=Array.isArray(O)?O:O.split("."),S=S._ids.fork(O,C,S);return S.$_temp.ruleset=false,S}rule(w){let C=this._definition;o.assertOptions(w,Object.keys(C.modifiers)),n(this.$_temp.ruleset!==false,"Cannot apply rules to empty ruleset or the last rule added does not support rule properties");let S=this.$_temp.ruleset===null?this._rules.length-1:this.$_temp.ruleset;n(S>=0&&S<this._rules.length,"Cannot apply rules to empty ruleset");let O=this.clone();for(let F=S;F<O._rules.length;++F){let T=O._rules[F],B=a(T);for(let $ in w)C.modifiers[$](B,w[$]),n(B.name===T.name,"Cannot change rule name");O._rules[F]=B,O._singleRules.get(B.name)===T&&O._singleRules.set(B.name,B);}return O.$_temp.ruleset=false,O.$_mutateRebuild()}get ruleset(){n(!this._inRuleset(),"Cannot start a new ruleset without closing the previous one");let w=this.clone();return w.$_temp.ruleset=w._rules.length,w}get $(){return this.ruleset}tailor(w){w=[].concat(w),n(!this._inRuleset(),"Cannot tailor inside a ruleset");let C=this;if(this.$_terms.alterations)for(let{target:S,adjuster:O}of this.$_terms.alterations)w.includes(S)&&(C=O(C),n(o.isSchema(C),"Alteration adjuster for",S,"failed to return a schema object"));return C=C.$_modify({each:S=>S.tailor(w),ref:false}),C.$_temp.ruleset=false,C.$_mutateRebuild()}tracer(){return x.location?x.location(this):this}validate(w,C){return v.entry(w,this,C)}validateAsync(w,C){return v.entryAsync(w,this,C)}$_addRule(w){typeof w=="string"&&(w={name:w}),n(w&&typeof w=="object","Invalid options"),n(w.name&&typeof w.name=="string","Invalid rule name");for(let T in w)n(T[0]!=="_","Cannot set private rule properties");let C=Object.assign({},w);C._resolve=[],C.method=C.method||C.name;let S=this._definition.rules[C.method],O=C.args;n(S,"Unknown rule",C.method);let F=this.clone();if(O){n(Object.keys(O).length===1||Object.keys(O).length===this._definition.rules[C.name].args.length,"Invalid rule definition for",this.type,C.name);for(let T in O){let B=O[T];if(S.argsByName){let $=S.argsByName.get(T);if($.ref&&o.isResolvable(B))C._resolve.push(T),F.$_mutateRegister(B);else if($.normalize&&(B=$.normalize(B),O[T]=B),$.assert){let V=o.validateArg(B,T,$);n(!V,V,"or reference");}}B!==void 0?O[T]=B:delete O[T];}}return S.multi||(F._ruleRemove(C.name,{clone:false}),F._singleRules.set(C.name,C)),F.$_temp.ruleset===false&&(F.$_temp.ruleset=null),S.priority?F._rules.unshift(C):F._rules.push(C),F}$_compile(w,C){return c.schema(this.$_root,w,C)}$_createError(w,C,S,O,F,T={}){let B=T.flags!==false?this._flags:{},$=T.messages?p.merge(this._definition.messages,T.messages):this._definition.messages;return new h.Report(w,C,S,B,$,O,F)}$_getFlag(w){return this._flags[w]}$_getRule(w){return this._singleRules.get(w)}$_mapLabels(w){return w=Array.isArray(w)?w:w.split("."),this._ids.labels(w)}$_match(w,C,S,O){(S=Object.assign({},S)).abortEarly=true,S._externals=false,C.snapshot();let F=!v.validate(w,this,C,S,O).errors;return C.restore(),F}$_modify(w){return o.assertOptions(w,["each","once","ref","schema"]),m.schema(this,w)||this}$_mutateRebuild(){return n(!this._inRuleset(),"Cannot add this rule inside a ruleset"),this._refs.reset(),this._ids.reset(),this.$_modify({each:(w,{source:C,name:S,path:O,key:F})=>{let T=this._definition[C][S]&&this._definition[C][S].register;T!==false&&this.$_mutateRegister(w,{family:T,key:F});}}),this._definition.rebuild&&this._definition.rebuild(this),this.$_temp.ruleset=false,this}$_mutateRegister(w,{family:C,key:S}={}){this._refs.register(w,C),this._ids.register(w,{key:S});}$_property(w){return this._definition.properties[w]}$_reach(w){return this._ids.reach(w)}$_rootReferences(){return this._refs.roots()}$_setFlag(w,C,S={}){n(w[0]==="_"||!this._inRuleset(),"Cannot set flag inside a ruleset");let O=this._definition.flags[w]||{};if(f(C,O.default)&&(C=void 0),f(C,this._flags[w]))return this;let F=S.clone!==false?this.clone():this;return C!==void 0?(F._flags[w]=C,F.$_mutateRegister(C)):delete F._flags[w],w[0]!=="_"&&(F.$_temp.ruleset=false),F}$_parent(w,...C){return this[w][o.symbols.parent].call(this,...C)}$_validate(w,C,S){return v.validate(w,this,C,S)}_assign(w){w.type=this.type,w.$_root=this.$_root,w.$_temp=Object.assign({},this.$_temp),w.$_temp.whens={},w._ids=this._ids.clone(),w._preferences=this._preferences,w._valids=this._valids&&this._valids.clone(),w._invalids=this._invalids&&this._invalids.clone(),w._rules=this._rules.slice(),w._singleRules=a(this._singleRules,{shallow:true}),w._refs=this._refs.clone(),w._flags=Object.assign({},this._flags),w._cache=null,w.$_terms={};for(let C in this.$_terms)w.$_terms[C]=this.$_terms[C]?this.$_terms[C].slice():null;w.$_super={};for(let C in this.$_super)w.$_super[C]=this._super[C].bind(w);return w}_bare(){let w=this.clone();w._reset();let C=w._definition.terms;for(let S in C){let O=C[S];w.$_terms[S]=O.init;}return w.$_mutateRebuild()}_default(w,C,S={}){return o.assertOptions(S,"literal"),n(C!==void 0,"Missing",w,"value"),n(typeof C=="function"||!S.literal,"Only function value supports literal option"),typeof C=="function"&&S.literal&&(C={[o.symbols.literal]:true,literal:C}),this.$_setFlag(w,C)}_generate(w,C,S){if(!this.$_terms.whens)return {schema:this};let O=[],F=[];for(let $=0;$<this.$_terms.whens.length;++$){let V=this.$_terms.whens[$];if(V.concat){O.push(V.concat),F.push(`${$}.concat`);continue}let H=V.ref?V.ref.resolve(w,C,S):w,te=V.is?[V]:V.switch,W=F.length;for(let z=0;z<te.length;++z){let{is:G,then:Y,otherwise:ge}=te[z],Ce=`${$}${V.switch?"."+z:""}`;if(G.$_match(H,C.nest(G,`${Ce}.is`),S)){if(Y){let ke=C.localize([...C.path,`${Ce}.then`],C.ancestors,C.schemas),{schema:Le,id:Ee}=Y._generate(w,ke,S);O.push(Le),F.push(`${Ce}.then${Ee?`(${Ee})`:""}`);break}}else if(ge){let ke=C.localize([...C.path,`${Ce}.otherwise`],C.ancestors,C.schemas),{schema:Le,id:Ee}=ge._generate(w,ke,S);O.push(Le),F.push(`${Ce}.otherwise${Ee?`(${Ee})`:""}`);break}}if(V.break&&F.length>W)break}let T=F.join(", ");if(C.mainstay.tracer.debug(C,"rule","when",T),!T)return {schema:this};if(!C.mainstay.tracer.active&&this.$_temp.whens[T])return {schema:this.$_temp.whens[T],id:T};let B=this;this._definition.generate&&(B=this._definition.generate(this,w,C,S));for(let $ of O)B=B.concat($);return this.$_root._tracer&&this.$_root._tracer._combine(B,[this,...O]),this.$_temp.whens[T]=B,{schema:B,id:T}}_inner(w,C,S={}){n(!this._inRuleset(),`Cannot set ${w} inside a ruleset`);let O=this.clone();return O.$_terms[w]&&!S.override||(O.$_terms[w]=[]),S.single?O.$_terms[w].push(C):O.$_terms[w].push(...C),O.$_temp.ruleset=false,O}_inRuleset(){return this.$_temp.ruleset!==null&&this.$_temp.ruleset!==false}_ruleRemove(w,C={}){if(!this._singleRules.has(w))return this;let S=C.clone!==false?this.clone():this;S._singleRules.delete(w);let O=[];for(let F=0;F<S._rules.length;++F){let T=S._rules[F];T.name!==w||T.keep?O.push(T):S._inRuleset()&&F<S.$_temp.ruleset&&--S.$_temp.ruleset;}return S._rules=O,S}_values(w,C){o.verifyFlat(w,C.slice(1,-1));let S=this.clone(),O=w[0]===o.symbols.override;if(O&&(w=w.slice(1)),!S[C]&&w.length?S[C]=new k:O&&(S[C]=w.length?new k:null,S.$_mutateRebuild()),!S[C])return S;O&&S[C].override();for(let F of w){n(F!==void 0,"Cannot call allow/valid/invalid with undefined"),n(F!==o.symbols.override,"Override must be the first value");let T=C==="_invalids"?"_valids":"_invalids";S[T]&&(S[T].remove(F),S[T].length||(n(C==="_valids"||!S._flags.only,"Setting invalid value",F,"leaves schema rejecting all values due to previous valid rule"),S[T]=null)),S[C].add(F,S._refs);}return S}}};A.Base.prototype[o.symbols.any]={version:o.version,compile:c.compile,root:"$_root"},A.Base.prototype.isImmutable=true,A.Base.prototype.deny=A.Base.prototype.invalid,A.Base.prototype.disallow=A.Base.prototype.invalid,A.Base.prototype.equal=A.Base.prototype.valid,A.Base.prototype.exist=A.Base.prototype.required,A.Base.prototype.not=A.Base.prototype.invalid,A.Base.prototype.options=A.Base.prototype.prefs,A.Base.prototype.preferences=A.Base.prototype.prefs,t.exports=new A.Base;},8652:(t,r,s)=>{let n=s(375),a=s(8571),f=s(8160),u={max:1e3,supported:new Set(["undefined","boolean","number","string"])};r.provider={provision:i=>new u.Cache(i)},u.Cache=class{constructor(i={}){f.assertOptions(i,["max"]),n(i.max===void 0||i.max&&i.max>0&&isFinite(i.max),"Invalid max cache size"),this._max=i.max||u.max,this._map=new Map,this._list=new u.List;}get length(){return this._map.size}set(i,o){if(i!==null&&!u.supported.has(typeof i))return;let c=this._map.get(i);if(c)return c.value=o,void this._list.first(c);c=this._list.unshift({key:i,value:o}),this._map.set(i,c),this._compact();}get(i){let o=this._map.get(i);if(o)return this._list.first(o),a(o.value)}_compact(){if(this._map.size>this._max){let i=this._list.pop();this._map.delete(i.key);}}},u.List=class{constructor(){this.tail=null,this.head=null;}unshift(i){return i.next=null,i.prev=this.head,this.head&&(this.head.next=i),this.head=i,this.tail||(this.tail=i),i}first(i){i!==this.head&&(this._remove(i),this.unshift(i));}pop(){return this._remove(this.tail)}_remove(i){let{next:o,prev:c}=i;return o.prev=c,c&&(c.next=o),i===this.tail&&(this.tail=o),i.prev=null,i.next=null,i}};},8160:(t,r,s)=>{let n=s(375),a=s(7916),f=s(5934),u,i,o={isoDate:/^(?:[-+]\d{2})?(?:\d{4}(?!\d{2}\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\1(?:[12]\d|0[1-9]|3[01]))?|W(?:[0-4]\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[1-6])))(?![T]$|[T][\d]+Z$)(?:[T\s](?:(?:(?:[01]\d|2[0-3])(?:(:?)[0-5]\d)?|24\:?00)(?:[.,]\d+(?!:))?)(?:\2[0-5]\d(?:[.,]\d+)?)?(?:[Z]|(?:[+-])(?:[01]\d|2[0-3])(?::?[0-5]\d)?)?)?)?$/};r.version=f.version,r.defaults={abortEarly:true,allowUnknown:false,artifacts:false,cache:true,context:null,convert:true,dateFormat:"iso",errors:{escapeHtml:false,label:"path",language:null,render:true,stack:false,wrap:{label:'"',array:"[]"}},externals:true,messages:{},nonEnumerables:false,noDefaults:false,presence:"optional",skipFunctions:false,stripUnknown:false,warnings:false},r.symbols={any:Symbol.for("@hapi/joi/schema"),arraySingle:Symbol("arraySingle"),deepDefault:Symbol("deepDefault"),errors:Symbol("errors"),literal:Symbol("literal"),override:Symbol("override"),parent:Symbol("parent"),prefs:Symbol("prefs"),ref:Symbol("ref"),template:Symbol("template"),values:Symbol("values")},r.assertOptions=function(c,h,d="Options"){n(c&&typeof c=="object"&&!Array.isArray(c),"Options must be of type object");let g=Object.keys(c).filter((p=>!h.includes(p)));n(g.length===0,`${d} contain unknown keys: ${g}`);},r.checkPreferences=function(c){i=i||s(3378);let h=i.preferences.validate(c);if(h.error)throw new a([h.error.details[0].message])},r.compare=function(c,h,d){switch(d){case "=":return c===h;case ">":return c>h;case "<":return c<h;case ">=":return c>=h;case "<=":return c<=h}},r.default=function(c,h){return c===void 0?h:c},r.isIsoDate=function(c){return o.isoDate.test(c)},r.isNumber=function(c){return typeof c=="number"&&!isNaN(c)},r.isResolvable=function(c){return !!c&&(c[r.symbols.ref]||c[r.symbols.template])},r.isSchema=function(c,h={}){let d=c&&c[r.symbols.any];return !!d&&(n(h.legacy||d.version===r.version,"Cannot mix different versions of joi schemas"),true)},r.isValues=function(c){return c[r.symbols.values]},r.limit=function(c){return Number.isSafeInteger(c)&&c>=0},r.preferences=function(c,h){u=u||s(6914),c=c||{},h=h||{};let d=Object.assign({},c,h);return h.errors&&c.errors&&(d.errors=Object.assign({},c.errors,h.errors),d.errors.wrap=Object.assign({},c.errors.wrap,h.errors.wrap)),h.messages&&(d.messages=u.compile(h.messages,c.messages)),delete d[r.symbols.prefs],d},r.tryWithPath=function(c,h,d={}){try{return c()}catch(g){throw g.path!==void 0?g.path=h+"."+g.path:g.path=h,d.append&&(g.message=`${g.message} (${g.path})`),g}},r.validateArg=function(c,h,{assert:d,message:g}){if(r.isSchema(d)){let p=d.validate(c);return p.error?p.error.message:void 0}if(!d(c))return h?`${h} ${g}`:g},r.verifyFlat=function(c,h){for(let d of c)n(!Array.isArray(d),"Method no longer accepts array arguments:",h);};},3292:(t,r,s)=>{let n=s(375),a=s(8160),f=s(6133),u={};r.schema=function(i,o,c={}){a.assertOptions(c,["appendPath","override"]);try{return u.schema(i,o,c)}catch(h){throw c.appendPath&&h.path!==void 0&&(h.message=`${h.message} (${h.path})`),h}},u.schema=function(i,o,c){n(o!==void 0,"Invalid undefined schema"),Array.isArray(o)&&(n(o.length,"Invalid empty array schema"),o.length===1&&(o=o[0]));let h=(d,...g)=>c.override!==false?d.valid(i.override,...g):d.valid(...g);if(u.simple(o))return h(i,o);if(typeof o=="function")return i.custom(o);if(n(typeof o=="object","Invalid schema content:",typeof o),a.isResolvable(o))return h(i,o);if(a.isSchema(o))return o;if(Array.isArray(o)){for(let d of o)if(!u.simple(d))return i.alternatives().try(...o);return h(i,...o)}return o instanceof RegExp?i.string().regex(o):o instanceof Date?h(i.date(),o):(n(Object.getPrototypeOf(o)===Object.getPrototypeOf({}),"Schema can only contain plain objects"),i.object().keys(o))},r.ref=function(i,o){return f.isRef(i)?i:f.create(i,o)},r.compile=function(i,o,c={}){a.assertOptions(c,["legacy"]);let h=o&&o[a.symbols.any];if(h)return n(c.legacy||h.version===a.version,"Cannot mix different versions of joi schemas:",h.version,a.version),o;if(typeof o!="object"||!c.legacy)return r.schema(i,o,{appendPath:true});let d=u.walk(o);return d?d.compile(d.root,o):r.schema(i,o,{appendPath:true})},u.walk=function(i){if(typeof i!="object")return null;if(Array.isArray(i)){for(let c of i){let h=u.walk(c);if(h)return h}return null}let o=i[a.symbols.any];if(o)return {root:i[o.root],compile:o.compile};n(Object.getPrototypeOf(i)===Object.getPrototypeOf({}),"Schema can only contain plain objects");for(let c in i){let h=u.walk(i[c]);if(h)return h}return null},u.simple=function(i){return i===null||["boolean","string","number"].includes(typeof i)},r.when=function(i,o,c){if(c===void 0&&(n(o&&typeof o=="object","Missing options"),c=o,o=f.create(".")),Array.isArray(c)&&(c={switch:c}),a.assertOptions(c,["is","not","then","otherwise","switch","break"]),a.isSchema(o))return n(c.is===void 0,'"is" can not be used with a schema condition'),n(c.not===void 0,'"not" can not be used with a schema condition'),n(c.switch===void 0,'"switch" can not be used with a schema condition'),u.condition(i,{is:o,then:c.then,otherwise:c.otherwise,break:c.break});if(n(f.isRef(o)||typeof o=="string","Invalid condition:",o),n(c.not===void 0||c.is===void 0,'Cannot combine "is" with "not"'),c.switch===void 0){let d=c;c.not!==void 0&&(d={is:c.not,then:c.otherwise,otherwise:c.then,break:c.break});let g=d.is!==void 0?i.$_compile(d.is):i.$_root.invalid(null,false,0,"").required();return n(d.then!==void 0||d.otherwise!==void 0,'options must have at least one of "then", "otherwise", or "switch"'),n(d.break===void 0||d.then===void 0||d.otherwise===void 0,"Cannot specify then, otherwise, and break all together"),c.is===void 0||f.isRef(c.is)||a.isSchema(c.is)||(g=g.required()),u.condition(i,{ref:r.ref(o),is:g,then:d.then,otherwise:d.otherwise,break:d.break})}n(Array.isArray(c.switch),'"switch" must be an array'),n(c.is===void 0,'Cannot combine "switch" with "is"'),n(c.not===void 0,'Cannot combine "switch" with "not"'),n(c.then===void 0,'Cannot combine "switch" with "then"');let h={ref:r.ref(o),switch:[],break:c.break};for(let d=0;d<c.switch.length;++d){let g=c.switch[d],p=d===c.switch.length-1;a.assertOptions(g,p?["is","then","otherwise"]:["is","then"]),n(g.is!==void 0,'Switch statement missing "is"'),n(g.then!==void 0,'Switch statement missing "then"');let m={is:i.$_compile(g.is),then:i.$_compile(g.then)};if(f.isRef(g.is)||a.isSchema(g.is)||(m.is=m.is.required()),p){n(c.otherwise===void 0||g.otherwise===void 0,'Cannot specify "otherwise" inside and outside a "switch"');let y=c.otherwise!==void 0?c.otherwise:g.otherwise;y!==void 0&&(n(h.break===void 0,"Cannot specify both otherwise and break"),m.otherwise=i.$_compile(y));}h.switch.push(m);}return h},u.condition=function(i,o){for(let c of ["then","otherwise"])o[c]===void 0?delete o[c]:o[c]=i.$_compile(o[c]);return o};},6354:(t,r,s)=>{let n=s(5688),a=s(8160),f=s(3328);r.Report=class{constructor(u,i,o,c,h,d,g){if(this.code=u,this.flags=c,this.messages=h,this.path=d.path,this.prefs=g,this.state=d,this.value=i,this.message=null,this.template=null,this.local=o||{},this.local.label=r.label(this.flags,this.state,this.prefs,this.messages),this.value===void 0||this.local.hasOwnProperty("value")||(this.local.value=this.value),this.path.length){let p=this.path[this.path.length-1];typeof p!="object"&&(this.local.key=p);}}_setTemplate(u){if(this.template=u,!this.flags.label&&this.path.length===0){let i=this._template(this.template,"root");i&&(this.local.label=i);}}toString(){if(this.message)return this.message;let u=this.code;if(!this.prefs.errors.render)return this.code;let i=this._template(this.template)||this._template(this.prefs.messages)||this._template(this.messages);return i===void 0?`Error code "${u}" is not defined, your custom type is missing the correct messages definition`:(this.message=i.render(this.value,this.state,this.prefs,this.local,{errors:this.prefs.errors,messages:[this.prefs.messages,this.messages]}),this.prefs.errors.label||(this.message=this.message.replace(/^"" /,"").trim()),this.message)}_template(u,i){return r.template(this.value,u,i||this.code,this.state,this.prefs)}},r.path=function(u){let i="";for(let o of u)typeof o!="object"&&(typeof o=="string"?(i&&(i+="."),i+=o):i+=`[${o}]`);return i},r.template=function(u,i,o,c,h){if(!i)return;if(f.isTemplate(i))return o!=="root"?i:null;let d=h.errors.language;if(a.isResolvable(d)&&(d=d.resolve(u,c,h)),d&&i[d]){if(i[d][o]!==void 0)return i[d][o];if(i[d]["*"]!==void 0)return i[d]["*"]}return i[o]?i[o]:i["*"]},r.label=function(u,i,o,c){if(!o.errors.label)return "";if(u.label)return u.label;let h=i.path;return o.errors.label==="key"&&i.path.length>1&&(h=i.path.slice(-1)),r.path(h)||r.template(null,o.messages,"root",i,o)||c&&r.template(null,c,"root",i,o)||"value"},r.process=function(u,i,o){if(!u)return null;let{override:c,message:h,details:d}=r.details(u);if(c)return c;if(o.errors.stack)return new r.ValidationError(h,d,i);let g=Error.stackTraceLimit;Error.stackTraceLimit=0;let p=new r.ValidationError(h,d,i);return Error.stackTraceLimit=g,p},r.details=function(u,i={}){let o=[],c=[];for(let h of u){if(h instanceof Error){if(i.override!==false)return {override:h};let g=h.toString();o.push(g),c.push({message:g,type:"override",context:{error:h}});continue}let d=h.toString();o.push(d),c.push({message:d,path:h.path.filter((g=>typeof g!="object")),type:h.code,context:h.local});}return o.length>1&&(o=[...new Set(o)]),{message:o.join(". "),details:c}},r.ValidationError=class extends Error{constructor(u,i,o){super(u),this._original=o,this.details=i;}static isError(u){return u instanceof r.ValidationError}},r.ValidationError.prototype.isJoi=true,r.ValidationError.prototype.name="ValidationError",r.ValidationError.prototype.annotate=n.error;},8901:(t,r,s)=>{let n=s(375),a=s(8571),f=s(8160),u=s(6914),i={};r.type=function(o,c){let h=Object.getPrototypeOf(o),d=a(h),g=o._assign(Object.create(d)),p=Object.assign({},c);delete p.base,d._definition=p;let m=h._definition||{};p.messages=u.merge(m.messages,p.messages),p.properties=Object.assign({},m.properties,p.properties),g.type=p.type,p.flags=Object.assign({},m.flags,p.flags);let y=Object.assign({},m.terms);if(p.terms)for(let A in p.terms){let w=p.terms[A];n(g.$_terms[A]===void 0,"Invalid term override for",p.type,A),g.$_terms[A]=w.init,y[A]=w;}p.terms=y,p.args||(p.args=m.args),p.prepare=i.prepare(p.prepare,m.prepare),p.coerce&&(typeof p.coerce=="function"&&(p.coerce={method:p.coerce}),p.coerce.from&&!Array.isArray(p.coerce.from)&&(p.coerce={method:p.coerce.method,from:[].concat(p.coerce.from)})),p.coerce=i.coerce(p.coerce,m.coerce),p.validate=i.validate(p.validate,m.validate);let x=Object.assign({},m.rules);if(p.rules)for(let A in p.rules){let w=p.rules[A];n(typeof w=="object","Invalid rule definition for",p.type,A);let C=w.method;if(C===void 0&&(C=function(){return this.$_addRule(A)}),C&&(n(!d[A],"Rule conflict in",p.type,A),d[A]=C),n(!x[A],"Rule conflict in",p.type,A),x[A]=w,w.alias){let S=[].concat(w.alias);for(let O of S)d[O]=w.method;}w.args&&(w.argsByName=new Map,w.args=w.args.map((S=>(typeof S=="string"&&(S={name:S}),n(!w.argsByName.has(S.name),"Duplicated argument name",S.name),f.isSchema(S.assert)&&(S.assert=S.assert.strict().label(S.name)),w.argsByName.set(S.name,S),S))));}p.rules=x;let v=Object.assign({},m.modifiers);if(p.modifiers)for(let A in p.modifiers){n(!d[A],"Rule conflict in",p.type,A);let w=p.modifiers[A];n(typeof w=="function","Invalid modifier definition for",p.type,A);let C=function(S){return this.rule({[A]:S})};d[A]=C,v[A]=w;}if(p.modifiers=v,p.overrides){d._super=h,g.$_super={};for(let A in p.overrides)n(h[A],"Cannot override missing",A),p.overrides[A][f.symbols.parent]=h[A],g.$_super[A]=h[A].bind(g);Object.assign(d,p.overrides);}p.cast=Object.assign({},m.cast,p.cast);let k=Object.assign({},m.manifest,p.manifest);return k.build=i.build(p.manifest&&p.manifest.build,m.manifest&&m.manifest.build),p.manifest=k,p.rebuild=i.rebuild(p.rebuild,m.rebuild),g},i.build=function(o,c){return o&&c?function(h,d){return c(o(h,d),d)}:o||c},i.coerce=function(o,c){return o&&c?{from:o.from&&c.from?[...new Set([...o.from,...c.from])]:null,method(h,d){let g;if((!c.from||c.from.includes(typeof h))&&(g=c.method(h,d),g)){if(g.errors||g.value===void 0)return g;h=g.value;}if(!o.from||o.from.includes(typeof h)){let p=o.method(h,d);if(p)return p}return g}}:o||c},i.prepare=function(o,c){return o&&c?function(h,d){let g=o(h,d);if(g){if(g.errors||g.value===void 0)return g;h=g.value;}return c(h,d)||g}:o||c},i.rebuild=function(o,c){return o&&c?function(h){c(h),o(h);}:o||c},i.validate=function(o,c){return o&&c?function(h,d){let g=c(h,d);if(g){if(g.errors&&(!Array.isArray(g.errors)||g.errors.length))return g;h=g.value;}return o(h,d)||g}:o||c};},5107:(t,r,s)=>{let n=s(375),a=s(8571),f=s(8652),u=s(8160),i=s(3292),o=s(6354),c=s(8901),h=s(9708),d=s(6133),g=s(3328),p=s(1152),m,y={types:{alternatives:s(4946),any:s(8068),array:s(546),boolean:s(4937),date:s(7500),function:s(390),link:s(8785),number:s(3832),object:s(8966),string:s(7417),symbol:s(8826)},aliases:{alt:"alternatives",bool:"boolean",func:"function"},root:function(){let x={_types:new Set(Object.keys(y.types))};for(let v of x._types)x[v]=function(...k){return n(!k.length||["alternatives","link","object"].includes(v),"The",v,"type does not allow arguments"),y.generate(this,y.types[v],k)};for(let v of ["allow","custom","disallow","equal","exist","forbidden","invalid","not","only","optional","options","prefs","preferences","required","strip","valid","when"])x[v]=function(...k){return this.any()[v](...k)};Object.assign(x,y.methods);for(let v in y.aliases){let k=y.aliases[v];x[v]=x[k];}return x.x=x.expression,p.setup&&p.setup(x),x}};y.methods={ValidationError:o.ValidationError,version:u.version,cache:f.provider,assert(x,v,...k){y.assert(x,v,true,k);},attempt:(x,v,...k)=>y.assert(x,v,false,k),build(x){return n(typeof h.build=="function","Manifest functionality disabled"),h.build(this,x)},checkPreferences(x){u.checkPreferences(x);},compile(x,v){return i.compile(this,x,v)},defaults(x){n(typeof x=="function","modifier must be a function");let v=Object.assign({},this);for(let k of v._types){let A=x(v[k]());n(u.isSchema(A),"modifier must return a valid schema object"),v[k]=function(...w){return y.generate(this,A,w)};}return v},expression:(...x)=>new g(...x),extend(...x){u.verifyFlat(x,"extend"),m=m||s(3378),n(x.length,"You need to provide at least one extension"),this.assert(x,m.extensions);let v=Object.assign({},this);v._types=new Set(v._types);for(let k of x){typeof k=="function"&&(k=k(v)),this.assert(k,m.extension);let A=y.expandExtension(k,v);for(let w of A){n(v[w.type]===void 0||v._types.has(w.type),"Cannot override name",w.type);let C=w.base||this.any(),S=c.type(C,w);v._types.add(w.type),v[w.type]=function(...O){return y.generate(this,S,O)};}}return v},isError:o.ValidationError.isError,isExpression:g.isTemplate,isRef:d.isRef,isSchema:u.isSchema,in:(...x)=>d.in(...x),override:u.symbols.override,ref:(...x)=>d.create(...x),types(){let x={};for(let v of this._types)x[v]=this[v]();for(let v in y.aliases)x[v]=this[v]();return x}},y.assert=function(x,v,k,A){let w=A[0]instanceof Error||typeof A[0]=="string"?A[0]:null,C=w!==null?A[1]:A[0],S=v.validate(x,u.preferences({errors:{stack:true}},C||{})),O=S.error;if(!O)return S.value;if(w instanceof Error)throw w;let F=k&&typeof O.annotate=="function"?O.annotate():O.message;throw O instanceof o.ValidationError==0&&(O=a(O)),O.message=w?`${w} ${F}`:F,O},y.generate=function(x,v,k){return n(x,"Must be invoked on a Joi instance."),v.$_root=x,v._definition.args&&k.length?v._definition.args(v,...k):v},y.expandExtension=function(x,v){if(typeof x.type=="string")return [x];let k=[];for(let A of v._types)if(x.type.test(A)){let w=Object.assign({},x);w.type=A,w.base=v[A](),k.push(w);}return k},t.exports=y.root();},6914:(t,r,s)=>{let n=s(375),a=s(8571),f=s(3328);r.compile=function(u,i){if(typeof u=="string")return n(!i,"Cannot set single message string"),new f(u);if(f.isTemplate(u))return n(!i,"Cannot set single message template"),u;n(typeof u=="object"&&!Array.isArray(u),"Invalid message options"),i=i?a(i):{};for(let o in u){let c=u[o];if(o==="root"||f.isTemplate(c)){i[o]=c;continue}if(typeof c=="string"){i[o]=new f(c);continue}n(typeof c=="object"&&!Array.isArray(c),"Invalid message for",o);let h=o;for(o in i[h]=i[h]||{},c){let d=c[o];o==="root"||f.isTemplate(d)?i[h][o]=d:(n(typeof d=="string","Invalid message for",o,"in",h),i[h][o]=new f(d));}}return i},r.decompile=function(u){let i={};for(let o in u){let c=u[o];if(o==="root"){i.root=c;continue}if(f.isTemplate(c)){i[o]=c.describe({compact:true});continue}let h=o;for(o in i[h]={},c){let d=c[o];o!=="root"?i[h][o]=d.describe({compact:true}):i[h].root=d;}}return i},r.merge=function(u,i){if(!u)return r.compile(i);if(!i)return u;if(typeof i=="string")return new f(i);if(f.isTemplate(i))return i;let o=a(u);for(let c in i){let h=i[c];if(c==="root"||f.isTemplate(h)){o[c]=h;continue}if(typeof h=="string"){o[c]=new f(h);continue}n(typeof h=="object"&&!Array.isArray(h),"Invalid message for",c);let d=c;for(c in o[d]=o[d]||{},h){let g=h[c];c==="root"||f.isTemplate(g)?o[d][c]=g:(n(typeof g=="string","Invalid message for",c,"in",d),o[d][c]=new f(g));}}return o};},2294:(t,r,s)=>{let n=s(375),a=s(8160),f=s(6133),u={};r.Ids=u.Ids=class{constructor(){this._byId=new Map,this._byKey=new Map,this._schemaChain=false;}clone(){let i=new u.Ids;return i._byId=new Map(this._byId),i._byKey=new Map(this._byKey),i._schemaChain=this._schemaChain,i}concat(i){i._schemaChain&&(this._schemaChain=true);for(let[o,c]of i._byId.entries())n(!this._byKey.has(o),"Schema id conflicts with existing key:",o),this._byId.set(o,c);for(let[o,c]of i._byKey.entries())n(!this._byId.has(o),"Schema key conflicts with existing id:",o),this._byKey.set(o,c);}fork(i,o,c){let h=this._collect(i);h.push({schema:c});let d=h.shift(),g={id:d.id,schema:o(d.schema)};n(a.isSchema(g.schema),"adjuster function failed to return a joi schema type");for(let p of h)g={id:p.id,schema:u.fork(p.schema,g.id,g.schema)};return g.schema}labels(i,o=[]){let c=i[0],h=this._get(c);if(!h)return [...o,...i].join(".");let d=i.slice(1);return o=[...o,h.schema._flags.label||c],d.length?h.schema._ids.labels(d,o):o.join(".")}reach(i,o=[]){let c=i[0],h=this._get(c);n(h,"Schema does not contain path",[...o,...i].join("."));let d=i.slice(1);return d.length?h.schema._ids.reach(d,[...o,c]):h.schema}register(i,{key:o}={}){if(!i||!a.isSchema(i))return;(i.$_property("schemaChain")||i._ids._schemaChain)&&(this._schemaChain=true);let c=i._flags.id;if(c){let h=this._byId.get(c);n(!h||h.schema===i,"Cannot add different schemas with the same id:",c),n(!this._byKey.has(c),"Schema id conflicts with existing key:",c),this._byId.set(c,{schema:i,id:c});}o&&(n(!this._byKey.has(o),"Schema already contains key:",o),n(!this._byId.has(o),"Schema key conflicts with existing id:",o),this._byKey.set(o,{schema:i,id:o}));}reset(){this._byId=new Map,this._byKey=new Map,this._schemaChain=false;}_collect(i,o=[],c=[]){let h=i[0],d=this._get(h);n(d,"Schema does not contain path",[...o,...i].join(".")),c=[d,...c];let g=i.slice(1);return g.length?d.schema._ids._collect(g,[...o,h],c):c}_get(i){return this._byId.get(i)||this._byKey.get(i)}},u.fork=function(i,o,c){let h=r.schema(i,{each:(d,{key:g})=>{if(o===(d._flags.id||g))return c},ref:false});return h?h.$_mutateRebuild():i},r.schema=function(i,o){let c;for(let h in i._flags){if(h[0]==="_")continue;let d=u.scan(i._flags[h],{source:"flags",name:h},o);d!==void 0&&(c=c||i.clone(),c._flags[h]=d);}for(let h=0;h<i._rules.length;++h){let d=i._rules[h],g=u.scan(d.args,{source:"rules",name:d.name},o);if(g!==void 0){c=c||i.clone();let p=Object.assign({},d);p.args=g,c._rules[h]=p,c._singleRules.get(d.name)===d&&c._singleRules.set(d.name,p);}}for(let h in i.$_terms){if(h[0]==="_")continue;let d=u.scan(i.$_terms[h],{source:"terms",name:h},o);d!==void 0&&(c=c||i.clone(),c.$_terms[h]=d);}return c},u.scan=function(i,o,c,h,d){let g=h||[];if(i===null||typeof i!="object")return;let p;if(Array.isArray(i)){for(let m=0;m<i.length;++m){let y=o.source==="terms"&&o.name==="keys"&&i[m].key,x=u.scan(i[m],o,c,[m,...g],y);x!==void 0&&(p=p||i.slice(),p[m]=x);}return p}if(c.schema!==false&&a.isSchema(i)||c.ref!==false&&f.isRef(i)){let m=c.each(i,{...o,path:g,key:d});return m===i?void 0:m}for(let m in i){if(m[0]==="_")continue;let y=u.scan(i[m],o,c,[m,...g],d);y!==void 0&&(p=p||Object.assign({},i),p[m]=y);}return p};},6133:(t,r,s)=>{let n=s(375),a=s(8571),f=s(9621),u=s(8160),i,o={symbol:Symbol("ref"),defaults:{adjust:null,in:false,iterables:null,map:null,separator:".",type:"value"}};r.create=function(c,h={}){n(typeof c=="string","Invalid reference key:",c),u.assertOptions(h,["adjust","ancestor","in","iterables","map","prefix","render","separator"]),n(!h.prefix||typeof h.prefix=="object","options.prefix must be of type object");let d=Object.assign({},o.defaults,h);delete d.prefix;let g=d.separator,p=o.context(c,g,h.prefix);if(d.type=p.type,c=p.key,d.type==="value")if(p.root&&(n(!g||c[0]!==g,"Cannot specify relative path with root prefix"),d.ancestor="root",c||(c=null)),g&&g===c)c=null,d.ancestor=0;else if(d.ancestor!==void 0)n(!g||!c||c[0]!==g,"Cannot combine prefix with ancestor option");else {let[m,y]=o.ancestor(c,g);y&&(c=c.slice(y))===""&&(c=null),d.ancestor=m;}return d.path=g?c===null?[]:c.split(g):[c],new o.Ref(d)},r.in=function(c,h={}){return r.create(c,{...h,in:true})},r.isRef=function(c){return !!c&&!!c[u.symbols.ref]},o.Ref=class{constructor(c){n(typeof c=="object","Invalid reference construction"),u.assertOptions(c,["adjust","ancestor","in","iterables","map","path","render","separator","type","depth","key","root","display"]),n([false,void 0].includes(c.separator)||typeof c.separator=="string"&&c.separator.length===1,"Invalid separator"),n(!c.adjust||typeof c.adjust=="function","options.adjust must be a function"),n(!c.map||Array.isArray(c.map),"options.map must be an array"),n(!c.map||!c.adjust,"Cannot set both map and adjust options"),Object.assign(this,o.defaults,c),n(this.type==="value"||this.ancestor===void 0,"Non-value references cannot reference ancestors"),Array.isArray(this.map)&&(this.map=new Map(this.map)),this.depth=this.path.length,this.key=this.path.length?this.path.join(this.separator):null,this.root=this.path[0],this.updateDisplay();}resolve(c,h,d,g,p={}){return n(!this.in||p.in,"Invalid in() reference usage"),this.type==="global"?this._resolve(d.context,h,p):this.type==="local"?this._resolve(g,h,p):this.ancestor?this.ancestor==="root"?this._resolve(h.ancestors[h.ancestors.length-1],h,p):(n(this.ancestor<=h.ancestors.length,"Invalid reference exceeds the schema root:",this.display),this._resolve(h.ancestors[this.ancestor-1],h,p)):this._resolve(c,h,p)}_resolve(c,h,d){let g;if(this.type==="value"&&h.mainstay.shadow&&d.shadow!==false&&(g=h.mainstay.shadow.get(this.absolute(h))),g===void 0&&(g=f(c,this.path,{iterables:this.iterables,functions:true})),this.adjust&&(g=this.adjust(g)),this.map){let p=this.map.get(g);p!==void 0&&(g=p);}return h.mainstay&&h.mainstay.tracer.resolve(h,this,g),g}toString(){return this.display}absolute(c){return [...c.path.slice(0,-this.ancestor),...this.path]}clone(){return new o.Ref(this)}describe(){let c={path:this.path};this.type!=="value"&&(c.type=this.type),this.separator!=="."&&(c.separator=this.separator),this.type==="value"&&this.ancestor!==1&&(c.ancestor=this.ancestor),this.map&&(c.map=[...this.map]);for(let h of ["adjust","iterables","render"])this[h]!==null&&this[h]!==void 0&&(c[h]=this[h]);return this.in!==false&&(c.in=true),{ref:c}}updateDisplay(){let c=this.key!==null?this.key:"";if(this.type!=="value")return void(this.display=`ref:${this.type}:${c}`);if(!this.separator)return void(this.display=`ref:${c}`);if(!this.ancestor)return void(this.display=`ref:${this.separator}${c}`);if(this.ancestor==="root")return void(this.display=`ref:root:${c}`);if(this.ancestor===1)return void(this.display=`ref:${c||".."}`);let h=new Array(this.ancestor+1).fill(this.separator).join("");this.display=`ref:${h}${c||""}`;}},o.Ref.prototype[u.symbols.ref]=true,r.build=function(c){return (c=Object.assign({},o.defaults,c)).type==="value"&&c.ancestor===void 0&&(c.ancestor=1),new o.Ref(c)},o.context=function(c,h,d={}){if(c=c.trim(),d){let g=d.global===void 0?"$":d.global;if(g!==h&&c.startsWith(g))return {key:c.slice(g.length),type:"global"};let p=d.local===void 0?"#":d.local;if(p!==h&&c.startsWith(p))return {key:c.slice(p.length),type:"local"};let m=d.root===void 0?"/":d.root;if(m!==h&&c.startsWith(m))return {key:c.slice(m.length),type:"value",root:true}}return {key:c,type:"value"}},o.ancestor=function(c,h){if(!h)return [1,0];if(c[0]!==h)return [1,0];if(c[1]!==h)return [0,1];let d=2;for(;c[d]===h;)++d;return [d-1,d]},r.toSibling=0,r.toParent=1,r.Manager=class{constructor(){this.refs=[];}register(c,h){if(c)if(h=h===void 0?r.toParent:h,Array.isArray(c))for(let d of c)this.register(d,h);else if(u.isSchema(c))for(let d of c._refs.refs)d.ancestor-h>=0&&this.refs.push({ancestor:d.ancestor-h,root:d.root});else r.isRef(c)&&c.type==="value"&&c.ancestor-h>=0&&this.refs.push({ancestor:c.ancestor-h,root:c.root}),i=i||s(3328),i.isTemplate(c)&&this.register(c.refs(),h);}get length(){return this.refs.length}clone(){let c=new r.Manager;return c.refs=a(this.refs),c}reset(){this.refs=[];}roots(){return this.refs.filter((c=>!c.ancestor)).map((c=>c.root))}};},3378:(t,r,s)=>{let n=s(5107),a={};a.wrap=n.string().min(1).max(2).allow(false),r.preferences=n.object({allowUnknown:n.boolean(),abortEarly:n.boolean(),artifacts:n.boolean(),cache:n.boolean(),context:n.object(),convert:n.boolean(),dateFormat:n.valid("date","iso","string","time","utc"),debug:n.boolean(),errors:{escapeHtml:n.boolean(),label:n.valid("path","key",false),language:[n.string(),n.object().ref()],render:n.boolean(),stack:n.boolean(),wrap:{label:a.wrap,array:a.wrap,string:a.wrap}},externals:n.boolean(),messages:n.object(),noDefaults:n.boolean(),nonEnumerables:n.boolean(),presence:n.valid("required","optional","forbidden"),skipFunctions:n.boolean(),stripUnknown:n.object({arrays:n.boolean(),objects:n.boolean()}).or("arrays","objects").allow(true,false),warnings:n.boolean()}).strict(),a.nameRx=/^[a-zA-Z0-9]\w*$/,a.rule=n.object({alias:n.array().items(n.string().pattern(a.nameRx)).single(),args:n.array().items(n.string(),n.object({name:n.string().pattern(a.nameRx).required(),ref:n.boolean(),assert:n.alternatives([n.function(),n.object().schema()]).conditional("ref",{is:true,then:n.required()}),normalize:n.function(),message:n.string().when("assert",{is:n.function(),then:n.required()})})),convert:n.boolean(),manifest:n.boolean(),method:n.function().allow(false),multi:n.boolean(),validate:n.function()}),r.extension=n.object({type:n.alternatives([n.string(),n.object().regex()]).required(),args:n.function(),cast:n.object().pattern(a.nameRx,n.object({from:n.function().maxArity(1).required(),to:n.function().minArity(1).maxArity(2).required()})),base:n.object().schema().when("type",{is:n.object().regex(),then:n.forbidden()}),coerce:[n.function().maxArity(3),n.object({method:n.function().maxArity(3).required(),from:n.array().items(n.string()).single()})],flags:n.object().pattern(a.nameRx,n.object({setter:n.string(),default:n.any()})),manifest:{build:n.function().arity(2)},messages:[n.object(),n.string()],modifiers:n.object().pattern(a.nameRx,n.function().minArity(1).maxArity(2)),overrides:n.object().pattern(a.nameRx,n.function()),prepare:n.function().maxArity(3),rebuild:n.function().arity(1),rules:n.object().pattern(a.nameRx,a.rule),terms:n.object().pattern(a.nameRx,n.object({init:n.array().allow(null).required(),manifest:n.object().pattern(/.+/,[n.valid("schema","single"),n.object({mapped:n.object({from:n.string().required(),to:n.string().required()}).required()})])})),validate:n.function().maxArity(3)}).strict(),r.extensions=n.array().items(n.object(),n.function().arity(1)).strict(),a.desc={buffer:n.object({buffer:n.string()}),func:n.object({function:n.function().required(),options:{literal:true}}),override:n.object({override:true}),ref:n.object({ref:n.object({type:n.valid("value","global","local"),path:n.array().required(),separator:n.string().length(1).allow(false),ancestor:n.number().min(0).integer().allow("root"),map:n.array().items(n.array().length(2)).min(1),adjust:n.function(),iterables:n.boolean(),in:n.boolean(),render:n.boolean()}).required()}),regex:n.object({regex:n.string().min(3)}),special:n.object({special:n.valid("deep").required()}),template:n.object({template:n.string().required(),options:n.object()}),value:n.object({value:n.alternatives([n.object(),n.array()]).required()})},a.desc.entity=n.alternatives([n.array().items(n.link("...")),n.boolean(),n.function(),n.number(),n.string(),a.desc.buffer,a.desc.func,a.desc.ref,a.desc.regex,a.desc.special,a.desc.template,a.desc.value,n.link("/")]),a.desc.values=n.array().items(null,n.boolean(),n.function(),n.number().allow(1/0,-1/0),n.string().allow(""),n.symbol(),a.desc.buffer,a.desc.func,a.desc.override,a.desc.ref,a.desc.regex,a.desc.template,a.desc.value),a.desc.messages=n.object().pattern(/.+/,[n.string(),a.desc.template,n.object().pattern(/.+/,[n.string(),a.desc.template])]),r.description=n.object({type:n.string().required(),flags:n.object({cast:n.string(),default:n.any(),description:n.string(),empty:n.link("/"),failover:a.desc.entity,id:n.string(),label:n.string(),only:true,presence:["optional","required","forbidden"],result:["raw","strip"],strip:n.boolean(),unit:n.string()}).unknown(),preferences:{allowUnknown:n.boolean(),abortEarly:n.boolean(),artifacts:n.boolean(),cache:n.boolean(),convert:n.boolean(),dateFormat:["date","iso","string","time","utc"],errors:{escapeHtml:n.boolean(),label:["path","key"],language:[n.string(),a.desc.ref],wrap:{label:a.wrap,array:a.wrap}},externals:n.boolean(),messages:a.desc.messages,noDefaults:n.boolean(),nonEnumerables:n.boolean(),presence:["required","optional","forbidden"],skipFunctions:n.boolean(),stripUnknown:n.object({arrays:n.boolean(),objects:n.boolean()}).or("arrays","objects").allow(true,false),warnings:n.boolean()},allow:a.desc.values,invalid:a.desc.values,rules:n.array().min(1).items({name:n.string().required(),args:n.object().min(1),keep:n.boolean(),message:[n.string(),a.desc.messages],warn:n.boolean()}),keys:n.object().pattern(/.*/,n.link("/")),link:a.desc.ref}).pattern(/^[a-z]\w*$/,n.any());},493:(t,r,s)=>{let n=s(8571),a=s(9621),f=s(8160),u={value:Symbol("value")};t.exports=u.State=class{constructor(i,o,c){this.path=i,this.ancestors=o,this.mainstay=c.mainstay,this.schemas=c.schemas,this.debug=null;}localize(i,o=null,c=null){let h=new u.State(i,o,this);return c&&h.schemas&&(h.schemas=[u.schemas(c),...h.schemas]),h}nest(i,o){let c=new u.State(this.path,this.ancestors,this);return c.schemas=c.schemas&&[u.schemas(i),...c.schemas],c.debug=o,c}shadow(i,o){this.mainstay.shadow=this.mainstay.shadow||new u.Shadow,this.mainstay.shadow.set(this.path,i,o);}snapshot(){this.mainstay.shadow&&(this._snapshot=n(this.mainstay.shadow.node(this.path))),this.mainstay.snapshot();}restore(){this.mainstay.shadow&&(this.mainstay.shadow.override(this.path,this._snapshot),this._snapshot=void 0),this.mainstay.restore();}commit(){this.mainstay.shadow&&(this.mainstay.shadow.override(this.path,this._snapshot),this._snapshot=void 0),this.mainstay.commit();}},u.schemas=function(i){return f.isSchema(i)?{schema:i}:i},u.Shadow=class{constructor(){this._values=null;}set(i,o,c){if(!i.length||c==="strip"&&typeof i[i.length-1]=="number")return;this._values=this._values||new Map;let h=this._values;for(let d=0;d<i.length;++d){let g=i[d],p=h.get(g);p||(p=new Map,h.set(g,p)),h=p;}h[u.value]=o;}get(i){let o=this.node(i);if(o)return o[u.value]}node(i){if(this._values)return a(this._values,i,{iterables:true})}override(i,o){if(!this._values)return;let c=i.slice(0,-1),h=i[i.length-1],d=a(this._values,c,{iterables:true});o?d.set(h,o):d&&d.delete(h);}};},3328:(t,r,s)=>{let n=s(375),a=s(8571),f=s(5277),u=s(1447),i=s(8160),o=s(6354),c=s(6133),h={symbol:Symbol("template"),opens:new Array(1e3).join("\0"),closes:new Array(1e3).join(""),dateFormat:{date:Date.prototype.toDateString,iso:Date.prototype.toISOString,string:Date.prototype.toString,time:Date.prototype.toTimeString,utc:Date.prototype.toUTCString}};t.exports=h.Template=class{constructor(d,g){if(n(typeof d=="string","Template source must be a string"),n(!d.includes("\0")&&!d.includes(""),"Template source cannot contain reserved control characters"),this.source=d,this.rendered=d,this._template=null,g){let{functions:p,...m}=g;this._settings=Object.keys(m).length?a(m):void 0,this._functions=p,this._functions&&(n(Object.keys(this._functions).every((y=>typeof y=="string")),"Functions keys must be strings"),n(Object.values(this._functions).every((y=>typeof y=="function")),"Functions values must be functions"));}else this._settings=void 0,this._functions=void 0;this._parse();}_parse(){if(!this.source.includes("{"))return;let d=h.encode(this.source),g=h.split(d),p=false,m=[],y=g.shift();y&&m.push(y);for(let x of g){let v=x[0]!=="{",k=v?"}":"}}",A=x.indexOf(k);if(A===-1||x[1]==="{"){m.push(`{${h.decode(x)}`);continue}let w=x.slice(v?0:1,A),C=w[0]===":";C&&(w=w.slice(1));let S=this._ref(h.decode(w),{raw:v,wrapped:C});m.push(S),typeof S!="string"&&(p=true);let O=x.slice(A+k.length);O&&m.push(h.decode(O));}p?this._template=m:this.rendered=m.join("");}static date(d,g){return h.dateFormat[g.dateFormat].call(d)}describe(d={}){if(!this._settings&&d.compact)return this.source;let g={template:this.source};return this._settings&&(g.options=this._settings),this._functions&&(g.functions=this._functions),g}static build(d){return new h.Template(d.template,d.options||d.functions?{...d.options,functions:d.functions}:void 0)}isDynamic(){return !!this._template}static isTemplate(d){return !!d&&!!d[i.symbols.template]}refs(){if(!this._template)return;let d=[];for(let g of this._template)typeof g!="string"&&d.push(...g.refs);return d}resolve(d,g,p,m){return this._template&&this._template.length===1?this._part(this._template[0],d,g,p,m,{}):this.render(d,g,p,m)}_part(d,...g){return d.ref?d.ref.resolve(...g):d.formula.evaluate(g)}render(d,g,p,m,y={}){if(!this.isDynamic())return this.rendered;let x=[];for(let v of this._template)if(typeof v=="string")x.push(v);else {let k=this._part(v,d,g,p,m,y),A=h.stringify(k,d,g,p,m,y);if(A!==void 0){let w=v.raw||(y.errors&&y.errors.escapeHtml)===false?A:f(A);x.push(h.wrap(w,v.wrapped&&p.errors.wrap.label));}}return x.join("")}_ref(d,{raw:g,wrapped:p}){let m=[],y=v=>{let k=c.create(v,this._settings);return m.push(k),A=>{let w=k.resolve(...A);return w!==void 0?w:null}};try{let v=this._functions?{...h.functions,...this._functions}:h.functions;var x=new u.Parser(d,{reference:y,functions:v,constants:h.constants});}catch(v){throw v.message=`Invalid template variable "${d}" fails due to: ${v.message}`,v}if(x.single){if(x.single.type==="reference"){let v=m[0];return {ref:v,raw:g,refs:m,wrapped:p||v.type==="local"&&v.key==="label"}}return h.stringify(x.single.value)}return {formula:x,raw:g,refs:m}}toString(){return this.source}},h.Template.prototype[i.symbols.template]=true,h.Template.prototype.isImmutable=true,h.encode=function(d){return d.replace(/\\(\{+)/g,((g,p)=>h.opens.slice(0,p.length))).replace(/\\(\}+)/g,((g,p)=>h.closes.slice(0,p.length)))},h.decode=function(d){return d.replace(/\u0000/g,"{").replace(/\u0001/g,"}")},h.split=function(d){let g=[],p="";for(let m=0;m<d.length;++m){let y=d[m];if(y==="{"){let x="";for(;m+1<d.length&&d[m+1]==="{";)x+="{",++m;g.push(p),p=x;}else p+=y;}return g.push(p),g},h.wrap=function(d,g){return g?g.length===1?`${g}${d}${g}`:`${g[0]}${d}${g[1]}`:d},h.stringify=function(d,g,p,m,y,x={}){let v=typeof d,k=m&&m.errors&&m.errors.wrap||{},A=false;if(c.isRef(d)&&d.render&&(A=d.in,d=d.resolve(g,p,m,y,{in:d.in,...x})),d===null)return "null";if(v==="string")return h.wrap(d,x.arrayItems&&k.string);if(v==="number"||v==="function"||v==="symbol")return d.toString();if(v!=="object")return JSON.stringify(d);if(d instanceof Date)return h.Template.date(d,m);if(d instanceof Map){let C=[];for(let[S,O]of d.entries())C.push(`${S.toString()} -> ${O.toString()}`);d=C;}if(!Array.isArray(d))return d.toString();let w=[];for(let C of d)w.push(h.stringify(C,g,p,m,y,{arrayItems:true,...x}));return h.wrap(w.join(", "),!A&&k.array)},h.constants={true:true,false:false,null:null,second:1e3,minute:6e4,hour:36e5,day:864e5},h.functions={if:(d,g,p)=>d?g:p,length:d=>typeof d=="string"?d.length:d&&typeof d=="object"?Array.isArray(d)?d.length:Object.keys(d).length:null,msg(d){let[g,p,m,y,x]=this,v=x.messages;if(!v)return "";let k=o.template(g,v[0],d,p,m)||o.template(g,v[1],d,p,m);return k?k.render(g,p,m,y,x):""},number:d=>typeof d=="number"?d:typeof d=="string"?parseFloat(d):typeof d=="boolean"?d?1:0:d instanceof Date?d.getTime():null};},4946:(t,r,s)=>{let n=s(375),a=s(1687),f=s(8068),u=s(8160),i=s(3292),o=s(6354),c=s(6133),h={};t.exports=f.extend({type:"alternatives",flags:{match:{default:"any"}},terms:{matches:{init:[],register:c.toSibling}},args:(d,...g)=>g.length===1&&Array.isArray(g[0])?d.try(...g[0]):d.try(...g),validate(d,g){let{schema:p,error:m,state:y,prefs:x}=g;if(p._flags.match){let k=[],A=[];for(let C=0;C<p.$_terms.matches.length;++C){let S=p.$_terms.matches[C],O=y.nest(S.schema,`match.${C}`);O.snapshot();let F=S.schema.$_validate(d,O,x);F.errors?(A.push(F.errors),O.restore()):(k.push(F.value),O.commit());}if(k.length===0)return {errors:m("alternatives.any",{details:A.map((C=>o.details(C,{override:false})))})};if(p._flags.match==="one")return k.length===1?{value:k[0]}:{errors:m("alternatives.one")};if(k.length!==p.$_terms.matches.length)return {errors:m("alternatives.all",{details:A.map((C=>o.details(C,{override:false})))})};let w=C=>C.$_terms.matches.some((S=>S.schema.type==="object"||S.schema.type==="alternatives"&&w(S.schema)));return w(p)?{value:k.reduce(((C,S)=>a(C,S,{mergeArrays:false})))}:{value:k[k.length-1]}}let v=[];for(let k=0;k<p.$_terms.matches.length;++k){let A=p.$_terms.matches[k];if(A.schema){let S=y.nest(A.schema,`match.${k}`);S.snapshot();let O=A.schema.$_validate(d,S,x);if(!O.errors)return S.commit(),O;S.restore(),v.push({schema:A.schema,reports:O.errors});continue}let w=A.ref?A.ref.resolve(d,y,x):d,C=A.is?[A]:A.switch;for(let S=0;S<C.length;++S){let O=C[S],{is:F,then:T,otherwise:B}=O,$=`match.${k}${A.switch?"."+S:""}`;if(F.$_match(w,y.nest(F,`${$}.is`),x)){if(T)return T.$_validate(d,y.nest(T,`${$}.then`),x)}else if(B)return B.$_validate(d,y.nest(B,`${$}.otherwise`),x)}}return h.errors(v,g)},rules:{conditional:{method(d,g){n(!this._flags._endedSwitch,"Unreachable condition"),n(!this._flags.match,"Cannot combine match mode",this._flags.match,"with conditional rule"),n(g.break===void 0,"Cannot use break option with alternatives conditional");let p=this.clone(),m=i.when(p,d,g),y=m.is?[m]:m.switch;for(let x of y)if(x.then&&x.otherwise){p.$_setFlag("_endedSwitch",true,{clone:false});break}return p.$_terms.matches.push(m),p.$_mutateRebuild()}},match:{method(d){if(n(["any","one","all"].includes(d),"Invalid alternatives match mode",d),d!=="any")for(let g of this.$_terms.matches)n(g.schema,"Cannot combine match mode",d,"with conditional rules");return this.$_setFlag("match",d)}},try:{method(...d){n(d.length,"Missing alternative schemas"),u.verifyFlat(d,"try"),n(!this._flags._endedSwitch,"Unreachable condition");let g=this.clone();for(let p of d)g.$_terms.matches.push({schema:g.$_compile(p)});return g.$_mutateRebuild()}}},overrides:{label(d){return this.$_parent("label",d).$_modify({each:(g,p)=>p.path[0]!=="is"&&typeof g._flags.label!="string"?g.label(d):void 0,ref:false})}},rebuild(d){d.$_modify({each:g=>{u.isSchema(g)&&g.type==="array"&&d.$_setFlag("_arrayItems",true,{clone:false});}});},manifest:{build(d,g){if(g.matches)for(let p of g.matches){let{schema:m,ref:y,is:x,not:v,then:k,otherwise:A}=p;d=m?d.try(m):y?d.conditional(y,{is:x,then:k,not:v,otherwise:A,switch:p.switch}):d.conditional(x,{then:k,otherwise:A});}return d}},messages:{"alternatives.all":"{{#label}} does not match all of the required types","alternatives.any":"{{#label}} does not match any of the allowed types","alternatives.match":"{{#label}} does not match any of the allowed types","alternatives.one":"{{#label}} matches more than one allowed type","alternatives.types":"{{#label}} must be one of {{#types}}"}}),h.errors=function(d,{error:g,state:p}){if(!d.length)return {errors:g("alternatives.any")};if(d.length===1)return {errors:d[0].reports};let m=new Set,y=[];for(let{reports:x,schema:v}of d){if(x.length>1)return h.unmatched(d,g);let k=x[0];if(k instanceof o.Report==0)return h.unmatched(d,g);if(k.state.path.length!==p.path.length){y.push({type:v.type,report:k});continue}if(k.code==="any.only"){for(let C of k.local.valids)m.add(C);continue}let[A,w]=k.code.split(".");w!=="base"?y.push({type:v.type,report:k}):k.code==="object.base"?m.add(k.local.type):m.add(A);}return y.length?y.length===1?{errors:y[0].report}:h.unmatched(d,g):{errors:g("alternatives.types",{types:[...m]})}},h.unmatched=function(d,g){let p=[];for(let m of d)p.push(...m.reports);return {errors:g("alternatives.match",o.details(p,{override:false}))}};},8068:(t,r,s)=>{let n=s(375),a=s(7629),f=s(8160),u=s(6914);t.exports=a.extend({type:"any",flags:{only:{default:false}},terms:{alterations:{init:null},examples:{init:null},externals:{init:null},metas:{init:[]},notes:{init:[]},shared:{init:null},tags:{init:[]},whens:{init:null}},rules:{custom:{method(i,o){return n(typeof i=="function","Method must be a function"),n(o===void 0||o&&typeof o=="string","Description must be a non-empty string"),this.$_addRule({name:"custom",args:{method:i,description:o}})},validate(i,o,{method:c}){try{return c(i,o)}catch(h){return o.error("any.custom",{error:h})}},args:["method","description"],multi:true},messages:{method(i){return this.prefs({messages:i})}},shared:{method(i){n(f.isSchema(i)&&i._flags.id,"Schema must be a schema with an id");let o=this.clone();return o.$_terms.shared=o.$_terms.shared||[],o.$_terms.shared.push(i),o.$_mutateRegister(i),o}},warning:{method(i,o){return n(i&&typeof i=="string","Invalid warning code"),this.$_addRule({name:"warning",args:{code:i,local:o},warn:true})},validate:(i,o,{code:c,local:h})=>o.error(c,h),args:["code","local"],multi:true}},modifiers:{keep(i,o=true){i.keep=o;},message(i,o){i.message=u.compile(o);},warn(i,o=true){i.warn=o;}},manifest:{build(i,o){for(let c in o){let h=o[c];if(["examples","externals","metas","notes","tags"].includes(c))for(let d of h)i=i[c.slice(0,-1)](d);else if(c!=="alterations")if(c!=="whens"){if(c==="shared")for(let d of h)i=i.shared(d);}else for(let d of h){let{ref:g,is:p,not:m,then:y,otherwise:x,concat:v}=d;i=v?i.concat(v):g?i.when(g,{is:p,not:m,then:y,otherwise:x,switch:d.switch,break:d.break}):i.when(p,{then:y,otherwise:x,break:d.break});}else {let d={};for(let{target:g,adjuster:p}of h)d[g]=p;i=i.alter(d);}}return i}},messages:{"any.custom":"{{#label}} failed custom validation because {{#error.message}}","any.default":"{{#label}} threw an error when running default method","any.failover":"{{#label}} threw an error when running failover method","any.invalid":"{{#label}} contains an invalid value","any.only":'{{#label}} must be {if(#valids.length == 1, "", "one of ")}{{#valids}}',"any.ref":"{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}","any.required":"{{#label}} is required","any.unknown":"{{#label}} is not allowed"}});},546:(t,r,s)=>{let n=s(375),a=s(9474),f=s(9621),u=s(8068),i=s(8160),o=s(3292),c={};t.exports=u.extend({type:"array",flags:{single:{default:false},sparse:{default:false}},terms:{items:{init:[],manifest:"schema"},ordered:{init:[],manifest:"schema"},_exclusions:{init:[]},_inclusions:{init:[]},_requireds:{init:[]}},coerce:{from:"object",method(h,{schema:d,state:g,prefs:p}){if(!Array.isArray(h))return;let m=d.$_getRule("sort");return m?c.sort(d,h,m.args.options,g,p):void 0}},validate(h,{schema:d,error:g}){if(!Array.isArray(h)){if(d._flags.single){let p=[h];return p[i.symbols.arraySingle]=true,{value:p}}return {errors:g("array.base")}}if(d.$_getRule("items")||d.$_terms.externals)return {value:h.slice()}},rules:{has:{method(h){h=this.$_compile(h,{appendPath:true});let d=this.$_addRule({name:"has",args:{schema:h}});return d.$_mutateRegister(h),d},validate(h,{state:d,prefs:g,error:p},{schema:m}){let y=[h,...d.ancestors];for(let v=0;v<h.length;++v){let k=d.localize([...d.path,v],y,m);if(m.$_match(h[v],k,g))return h}let x=m._flags.label;return x?p("array.hasKnown",{patternLabel:x}):p("array.hasUnknown",null)},multi:true},items:{method(...h){i.verifyFlat(h,"items");let d=this.$_addRule("items");for(let g=0;g<h.length;++g){let p=i.tryWithPath((()=>this.$_compile(h[g])),g,{append:true});d.$_terms.items.push(p);}return d.$_mutateRebuild()},validate(h,{schema:d,error:g,state:p,prefs:m,errorsArray:y}){let x=d.$_terms._requireds.slice(),v=d.$_terms.ordered.slice(),k=[...d.$_terms._inclusions,...x],A=!h[i.symbols.arraySingle];delete h[i.symbols.arraySingle];let w=y(),C=h.length;for(let S=0;S<C;++S){let O=h[S],F=false,T=false,B=A?S:new Number(S),$=[...p.path,B];if(!d._flags.sparse&&O===void 0){if(w.push(g("array.sparse",{key:B,path:$,pos:S,value:void 0},p.localize($))),m.abortEarly)return w;v.shift();continue}let V=[h,...p.ancestors];for(let z of d.$_terms._exclusions)if(z.$_match(O,p.localize($,V,z),m,{presence:"ignore"})){if(w.push(g("array.excludes",{pos:S,value:O},p.localize($))),m.abortEarly)return w;F=true,v.shift();break}if(F)continue;if(d.$_terms.ordered.length){if(v.length){let z=v.shift(),G=z.$_validate(O,p.localize($,V,z),m);if(G.errors){if(w.push(...G.errors),m.abortEarly)return w}else if(z._flags.result==="strip")c.fastSplice(h,S),--S,--C;else {if(!d._flags.sparse&&G.value===void 0){if(w.push(g("array.sparse",{key:B,path:$,pos:S,value:void 0},p.localize($))),m.abortEarly)return w;continue}h[S]=G.value;}continue}if(!d.$_terms.items.length){if(w.push(g("array.orderedLength",{pos:S,limit:d.$_terms.ordered.length})),m.abortEarly)return w;break}}let H=[],te=x.length;for(let z=0;z<te;++z){let G=p.localize($,V,x[z]);G.snapshot();let Y=x[z].$_validate(O,G,m);if(H[z]=Y,!Y.errors){if(G.commit(),h[S]=Y.value,T=true,c.fastSplice(x,z),--z,--te,!d._flags.sparse&&Y.value===void 0&&(w.push(g("array.sparse",{key:B,path:$,pos:S,value:void 0},p.localize($))),m.abortEarly))return w;break}G.restore();}if(T)continue;let W=m.stripUnknown&&!!m.stripUnknown.arrays||false;te=k.length;for(let z of k){let G,Y=x.indexOf(z);if(Y!==-1)G=H[Y];else {let ge=p.localize($,V,z);if(ge.snapshot(),G=z.$_validate(O,ge,m),!G.errors){ge.commit(),z._flags.result==="strip"?(c.fastSplice(h,S),--S,--C):d._flags.sparse||G.value!==void 0?h[S]=G.value:(w.push(g("array.sparse",{key:B,path:$,pos:S,value:void 0},p.localize($))),F=true),T=true;break}ge.restore();}if(te===1){if(W){c.fastSplice(h,S),--S,--C,T=true;break}if(w.push(...G.errors),m.abortEarly)return w;F=true;break}}if(!F&&(d.$_terms._inclusions.length||d.$_terms._requireds.length)&&!T){if(W){c.fastSplice(h,S),--S,--C;continue}if(w.push(g("array.includes",{pos:S,value:O},p.localize($))),m.abortEarly)return w}}return x.length&&c.fillMissedErrors(d,w,x,h,p,m),v.length&&(c.fillOrderedErrors(d,w,v,h,p,m),w.length||c.fillDefault(v,h,p,m)),w.length?w:h},priority:true,manifest:false},length:{method(h){return this.$_addRule({name:"length",args:{limit:h},operator:"="})},validate:(h,d,{limit:g},{name:p,operator:m,args:y})=>i.compare(h.length,g,m)?h:d.error("array."+p,{limit:y.limit,value:h}),args:[{name:"limit",ref:true,assert:i.limit,message:"must be a positive integer"}]},max:{method(h){return this.$_addRule({name:"max",method:"length",args:{limit:h},operator:"<="})}},min:{method(h){return this.$_addRule({name:"min",method:"length",args:{limit:h},operator:">="})}},ordered:{method(...h){i.verifyFlat(h,"ordered");let d=this.$_addRule("items");for(let g=0;g<h.length;++g){let p=i.tryWithPath((()=>this.$_compile(h[g])),g,{append:true});c.validateSingle(p,d),d.$_mutateRegister(p),d.$_terms.ordered.push(p);}return d.$_mutateRebuild()}},single:{method(h){let d=h===void 0||!!h;return n(!d||!this._flags._arrayItems,"Cannot specify single rule when array has array items"),this.$_setFlag("single",d)}},sort:{method(h={}){i.assertOptions(h,["by","order"]);let d={order:h.order||"ascending"};return h.by&&(d.by=o.ref(h.by,{ancestor:0}),n(!d.by.ancestor,"Cannot sort by ancestor")),this.$_addRule({name:"sort",args:{options:d}})},validate(h,{error:d,state:g,prefs:p,schema:m},{options:y}){let{value:x,errors:v}=c.sort(m,h,y,g,p);if(v)return v;for(let k=0;k<h.length;++k)if(h[k]!==x[k])return d("array.sort",{order:y.order,by:y.by?y.by.key:"value"});return h},convert:true},sparse:{method(h){let d=h===void 0||!!h;return this._flags.sparse===d?this:(d?this.clone():this.$_addRule("items")).$_setFlag("sparse",d,{clone:false})}},unique:{method(h,d={}){n(!h||typeof h=="function"||typeof h=="string","comparator must be a function or a string"),i.assertOptions(d,["ignoreUndefined","separator"]);let g={name:"unique",args:{options:d,comparator:h}};if(h)if(typeof h=="string"){let p=i.default(d.separator,".");g.path=p?h.split(p):[h];}else g.comparator=h;return this.$_addRule(g)},validate(h,{state:d,error:g,schema:p},{comparator:m,options:y},{comparator:x,path:v}){let k={string:Object.create(null),number:Object.create(null),undefined:Object.create(null),boolean:Object.create(null),bigint:Object.create(null),object:new Map,function:new Map,custom:new Map},A=x||a,w=y.ignoreUndefined;for(let C=0;C<h.length;++C){let S=v?f(h[C],v):h[C],O=x?k.custom:k[typeof S];if(n(O,"Failed to find unique map container for type",typeof S),O instanceof Map){let F=O.entries(),T;for(;!(T=F.next()).done;)if(A(T.value[0],S)){let B=d.localize([...d.path,C],[h,...d.ancestors]),$={pos:C,value:h[C],dupePos:T.value[1],dupeValue:h[T.value[1]]};return v&&($.path=m),g("array.unique",$,B)}O.set(S,C);}else {if((!w||S!==void 0)&&O[S]!==void 0){let F={pos:C,value:h[C],dupePos:O[S],dupeValue:h[O[S]]};return v&&(F.path=m),g("array.unique",F,d.localize([...d.path,C],[h,...d.ancestors]))}O[S]=C;}}return h},args:["comparator","options"],multi:true}},cast:{set:{from:Array.isArray,to:(h,d)=>new Set(h)}},rebuild(h){h.$_terms._inclusions=[],h.$_terms._exclusions=[],h.$_terms._requireds=[];for(let d of h.$_terms.items)c.validateSingle(d,h),d._flags.presence==="required"?h.$_terms._requireds.push(d):d._flags.presence==="forbidden"?h.$_terms._exclusions.push(d):h.$_terms._inclusions.push(d);for(let d of h.$_terms.ordered)c.validateSingle(d,h);},manifest:{build:(h,d)=>(d.items&&(h=h.items(...d.items)),d.ordered&&(h=h.ordered(...d.ordered)),h)},messages:{"array.base":"{{#label}} must be an array","array.excludes":"{{#label}} contains an excluded value","array.hasKnown":"{{#label}} does not contain at least one required match for type {:#patternLabel}","array.hasUnknown":"{{#label}} does not contain at least one required match","array.includes":"{{#label}} does not match any of the allowed types","array.includesRequiredBoth":"{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)","array.includesRequiredKnowns":"{{#label}} does not contain {{#knownMisses}}","array.includesRequiredUnknowns":"{{#label}} does not contain {{#unknownMisses}} required value(s)","array.length":"{{#label}} must contain {{#limit}} items","array.max":"{{#label}} must contain less than or equal to {{#limit}} items","array.min":"{{#label}} must contain at least {{#limit}} items","array.orderedLength":"{{#label}} must contain at most {{#limit}} items","array.sort":"{{#label}} must be sorted in {#order} order by {{#by}}","array.sort.mismatching":"{{#label}} cannot be sorted due to mismatching types","array.sort.unsupported":"{{#label}} cannot be sorted due to unsupported type {#type}","array.sparse":"{{#label}} must not be a sparse array item","array.unique":"{{#label}} contains a duplicate value"}}),c.fillMissedErrors=function(h,d,g,p,m,y){let x=[],v=0;for(let k of g){let A=k._flags.label;A?x.push(A):++v;}x.length?v?d.push(h.$_createError("array.includesRequiredBoth",p,{knownMisses:x,unknownMisses:v},m,y)):d.push(h.$_createError("array.includesRequiredKnowns",p,{knownMisses:x},m,y)):d.push(h.$_createError("array.includesRequiredUnknowns",p,{unknownMisses:v},m,y));},c.fillOrderedErrors=function(h,d,g,p,m,y){let x=[];for(let v of g)v._flags.presence==="required"&&x.push(v);x.length&&c.fillMissedErrors(h,d,x,p,m,y);},c.fillDefault=function(h,d,g,p){let m=[],y=true;for(let x=h.length-1;x>=0;--x){let v=h[x],k=[d,...g.ancestors],A=v.$_validate(void 0,g.localize(g.path,k,v),p).value;if(y){if(A===void 0)continue;y=false;}m.unshift(A);}m.length&&d.push(...m);},c.fastSplice=function(h,d){let g=d;for(;g<h.length;)h[g++]=h[g];--h.length;},c.validateSingle=function(h,d){(h.type==="array"||h._flags._arrayItems)&&(n(!d._flags.single,"Cannot specify array item with single rule enabled"),d.$_setFlag("_arrayItems",true,{clone:false}));},c.sort=function(h,d,g,p,m){let y=g.order==="ascending"?1:-1,x=-1*y,v=y,k=(A,w)=>{let C=c.compare(A,w,x,v);if(C!==null||(g.by&&(A=g.by.resolve(A,p,m),w=g.by.resolve(w,p,m)),C=c.compare(A,w,x,v),C!==null))return C;let S=typeof A;if(S!==typeof w)throw h.$_createError("array.sort.mismatching",d,null,p,m);if(S!=="number"&&S!=="string")throw h.$_createError("array.sort.unsupported",d,{type:S},p,m);return S==="number"?(A-w)*y:A<w?x:v};try{return {value:d.slice().sort(k)}}catch(A){return {errors:A}}},c.compare=function(h,d,g,p){return h===d?0:h===void 0?1:d===void 0?-1:h===null?p:d===null?g:null};},4937:(t,r,s)=>{let n=s(375),a=s(8068),f=s(8160),u=s(2036),i={isBool:function(o){return typeof o=="boolean"}};t.exports=a.extend({type:"boolean",flags:{sensitive:{default:false}},terms:{falsy:{init:null,manifest:"values"},truthy:{init:null,manifest:"values"}},coerce(o,{schema:c}){if(typeof o!="boolean"){if(typeof o=="string"){let h=c._flags.sensitive?o:o.toLowerCase();o=h==="true"||h!=="false"&&o;}return typeof o!="boolean"&&(o=c.$_terms.truthy&&c.$_terms.truthy.has(o,null,null,!c._flags.sensitive)||(!c.$_terms.falsy||!c.$_terms.falsy.has(o,null,null,!c._flags.sensitive))&&o),{value:o}}},validate(o,{error:c}){if(typeof o!="boolean")return {value:o,errors:c("boolean.base")}},rules:{truthy:{method(...o){f.verifyFlat(o,"truthy");let c=this.clone();c.$_terms.truthy=c.$_terms.truthy||new u;for(let h=0;h<o.length;++h){let d=o[h];n(d!==void 0,"Cannot call truthy with undefined"),c.$_terms.truthy.add(d);}return c}},falsy:{method(...o){f.verifyFlat(o,"falsy");let c=this.clone();c.$_terms.falsy=c.$_terms.falsy||new u;for(let h=0;h<o.length;++h){let d=o[h];n(d!==void 0,"Cannot call falsy with undefined"),c.$_terms.falsy.add(d);}return c}},sensitive:{method(o=true){return this.$_setFlag("sensitive",o)}}},cast:{number:{from:i.isBool,to:(o,c)=>o?1:0},string:{from:i.isBool,to:(o,c)=>o?"true":"false"}},manifest:{build:(o,c)=>(c.truthy&&(o=o.truthy(...c.truthy)),c.falsy&&(o=o.falsy(...c.falsy)),o)},messages:{"boolean.base":"{{#label}} must be a boolean"}});},7500:(t,r,s)=>{let n=s(375),a=s(8068),f=s(8160),u=s(3328),i={isDate:function(o){return o instanceof Date}};t.exports=a.extend({type:"date",coerce:{from:["number","string"],method:(o,{schema:c})=>({value:i.parse(o,c._flags.format)||o})},validate(o,{schema:c,error:h,prefs:d}){if(o instanceof Date&&!isNaN(o.getTime()))return;let g=c._flags.format;return d.convert&&g&&typeof o=="string"?{value:o,errors:h("date.format",{format:g})}:{value:o,errors:h("date.base")}},rules:{compare:{method:false,validate(o,c,{date:h},{name:d,operator:g,args:p}){let m=h==="now"?Date.now():h.getTime();return f.compare(o.getTime(),m,g)?o:c.error("date."+d,{limit:p.date,value:o})},args:[{name:"date",ref:true,normalize:o=>o==="now"?o:i.parse(o),assert:o=>o!==null,message:"must have a valid date format"}]},format:{method(o){return n(["iso","javascript","unix"].includes(o),"Unknown date format",o),this.$_setFlag("format",o)}},greater:{method(o){return this.$_addRule({name:"greater",method:"compare",args:{date:o},operator:">"})}},iso:{method(){return this.format("iso")}},less:{method(o){return this.$_addRule({name:"less",method:"compare",args:{date:o},operator:"<"})}},max:{method(o){return this.$_addRule({name:"max",method:"compare",args:{date:o},operator:"<="})}},min:{method(o){return this.$_addRule({name:"min",method:"compare",args:{date:o},operator:">="})}},timestamp:{method(o="javascript"){return n(["javascript","unix"].includes(o),'"type" must be one of "javascript, unix"'),this.format(o)}}},cast:{number:{from:i.isDate,to:(o,c)=>o.getTime()},string:{from:i.isDate,to:(o,{prefs:c})=>u.date(o,c)}},messages:{"date.base":"{{#label}} must be a valid date","date.format":'{{#label}} must be in {msg("date.format." + #format) || #format} format',"date.greater":"{{#label}} must be greater than {{:#limit}}","date.less":"{{#label}} must be less than {{:#limit}}","date.max":"{{#label}} must be less than or equal to {{:#limit}}","date.min":"{{#label}} must be greater than or equal to {{:#limit}}","date.format.iso":"ISO 8601 date","date.format.javascript":"timestamp or number of milliseconds","date.format.unix":"timestamp or number of seconds"}}),i.parse=function(o,c){if(o instanceof Date)return o;if(typeof o!="string"&&(isNaN(o)||!isFinite(o))||/^\s*$/.test(o))return null;if(c==="iso")return f.isIsoDate(o)?i.date(o.toString()):null;let h=o;if(typeof o=="string"&&/^[+-]?\d+(\.\d+)?$/.test(o)&&(o=parseFloat(o)),c){if(c==="javascript")return i.date(1*o);if(c==="unix")return i.date(1e3*o);if(typeof h=="string")return null}return i.date(o)},i.date=function(o){let c=new Date(o);return isNaN(c.getTime())?null:c};},390:(t,r,s)=>{let n=s(375),a=s(7824);t.exports=a.extend({type:"function",properties:{typeof:"function"},rules:{arity:{method(f){return n(Number.isSafeInteger(f)&&f>=0,"n must be a positive integer"),this.$_addRule({name:"arity",args:{n:f}})},validate:(f,u,{n:i})=>f.length===i?f:u.error("function.arity",{n:i})},class:{method(){return this.$_addRule("class")},validate:(f,u)=>/^\s*class\s/.test(f.toString())?f:u.error("function.class",{value:f})},minArity:{method(f){return n(Number.isSafeInteger(f)&&f>0,"n must be a strict positive integer"),this.$_addRule({name:"minArity",args:{n:f}})},validate:(f,u,{n:i})=>f.length>=i?f:u.error("function.minArity",{n:i})},maxArity:{method(f){return n(Number.isSafeInteger(f)&&f>=0,"n must be a positive integer"),this.$_addRule({name:"maxArity",args:{n:f}})},validate:(f,u,{n:i})=>f.length<=i?f:u.error("function.maxArity",{n:i})}},messages:{"function.arity":"{{#label}} must have an arity of {{#n}}","function.class":"{{#label}} must be a class","function.maxArity":"{{#label}} must have an arity lesser or equal to {{#n}}","function.minArity":"{{#label}} must have an arity greater or equal to {{#n}}"}});},7824:(t,r,s)=>{let n=s(978),a=s(375),f=s(8571),u=s(3652),i=s(8068),o=s(8160),c=s(3292),h=s(6354),d=s(6133),g=s(3328),p={renameDefaults:{alias:false,multiple:false,override:false}};t.exports=i.extend({type:"_keys",properties:{typeof:"object"},flags:{unknown:{default:void 0}},terms:{dependencies:{init:null},keys:{init:null,manifest:{mapped:{from:"schema",to:"key"}}},patterns:{init:null},renames:{init:null}},args:(m,y)=>m.keys(y),validate(m,{schema:y,error:x,state:v,prefs:k}){if(!m||typeof m!==y.$_property("typeof")||Array.isArray(m))return {value:m,errors:x("object.base",{type:y.$_property("typeof")})};if(!(y.$_terms.renames||y.$_terms.dependencies||y.$_terms.keys||y.$_terms.patterns||y.$_terms.externals))return;m=p.clone(m,k);let A=[];if(y.$_terms.renames&&!p.rename(y,m,v,k,A))return {value:m,errors:A};if(!y.$_terms.keys&&!y.$_terms.patterns&&!y.$_terms.dependencies)return {value:m,errors:A};let w=new Set(Object.keys(m));if(y.$_terms.keys){let C=[m,...v.ancestors];for(let S of y.$_terms.keys){let O=S.key,F=m[O];w.delete(O);let T=v.localize([...v.path,O],C,S),B=S.schema.$_validate(F,T,k);if(B.errors){if(k.abortEarly)return {value:m,errors:B.errors};B.value!==void 0&&(m[O]=B.value),A.push(...B.errors);}else S.schema._flags.result==="strip"||B.value===void 0&&F!==void 0?delete m[O]:B.value!==void 0&&(m[O]=B.value);}}if(w.size||y._flags._hasPatternMatch){let C=p.unknown(y,m,w,A,v,k);if(C)return C}if(y.$_terms.dependencies)for(let C of y.$_terms.dependencies){if(C.key!==null&&p.isPresent(C.options)(C.key.resolve(m,v,k,null,{shadow:false}))===false)continue;let S=p.dependencies[C.rel](y,C,m,v,k);if(S){let O=y.$_createError(S.code,m,S.context,v,k);if(k.abortEarly)return {value:m,errors:O};A.push(O);}}return {value:m,errors:A}},rules:{and:{method(...m){return o.verifyFlat(m,"and"),p.dependency(this,"and",null,m)}},append:{method(m){return m==null||Object.keys(m).length===0?this:this.keys(m)}},assert:{method(m,y,x){g.isTemplate(m)||(m=c.ref(m)),a(x===void 0||typeof x=="string","Message must be a string"),y=this.$_compile(y,{appendPath:true});let v=this.$_addRule({name:"assert",args:{subject:m,schema:y,message:x}});return v.$_mutateRegister(m),v.$_mutateRegister(y),v},validate(m,{error:y,prefs:x,state:v},{subject:k,schema:A,message:w}){let C=k.resolve(m,v,x),S=d.isRef(k)?k.absolute(v):[];return A.$_match(C,v.localize(S,[m,...v.ancestors],A),x)?m:y("object.assert",{subject:k,message:w})},args:["subject","schema","message"],multi:true},instance:{method(m,y){return a(typeof m=="function","constructor must be a function"),y=y||m.name,this.$_addRule({name:"instance",args:{constructor:m,name:y}})},validate:(m,y,{constructor:x,name:v})=>m instanceof x?m:y.error("object.instance",{type:v,value:m}),args:["constructor","name"]},keys:{method(m){a(m===void 0||typeof m=="object","Object schema must be a valid object"),a(!o.isSchema(m),"Object schema cannot be a joi schema");let y=this.clone();if(m)if(Object.keys(m).length){y.$_terms.keys=y.$_terms.keys?y.$_terms.keys.filter((x=>!m.hasOwnProperty(x.key))):new p.Keys;for(let x in m)o.tryWithPath((()=>y.$_terms.keys.push({key:x,schema:this.$_compile(m[x])})),x);}else y.$_terms.keys=new p.Keys;else y.$_terms.keys=null;return y.$_mutateRebuild()}},length:{method(m){return this.$_addRule({name:"length",args:{limit:m},operator:"="})},validate:(m,y,{limit:x},{name:v,operator:k,args:A})=>o.compare(Object.keys(m).length,x,k)?m:y.error("object."+v,{limit:A.limit,value:m}),args:[{name:"limit",ref:true,assert:o.limit,message:"must be a positive integer"}]},max:{method(m){return this.$_addRule({name:"max",method:"length",args:{limit:m},operator:"<="})}},min:{method(m){return this.$_addRule({name:"min",method:"length",args:{limit:m},operator:">="})}},nand:{method(...m){return o.verifyFlat(m,"nand"),p.dependency(this,"nand",null,m)}},or:{method(...m){return o.verifyFlat(m,"or"),p.dependency(this,"or",null,m)}},oxor:{method(...m){return p.dependency(this,"oxor",null,m)}},pattern:{method(m,y,x={}){let v=m instanceof RegExp;v||(m=this.$_compile(m,{appendPath:true})),a(y!==void 0,"Invalid rule"),o.assertOptions(x,["fallthrough","matches"]),v&&a(!m.flags.includes("g")&&!m.flags.includes("y"),"pattern should not use global or sticky mode"),y=this.$_compile(y,{appendPath:true});let k=this.clone();k.$_terms.patterns=k.$_terms.patterns||[];let A={[v?"regex":"schema"]:m,rule:y};return x.matches&&(A.matches=this.$_compile(x.matches),A.matches.type!=="array"&&(A.matches=A.matches.$_root.array().items(A.matches)),k.$_mutateRegister(A.matches),k.$_setFlag("_hasPatternMatch",true,{clone:false})),x.fallthrough&&(A.fallthrough=true),k.$_terms.patterns.push(A),k.$_mutateRegister(y),k}},ref:{method(){return this.$_addRule("ref")},validate:(m,y)=>d.isRef(m)?m:y.error("object.refType",{value:m})},regex:{method(){return this.$_addRule("regex")},validate:(m,y)=>m instanceof RegExp?m:y.error("object.regex",{value:m})},rename:{method(m,y,x={}){a(typeof m=="string"||m instanceof RegExp,"Rename missing the from argument"),a(typeof y=="string"||y instanceof g,"Invalid rename to argument"),a(y!==m,"Cannot rename key to same name:",m),o.assertOptions(x,["alias","ignoreUndefined","override","multiple"]);let v=this.clone();v.$_terms.renames=v.$_terms.renames||[];for(let k of v.$_terms.renames)a(k.from!==m,"Cannot rename the same key multiple times");return y instanceof g&&v.$_mutateRegister(y),v.$_terms.renames.push({from:m,to:y,options:n(p.renameDefaults,x)}),v}},schema:{method(m="any"){return this.$_addRule({name:"schema",args:{type:m}})},validate:(m,y,{type:x})=>!o.isSchema(m)||x!=="any"&&m.type!==x?y.error("object.schema",{type:x}):m},unknown:{method(m){return this.$_setFlag("unknown",m!==false)}},with:{method(m,y,x={}){return p.dependency(this,"with",m,y,x)}},without:{method(m,y,x={}){return p.dependency(this,"without",m,y,x)}},xor:{method(...m){return o.verifyFlat(m,"xor"),p.dependency(this,"xor",null,m)}}},overrides:{default(m,y){return m===void 0&&(m=o.symbols.deepDefault),this.$_parent("default",m,y)}},rebuild(m){if(m.$_terms.keys){let y=new u.Sorter;for(let x of m.$_terms.keys)o.tryWithPath((()=>y.add(x,{after:x.schema.$_rootReferences(),group:x.key})),x.key);m.$_terms.keys=new p.Keys(...y.nodes);}},manifest:{build(m,y){if(y.keys&&(m=m.keys(y.keys)),y.dependencies)for(let{rel:x,key:v=null,peers:k,options:A}of y.dependencies)m=p.dependency(m,x,v,k,A);if(y.patterns)for(let{regex:x,schema:v,rule:k,fallthrough:A,matches:w}of y.patterns)m=m.pattern(x||v,k,{fallthrough:A,matches:w});if(y.renames)for(let{from:x,to:v,options:k}of y.renames)m=m.rename(x,v,k);return m}},messages:{"object.and":"{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}","object.assert":'{{#label}} is invalid because {if(#subject.key, `"` + #subject.key + `" failed to ` + (#message || "pass the assertion test"), #message || "the assertion failed")}',"object.base":"{{#label}} must be of type {{#type}}","object.instance":"{{#label}} must be an instance of {{:#type}}","object.length":'{{#label}} must have {{#limit}} key{if(#limit == 1, "", "s")}',"object.max":'{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, "", "s")}',"object.min":'{{#label}} must have at least {{#limit}} key{if(#limit == 1, "", "s")}',"object.missing":"{{#label}} must contain at least one of {{#peersWithLabels}}","object.nand":"{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}","object.oxor":"{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}","object.pattern.match":"{{#label}} keys failed to match pattern requirements","object.refType":"{{#label}} must be a Joi reference","object.regex":"{{#label}} must be a RegExp object","object.rename.multiple":"{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}","object.rename.override":"{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists","object.schema":"{{#label}} must be a Joi schema of {{#type}} type","object.unknown":"{{#label}} is not allowed","object.with":"{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}","object.without":"{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}","object.xor":"{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}"}}),p.clone=function(m,y){if(typeof m=="object"){if(y.nonEnumerables)return f(m,{shallow:true});let v=Object.create(Object.getPrototypeOf(m));return Object.assign(v,m),v}let x=function(...v){return m.apply(this,v)};return x.prototype=f(m.prototype),Object.defineProperty(x,"name",{value:m.name,writable:false}),Object.defineProperty(x,"length",{value:m.length,writable:false}),Object.assign(x,m),x},p.dependency=function(m,y,x,v,k){a(x===null||typeof x=="string",y,"key must be a strings"),k||(k=v.length>1&&typeof v[v.length-1]=="object"?v.pop():{}),o.assertOptions(k,["separator","isPresent"]),v=[].concat(v);let A=o.default(k.separator,"."),w=[];for(let S of v)a(typeof S=="string",y,"peers must be strings"),w.push(c.ref(S,{separator:A,ancestor:0,prefix:false}));x!==null&&(x=c.ref(x,{separator:A,ancestor:0,prefix:false}));let C=m.clone();return C.$_terms.dependencies=C.$_terms.dependencies||[],C.$_terms.dependencies.push(new p.Dependency(y,x,w,v,k)),C},p.dependencies={and(m,y,x,v,k){let A=[],w=[],C=y.peers.length,S=p.isPresent(y.options);for(let O of y.peers)S(O.resolve(x,v,k,null,{shadow:false}))===false?A.push(O.key):w.push(O.key);if(A.length!==C&&w.length!==C)return {code:"object.and",context:{present:w,presentWithLabels:p.keysToLabels(m,w),missing:A,missingWithLabels:p.keysToLabels(m,A)}}},nand(m,y,x,v,k){let A=[],w=p.isPresent(y.options);for(let O of y.peers)w(O.resolve(x,v,k,null,{shadow:false}))&&A.push(O.key);if(A.length!==y.peers.length)return;let C=y.paths[0],S=y.paths.slice(1);return {code:"object.nand",context:{main:C,mainWithLabel:p.keysToLabels(m,C),peers:S,peersWithLabels:p.keysToLabels(m,S)}}},or(m,y,x,v,k){let A=p.isPresent(y.options);for(let w of y.peers)if(A(w.resolve(x,v,k,null,{shadow:false})))return;return {code:"object.missing",context:{peers:y.paths,peersWithLabels:p.keysToLabels(m,y.paths)}}},oxor(m,y,x,v,k){let A=[],w=p.isPresent(y.options);for(let S of y.peers)w(S.resolve(x,v,k,null,{shadow:false}))&&A.push(S.key);if(!A.length||A.length===1)return;let C={peers:y.paths,peersWithLabels:p.keysToLabels(m,y.paths)};return C.present=A,C.presentWithLabels=p.keysToLabels(m,A),{code:"object.oxor",context:C}},with(m,y,x,v,k){let A=p.isPresent(y.options);for(let w of y.peers)if(A(w.resolve(x,v,k,null,{shadow:false}))===false)return {code:"object.with",context:{main:y.key.key,mainWithLabel:p.keysToLabels(m,y.key.key),peer:w.key,peerWithLabel:p.keysToLabels(m,w.key)}}},without(m,y,x,v,k){let A=p.isPresent(y.options);for(let w of y.peers)if(A(w.resolve(x,v,k,null,{shadow:false})))return {code:"object.without",context:{main:y.key.key,mainWithLabel:p.keysToLabels(m,y.key.key),peer:w.key,peerWithLabel:p.keysToLabels(m,w.key)}}},xor(m,y,x,v,k){let A=[],w=p.isPresent(y.options);for(let S of y.peers)w(S.resolve(x,v,k,null,{shadow:false}))&&A.push(S.key);if(A.length===1)return;let C={peers:y.paths,peersWithLabels:p.keysToLabels(m,y.paths)};return A.length===0?{code:"object.missing",context:C}:(C.present=A,C.presentWithLabels=p.keysToLabels(m,A),{code:"object.xor",context:C})}},p.keysToLabels=function(m,y){return Array.isArray(y)?y.map((x=>m.$_mapLabels(x))):m.$_mapLabels(y)},p.isPresent=function(m){return typeof m.isPresent=="function"?m.isPresent:y=>y!==void 0},p.rename=function(m,y,x,v,k){let A={};for(let w of m.$_terms.renames){let C=[],S=typeof w.from!="string";if(S)for(let O in y){if(y[O]===void 0&&w.options.ignoreUndefined||O===w.to)continue;let F=w.from.exec(O);F&&C.push({from:O,to:w.to,match:F});}else !Object.prototype.hasOwnProperty.call(y,w.from)||y[w.from]===void 0&&w.options.ignoreUndefined||C.push(w);for(let O of C){let F=O.from,T=O.to;if(T instanceof g&&(T=T.render(y,x,v,O.match)),F!==T){if(!w.options.multiple&&A[T]&&(k.push(m.$_createError("object.rename.multiple",y,{from:F,to:T,pattern:S},x,v)),v.abortEarly)||Object.prototype.hasOwnProperty.call(y,T)&&!w.options.override&&!A[T]&&(k.push(m.$_createError("object.rename.override",y,{from:F,to:T,pattern:S},x,v)),v.abortEarly))return false;y[F]===void 0?delete y[T]:y[T]=y[F],A[T]=true,w.options.alias||delete y[F];}}}return true},p.unknown=function(m,y,x,v,k,A){if(m.$_terms.patterns){let w=false,C=m.$_terms.patterns.map((O=>{if(O.matches)return w=true,[]})),S=[y,...k.ancestors];for(let O of x){let F=y[O],T=[...k.path,O];for(let B=0;B<m.$_terms.patterns.length;++B){let $=m.$_terms.patterns[B];if($.regex){let te=$.regex.test(O);if(k.mainstay.tracer.debug(k,"rule",`pattern.${B}`,te?"pass":"error"),!te)continue}else if(!$.schema.$_match(O,k.nest($.schema,`pattern.${B}`),A))continue;x.delete(O);let V=k.localize(T,S,{schema:$.rule,key:O}),H=$.rule.$_validate(F,V,A);if(H.errors){if(A.abortEarly)return {value:y,errors:H.errors};v.push(...H.errors);}if($.matches&&C[B].push(O),y[O]=H.value,!$.fallthrough)break}}if(w)for(let O=0;O<C.length;++O){let F=C[O];if(!F)continue;let T=m.$_terms.patterns[O].matches,B=k.localize(k.path,S,T),$=T.$_validate(F,B,A);if($.errors){let V=h.details($.errors,{override:false});V.matches=F;let H=m.$_createError("object.pattern.match",y,V,k,A);if(A.abortEarly)return {value:y,errors:H};v.push(H);}}}if(x.size&&(m.$_terms.keys||m.$_terms.patterns)){if(A.stripUnknown&&m._flags.unknown===void 0||A.skipFunctions){let w=!(!A.stripUnknown||A.stripUnknown!==true&&!A.stripUnknown.objects);for(let C of x)w?(delete y[C],x.delete(C)):typeof y[C]=="function"&&x.delete(C);}if(!o.default(m._flags.unknown,A.allowUnknown))for(let w of x){let C=k.localize([...k.path,w],[]),S=m.$_createError("object.unknown",y[w],{child:w},C,A,{flags:false});if(A.abortEarly)return {value:y,errors:S};v.push(S);}}},p.Dependency=class{constructor(m,y,x,v,k){this.rel=m,this.key=y,this.peers=x,this.paths=v,this.options=k;}describe(){let m={rel:this.rel,peers:this.paths};return this.key!==null&&(m.key=this.key.key),this.peers[0].separator!=="."&&(m.options={...m.options,separator:this.peers[0].separator}),this.options.isPresent&&(m.options={...m.options,isPresent:this.options.isPresent}),m}},p.Keys=class extends Array{concat(m){let y=this.slice(),x=new Map;for(let v=0;v<y.length;++v)x.set(y[v].key,v);for(let v of m){let k=v.key,A=x.get(k);A!==void 0?y[A]={key:k,schema:y[A].schema.concat(v.schema)}:y.push(v);}return y}};},8785:(t,r,s)=>{let n=s(375),a=s(8068),f=s(8160),u=s(3292),i=s(6354),o={};t.exports=a.extend({type:"link",properties:{schemaChain:true},terms:{link:{init:null,manifest:"single",register:false}},args:(c,h)=>c.ref(h),validate(c,{schema:h,state:d,prefs:g}){n(h.$_terms.link,"Uninitialized link schema");let p=o.generate(h,c,d,g),m=h.$_terms.link[0].ref;return p.$_validate(c,d.nest(p,`link:${m.display}:${p.type}`),g)},generate:(c,h,d,g)=>o.generate(c,h,d,g),rules:{ref:{method(c){n(!this.$_terms.link,"Cannot reinitialize schema"),c=u.ref(c),n(c.type==="value"||c.type==="local","Invalid reference type:",c.type),n(c.type==="local"||c.ancestor==="root"||c.ancestor>0,"Link cannot reference itself");let h=this.clone();return h.$_terms.link=[{ref:c}],h}},relative:{method(c=true){return this.$_setFlag("relative",c)}}},overrides:{concat(c){n(this.$_terms.link,"Uninitialized link schema"),n(f.isSchema(c),"Invalid schema object"),n(c.type!=="link","Cannot merge type link with another link");let h=this.clone();return h.$_terms.whens||(h.$_terms.whens=[]),h.$_terms.whens.push({concat:c}),h.$_mutateRebuild()}},manifest:{build:(c,h)=>(n(h.link,"Invalid link description missing link"),c.ref(h.link))}}),o.generate=function(c,h,d,g){let p=d.mainstay.links.get(c);if(p)return p._generate(h,d,g).schema;let m=c.$_terms.link[0].ref,{perspective:y,path:x}=o.perspective(m,d);o.assert(y,"which is outside of schema boundaries",m,c,d,g);try{p=x.length?y.$_reach(x):y;}catch{o.assert(false,"to non-existing schema",m,c,d,g);}return o.assert(p.type!=="link","which is another link",m,c,d,g),c._flags.relative||d.mainstay.links.set(c,p),p._generate(h,d,g).schema},o.perspective=function(c,h){if(c.type==="local"){for(let{schema:d,key:g}of h.schemas){if((d._flags.id||g)===c.path[0])return {perspective:d,path:c.path.slice(1)};if(d.$_terms.shared){for(let p of d.$_terms.shared)if(p._flags.id===c.path[0])return {perspective:p,path:c.path.slice(1)}}}return {perspective:null,path:null}}return c.ancestor==="root"?{perspective:h.schemas[h.schemas.length-1].schema,path:c.path}:{perspective:h.schemas[c.ancestor]&&h.schemas[c.ancestor].schema,path:c.path}},o.assert=function(c,h,d,g,p,m){c||n(false,`"${i.label(g._flags,p,m)}" contains link reference "${d.display}" ${h}`);};},3832:(t,r,s)=>{let n=s(375),a=s(8068),f=s(8160),u={numberRx:/^\s*[+-]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:e([+-]?\d+))?\s*$/i,precisionRx:/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/,exponentialPartRegex:/[eE][+-]?\d+$/,leadingSignAndZerosRegex:/^[+-]?(0*)?/,dotRegex:/\./,trailingZerosRegex:/0+$/,decimalPlaces(i){let o=i.toString(),c=o.indexOf("."),h=o.indexOf("e");return (c<0?0:(h<0?o.length:h)-c-1)+(h<0?0:Math.max(0,-parseInt(o.slice(h+1))))}};t.exports=a.extend({type:"number",flags:{unsafe:{default:false}},coerce:{from:"string",method(i,{schema:o,error:c}){if(!i.match(u.numberRx))return;i=i.trim();let h={value:parseFloat(i)};if(h.value===0&&(h.value=0),!o._flags.unsafe)if(i.match(/e/i)){if(u.extractSignificantDigits(i)!==u.extractSignificantDigits(String(h.value)))return h.errors=c("number.unsafe"),h}else {let d=h.value.toString();if(d.match(/e/i))return h;if(d!==u.normalizeDecimal(i))return h.errors=c("number.unsafe"),h}return h}},validate(i,{schema:o,error:c,prefs:h}){if(i===1/0||i===-1/0)return {value:i,errors:c("number.infinity")};if(!f.isNumber(i))return {value:i,errors:c("number.base")};let d={value:i};if(h.convert){let g=o.$_getRule("precision");if(g){let p=Math.pow(10,g.args.limit);d.value=Math.round(d.value*p)/p;}}return d.value===0&&(d.value=0),!o._flags.unsafe&&(i>Number.MAX_SAFE_INTEGER||i<Number.MIN_SAFE_INTEGER)&&(d.errors=c("number.unsafe")),d},rules:{compare:{method:false,validate:(i,o,{limit:c},{name:h,operator:d,args:g})=>f.compare(i,c,d)?i:o.error("number."+h,{limit:g.limit,value:i}),args:[{name:"limit",ref:true,assert:f.isNumber,message:"must be a number"}]},greater:{method(i){return this.$_addRule({name:"greater",method:"compare",args:{limit:i},operator:">"})}},integer:{method(){return this.$_addRule("integer")},validate:(i,o)=>Math.trunc(i)-i==0?i:o.error("number.integer")},less:{method(i){return this.$_addRule({name:"less",method:"compare",args:{limit:i},operator:"<"})}},max:{method(i){return this.$_addRule({name:"max",method:"compare",args:{limit:i},operator:"<="})}},min:{method(i){return this.$_addRule({name:"min",method:"compare",args:{limit:i},operator:">="})}},multiple:{method(i){let o=typeof i=="number"?u.decimalPlaces(i):null,c=Math.pow(10,o);return this.$_addRule({name:"multiple",args:{base:i,baseDecimalPlace:o,pfactor:c}})},validate:(i,o,{base:c,baseDecimalPlace:h,pfactor:d},g)=>u.decimalPlaces(i)>h?o.error("number.multiple",{multiple:g.args.base,value:i}):Math.round(d*i)%Math.round(d*c)==0?i:o.error("number.multiple",{multiple:g.args.base,value:i}),args:[{name:"base",ref:true,assert:i=>typeof i=="number"&&isFinite(i)&&i>0,message:"must be a positive number"},"baseDecimalPlace","pfactor"],multi:true},negative:{method(){return this.sign("negative")}},port:{method(){return this.$_addRule("port")},validate:(i,o)=>Number.isSafeInteger(i)&&i>=0&&i<=65535?i:o.error("number.port")},positive:{method(){return this.sign("positive")}},precision:{method(i){return n(Number.isSafeInteger(i),"limit must be an integer"),this.$_addRule({name:"precision",args:{limit:i}})},validate(i,o,{limit:c}){let h=i.toString().match(u.precisionRx);return Math.max((h[1]?h[1].length:0)-(h[2]?parseInt(h[2],10):0),0)<=c?i:o.error("number.precision",{limit:c,value:i})},convert:true},sign:{method(i){return n(["negative","positive"].includes(i),"Invalid sign",i),this.$_addRule({name:"sign",args:{sign:i}})},validate:(i,o,{sign:c})=>c==="negative"&&i<0||c==="positive"&&i>0?i:o.error(`number.${c}`)},unsafe:{method(i=true){return n(typeof i=="boolean","enabled must be a boolean"),this.$_setFlag("unsafe",i)}}},cast:{string:{from:i=>typeof i=="number",to:(i,o)=>i.toString()}},messages:{"number.base":"{{#label}} must be a number","number.greater":"{{#label}} must be greater than {{#limit}}","number.infinity":"{{#label}} cannot be infinity","number.integer":"{{#label}} must be an integer","number.less":"{{#label}} must be less than {{#limit}}","number.max":"{{#label}} must be less than or equal to {{#limit}}","number.min":"{{#label}} must be greater than or equal to {{#limit}}","number.multiple":"{{#label}} must be a multiple of {{#multiple}}","number.negative":"{{#label}} must be a negative number","number.port":"{{#label}} must be a valid port","number.positive":"{{#label}} must be a positive number","number.precision":"{{#label}} must have no more than {{#limit}} decimal places","number.unsafe":"{{#label}} must be a safe number"}}),u.extractSignificantDigits=function(i){return i.replace(u.exponentialPartRegex,"").replace(u.dotRegex,"").replace(u.trailingZerosRegex,"").replace(u.leadingSignAndZerosRegex,"")},u.normalizeDecimal=function(i){return (i=i.replace(/^\+/,"").replace(/\.0*$/,"").replace(/^(-?)\.([^\.]*)$/,"$10.$2").replace(/^(-?)0+([0-9])/,"$1$2")).includes(".")&&i.endsWith("0")&&(i=i.replace(/0+$/,"")),i==="-0"?"0":i};},8966:(t,r,s)=>{let n=s(7824);t.exports=n.extend({type:"object",cast:{map:{from:a=>a&&typeof a=="object",to:(a,f)=>new Map(Object.entries(a))}}});},7417:(t,r,s)=>{let n=s(375),a=s(5380),f=s(1745),u=s(9959),i=s(6064),o=s(9926),c=s(5752),h=s(8068),d=s(8160),g={tlds:o instanceof Set&&{tlds:{allow:o,deny:null}},base64Regex:{true:{true:/^(?:[\w\-]{2}[\w\-]{2})*(?:[\w\-]{2}==|[\w\-]{3}=)?$/,false:/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/},false:{true:/^(?:[\w\-]{2}[\w\-]{2})*(?:[\w\-]{2}(==)?|[\w\-]{3}=?)?$/,false:/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}(==)?|[A-Za-z0-9+\/]{3}=?)?$/}},dataUriRegex:/^data:[\w+.-]+\/[\w+.-]+;((charset=[\w-]+|base64),)?(.*)$/,hexRegex:{withPrefix:/^0x[0-9a-f]+$/i,withOptionalPrefix:/^(?:0x)?[0-9a-f]+$/i,withoutPrefix:/^[0-9a-f]+$/i},ipRegex:u.regex({cidr:"forbidden"}).regex,isoDurationRegex:/^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?$/,guidBrackets:{"{":"}","[":"]","(":")","":""},guidVersions:{uuidv1:"1",uuidv2:"2",uuidv3:"3",uuidv4:"4",uuidv5:"5",uuidv6:"6",uuidv7:"7",uuidv8:"8"},guidSeparators:new Set([void 0,true,false,"-",":"]),normalizationForms:["NFC","NFD","NFKC","NFKD"]};t.exports=h.extend({type:"string",flags:{insensitive:{default:false},truncate:{default:false}},terms:{replacements:{init:null}},coerce:{from:"string",method(p,{schema:m,state:y,prefs:x}){let v=m.$_getRule("normalize");v&&(p=p.normalize(v.args.form));let k=m.$_getRule("case");k&&(p=k.args.direction==="upper"?p.toLocaleUpperCase():p.toLocaleLowerCase());let A=m.$_getRule("trim");if(A&&A.args.enabled&&(p=p.trim()),m.$_terms.replacements)for(let C of m.$_terms.replacements)p=p.replace(C.pattern,C.replacement);let w=m.$_getRule("hex");if(w&&w.args.options.byteAligned&&p.length%2!=0&&(p=`0${p}`),m.$_getRule("isoDate")){let C=g.isoDate(p);C&&(p=C);}if(m._flags.truncate){let C=m.$_getRule("max");if(C){let S=C.args.limit;if(d.isResolvable(S)&&(S=S.resolve(p,y,x),!d.limit(S)))return {value:p,errors:m.$_createError("any.ref",S,{ref:C.args.limit,arg:"limit",reason:"must be a positive integer"},y,x)};p=p.slice(0,S);}}return {value:p}}},validate(p,{schema:m,error:y}){if(typeof p!="string")return {value:p,errors:y("string.base")};if(p===""){let x=m.$_getRule("min");return x&&x.args.limit===0?void 0:{value:p,errors:y("string.empty")}}},rules:{alphanum:{method(){return this.$_addRule("alphanum")},validate:(p,m)=>/^[a-zA-Z0-9]+$/.test(p)?p:m.error("string.alphanum")},base64:{method(p={}){return d.assertOptions(p,["paddingRequired","urlSafe"]),p={urlSafe:false,paddingRequired:true,...p},n(typeof p.paddingRequired=="boolean","paddingRequired must be boolean"),n(typeof p.urlSafe=="boolean","urlSafe must be boolean"),this.$_addRule({name:"base64",args:{options:p}})},validate:(p,m,{options:y})=>g.base64Regex[y.paddingRequired][y.urlSafe].test(p)?p:m.error("string.base64")},case:{method(p){return n(["lower","upper"].includes(p),"Invalid case:",p),this.$_addRule({name:"case",args:{direction:p}})},validate:(p,m,{direction:y})=>y==="lower"&&p===p.toLocaleLowerCase()||y==="upper"&&p===p.toLocaleUpperCase()?p:m.error(`string.${y}case`),convert:true},creditCard:{method(){return this.$_addRule("creditCard")},validate(p,m){let y=p.length,x=0,v=1;for(;y--;){let k=p.charAt(y)*v;x+=k-9*(k>9),v^=3;}return x>0&&x%10==0?p:m.error("string.creditCard")}},dataUri:{method(p={}){return d.assertOptions(p,["paddingRequired"]),p={paddingRequired:true,...p},n(typeof p.paddingRequired=="boolean","paddingRequired must be boolean"),this.$_addRule({name:"dataUri",args:{options:p}})},validate(p,m,{options:y}){let x=p.match(g.dataUriRegex);return x&&(!x[2]||x[2]!=="base64"||g.base64Regex[y.paddingRequired].false.test(x[3]))?p:m.error("string.dataUri")}},domain:{method(p){p&&d.assertOptions(p,["allowFullyQualified","allowUnicode","maxDomainSegments","minDomainSegments","tlds"]);let m=g.addressOptions(p);return this.$_addRule({name:"domain",args:{options:p},address:m})},validate:(p,m,y,{address:x})=>a.isValid(p,x)?p:m.error("string.domain")},email:{method(p={}){d.assertOptions(p,["allowFullyQualified","allowUnicode","ignoreLength","maxDomainSegments","minDomainSegments","multiple","separator","tlds"]),n(p.multiple===void 0||typeof p.multiple=="boolean","multiple option must be an boolean");let m=g.addressOptions(p),y=new RegExp(`\\s*[${p.separator?i(p.separator):","}]\\s*`);return this.$_addRule({name:"email",args:{options:p},regex:y,address:m})},validate(p,m,{options:y},{regex:x,address:v}){let k=y.multiple?p.split(x):[p],A=[];for(let w of k)f.isValid(w,v)||A.push(w);return A.length?m.error("string.email",{value:p,invalids:A}):p}},guid:{alias:"uuid",method(p={}){d.assertOptions(p,["version","separator"]);let m="";if(p.version){let v=[].concat(p.version);n(v.length>=1,"version must have at least 1 valid version specified");let k=new Set;for(let A=0;A<v.length;++A){let w=v[A];n(typeof w=="string","version at position "+A+" must be a string");let C=g.guidVersions[w.toLowerCase()];n(C,"version at position "+A+" must be one of "+Object.keys(g.guidVersions).join(", ")),n(!k.has(C),"version at position "+A+" must not be a duplicate"),m+=C,k.add(C);}}n(g.guidSeparators.has(p.separator),'separator must be one of true, false, "-", or ":"');let y=p.separator===void 0?"[:-]?":p.separator===true?"[:-]":p.separator===false?"[]?":`\\${p.separator}`,x=new RegExp(`^([\\[{\\(]?)[0-9A-F]{8}(${y})[0-9A-F]{4}\\2?[${m||"0-9A-F"}][0-9A-F]{3}\\2?[${m?"89AB":"0-9A-F"}][0-9A-F]{3}\\2?[0-9A-F]{12}([\\]}\\)]?)$`,"i");return this.$_addRule({name:"guid",args:{options:p},regex:x})},validate(p,m,y,{regex:x}){let v=x.exec(p);return v?g.guidBrackets[v[1]]!==v[v.length-1]?m.error("string.guid"):p:m.error("string.guid")}},hex:{method(p={}){return d.assertOptions(p,["byteAligned","prefix"]),p={byteAligned:false,prefix:false,...p},n(typeof p.byteAligned=="boolean","byteAligned must be boolean"),n(typeof p.prefix=="boolean"||p.prefix==="optional",'prefix must be boolean or "optional"'),this.$_addRule({name:"hex",args:{options:p}})},validate:(p,m,{options:y})=>(y.prefix==="optional"?g.hexRegex.withOptionalPrefix:y.prefix===true?g.hexRegex.withPrefix:g.hexRegex.withoutPrefix).test(p)?y.byteAligned&&p.length%2!=0?m.error("string.hexAlign"):p:m.error("string.hex")},hostname:{method(){return this.$_addRule("hostname")},validate:(p,m)=>a.isValid(p,{minDomainSegments:1})||g.ipRegex.test(p)?p:m.error("string.hostname")},insensitive:{method(){return this.$_setFlag("insensitive",true)}},ip:{method(p={}){d.assertOptions(p,["cidr","version"]);let{cidr:m,versions:y,regex:x}=u.regex(p),v=p.version?y:void 0;return this.$_addRule({name:"ip",args:{options:{cidr:m,version:v}},regex:x})},validate:(p,m,{options:y},{regex:x})=>x.test(p)?p:y.version?m.error("string.ipVersion",{value:p,cidr:y.cidr,version:y.version}):m.error("string.ip",{value:p,cidr:y.cidr})},isoDate:{method(){return this.$_addRule("isoDate")},validate:(p,{error:m})=>g.isoDate(p)?p:m("string.isoDate")},isoDuration:{method(){return this.$_addRule("isoDuration")},validate:(p,m)=>g.isoDurationRegex.test(p)?p:m.error("string.isoDuration")},length:{method(p,m){return g.length(this,"length",p,"=",m)},validate(p,m,{limit:y,encoding:x},{name:v,operator:k,args:A}){let w=!x&&p.length;return d.compare(w,y,k)?p:m.error("string."+v,{limit:A.limit,value:p,encoding:x})},args:[{name:"limit",ref:true,assert:d.limit,message:"must be a positive integer"},"encoding"]},lowercase:{method(){return this.case("lower")}},max:{method(p,m){return g.length(this,"max",p,"<=",m)},args:["limit","encoding"]},min:{method(p,m){return g.length(this,"min",p,">=",m)},args:["limit","encoding"]},normalize:{method(p="NFC"){return n(g.normalizationForms.includes(p),"normalization form must be one of "+g.normalizationForms.join(", ")),this.$_addRule({name:"normalize",args:{form:p}})},validate:(p,{error:m},{form:y})=>p===p.normalize(y)?p:m("string.normalize",{value:p,form:y}),convert:true},pattern:{alias:"regex",method(p,m={}){n(p instanceof RegExp,"regex must be a RegExp"),n(!p.flags.includes("g")&&!p.flags.includes("y"),"regex should not use global or sticky mode"),typeof m=="string"&&(m={name:m}),d.assertOptions(m,["invert","name"]);let y=["string.pattern",m.invert?".invert":"",m.name?".name":".base"].join("");return this.$_addRule({name:"pattern",args:{regex:p,options:m},errorCode:y})},validate:(p,m,{regex:y,options:x},{errorCode:v})=>y.test(p)^x.invert?p:m.error(v,{name:x.name,regex:y,value:p}),args:["regex","options"],multi:true},replace:{method(p,m){typeof p=="string"&&(p=new RegExp(i(p),"g")),n(p instanceof RegExp,"pattern must be a RegExp"),n(typeof m=="string","replacement must be a String");let y=this.clone();return y.$_terms.replacements||(y.$_terms.replacements=[]),y.$_terms.replacements.push({pattern:p,replacement:m}),y}},token:{method(){return this.$_addRule("token")},validate:(p,m)=>/^\w+$/.test(p)?p:m.error("string.token")},trim:{method(p=true){return n(typeof p=="boolean","enabled must be a boolean"),this.$_addRule({name:"trim",args:{enabled:p}})},validate:(p,m,{enabled:y})=>y&&p!==p.trim()?m.error("string.trim"):p,convert:true},truncate:{method(p=true){return n(typeof p=="boolean","enabled must be a boolean"),this.$_setFlag("truncate",p)}},uppercase:{method(){return this.case("upper")}},uri:{method(p={}){d.assertOptions(p,["allowRelative","allowQuerySquareBrackets","domain","relativeOnly","scheme","encodeUri"]),p.domain&&d.assertOptions(p.domain,["allowFullyQualified","allowUnicode","maxDomainSegments","minDomainSegments","tlds"]);let{regex:m,scheme:y}=c.regex(p),x=p.domain?g.addressOptions(p.domain):null;return this.$_addRule({name:"uri",args:{options:p},regex:m,domain:x,scheme:y})},validate(p,m,{options:y},{regex:x,domain:v,scheme:k}){if(["http:/","https:/"].includes(p))return m.error("string.uri");let A=x.exec(p);if(!A&&m.prefs.convert&&y.encodeUri){let w=encodeURI(p);A=x.exec(w),A&&(p=w);}if(A){let w=A[1]||A[2];return !v||y.allowRelative&&!w||a.isValid(w,v)?p:m.error("string.domain",{value:w})}return y.relativeOnly?m.error("string.uriRelativeOnly"):y.scheme?m.error("string.uriCustomScheme",{scheme:k,value:p}):m.error("string.uri")}}},manifest:{build(p,m){if(m.replacements)for(let{pattern:y,replacement:x}of m.replacements)p=p.replace(y,x);return p}},messages:{"string.alphanum":"{{#label}} must only contain alpha-numeric characters","string.base":"{{#label}} must be a string","string.base64":"{{#label}} must be a valid base64 string","string.creditCard":"{{#label}} must be a credit card","string.dataUri":"{{#label}} must be a valid dataUri string","string.domain":"{{#label}} must contain a valid domain name","string.email":"{{#label}} must be a valid email","string.empty":"{{#label}} is not allowed to be empty","string.guid":"{{#label}} must be a valid GUID","string.hex":"{{#label}} must only contain hexadecimal characters","string.hexAlign":"{{#label}} hex decoded representation must be byte aligned","string.hostname":"{{#label}} must be a valid hostname","string.ip":"{{#label}} must be a valid ip address with a {{#cidr}} CIDR","string.ipVersion":"{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR","string.isoDate":"{{#label}} must be in iso format","string.isoDuration":"{{#label}} must be a valid ISO 8601 duration","string.length":"{{#label}} length must be {{#limit}} characters long","string.lowercase":"{{#label}} must only contain lowercase characters","string.max":"{{#label}} length must be less than or equal to {{#limit}} characters long","string.min":"{{#label}} length must be at least {{#limit}} characters long","string.normalize":"{{#label}} must be unicode normalized in the {{#form}} form","string.token":"{{#label}} must only contain alpha-numeric and underscore characters","string.pattern.base":"{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}","string.pattern.name":"{{#label}} with value {:[.]} fails to match the {{#name}} pattern","string.pattern.invert.base":"{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}","string.pattern.invert.name":"{{#label}} with value {:[.]} matches the inverted {{#name}} pattern","string.trim":"{{#label}} must not have leading or trailing whitespace","string.uri":"{{#label}} must be a valid uri","string.uriCustomScheme":"{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern","string.uriRelativeOnly":"{{#label}} must be a valid relative uri","string.uppercase":"{{#label}} must only contain uppercase characters"}}),g.addressOptions=function(p){if(!p)return g.tlds||p;if(n(p.minDomainSegments===void 0||Number.isSafeInteger(p.minDomainSegments)&&p.minDomainSegments>0,"minDomainSegments must be a positive integer"),n(p.maxDomainSegments===void 0||Number.isSafeInteger(p.maxDomainSegments)&&p.maxDomainSegments>0,"maxDomainSegments must be a positive integer"),p.tlds===false)return p;if(p.tlds===true||p.tlds===void 0)return n(g.tlds,"Built-in TLD list disabled"),Object.assign({},p,g.tlds);n(typeof p.tlds=="object","tlds must be true, false, or an object");let m=p.tlds.deny;if(m)return Array.isArray(m)&&(p=Object.assign({},p,{tlds:{deny:new Set(m)}})),n(p.tlds.deny instanceof Set,"tlds.deny must be an array, Set, or boolean"),n(!p.tlds.allow,"Cannot specify both tlds.allow and tlds.deny lists"),g.validateTlds(p.tlds.deny,"tlds.deny"),p;let y=p.tlds.allow;return y?y===true?(n(g.tlds,"Built-in TLD list disabled"),Object.assign({},p,g.tlds)):(Array.isArray(y)&&(p=Object.assign({},p,{tlds:{allow:new Set(y)}})),n(p.tlds.allow instanceof Set,"tlds.allow must be an array, Set, or boolean"),g.validateTlds(p.tlds.allow,"tlds.allow"),p):p},g.validateTlds=function(p,m){for(let y of p)n(a.isValid(y,{minDomainSegments:1,maxDomainSegments:1}),`${m} must contain valid top level domain names`);},g.isoDate=function(p){if(!d.isIsoDate(p))return null;/.*T.*[+-]\d\d$/.test(p)&&(p+="00");let m=new Date(p);return isNaN(m.getTime())?null:m.toISOString()},g.length=function(p,m,y,x,v){return n(!v||false,"Invalid encoding:",v),p.$_addRule({name:m,method:"length",args:{limit:y,encoding:v},operator:x})};},8826:(t,r,s)=>{let n=s(375),a=s(8068),f={};f.Map=class extends Map{slice(){return new f.Map(this)}},t.exports=a.extend({type:"symbol",terms:{map:{init:new f.Map}},coerce:{method(u,{schema:i,error:o}){let c=i.$_terms.map.get(u);return c&&(u=c),i._flags.only&&typeof u!="symbol"?{value:u,errors:o("symbol.map",{map:i.$_terms.map})}:{value:u}}},validate(u,{error:i}){if(typeof u!="symbol")return {value:u,errors:i("symbol.base")}},rules:{map:{method(u){u&&!u[Symbol.iterator]&&typeof u=="object"&&(u=Object.entries(u)),n(u&&u[Symbol.iterator],"Iterable must be an iterable or object");let i=this.clone(),o=[];for(let c of u){n(c&&c[Symbol.iterator],"Entry must be an iterable");let[h,d]=c;n(typeof h!="object"&&typeof h!="function"&&typeof h!="symbol","Key must not be of type object, function, or Symbol"),n(typeof d=="symbol","Value must be a Symbol"),i.$_terms.map.set(h,d),o.push(d);}return i.valid(...o)}}},manifest:{build:(u,i)=>(i.map&&(u=u.map(i.map)),u)},messages:{"symbol.base":"{{#label}} must be a symbol","symbol.map":"{{#label}} must be one of {{#map}}"}});},8863:(t,r,s)=>{let n=s(375),a=s(8571),f=s(738),u=s(9621),i=s(8160),o=s(6354),c=s(493),h={result:Symbol("result")};r.entry=function(d,g,p){let m=i.defaults;p&&(n(p.warnings===void 0,"Cannot override warnings preference in synchronous validation"),n(p.artifacts===void 0,"Cannot override artifacts preference in synchronous validation"),m=i.preferences(i.defaults,p));let y=h.entry(d,g,m);n(!y.mainstay.externals.length,"Schema with external rules must use validateAsync()");let x={value:y.value};return y.error&&(x.error=y.error),y.mainstay.warnings.length&&(x.warning=o.details(y.mainstay.warnings)),y.mainstay.debug&&(x.debug=y.mainstay.debug),y.mainstay.artifacts&&(x.artifacts=y.mainstay.artifacts),x},r.entryAsync=async function(d,g,p){let m=i.defaults;p&&(m=i.preferences(i.defaults,p));let y=h.entry(d,g,m),x=y.mainstay;if(y.error)throw x.debug&&(y.error.debug=x.debug),y.error;if(x.externals.length){let k=y.value,A=[];for(let w of x.externals){let C=w.state.path,S=w.schema.type==="link"?x.links.get(w.schema):null,O,F,T=k,B=C.length?[k]:[],$=C.length?u(d,C):d;if(C.length){O=C[C.length-1];let V=k;for(let H of C.slice(0,-1))V=V[H],B.unshift(V);F=B[0],T=F[O];}try{let V=(te,W)=>(S||w.schema).$_createError(te,T,W,w.state,m),H=await w.method(T,{schema:w.schema,linked:S,state:w.state,prefs:p,original:$,error:V,errorsArray:h.errorsArray,warn:(te,W)=>x.warnings.push((S||w.schema).$_createError(te,T,W,w.state,m)),message:(te,W)=>(S||w.schema).$_createError("external",T,W,w.state,m,{messages:te})});if(H===void 0||H===T)continue;if(H instanceof o.Report){if(x.tracer.log(w.schema,w.state,"rule","external","error"),A.push(H),m.abortEarly)break;continue}if(Array.isArray(H)&&H[i.symbols.errors]){if(x.tracer.log(w.schema,w.state,"rule","external","error"),A.push(...H),m.abortEarly)break;continue}F?(x.tracer.value(w.state,"rule",T,H,"external"),F[O]=H):(x.tracer.value(w.state,"rule",k,H,"external"),k=H);}catch(V){throw m.errors.label&&(V.message+=` (${w.label})`),V}}if(y.value=k,A.length)throw y.error=o.process(A,d,m),x.debug&&(y.error.debug=x.debug),y.error}if(!m.warnings&&!m.debug&&!m.artifacts)return y.value;let v={value:y.value};return x.warnings.length&&(v.warning=o.details(x.warnings)),x.debug&&(v.debug=x.debug),x.artifacts&&(v.artifacts=x.artifacts),v},h.Mainstay=class{constructor(d,g,p){this.externals=[],this.warnings=[],this.tracer=d,this.debug=g,this.links=p,this.shadow=null,this.artifacts=null,this._snapshots=[];}snapshot(){this._snapshots.push({externals:this.externals.slice(),warnings:this.warnings.slice()});}restore(){let d=this._snapshots.pop();this.externals=d.externals,this.warnings=d.warnings;}commit(){this._snapshots.pop();}},h.entry=function(d,g,p){let{tracer:m,cleanup:y}=h.tracer(g,p),x=p.debug?[]:null,v=g._ids._schemaChain?new Map:null,k=new h.Mainstay(m,x,v),A=g._ids._schemaChain?[{schema:g}]:null,w=new c([],[],{mainstay:k,schemas:A}),C=r.validate(d,g,w,p);y&&g.$_root.untrace();let S=o.process(C.errors,d,p);return {value:C.value,error:S,mainstay:k}},h.tracer=function(d,g){return d.$_root._tracer?{tracer:d.$_root._tracer._register(d)}:g.debug?(n(d.$_root.trace,"Debug mode not supported"),{tracer:d.$_root.trace()._register(d),cleanup:true}):{tracer:h.ignore}},r.validate=function(d,g,p,m,y={}){if(g.$_terms.whens&&(g=g._generate(d,p,m).schema),g._preferences&&(m=h.prefs(g,m)),g._cache&&m.cache){let S=g._cache.get(d);if(p.mainstay.tracer.debug(p,"validate","cached",!!S),S)return S}let x=(S,O,F)=>g.$_createError(S,d,O,F||p,m),v={original:d,prefs:m,schema:g,state:p,error:x,errorsArray:h.errorsArray,warn:(S,O,F)=>p.mainstay.warnings.push(x(S,O,F)),message:(S,O)=>g.$_createError("custom",d,O,p,m,{messages:S})};p.mainstay.tracer.entry(g,p);let k=g._definition;if(k.prepare&&d!==void 0&&m.convert){let S=k.prepare(d,v);if(S){if(p.mainstay.tracer.value(p,"prepare",d,S.value),S.errors)return h.finalize(S.value,[].concat(S.errors),v);d=S.value;}}if(k.coerce&&d!==void 0&&m.convert&&(!k.coerce.from||k.coerce.from.includes(typeof d))){let S=k.coerce.method(d,v);if(S){if(p.mainstay.tracer.value(p,"coerced",d,S.value),S.errors)return h.finalize(S.value,[].concat(S.errors),v);d=S.value;}}let A=g._flags.empty;A&&A.$_match(h.trim(d,g),p.nest(A),i.defaults)&&(p.mainstay.tracer.value(p,"empty",d,void 0),d=void 0);let w=y.presence||g._flags.presence||(g._flags._endedSwitch?null:m.presence);if(d===void 0){if(w==="forbidden")return h.finalize(d,null,v);if(w==="required")return h.finalize(d,[g.$_createError("any.required",d,null,p,m)],v);if(w==="optional"){if(g._flags.default!==i.symbols.deepDefault)return h.finalize(d,null,v);p.mainstay.tracer.value(p,"default",d,{}),d={};}}else if(w==="forbidden")return h.finalize(d,[g.$_createError("any.unknown",d,null,p,m)],v);let C=[];if(g._valids){let S=g._valids.get(d,p,m,g._flags.insensitive);if(S)return m.convert&&(p.mainstay.tracer.value(p,"valids",d,S.value),d=S.value),p.mainstay.tracer.filter(g,p,"valid",S),h.finalize(d,null,v);if(g._flags.only){let O=g.$_createError("any.only",d,{valids:g._valids.values({display:true})},p,m);if(m.abortEarly)return h.finalize(d,[O],v);C.push(O);}}if(g._invalids){let S=g._invalids.get(d,p,m,g._flags.insensitive);if(S){p.mainstay.tracer.filter(g,p,"invalid",S);let O=g.$_createError("any.invalid",d,{invalids:g._invalids.values({display:true})},p,m);if(m.abortEarly)return h.finalize(d,[O],v);C.push(O);}}if(k.validate){let S=k.validate(d,v);if(S&&(p.mainstay.tracer.value(p,"base",d,S.value),d=S.value,S.errors)){if(!Array.isArray(S.errors))return C.push(S.errors),h.finalize(d,C,v);if(S.errors.length)return C.push(...S.errors),h.finalize(d,C,v)}}return g._rules.length?h.rules(d,C,v):h.finalize(d,C,v)},h.rules=function(d,g,p){let{schema:m,state:y,prefs:x}=p;for(let v of m._rules){let k=m._definition.rules[v.method];if(k.convert&&x.convert){y.mainstay.tracer.log(m,y,"rule",v.name,"full");continue}let A,w=v.args;if(v._resolve.length){w=Object.assign({},w);for(let S of v._resolve){let O=k.argsByName.get(S),F=w[S].resolve(d,y,x),T=O.normalize?O.normalize(F):F,B=i.validateArg(T,null,O);if(B){A=m.$_createError("any.ref",F,{arg:S,ref:w[S],reason:B},y,x);break}w[S]=T;}}A=A||k.validate(d,p,w,v);let C=h.rule(A,v);if(C.errors){if(y.mainstay.tracer.log(m,y,"rule",v.name,"error"),v.warn){y.mainstay.warnings.push(...C.errors);continue}if(x.abortEarly)return h.finalize(d,C.errors,p);g.push(...C.errors);}else y.mainstay.tracer.log(m,y,"rule",v.name,"pass"),y.mainstay.tracer.value(y,"rule",d,C.value,v.name),d=C.value;}return h.finalize(d,g,p)},h.rule=function(d,g){return d instanceof o.Report?(h.error(d,g),{errors:[d],value:null}):Array.isArray(d)&&d[i.symbols.errors]?(d.forEach((p=>h.error(p,g))),{errors:d,value:null}):{errors:null,value:d}},h.error=function(d,g){return g.message&&d._setTemplate(g.message),d},h.finalize=function(d,g,p){g=g||[];let{schema:m,state:y,prefs:x}=p;if(g.length){let k=h.default("failover",void 0,g,p);k!==void 0&&(y.mainstay.tracer.value(y,"failover",d,k),d=k,g=[]);}if(g.length&&m._flags.error)if(typeof m._flags.error=="function"){g=m._flags.error(g),Array.isArray(g)||(g=[g]);for(let k of g)n(k instanceof Error||k instanceof o.Report,"error() must return an Error object");}else g=[m._flags.error];if(d===void 0){let k=h.default("default",d,g,p);y.mainstay.tracer.value(y,"default",d,k),d=k;}if(m._flags.cast&&d!==void 0){let k=m._definition.cast[m._flags.cast];if(k.from(d)){let A=k.to(d,p);y.mainstay.tracer.value(y,"cast",d,A,m._flags.cast),d=A;}}if(m.$_terms.externals&&x.externals&&x._externals!==false)for(let{method:k}of m.$_terms.externals)y.mainstay.externals.push({method:k,schema:m,state:y,label:o.label(m._flags,y,x)});let v={value:d,errors:g.length?g:null};return m._flags.result&&(v.value=m._flags.result==="strip"?void 0:p.original,y.mainstay.tracer.value(y,m._flags.result,d,v.value),y.shadow(d,m._flags.result)),m._cache&&x.cache!==false&&!m._refs.length&&m._cache.set(p.original,v),d===void 0||v.errors||m._flags.artifact===void 0||(y.mainstay.artifacts=y.mainstay.artifacts||new Map,y.mainstay.artifacts.has(m._flags.artifact)||y.mainstay.artifacts.set(m._flags.artifact,[]),y.mainstay.artifacts.get(m._flags.artifact).push(y.path)),v},h.prefs=function(d,g){let p=g===i.defaults;return p&&d._preferences[i.symbols.prefs]?d._preferences[i.symbols.prefs]:(g=i.preferences(g,d._preferences),p&&(d._preferences[i.symbols.prefs]=g),g)},h.default=function(d,g,p,m){let{schema:y,state:x,prefs:v}=m,k=y._flags[d];if(v.noDefaults||k===void 0)return g;if(x.mainstay.tracer.log(y,x,"rule",d,"full"),!k)return k;if(typeof k=="function"){let A=k.length?[a(x.ancestors[0]),m]:[];try{return k(...A)}catch(w){return void p.push(y.$_createError(`any.${d}`,null,{error:w},x,v))}}return typeof k!="object"?k:k[i.symbols.literal]?k.literal:i.isResolvable(k)?k.resolve(g,x,v):a(k)},h.trim=function(d,g){if(typeof d!="string")return d;let p=g.$_getRule("trim");return p&&p.args.enabled?d.trim():d},h.ignore={active:false,debug:f,entry:f,filter:f,log:f,resolve:f,value:f},h.errorsArray=function(){let d=[];return d[i.symbols.errors]=true,d};},2036:(t,r,s)=>{let n=s(375),a=s(9474),f=s(8160),u={};t.exports=u.Values=class{constructor(i,o){this._values=new Set(i),this._refs=new Set(o),this._lowercase=u.lowercases(i),this._override=false;}get length(){return this._values.size+this._refs.size}add(i,o){f.isResolvable(i)?this._refs.has(i)||(this._refs.add(i),o&&o.register(i)):this.has(i,null,null,false)||(this._values.add(i),typeof i=="string"&&this._lowercase.set(i.toLowerCase(),i));}static merge(i,o,c){if(i=i||new u.Values,o){if(o._override)return o.clone();for(let h of [...o._values,...o._refs])i.add(h);}if(c)for(let h of [...c._values,...c._refs])i.remove(h);return i.length?i:null}remove(i){f.isResolvable(i)?this._refs.delete(i):(this._values.delete(i),typeof i=="string"&&this._lowercase.delete(i.toLowerCase()));}has(i,o,c,h){return !!this.get(i,o,c,h)}get(i,o,c,h){if(!this.length)return false;if(this._values.has(i))return {value:i};if(typeof i=="string"&&i&&h){let d=this._lowercase.get(i.toLowerCase());if(d)return {value:d}}if(!this._refs.size&&typeof i!="object")return false;if(typeof i=="object"){for(let d of this._values)if(a(d,i))return {value:d}}if(o)for(let d of this._refs){let g=d.resolve(i,o,c,null,{in:true});if(g===void 0)continue;let p=d.in&&typeof g=="object"?Array.isArray(g)?g:Object.keys(g):[g];for(let m of p)if(typeof m==typeof i){if(h&&i&&typeof i=="string"){if(m.toLowerCase()===i.toLowerCase())return {value:m,ref:d}}else if(a(m,i))return {value:m,ref:d}}}return false}override(){this._override=true;}values(i){if(i&&i.display){let o=[];for(let c of [...this._values,...this._refs])c!==void 0&&o.push(c);return o}return Array.from([...this._values,...this._refs])}clone(){let i=new u.Values(this._values,this._refs);return i._override=this._override,i}concat(i){n(!i._override,"Cannot concat override set of values");let o=new u.Values([...this._values,...i._values],[...this._refs,...i._refs]);return o._override=this._override,o}describe(){let i=[];this._override&&i.push({override:true});for(let o of this._values.values())i.push(o&&typeof o=="object"?{value:o}:o);for(let o of this._refs.values())i.push(o.describe());return i}},u.Values.prototype[f.symbols.values]=true,u.Values.prototype.slice=u.Values.prototype.clone,u.lowercases=function(i){let o=new Map;if(i)for(let c of i)typeof c=="string"&&o.set(c.toLowerCase(),c);return o};},978:(t,r,s)=>{let n=s(375),a=s(8571),f=s(1687),u=s(9621),i={};t.exports=function(o,c,h={}){if(n(o&&typeof o=="object","Invalid defaults value: must be an object"),n(!c||c===true||typeof c=="object","Invalid source value: must be true, falsy or an object"),n(typeof h=="object","Invalid options: must be an object"),!c)return null;if(h.shallow)return i.applyToDefaultsWithShallow(o,c,h);let d=a(o);if(c===true)return d;let g=h.nullOverride!==void 0&&h.nullOverride;return f(d,c,{nullOverride:g,mergeArrays:false})},i.applyToDefaultsWithShallow=function(o,c,h){let d=h.shallow;n(Array.isArray(d),"Invalid keys");let g=new Map,p=c===true?null:new Set;for(let x of d){x=Array.isArray(x)?x:x.split(".");let v=u(o,x);v&&typeof v=="object"?g.set(v,p&&u(c,x)||v):p&&p.add(x);}let m=a(o,{},g);if(!p)return m;for(let x of p)i.reachCopy(m,c,x);let y=h.nullOverride!==void 0&&h.nullOverride;return f(m,c,{nullOverride:y,mergeArrays:false})},i.reachCopy=function(o,c,h){for(let p of h){if(!(p in c))return;let m=c[p];if(typeof m!="object"||m===null)return;c=m;}let d=c,g=o;for(let p=0;p<h.length-1;++p){let m=h[p];typeof g[m]!="object"&&(g[m]={}),g=g[m];}g[h[h.length-1]]=d;};},375:(t,r,s)=>{let n=s(7916);t.exports=function(a,...f){if(!a)throw f.length===1&&f[0]instanceof Error?f[0]:new n(f)};},8571:(t,r,s)=>{let n=s(9621),a=s(4277),f=s(7043),u={needsProtoHack:new Set([a.set,a.map,a.weakSet,a.weakMap])};t.exports=u.clone=function(i,o={},c=null){if(typeof i!="object"||i===null)return i;let h=u.clone,d=c;if(o.shallow){if(o.shallow!==true)return u.cloneWithShallow(i,o);h=y=>y;}else if(d){let y=d.get(i);if(y)return y}else d=new Map;let g=a.getInternalProto(i);if(g===a.buffer)return false;if(g===a.date)return new Date(i.getTime());if(g===a.regex)return new RegExp(i);let p=u.base(i,g,o);if(p===i)return i;if(d&&d.set(i,p),g===a.set)for(let y of i)p.add(h(y,o,d));else if(g===a.map)for(let[y,x]of i)p.set(y,h(x,o,d));let m=f.keys(i,o);for(let y of m){if(y==="__proto__")continue;if(g===a.array&&y==="length"){p.length=i.length;continue}let x=Object.getOwnPropertyDescriptor(i,y);x?x.get||x.set?Object.defineProperty(p,y,x):x.enumerable?p[y]=h(i[y],o,d):Object.defineProperty(p,y,{enumerable:false,writable:true,configurable:true,value:h(i[y],o,d)}):Object.defineProperty(p,y,{enumerable:true,writable:true,configurable:true,value:h(i[y],o,d)});}return p},u.cloneWithShallow=function(i,o){let c=o.shallow;(o=Object.assign({},o)).shallow=false;let h=new Map;for(let d of c){let g=n(i,d);typeof g!="object"&&typeof g!="function"||h.set(g,g);}return u.clone(i,o,h)},u.base=function(i,o,c){if(c.prototype===false)return u.needsProtoHack.has(o)?new o.constructor:o===a.array?[]:{};let h=Object.getPrototypeOf(i);if(h&&h.isImmutable)return i;if(o===a.array){let d=[];return h!==o&&Object.setPrototypeOf(d,h),d}if(u.needsProtoHack.has(o)){let d=new h.constructor;return h!==o&&Object.setPrototypeOf(d,h),d}return Object.create(h)};},9474:(t,r,s)=>{let n=s(4277),a={mismatched:null};t.exports=function(f,u,i){return i=Object.assign({prototype:true},i),!!a.isDeepEqual(f,u,i,[])},a.isDeepEqual=function(f,u,i,o){if(f===u)return f!==0||1/f==1/u;let c=typeof f;if(c!==typeof u||f===null||u===null)return false;if(c==="function"){if(!i.deepFunction||f.toString()!==u.toString())return false}else if(c!=="object")return f!=f&&u!=u;let h=a.getSharedType(f,u,!!i.prototype);switch(h){case n.buffer:return false;case n.promise:return f===u;case n.regex:return f.toString()===u.toString();case a.mismatched:return false}for(let d=o.length-1;d>=0;--d)if(o[d].isSame(f,u))return true;o.push(new a.SeenEntry(f,u));try{return !!a.isDeepEqualObj(h,f,u,i,o)}finally{o.pop();}},a.getSharedType=function(f,u,i){if(i)return Object.getPrototypeOf(f)!==Object.getPrototypeOf(u)?a.mismatched:n.getInternalProto(f);let o=n.getInternalProto(f);return o!==n.getInternalProto(u)?a.mismatched:o},a.valueOf=function(f){let u=f.valueOf;if(u===void 0)return f;try{return u.call(f)}catch(i){return i}},a.hasOwnEnumerableProperty=function(f,u){return Object.prototype.propertyIsEnumerable.call(f,u)},a.isSetSimpleEqual=function(f,u){for(let i of Set.prototype.values.call(f))if(!Set.prototype.has.call(u,i))return false;return true},a.isDeepEqualObj=function(f,u,i,o,c){let{isDeepEqual:h,valueOf:d,hasOwnEnumerableProperty:g}=a,{keys:p,getOwnPropertySymbols:m}=Object;if(f===n.array){if(!o.part){if(u.length!==i.length)return false;for(let A=0;A<u.length;++A)if(!h(u[A],i[A],o,c))return false;return true}for(let A of u)for(let w of i)if(h(A,w,o,c))return true}else if(f===n.set){if(u.size!==i.size)return false;if(!a.isSetSimpleEqual(u,i)){let A=new Set(Set.prototype.values.call(i));for(let w of Set.prototype.values.call(u)){if(A.delete(w))continue;let C=false;for(let S of A)if(h(w,S,o,c)){A.delete(S),C=true;break}if(!C)return false}}}else if(f===n.map){if(u.size!==i.size)return false;for(let[A,w]of Map.prototype.entries.call(u))if(w===void 0&&!Map.prototype.has.call(i,A)||!h(w,Map.prototype.get.call(i,A),o,c))return false}else if(f===n.error&&(u.name!==i.name||u.message!==i.message))return false;let y=d(u),x=d(i);if((u!==y||i!==x)&&!h(y,x,o,c))return false;let v=p(u);if(!o.part&&v.length!==p(i).length&&!o.skip)return false;let k=0;for(let A of v)if(o.skip&&o.skip.includes(A))i[A]===void 0&&++k;else if(!g(i,A)||!h(u[A],i[A],o,c))return false;if(!o.part&&v.length-k!==p(i).length)return false;if(o.symbols!==false){let A=m(u),w=new Set(m(i));for(let C of A){if(!o.skip||!o.skip.includes(C)){if(g(u,C)){if(!g(i,C)||!h(u[C],i[C],o,c))return false}else if(g(i,C))return false}w.delete(C);}for(let C of w)if(g(i,C))return false}return true},a.SeenEntry=class{constructor(f,u){this.obj=f,this.ref=u;}isSame(f,u){return this.obj===f&&this.ref===u}};},7916:(t,r,s)=>{let n=s(8761);t.exports=class extends Error{constructor(a){super(a.filter((f=>f!=="")).map((f=>typeof f=="string"?f:f instanceof Error?f.message:n(f))).join(" ")||"Unknown error"),typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,r.assert);}};},5277:t=>{let r={};t.exports=function(s){if(!s)return "";let n="";for(let a=0;a<s.length;++a){let f=s.charCodeAt(a);r.isSafe(f)?n+=s[a]:n+=r.escapeHtmlChar(f);}return n},r.escapeHtmlChar=function(s){return r.namedHtml.get(s)||(s>=256?"&#"+s+";":`&#x${s.toString(16).padStart(2,"0")};`)},r.isSafe=function(s){return r.safeCharCodes.has(s)},r.namedHtml=new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[34,"&quot;"],[160,"&nbsp;"],[162,"&cent;"],[163,"&pound;"],[164,"&curren;"],[169,"&copy;"],[174,"&reg;"]]),r.safeCharCodes=(function(){let s=new Set;for(let n=32;n<123;++n)(n>=97||n>=65&&n<=90||n>=48&&n<=57||n===32||n===46||n===44||n===45||n===58||n===95)&&s.add(n);return s})();},6064:t=>{t.exports=function(r){return r.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g,"\\$&")};},738:t=>{t.exports=function(){};},1687:(t,r,s)=>{let n=s(375),a=s(8571),f=s(7043),u={};t.exports=u.merge=function(i,o,c){if(n(i&&typeof i=="object","Invalid target value: must be an object"),n(o==null||typeof o=="object","Invalid source value: must be null, undefined, or an object"),!o)return i;if(c=Object.assign({nullOverride:true,mergeArrays:true},c),Array.isArray(o)){n(Array.isArray(i),"Cannot merge array onto an object"),c.mergeArrays||(i.length=0);for(let d=0;d<o.length;++d)i.push(a(o[d],{symbols:c.symbols}));return i}let h=f.keys(o,c);for(let d=0;d<h.length;++d){let g=h[d];if(g==="__proto__"||!Object.prototype.propertyIsEnumerable.call(o,g))continue;let p=o[g];if(p&&typeof p=="object"){if(i[g]===p)continue;!i[g]||typeof i[g]!="object"||Array.isArray(i[g])!==Array.isArray(p)||p instanceof Date||p instanceof RegExp?i[g]=a(p,{symbols:c.symbols}):u.merge(i[g],p,c);}else (p!=null||c.nullOverride)&&(i[g]=p);}return i};},9621:(t,r,s)=>{let n=s(375),a={};t.exports=function(f,u,i){if(u===false||u==null)return f;typeof(i=i||{})=="string"&&(i={separator:i});let o=Array.isArray(u);n(!o||!i.separator,"Separator option is not valid for array-based chain");let c=o?u:u.split(i.separator||"."),h=f;for(let d=0;d<c.length;++d){let g=c[d],p=i.iterables&&a.iterables(h);if(Array.isArray(h)||p==="set"){let m=Number(g);Number.isInteger(m)&&(g=m<0?h.length+m:m);}if(!h||typeof h=="function"&&i.functions===false||!p&&h[g]===void 0){n(!i.strict||d+1===c.length,"Missing segment",g,"in reach path ",u),n(typeof h=="object"||i.functions===true||typeof h!="function","Invalid segment",g,"in reach path ",u),h=i.default;break}h=p?p==="set"?[...h][g]:h.get(g):h[g];}return h},a.iterables=function(f){return f instanceof Set?"set":f instanceof Map?"map":void 0};},8761:t=>{t.exports=function(...r){try{return JSON.stringify(...r)}catch(s){return "[Cannot display object: "+s.message+"]"}};},4277:(t,r)=>{let s={};r=t.exports={array:Array.prototype,buffer:false,date:Date.prototype,error:Error.prototype,generic:Object.prototype,map:Map.prototype,promise:Promise.prototype,regex:RegExp.prototype,set:Set.prototype,weakMap:WeakMap.prototype,weakSet:WeakSet.prototype},s.typeMap=new Map([["[object Error]",r.error],["[object Map]",r.map],["[object Promise]",r.promise],["[object Set]",r.set],["[object WeakMap]",r.weakMap],["[object WeakSet]",r.weakSet]]),r.getInternalProto=function(n){if(Array.isArray(n))return r.array;if(n instanceof Date)return r.date;if(n instanceof RegExp)return r.regex;if(n instanceof Error)return r.error;let a=Object.prototype.toString.call(n);return s.typeMap.get(a)||r.generic};},7043:(t,r)=>{r.keys=function(s,n={}){return n.symbols!==false?Reflect.ownKeys(s):Object.getOwnPropertyNames(s)};},3652:(t,r,s)=>{let n=s(375),a={};r.Sorter=class{constructor(){this._items=[],this.nodes=[];}add(f,u){let i=[].concat((u=u||{}).before||[]),o=[].concat(u.after||[]),c=u.group||"?",h=u.sort||0;n(!i.includes(c),`Item cannot come before itself: ${c}`),n(!i.includes("?"),"Item cannot come before unassociated items"),n(!o.includes(c),`Item cannot come after itself: ${c}`),n(!o.includes("?"),"Item cannot come after unassociated items"),Array.isArray(f)||(f=[f]);for(let d of f){let g={seq:this._items.length,sort:h,before:i,after:o,group:c,node:d};this._items.push(g);}if(!u.manual){let d=this._sort();n(d,"item",c!=="?"?`added into group ${c}`:"","created a dependencies error");}return this.nodes}merge(f){Array.isArray(f)||(f=[f]);for(let i of f)if(i)for(let o of i._items)this._items.push(Object.assign({},o));this._items.sort(a.mergeSort);for(let i=0;i<this._items.length;++i)this._items[i].seq=i;let u=this._sort();return n(u,"merge created a dependencies error"),this.nodes}sort(){let f=this._sort();return n(f,"sort created a dependencies error"),this.nodes}_sort(){let f={},u=Object.create(null),i=Object.create(null);for(let g of this._items){let p=g.seq,m=g.group;i[m]=i[m]||[],i[m].push(p),f[p]=g.before;for(let y of g.after)u[y]=u[y]||[],u[y].push(p);}for(let g in f){let p=[];for(let m in f[g]){let y=f[g][m];i[y]=i[y]||[],p.push(...i[y]);}f[g]=p;}for(let g in u)if(i[g])for(let p of i[g])f[p].push(...u[g]);let o={};for(let g in f){let p=f[g];for(let m of p)o[m]=o[m]||[],o[m].push(g);}let c={},h=[];for(let g=0;g<this._items.length;++g){let p=g;if(o[g]){p=null;for(let m=0;m<this._items.length;++m){if(c[m]===true)continue;o[m]||(o[m]=[]);let y=o[m].length,x=0;for(let v=0;v<y;++v)c[o[m][v]]&&++x;if(x===y){p=m;break}}}p!==null&&(c[p]=true,h.push(p));}if(h.length!==this._items.length)return false;let d={};for(let g of this._items)d[g.seq]=g;this._items=[],this.nodes=[];for(let g of h){let p=d[g];this.nodes.push(p.node),this._items.push(p);}return true}},a.mergeSort=(f,u)=>f.sort===u.sort?0:f.sort<u.sort?-1:1;},5380:(t,r,s)=>{let n=s(443),a=s(2178),f={minDomainSegments:2,nonAsciiRx:/[^\x00-\x7f]/,domainControlRx:/[\x00-\x20@\:\/\\#!\$&\'\(\)\*\+,;=\?]/,tldSegmentRx:/^[a-zA-Z](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/,domainSegmentRx:/^[a-zA-Z0-9](?:[a-zA-Z0-9\-]*[a-zA-Z0-9])?$/,URL:n.URL||URL};r.analyze=function(u,i={}){if(!u)return a.code("DOMAIN_NON_EMPTY_STRING");if(typeof u!="string")throw new Error("Invalid input: domain must be a string");if(u.length>256)return a.code("DOMAIN_TOO_LONG");if(f.nonAsciiRx.test(u)){if(i.allowUnicode===false)return a.code("DOMAIN_INVALID_UNICODE_CHARS");u=u.normalize("NFC");}if(f.domainControlRx.test(u))return a.code("DOMAIN_INVALID_CHARS");u=f.punycode(u),i.allowFullyQualified&&u[u.length-1]==="."&&(u=u.slice(0,-1));let o=i.minDomainSegments||f.minDomainSegments,c=u.split(".");if(c.length<o)return a.code("DOMAIN_SEGMENTS_COUNT");if(i.maxDomainSegments&&c.length>i.maxDomainSegments)return a.code("DOMAIN_SEGMENTS_COUNT_MAX");let h=i.tlds;if(h){let d=c[c.length-1].toLowerCase();if(h.deny&&h.deny.has(d)||h.allow&&!h.allow.has(d))return a.code("DOMAIN_FORBIDDEN_TLDS")}for(let d=0;d<c.length;++d){let g=c[d];if(!g.length)return a.code("DOMAIN_EMPTY_SEGMENT");if(g.length>63)return a.code("DOMAIN_LONG_SEGMENT");if(d<c.length-1){if(!f.domainSegmentRx.test(g))return a.code("DOMAIN_INVALID_CHARS")}else if(!f.tldSegmentRx.test(g))return a.code("DOMAIN_INVALID_TLDS_CHARS")}return null},r.isValid=function(u,i){return !r.analyze(u,i)},f.punycode=function(u){u.includes("%")&&(u=u.replace(/%/g,"%25"));try{return new f.URL(`http://${u}`).host}catch{return u}};},1745:(t,r,s)=>{let n=s(9848),a=s(5380),f=s(2178),u={nonAsciiRx:/[^\x00-\x7f]/,encoder:new(n.TextEncoder||TextEncoder)};r.analyze=function(i,o){return u.email(i,o)},r.isValid=function(i,o){return !u.email(i,o)},u.email=function(i,o={}){if(typeof i!="string")throw new Error("Invalid input: email must be a string");if(!i)return f.code("EMPTY_STRING");let c=!u.nonAsciiRx.test(i);if(!c){if(o.allowUnicode===false)return f.code("FORBIDDEN_UNICODE");i=i.normalize("NFC");}let h=i.split("@");if(h.length!==2)return h.length>2?f.code("MULTIPLE_AT_CHAR"):f.code("MISSING_AT_CHAR");let[d,g]=h;if(!d)return f.code("EMPTY_LOCAL");if(!o.ignoreLength){if(i.length>254)return f.code("ADDRESS_TOO_LONG");if(u.encoder.encode(d).length>64)return f.code("LOCAL_TOO_LONG")}return u.local(d,c)||a.analyze(g,o)},u.local=function(i,o){let c=i.split(".");for(let h of c){if(!h.length)return f.code("EMPTY_LOCAL_SEGMENT");if(o){if(!u.atextRx.test(h))return f.code("INVALID_LOCAL_CHARS")}else for(let d of h){if(u.atextRx.test(d))continue;let g=u.binary(d);if(!u.atomRx.test(g))return f.code("INVALID_LOCAL_CHARS")}}},u.binary=function(i){return Array.from(u.encoder.encode(i)).map((o=>String.fromCharCode(o))).join("")},u.atextRx=/^[\w!#\$%&'\*\+\-/=\?\^`\{\|\}~]+$/,u.atomRx=new RegExp(["(?:[\\xc2-\\xdf][\\x80-\\xbf])","(?:\\xe0[\\xa0-\\xbf][\\x80-\\xbf])|(?:[\\xe1-\\xec][\\x80-\\xbf]{2})|(?:\\xed[\\x80-\\x9f][\\x80-\\xbf])|(?:[\\xee-\\xef][\\x80-\\xbf]{2})","(?:\\xf0[\\x90-\\xbf][\\x80-\\xbf]{2})|(?:[\\xf1-\\xf3][\\x80-\\xbf]{3})|(?:\\xf4[\\x80-\\x8f][\\x80-\\xbf]{2})"].join("|"));},2178:(t,r)=>{r.codes={EMPTY_STRING:"Address must be a non-empty string",FORBIDDEN_UNICODE:"Address contains forbidden Unicode characters",MULTIPLE_AT_CHAR:"Address cannot contain more than one @ character",MISSING_AT_CHAR:"Address must contain one @ character",EMPTY_LOCAL:"Address local part cannot be empty",ADDRESS_TOO_LONG:"Address too long",LOCAL_TOO_LONG:"Address local part too long",EMPTY_LOCAL_SEGMENT:"Address local part contains empty dot-separated segment",INVALID_LOCAL_CHARS:"Address local part contains invalid character",DOMAIN_NON_EMPTY_STRING:"Domain must be a non-empty string",DOMAIN_TOO_LONG:"Domain too long",DOMAIN_INVALID_UNICODE_CHARS:"Domain contains forbidden Unicode characters",DOMAIN_INVALID_CHARS:"Domain contains invalid character",DOMAIN_INVALID_TLDS_CHARS:"Domain contains invalid tld character",DOMAIN_SEGMENTS_COUNT:"Domain lacks the minimum required number of segments",DOMAIN_SEGMENTS_COUNT_MAX:"Domain contains too many segments",DOMAIN_FORBIDDEN_TLDS:"Domain uses forbidden TLD",DOMAIN_EMPTY_SEGMENT:"Domain contains empty dot-separated segment",DOMAIN_LONG_SEGMENT:"Domain contains dot-separated segment that is too long"},r.code=function(s){return {code:s,error:r.codes[s]}};},9959:(t,r,s)=>{let n=s(375),a=s(5752);r.regex=function(f={}){n(f.cidr===void 0||typeof f.cidr=="string","options.cidr must be a string");let u=f.cidr?f.cidr.toLowerCase():"optional";n(["required","optional","forbidden"].includes(u),"options.cidr must be one of required, optional, forbidden"),n(f.version===void 0||typeof f.version=="string"||Array.isArray(f.version),"options.version must be a string or an array of string");let i=f.version||["ipv4","ipv6","ipvfuture"];Array.isArray(i)||(i=[i]),n(i.length>=1,"options.version must have at least 1 version specified");for(let h=0;h<i.length;++h)n(typeof i[h]=="string","options.version must only contain strings"),i[h]=i[h].toLowerCase(),n(["ipv4","ipv6","ipvfuture"].includes(i[h]),"options.version contains unknown version "+i[h]+" - must be one of ipv4, ipv6, ipvfuture");i=Array.from(new Set(i));let o=`(?:${i.map((h=>{if(u==="forbidden")return a.ip[h];let d=`\\/${h==="ipv4"?a.ip.v4Cidr:a.ip.v6Cidr}`;return u==="required"?`${a.ip[h]}${d}`:`${a.ip[h]}(?:${d})?`})).join("|")})`,c=new RegExp(`^${o}$`);return {cidr:u,versions:i,regex:c,raw:o}};},5752:(t,r,s)=>{let n=s(375),a=s(6064),f={generate:function(){let u={},i="\\dA-Fa-f",o="["+i+"]",c="\\w-\\.~",h="!\\$&'\\(\\)\\*\\+,;=",d="%"+i,g=c+d+h+":@",p="["+g+"]",m="(?:0{0,2}\\d|0?[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])";u.ipv4address="(?:"+m+"\\.){3}"+m;let y=o+"{1,4}",x="(?:"+y+":"+y+"|"+u.ipv4address+")",v="(?:"+y+":){6}"+x,k="::(?:"+y+":){5}"+x,A="(?:"+y+")?::(?:"+y+":){4}"+x,w="(?:(?:"+y+":){0,1}"+y+")?::(?:"+y+":){3}"+x,C="(?:(?:"+y+":){0,2}"+y+")?::(?:"+y+":){2}"+x,S="(?:(?:"+y+":){0,3}"+y+")?::"+y+":"+x,O="(?:(?:"+y+":){0,4}"+y+")?::"+x,F="(?:(?:"+y+":){0,5}"+y+")?::"+y,T="(?:(?:"+y+":){0,6}"+y+")?::";u.ipv4Cidr="(?:\\d|[1-2]\\d|3[0-2])",u.ipv6Cidr="(?:0{0,2}\\d|0?[1-9]\\d|1[01]\\d|12[0-8])",u.ipv6address="(?:"+v+"|"+k+"|"+A+"|"+w+"|"+C+"|"+S+"|"+O+"|"+F+"|"+T+")",u.ipvFuture="v"+o+"+\\.["+c+h+":]+",u.scheme="[a-zA-Z][a-zA-Z\\d+-\\.]*",u.schemeRegex=new RegExp(u.scheme);let B="["+c+d+h+":]*",$="["+c+d+h+"]{1,255}",V="(?:\\[(?:"+u.ipv6address+"|"+u.ipvFuture+")\\]|"+u.ipv4address+"|"+$+")",H="(?:"+B+"@)?"+V+"(?::\\d*)?",te="(?:"+B+"@)?("+V+")(?::\\d*)?",W=p+"*",z=p+"+",G="(?:\\/"+W+")*",Y="\\/(?:"+z+G+")?",ge=z+G,Ce="["+c+d+h+"@]+"+G,ke="(?:\\/\\/\\/"+W+G+")";return u.hierPart="(?:(?:\\/\\/"+H+G+")|"+Y+"|"+ge+"|"+ke+")",u.hierPartCapture="(?:(?:\\/\\/"+te+G+")|"+Y+"|"+ge+")",u.relativeRef="(?:(?:\\/\\/"+H+G+")|"+Y+"|"+Ce+"|)",u.relativeRefCapture="(?:(?:\\/\\/"+te+G+")|"+Y+"|"+Ce+"|)",u.query="["+g+"\\/\\?]*(?=#|$)",u.queryWithSquareBrackets="["+g+"\\[\\]\\/\\?]*(?=#|$)",u.fragment="["+g+"\\/\\?]*",u}};f.rfc3986=f.generate(),r.ip={v4Cidr:f.rfc3986.ipv4Cidr,v6Cidr:f.rfc3986.ipv6Cidr,ipv4:f.rfc3986.ipv4address,ipv6:f.rfc3986.ipv6address,ipvfuture:f.rfc3986.ipvFuture},f.createRegex=function(u){let i=f.rfc3986,o="(?:\\?"+(u.allowQuerySquareBrackets?i.queryWithSquareBrackets:i.query)+")?(?:#"+i.fragment+")?",c=u.domain?i.relativeRefCapture:i.relativeRef;if(u.relativeOnly)return f.wrap(c+o);let h="";if(u.scheme){n(u.scheme instanceof RegExp||typeof u.scheme=="string"||Array.isArray(u.scheme),"scheme must be a RegExp, String, or Array");let p=[].concat(u.scheme);n(p.length>=1,"scheme must have at least 1 scheme specified");let m=[];for(let y=0;y<p.length;++y){let x=p[y];n(x instanceof RegExp||typeof x=="string","scheme at position "+y+" must be a RegExp or String"),x instanceof RegExp?m.push(x.source.toString()):(n(i.schemeRegex.test(x),"scheme at position "+y+" must be a valid scheme"),m.push(a(x)));}h=m.join("|");}let d="(?:"+(h?"(?:"+h+")":i.scheme)+":"+(u.domain?i.hierPartCapture:i.hierPart)+")",g=u.allowRelative?"(?:"+d+"|"+c+")":d;return f.wrap(g+o,h)},f.wrap=function(u,i){return {raw:u=`(?=.)(?!https?:/(?:$|[^/]))(?!https?:///)(?!https?:[^/])${u}`,regex:new RegExp(`^${u}$`),scheme:i}},f.uriRegex=f.createRegex({}),r.regex=function(u={}){return u.scheme||u.allowRelative||u.relativeOnly||u.allowQuerySquareBrackets||u.domain?f.createRegex(u):f.uriRegex};},1447:(t,r)=>{let s={operators:["!","^","*","/","%","+","-","<","<=",">",">=","==","!=","&&","||","??"],operatorCharacters:["!","^","*","/","%","+","-","<","=",">","&","|","?"],operatorsOrder:[["^"],["*","/","%"],["+","-"],["<","<=",">",">="],["==","!="],["&&"],["||","??"]],operatorsPrefix:["!","n"],literals:{'"':'"',"`":"`","'":"'","[":"]"},numberRx:/^(?:[0-9]*(\.[0-9]*)?){1}$/,tokenRx:/^[\w\$\#\.\@\:\{\}]+$/,symbol:Symbol("formula"),settings:Symbol("settings")};r.Parser=class{constructor(n,a={}){if(!a[s.settings]&&a.constants)for(let f in a.constants){let u=a.constants[f];if(u!==null&&!["boolean","number","string"].includes(typeof u))throw new Error(`Formula constant ${f} contains invalid ${typeof u} value type`)}this.settings=a[s.settings]?a:Object.assign({[s.settings]:true,constants:{},functions:{}},a),this.single=null,this._parts=null,this._parse(n);}_parse(n){let a=[],f="",u=0,i=false,o=h=>{if(u)throw new Error("Formula missing closing parenthesis");let d=a.length?a[a.length-1]:null;if(i||f||h){if(d&&d.type==="reference"&&h===")")return d.type="function",d.value=this._subFormula(f,d.value),void(f="");if(h===")"){let g=new r.Parser(f,this.settings);a.push({type:"segment",value:g});}else if(i){if(i==="]")return a.push({type:"reference",value:f}),void(f="");a.push({type:"literal",value:f});}else if(s.operatorCharacters.includes(f))d&&d.type==="operator"&&s.operators.includes(d.value+f)?d.value+=f:a.push({type:"operator",value:f});else if(f.match(s.numberRx))a.push({type:"constant",value:parseFloat(f)});else if(this.settings.constants[f]!==void 0)a.push({type:"constant",value:this.settings.constants[f]});else {if(!f.match(s.tokenRx))throw new Error(`Formula contains invalid token: ${f}`);a.push({type:"reference",value:f});}f="";}};for(let h of n)i?h===i?(o(),i=false):f+=h:u?h==="("?(f+=h,++u):h===")"?(--u,u?f+=h:o(h)):f+=h:h in s.literals?i=s.literals[h]:h==="("?(o(),++u):s.operatorCharacters.includes(h)?(o(),f=h,o()):h!==" "?f+=h:o();o(),a=a.map(((h,d)=>h.type!=="operator"||h.value!=="-"||d&&a[d-1].type!=="operator"?h:{type:"operator",value:"n"}));let c=false;for(let h of a){if(h.type==="operator"){if(s.operatorsPrefix.includes(h.value))continue;if(!c)throw new Error("Formula contains an operator in invalid position");if(!s.operators.includes(h.value))throw new Error(`Formula contains an unknown operator ${h.value}`)}else if(c)throw new Error("Formula missing expected operator");c=!c;}if(!c)throw new Error("Formula contains invalid trailing operator");a.length===1&&["reference","literal","constant"].includes(a[0].type)&&(this.single={type:a[0].type==="reference"?"reference":"value",value:a[0].value}),this._parts=a.map((h=>{if(h.type==="operator")return s.operatorsPrefix.includes(h.value)?h:h.value;if(h.type!=="reference")return h.value;if(this.settings.tokenRx&&!this.settings.tokenRx.test(h.value))throw new Error(`Formula contains invalid reference ${h.value}`);return this.settings.reference?this.settings.reference(h.value):s.reference(h.value)}));}_subFormula(n,a){let f=this.settings.functions[a];if(typeof f!="function")throw new Error(`Formula contains unknown function ${a}`);let u=[];if(n){let i="",o=0,c=false,h=()=>{if(!i)throw new Error(`Formula contains function ${a} with invalid arguments ${n}`);u.push(i),i="";};for(let d=0;d<n.length;++d){let g=n[d];c?(i+=g,g===c&&(c=false)):g in s.literals&&!o?(i+=g,c=s.literals[g]):g!==","||o?(i+=g,g==="("?++o:g===")"&&--o):h();}h();}return u=u.map((i=>new r.Parser(i,this.settings))),function(i){let o=[];for(let c of u)o.push(c.evaluate(i));return f.call(i,...o)}}evaluate(n){let a=this._parts.slice();for(let f=a.length-2;f>=0;--f){let u=a[f];if(u&&u.type==="operator"){let i=a[f+1];a.splice(f+1,1);let o=s.evaluate(i,n);a[f]=s.single(u.value,o);}}return s.operatorsOrder.forEach((f=>{for(let u=1;u<a.length-1;)if(f.includes(a[u])){let i=a[u],o=s.evaluate(a[u-1],n),c=s.evaluate(a[u+1],n);a.splice(u,2);let h=s.calculate(i,o,c);a[u-1]=h===0?0:h;}else u+=2;})),s.evaluate(a[0],n)}},r.Parser.prototype[s.symbol]=true,s.reference=function(n){return function(a){return a&&a[n]!==void 0?a[n]:null}},s.evaluate=function(n,a){return n===null?null:typeof n=="function"?n(a):n[s.symbol]?n.evaluate(a):n},s.single=function(n,a){if(n==="!")return !a;let f=-a;return f===0?0:f},s.calculate=function(n,a,f){if(n==="??")return s.exists(a)?a:f;if(typeof a=="string"||typeof f=="string"){if(n==="+")return (a=s.exists(a)?a:"")+(s.exists(f)?f:"")}else switch(n){case "^":return Math.pow(a,f);case "*":return a*f;case "/":return a/f;case "%":return a%f;case "+":return a+f;case "-":return a-f}switch(n){case "<":return a<f;case "<=":return a<=f;case ">":return a>f;case ">=":return a>=f;case "==":return a===f;case "!=":return a!==f;case "&&":return a&&f;case "||":return a||f}return null},s.exists=function(n){return n!=null};},9926:()=>{},5688:()=>{},9708:()=>{},1152:()=>{},443:()=>{},9848:()=>{},5934:t=>{t.exports=JSON.parse('{"version":"17.13.3"}');}},e={},(function t(r){var s=e[r];if(s!==void 0)return s.exports;var n=e[r]={exports:{}};return l[r](n,n.exports,t),n.exports})(5107);var l,e;}));});var Ma=we((N1,La)=>{La.exports=function l(e,t){if(e===t)return true;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return false;var r,s,n;if(Array.isArray(e)){if(r=e.length,r!=t.length)return false;for(s=r;s--!==0;)if(!l(e[s],t[s]))return false;return true}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(n=Object.keys(e),r=n.length,r!==Object.keys(t).length)return false;for(s=r;s--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[s]))return false;for(s=r;s--!==0;){var a=n[s];if(!l(e[a],t[a]))return false}return true}return e!==e&&t!==t};});var zn=we(Ur=>{Ur.byteLength=Y0;Ur.toByteArray=K0;Ur.fromByteArray=el;var Ye=[],Ne=[],X0=typeof Uint8Array<"u"?Uint8Array:Array,Un="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(Tt=0,$a=Un.length;Tt<$a;++Tt)Ye[Tt]=Un[Tt],Ne[Un.charCodeAt(Tt)]=Tt;var Tt,$a;Ne[45]=62;Ne[95]=63;function Na(l){var e=l.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var t=l.indexOf("=");t===-1&&(t=e);var r=t===e?0:4-t%4;return [t,r]}function Y0(l){var e=Na(l),t=e[0],r=e[1];return (t+r)*3/4-r}function Z0(l,e,t){return (e+t)*3/4-t}function K0(l){var e,t=Na(l),r=t[0],s=t[1],n=new X0(Z0(l,r,s)),a=0,f=s>0?r-4:r,u;for(u=0;u<f;u+=4)e=Ne[l.charCodeAt(u)]<<18|Ne[l.charCodeAt(u+1)]<<12|Ne[l.charCodeAt(u+2)]<<6|Ne[l.charCodeAt(u+3)],n[a++]=e>>16&255,n[a++]=e>>8&255,n[a++]=e&255;return s===2&&(e=Ne[l.charCodeAt(u)]<<2|Ne[l.charCodeAt(u+1)]>>4,n[a++]=e&255),s===1&&(e=Ne[l.charCodeAt(u)]<<10|Ne[l.charCodeAt(u+1)]<<4|Ne[l.charCodeAt(u+2)]>>2,n[a++]=e>>8&255,n[a++]=e&255),n}function J0(l){return Ye[l>>18&63]+Ye[l>>12&63]+Ye[l>>6&63]+Ye[l&63]}function Q0(l,e,t){for(var r,s=[],n=e;n<t;n+=3)r=(l[n]<<16&16711680)+(l[n+1]<<8&65280)+(l[n+2]&255),s.push(J0(r));return s.join("")}function el(l){for(var e,t=l.length,r=t%3,s=[],n=16383,a=0,f=t-r;a<f;a+=n)s.push(Q0(l,a,a+n>f?f:a+n));return r===1?(e=l[t-1],s.push(Ye[e>>2]+Ye[e<<4&63]+"==")):r===2&&(e=(l[t-2]<<8)+l[t-1],s.push(Ye[e>>10]+Ye[e>>4&63]+Ye[e<<2&63]+"=")),s.join("")}});var Xn=we((U1,Ya)=>{var qn=0,Ga=-3;function br(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288);}function tl(l,e){this.source=l,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=e,this.destLen=0,this.ltree=new br,this.dtree=new br;}var Va=new br,qa=new br,Hn=new Uint8Array(30),Wn=new Uint16Array(30),Ha=new Uint8Array(30),Wa=new Uint16Array(30),rl=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),ja=new br,Ze=new Uint8Array(320);function Xa(l,e,t,r){var s,n;for(s=0;s<t;++s)l[s]=0;for(s=0;s<30-t;++s)l[s+t]=s/t|0;for(n=r,s=0;s<30;++s)e[s]=n,n+=1<<l[s];}function nl(l,e){var t;for(t=0;t<7;++t)l.table[t]=0;for(l.table[7]=24,l.table[8]=152,l.table[9]=112,t=0;t<24;++t)l.trans[t]=256+t;for(t=0;t<144;++t)l.trans[24+t]=t;for(t=0;t<8;++t)l.trans[168+t]=280+t;for(t=0;t<112;++t)l.trans[176+t]=144+t;for(t=0;t<5;++t)e.table[t]=0;for(e.table[5]=32,t=0;t<32;++t)e.trans[t]=t;}var Ua=new Uint16Array(16);function Gn(l,e,t,r){var s,n;for(s=0;s<16;++s)l.table[s]=0;for(s=0;s<r;++s)l.table[e[t+s]]++;for(l.table[0]=0,n=0,s=0;s<16;++s)Ua[s]=n,n+=l.table[s];for(s=0;s<r;++s)e[t+s]&&(l.trans[Ua[e[t+s]]++]=s);}function sl(l){l.bitcount--||(l.tag=l.source[l.sourceIndex++],l.bitcount=7);var e=l.tag&1;return l.tag>>>=1,e}function Ke(l,e,t){if(!e)return t;for(;l.bitcount<24;)l.tag|=l.source[l.sourceIndex++]<<l.bitcount,l.bitcount+=8;var r=l.tag&65535>>>16-e;return l.tag>>>=e,l.bitcount-=e,r+t}function Vn(l,e){for(;l.bitcount<24;)l.tag|=l.source[l.sourceIndex++]<<l.bitcount,l.bitcount+=8;var t=0,r=0,s=0,n=l.tag;do r=2*r+(n&1),n>>>=1,++s,t+=e.table[s],r-=e.table[s];while(r>=0);return l.tag=n,l.bitcount-=s,e.trans[t+r]}function al(l,e,t){var r,s,n,a,f,u;for(r=Ke(l,5,257),s=Ke(l,5,1),n=Ke(l,4,4),a=0;a<19;++a)Ze[a]=0;for(a=0;a<n;++a){var i=Ke(l,3,0);Ze[rl[a]]=i;}for(Gn(ja,Ze,0,19),f=0;f<r+s;){var o=Vn(l,ja);switch(o){case 16:var c=Ze[f-1];for(u=Ke(l,2,3);u;--u)Ze[f++]=c;break;case 17:for(u=Ke(l,3,3);u;--u)Ze[f++]=0;break;case 18:for(u=Ke(l,7,11);u;--u)Ze[f++]=0;break;default:Ze[f++]=o;break}}Gn(e,Ze,0,r),Gn(t,Ze,r,s);}function za(l,e,t){for(;;){var r=Vn(l,e);if(r===256)return qn;if(r<256)l.dest[l.destLen++]=r;else {var s,n,a,f;for(r-=257,s=Ke(l,Hn[r],Wn[r]),n=Vn(l,t),a=l.destLen-Ke(l,Ha[n],Wa[n]),f=a;f<a+s;++f)l.dest[l.destLen++]=l.dest[f];}}}function il(l){for(var e,t,r;l.bitcount>8;)l.sourceIndex--,l.bitcount-=8;if(e=l.source[l.sourceIndex+1],e=256*e+l.source[l.sourceIndex],t=l.source[l.sourceIndex+3],t=256*t+l.source[l.sourceIndex+2],e!==(~t&65535))return Ga;for(l.sourceIndex+=4,r=e;r;--r)l.dest[l.destLen++]=l.source[l.sourceIndex++];return l.bitcount=0,qn}function ol(l,e){var t=new tl(l,e),r,s,n;do{switch(r=sl(t),s=Ke(t,2,0),s){case 0:n=il(t);break;case 1:n=za(t,Va,qa);break;case 2:al(t,t.ltree,t.dtree),n=za(t,t.ltree,t.dtree);break;default:n=Ga;}if(n!==qn)throw new Error("Data error")}while(!r);return t.destLen<t.dest.length?typeof t.dest.slice=="function"?t.dest.slice(0,t.destLen):t.dest.subarray(0,t.destLen):t.dest}nl(Va,qa);Xa(Hn,Wn,4,3);Xa(Ha,Wa,2,1);Hn[28]=0;Wn[28]=258;Ya.exports=ol;});var Ja=we((z1,Ka)=>{var ll=new Uint8Array(new Uint32Array([305419896]).buffer)[0]===18,Za=(l,e,t)=>{let r=l[e];l[e]=l[t],l[t]=r;},cl=l=>{let e=l.length;for(let t=0;t<e;t+=4)Za(l,t,t+3),Za(l,t+1,t+2);},ul=l=>{ll&&cl(l);};Ka.exports={swap32LE:ul};});var Jn=we((G1,ti)=>{var Qa=Xn(),{swap32LE:fl}=Ja(),Kn=11,Dt=5,hl=Kn-Dt,dl=65536>>Kn,pl=1<<hl,ml=pl-1,zr=2,gl=1<<Dt,Yn=gl-1,ei=65536>>Dt,bl=1024>>Dt,yl=ei+bl,vl=yl,wl=32,xl=vl+wl,Cl=1<<zr,Zn=class{constructor(e){let t=typeof e.readUInt32BE=="function"&&typeof e.slice=="function";if(t||e instanceof Uint8Array){let r;if(t)this.highStart=e.readUInt32LE(0),this.errorValue=e.readUInt32LE(4),r=e.readUInt32LE(8),e=e.slice(12);else {let s=new DataView(e.buffer);this.highStart=s.getUint32(0,true),this.errorValue=s.getUint32(4,true),r=s.getUint32(8,true),e=e.subarray(12);}e=Qa(e,new Uint8Array(r)),e=Qa(e,new Uint8Array(r)),fl(e),this.data=new Uint32Array(e.buffer);}else ({data:this.data,highStart:this.highStart,errorValue:this.errorValue}=e);}get(e){let t;return e<0||e>1114111?this.errorValue:e<55296||e>56319&&e<=65535?(t=(this.data[e>>Dt]<<zr)+(e&Yn),this.data[t]):e<=65535?(t=(this.data[ei+(e-55296>>Dt)]<<zr)+(e&Yn),this.data[t]):e<this.highStart?(t=this.data[xl-dl+(e>>Kn)],t=this.data[t+(e>>Dt&ml)],t=(t<<zr)+(e&Yn),this.data[t]):this.data[this.data.length-Cl]}};ti.exports=Zn;});var oi=we((W1,ii)=>{var ss=1,as=0,is=class{constructor(e){this.stateTable=e.stateTable,this.accepting=e.accepting,this.tags=e.tags;}match(e){var t=this;return {*[Symbol.iterator](){for(var r=ss,s=null,n=null,a=null,f=0;f<e.length;f++){var u=e[f];a=r,r=t.stateTable[r][u],r===as&&(s!=null&&n!=null&&n>=s&&(yield [s,n,t.tags[a]]),r=t.stateTable[ss][u],s=null),r!==as&&s==null&&(s=f),t.accepting[r]&&(n=f),r===as&&(r=ss);}s!=null&&n!=null&&n>=s&&(yield [s,n,t.tags[r]]);}}}apply(e,t){for(var[r,s,n]of this.match(e))for(var a of n)typeof t[a]=="function"&&t[a](r,s,e.slice(r,s+1));}};ii.exports=is;});var li=we((X1,Hr)=>{var Fl=(function(){function l(o,c){return c!=null&&o instanceof c}var e;try{e=Map;}catch{e=function(){};}var t;try{t=Set;}catch{t=function(){};}var r;try{r=Promise;}catch{r=function(){};}function s(o,c,h,d,g){typeof c=="object"&&(h=c.depth,d=c.prototype,g=c.includeNonEnumerable,c=c.circular);var p=[],m=[],y=typeof Buffer<"u";typeof c>"u"&&(c=true),typeof h>"u"&&(h=1/0);function x(v,k){if(v===null)return null;if(k===0)return v;var A,w;if(typeof v!="object")return v;if(l(v,e))A=new e;else if(l(v,t))A=new t;else if(l(v,r))A=new r(function(H,te){v.then(function(W){H(x(W,k-1));},function(W){te(x(W,k-1));});});else if(s.__isArray(v))A=[];else if(s.__isRegExp(v))A=new RegExp(v.source,i(v)),v.lastIndex&&(A.lastIndex=v.lastIndex);else if(s.__isDate(v))A=new Date(v.getTime());else {if(y&&Buffer.isBuffer(v))return Buffer.allocUnsafe?A=Buffer.allocUnsafe(v.length):A=new Buffer(v.length),v.copy(A),A;l(v,Error)?A=Object.create(v):typeof d>"u"?(w=Object.getPrototypeOf(v),A=Object.create(w)):(A=Object.create(d),w=d);}if(c){var C=p.indexOf(v);if(C!=-1)return m[C];p.push(v),m.push(A);}l(v,e)&&v.forEach(function(H,te){var W=x(te,k-1),z=x(H,k-1);A.set(W,z);}),l(v,t)&&v.forEach(function(H){var te=x(H,k-1);A.add(te);});for(var S in v){var O;w&&(O=Object.getOwnPropertyDescriptor(w,S)),!(O&&O.set==null)&&(A[S]=x(v[S],k-1));}if(Object.getOwnPropertySymbols)for(var F=Object.getOwnPropertySymbols(v),S=0;S<F.length;S++){var T=F[S],B=Object.getOwnPropertyDescriptor(v,T);B&&!B.enumerable&&!g||(A[T]=x(v[T],k-1),B.enumerable||Object.defineProperty(A,T,{enumerable:false}));}if(g)for(var $=Object.getOwnPropertyNames(v),S=0;S<$.length;S++){var V=$[S],B=Object.getOwnPropertyDescriptor(v,V);B&&B.enumerable||(A[V]=x(v[V],k-1),Object.defineProperty(A,V,{enumerable:false}));}return A}return x(o,h)}s.clonePrototype=function(c){if(c===null)return null;var h=function(){};return h.prototype=c,new h};function n(o){return Object.prototype.toString.call(o)}s.__objToStr=n;function a(o){return typeof o=="object"&&n(o)==="[object Date]"}s.__isDate=a;function f(o){return typeof o=="object"&&n(o)==="[object Array]"}s.__isArray=f;function u(o){return typeof o=="object"&&n(o)==="[object RegExp]"}s.__isRegExp=u;function i(o){var c="";return o.global&&(c+="g"),o.ignoreCase&&(c+="i"),o.multiline&&(c+="m"),c}return s.__getRegExpFlags=i,s})();typeof Hr=="object"&&Hr.exports&&(Hr.exports=Fl);});var ls=we(os=>{function ci(l){this.buffer=l,this.pos=0;}ci.prototype.read=function(l,e,t){this.pos+t>this.buffer.length&&(t=this.buffer.length-this.pos);for(var r=0;r<t;r++)l[e+r]=this.buffer[this.pos+r];return this.pos+=t,t};os.BrotliInput=ci;function ui(l){this.buffer=l,this.pos=0;}ui.prototype.write=function(l,e){if(this.pos+e>this.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(l.subarray(0,e),this.pos),this.pos+=e,e};os.BrotliOutput=ui;});var di=we((Z1,hi)=>{var Bt=4096,Tl=2*Bt+32,fi=2*Bt-1,Dl=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function Lt(l){this.buf_=new Uint8Array(Tl),this.input_=l,this.reset();}Lt.READ_SIZE=Bt;Lt.IBUF_MASK=fi;Lt.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var l=0;l<4;l++)this.val_|=this.buf_[this.pos_]<<8*l,++this.pos_;return this.bit_end_pos_>0};Lt.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else {var l=this.buf_ptr_,e=this.input_.read(this.buf_,l,Bt);if(e<0)throw new Error("Unexpected end of input");if(e<Bt){this.eos_=1;for(var t=0;t<32;t++)this.buf_[l+e+t]=0;}if(l===0){for(var t=0;t<32;t++)this.buf_[(Bt<<1)+t]=this.buf_[t];this.buf_ptr_=Bt;}else this.buf_ptr_=0;this.bit_end_pos_+=e<<3;}};Lt.prototype.fillBitWindow=function(){for(;this.bit_pos_>=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&fi]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0;};Lt.prototype.readBits=function(l){32-this.bit_pos_<l&&this.fillBitWindow();var e=this.val_>>>this.bit_pos_&Dl[l];return this.bit_pos_+=l,e};hi.exports=Lt;});var mi=we((K1,pi)=>{pi.exports="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";});var bi=we(gi=>{var Rl=zn();gi.init=function(){var l=cs().BrotliDecompressBuffer,e=Rl.toByteArray(mi());return l(e)};});var us=we(Mt=>{var Bl=bi();Mt.init=function(){Mt.dictionary=Bl.init();};Mt.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]);Mt.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]);Mt.minDictionaryWordLength=4;Mt.maxDictionaryWordLength=24;});var hs=we(fs=>{function Wt(l,e){this.bits=l,this.value=e;}fs.HuffmanCode=Wt;var Ht=15;function yi(l,e){for(var t=1<<e-1;l&t;)t>>=1;return (l&t-1)+t}function vi(l,e,t,r,s){do r-=t,l[e+r]=new Wt(s.bits,s.value);while(r>0)}function Ll(l,e,t){for(var r=1<<e-t;e<Ht&&(r-=l[e],!(r<=0));)++e,r<<=1;return e-t}fs.BrotliBuildHuffmanTable=function(l,e,t,r,s){var n=e,a,f,u,i,o,c,h,d,g,p,m,y=new Int32Array(Ht+1),x=new Int32Array(Ht+1);for(m=new Int32Array(s),u=0;u<s;u++)y[r[u]]++;for(x[1]=0,f=1;f<Ht;f++)x[f+1]=x[f]+y[f];for(u=0;u<s;u++)r[u]!==0&&(m[x[r[u]]++]=u);if(d=t,g=1<<d,p=g,x[Ht]===1){for(i=0;i<p;++i)l[e+i]=new Wt(0,m[0]&65535);return p}for(i=0,u=0,f=1,o=2;f<=t;++f,o<<=1)for(;y[f]>0;--y[f])a=new Wt(f&255,m[u++]&65535),vi(l,e+i,o,g,a),i=yi(i,f);for(h=p-1,c=-1,f=t+1,o=2;f<=Ht;++f,o<<=1)for(;y[f]>0;--y[f])(i&h)!==c&&(e+=g,d=Ll(y,f,t),g=1<<d,p+=g,c=i&h,l[n+c]=new Wt(d+t&255,e-n-c&65535)),a=new Wt(f-t&255,m[u++]&65535),vi(l,e+(i>>t),o,g,a),i=yi(i,f);return p};});var wi=we(ds=>{ds.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);ds.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512]);});var xi=we(Xt=>{function N(l,e){this.offset=l,this.nbits=e;}Xt.kBlockLengthPrefixCode=[new N(1,2),new N(5,2),new N(9,2),new N(13,2),new N(17,3),new N(25,3),new N(33,3),new N(41,3),new N(49,4),new N(65,4),new N(81,4),new N(97,4),new N(113,5),new N(145,5),new N(177,5),new N(209,5),new N(241,6),new N(305,6),new N(369,7),new N(497,8),new N(753,9),new N(1265,10),new N(2289,11),new N(4337,12),new N(8433,13),new N(16625,24)];Xt.kInsertLengthPrefixCode=[new N(0,0),new N(1,0),new N(2,0),new N(3,0),new N(4,0),new N(5,0),new N(6,1),new N(8,1),new N(10,2),new N(14,2),new N(18,3),new N(26,3),new N(34,4),new N(50,4),new N(66,5),new N(98,5),new N(130,6),new N(194,7),new N(322,8),new N(578,9),new N(1090,10),new N(2114,12),new N(6210,14),new N(22594,24)];Xt.kCopyLengthPrefixCode=[new N(2,0),new N(3,0),new N(4,0),new N(5,0),new N(6,0),new N(7,0),new N(8,0),new N(9,0),new N(10,1),new N(12,1),new N(14,2),new N(18,2),new N(22,3),new N(30,3),new N(38,4),new N(54,4),new N(70,5),new N(102,5),new N(134,6),new N(198,7),new N(326,8),new N(582,9),new N(1094,10),new N(2118,24)];Xt.kInsertRangeLut=[0,0,8,8,0,16,8,16,16];Xt.kCopyRangeLut=[0,8,0,8,16,0,16,8,16];});var ki=we(Wr=>{var Ml=us(),U=0,Ci=1,$l=2,Nl=3,jl=4,Ul=5,zl=6,Gl=7,Vl=8,Ai=9,me=10,ye=11,ps=12,ql=13,Hl=14,Wl=15,Xl=16,Yl=17,Zl=18,Kl=20;function D(l,e,t){this.prefix=new Uint8Array(l.length),this.transform=e,this.suffix=new Uint8Array(t.length);for(var r=0;r<l.length;r++)this.prefix[r]=l.charCodeAt(r);for(var r=0;r<t.length;r++)this.suffix[r]=t.charCodeAt(r);}var vr=[new D("",U,""),new D("",U," "),new D(" ",U," "),new D("",ps,""),new D("",me," "),new D("",U," the "),new D(" ",U,""),new D("s ",U," "),new D("",U," of "),new D("",me,""),new D("",U," and "),new D("",ql,""),new D("",Ci,""),new D(", ",U," "),new D("",U,", "),new D(" ",me," "),new D("",U," in "),new D("",U," to "),new D("e ",U," "),new D("",U,'"'),new D("",U,"."),new D("",U,'">'),new D("",U,`
2
- `),new D("",Nl,""),new D("",U,"]"),new D("",U," for "),new D("",Hl,""),new D("",$l,""),new D("",U," a "),new D("",U," that "),new D(" ",me,""),new D("",U,". "),new D(".",U,""),new D(" ",U,", "),new D("",Wl,""),new D("",U," with "),new D("",U,"'"),new D("",U," from "),new D("",U," by "),new D("",Xl,""),new D("",Yl,""),new D(" the ",U,""),new D("",jl,""),new D("",U,". The "),new D("",ye,""),new D("",U," on "),new D("",U," as "),new D("",U," is "),new D("",Gl,""),new D("",Ci,"ing "),new D("",U,`
3
- `),new D("",U,":"),new D(" ",U,". "),new D("",U,"ed "),new D("",Kl,""),new D("",Zl,""),new D("",zl,""),new D("",U,"("),new D("",me,", "),new D("",Vl,""),new D("",U," at "),new D("",U,"ly "),new D(" the ",U," of "),new D("",Ul,""),new D("",Ai,""),new D(" ",me,", "),new D("",me,'"'),new D(".",U,"("),new D("",ye," "),new D("",me,'">'),new D("",U,'="'),new D(" ",U,"."),new D(".com/",U,""),new D(" the ",U," of the "),new D("",me,"'"),new D("",U,". This "),new D("",U,","),new D(".",U," "),new D("",me,"("),new D("",me,"."),new D("",U," not "),new D(" ",U,'="'),new D("",U,"er "),new D(" ",ye," "),new D("",U,"al "),new D(" ",ye,""),new D("",U,"='"),new D("",ye,'"'),new D("",me,". "),new D(" ",U,"("),new D("",U,"ful "),new D(" ",me,". "),new D("",U,"ive "),new D("",U,"less "),new D("",ye,"'"),new D("",U,"est "),new D(" ",me,"."),new D("",ye,'">'),new D(" ",U,"='"),new D("",me,","),new D("",U,"ize "),new D("",ye,"."),new D("\xC2\xA0",U,""),new D(" ",U,","),new D("",me,'="'),new D("",ye,'="'),new D("",U,"ous "),new D("",ye,", "),new D("",me,"='"),new D(" ",me,","),new D(" ",ye,'="'),new D(" ",ye,", "),new D("",ye,","),new D("",ye,"("),new D("",ye,". "),new D(" ",ye,"."),new D("",ye,"='"),new D(" ",ye,". "),new D(" ",me,'="'),new D(" ",ye,"='"),new D(" ",me,"='")];Wr.kTransforms=vr;Wr.kNumTransforms=vr.length;function Si(l,e){return l[e]<192?(l[e]>=97&&l[e]<=122&&(l[e]^=32),1):l[e]<224?(l[e+1]^=32,2):(l[e+2]^=5,3)}Wr.transformDictionaryWord=function(l,e,t,r,s){var n=vr[s].prefix,a=vr[s].suffix,f=vr[s].transform,u=f<ps?0:f-(ps-1),i=0,o=e,c;u>r&&(u=r);for(var h=0;h<n.length;)l[e++]=n[h++];for(t+=u,r-=u,f<=Ai&&(r-=f),i=0;i<r;i++)l[e++]=Ml.dictionary[t+i];if(c=e-r,f===me)Si(l,c);else if(f===ye)for(;r>0;){var d=Si(l,c);c+=d,r-=d;}for(var g=0;g<a.length;)l[e++]=a[g++];return e-o};});var cs=we(Zr=>{var Fi=ls().BrotliInput,Jl=ls().BrotliOutput,Kt=di(),Zt=us(),ve=hs().HuffmanCode,Ti=hs().BrotliBuildHuffmanTable,Yt=wi(),wt=xi(),Oi=ki(),Ql=8,Ii=16,ec=256,tc=704,rc=26,Ei=6,_i=2,gs=8,nc=255,xt=1080,bs=18,sc=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),ys=16,ac=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),ic=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),oc=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function Di(l){var e;return l.readBits(1)===0?16:(e=l.readBits(3),e>0?17+e:(e=l.readBits(3),e>0?8+e:17))}function Ri(l){if(l.readBits(1)){var e=l.readBits(3);return e===0?1:l.readBits(e)+(1<<e)}return 0}function lc(){this.meta_block_length=0,this.input_end=0,this.is_uncompressed=0,this.is_metadata=false;}function Bi(l){var e=new lc,t,r,s;if(e.input_end=l.readBits(1),e.input_end&&l.readBits(1))return e;if(t=l.readBits(2)+4,t===7){if(e.is_metadata=true,l.readBits(1)!==0)throw new Error("Invalid reserved bit");if(r=l.readBits(2),r===0)return e;for(s=0;s<r;s++){var n=l.readBits(8);if(s+1===r&&r>1&&n===0)throw new Error("Invalid size byte");e.meta_block_length|=n<<s*8;}}else for(s=0;s<t;++s){var a=l.readBits(4);if(s+1===t&&t>4&&a===0)throw new Error("Invalid size nibble");e.meta_block_length|=a<<s*4;}return ++e.meta_block_length,!e.input_end&&!e.is_metadata&&(e.is_uncompressed=l.readBits(1)),e}function Jt(l,e,t){var s;return t.fillBitWindow(),e+=t.val_>>>t.bit_pos_&nc,s=l[e].bits-gs,s>0&&(t.bit_pos_+=gs,e+=l[e].value,e+=t.val_>>>t.bit_pos_&(1<<s)-1),t.bit_pos_+=l[e].bits,l[e].value}function cc(l,e,t,r){for(var s=0,n=Ql,a=0,f=0,u=32768,i=[],o=0;o<32;o++)i.push(new ve(0,0));for(Ti(i,0,5,l,bs);s<e&&u>0;){var c=0,h;if(r.readMoreInput(),r.fillBitWindow(),c+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=i[c].bits,h=i[c].value&255,h<Ii)a=0,t[s++]=h,h!==0&&(n=h,u-=32768>>h);else {var d=h-14,g,p,m=0;if(h===Ii&&(m=n),f!==m&&(a=0,f=m),g=a,a>0&&(a-=2,a<<=d),a+=r.readBits(d)+3,p=a-g,s+p>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var y=0;y<p;y++)t[s+y]=f;s+=p,f!==0&&(u-=p<<15-f);}}if(u!==0)throw new Error("[ReadHuffmanCodeLengths] space = "+u);for(;s<e;s++)t[s]=0;}function Yr(l,e,t,r){var s=0,n,a=new Uint8Array(l);if(r.readMoreInput(),n=r.readBits(2),n===1){for(var f,u=l-1,i=0,o=new Int32Array(4),c=r.readBits(2)+1;u;)u>>=1,++i;for(f=0;f<c;++f)o[f]=r.readBits(i)%l,a[o[f]]=2;switch(a[o[0]]=1,c){case 1:break;case 3:if(o[0]===o[1]||o[0]===o[2]||o[1]===o[2])throw new Error("[ReadHuffmanCode] invalid symbols");break;case 2:if(o[0]===o[1])throw new Error("[ReadHuffmanCode] invalid symbols");a[o[1]]=1;break;case 4:if(o[0]===o[1]||o[0]===o[2]||o[0]===o[3]||o[1]===o[2]||o[1]===o[3]||o[2]===o[3])throw new Error("[ReadHuffmanCode] invalid symbols");r.readBits(1)?(a[o[2]]=3,a[o[3]]=3):a[o[0]]=2;break}}else {var f,h=new Uint8Array(bs),d=32,g=0,p=[new ve(2,0),new ve(2,4),new ve(2,3),new ve(3,2),new ve(2,0),new ve(2,4),new ve(2,3),new ve(4,1),new ve(2,0),new ve(2,4),new ve(2,3),new ve(3,2),new ve(2,0),new ve(2,4),new ve(2,3),new ve(4,5)];for(f=n;f<bs&&d>0;++f){var m=sc[f],y=0,x;r.fillBitWindow(),y+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=p[y].bits,x=p[y].value,h[m]=x,x!==0&&(d-=32>>x,++g);}if(!(g===1||d===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");cc(h,l,a,r);}if(s=Ti(e,t,gs,a,l),s===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return s}function Xr(l,e,t){var r,s;return r=Jt(l,e,t),s=wt.kBlockLengthPrefixCode[r].nbits,wt.kBlockLengthPrefixCode[r].offset+t.readBits(s)}function uc(l,e,t){var r;return l<ys?(t+=ac[l],t&=3,r=e[t]+ic[l]):r=l-ys+1,r}function fc(l,e){for(var t=l[e],r=e;r;--r)l[r]=l[r-1];l[0]=t;}function hc(l,e){var t=new Uint8Array(256),r;for(r=0;r<256;++r)t[r]=r;for(r=0;r<e;++r){var s=l[r];l[r]=t[s],s&&fc(t,s);}}function $t(l,e){this.alphabet_size=l,this.num_htrees=e,this.codes=new Array(e+e*oc[l+31>>>5]),this.htrees=new Uint32Array(e);}$t.prototype.decode=function(l){var e,t,r=0;for(e=0;e<this.num_htrees;++e)this.htrees[e]=r,t=Yr(this.alphabet_size,this.codes,r,l),r+=t;};function Pi(l,e){var t={num_htrees:null,context_map:null},r,s=0,n,a;e.readMoreInput();var f=t.num_htrees=Ri(e)+1,u=t.context_map=new Uint8Array(l);if(f<=1)return t;for(r=e.readBits(1),r&&(s=e.readBits(4)+1),n=[],a=0;a<xt;a++)n[a]=new ve(0,0);for(Yr(f+s,n,0,e),a=0;a<l;){var i;if(e.readMoreInput(),i=Jt(n,0,e),i===0)u[a]=0,++a;else if(i<=s)for(var o=1+(1<<i)+e.readBits(i);--o;){if(a>=l)throw new Error("[DecodeContextMap] i >= context_map_size");u[a]=0,++a;}else u[a]=i-s,++a;}return e.readBits(1)&&hc(u,l),t}function ms(l,e,t,r,s,n,a){var f=t*2,u=t,i=Jt(e,t*xt,a),o;i===0?o=s[f+(n[u]&1)]:i===1?o=s[f+(n[u]-1&1)]+1:o=i-2,o>=l&&(o-=l),r[t]=o,s[f+(n[u]&1)]=o,++n[u];}function dc(l,e,t,r,s,n){var a=s+1,f=t&s,u=n.pos_&Kt.IBUF_MASK,i;if(e<8||n.bit_pos_+(e<<3)<n.bit_end_pos_){for(;e-- >0;)n.readMoreInput(),r[f++]=n.readBits(8),f===a&&(l.write(r,a),f=0);return}if(n.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;n.bit_pos_<32;)r[f]=n.val_>>>n.bit_pos_,n.bit_pos_+=8,++f,--e;if(i=n.bit_end_pos_-n.bit_pos_>>3,u+i>Kt.IBUF_MASK){for(var o=Kt.IBUF_MASK+1-u,c=0;c<o;c++)r[f+c]=n.buf_[u+c];i-=o,f+=o,e-=o,u=0;}for(var c=0;c<i;c++)r[f+c]=n.buf_[u+c];if(f+=i,e-=i,f>=a){l.write(r,a),f-=a;for(var c=0;c<f;c++)r[c]=r[a+c];}for(;f+e>=a;){if(i=a-f,n.input_.read(r,f,i)<i)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");l.write(r,a),e-=i,f=0;}if(n.input_.read(r,f,e)<e)throw new Error("[CopyUncompressedBlockToOutput] not enough bytes");n.reset();}function pc(l){var e=l.bit_pos_+7&-8,t=l.readBits(e-l.bit_pos_);return t==0}function Li(l){var e=new Fi(l),t=new Kt(e);Di(t);var r=Bi(t);return r.meta_block_length}Zr.BrotliDecompressedSize=Li;function mc(l,e){var t=new Fi(l);e==null&&(e=Li(l));var r=new Uint8Array(e),s=new Jl(r);return Mi(t,s),s.pos<s.buffer.length&&(s.buffer=s.buffer.subarray(0,s.pos)),s.buffer}Zr.BrotliDecompressBuffer=mc;function Mi(l,e){var t,r=0,s=0,n=0,a,f=0,u,i,o,c,h=[16,15,11,4],d=0,g=0,p=0,m=[new $t(0,0),new $t(0,0),new $t(0,0)],y,x,v,k=128+Kt.READ_SIZE;v=new Kt(l),n=Di(v),a=(1<<n)-16,u=1<<n,i=u-1,o=new Uint8Array(u+k+Zt.maxDictionaryWordLength),c=u,y=[],x=[];for(var A=0;A<3*xt;A++)y[A]=new ve(0,0),x[A]=new ve(0,0);for(;!s;){var w=0,C,S=[1<<28,1<<28,1<<28],O=[0],F=[1,1,1],T=[0,1,0,1,0,1],B=[0],$,V,H,te,W=null,z=null,G,Y=null,ge,Ce=0,ke=null,Le=0,Ee=0,He=null,rt=0,We=0,Me=0,Z,oe;for(t=0;t<3;++t)m[t].codes=null,m[t].htrees=null;v.readMoreInput();var nt=Bi(v);if(w=nt.meta_block_length,r+w>e.buffer.length){var _e=new Uint8Array(r+w);_e.set(e.buffer),e.buffer=_e;}if(s=nt.input_end,C=nt.is_uncompressed,nt.is_metadata){for(pc(v);w>0;--w)v.readMoreInput(),v.readBits(8);continue}if(w!==0){if(C){v.bit_pos_=v.bit_pos_+7&-8,dc(e,w,r,o,i,v),r+=w;continue}for(t=0;t<3;++t)F[t]=Ri(v)+1,F[t]>=2&&(Yr(F[t]+2,y,t*xt,v),Yr(rc,x,t*xt,v),S[t]=Xr(x,t*xt,v),B[t]=1);for(v.readMoreInput(),$=v.readBits(2),V=ys+(v.readBits(4)<<$),H=(1<<$)-1,te=V+(48<<$),z=new Uint8Array(F[0]),t=0;t<F[0];++t)v.readMoreInput(),z[t]=v.readBits(2)<<1;var Pt=Pi(F[0]<<Ei,v);G=Pt.num_htrees,W=Pt.context_map;var st=Pi(F[2]<<_i,v);for(ge=st.num_htrees,Y=st.context_map,m[0]=new $t(ec,G),m[1]=new $t(tc,F[1]),m[2]=new $t(te,ge),t=0;t<3;++t)m[t].decode(v);for(ke=0,He=0,Z=z[O[0]],We=Yt.lookupOffsets[Z],Me=Yt.lookupOffsets[Z+1],oe=m[1].htrees[0];w>0;){var at,Ge,mt,it,Gt,Se,ce,De,hr,Vt,dr;for(v.readMoreInput(),S[1]===0&&(ms(F[1],y,1,O,T,B,v),S[1]=Xr(x,xt,v),oe=m[1].htrees[O[1]]),--S[1],at=Jt(m[1].codes,oe,v),Ge=at>>6,Ge>=2?(Ge-=2,ce=-1):ce=0,mt=wt.kInsertRangeLut[Ge]+(at>>3&7),it=wt.kCopyRangeLut[Ge]+(at&7),Gt=wt.kInsertLengthPrefixCode[mt].offset+v.readBits(wt.kInsertLengthPrefixCode[mt].nbits),Se=wt.kCopyLengthPrefixCode[it].offset+v.readBits(wt.kCopyLengthPrefixCode[it].nbits),g=o[r-1&i],p=o[r-2&i],Vt=0;Vt<Gt;++Vt)v.readMoreInput(),S[0]===0&&(ms(F[0],y,0,O,T,B,v),S[0]=Xr(x,0,v),Ce=O[0]<<Ei,ke=Ce,Z=z[O[0]],We=Yt.lookupOffsets[Z],Me=Yt.lookupOffsets[Z+1]),hr=Yt.lookup[We+g]|Yt.lookup[Me+p],Le=W[ke+hr],--S[0],p=g,g=Jt(m[0].codes,m[0].htrees[Le],v),o[r&i]=g,(r&i)===i&&e.write(o,u),++r;if(w-=Gt,w<=0)break;if(ce<0){var hr;if(v.readMoreInput(),S[2]===0&&(ms(F[2],y,2,O,T,B,v),S[2]=Xr(x,2*xt,v),Ee=O[2]<<_i,He=Ee),--S[2],hr=(Se>4?3:Se-2)&255,rt=Y[He+hr],ce=Jt(m[2].codes,m[2].htrees[rt],v),ce>=V){var Ln,ka,pr;ce-=V,ka=ce&H,ce>>=$,Ln=(ce>>1)+1,pr=(2+(ce&1)<<Ln)-4,ce=V+(pr+v.readBits(Ln)<<$)+ka;}}if(De=uc(ce,h,d),De<0)throw new Error("[BrotliDecompress] invalid distance");if(r<a&&f!==a?f=r:f=a,dr=r&i,De>f)if(Se>=Zt.minDictionaryWordLength&&Se<=Zt.maxDictionaryWordLength){var pr=Zt.offsetsByLength[Se],Oa=De-f-1,Ia=Zt.sizeBitsByLength[Se],g0=(1<<Ia)-1,b0=Oa&g0,Ea=Oa>>Ia;if(pr+=b0*Se,Ea<Oi.kNumTransforms){var Mn=Oi.transformDictionaryWord(o,dr,pr,Se,Ea);if(dr+=Mn,r+=Mn,w-=Mn,dr>=c){e.write(o,u);for(var $r=0;$r<dr-c;$r++)o[$r]=o[c+$r];}}else throw new Error("Invalid backward reference. pos: "+r+" distance: "+De+" len: "+Se+" bytes left: "+w)}else throw new Error("Invalid backward reference. pos: "+r+" distance: "+De+" len: "+Se+" bytes left: "+w);else {if(ce>0&&(h[d&3]=De,++d),Se>w)throw new Error("Invalid backward reference. pos: "+r+" distance: "+De+" len: "+Se+" bytes left: "+w);for(Vt=0;Vt<Se;++Vt)o[r&i]=o[r-De&i],(r&i)===i&&e.write(o,u),++r,--w;}g=o[r-1&i],p=o[r-2&i];}r&=1073741823;}}e.write(o,r&i);}Zr.BrotliDecompress=Mi;Zt.init();});var Ni=we((ag,$i)=>{$i.exports=cs().BrotliDecompressBuffer;});var j=ot(_a());var de={DEFAULTS:{width:800,height:400,pixelRatio:2,fontFamily:"Roboto",fontSize:48,color:"#000000",textAlign:"left"},LIMITS:{minWidth:1,maxWidth:4096,minHeight:1,maxHeight:4096,minFontSize:1,maxFontSize:512,minDuration:.1,maxDuration:120,maxTextLength:1e4},ANIMATION_TYPES:["typewriter","fadeIn","slideIn","shift","ascend","movingLetters"]};var mr=/^#[A-Fa-f0-9]{6}$/,k0=j.default.object({type:j.default.string().valid("linear","radial").default("linear"),angle:j.default.number().min(0).max(360).default(0),stops:j.default.array().items(j.default.object({offset:j.default.number().min(0).max(1).required(),color:j.default.string().pattern(mr).required()}).unknown(false)).min(2).required()}).unknown(false),O0=j.default.object({offsetX:j.default.number().default(0),offsetY:j.default.number().default(0),blur:j.default.number().min(0).default(0),color:j.default.string().pattern(mr).default("#000000"),opacity:j.default.number().min(0).max(1).default(.5)}).unknown(false),I0=j.default.object({width:j.default.number().min(0).default(0),color:j.default.string().pattern(mr).default("#000000"),opacity:j.default.number().min(0).max(1).default(1)}).unknown(false),E0=j.default.object({family:j.default.string().default(de.DEFAULTS.fontFamily),size:j.default.number().min(de.LIMITS.minFontSize).max(de.LIMITS.maxFontSize).default(de.DEFAULTS.fontSize),weight:j.default.alternatives().try(j.default.string(),j.default.number()).default("400"),style:j.default.string().valid("normal","italic","oblique").default("normal"),color:j.default.string().pattern(mr).default(de.DEFAULTS.color),opacity:j.default.number().min(0).max(1).default(1)}).unknown(false),_0=j.default.object({letterSpacing:j.default.number().default(0),lineHeight:j.default.number().min(0).max(10).default(1.2),textTransform:j.default.string().valid("none","uppercase","lowercase","capitalize").default("none"),textDecoration:j.default.string().valid("none","underline","line-through").default("none"),gradient:k0.optional()}).unknown(false),P0=j.default.object({horizontal:j.default.string().valid("left","center","right").default(de.DEFAULTS.textAlign),vertical:j.default.string().valid("top","middle","bottom").default("middle")}).unknown(false),F0=j.default.object({preset:j.default.string().valid(...de.ANIMATION_TYPES),speed:j.default.number().min(.1).max(10).default(1),duration:j.default.number().min(de.LIMITS.minDuration).max(de.LIMITS.maxDuration).optional(),style:j.default.string().valid("character","word").optional().when("preset",{is:j.default.valid("typewriter","shift"),then:j.default.optional(),otherwise:j.default.forbidden()}),direction:j.default.string().optional().when("preset",{switch:[{is:"ascend",then:j.default.valid("up","down")},{is:"shift",then:j.default.valid("left","right","up","down")},{is:"slideIn",then:j.default.valid("left","right","up","down")},{is:"movingLetters",then:j.default.valid("left","right","up","down")}],otherwise:j.default.forbidden()})}).unknown(false),T0=j.default.object({color:j.default.string().pattern(mr).optional(),opacity:j.default.number().min(0).max(1).default(1),borderRadius:j.default.number().min(0).default(0)}).unknown(false),D0=j.default.object({src:j.default.string().uri().required(),family:j.default.string().required(),weight:j.default.alternatives().try(j.default.string(),j.default.number()).optional(),style:j.default.string().optional(),originalFamily:j.default.string().optional()}).unknown(false),Pa=j.default.object({type:j.default.string().valid("rich-text").required(),text:j.default.string().allow("").max(de.LIMITS.maxTextLength).default(""),width:j.default.number().min(de.LIMITS.minWidth).max(de.LIMITS.maxWidth).default(de.DEFAULTS.width).optional(),height:j.default.number().min(de.LIMITS.minHeight).max(de.LIMITS.maxHeight).default(de.DEFAULTS.height).optional(),font:E0.optional(),style:_0.optional(),stroke:I0.optional(),shadow:O0.optional(),background:T0.optional(),align:P0.optional(),animation:F0.optional(),customFonts:j.default.array().items(D0).optional(),cacheEnabled:j.default.boolean().default(true),pixelRatio:j.default.number().min(1).max(3).default(de.DEFAULTS.pixelRatio)}).unknown(false);var jr=null;function R0(){return typeof process<"u"&&process.versions!=null&&process.versions.node!=null}async function B0(l){try{if(l){let e=l.endsWith(".wasm")?l:l.endsWith("/")?`${l}hb.wasm`:`${l}/hb.wasm`,t=await fetch(e);if(t.ok){let r=await t.arrayBuffer(),s=new Uint8Array(r);if(s.length>=4&&s[0]===0&&s[1]===97&&s[2]===115&&s[3]===109)return r}}return}catch{return}}function L0(l){let e=window.fetch;window.fetch=function(t,r){let s=typeof t=="string"?t:t instanceof URL?t.href:t.url;return s.includes("hb.wasm")||s.endsWith(".wasm")?Promise.resolve(new Response(l,{status:200,statusText:"OK",headers:{"Content-Type":"application/wasm","Content-Length":l.byteLength.toString()}})):e.apply(this,[t,r])};}async function Fa(l){if(jr)return jr;try{let e;if(e=await B0(l),!e)throw new Error("Failed to load WASM binary from any source");R0()||L0(e);let r=(await import('harfbuzzjs')).default,s;if(typeof r=="function"?s=await r():r&&typeof r.then=="function"?s=await r:s=r,!s||typeof s.createBuffer!="function"||typeof s.createFont!="function")throw new Error("Failed to initialize HarfBuzz: unexpected export shape from 'harfbuzzjs'.");return jr=s,jr}catch(e){throw new Error(`Failed to initialize HarfBuzz: ${e instanceof Error?e.message:String(e)}`)}}var M0={utf16le:"utf-16le",ucs2:"utf-16le",utf16be:"utf-16be"},ue=class{constructor(e){this.buffer=e,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.pos=0,this.length=this.buffer.length;}readString(e,t="ascii"){t=M0[t]||t;let r=this.readBuffer(e);try{return new TextDecoder(t).decode(r)}catch{return r}}readBuffer(e){return this.buffer.slice(this.pos,this.pos+=e)}readUInt24BE(){return (this.readUInt16BE()<<8)+this.readUInt8()}readUInt24LE(){return this.readUInt16LE()+(this.readUInt8()<<16)}readInt24BE(){return (this.readInt16BE()<<8)+this.readUInt8()}readInt24LE(){return this.readUInt16LE()+(this.readInt8()<<16)}};ue.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8};for(let l of Object.getOwnPropertyNames(DataView.prototype))if(l.slice(0,3)==="get"){let e=l.slice(3).replace("Ui","UI");e==="Float32"?e="Float":e==="Float64"&&(e="Double");let t=ue.TYPES[e];ue.prototype["read"+e+(t===1?"":"BE")]=function(){let r=this.view[l](this.pos,false);return this.pos+=t,r},t!==1&&(ue.prototype["read"+e+"LE"]=function(){let r=this.view[l](this.pos,true);return this.pos+=t,r});}var $0=new TextEncoder,Ta=new Uint8Array(new Uint16Array([4660]).buffer)[0]==18,ct=class{constructor(e){this.buffer=e,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.pos=0;}writeBuffer(e){this.buffer.set(e,this.pos),this.pos+=e.length;}writeString(e,t="ascii"){let r;switch(t){case "utf16le":case "utf16-le":case "ucs2":r=Da(e,Ta);break;case "utf16be":case "utf16-be":r=Da(e,!Ta);break;case "utf8":r=$0.encode(e);break;case "ascii":r=N0(e);break;default:throw new Error(`Unsupported encoding: ${t}`)}this.writeBuffer(r);}writeUInt24BE(e){this.buffer[this.pos++]=e>>>16&255,this.buffer[this.pos++]=e>>>8&255,this.buffer[this.pos++]=e&255;}writeUInt24LE(e){this.buffer[this.pos++]=e&255,this.buffer[this.pos++]=e>>>8&255,this.buffer[this.pos++]=e>>>16&255;}writeInt24BE(e){e>=0?this.writeUInt24BE(e):this.writeUInt24BE(e+16777215+1);}writeInt24LE(e){e>=0?this.writeUInt24LE(e):this.writeUInt24LE(e+16777215+1);}fill(e,t){if(t<this.buffer.length)this.buffer.fill(e,this.pos,this.pos+t),this.pos+=t;else {let r=new Uint8Array(t);r.fill(e),this.writeBuffer(r);}}};function Da(l,e){let t=new Uint16Array(l.length);for(let r=0;r<l.length;r++){let s=l.charCodeAt(r);e&&(s=s>>8|(s&255)<<8),t[r]=s;}return new Uint8Array(t.buffer)}function N0(l){let e=new Uint8Array(l.length);for(let t=0;t<l.length;t++)e[t]=l.charCodeAt(t);return e}for(let l of Object.getOwnPropertyNames(DataView.prototype))if(l.slice(0,3)==="set"){let e=l.slice(3).replace("Ui","UI");e==="Float32"?e="Float":e==="Float64"&&(e="Double");let t=ue.TYPES[e];ct.prototype["write"+e+(t===1?"":"BE")]=function(r){this.view[l](this.pos,r,false),this.pos+=t;},t!==1&&(ct.prototype["write"+e+"LE"]=function(r){this.view[l](this.pos,r,true),this.pos+=t;});}var pe=class{fromBuffer(e){let t=new ue(e);return this.decode(t)}toBuffer(e){let t=this.size(e),r=new Uint8Array(t),s=new ct(r);return this.encode(s,e),r}};var Q=class extends pe{constructor(e,t="BE"){super(),this.type=e,this.endian=t,this.fn=this.type,this.type[this.type.length-1]!=="8"&&(this.fn+=this.endian);}size(){return ue.TYPES[this.type]}decode(e){return e[`read${this.fn}`]()}encode(e,t){return e[`write${this.fn}`](t)}};var L=new Q("UInt8"),j0=new Q("UInt16","BE"),b=j0;new Q("UInt16","LE");var U0=new Q("UInt24","BE"),ut=U0;new Q("UInt24","LE");var z0=new Q("UInt32","BE"),_=z0;new Q("UInt32","LE");var be=new Q("Int8"),G0=new Q("Int16","BE"),R=G0;new Q("Int16","LE");new Q("Int24","BE");new Q("Int24","LE");var V0=new Q("Int32","BE"),gt=V0;new Q("Int32","LE");new Q("Float","BE");new Q("Float","LE");new Q("Double","BE");new Q("Double","LE");var Xe=class extends Q{constructor(e,t,r=e>>1){super(`Int${e}`,t),this._point=1<<r;}decode(e){return super.decode(e)/this._point}encode(e,t){return super.encode(e,t*this._point|0)}},q0=new Xe(16,"BE"),Ra=q0;new Xe(16,"LE");var H0=new Xe(32,"BE"),fe=H0;new Xe(32,"LE");function Oe(l,e,t){let r;if(typeof l=="number"?r=l:typeof l=="function"?r=l.call(t,t):t&&typeof l=="string"?r=t[l]:e&&l instanceof Q&&(r=l.decode(e)),isNaN(r))throw new Error("Not a fixed size");return r}var bt=class{constructor(e={}){this.enumerable=true,this.configurable=true;for(let t in e){let r=e[t];this[t]=r;}}};var I=class extends pe{constructor(e,t,r="count"){super(),this.type=e,this.length=t,this.lengthType=r;}decode(e,t){let r,{pos:s}=e,n=[],a=t;if(this.length!=null&&(r=Oe(this.length,e,t)),this.length instanceof Q&&(Object.defineProperties(n,{parent:{value:t},_startOffset:{value:s},_currentOffset:{value:0,writable:true},_length:{value:r}}),a=n),r==null||this.lengthType==="bytes"){let f=r!=null?e.pos+r:t?._length?t._startOffset+t._length:e.length;for(;e.pos<f;)n.push(this.type.decode(e,a));}else for(let f=0,u=r;f<u;f++)n.push(this.type.decode(e,a));return n}size(e,t,r=true){if(!e)return this.type.size(null,t)*Oe(this.length,null,t);let s=0;this.length instanceof Q&&(s+=this.length.size(),t={parent:t,pointerSize:0});for(let n of e)s+=this.type.size(n,t);return t&&r&&this.length instanceof Q&&(s+=t.pointerSize),s}encode(e,t,r){let s=r;this.length instanceof Q&&(s={pointers:[],startOffset:e.pos,parent:r},s.pointerOffset=e.pos+this.size(t,s,false),this.length.encode(e,t.length));for(let n of t)this.type.encode(e,n,s);if(this.length instanceof Q){let n=0;for(;n<s.pointers.length;){let a=s.pointers[n++];a.type.encode(e,a.val,a.parent);}}}};var se=class extends I{decode(e,t){let{pos:r}=e,s=Oe(this.length,e,t);this.length instanceof Q&&(t={parent:t,_startOffset:r,_currentOffset:0,_length:s});let n=new gr(this.type,s,e,t);return e.pos+=s*this.type.size(null,t),n}size(e,t){return e instanceof gr&&(e=e.toArray()),super.size(e,t)}encode(e,t,r){return t instanceof gr&&(t=t.toArray()),super.encode(e,t,r)}},gr=class{constructor(e,t,r,s){this.type=e,this.length=t,this.stream=r,this.ctx=s,this.base=this.stream.pos,this.items=[];}get(e){if(!(e<0||e>=this.length)){if(this.items[e]==null){let{pos:t}=this.stream;this.stream.pos=this.base+this.type.size(null,this.ctx)*e,this.items[e]=this.type.decode(this.stream,this.ctx),this.stream.pos=t;}return this.items[e]}}toArray(){let e=[];for(let t=0,r=this.length;t<r;t++)e.push(this.get(t));return e}};var Pe=class extends pe{constructor(e,t=[]){super(),this.type=e,this.flags=t;}decode(e){let t=this.type.decode(e),r={};for(let s=0;s<this.flags.length;s++){let n=this.flags[s];n!=null&&(r[n]=!!(t&1<<s));}return r}size(){return this.type.size()}encode(e,t){let r=0;for(let s=0;s<this.flags.length;s++){let n=this.flags[s];n!=null&&t[n]&&(r|=1<<s);}return this.type.encode(e,r)}};var Re=class extends pe{constructor(e){super(),this.length=e;}decode(e,t){let r=Oe(this.length,e,t);return e.readBuffer(r)}size(e,t){if(!e)return Oe(this.length,null,t);let r=e.length;return this.length instanceof Q&&(r+=this.length.size()),r}encode(e,t,r){return this.length instanceof Q&&this.length.encode(e,t.length),e.writeBuffer(t)}};var yt=class extends pe{constructor(e,t=true){super(),this.type=e,this.condition=t;}decode(e,t){let{condition:r}=this;if(typeof r=="function"&&(r=r.call(t,t)),r)return this.type.decode(e,t)}size(e,t){let{condition:r}=this;return typeof r=="function"&&(r=r.call(t,t)),r?this.type.size(e,t):0}encode(e,t,r){let{condition:s}=this;if(typeof s=="function"&&(s=s.call(r,r)),s)return this.type.encode(e,t,r)}};var ie=class extends pe{constructor(e,t=1){super(),this.type=e,this.count=t;}decode(e,t){e.pos+=this.size(null,t);}size(e,t){let r=Oe(this.count,null,t);return this.type.size()*r}encode(e,t,r){return e.fill(0,this.size(t,r))}};var ne=class extends pe{constructor(e,t="ascii"){super(),this.length=e,this.encoding=t;}decode(e,t){let r,s,{encoding:n}=this;typeof n=="function"&&(n=n.call(t,t)||"ascii");let a=jn(n);if(this.length!=null)r=Oe(this.length,e,t);else {let u;for({buffer:u,length:r,pos:s}=e;s<r-a+1&&(u[s]!==0||a===2&&u[s+1]!==0);)s+=a;r=s-e.pos;}let f=e.readString(r,n);return this.length==null&&e.pos<e.length&&(e.pos+=a),f}size(e,t){if(e==null)return Oe(this.length,null,t);let{encoding:r}=this;typeof r=="function"&&(r=r.call(t?.val,t?.val)||"ascii"),r==="utf16be"&&(r="utf16le");let s=Ba(e,r);return this.length instanceof Q&&(s+=this.length.size()),this.length==null&&(s+=jn(r)),s}encode(e,t,r){let{encoding:s}=this;if(typeof s=="function"&&(s=s.call(r?.val,r?.val)||"ascii"),this.length instanceof Q&&this.length.encode(e,Ba(t,s)),e.writeString(t,s),this.length==null)return jn(s)==2?e.writeUInt16LE(0):e.writeUInt8(0)}};function jn(l){switch(l){case "ascii":case "utf8":return 1;case "utf16le":case "utf16-le":case "utf-16be":case "utf-16le":case "utf16be":case "utf16-be":case "ucs2":return 2;default:return 1}}function Ba(l,e){switch(e){case "ascii":return l.length;case "utf8":let t=0;for(let r=0;r<l.length;r++){let s=l.charCodeAt(r);if(s>=55296&&s<=56319&&r<l.length-1){let n=l.charCodeAt(++r);(n&64512)===56320?s=((s&1023)<<10)+(n&1023)+65536:r--;}(s&4294967168)===0?t++:(s&4294965248)===0?t+=2:(s&4294901760)===0?t+=3:(s&4292870144)===0&&(t+=4);}return t;case "utf16le":case "utf16-le":case "utf16be":case "utf16-be":case "ucs2":return l.length*2;default:throw new Error("Unknown encoding "+e)}}var P=class extends pe{constructor(e={}){super(),this.fields=e;}decode(e,t,r=0){let s=this._setup(e,t,r);return this._parseFields(e,s,this.fields),this.process!=null&&this.process.call(s,e),s}_setup(e,t,r){let s={};return Object.defineProperties(s,{parent:{value:t},_startOffset:{value:e.pos},_currentOffset:{value:0,writable:true},_length:{value:r}}),s}_parseFields(e,t,r){for(let n in r){var s;let a=r[n];typeof a=="function"?s=a.call(t,t):s=a.decode(e,t),s!==void 0&&(s instanceof bt?Object.defineProperty(t,n,s):t[n]=s),t._currentOffset=e.pos-t._startOffset;}}size(e,t,r=true){e==null&&(e={});let s={parent:t,val:e,pointerSize:0};this.preEncode!=null&&this.preEncode.call(e);let n=0;for(let a in this.fields){let f=this.fields[a];f.size!=null&&(n+=f.size(e[a],s));}return r&&(n+=s.pointerSize),n}encode(e,t,r){let s;this.preEncode!=null&&this.preEncode.call(t,e);let n={pointers:[],startOffset:e.pos,parent:r,val:t,pointerSize:0};n.pointerOffset=e.pos+this.size(t,n,false);for(let f in this.fields)s=this.fields[f],s.encode!=null&&s.encode(e,t[f],n);let a=0;for(;a<n.pointers.length;){let f=n.pointers[a++];f.type.encode(e,f.val,f.parent);}}};var W0=(l,e)=>e.reduce((t,r)=>t&&t[r],l),K=class l extends P{constructor(e,t={}){super(),this.type=e,this.versions=t,typeof e=="string"&&(this.versionPath=e.split("."));}decode(e,t,r=0){let s=this._setup(e,t,r);typeof this.type=="string"?s.version=W0(t,this.versionPath):s.version=this.type.decode(e),this.versions.header&&this._parseFields(e,s,this.versions.header);let n=this.versions[s.version];if(n==null)throw new Error(`Unknown version ${s.version}`);return n instanceof l?n.decode(e,t):(this._parseFields(e,s,n),this.process!=null&&this.process.call(s,e),s)}size(e,t,r=true){let s,n;if(!e)throw new Error("Not a fixed size");this.preEncode!=null&&this.preEncode.call(e);let a={parent:t,val:e,pointerSize:0},f=0;if(typeof this.type!="string"&&(f+=this.type.size(e.version,a)),this.versions.header)for(s in this.versions.header)n=this.versions.header[s],n.size!=null&&(f+=n.size(e[s],a));let u=this.versions[e.version];if(u==null)throw new Error(`Unknown version ${e.version}`);for(s in u)n=u[s],n.size!=null&&(f+=n.size(e[s],a));return r&&(f+=a.pointerSize),f}encode(e,t,r){let s,n;this.preEncode!=null&&this.preEncode.call(t,e);let a={pointers:[],startOffset:e.pos,parent:r,val:t,pointerSize:0};if(a.pointerOffset=e.pos+this.size(t,a,false),typeof this.type!="string"&&this.type.encode(e,t.version),this.versions.header)for(s in this.versions.header)n=this.versions.header[s],n.encode!=null&&n.encode(e,t[s],a);let f=this.versions[t.version];for(s in f)n=f[s],n.encode!=null&&n.encode(e,t[s],a);let u=0;for(;u<a.pointers.length;){let i=a.pointers[u++];i.type.encode(e,i.val,i.parent);}}};var E=class extends pe{constructor(e,t,r={}){if(super(),this.offsetType=e,this.type=t,this.options=r,this.type==="void"&&(this.type=null),this.options.type==null&&(this.options.type="local"),this.options.allowNull==null&&(this.options.allowNull=true),this.options.nullValue==null&&(this.options.nullValue=0),this.options.lazy==null&&(this.options.lazy=false),this.options.relativeTo){if(typeof this.options.relativeTo!="function")throw new Error("relativeTo option must be a function");this.relativeToGetter=r.relativeTo;}}decode(e,t){let r=this.offsetType.decode(e,t);if(r===this.options.nullValue&&this.options.allowNull)return null;let s;switch(this.options.type){case "local":s=t._startOffset;break;case "immediate":s=e.pos-this.offsetType.size();break;case "parent":s=t.parent._startOffset;break;default:for(var n=t;n.parent;)n=n.parent;s=n._startOffset||0;}this.options.relativeTo&&(s+=this.relativeToGetter(t));let a=r+s;if(this.type!=null){let f=null,u=()=>{if(f!=null)return f;let{pos:i}=e;return e.pos=a,f=this.type.decode(e,t),e.pos=i,f};return this.options.lazy?new bt({get:u}):u()}else return a}size(e,t){let r=t;switch(this.options.type){case "local":case "immediate":break;case "parent":t=t.parent;break;default:for(;t.parent;)t=t.parent;}let{type:s}=this;if(s==null){if(!(e instanceof qt))throw new Error("Must be a VoidPointer");(({type:s}=e)),e=e.value;}if(e&&t){let n=s.size(e,r);t.pointerSize+=n;}return this.offsetType.size()}encode(e,t,r){let s,n=r;if(t==null){this.offsetType.encode(e,this.options.nullValue);return}switch(this.options.type){case "local":s=r.startOffset;break;case "immediate":s=e.pos+this.offsetType.size(t,n);break;case "parent":r=r.parent,s=r.startOffset;break;default:for(s=0;r.parent;)r=r.parent;}this.options.relativeTo&&(s+=this.relativeToGetter(n.val)),this.offsetType.encode(e,r.pointerOffset-s);let{type:a}=this;if(a==null){if(!(t instanceof qt))throw new Error("Must be a VoidPointer");(({type:a}=t)),t=t.value;}return r.pointers.push({type:a,val:t,parent:n}),r.pointerOffset+=a.size(t,n)}},qt=class{constructor(e,t){this.type=e,this.value=t;}};function Fe(l,e,t){return e in l?Object.defineProperty(l,e,{value:t,enumerable:true,configurable:true,writable:true}):l[e]=t,l}function xe(l,e,t,r){var s=arguments.length,n=s<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(l,e,t,r);else for(var f=l.length-1;f>=0;f--)(a=l[f])&&(n=(s<3?a(n):s>3?a(e,t,n):a(e,t))||n);return s>3&&n&&Object.defineProperty(e,t,n),n}var Is=ot(Ma());var ri=ot(zn()),ni=ot(Jn());function Rt(l){return l&&l.__esModule?l.default:l}var vt={};vt=JSON.parse('{"categories":["Cc","Zs","Po","Sc","Ps","Pe","Sm","Pd","Nd","Lu","Sk","Pc","Ll","So","Lo","Pi","Cf","No","Pf","Lt","Lm","Mn","Me","Mc","Nl","Zl","Zp","Cs","Co"],"combiningClasses":["Not_Reordered","Above","Above_Right","Below","Attached_Above_Right","Attached_Below","Overlay","Iota_Subscript","Double_Below","Double_Above","Below_Right","Above_Left","CCC10","CCC11","CCC12","CCC13","CCC14","CCC15","CCC16","CCC17","CCC18","CCC19","CCC20","CCC21","CCC22","CCC23","CCC24","CCC25","CCC30","CCC31","CCC32","CCC27","CCC28","CCC29","CCC33","CCC34","CCC35","CCC36","Nukta","Virama","CCC84","CCC91","CCC103","CCC107","CCC118","CCC122","CCC129","CCC130","CCC132","Attached_Above","Below_Left","Left","Kana_Voicing","CCC26","Right"],"scripts":["Common","Latin","Bopomofo","Inherited","Greek","Coptic","Cyrillic","Armenian","Hebrew","Arabic","Syriac","Thaana","Nko","Samaritan","Mandaic","Devanagari","Bengali","Gurmukhi","Gujarati","Oriya","Tamil","Telugu","Kannada","Malayalam","Sinhala","Thai","Lao","Tibetan","Myanmar","Georgian","Hangul","Ethiopic","Cherokee","Canadian_Aboriginal","Ogham","Runic","Tagalog","Hanunoo","Buhid","Tagbanwa","Khmer","Mongolian","Limbu","Tai_Le","New_Tai_Lue","Buginese","Tai_Tham","Balinese","Sundanese","Batak","Lepcha","Ol_Chiki","Braille","Glagolitic","Tifinagh","Han","Hiragana","Katakana","Yi","Lisu","Vai","Bamum","Syloti_Nagri","Phags_Pa","Saurashtra","Kayah_Li","Rejang","Javanese","Cham","Tai_Viet","Meetei_Mayek","null","Linear_B","Lycian","Carian","Old_Italic","Gothic","Old_Permic","Ugaritic","Old_Persian","Deseret","Shavian","Osmanya","Osage","Elbasan","Caucasian_Albanian","Linear_A","Cypriot","Imperial_Aramaic","Palmyrene","Nabataean","Hatran","Phoenician","Lydian","Meroitic_Hieroglyphs","Meroitic_Cursive","Kharoshthi","Old_South_Arabian","Old_North_Arabian","Manichaean","Avestan","Inscriptional_Parthian","Inscriptional_Pahlavi","Psalter_Pahlavi","Old_Turkic","Old_Hungarian","Hanifi_Rohingya","Old_Sogdian","Sogdian","Elymaic","Brahmi","Kaithi","Sora_Sompeng","Chakma","Mahajani","Sharada","Khojki","Multani","Khudawadi","Grantha","Newa","Tirhuta","Siddham","Modi","Takri","Ahom","Dogra","Warang_Citi","Nandinagari","Zanabazar_Square","Soyombo","Pau_Cin_Hau","Bhaiksuki","Marchen","Masaram_Gondi","Gunjala_Gondi","Makasar","Cuneiform","Egyptian_Hieroglyphs","Anatolian_Hieroglyphs","Mro","Bassa_Vah","Pahawh_Hmong","Medefaidrin","Miao","Tangut","Nushu","Duployan","SignWriting","Nyiakeng_Puachue_Hmong","Wancho","Mende_Kikakui","Adlam"],"eaw":["N","Na","A","W","H","F"]}');var Qn=new ni.default(ri.default.toByteArray("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")),Sl=Math.log2||(l=>Math.log(l)/Math.LN2),Gr=l=>Sl(l)+1|0,Al=Gr(Rt(vt).categories.length-1),si=Gr(Rt(vt).combiningClasses.length-1),es=Gr(Rt(vt).scripts.length-1),Vr=Gr(Rt(vt).eaw.length-1),qr=10,kl=si+es+Vr+qr,Ol=es+Vr+qr,Il=Vr+qr;var El=(1<<Al)-1,_l=(1<<si)-1,Pl=(1<<es)-1;function yr(l){let e=Qn.get(l);return Rt(vt).categories[e>>kl&El]}function ai(l){let e=Qn.get(l);return Rt(vt).combiningClasses[e>>Ol&_l]}function ts(l){let e=Qn.get(l);return Rt(vt).scripts[e>>Il&Pl]}function rs(l){return yr(l)==="Nd"}function ns(l){let e=yr(l);return e==="Mn"||e==="Me"||e==="Mc"}var In=ot(Jn()),ga=ot(oi()),nn=ot(li()),Io=ot(Xn()),Eo=ot(Ni());function Dr(l,e,t,r){Object.defineProperty(l,e,{get:t,set:r,enumerable:true,configurable:true});}function En(l){return l&&l.__esModule?l.default:l}var Rr={};Dr(Rr,"logErrors",()=>_o);Dr(Rr,"registerFormat",()=>cr);Dr(Rr,"create",()=>ba);Dr(Rr,"defaultLanguage",()=>on);Dr(Rr,"setDefaultLanguage",()=>gc);var _o=false,Es=[];function cr(l){Es.push(l);}function ba(l,e){for(let t=0;t<Es.length;t++){let r=Es[t];if(r.probe(l)){let s=new r(new ue(l));return e?s.getFont(e):s}}throw new Error("Unknown font format")}var on="en";function gc(l="en"){on=l;}function Ae(l,e,t){if(t.get){let r=t.get;t.get=function(){let s=r.call(this);return Object.defineProperty(this,e,{value:s}),s};}else if(typeof t.value=="function"){let r=t.value;return {get(){let s=new Map;function n(...a){let f=a.length>0?a[0]:"value";if(s.has(f))return s.get(f);let u=r.apply(this,a);return s.set(f,u),u}return Object.defineProperty(this,e,{value:n}),n}}}}var bc=new P({firstCode:b,entryCount:b,idDelta:R,idRangeOffset:b}),vs=new P({startCharCode:_,endCharCode:_,glyphID:_}),yc=new P({startUnicodeValue:ut,additionalCount:L}),vc=new P({unicodeValue:ut,glyphID:b}),wc=new I(yc,_),xc=new I(vc,_),Cc=new P({varSelector:ut,defaultUVS:new E(_,wc,{type:"parent"}),nonDefaultUVS:new E(_,xc,{type:"parent"})}),Sc=new K(b,{0:{length:b,language:b,codeMap:new se(L,256)},2:{length:b,language:b,subHeaderKeys:new I(b,256),subHeaderCount:l=>Math.max.apply(Math,l.subHeaderKeys),subHeaders:new se(bc,"subHeaderCount"),glyphIndexArray:new se(b,"subHeaderCount")},4:{length:b,language:b,segCountX2:b,segCount:l=>l.segCountX2>>1,searchRange:b,entrySelector:b,rangeShift:b,endCode:new se(b,"segCount"),reservedPad:new ie(b),startCode:new se(b,"segCount"),idDelta:new se(R,"segCount"),idRangeOffset:new se(b,"segCount"),glyphIndexArray:new se(b,l=>(l.length-l._currentOffset)/2)},6:{length:b,language:b,firstCode:b,entryCount:b,glyphIndices:new se(b,"entryCount")},8:{reserved:new ie(b),length:_,language:b,is32:new se(L,8192),nGroups:_,groups:new se(vs,"nGroups")},10:{reserved:new ie(b),length:_,language:_,firstCode:_,entryCount:_,glyphIndices:new se(b,"numChars")},12:{reserved:new ie(b),length:_,language:_,nGroups:_,groups:new se(vs,"nGroups")},13:{reserved:new ie(b),length:_,language:_,nGroups:_,groups:new se(vs,"nGroups")},14:{length:_,numRecords:_,varSelectors:new se(Cc,"numRecords")}}),Ac=new P({platformID:b,encodingID:b,table:new E(_,Sc,{type:"parent",lazy:true})}),kc=new P({version:b,numSubtables:b,tables:new I(Ac,"numSubtables")}),Oc=new P({version:gt,revision:gt,checkSumAdjustment:_,magicNumber:_,flags:b,unitsPerEm:b,created:new I(gt,2),modified:new I(gt,2),xMin:R,yMin:R,xMax:R,yMax:R,macStyle:new Pe(b,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:b,fontDirectionHint:R,indexToLocFormat:R,glyphDataFormat:R}),Ic=new P({version:gt,ascent:R,descent:R,lineGap:R,advanceWidthMax:b,minLeftSideBearing:R,minRightSideBearing:R,xMaxExtent:R,caretSlopeRise:R,caretSlopeRun:R,caretOffset:R,reserved:new ie(R,4),metricDataFormat:R,numberOfMetrics:b}),Ec=new P({advance:b,bearing:R}),_c=new P({metrics:new se(Ec,l=>l.parent.hhea.numberOfMetrics),bearings:new se(R,l=>l.parent.maxp.numGlyphs-l.parent.hhea.numberOfMetrics)}),Pc=new P({version:gt,numGlyphs:b,maxPoints:b,maxContours:b,maxComponentPoints:b,maxComponentContours:b,maxZones:b,maxTwilightPoints:b,maxStorage:b,maxFunctionDefs:b,maxInstructionDefs:b,maxStackElements:b,maxSizeOfInstructions:b,maxComponentElements:b,maxComponentDepth:b});function Po(l,e,t=0){return l===1&&ji[t]?ji[t]:Rc[l][e]}var Fc=new Set(["x-mac-roman","x-mac-cyrillic","iso-8859-6","iso-8859-8"]),Tc={"x-mac-croatian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u03A9\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026 \xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uF8FF\xA9\u2044\u20AC\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7","x-mac-gaelic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u1E02\xB1\u2264\u2265\u1E03\u010A\u010B\u1E0A\u1E0B\u1E1E\u1E1F\u0120\u0121\u1E40\xE6\xF8\u1E41\u1E56\u1E57\u027C\u0192\u017F\u1E60\xAB\xBB\u2026 \xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u1E61\u1E9B\xFF\u0178\u1E6A\u20AC\u2039\u203A\u0176\u0177\u1E6B\xB7\u1EF2\u1EF3\u204A\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u2663\xD2\xDA\xDB\xD9\u0131\xDD\xFD\u0174\u0175\u1E84\u1E85\u1E80\u1E81\u1E82\u1E83","x-mac-greek":"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\u20AC\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\xB7\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026 \u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\xAD","x-mac-icelandic":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026 \xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-inuit":"\u1403\u1404\u1405\u1406\u140A\u140B\u1431\u1432\u1433\u1434\u1438\u1439\u1449\u144E\u144F\u1450\u1451\u1455\u1456\u1466\u146D\u146E\u146F\u1470\u1472\u1473\u1483\u148B\u148C\u148D\u148E\u1490\u1491\xB0\u14A1\u14A5\u14A6\u2022\xB6\u14A7\xAE\xA9\u2122\u14A8\u14AA\u14AB\u14BB\u14C2\u14C3\u14C4\u14C5\u14C7\u14C8\u14D0\u14EF\u14F0\u14F1\u14F2\u14F4\u14F5\u1505\u14D5\u14D6\u14D7\u14D8\u14DA\u14DB\u14EA\u1528\u1529\u152A\u152B\u152D\u2026 \u152E\u153E\u1555\u1556\u1557\u2013\u2014\u201C\u201D\u2018\u2019\u1558\u1559\u155A\u155D\u1546\u1547\u1548\u1549\u154B\u154C\u1550\u157F\u1580\u1581\u1582\u1583\u1584\u1585\u158F\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u15A0\u15A1\u15A2\u15A3\u15A4\u15A5\u15A6\u157C\u0141\u0142","x-mac-ce":"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026 \u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7","x-mac-romanian":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u0218\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\u0103\u0219\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026 \xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\u20AC\u2039\u203A\u021A\u021B\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7","x-mac-turkish":"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u03A9\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026 \xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uF8FF\xD2\xDA\xDB\xD9\uF8A0\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ws=new Map;function Dc(l){let e=ws.get(l);if(e)return e;let t=Tc[l];if(t){let r=new Map;for(let s=0;s<t.length;s++)r.set(t.charCodeAt(s),128+s);return ws.set(l,r),r}if(Fc.has(l)){let r=new TextDecoder(l),s=new Uint8Array(128);for(let f=0;f<128;f++)s[f]=128+f;let n=new Map,a=r.decode(s);for(let f=0;f<128;f++)n.set(a.charCodeAt(f),128+f);return ws.set(l,n),n}}var Rc=[["utf-16be","utf-16be","utf-16be","utf-16be","utf-16be","utf-16be","utf-16be"],["x-mac-roman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","x-mac-greek","x-mac-cyrillic","x-mac-symbol","x-mac-devanagari","x-mac-gurmukhi","x-mac-gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","iso-8859-11","Laotian","Georgian","Armenian","gbk","Tibetan","Mongolian","Geez","x-mac-ce","Vietnamese","Sindhi"],["ascii",null,"iso-8859-1"],["symbol","utf-16be","shift-jis","gb18030","big5","euc-kr","johab",null,null,null,"utf-16be"]],ji={15:"x-mac-icelandic",17:"x-mac-turkish",18:"x-mac-croatian",24:"x-mac-ce",25:"x-mac-ce",26:"x-mac-ce",27:"x-mac-ce",28:"x-mac-ce",30:"x-mac-icelandic",37:"x-mac-romanian",38:"x-mac-ce",39:"x-mac-ce",40:"x-mac-ce",143:"x-mac-inuit",146:"x-mac-gaelic"},Bc=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}],Ui=new P({platformID:b,encodingID:b,languageID:b,nameID:b,length:b,string:new E(b,new ne("length",l=>Po(l.platformID,l.encodingID,l.languageID)),{type:"parent",relativeTo:l=>l.parent.stringOffset,allowNull:false})}),Lc=new P({length:b,tag:new E(b,new ne("length","utf16be"),{type:"parent",relativeTo:l=>l.stringOffset})}),ln=new K(b,{0:{count:b,stringOffset:b,records:new I(Ui,"count")},1:{count:b,stringOffset:b,records:new I(Ui,"count"),langTagCount:b,langTags:new I(Lc,"langTagCount")}}),Mc=ln,_s=["copyright","fontFamily","fontSubfamily","uniqueSubfamily","fullName","version","postscriptName","trademark","manufacturer","designer","description","vendorURL","designerURL","license","licenseURL",null,"preferredFamily","preferredSubfamily","compatibleFull","sampleText","postscriptCIDFontName","wwsFamilyName","wwsSubfamilyName"];ln.process=function(l){var e={};for(let t of this.records){let r=Bc[t.platformID][t.languageID];r==null&&this.langTags!=null&&t.languageID>=32768&&(r=this.langTags[t.languageID-32768].tag),r==null&&(r=t.platformID+"-"+t.languageID);let s=t.nameID>=256?"fontFeatures":_s[t.nameID]||t.nameID;e[s]==null&&(e[s]={});let n=e[s];t.nameID>=256&&(n=n[t.nameID]||(n[t.nameID]={})),(typeof t.string=="string"||typeof n[r]!="string")&&(n[r]=t.string);}this.records=e;};ln.preEncode=function(){if(Array.isArray(this.records))return;this.version=0;let l=[];for(let e in this.records){let t=this.records[e];e!=="fontFeatures"&&(l.push({platformID:3,encodingID:1,languageID:1033,nameID:_s.indexOf(e),length:t.en.length*2,string:t.en}),e==="postscriptName"&&l.push({platformID:1,encodingID:0,languageID:0,nameID:_s.indexOf(e),length:t.en.length,string:t.en}));}this.records=l,this.count=l.length,this.stringOffset=ln.size(this,null,false);};var Fo=new K(b,{header:{xAvgCharWidth:R,usWeightClass:b,usWidthClass:b,fsType:new Pe(b,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:R,ySubscriptYSize:R,ySubscriptXOffset:R,ySubscriptYOffset:R,ySuperscriptXSize:R,ySuperscriptYSize:R,ySuperscriptXOffset:R,ySuperscriptYOffset:R,yStrikeoutSize:R,yStrikeoutPosition:R,sFamilyClass:R,panose:new I(L,10),ulCharRange:new I(_,4),vendorID:new ne(4),fsSelection:new Pe(b,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:b,usLastCharIndex:b},0:{},1:{typoAscender:R,typoDescender:R,typoLineGap:R,winAscent:b,winDescent:b,codePageRange:new I(_,2)},2:{typoAscender:R,typoDescender:R,typoLineGap:R,winAscent:b,winDescent:b,codePageRange:new I(_,2),xHeight:R,capHeight:R,defaultChar:b,breakChar:b,maxContent:b},5:{typoAscender:R,typoDescender:R,typoLineGap:R,winAscent:b,winDescent:b,codePageRange:new I(_,2),xHeight:R,capHeight:R,defaultChar:b,breakChar:b,maxContent:b,usLowerOpticalPointSize:b,usUpperOpticalPointSize:b}}),xs=Fo.versions;xs[3]=xs[4]=xs[2];var $c=Fo,Nc=new K(fe,{header:{italicAngle:fe,underlinePosition:R,underlineThickness:R,isFixedPitch:_,minMemType42:_,maxMemType42:_,minMemType1:_,maxMemType1:_},1:{},2:{numberOfGlyphs:b,glyphNameIndex:new I(b,"numberOfGlyphs"),names:new I(new ne(L))},2.5:{numberOfGlyphs:b,offsets:new I(L,"numberOfGlyphs")},3:{},4:{map:new I(_,l=>l.parent.maxp.numGlyphs)}}),jc=new P({controlValues:new I(R)}),Uc=new P({instructions:new I(L)}),ya=new K("head.indexToLocFormat",{0:{offsets:new I(b)},1:{offsets:new I(_)}});ya.process=function(){if(this.version===0&&!this._processed){for(let l=0;l<this.offsets.length;l++)this.offsets[l]<<=1;this._processed=true;}};ya.preEncode=function(){if(this.version===0&&this._processed!==false){for(let l=0;l<this.offsets.length;l++)this.offsets[l]>>>=1;this._processed=false;}};var zc=ya,Gc=new P({controlValueProgram:new I(L)}),Vc=new I(new Re),je=class{getCFFVersion(e){for(;e&&!e.hdrSize;)e=e.parent;return e?e.version:-1}decode(e,t){let s=this.getCFFVersion(t)>=2?e.readUInt32BE():e.readUInt16BE();if(s===0)return [];let n=e.readUInt8(),a;if(n===1)a=L;else if(n===2)a=b;else if(n===3)a=ut;else if(n===4)a=_;else throw new Error(`Bad offset size in CFFIndex: ${n} ${e.pos}`);let f=[],u=e.pos+(s+1)*n-1,i=a.decode(e);for(let o=0;o<s;o++){let c=a.decode(e);if(this.type!=null){let h=e.pos;e.pos=u+i,t.length=c-i,f.push(this.type.decode(e,t)),e.pos=h;}else f.push({offset:u+i,length:c-i});i=c;}return e.pos=u+i,f}size(e,t){let r=2;if(e.length===0)return r;let s=this.type||new Re,n=1;for(let f=0;f<e.length;f++){let u=e[f];n+=s.size(u,t);}let a;if(n<=255)a=L;else if(n<=65535)a=b;else if(n<=16777215)a=ut;else if(n<=4294967295)a=_;else throw new Error("Bad offset in CFFIndex");return r+=1+a.size()*(e.length+1),r+=n-1,r}encode(e,t,r){if(e.writeUInt16BE(t.length),t.length===0)return;let s=this.type||new Re,n=[],a=1;for(let u of t){let i=s.size(u,r);n.push(i),a+=i;}let f;if(a<=255)f=L;else if(a<=65535)f=b;else if(a<=16777215)f=ut;else if(a<=4294967295)f=_;else throw new Error("Bad offset in CFFIndex");e.writeUInt8(f.size()),a=1,f.encode(e,a);for(let u of n)a+=u,f.encode(e,a);for(let u of t)s.encode(e,u,r);}constructor(e){this.type=e;}},wr=15,zi=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],Gi={".":10,E:11,"E-":12,"-":14},Sr=class{static decode(e,t){if(32<=t&&t<=246)return t-139;if(247<=t&&t<=250)return (t-247)*256+e.readUInt8()+108;if(251<=t&&t<=254)return -(t-251)*256-e.readUInt8()-108;if(t===28)return e.readInt16BE();if(t===29)return e.readInt32BE();if(t===30){let r="";for(;;){let s=e.readUInt8(),n=s>>4;if(n===wr)break;r+=zi[n];let a=s&15;if(a===wr)break;r+=zi[a];}return parseFloat(r)}return null}static size(e){if(e.forceLarge&&(e=32768),(e|0)!==e){let t=""+e;return 1+Math.ceil((t.length+1)/2)}else return -107<=e&&e<=107?1:108<=e&&e<=1131||-1131<=e&&e<=-108?2:-32768<=e&&e<=32767?3:5}static encode(e,t){let r=Number(t);if(t.forceLarge)return e.writeUInt8(29),e.writeInt32BE(r);if((r|0)!==r){e.writeUInt8(30);let n=""+r;for(let a=0;a<n.length;a+=2){let f=n[a],u=Gi[f]||+f;if(a===n.length-1)var s=wr;else {let i=n[a+1];var s=Gi[i]||+i;}e.writeUInt8(u<<4|s&15);}if(s!==wr)return e.writeUInt8(wr<<4)}else return -107<=r&&r<=107?e.writeUInt8(r+139):108<=r&&r<=1131?(r-=108,e.writeUInt8((r>>8)+247),e.writeUInt8(r&255)):-1131<=r&&r<=-108?(r=-r-108,e.writeUInt8((r>>8)+251),e.writeUInt8(r&255)):-32768<=r&&r<=32767?(e.writeUInt8(28),e.writeInt16BE(r)):(e.writeUInt8(29),e.writeInt32BE(r))}},nr=class{decodeOperands(e,t,r,s){if(Array.isArray(e))return s.map((n,a)=>this.decodeOperands(e[a],t,r,[n]));if(e.decode!=null)return e.decode(t,r,s);switch(e){case "number":case "offset":case "sid":return s[0];case "boolean":return !!s[0];default:return s}}encodeOperands(e,t,r,s){return Array.isArray(e)?s.map((n,a)=>this.encodeOperands(e[a],t,r,n)[0]):e.encode!=null?e.encode(t,s,r):typeof s=="number"?[s]:typeof s=="boolean"?[+s]:Array.isArray(s)?s:[s]}decode(e,t){let r=e.pos+t.length,s={},n=[];Object.defineProperties(s,{parent:{value:t},_startOffset:{value:e.pos}});for(let a in this.fields){let f=this.fields[a];s[f[1]]=f[3];}for(;e.pos<r;){let a=e.readUInt8();if(a<28){a===12&&(a=a<<8|e.readUInt8());let f=this.fields[a];if(!f)throw new Error(`Unknown operator ${a}`);let u=this.decodeOperands(f[2],e,s,n);u!=null&&(u instanceof bt?Object.defineProperty(s,f[1],u):s[f[1]]=u),n=[];}else n.push(Sr.decode(e,a));}return s}size(e,t,r=true){let s={parent:t,val:e,pointerSize:0,startOffset:t.startOffset||0},n=0;for(let a in this.fields){let f=this.fields[a],u=e[f[1]];if(u==null||(0, Is.default)(u,f[3]))continue;let i=this.encodeOperands(f[2],null,s,u);for(let c of i)n+=Sr.size(c);let o=Array.isArray(f[0])?f[0]:[f[0]];n+=o.length;}return r&&(n+=s.pointerSize),n}encode(e,t,r){let s={pointers:[],startOffset:e.pos,parent:r,val:t,pointerSize:0};s.pointerOffset=e.pos+this.size(t,s,false);for(let a of this.ops){let f=t[a[1]];if(f==null||(0, Is.default)(f,a[3]))continue;let u=this.encodeOperands(a[2],e,s,f);for(let o of u)Sr.encode(e,o);let i=Array.isArray(a[0])?a[0]:[a[0]];for(let o of i)e.writeUInt8(o);}let n=0;for(;n<s.pointers.length;){let a=s.pointers[n++];a.type.encode(e,a.val,a.parent);}}constructor(e=[]){this.ops=e,this.fields={};for(let t of e){let r=Array.isArray(t[0])?t[0][0]<<8|t[0][1]:t[0];this.fields[r]=t;}}},$e=class extends E{decode(e,t,r){return this.offsetType={decode:()=>r[0]},super.decode(e,t,r)}encode(e,t,r){if(!e)return this.offsetType={size:()=>0},this.size(t,r),[new cn(0)];let s=null;return this.offsetType={encode:(n,a)=>s=a},super.encode(e,t,r),[new cn(s)]}constructor(e,t={}){t.type==null&&(t.type="global"),super(null,e,t);}},cn=class{valueOf(){return this.val}constructor(e){this.val=e,this.forceLarge=true;}},Ps=class{static decode(e,t,r){let s=r.pop();for(;r.length>s;)r.pop();}},Fs=new nr([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",false],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",Ps,null],[19,"Subrs",new $e(new je,{type:"local"}),null]]),sn=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],To=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],qc=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],Do=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],Hc=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],Wc=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],Ro=new P({reserved:new ie(b),reqFeatureIndex:b,featureCount:b,featureIndexes:new I(b,"featureCount")}),Xc=new P({tag:new ne(4),langSys:new E(b,Ro,{type:"parent"})}),Yc=new P({defaultLangSys:new E(b,Ro),count:b,langSysRecords:new I(Xc,"count")}),Zc=new P({tag:new ne(4),script:new E(b,Yc,{type:"parent"})}),Bo=new I(Zc,b),Kc=new P({version:b,nameID:b}),Lo=new P({featureParams:new E(b,Kc),lookupCount:b,lookupListIndexes:new I(b,"lookupCount")}),Jc=new P({tag:new ne(4),feature:new E(b,Lo,{type:"parent"})}),Mo=new I(Jc,b),Qc=new P({markAttachmentType:L,flags:new Pe(L,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])});function un(l){let e=new P({lookupType:b,flags:Qc,subTableCount:b,subTables:new I(new E(b,l),"subTableCount"),markFilteringSet:new yt(b,t=>t.flags.flags.useMarkFilteringSet)});return new se(new E(b,e),b)}var eu=new P({start:b,end:b,startCoverageIndex:b}),ae=new K(b,{1:{glyphCount:b,glyphs:new I(b,"glyphCount")},2:{rangeCount:b,rangeRecords:new I(eu,"rangeCount")}}),tu=new P({start:b,end:b,class:b}),kt=new K(b,{1:{startGlyph:b,glyphCount:b,classValueArray:new I(b,"glyphCount")},2:{classRangeCount:b,classRangeRecord:new I(tu,"classRangeCount")}}),At=new P({a:b,b,deltaFormat:b}),Br=new P({sequenceIndex:b,lookupListIndex:b}),ru=new P({glyphCount:b,lookupCount:b,input:new I(b,l=>l.glyphCount-1),lookupRecords:new I(Br,"lookupCount")}),nu=new I(new E(b,ru),b),su=new P({glyphCount:b,lookupCount:b,classes:new I(b,l=>l.glyphCount-1),lookupRecords:new I(Br,"lookupCount")}),au=new I(new E(b,su),b),$o=new K(b,{1:{coverage:new E(b,ae),ruleSetCount:b,ruleSets:new I(new E(b,nu),"ruleSetCount")},2:{coverage:new E(b,ae),classDef:new E(b,kt),classSetCnt:b,classSet:new I(new E(b,au),"classSetCnt")},3:{glyphCount:b,lookupCount:b,coverages:new I(new E(b,ae),"glyphCount"),lookupRecords:new I(Br,"lookupCount")}}),iu=new P({backtrackGlyphCount:b,backtrack:new I(b,"backtrackGlyphCount"),inputGlyphCount:b,input:new I(b,l=>l.inputGlyphCount-1),lookaheadGlyphCount:b,lookahead:new I(b,"lookaheadGlyphCount"),lookupCount:b,lookupRecords:new I(Br,"lookupCount")}),Vi=new I(new E(b,iu),b),No=new K(b,{1:{coverage:new E(b,ae),chainCount:b,chainRuleSets:new I(new E(b,Vi),"chainCount")},2:{coverage:new E(b,ae),backtrackClassDef:new E(b,kt),inputClassDef:new E(b,kt),lookaheadClassDef:new E(b,kt),chainCount:b,chainClassSet:new I(new E(b,Vi),"chainCount")},3:{backtrackGlyphCount:b,backtrackCoverage:new I(new E(b,ae),"backtrackGlyphCount"),inputGlyphCount:b,inputCoverage:new I(new E(b,ae),"inputGlyphCount"),lookaheadGlyphCount:b,lookaheadCoverage:new I(new E(b,ae),"lookaheadGlyphCount"),lookupCount:b,lookupRecords:new I(Br,"lookupCount")}}),Ar=new Xe(16,"BE",14),ou=new P({startCoord:Ar,peakCoord:Ar,endCoord:Ar}),lu=new P({axisCount:b,regionCount:b,variationRegions:new I(new I(ou,"axisCount"),"regionCount")}),cu=new P({shortDeltas:new I(R,l=>l.parent.shortDeltaCount),regionDeltas:new I(be,l=>l.parent.regionIndexCount-l.parent.shortDeltaCount),deltas:l=>l.shortDeltas.concat(l.regionDeltas)}),uu=new P({itemCount:b,shortDeltaCount:b,regionIndexCount:b,regionIndexes:new I(b,"regionIndexCount"),deltaSets:new I(cu,"itemCount")}),_n=new P({format:b,variationRegionList:new E(_,lu),variationDataCount:b,itemVariationData:new I(new E(_,uu),"variationDataCount")}),fu=new K(b,{1:{axisIndex:b,axisIndex:b,filterRangeMinValue:Ar,filterRangeMaxValue:Ar}}),hu=new P({conditionCount:b,conditionTable:new I(new E(_,fu),"conditionCount")}),du=new P({featureIndex:b,alternateFeatureTable:new E(_,Lo,{type:"parent"})}),pu=new P({version:fe,substitutionCount:b,substitutions:new I(du,"substitutionCount")}),mu=new P({conditionSet:new E(_,hu,{type:"parent"}),featureTableSubstitution:new E(_,pu,{type:"parent"})}),jo=new P({majorVersion:b,minorVersion:b,featureVariationRecordCount:_,featureVariationRecords:new I(mu,"featureVariationRecordCount")}),fn=class{decode(e,t,r){return this.predefinedOps[r[0]]?this.predefinedOps[r[0]]:this.type.decode(e,t,r)}size(e,t){return this.type.size(e,t)}encode(e,t,r){let s=this.predefinedOps.indexOf(t);return s!==-1?s:this.type.encode(e,t,r)}constructor(e,t){this.predefinedOps=e,this.type=t;}},Ts=class extends Q{decode(e){return L.decode(e)&127}constructor(){super("UInt8");}},Uo=new P({first:b,nLeft:L}),gu=new P({first:b,nLeft:b}),bu=new K(new Ts,{0:{nCodes:L,codes:new I(L,"nCodes")},1:{nRanges:L,ranges:new I(Uo,"nRanges")}}),yu=new fn([To,qc],new $e(bu,{lazy:true})),hn=class extends I{decode(e,t){let r=Oe(this.length,e,t),s=0,n=[];for(;s<r;){let a=this.type.decode(e,t);a.offset=s,s+=a.nLeft+1,n.push(a);}return n}},vu=new K(L,{0:{glyphs:new I(b,l=>l.parent.CharStrings.length-1)},1:{ranges:new hn(Uo,l=>l.parent.CharStrings.length-1)},2:{ranges:new hn(gu,l=>l.parent.CharStrings.length-1)}}),wu=new fn([Do,Hc,Wc],new $e(vu,{lazy:true})),xu=new P({first:b,fd:L}),Cu=new P({first:_,fd:b}),zo=new K(L,{0:{fds:new I(L,l=>l.parent.CharStrings.length)},3:{nRanges:b,ranges:new I(xu,"nRanges"),sentinel:b},4:{nRanges:_,ranges:new I(Cu,"nRanges"),sentinel:_}}),Cs=new $e(Fs),dn=class{decode(e,t,r){return t.length=r[0],Cs.decode(e,t,[r[1]])}size(e,t){return [Fs.size(e,t,false),Cs.size(e,t)[0]]}encode(e,t,r){return [Fs.size(t,r,false),Cs.encode(e,t,r)[0]]}},Go=new nr([[18,"Private",new dn,null],[[12,38],"FontName","sid",null],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[[12,5],"PaintType","number",0]]),Su=new nr([[[12,30],"ROS",["sid","sid","number"],null],[0,"version","sid",null],[1,"Notice","sid",null],[[12,0],"Copyright","sid",null],[2,"FullName","sid",null],[3,"FamilyName","sid",null],[4,"Weight","sid",null],[[12,1],"isFixedPitch","boolean",false],[[12,2],"ItalicAngle","number",0],[[12,3],"UnderlinePosition","number",-100],[[12,4],"UnderlineThickness","number",50],[[12,5],"PaintType","number",0],[[12,6],"CharstringType","number",2],[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[13,"UniqueID","number",null],[5,"FontBBox","array",[0,0,0,0]],[[12,8],"StrokeWidth","number",0],[14,"XUID","array",null],[15,"charset",wu,Do],[16,"Encoding",yu,To],[17,"CharStrings",new $e(new je),null],[18,"Private",new dn,null],[[12,20],"SyntheticBase","number",null],[[12,21],"PostScript","sid",null],[[12,22],"BaseFontName","sid",null],[[12,23],"BaseFontBlend","delta",null],[[12,31],"CIDFontVersion","number",0],[[12,32],"CIDFontRevision","number",0],[[12,33],"CIDFontType","number",0],[[12,34],"CIDCount","number",8720],[[12,35],"UIDBase","number",null],[[12,37],"FDSelect",new $e(zo),null],[[12,36],"FDArray",new $e(new je(Go)),null],[[12,38],"FontName","sid",null]]),Au=new P({length:b,itemVariationStore:_n}),ku=new nr([[[12,7],"FontMatrix","array",[.001,0,0,.001,0,0]],[17,"CharStrings",new $e(new je),null],[[12,37],"FDSelect",new $e(zo),null],[[12,36],"FDArray",new $e(new je(Go)),null],[24,"vstore",new $e(Au),null],[25,"maxstack","number",193]]),Ou=new K(Ra,{1:{hdrSize:L,offSize:L,nameIndex:new je(new ne("length")),topDictIndex:new je(Su),stringIndex:new je(new ne("length")),globalSubrIndex:new je},2:{hdrSize:L,length:b,topDict:ku,globalSubrIndex:new je}}),Vo=Ou,Ds=class l{static decode(e){return new l(e)}decode(){this.stream.pos;let t=Vo.decode(this.stream);for(let r in t){let s=t[r];this[r]=s;}if(this.version<2){if(this.topDictIndex.length!==1)throw new Error("Only a single font is allowed in CFF");this.topDict=this.topDictIndex[0];}return this.isCIDFont=this.topDict.ROS!=null,this}string(e){return this.version>=2?null:e<sn.length?sn[e]:this.stringIndex[e-sn.length]}get postscriptName(){return this.version<2?this.nameIndex[0]:null}get fullName(){return this.string(this.topDict.FullName)}get familyName(){return this.string(this.topDict.FamilyName)}getCharString(e){return this.stream.pos=this.topDict.CharStrings[e].offset,this.stream.readBuffer(this.topDict.CharStrings[e].length)}getGlyphName(e){if(this.version>=2||this.isCIDFont)return null;let{charset:t}=this.topDict;if(Array.isArray(t))return t[e];if(e===0)return ".notdef";switch(e-=1,t.version){case 0:return this.string(t.glyphs[e]);case 1:case 2:for(let r=0;r<t.ranges.length;r++){let s=t.ranges[r];if(s.offset<=e&&e<=s.offset+s.nLeft)return this.string(s.first+(e-s.offset))}break}return null}fdForGlyph(e){if(!this.topDict.FDSelect)return null;switch(this.topDict.FDSelect.version){case 0:return this.topDict.FDSelect.fds[e];case 3:case 4:let{ranges:t}=this.topDict.FDSelect,r=0,s=t.length-1;for(;r<=s;){let n=r+s>>1;if(e<t[n].first)s=n-1;else if(n<s&&e>=t[n+1].first)r=n+1;else return t[n].fd}default:throw new Error(`Unknown FDSelect version: ${this.topDict.FDSelect.version}`)}}privateDictForGlyph(e){if(this.topDict.FDSelect){let t=this.fdForGlyph(e);return this.topDict.FDArray[t]?this.topDict.FDArray[t].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private}constructor(e){this.stream=e,this.decode();}},qo=Ds,Iu=new P({glyphIndex:b,vertOriginY:R}),Eu=new P({majorVersion:b,minorVersion:b,defaultVertOriginY:R,numVertOriginYMetrics:b,metrics:new I(Iu,"numVertOriginYMetrics")}),tr=new P({height:L,width:L,horiBearingX:be,horiBearingY:be,horiAdvance:L,vertBearingX:be,vertBearingY:be,vertAdvance:L}),Kr=new P({height:L,width:L,bearingX:be,bearingY:be,advance:L}),qi=new P({glyph:b,xOffset:be,yOffset:be}),pn=class{},kr=class{};new K("version",{1:{metrics:Kr,data:pn},2:{metrics:Kr,data:kr},5:{data:kr},6:{metrics:tr,data:pn},7:{metrics:tr,data:kr},8:{metrics:Kr,pad:new ie(L),numComponents:b,components:new I(qi,"numComponents")},9:{metrics:tr,pad:new ie(L),numComponents:b,components:new I(qi,"numComponents")},17:{metrics:Kr,dataLen:_,data:new Re("dataLen")},18:{metrics:tr,dataLen:_,data:new Re("dataLen")},19:{dataLen:_,data:new Re("dataLen")}});var Hi=new P({ascender:be,descender:be,widthMax:L,caretSlopeNumerator:be,caretSlopeDenominator:be,caretOffset:be,minOriginSB:be,minAdvanceSB:be,maxBeforeBL:be,minAfterBL:be,pad:new ie(be,2)}),_u=new P({glyphCode:b,offset:b}),Pu=new K(b,{header:{imageFormat:b,imageDataOffset:_},1:{offsetArray:new I(_,l=>l.parent.lastGlyphIndex-l.parent.firstGlyphIndex+1)},2:{imageSize:_,bigMetrics:tr},3:{offsetArray:new I(b,l=>l.parent.lastGlyphIndex-l.parent.firstGlyphIndex+1)},4:{numGlyphs:_,glyphArray:new I(_u,l=>l.numGlyphs+1)},5:{imageSize:_,bigMetrics:tr,numGlyphs:_,glyphCodeArray:new I(b,"numGlyphs")}}),Fu=new P({firstGlyphIndex:b,lastGlyphIndex:b,subtable:new E(_,Pu)}),Tu=new P({indexSubTableArray:new E(_,new I(Fu,1),{type:"parent"}),indexTablesSize:_,numberOfIndexSubTables:_,colorRef:_,hori:Hi,vert:Hi,startGlyphIndex:b,endGlyphIndex:b,ppemX:L,ppemY:L,bitDepth:L,flags:new Pe(L,["horizontal","vertical"])}),Du=new P({version:_,numSizes:_,sizes:new I(Tu,"numSizes")}),Ru=new P({ppem:b,resolution:b,imageOffsets:new I(new E(_,"void"),l=>l.parent.parent.maxp.numGlyphs+1)}),Bu=new P({version:b,flags:new Pe(b,["renderOutlines"]),numImgTables:_,imageTables:new I(new E(_,Ru),"numImgTables")}),Lu=new P({gid:b,paletteIndex:b}),Mu=new P({gid:b,firstLayerIndex:b,numLayers:b}),$u=new P({version:b,numBaseGlyphRecords:b,baseGlyphRecord:new E(_,new I(Mu,"numBaseGlyphRecords")),layerRecords:new E(_,new I(Lu,"numLayerRecords"),{lazy:true}),numLayerRecords:b}),Nu=new P({blue:L,green:L,red:L,alpha:L}),ju=new K(b,{header:{numPaletteEntries:b,numPalettes:b,numColorRecords:b,colorRecords:new E(_,new I(Nu,"numColorRecords")),colorRecordIndices:new I(b,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new E(_,new I(_,"numPalettes")),offsetPaletteLabelArray:new E(_,new I(b,"numPalettes")),offsetPaletteEntryLabelArray:new E(_,new I(b,"numPaletteEntries"))}}),Er=new K(b,{1:{coordinate:R},2:{coordinate:R,referenceGlyph:b,baseCoordPoint:b},3:{coordinate:R,deviceTable:new E(b,At)}}),Uu=new P({defaultIndex:b,baseCoordCount:b,baseCoords:new I(new E(b,Er),"baseCoordCount")}),zu=new P({tag:new ne(4),minCoord:new E(b,Er,{type:"parent"}),maxCoord:new E(b,Er,{type:"parent"})}),Ho=new P({minCoord:new E(b,Er),maxCoord:new E(b,Er),featMinMaxCount:b,featMinMaxRecords:new I(zu,"featMinMaxCount")}),Gu=new P({tag:new ne(4),minMax:new E(b,Ho,{type:"parent"})}),Vu=new P({baseValues:new E(b,Uu),defaultMinMax:new E(b,Ho),baseLangSysCount:b,baseLangSysRecords:new I(Gu,"baseLangSysCount")}),qu=new P({tag:new ne(4),script:new E(b,Vu,{type:"parent"})}),Hu=new I(qu,b),Wu=new I(new ne(4),b),Wi=new P({baseTagList:new E(b,Wu),baseScriptList:new E(b,Hu)}),Xu=new K(_,{header:{horizAxis:new E(b,Wi),vertAxis:new E(b,Wi)},65536:{},65537:{itemVariationStore:new E(_,_n)}}),Yu=new I(b,b),Zu=new P({coverage:new E(b,ae),glyphCount:b,attachPoints:new I(new E(b,Yu),"glyphCount")}),Ku=new K(b,{1:{coordinate:R},2:{caretValuePoint:b},3:{coordinate:R,deviceTable:new E(b,At)}}),Ju=new I(new E(b,Ku),b),Qu=new P({coverage:new E(b,ae),ligGlyphCount:b,ligGlyphs:new I(new E(b,Ju),"ligGlyphCount")}),Xi=new P({markSetTableFormat:b,markSetCount:b,coverage:new I(new E(_,ae),"markSetCount")}),ef=new K(_,{header:{glyphClassDef:new E(b,kt),attachList:new E(b,Zu),ligCaretList:new E(b,Qu),markAttachClassDef:new E(b,kt)},65536:{},65538:{markGlyphSetsDef:new E(b,Xi)},65539:{markGlyphSetsDef:new E(b,Xi),itemVariationStore:new E(_,_n)}}),Qt=new Pe(b,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),tf={xPlacement:R,yPlacement:R,xAdvance:R,yAdvance:R,xPlaDevice:new E(b,At,{type:"global",relativeTo:l=>l.rel}),yPlaDevice:new E(b,At,{type:"global",relativeTo:l=>l.rel}),xAdvDevice:new E(b,At,{type:"global",relativeTo:l=>l.rel}),yAdvDevice:new E(b,At,{type:"global",relativeTo:l=>l.rel})},It=class{buildStruct(e){let t=e;for(;!t[this.key]&&t.parent;)t=t.parent;if(!t[this.key])return;let r={};r.rel=()=>t._startOffset;let s=t[this.key];for(let n in s)s[n]&&(r[n]=tf[n]);return new P(r)}size(e,t){return this.buildStruct(t).size(e,t)}decode(e,t){let r=this.buildStruct(t).decode(e,t);return delete r.rel,r}constructor(e="valueFormat"){this.key=e;}},rf=new P({secondGlyph:b,value1:new It("valueFormat1"),value2:new It("valueFormat2")}),nf=new I(rf,b),sf=new P({value1:new It("valueFormat1"),value2:new It("valueFormat2")}),_r=new K(b,{1:{xCoordinate:R,yCoordinate:R},2:{xCoordinate:R,yCoordinate:R,anchorPoint:b},3:{xCoordinate:R,yCoordinate:R,xDeviceTable:new E(b,At),yDeviceTable:new E(b,At)}}),af=new P({entryAnchor:new E(b,_r,{type:"parent"}),exitAnchor:new E(b,_r,{type:"parent"})}),of=new P({class:b,markAnchor:new E(b,_r,{type:"parent"})}),Ss=new I(of,b),lf=new I(new E(b,_r),l=>l.parent.classCount),Yi=new I(lf,b),cf=new I(new E(b,_r),l=>l.parent.parent.classCount),uf=new I(cf,b),ff=new I(new E(b,uf),b),Pr=new K("lookupType",{1:new K(b,{1:{coverage:new E(b,ae),valueFormat:Qt,value:new It},2:{coverage:new E(b,ae),valueFormat:Qt,valueCount:b,values:new se(new It,"valueCount")}}),2:new K(b,{1:{coverage:new E(b,ae),valueFormat1:Qt,valueFormat2:Qt,pairSetCount:b,pairSets:new se(new E(b,nf),"pairSetCount")},2:{coverage:new E(b,ae),valueFormat1:Qt,valueFormat2:Qt,classDef1:new E(b,kt),classDef2:new E(b,kt),class1Count:b,class2Count:b,classRecords:new se(new se(sf,"class2Count"),"class1Count")}}),3:{format:b,coverage:new E(b,ae),entryExitCount:b,entryExitRecords:new I(af,"entryExitCount")},4:{format:b,markCoverage:new E(b,ae),baseCoverage:new E(b,ae),classCount:b,markArray:new E(b,Ss),baseArray:new E(b,Yi)},5:{format:b,markCoverage:new E(b,ae),ligatureCoverage:new E(b,ae),classCount:b,markArray:new E(b,Ss),ligatureArray:new E(b,ff)},6:{format:b,mark1Coverage:new E(b,ae),mark2Coverage:new E(b,ae),classCount:b,mark1Array:new E(b,Ss),mark2Array:new E(b,Yi)},7:$o,8:No,9:{posFormat:b,lookupType:b,extension:new E(_,null)}});Pr.versions[9].extension.type=Pr;var hf=new K(_,{header:{scriptList:new E(b,Bo),featureList:new E(b,Mo),lookupList:new E(b,new un(Pr))},65536:{},65537:{featureVariations:new E(_,jo)}}),Wo=new I(b,b),df=Wo,pf=new P({glyph:b,compCount:b,components:new I(b,l=>l.compCount-1)}),mf=new I(new E(b,pf),b),Rs=new K("lookupType",{1:new K(b,{1:{coverage:new E(b,ae),deltaGlyphID:R},2:{coverage:new E(b,ae),glyphCount:b,substitute:new se(b,"glyphCount")}}),2:{substFormat:b,coverage:new E(b,ae),count:b,sequences:new se(new E(b,Wo),"count")},3:{substFormat:b,coverage:new E(b,ae),count:b,alternateSet:new se(new E(b,df),"count")},4:{substFormat:b,coverage:new E(b,ae),count:b,ligatureSets:new se(new E(b,mf),"count")},5:$o,6:No,7:{substFormat:b,lookupType:b,extension:new E(_,null)},8:{substFormat:b,coverage:new E(b,ae),backtrackCoverage:new I(new E(b,ae),"backtrackGlyphCount"),lookaheadGlyphCount:b,lookaheadCoverage:new I(new E(b,ae),"lookaheadGlyphCount"),glyphCount:b,substitutes:new I(b,"glyphCount")}});Rs.versions[7].extension.type=Rs;var gf=new K(_,{header:{scriptList:new E(b,Bo),featureList:new E(b,Mo),lookupList:new E(b,new un(Rs))},65536:{},65537:{featureVariations:new E(_,jo)}}),Ct=new I(b,b),bf=new P({shrinkageEnableGSUB:new E(b,Ct),shrinkageDisableGSUB:new E(b,Ct),shrinkageEnableGPOS:new E(b,Ct),shrinkageDisableGPOS:new E(b,Ct),shrinkageJstfMax:new E(b,new un(Pr)),extensionEnableGSUB:new E(b,Ct),extensionDisableGSUB:new E(b,Ct),extensionEnableGPOS:new E(b,Ct),extensionDisableGPOS:new E(b,Ct),extensionJstfMax:new E(b,new un(Pr))}),Xo=new I(new E(b,bf),b),yf=new P({tag:new ne(4),jstfLangSys:new E(b,Xo)}),vf=new P({extenderGlyphs:new E(b,new I(b,b)),defaultLangSys:new E(b,Xo),langSysCount:b,langSysRecords:new I(yf,"langSysCount")}),wf=new P({tag:new ne(4),script:new E(b,vf,{type:"parent"})}),xf=new P({version:_,scriptCount:b,scriptList:new I(wf,"scriptCount")}),Bs=class{decode(e,t){switch(this.size(0,t)){case 1:return e.readUInt8();case 2:return e.readUInt16BE();case 3:return e.readUInt24BE();case 4:return e.readUInt32BE()}}size(e,t){return Oe(this._size,null,t)}constructor(e){this._size=e;}},Cf=new P({entry:new Bs(l=>((l.parent.entryFormat&48)>>4)+1),outerIndex:l=>l.entry>>(l.parent.entryFormat&15)+1,innerIndex:l=>l.entry&(1<<(l.parent.entryFormat&15)+1)-1}),As=new P({entryFormat:b,mapCount:b,mapData:new I(Cf,"mapCount")}),Sf=new P({majorVersion:b,minorVersion:b,itemVariationStore:new E(_,_n),advanceWidthMapping:new E(_,As),LSBMapping:new E(_,As),RSBMapping:new E(_,As)}),Af=new P({format:_,length:_,offset:_}),kf=new P({reserved:new ie(b,2),cbSignature:_,signature:new Re("cbSignature")}),Of=new P({ulVersion:_,usNumSigs:b,usFlag:b,signatures:new I(Af,"usNumSigs"),signatureBlocks:new I(kf,"usNumSigs")}),If=new P({rangeMaxPPEM:b,rangeGaspBehavior:new Pe(b,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),Ef=new P({version:b,numRanges:b,gaspRanges:new I(If,"numRanges")}),_f=new P({pixelSize:L,maximumWidth:L,widths:new I(L,l=>l.parent.parent.maxp.numGlyphs)}),Pf=new P({version:b,numRecords:R,sizeDeviceRecord:gt,records:new I(_f,"numRecords")}),Ff=new P({left:b,right:b,value:R}),Zi=new P({firstGlyph:b,nGlyphs:b,offsets:new I(b,"nGlyphs"),max:l=>l.offsets.length&&Math.max.apply(Math,l.offsets)}),Tf=new P({off:l=>l._startOffset-l.parent.parent._startOffset,len:l=>((l.parent.leftTable.max-l.off)/l.parent.rowWidth+1)*(l.parent.rowWidth/2),values:new se(R,"len")}),Ki=new K("format",{0:{nPairs:b,searchRange:b,entrySelector:b,rangeShift:b,pairs:new I(Ff,"nPairs")},2:{rowWidth:b,leftTable:new E(b,Zi,{type:"parent"}),rightTable:new E(b,Zi,{type:"parent"}),array:new E(b,Tf,{type:"parent"})},3:{glyphCount:b,kernValueCount:L,leftClassCount:L,rightClassCount:L,flags:L,kernValue:new I(R,"kernValueCount"),leftClass:new I(L,"glyphCount"),rightClass:new I(L,"glyphCount"),kernIndex:new I(L,l=>l.leftClassCount*l.rightClassCount)}}),Ji=new K("version",{0:{subVersion:b,length:b,format:L,coverage:new Pe(L,["horizontal","minimum","crossStream","override"]),subtable:Ki,padding:new ie(L,l=>l.length-l._currentOffset)},1:{length:_,coverage:new Pe(L,[null,null,null,null,null,"variation","crossStream","vertical"]),format:L,tupleIndex:b,subtable:Ki,padding:new ie(L,l=>l.length-l._currentOffset)}}),Df=new K(b,{0:{nTables:b,tables:new I(Ji,"nTables")},1:{reserved:new ie(b),nTables:_,tables:new I(Ji,"nTables")}}),Rf=new P({version:b,numGlyphs:b,yPels:new I(L,"numGlyphs")}),Bf=new P({version:b,fontNumber:_,pitch:b,xHeight:b,style:b,typeFamily:b,capHeight:b,symbolSet:b,typeface:new ne(16),characterComplement:new ne(8),fileName:new ne(6),strokeWeight:new ne(1),widthType:new ne(1),serifStyle:L,reserved:new ie(L)}),Lf=new P({bCharSet:L,xRatio:L,yStartRatio:L,yEndRatio:L}),Mf=new P({yPelHeight:b,yMax:R,yMin:R}),$f=new P({recs:b,startsz:L,endsz:L,entries:new I(Mf,"recs")}),Nf=new P({version:b,numRecs:b,numRatios:b,ratioRanges:new I(Lf,"numRatios"),offsets:new I(b,"numRatios"),groups:new I($f,"numRecs")}),jf=new P({version:b,ascent:R,descent:R,lineGap:R,advanceHeightMax:R,minTopSideBearing:R,minBottomSideBearing:R,yMaxExtent:R,caretSlopeRise:R,caretSlopeRun:R,caretOffset:R,reserved:new ie(R,4),metricDataFormat:R,numberOfMetrics:b}),Uf=new P({advance:b,bearing:R}),zf=new P({metrics:new se(Uf,l=>l.parent.vhea.numberOfMetrics),bearings:new se(R,l=>l.parent.maxp.numGlyphs-l.parent.vhea.numberOfMetrics)}),Qi=new Xe(16,"BE",14),Gf=new P({fromCoord:Qi,toCoord:Qi}),Vf=new P({pairCount:b,correspondence:new I(Gf,"pairCount")}),qf=new P({version:fe,axisCount:_,segment:new I(Vf,"axisCount")}),Ls=class{getItem(e){if(this._items[e]==null){let t=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*e,this._items[e]=this.type.decode(this.stream,this.parent),this.stream.pos=t;}return this._items[e]}inspect(){return `[UnboundedArray ${this.type.constructor.name}]`}constructor(e,t,r){this.type=e,this.stream=t,this.parent=r,this.base=this.stream.pos,this._items=[];}},Ue=class extends I{decode(e,t){return new Ls(this.type,e,t)}constructor(e){super(e,0);}},Et=function(l=b){class e{decode(f,u){return u=u.parent.parent,this.type.decode(f,u)}size(f,u){return u=u.parent.parent,this.type.size(f,u)}encode(f,u,i){return i=i.parent.parent,this.type.encode(f,u,i)}constructor(f){this.type=f;}}l=new e(l);let t=new P({unitSize:b,nUnits:b,searchRange:b,entrySelector:b,rangeShift:b}),r=new P({lastGlyph:b,firstGlyph:b,value:l}),s=new P({lastGlyph:b,firstGlyph:b,values:new E(b,new I(l,a=>a.lastGlyph-a.firstGlyph+1),{type:"parent"})}),n=new P({glyph:b,value:l});return new K(b,{0:{values:new Ue(l)},2:{binarySearchHeader:t,segments:new I(r,a=>a.binarySearchHeader.nUnits)},4:{binarySearchHeader:t,segments:new I(s,a=>a.binarySearchHeader.nUnits)},6:{binarySearchHeader:t,segments:new I(n,a=>a.binarySearchHeader.nUnits)},8:{firstGlyph:b,count:b,values:new I(l,"count")}})};function Jr(l={},e=b){let t=Object.assign({newState:b,flags:b},l),r=new P(t),s=new Ue(new I(b,a=>a.nClasses));return new P({nClasses:_,classTable:new E(_,new Et(e)),stateArray:new E(_,s),entryTable:new E(_,new Ue(r))})}function Hf(l={},e=b){let t=new P({version(){return 8},firstGlyph:b,values:new I(L,b)}),r=Object.assign({newStateOffset:b,newState:f=>(f.newStateOffset-(f.parent.stateArray.base-f.parent._startOffset))/f.parent.nClasses,flags:b},l),s=new P(r),n=new Ue(new I(L,f=>f.nClasses));return new P({nClasses:b,classTable:new E(b,t),stateArray:new E(b,n),entryTable:new E(b,new Ue(s))})}var Wf=new K("format",{0:{deltas:new I(R,32)},1:{deltas:new I(R,32),mappingData:new Et(b)},2:{standardGlyph:b,controlPoints:new I(b,32)},3:{standardGlyph:b,controlPoints:new I(b,32),mappingData:new Et(b)}}),Xf=new P({version:fe,format:b,defaultBaseline:b,subtable:Wf}),Yf=new P({setting:b,nameIndex:R,name:l=>l.parent.parent.parent.name.records.fontFeatures[l.nameIndex]}),Zf=new P({feature:b,nSettings:b,settingTable:new E(_,new I(Yf,"nSettings"),{type:"parent"}),featureFlags:new Pe(L,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:L,nameIndex:R,name:l=>l.parent.parent.name.records.fontFeatures[l.nameIndex]}),Kf=new P({version:fe,featureNameCount:b,reserved1:new ie(b),reserved2:new ie(_),featureNames:new I(Zf,"featureNameCount")}),Jf=new P({axisTag:new ne(4),minValue:fe,defaultValue:fe,maxValue:fe,flags:b,nameID:b,name:l=>l.parent.parent.name.records.fontFeatures[l.nameID]}),Qf=new P({nameID:b,name:l=>l.parent.parent.name.records.fontFeatures[l.nameID],flags:b,coord:new I(fe,l=>l.parent.axisCount),postscriptNameID:new yt(b,l=>l.parent.instanceSize-l._currentOffset>0)}),eh=new P({version:fe,offsetToData:b,countSizePairs:b,axisCount:b,axisSize:b,instanceCount:b,instanceSize:b,axis:new I(Jf,"axisCount"),instance:new I(Qf,"instanceCount")}),th=new Xe(16,"BE",14),Ms=class{static decode(e,t){return t.flags?e.readUInt32BE():e.readUInt16BE()*2}},rh=new P({version:b,reserved:new ie(b),axisCount:b,globalCoordCount:b,globalCoords:new E(_,new I(new I(th,"axisCount"),"globalCoordCount")),glyphCount:b,flags:b,offsetToData:_,offsets:new I(new E(Ms,"void",{relativeTo:l=>l.offsetToData,allowNull:false}),l=>l.glyphCount+1)}),nh=rh,sh=new P({length:b,coverage:b,subFeatureFlags:_,stateTable:new Hf}),ah=new P({justClass:_,beforeGrowLimit:fe,beforeShrinkLimit:fe,afterGrowLimit:fe,afterShrinkLimit:fe,growFlags:b,shrinkFlags:b}),ih=new I(ah,_),oh=new K("actionType",{0:{lowerLimit:fe,upperLimit:fe,order:b,glyphs:new I(b,b)},1:{addGlyph:b},2:{substThreshold:fe,addGlyph:b,substGlyph:b},3:{},4:{variationAxis:_,minimumLimit:fe,noStretchValue:fe,maximumLimit:fe},5:{flags:b,glyph:b}}),lh=new P({actionClass:b,actionType:b,actionLength:_,actionData:oh,padding:new ie(L,l=>l.actionLength-l._currentOffset)}),ch=new I(lh,_),uh=new P({lookupTable:new Et(new E(b,ch))}),eo=new P({classTable:new E(b,sh,{type:"parent"}),wdcOffset:b,postCompensationTable:new E(b,uh,{type:"parent"}),widthDeltaClusters:new Et(new E(b,ih,{type:"parent",relativeTo:l=>l.wdcOffset}))}),fh=new P({version:_,format:b,horizontal:new E(b,eo),vertical:new E(b,eo)}),hh={action:b},dh={markIndex:b,currentIndex:b},ph={currentInsertIndex:b,markedInsertIndex:b},mh=new P({items:new Ue(new E(_,new Et))}),gh=new K("type",{0:{stateTable:new Jr},1:{stateTable:new Jr(dh),substitutionTable:new E(_,mh)},2:{stateTable:new Jr(hh),ligatureActions:new E(_,new Ue(_)),components:new E(_,new Ue(b)),ligatureList:new E(_,new Ue(b))},4:{lookupTable:new Et},5:{stateTable:new Jr(ph),insertionActions:new E(_,new Ue(b))}}),bh=new P({length:_,coverage:ut,type:L,subFeatureFlags:_,table:gh,padding:new ie(L,l=>l.length-l._currentOffset)}),yh=new P({featureType:b,featureSetting:b,enableFlags:_,disableFlags:_}),vh=new P({defaultFlags:_,chainLength:_,nFeatureEntries:_,nSubtables:_,features:new I(yh,"nFeatureEntries"),subtables:new I(bh,"nSubtables")}),wh=new P({version:b,unused:new ie(b),nChains:_,chains:new I(vh,"nChains")}),xh=new P({left:R,top:R,right:R,bottom:R}),Ch=new P({version:fe,format:b,lookupTable:new Et(xh)}),X={},mn=X;X.cmap=kc;X.head=Oc;X.hhea=Ic;X.hmtx=_c;X.maxp=Pc;X.name=Mc;X["OS/2"]=$c;X.post=Nc;X.fpgm=Uc;X.loca=zc;X.prep=Gc;X["cvt "]=jc;X.glyf=Vc;X["CFF "]=qo;X.CFF2=qo;X.VORG=Eu;X.EBLC=Du;X.CBLC=X.EBLC;X.sbix=Bu;X.COLR=$u;X.CPAL=ju;X.BASE=Xu;X.GDEF=ef;X.GPOS=hf;X.GSUB=gf;X.JSTF=xf;X.HVAR=Sf;X.DSIG=Of;X.gasp=Ef;X.hdmx=Pf;X.kern=Df;X.LTSH=Rf;X.PCLT=Bf;X.VDMX=Nf;X.vhea=jf;X.vmtx=zf;X.avar=qf;X.bsln=Xf;X.feat=Kf;X.fvar=eh;X.gvar=nh;X.just=fh;X.morx=wh;X.opbd=Ch;var Sh=new P({tag:new ne(4),checkSum:_,offset:new E(_,"void",{type:"global"}),length:_}),va=new P({tag:new ne(4),numTables:b,searchRange:b,entrySelector:b,rangeShift:b,tables:new I(Sh,"numTables")});va.process=function(){let l={};for(let e of this.tables)l[e.tag]=e;this.tables=l;};va.preEncode=function(){if(!Array.isArray(this.tables)){let t=[];for(let r in this.tables){let s=this.tables[r];s&&t.push({tag:r,checkSum:0,offset:new qt(mn[r],s),length:mn[r].size(s)});}this.tables=t;}this.tag="true",this.numTables=this.tables.length;let l=Math.floor(Math.log(this.numTables)/Math.LN2),e=Math.pow(2,l);this.searchRange=e*16,this.entrySelector=Math.log(e)/Math.LN2,this.rangeShift=this.numTables*16-this.searchRange;};var Yo=va;function an(l,e){let t=0,r=l.length-1;for(;t<=r;){let s=t+r>>1,n=e(l[s]);if(n<0)r=s-1;else if(n>0)t=s+1;else return s}return -1}function er(l,e){let t=[];for(;l<e;)t.push(l++);return t}var Pn=new TextDecoder("ascii"),to="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Cr=new Uint8Array(256);for(let l=0;l<to.length;l++)Cr[to.charCodeAt(l)]=l;function wa(l){let e=l.length*.75;l[l.length-1]==="="&&(e--,l[l.length-2]==="="&&e--);let t=new Uint8Array(e),r=0;for(let s=0,n=l.length;s<n;s+=4){let a=Cr[l.charCodeAt(s)],f=Cr[l.charCodeAt(s+1)],u=Cr[l.charCodeAt(s+2)],i=Cr[l.charCodeAt(s+3)];t[r++]=a<<2|f>>4,t[r++]=(f&15)<<4|u>>2,t[r++]=(u&3)<<6|i&63;}return t}var Fr=class{findSubtable(e,t){for(let[r,s]of t)for(let n of e.tables)if(n.platformID===r&&n.encodingID===s)return n.table;return null}lookup(e,t){if(this.encoding)e=this.encoding.get(e)||e;else if(t){let s=this.getVariationSelector(e,t);if(s)return s}let r=this.cmap;switch(r.version){case 0:return r.codeMap.get(e)||0;case 4:{let s=0,n=r.segCount-1;for(;s<=n;){let a=s+n>>1;if(e<r.startCode.get(a))n=a-1;else if(e>r.endCode.get(a))s=a+1;else {let f=r.idRangeOffset.get(a),u;if(f===0)u=e+r.idDelta.get(a);else {let i=f/2+(e-r.startCode.get(a))-(r.segCount-a);u=r.glyphIndexArray.get(i)||0,u!==0&&(u+=r.idDelta.get(a));}return u&65535}}return 0}case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return r.glyphIndices.get(e-r.firstCode)||0;case 12:case 13:{let s=0,n=r.nGroups-1;for(;s<=n;){let a=s+n>>1,f=r.groups.get(a);if(e<f.startCharCode)n=a-1;else if(e>f.endCharCode)s=a+1;else return r.version===12?f.glyphID+(e-f.startCharCode):f.glyphID}return 0}case 14:throw new Error("TODO: cmap format 14");default:throw new Error(`Unknown cmap format ${r.version}`)}}getVariationSelector(e,t){if(!this.uvs)return 0;let r=this.uvs.varSelectors.toArray(),s=an(r,a=>t-a.varSelector),n=r[s];return s!==-1&&n.defaultUVS&&(s=an(n.defaultUVS,a=>e<a.startUnicodeValue?-1:e>a.startUnicodeValue+a.additionalCount?1:0)),s!==-1&&n.nonDefaultUVS&&(s=an(n.nonDefaultUVS,a=>e-a.unicodeValue),s!==-1)?n.nonDefaultUVS[s].glyphID:0}getCharacterSet(){let e=this.cmap;switch(e.version){case 0:return er(0,e.codeMap.length);case 4:{let t=[],r=e.endCode.toArray();for(let s=0;s<r.length;s++){let n=r[s]+1,a=e.startCode.get(s);t.push(...er(a,n));}return t}case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return er(e.firstCode,e.firstCode+e.glyphIndices.length);case 12:case 13:{let t=[];for(let r of e.groups.toArray())t.push(...er(r.startCharCode,r.endCharCode+1));return t}case 14:throw new Error("TODO: cmap format 14");default:throw new Error(`Unknown cmap format ${e.version}`)}}codePointsForGlyph(e){let t=this.cmap;switch(t.version){case 0:{let s=[];for(let n=0;n<256;n++)t.codeMap.get(n)===e&&s.push(n);return s}case 4:{let s=[];for(let n=0;n<t.segCount;n++){let a=t.endCode.get(n),f=t.startCode.get(n),u=t.idRangeOffset.get(n),i=t.idDelta.get(n);for(var r=f;r<=a;r++){let o=0;if(u===0)o=r+i;else {let c=u/2+(r-f)-(t.segCount-n);o=t.glyphIndexArray.get(c)||0,o!==0&&(o+=i);}o===e&&s.push(r);}}return s}case 12:{let s=[];for(let n of t.groups.toArray())e>=n.glyphID&&e<=n.glyphID+(n.endCharCode-n.startCharCode)&&s.push(n.startCharCode+(e-n.glyphID));return s}case 13:{let s=[];for(let n of t.groups.toArray())e===n.glyphID&&s.push(...er(n.startCharCode,n.endCharCode+1));return s}default:throw new Error(`Unknown cmap format ${t.version}`)}}constructor(e){if(this.encoding=null,this.cmap=this.findSubtable(e,[[3,10],[0,6],[0,4],[3,1],[0,3],[0,2],[0,1],[0,0]]),!this.cmap)for(let t of e.tables){let r=Po(t.platformID,t.encodingID,t.table.language-1),s=Dc(r);s&&(this.cmap=t.table,this.encoding=s);}if(!this.cmap)throw new Error("Could not find a supported cmap table");this.uvs=this.findSubtable(e,[[0,5]]),this.uvs&&this.uvs.version!==14&&(this.uvs=null);}};xe([Ae],Fr.prototype,"getCharacterSet",null);xe([Ae],Fr.prototype,"codePointsForGlyph",null);var $s=class{process(e,t){for(let r=0;r<e.length-1;r++){let s=e[r].id,n=e[r+1].id;t[r].xAdvance+=this.getKerning(s,n);}}getKerning(e,t){let r=0;for(let s of this.kern.tables){if(s.coverage.crossStream)continue;switch(s.version){case 0:if(!s.coverage.horizontal)continue;break;case 1:if(s.coverage.vertical||s.coverage.variation)continue;break;default:throw new Error(`Unsupported kerning table version ${s.version}`)}let n=0,a=s.subtable;switch(s.format){case 0:let f=an(a.pairs,function(c){return e-c.left||t-c.right});f>=0&&(n=a.pairs[f].value);break;case 2:let u=0,i=0;e>=a.leftTable.firstGlyph&&e<a.leftTable.firstGlyph+a.leftTable.nGlyphs?u=a.leftTable.offsets[e-a.leftTable.firstGlyph]:u=a.array.off,t>=a.rightTable.firstGlyph&&t<a.rightTable.firstGlyph+a.rightTable.nGlyphs&&(i=a.rightTable.offsets[t-a.rightTable.firstGlyph]);let o=(u+i-a.array.off)/2;n=a.array.values.get(o);break;case 3:if(e>=a.glyphCount||t>=a.glyphCount)return 0;n=a.kernValue[a.kernIndex[a.leftClass[e]*a.rightClassCount+a.rightClass[t]]];break;default:throw new Error(`Unsupported kerning sub-table format ${s.format}`)}s.coverage.override?r=n:r+=n;}return r}constructor(e){this.kern=e.kern;}},Ns=class{positionGlyphs(e,t){let r=0,s=0;for(let n=0;n<e.length;n++)e[n].isMark?s=n:(r!==s&&this.positionCluster(e,t,r,s),r=s=n);return r!==s&&this.positionCluster(e,t,r,s),t}positionCluster(e,t,r,s){let n=e[r],a=n.cbox.copy();n.codePoints.length>1&&(a.minX+=(n.codePoints.length-1)*a.width/n.codePoints.length);let f=-t[r].xAdvance,u=0,i=this.font.unitsPerEm/16;for(let o=r+1;o<=s;o++){let c=e[o],h=c.cbox,d=t[o],g=this.getCombiningClass(c.codePoints[0]);if(g!=="Not_Reordered"){switch(d.xOffset=d.yOffset=0,g){case "Double_Above":case "Double_Below":d.xOffset+=a.minX-h.width/2-h.minX;break;case "Attached_Below_Left":case "Below_Left":case "Above_Left":d.xOffset+=a.minX-h.minX;break;case "Attached_Above_Right":case "Below_Right":case "Above_Right":d.xOffset+=a.maxX-h.width-h.minX;break;default:d.xOffset+=a.minX+(a.width-h.width)/2-h.minX;}switch(g){case "Double_Below":case "Below_Left":case "Below":case "Below_Right":case "Attached_Below_Left":case "Attached_Below":(g==="Attached_Below_Left"||g==="Attached_Below")&&(a.minY+=i),d.yOffset=-a.minY-h.maxY,a.minY+=h.height;break;case "Double_Above":case "Above_Left":case "Above":case "Above_Right":case "Attached_Above":case "Attached_Above_Right":(g==="Attached_Above"||g==="Attached_Above_Right")&&(a.maxY+=i),d.yOffset=a.maxY-h.minY,a.maxY+=h.height;break}d.xAdvance=d.yAdvance=0,d.xOffset+=f,d.yOffset+=u;}else f-=d.xAdvance,u-=d.yAdvance;}}getCombiningClass(e){let t=ai(e);if((e&-256)===3584){if(t==="Not_Reordered")switch(e){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return "Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return "Above";case 3772:return "Below"}else if(e===3642)return "Below_Right"}switch(t){case "CCC10":case "CCC11":case "CCC12":case "CCC13":case "CCC14":case "CCC15":case "CCC16":case "CCC17":case "CCC18":case "CCC20":case "CCC22":return "Below";case "CCC23":return "Attached_Above";case "CCC24":return "Above_Right";case "CCC25":case "CCC19":return "Above_Left";case "CCC26":return "Above";case "CCC21":break;case "CCC27":case "CCC28":case "CCC30":case "CCC31":case "CCC33":case "CCC34":case "CCC35":case "CCC36":return "Above";case "CCC29":case "CCC32":return "Below";case "CCC103":return "Below_Right";case "CCC107":return "Above_Right";case "CCC118":return "Below";case "CCC122":return "Above";case "CCC129":case "CCC132":return "Below";case "CCC130":return "Above"}return t}constructor(e){this.font=e;}},_t=class l{get width(){return this.maxX-this.minX}get height(){return this.maxY-this.minY}addPoint(e,t){Math.abs(e)!==1/0&&(e<this.minX&&(this.minX=e),e>this.maxX&&(this.maxX=e)),Math.abs(t)!==1/0&&(t<this.minY&&(this.minY=t),t>this.maxY&&(this.maxY=t));}copy(){return new l(this.minX,this.minY,this.maxX,this.maxY)}constructor(e=1/0,t=1/0,r=-1/0,s=-1/0){this.minX=e,this.minY=t,this.maxX=r,this.maxY=s;}},sr={Caucasian_Albanian:"aghb",Arabic:"arab",Imperial_Aramaic:"armi",Armenian:"armn",Avestan:"avst",Balinese:"bali",Bamum:"bamu",Bassa_Vah:"bass",Batak:"batk",Bengali:["bng2","beng"],Bopomofo:"bopo",Brahmi:"brah",Braille:"brai",Buginese:"bugi",Buhid:"buhd",Chakma:"cakm",Canadian_Aboriginal:"cans",Carian:"cari",Cham:"cham",Cherokee:"cher",Coptic:"copt",Cypriot:"cprt",Cyrillic:"cyrl",Devanagari:["dev2","deva"],Deseret:"dsrt",Duployan:"dupl",Egyptian_Hieroglyphs:"egyp",Elbasan:"elba",Ethiopic:"ethi",Georgian:"geor",Glagolitic:"glag",Gothic:"goth",Grantha:"gran",Greek:"grek",Gujarati:["gjr2","gujr"],Gurmukhi:["gur2","guru"],Hangul:"hang",Han:"hani",Hanunoo:"hano",Hebrew:"hebr",Hiragana:"hira",Pahawh_Hmong:"hmng",Katakana_Or_Hiragana:"hrkt",Old_Italic:"ital",Javanese:"java",Kayah_Li:"kali",Katakana:"kana",Kharoshthi:"khar",Khmer:"khmr",Khojki:"khoj",Kannada:["knd2","knda"],Kaithi:"kthi",Tai_Tham:"lana",Lao:"lao ",Latin:"latn",Lepcha:"lepc",Limbu:"limb",Linear_A:"lina",Linear_B:"linb",Lisu:"lisu",Lycian:"lyci",Lydian:"lydi",Mahajani:"mahj",Mandaic:"mand",Manichaean:"mani",Mende_Kikakui:"mend",Meroitic_Cursive:"merc",Meroitic_Hieroglyphs:"mero",Malayalam:["mlm2","mlym"],Modi:"modi",Mongolian:"mong",Mro:"mroo",Meetei_Mayek:"mtei",Myanmar:["mym2","mymr"],Old_North_Arabian:"narb",Nabataean:"nbat",Nko:"nko ",Ogham:"ogam",Ol_Chiki:"olck",Old_Turkic:"orkh",Oriya:["ory2","orya"],Osmanya:"osma",Palmyrene:"palm",Pau_Cin_Hau:"pauc",Old_Permic:"perm",Phags_Pa:"phag",Inscriptional_Pahlavi:"phli",Psalter_Pahlavi:"phlp",Phoenician:"phnx",Miao:"plrd",Inscriptional_Parthian:"prti",Rejang:"rjng",Runic:"runr",Samaritan:"samr",Old_South_Arabian:"sarb",Saurashtra:"saur",Shavian:"shaw",Sharada:"shrd",Siddham:"sidd",Khudawadi:"sind",Sinhala:"sinh",Sora_Sompeng:"sora",Sundanese:"sund",Syloti_Nagri:"sylo",Syriac:"syrc",Tagbanwa:"tagb",Takri:"takr",Tai_Le:"tale",New_Tai_Lue:"talu",Tamil:["tml2","taml"],Tai_Viet:"tavt",Telugu:["tel2","telu"],Tifinagh:"tfng",Tagalog:"tglg",Thaana:"thaa",Thai:"thai",Tibetan:"tibt",Tirhuta:"tirh",Ugaritic:"ugar",Vai:"vai ",Warang_Citi:"wara",Old_Persian:"xpeo",Cuneiform:"xsux",Yi:"yi ",Inherited:"zinh",Common:"zyyy",Unknown:"zzzz"},js={};for(let l in sr){let e=sr[l];if(Array.isArray(e))for(let t of e)js[t]=l;else js[e]=l;}function Ah(l){return js[l]}function kh(l){let e=l.length,t=0;for(;t<e;){let r=l.charCodeAt(t++);if(55296<=r&&r<=56319&&t<e){let n=l.charCodeAt(t);56320<=n&&n<=57343&&(t++,r=((r&1023)<<10)+(n&1023)+65536);}let s=ts(r);if(s!=="Common"&&s!=="Inherited"&&s!=="Unknown")return sr[s]}return sr.Unknown}function Oh(l){for(let e=0;e<l.length;e++){let t=l[e],r=ts(t);if(r!=="Common"&&r!=="Inherited"&&r!=="Unknown")return sr[r]}return sr.Unknown}var Ih={arab:true,hebr:true,syrc:true,thaa:true,cprt:true,khar:true,phnx:true,"nko ":true,lydi:true,avst:true,armi:true,phli:true,prti:true,sarb:true,orkh:true,samr:true,mand:true,merc:true,mero:true,mani:true,mend:true,nbat:true,narb:true,palm:true,phlp:true};function Zo(l){return Ih[l]?"rtl":"ltr"}var Us=class{get advanceWidth(){let e=0;for(let t of this.positions)e+=t.xAdvance;return e}get advanceHeight(){let e=0;for(let t of this.positions)e+=t.yAdvance;return e}get bbox(){let e=new _t,t=0,r=0;for(let s=0;s<this.glyphs.length;s++){let n=this.glyphs[s],a=this.positions[s],f=n.bbox;e.addPoint(f.minX+t+a.xOffset,f.minY+r+a.yOffset),e.addPoint(f.maxX+t+a.xOffset,f.maxY+r+a.yOffset),t+=a.xAdvance,r+=a.yAdvance;}return e}constructor(e,t,r,s,n){if(this.glyphs=e,this.positions=null,this.script=r,this.language=s||null,this.direction=n||Zo(r),this.features={},Array.isArray(t))for(let a of t)this.features[a]=true;else typeof t=="object"&&(this.features=t);}},zs=class{constructor(e=0,t=0,r=0,s=0){this.xAdvance=e,this.yAdvance=t,this.xOffset=r,this.yOffset=s;}},jt={allTypographicFeatures:{code:0,exclusive:false,allTypeFeatures:0},ligatures:{code:1,exclusive:false,requiredLigatures:0,commonLigatures:2,rareLigatures:4,rebusPictures:8,diphthongLigatures:10,squaredLigatures:12,abbrevSquaredLigatures:14,symbolLigatures:16,contextualLigatures:18,historicalLigatures:20},cursiveConnection:{code:2,exclusive:true,unconnected:0,partiallyConnected:1,cursive:2},letterCase:{code:3,exclusive:true},verticalSubstitution:{code:4,exclusive:false,substituteVerticalForms:0},linguisticRearrangement:{code:5,exclusive:false,linguisticRearrangement:0},numberSpacing:{code:6,exclusive:true,monospacedNumbers:0,proportionalNumbers:1,thirdWidthNumbers:2,quarterWidthNumbers:3},smartSwash:{code:8,exclusive:false,wordInitialSwashes:0,wordFinalSwashes:2,nonFinalSwashes:8},diacritics:{code:9,exclusive:true,showDiacritics:0,hideDiacritics:1,decomposeDiacritics:2},verticalPosition:{code:10,exclusive:true,normalPosition:0,superiors:1,inferiors:2,ordinals:3,scientificInferiors:4},fractions:{code:11,exclusive:true,noFractions:0,verticalFractions:1,diagonalFractions:2},overlappingCharacters:{code:13,exclusive:false,preventOverlap:0},typographicExtras:{code:14,exclusive:false,slashedZero:4},mathematicalExtras:{code:15,exclusive:false,mathematicalGreek:10},ornamentSets:{code:16,exclusive:true,noOrnaments:0,dingbats:1,piCharacters:2,fleurons:3,decorativeBorders:4,internationalSymbols:5,mathSymbols:6},characterAlternatives:{code:17,exclusive:true,noAlternates:0},designComplexity:{code:18,exclusive:true,designLevel1:0,designLevel2:1,designLevel3:2,designLevel4:3,designLevel5:4},styleOptions:{code:19,exclusive:true,noStyleOptions:0,displayText:1,engravedText:2,illuminatedCaps:3,titlingCaps:4,tallCaps:5},characterShape:{code:20,exclusive:true,traditionalCharacters:0,simplifiedCharacters:1,JIS1978Characters:2,JIS1983Characters:3,JIS1990Characters:4,traditionalAltOne:5,traditionalAltTwo:6,traditionalAltThree:7,traditionalAltFour:8,traditionalAltFive:9,expertCharacters:10,JIS2004Characters:11,hojoCharacters:12,NLCCharacters:13,traditionalNamesCharacters:14},numberCase:{code:21,exclusive:true,lowerCaseNumbers:0,upperCaseNumbers:1},textSpacing:{code:22,exclusive:true,proportionalText:0,monospacedText:1,halfWidthText:2,thirdWidthText:3,quarterWidthText:4,altProportionalText:5,altHalfWidthText:6},transliteration:{code:23,exclusive:true,noTransliteration:0},annotation:{code:24,exclusive:true,noAnnotation:0,boxAnnotation:1,roundedBoxAnnotation:2,circleAnnotation:3,invertedCircleAnnotation:4,parenthesisAnnotation:5,periodAnnotation:6,romanNumeralAnnotation:7,diamondAnnotation:8,invertedBoxAnnotation:9,invertedRoundedBoxAnnotation:10},kanaSpacing:{code:25,exclusive:true,fullWidthKana:0,proportionalKana:1},ideographicSpacing:{code:26,exclusive:true,fullWidthIdeographs:0,proportionalIdeographs:1,halfWidthIdeographs:2},unicodeDecomposition:{code:27,exclusive:false,canonicalComposition:0,compatibilityComposition:2,transcodingComposition:4},rubyKana:{code:28,exclusive:false,rubyKana:2},CJKSymbolAlternatives:{code:29,exclusive:true,noCJKSymbolAlternatives:0,CJKSymbolAltOne:1,CJKSymbolAltTwo:2,CJKSymbolAltThree:3,CJKSymbolAltFour:4,CJKSymbolAltFive:5},ideographicAlternatives:{code:30,exclusive:true,noIdeographicAlternatives:0,ideographicAltOne:1,ideographicAltTwo:2,ideographicAltThree:3,ideographicAltFour:4,ideographicAltFive:5},CJKVerticalRomanPlacement:{code:31,exclusive:true,CJKVerticalRomanCentered:0,CJKVerticalRomanHBaseline:1},italicCJKRoman:{code:32,exclusive:false,CJKItalicRoman:2},caseSensitiveLayout:{code:33,exclusive:false,caseSensitiveLayout:0,caseSensitiveSpacing:2},alternateKana:{code:34,exclusive:false,alternateHorizKana:0,alternateVertKana:2},stylisticAlternatives:{code:35,exclusive:false,noStylisticAlternates:0,stylisticAltOne:2,stylisticAltTwo:4,stylisticAltThree:6,stylisticAltFour:8,stylisticAltFive:10,stylisticAltSix:12,stylisticAltSeven:14,stylisticAltEight:16,stylisticAltNine:18,stylisticAltTen:20,stylisticAltEleven:22,stylisticAltTwelve:24,stylisticAltThirteen:26,stylisticAltFourteen:28,stylisticAltFifteen:30,stylisticAltSixteen:32,stylisticAltSeventeen:34,stylisticAltEighteen:36,stylisticAltNineteen:38,stylisticAltTwenty:40},contextualAlternates:{code:36,exclusive:false,contextualAlternates:0,swashAlternates:2,contextualSwashAlternates:4},lowerCase:{code:37,exclusive:true,defaultLowerCase:0,lowerCaseSmallCaps:1,lowerCasePetiteCaps:2},upperCase:{code:38,exclusive:true,defaultUpperCase:0,upperCaseSmallCaps:1,upperCasePetiteCaps:2},languageTag:{code:39,exclusive:true},CJKRomanSpacing:{code:103,exclusive:true,halfWidthCJKRoman:0,proportionalCJKRoman:1,defaultCJKRoman:2,fullWidthCJKRoman:3}},M=(l,e)=>[jt[l].code,jt[l][e]],gn={rlig:M("ligatures","requiredLigatures"),clig:M("ligatures","contextualLigatures"),dlig:M("ligatures","rareLigatures"),hlig:M("ligatures","historicalLigatures"),liga:M("ligatures","commonLigatures"),hist:M("ligatures","historicalLigatures"),smcp:M("lowerCase","lowerCaseSmallCaps"),pcap:M("lowerCase","lowerCasePetiteCaps"),frac:M("fractions","diagonalFractions"),dnom:M("fractions","diagonalFractions"),numr:M("fractions","diagonalFractions"),afrc:M("fractions","verticalFractions"),case:M("caseSensitiveLayout","caseSensitiveLayout"),ccmp:M("unicodeDecomposition","canonicalComposition"),cpct:M("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),valt:M("CJKVerticalRomanPlacement","CJKVerticalRomanCentered"),swsh:M("contextualAlternates","swashAlternates"),cswh:M("contextualAlternates","contextualSwashAlternates"),curs:M("cursiveConnection","cursive"),c2pc:M("upperCase","upperCasePetiteCaps"),c2sc:M("upperCase","upperCaseSmallCaps"),init:M("smartSwash","wordInitialSwashes"),fin2:M("smartSwash","wordFinalSwashes"),medi:M("smartSwash","nonFinalSwashes"),med2:M("smartSwash","nonFinalSwashes"),fin3:M("smartSwash","wordFinalSwashes"),fina:M("smartSwash","wordFinalSwashes"),pkna:M("kanaSpacing","proportionalKana"),half:M("textSpacing","halfWidthText"),halt:M("textSpacing","altHalfWidthText"),hkna:M("alternateKana","alternateHorizKana"),vkna:M("alternateKana","alternateVertKana"),ital:M("italicCJKRoman","CJKItalicRoman"),lnum:M("numberCase","upperCaseNumbers"),onum:M("numberCase","lowerCaseNumbers"),mgrk:M("mathematicalExtras","mathematicalGreek"),calt:M("contextualAlternates","contextualAlternates"),vrt2:M("verticalSubstitution","substituteVerticalForms"),vert:M("verticalSubstitution","substituteVerticalForms"),tnum:M("numberSpacing","monospacedNumbers"),pnum:M("numberSpacing","proportionalNumbers"),sups:M("verticalPosition","superiors"),subs:M("verticalPosition","inferiors"),ordn:M("verticalPosition","ordinals"),pwid:M("textSpacing","proportionalText"),hwid:M("textSpacing","halfWidthText"),qwid:M("textSpacing","quarterWidthText"),twid:M("textSpacing","thirdWidthText"),fwid:M("textSpacing","proportionalText"),palt:M("textSpacing","altProportionalText"),trad:M("characterShape","traditionalCharacters"),smpl:M("characterShape","simplifiedCharacters"),jp78:M("characterShape","JIS1978Characters"),jp83:M("characterShape","JIS1983Characters"),jp90:M("characterShape","JIS1990Characters"),jp04:M("characterShape","JIS2004Characters"),expt:M("characterShape","expertCharacters"),hojo:M("characterShape","hojoCharacters"),nlck:M("characterShape","NLCCharacters"),tnam:M("characterShape","traditionalNamesCharacters"),ruby:M("rubyKana","rubyKana"),titl:M("styleOptions","titlingCaps"),zero:M("typographicExtras","slashedZero"),ss01:M("stylisticAlternatives","stylisticAltOne"),ss02:M("stylisticAlternatives","stylisticAltTwo"),ss03:M("stylisticAlternatives","stylisticAltThree"),ss04:M("stylisticAlternatives","stylisticAltFour"),ss05:M("stylisticAlternatives","stylisticAltFive"),ss06:M("stylisticAlternatives","stylisticAltSix"),ss07:M("stylisticAlternatives","stylisticAltSeven"),ss08:M("stylisticAlternatives","stylisticAltEight"),ss09:M("stylisticAlternatives","stylisticAltNine"),ss10:M("stylisticAlternatives","stylisticAltTen"),ss11:M("stylisticAlternatives","stylisticAltEleven"),ss12:M("stylisticAlternatives","stylisticAltTwelve"),ss13:M("stylisticAlternatives","stylisticAltThirteen"),ss14:M("stylisticAlternatives","stylisticAltFourteen"),ss15:M("stylisticAlternatives","stylisticAltFifteen"),ss16:M("stylisticAlternatives","stylisticAltSixteen"),ss17:M("stylisticAlternatives","stylisticAltSeventeen"),ss18:M("stylisticAlternatives","stylisticAltEighteen"),ss19:M("stylisticAlternatives","stylisticAltNineteen"),ss20:M("stylisticAlternatives","stylisticAltTwenty")};for(let l=1;l<=99;l++)gn[`cv${`00${l}`.slice(-2)}`]=[jt.characterAlternatives.code,l];var Ut={};for(let l in gn){let e=gn[l];Ut[e[0]]==null&&(Ut[e[0]]={}),Ut[e[0]][e[1]]=l;}function Eh(l){let e={};for(let t in l){let r;(r=gn[t])&&(e[r[0]]==null&&(e[r[0]]={}),e[r[0]][r[1]]=l[t]);}return e}function ro(l){let[e,t]=l;if(isNaN(e))var r=jt[e]&&jt[e].code;else var r=e;if(isNaN(t))var s=jt[e]&&jt[e][t];else var s=t;return [r,s]}function _h(l){let e={};if(Array.isArray(l))for(let t=0;t<l.length;t++){let r,s=ro(l[t]);(r=Ut[s[0]]&&Ut[s[0]][s[1]])&&(e[r]=true);}else if(typeof l=="object")for(let t in l){let r=l[t];for(let s in r){let n,a=ro([t,s]);r[s]&&(n=Ut[a[0]]&&Ut[a[0]][a[1]])&&(e[n]=true);}}return Object.keys(e)}var zt=class{lookup(e){switch(this.table.version){case 0:return this.table.values.getItem(e);case 2:case 4:{let s=0,n=this.table.binarySearchHeader.nUnits-1;for(;s<=n;){var t=s+n>>1,r=this.table.segments[t];if(r.firstGlyph===65535)return null;if(e<r.firstGlyph)n=t-1;else if(e>r.lastGlyph)s=t+1;else return this.table.version===2?r.value:r.values[e-r.firstGlyph]}return null}case 6:{let s=0,n=this.table.binarySearchHeader.nUnits-1;for(;s<=n;){var t=s+n>>1,r=this.table.segments[t];if(r.glyph===65535)return null;if(e<r.glyph)n=t-1;else if(e>r.glyph)s=t+1;else return r.value}return null}case 8:return this.table.values[e-this.table.firstGlyph];default:throw new Error(`Unknown lookup table format: ${this.table.version}`)}}glyphsForValue(e){let t=[];switch(this.table.version){case 2:case 4:for(let r of this.table.segments)if(this.table.version===2&&r.value===e)t.push(...er(r.firstGlyph,r.lastGlyph+1));else for(let s=0;s<r.values.length;s++)r.values[s]===e&&t.push(r.firstGlyph+s);break;case 6:for(let r of this.table.segments)r.value===e&&t.push(r.glyph);break;case 8:for(let r=0;r<this.table.values.length;r++)this.table.values[r]===e&&t.push(this.table.firstGlyph+r);break;default:throw new Error(`Unknown lookup table format: ${this.table.version}`)}return t}constructor(e){this.table=e;}};xe([Ae],zt.prototype,"glyphsForValue",null);var Ph=0;var no=0,so=1,ao=2;var Fh=16384,Gs=class{process(e,t,r){let s=Ph,n=t?e.length-1:0,a=t?-1:1;for(;a===1&&n<=e.length||a===-1&&n>=-1;){let f=null,u=so,i=true;n===e.length||n===-1?u=no:(f=e[n],f.id===65535?u=ao:(u=this.lookupTable.lookup(f.id),u==null&&(u=so)));let c=this.stateTable.stateArray.getItem(s)[u],h=this.stateTable.entryTable.getItem(c);u!==no&&u!==ao&&(r(f,h,n),i=!(h.flags&Fh)),s=h.newState,i&&(n+=a);}return e}traverse(e,t=0,r=new Set){if(r.has(t))return;r.add(t);let{nClasses:s,stateArray:n,entryTable:a}=this.stateTable,f=n.getItem(t);for(let u=4;u<s;u++){let i=f[u],o=a.getItem(i);for(let c of this.lookupTable.glyphsForValue(u))e.enter&&e.enter(c,o),o.newState!==0&&this.traverse(e,o.newState,r),e.exit&&e.exit(c,o);}}constructor(e){this.stateTable=e,this.lookupTable=new zt(e.classTable);}},Th=32768,Dh=8192,Rh=15,io=32768,Bh=32768,Lh=8192,Mh=2147483648,$h=1073741824,Nh=1073741823;var oo=4194304;var jh=2048,Uh=1024,zh=992,Gh=31,bn=class{process(e,t={}){for(let s of this.morx.chains){let n=s.defaultFlags;for(let a of s.features){let f;(f=t[a.featureType])&&(f[a.featureSetting]?(n&=a.disableFlags,n|=a.enableFlags):f[a.featureSetting]===false&&(n|=~a.disableFlags,n&=~a.enableFlags));}for(let a of s.subtables)a.subFeatureFlags&n&&this.processSubtable(a,e);}let r=e.length-1;for(;r>=0;)e[r].id===65535&&e.splice(r,1),r--;return e}processSubtable(e,t){if(this.subtable=e,this.glyphs=t,this.subtable.type===4){this.processNoncontextualSubstitutions(this.subtable,this.glyphs);return}this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;let r=this.getStateMachine(e),s=this.getProcessor(),n=!!(this.subtable.coverage&oo);return r.process(this.glyphs,n,s)}getStateMachine(e){return new Gs(e.table.stateTable)}getProcessor(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error(`Invalid morx subtable type: ${this.subtable.type}`)}}processIndicRearragement(e,t,r){t.flags&Th&&(this.firstGlyph=r),t.flags&Dh&&(this.lastGlyph=r),Vh(this.glyphs,t.flags&Rh,this.firstGlyph,this.lastGlyph);}processContextualSubstitution(e,t,r){let s=this.subtable.table.substitutionTable.items;if(t.markIndex!==65535){let a=s.getItem(t.markIndex),f=new zt(a);e=this.glyphs[this.markedGlyph];var n=f.lookup(e.id);n&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(n,e.codePoints));}if(t.currentIndex!==65535){let a=s.getItem(t.currentIndex),f=new zt(a);e=this.glyphs[r];var n=f.lookup(e.id);n&&(this.glyphs[r]=this.font.getGlyph(n,e.codePoints));}t.flags&io&&(this.markedGlyph=r);}processLigature(e,t,r){if(t.flags&Bh&&this.ligatureStack.push(r),t.flags&Lh){let s=this.subtable.table.ligatureActions,n=this.subtable.table.components,a=this.subtable.table.ligatureList,f=t.action,u=false,i=0,o=[],c=[];for(;!u;){let h=this.ligatureStack.pop();o.unshift(...this.glyphs[h].codePoints);let d=s.getItem(f++);u=!!(d&Mh);let g=!!(d&$h),p=(d&Nh)<<2>>2;p+=this.glyphs[h].id;let m=n.getItem(p);if(i+=m,u||g){let y=a.getItem(i);this.glyphs[h]=this.font.getGlyph(y,o),c.push(h),i=0,o=[];}else this.glyphs[h]=this.font.getGlyph(65535);}this.ligatureStack.push(...c);}}processNoncontextualSubstitutions(e,t,r){let s=new zt(e.table.lookupTable);for(r=0;r<t.length;r++){let n=t[r];if(n.id!==65535){let a=s.lookup(n.id);a&&(t[r]=this.font.getGlyph(a,n.codePoints));}}}_insertGlyphs(e,t,r,s){let n=[];for(;r--;){let a=this.subtable.table.insertionActions.getItem(t++);n.push(this.font.getGlyph(a));}s||e++,this.glyphs.splice(e,0,...n);}processGlyphInsertion(e,t,r){if(t.flags&io&&(this.markedIndex=r),t.markedInsertIndex!==65535){let s=(t.flags&Gh)>>>5,n=!!(t.flags&Uh);this._insertGlyphs(this.markedIndex,t.markedInsertIndex,s,n);}if(t.currentInsertIndex!==65535){let s=(t.flags&zh)>>>5,n=!!(t.flags&jh);this._insertGlyphs(r,t.currentInsertIndex,s,n);}}getSupportedFeatures(){let e=[];for(let t of this.morx.chains)for(let r of t.features)e.push([r.featureType,r.featureSetting]);return e}generateInputs(e){return this.inputCache||this.generateInputCache(),this.inputCache[e]||[]}generateInputCache(){this.inputCache={};for(let e of this.morx.chains){let t=e.defaultFlags;for(let r of e.subtables)r.subFeatureFlags&t&&this.generateInputsForSubtable(r);}}generateInputsForSubtable(e){if(e.type!==2)return;if(!!(e.coverage&oo))throw new Error("Reverse subtable, not supported.");this.subtable=e,this.ligatureStack=[];let r=this.getStateMachine(e),s=this.getProcessor(),n=[],a=[];this.glyphs=[],r.traverse({enter:(f,u)=>{let i=this.glyphs;a.push({glyphs:i.slice(),ligatureStack:this.ligatureStack.slice()});let o=this.font.getGlyph(f);n.push(o),i.push(n[n.length-1]),s(i[i.length-1],u,i.length-1);let c=0,h=0;for(let d=0;d<i.length&&c<=1;d++)i[d].id!==65535&&(c++,h=i[d].id);if(c===1){let d=n.map(p=>p.id),g=this.inputCache[h];g?g.push(d):this.inputCache[h]=[d];}},exit:()=>{(({glyphs:this.glyphs,ligatureStack:this.ligatureStack}=a.pop())),n.pop();}});}constructor(e){this.processIndicRearragement=this.processIndicRearragement.bind(this),this.processContextualSubstitution=this.processContextualSubstitution.bind(this),this.processLigature=this.processLigature.bind(this),this.processNoncontextualSubstitutions=this.processNoncontextualSubstitutions.bind(this),this.processGlyphInsertion=this.processGlyphInsertion.bind(this),this.font=e,this.morx=e.morx,this.inputCache=null;}};xe([Ae],bn.prototype,"getStateMachine",null);function Te(l,e,t,r=false,s=false){let n=l.splice(t[0]-(t[1]-1),t[1]);s&&n.reverse();let a=l.splice(e[0],e[1],...n);return r&&a.reverse(),l.splice(t[0]-(e[1]-1),0,...a),l}function Vh(l,e,t,r){switch(e){case 0:return l;case 1:return Te(l,[t,1],[r,0]);case 2:return Te(l,[t,0],[r,1]);case 3:return Te(l,[t,1],[r,1]);case 4:return Te(l,[t,2],[r,0]);case 5:return Te(l,[t,2],[r,0],true,false);case 6:return Te(l,[t,0],[r,2]);case 7:return Te(l,[t,0],[r,2],false,true);case 8:return Te(l,[t,1],[r,2]);case 9:return Te(l,[t,1],[r,2],false,true);case 10:return Te(l,[t,2],[r,1]);case 11:return Te(l,[t,2],[r,1],true,false);case 12:return Te(l,[t,2],[r,2]);case 13:return Te(l,[t,2],[r,2],true,false);case 14:return Te(l,[t,2],[r,2],false,true);case 15:return Te(l,[t,2],[r,2],true,true);default:throw new Error(`Unknown verb: ${e}`)}}var Vs=class{substitute(e){e.direction==="rtl"&&e.glyphs.reverse(),this.morxProcessor.process(e.glyphs,Eh(e.features));}getAvailableFeatures(e,t){return _h(this.morxProcessor.getSupportedFeatures())}stringsForGlyph(e){let t=this.morxProcessor.generateInputs(e),r=new Set;for(let s of t)this._addStrings(s,0,r,"");return r}_addStrings(e,t,r,s){let n=this.font._cmapProcessor.codePointsForGlyph(e[t]);for(let a of n){let f=s+String.fromCodePoint(a);t<e.length-1?this._addStrings(e,t+1,r,f):r.add(f);}}constructor(e){this.font=e,this.morxProcessor=new bn(e),this.fallbackPosition=false;}},qs=class{_addFeatures(e,t){let r=this.stages.length-1,s=this.stages[r];for(let n of e)this.allFeatures[n]==null&&(s.push(n),this.allFeatures[n]=r,t&&(this.globalFeatures[n]=true));}add(e,t=true){if(this.stages.length===0&&this.stages.push([]),typeof e=="string"&&(e=[e]),Array.isArray(e))this._addFeatures(e,t);else if(typeof e=="object")this._addFeatures(e.global||[],true),this._addFeatures(e.local||[],false);else throw new Error("Unsupported argument to ShapingPlan#add")}addStage(e,t){typeof e=="function"?this.stages.push(e,[]):(this.stages.push([]),this.add(e,t));}setFeatureOverrides(e){if(Array.isArray(e))this.add(e);else if(typeof e=="object"){for(let t in e)if(e[t])this.add(t);else if(this.allFeatures[t]!=null){let r=this.stages[this.allFeatures[t]];r.splice(r.indexOf(t),1),delete this.allFeatures[t],delete this.globalFeatures[t];}}}assignGlobalFeatures(e){for(let t of e)for(let r in this.globalFeatures)t.features[r]=true;}process(e,t,r){for(let s of this.stages)typeof s=="function"?r||s(this.font,t,this):s.length>0&&e.applyFeatures(s,t,r);}constructor(e,t,r){this.font=e,this.script=t,this.direction=r,this.stages=[],this.globalFeatures={},this.allFeatures={};}},qh=["rvrn"],Hh=["ccmp","locl","rlig","mark","mkmk"],Wh=["frac","numr","dnom"],Xh=["calt","clig","liga","rclt","curs","kern"];var Yh={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},tt=class{static plan(e,t,r){this.planPreprocessing(e),this.planFeatures(e),this.planPostprocessing(e,r),e.assignGlobalFeatures(t),this.assignFeatures(e,t);}static planPreprocessing(e){e.add({global:[...qh,...Yh[e.direction]],local:Wh});}static planFeatures(e){}static planPostprocessing(e,t){e.add([...Hh,...Xh]),e.setFeatureOverrides(t);}static assignFeatures(e,t){for(let r=0;r<t.length;r++){let s=t[r];if(s.codePoints[0]===8260){let n=r,a=r+1;for(;n>0&&rs(t[n-1].codePoints[0]);)t[n-1].features.numr=true,t[n-1].features.frac=true,n--;for(;a<t.length&&rs(t[a].codePoints[0]);)t[a].features.dnom=true,t[a].features.frac=true,a++;s.features.frac=true,r=a-1;}}}};Fe(tt,"zeroMarkWidths","AFTER_GPOS");var Zh=new In.default(wa("APABAAAAAAAAOAAAAf0BAv7tmi1MxDAUx7vtvjhAgcDgkEgEAnmXEBIMCYaEcygEiqBQ4FAkCE4ikUgMiiBJSAgSiUQSDMn9L9eSl6bddddug9t7yS/trevre+3r27pcNxZiG+yCfdCVv/9LeQxOwRm4AJegD27ALbgD9+ABPJF+z+BN/h7yDj5k/VOWX6SdmU5+wLWknggxDxaS8u0qiiX4uiz9XamQ3wzDMAzDMAzDMAzDVI/h959V/v7BMAzDMAzDMLlyNTNiMSdewVxbiA44B4/guz1qW58VYlMI0WsJ0W+N6kXw0spvPtdwhtkwnGM6uLaV4Xyzg3v3PM9DPfQ/sOg4xPWjipy31P8LTqbU304c/cLCUmWJLNB2Uz2U1KTeRKNmKHVMfbJC+/0loTZRH/W5cvEvBJPMbREkWt3FD1NcqXZBSpuE2Ad0PBehPtNrPtIEdYP+hiRt/V1jIiE69X4NT/uVZI3PUHE9bm5M7ePGdZWy951v7Nn6j8v1WWKP3mt6ttnsigx6VN7Vc0VomSSGqW2mGNP1muZPl7LfjNUaKNFtDGVf2fvE9O7VlBS5j333c5p/eeoOqcs1R/hIqDWLJ7TTlksirVT1SI7l8k4Yp+g3jafGcrU1RM6l9th80XOpnlN97bDNY4i4s61B0Si/ipa0uHMl6zqEjlFfCZm/TM8KmzQDjmuTAQ==")),lo=["isol","fina","fin2","fin3","medi","med2","init"],Hs={Non_Joining:0,Transparent:6},le="isol",St="fina",ks="fin2",Kh="fin3",Qr="medi",en="med2",tn="init",re=null,Jh=[[[re,re,0],[re,le,2],[re,le,1],[re,le,2],[re,le,1],[re,le,6]],[[re,re,0],[re,le,2],[re,le,1],[re,le,2],[re,ks,5],[re,le,6]],[[re,re,0],[re,le,2],[tn,St,1],[tn,St,3],[tn,St,4],[tn,St,6]],[[re,re,0],[re,le,2],[Qr,St,1],[Qr,St,3],[Qr,St,4],[Qr,St,6]],[[re,re,0],[re,le,2],[en,le,1],[en,le,2],[en,ks,5],[en,le,6]],[[re,re,0],[re,le,2],[le,le,1],[le,le,2],[le,ks,5],[le,le,6]],[[re,re,0],[re,le,2],[re,le,1],[re,le,2],[re,Kh,5],[re,le,6]]],Qe=class extends tt{static planFeatures(e){e.add(["ccmp","locl"]);for(let t=0;t<lo.length;t++){let r=lo[t];e.addStage(r,false);}e.addStage("mset");}static assignFeatures(e,t){super.assignFeatures(e,t);let r=-1,s=0,n=[];for(let f=0;f<t.length;f++){let u,i;var a=t[f];let o=Qh(a.codePoints[0]);if(o===Hs.Transparent){n[f]=re;continue}[i,u,s]=Jh[s][o],i!==re&&r!==-1&&(n[r]=i),n[f]=u,r=f;}for(let f=0;f<t.length;f++){let u;var a=t[f];(u=n[f])&&(a.features[u]=true);}}};function Qh(l){let e=Zh.get(l);if(e)return e-1;let t=yr(l);return t==="Mn"||t==="Me"||t==="Cf"?Hs.Transparent:Hs.Non_Joining}var Ws=class{reset(e={},t=0){this.options=e,this.flags=e.flags||{},this.markAttachmentType=e.markAttachmentType||0,this.index=t;}get cur(){return this.glyphs[this.index]||null}shouldIgnore(e){return this.flags.ignoreMarks&&e.isMark||this.flags.ignoreBaseGlyphs&&e.isBase||this.flags.ignoreLigatures&&e.isLigature||this.markAttachmentType&&e.isMark&&e.markAttachmentType!==this.markAttachmentType}move(e){for(this.index+=e;0<=this.index&&this.index<this.glyphs.length&&this.shouldIgnore(this.glyphs[this.index]);)this.index+=e;return 0>this.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]}next(){return this.move(1)}prev(){return this.move(-1)}peek(e=1){let t=this.index,r=this.increment(e);return this.index=t,r}peekIndex(e=1){let t=this.index;this.increment(e);let r=this.index;return this.index=t,r}increment(e=1){let t=e<0?-1:1;for(e=Math.abs(e);e--;)this.move(t);return this.glyphs[this.index]}constructor(e,t){this.glyphs=e,this.reset(t);}},ed=["DFLT","dflt","latn"],ar=class{findScript(e){if(this.table.scriptList==null)return null;Array.isArray(e)||(e=[e]);for(let t of e)for(let r of this.table.scriptList)if(r.tag===t)return r;return null}selectScript(e,t,r){let s=false,n;if(!this.script||e!==this.scriptTag){if(n=this.findScript(e),n||(n=this.findScript(ed)),!n)return this.scriptTag;this.scriptTag=n.tag,this.script=n.script,this.language=null,this.languageTag=null,s=true;}if((!r||r!==this.direction)&&(this.direction=r||Zo(e)),t&&t.length<4&&(t+=" ".repeat(4-t.length)),!t||t!==this.languageTag){this.language=null;for(let a of this.script.langSysRecords)if(a.tag===t){this.language=a.langSys,this.languageTag=a.tag;break}this.language||(this.language=this.script.defaultLangSys,this.languageTag=null),s=true;}if(s&&(this.features={},this.language))for(let a of this.language.featureIndexes){let f=this.table.featureList[a],u=this.substituteFeatureForVariations(a);this.features[f.tag]=u||f.feature;}return this.scriptTag}lookupsForFeatures(e=[],t){let r=[];for(let s of e){let n=this.features[s];if(n)for(let a of n.lookupListIndexes)t&&t.indexOf(a)!==-1||r.push({feature:s,index:a,lookup:this.table.lookupList.get(a)});}return r.sort((s,n)=>s.index-n.index),r}substituteFeatureForVariations(e){if(this.variationsIndex===-1)return null;let r=this.table.featureVariations.featureVariationRecords[this.variationsIndex].featureTableSubstitution.substitutions;for(let s of r)if(s.featureIndex===e)return s.alternateFeatureTable;return null}findVariationsIndex(e){let t=this.table.featureVariations;if(!t)return -1;let r=t.featureVariationRecords;for(let s=0;s<r.length;s++){let n=r[s].conditionSet.conditionTable;if(this.variationConditionsMatch(n,e))return s}return -1}variationConditionsMatch(e,t){return e.every(r=>{let s=r.axisIndex<t.length?t[r.axisIndex]:0;return r.filterRangeMinValue<=s&&s<=r.filterRangeMaxValue})}applyFeatures(e,t,r){let s=this.lookupsForFeatures(e);this.applyLookups(s,t,r);}applyLookups(e,t,r){this.glyphs=t,this.positions=r,this.glyphIterator=new Ws(t);for(let{feature:s,lookup:n}of e)for(this.currentFeature=s,this.glyphIterator.reset(n.flags);this.glyphIterator.index<t.length;){if(!(s in this.glyphIterator.cur.features)){this.glyphIterator.next();continue}for(let a of n.subTables)if(this.applyLookup(n.lookupType,a))break;this.glyphIterator.next();}}applyLookup(e,t){throw new Error("applyLookup must be implemented by subclasses")}applyLookupList(e){let t=this.glyphIterator.options,r=this.glyphIterator.index;for(let s of e){this.glyphIterator.reset(t,r),this.glyphIterator.increment(s.sequenceIndex);let n=this.table.lookupList.get(s.lookupListIndex);this.glyphIterator.reset(n.flags,this.glyphIterator.index);for(let a of n.subTables)if(this.applyLookup(n.lookupType,a))break}return this.glyphIterator.reset(t,r),true}coverageIndex(e,t){switch(t==null&&(t=this.glyphIterator.cur.id),e.version){case 1:return e.glyphs.indexOf(t);case 2:for(let r of e.rangeRecords)if(r.start<=t&&t<=r.end)return r.startCoverageIndex+t-r.start;break}return -1}match(e,t,r,s){let n=this.glyphIterator.index,a=this.glyphIterator.increment(e),f=0;for(;f<t.length&&a&&r(t[f],a);)s&&s.push(this.glyphIterator.index),f++,a=this.glyphIterator.next();return this.glyphIterator.index=n,f<t.length?false:s||true}sequenceMatches(e,t){return this.match(e,t,(r,s)=>r===s.id)}sequenceMatchIndices(e,t){return this.match(e,t,(r,s)=>this.currentFeature in s.features?r===s.id:false,[])}coverageSequenceMatches(e,t){return this.match(e,t,(r,s)=>this.coverageIndex(r,s.id)>=0)}getClassID(e,t){switch(t.version){case 1:let r=e-t.startGlyph;if(r>=0&&r<t.classValueArray.length)return t.classValueArray[r];break;case 2:for(let s of t.classRangeRecord)if(s.start<=e&&e<=s.end)return s.class;break}return 0}classSequenceMatches(e,t,r){return this.match(e,t,(s,n)=>s===this.getClassID(n.id,r))}applyContext(e){let t,r;switch(e.version){case 1:if(t=this.coverageIndex(e.coverage),t===-1)return false;r=e.ruleSets[t];for(let s of r)if(this.sequenceMatches(1,s.input))return this.applyLookupList(s.lookupRecords);break;case 2:if(this.coverageIndex(e.coverage)===-1||(t=this.getClassID(this.glyphIterator.cur.id,e.classDef),t===-1))return false;r=e.classSet[t];for(let s of r)if(this.classSequenceMatches(1,s.classes,e.classDef))return this.applyLookupList(s.lookupRecords);break;case 3:if(this.coverageSequenceMatches(0,e.coverages))return this.applyLookupList(e.lookupRecords);break}return false}applyChainingContext(e){let t;switch(e.version){case 1:if(t=this.coverageIndex(e.coverage),t===-1)return false;let r=e.chainRuleSets[t];for(let n of r)if(this.sequenceMatches(-n.backtrack.length,n.backtrack)&&this.sequenceMatches(1,n.input)&&this.sequenceMatches(1+n.input.length,n.lookahead))return this.applyLookupList(n.lookupRecords);break;case 2:if(this.coverageIndex(e.coverage)===-1)return false;t=this.getClassID(this.glyphIterator.cur.id,e.inputClassDef);let s=e.chainClassSet[t];if(!s)return false;for(let n of s)if(this.classSequenceMatches(-n.backtrack.length,n.backtrack,e.backtrackClassDef)&&this.classSequenceMatches(1,n.input,e.inputClassDef)&&this.classSequenceMatches(1+n.input.length,n.lookahead,e.lookaheadClassDef))return this.applyLookupList(n.lookupRecords);break;case 3:if(this.coverageSequenceMatches(-e.backtrackGlyphCount,e.backtrackCoverage)&&this.coverageSequenceMatches(0,e.inputCoverage)&&this.coverageSequenceMatches(e.inputGlyphCount,e.lookaheadCoverage))return this.applyLookupList(e.lookupRecords);break}return false}constructor(e,t){this.font=e,this.table=t,this.script=null,this.scriptTag=null,this.language=null,this.languageTag=null,this.features={},this.lookups={},this.variationsIndex=e._variationProcessor?this.findVariationsIndex(e._variationProcessor.normalizedCoords):-1,this.selectScript(),this.glyphs=[],this.positions=[],this.ligatureID=1,this.currentFeature=null;}},qe=class l{get id(){return this._id}set id(e){this._id=e,this.substituted=true;let t=this._font.GDEF;if(t&&t.glyphClassDef){let r=ar.prototype.getClassID(e,t.glyphClassDef);this.isBase=r===1,this.isLigature=r===2,this.isMark=r===3,this.markAttachmentType=t.markAttachClassDef?ar.prototype.getClassID(e,t.markAttachClassDef):0;}else this.isMark=this.codePoints.length>0&&this.codePoints.every(ns),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0;}copy(){return new l(this._font,this.id,this.codePoints,this.features)}constructor(e,t,r=[],s){if(this._font=e,this.codePoints=r,this.id=t,this.features={},Array.isArray(s))for(let n=0;n<s.length;n++){let a=s[n];this.features[a]=true;}else typeof s=="object"&&Object.assign(this.features,s);this.ligatureID=null,this.ligatureComponent=null,this.isLigated=false,this.cursiveAttachment=null,this.markAttachment=null,this.shaperInfo=null,this.substituted=false,this.isMultiplied=false;}},yn=class extends tt{static planFeatures(e){e.add(["ljmo","vjmo","tjmo"],false);}static assignFeatures(e,t){let r=0,s=0;for(;s<t.length;){let n,f=t[s].codePoints[0],u=Cn(f);switch([n,r]=yd[r][u],n){case ht:e.font.hasGlyphForCodePoint(f)||(s=Qo(t,s,e.font));break;case Xs:s=vd(t,s,e.font);break;case Ys:xd(t,s,e.font);break;case Zs:s=Cd(t,s,e.font);break}s++;}}};Fe(yn,"zeroMarkWidths","NONE");var ir=44032,Ko=55204,td=Ko-ir+1,Fn=4352,Tn=4449,Ot=4519,rd=19,vn=21,Tr=28,nd=Fn+rd-1,sd=Tn+vn-1,ad=Ot+Tr-1,co=9676,id=l=>4352<=l&&l<=4447||43360<=l&&l<=43388,od=l=>4448<=l&&l<=4519||55216<=l&&l<=55238,ld=l=>4520<=l&&l<=4607||55243<=l&&l<=55291,cd=l=>12334<=l&&l<=12335,ud=l=>ir<=l&&l<=Ko,fd=l=>l-ir<td&&(l-ir)%Tr===0,hd=l=>Fn<=l&&l<=nd,dd=l=>Tn<=l&&l<=sd,pd=l=>1<=l&&l<=ad,md=0,gd=1,wn=2,xa=3,xn=4,Jo=5,bd=6;function Cn(l){return id(l)?gd:od(l)?wn:ld(l)?xa:fd(l)?xn:ud(l)?Jo:cd(l)?bd:md}var Be=0,ht=1,Xs=2,Ys=4,Zs=5,yd=[[[Be,0],[Be,1],[Be,0],[Be,0],[ht,2],[ht,3],[Zs,0]],[[Be,0],[Be,1],[Xs,2],[Be,0],[ht,2],[ht,3],[Zs,0]],[[Be,0],[Be,1],[Be,0],[Xs,3],[ht,2],[ht,3],[Ys,0]],[[Be,0],[Be,1],[Be,0],[Be,0],[ht,2],[ht,3],[Ys,0]]];function Or(l,e,t){return new qe(l,l.glyphForCodePoint(e).id,[e],t)}function Qo(l,e,t){let r=l[e],n=r.codePoints[0]-ir,a=Ot+n%Tr;n=n/Tr|0;let f=Fn+n/vn|0,u=Tn+n%vn;if(!t.hasGlyphForCodePoint(f)||!t.hasGlyphForCodePoint(u)||a!==Ot&&!t.hasGlyphForCodePoint(a))return e;let i=Or(t,f,r.features);i.features.ljmo=true;let o=Or(t,u,r.features);o.features.vjmo=true;let c=[i,o];if(a>Ot){let h=Or(t,a,r.features);h.features.tjmo=true,c.push(h);}return l.splice(e,1,...c),e+c.length-1}function vd(l,e,t){let r=l[e],s=l[e].codePoints[0],n=Cn(s),a=l[e-1].codePoints[0],f=Cn(a),u,i,o,c;if(f===xn&&n===xa)u=a,c=r;else {n===wn?(i=l[e-1],o=r):(i=l[e-2],o=l[e-1],c=r);let d=i.codePoints[0],g=o.codePoints[0];hd(d)&&dd(g)&&(u=ir+((d-Fn)*vn+(g-Tn))*Tr);}let h=c&&c.codePoints[0]||Ot;if(u!=null&&(h===Ot||pd(h))){let d=u+(h-Ot);if(t.hasGlyphForCodePoint(d)){let g=f===wn?3:2;return l.splice(e-g+1,g,Or(t,d,r.features)),e-g+1}}return i&&(i.features.ljmo=true),o&&(o.features.vjmo=true),c&&(c.features.tjmo=true),f===xn?(Qo(l,e-1,t),e+1):e}function wd(l){switch(Cn(l)){case xn:case Jo:return 1;case wn:return 2;case xa:return 3}}function xd(l,e,t){let r=l[e],s=l[e].codePoints[0];if(t.glyphForCodePoint(s).advanceWidth===0)return;let n=l[e-1].codePoints[0],a=wd(n);return l.splice(e,1),l.splice(e-a,0,r)}function Cd(l,e,t){let r=l[e],s=l[e].codePoints[0];if(t.hasGlyphForCodePoint(co)){let n=Or(t,co,r.features),a=t.glyphForCodePoint(s).advanceWidth===0?e:e+1;l.splice(a,0,n),e++;}return e}var e0={};e0=JSON.parse('{"stateTable":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],"accepting":[false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,false,false,true,false,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,false,false,false,false,false,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true],"tags":[[],["broken_cluster"],["consonant_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["broken_cluster"],["broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],[],["broken_cluster"],["symbol_cluster"],[],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["symbol_cluster"],["symbol_cluster"],["symbol_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],["broken_cluster"],[],[],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["broken_cluster"],["symbol_cluster"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],["consonant_syllable"],[],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],["vowel_syllable"],[],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],[],[],[],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],["standalone_cluster"],[],[],["standalone_cluster"],["standalone_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],[],[],[],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],[],[],[],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],[],[],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],["standalone_cluster"],[],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],[],[],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],[],[],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],[],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],[],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],[],[],[],[],["consonant_syllable","broken_cluster"],["consonant_syllable","broken_cluster"],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],[],[],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],["consonant_syllable"],[],["consonant_syllable"],["consonant_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],["vowel_syllable"],[],["vowel_syllable"],["vowel_syllable"],["broken_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],["standalone_cluster"],[],["standalone_cluster"],["standalone_cluster"],[],["consonant_syllable"],["vowel_syllable"],["standalone_cluster"]]}');var Dn={};Dn=JSON.parse('{"categories":["O","IND","S","GB","B","FM","CGJ","VMAbv","VMPst","VAbv","VPst","CMBlw","VPre","VBlw","H","VMBlw","CMAbv","MBlw","CS","R","SUB","MPst","MPre","FAbv","FPst","FBlw","null","SMAbv","SMBlw","VMPre","ZWNJ","ZWJ","WJ","M","VS","N","HN","MAbv"],"decompositions":{"2507":[2503,2494],"2508":[2503,2519],"2888":[2887,2902],"2891":[2887,2878],"2892":[2887,2903],"3018":[3014,3006],"3019":[3015,3006],"3020":[3014,3031],"3144":[3142,3158],"3264":[3263,3285],"3271":[3270,3285],"3272":[3270,3286],"3274":[3270,3266],"3275":[3270,3266,3285],"3402":[3398,3390],"3403":[3399,3390],"3404":[3398,3415],"3546":[3545,3530],"3548":[3545,3535],"3549":[3545,3535,3530],"3550":[3545,3551],"3635":[3661,3634],"3763":[3789,3762],"3955":[3953,3954],"3957":[3953,3956],"3958":[4018,3968],"3959":[4018,3953,3968],"3960":[4019,3968],"3961":[4019,3953,3968],"3969":[3953,3968],"6971":[6970,6965],"6973":[6972,6965],"6976":[6974,6965],"6977":[6975,6965],"6979":[6978,6965],"69934":[69937,69927],"69935":[69938,69927],"70475":[70471,70462],"70476":[70471,70487],"70843":[70841,70842],"70844":[70841,70832],"70846":[70841,70845],"71098":[71096,71087],"71099":[71097,71087]},"stateTable":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,0,23,0,0,2,0,0,24,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,39,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,28,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,51,0]],"accepting":[false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"tags":[[],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],[],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["broken_cluster"],["independent_cluster"],["symbol_cluster"],["symbol_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["virama_terminated_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["standard_cluster"],["broken_cluster"],["broken_cluster"],["numeral_cluster"],["number_joiner_terminated_cluster"],["standard_cluster"],["standard_cluster"],["numeral_cluster"]]}');var ee={X:1,C:2,V:4,N:8,H:16,ZWNJ:32,ZWJ:64,M:128,Placeholder:2048,Dotted_Circle:4096,RS:8192,Coeng:16384,Repha:32768,Ra:65536,CM:131072},q={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},Sd=ee.C|ee.Ra|ee.CM|ee.V|ee.Placeholder|ee.Dotted_Circle,t0=ee.ZWJ|ee.ZWNJ,Ir=ee.H|ee.Coeng,uo={Default:{hasOldSpec:false,virama:0,basePos:"Last",rephPos:q.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:true,virama:2381,basePos:"Last",rephPos:q.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:true,virama:2509,basePos:"Last",rephPos:q.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:true,virama:2637,basePos:"Last",rephPos:q.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:true,virama:2765,basePos:"Last",rephPos:q.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:true,virama:2893,basePos:"Last",rephPos:q.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:true,virama:3021,basePos:"Last",rephPos:q.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:true,virama:3149,basePos:"Last",rephPos:q.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:true,virama:3277,basePos:"Last",rephPos:q.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:true,virama:3405,basePos:"Last",rephPos:q.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:false,virama:6098,basePos:"First",rephPos:q.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},Ad={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},{decompositions:kd}=En(Dn),r0=new In.default(wa("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")),Od=new ga.default(En(e0)),he=class extends tt{static planFeatures(e){e.addStage(Id),e.addStage(["locl","ccmp"]),e.addStage(_d),e.addStage("nukt"),e.addStage("akhn"),e.addStage("rphf",false),e.addStage("rkrf"),e.addStage("pref",false),e.addStage("blwf",false),e.addStage("abvf",false),e.addStage("half",false),e.addStage("pstf",false),e.addStage("vatu"),e.addStage("cjct"),e.addStage("cfar",false),e.addStage(Pd),e.addStage({local:["init"],global:["pres","abvs","blws","psts","haln","dist","abvm","blwm","calt","clig"]}),e.unicodeScript=Ah(e.script),e.indicConfig=uo[e.unicodeScript]||uo.Default,e.isOldSpec=e.indicConfig.hasOldSpec&&e.script[e.script.length-1]!=="2";}static assignFeatures(e,t){for(let r=t.length-1;r>=0;r--){let s=t[r].codePoints[0],n=Ad[s]||kd[s];if(n){let a=n.map(f=>{let u=e.font.glyphForCodePoint(f);return new qe(e.font,u.id,[f],t[r].features)});t.splice(r,1,...a);}}}};Fe(he,"zeroMarkWidths","NONE");function Ks(l){return r0.get(l.codePoints[0])>>8}function n0(l){return 1<<(r0.get(l.codePoints[0])&255)}var rr=class{constructor(e,t,r,s){this.category=e,this.position=t,this.syllableType=r,this.syllable=s;}};function Id(l,e){let t=0,r=0;for(let[s,n,a]of Od.match(e.map(Ks))){if(s>r){++t;for(let f=r;f<s;f++)e[f].shaperInfo=new rr(ee.X,q.End,"non_indic_cluster",t);}++t;for(let f=s;f<=n;f++)e[f].shaperInfo=new rr(1<<Ks(e[f]),n0(e[f]),a[0],t);r=n+1;}if(r<e.length){++t;for(let s=r;s<e.length;s++)e[s].shaperInfo=new rr(ee.X,q.End,"non_indic_cluster",t);}}function Nt(l){return l.shaperInfo.category&Sd}function et(l){return l.shaperInfo.category&t0}function ft(l){return l.shaperInfo.category&Ir}function pt(l,e){for(let r of l)r.features={[e]:true};return l[0]._font._layoutEngine.engine.GSUBProcessor.applyFeatures([e],l),l.length===1}function Ed(l,e,t){let r=[t,e,t];return pt(r.slice(0,2),"blwf")||pt(r.slice(1,3),"blwf")?q.Below_C:pt(r.slice(0,2),"pstf")||pt(r.slice(1,3),"pstf")||pt(r.slice(0,2),"pref")||pt(r.slice(1,3),"pref")?q.Post_C:q.Base_C}function _d(l,e,t){let r=t.indicConfig,s=l._layoutEngine.engine.GSUBProcessor.features,n=l.glyphForCodePoint(9676).id,a=l.glyphForCodePoint(r.virama).id;if(a){let f=new qe(l,a,[r.virama]);for(let u=0;u<e.length;u++)e[u].shaperInfo.position===q.Base_C&&(e[u].shaperInfo.position=Ed(l,e[u].copy(),f));}for(let f=0,u=Sn(e,0);f<e.length;f=u,u=Sn(e,f)){let{category:i,syllableType:o}=e[f].shaperInfo;if(o==="symbol_cluster"||o==="non_indic_cluster")continue;if(o==="broken_cluster"&&n){let v=new qe(l,n,[9676]);v.shaperInfo=new rr(1<<Ks(v),n0(v),e[f].shaperInfo.syllableType,e[f].shaperInfo.syllable);let k=f;for(;k<u&&e[k].shaperInfo.category===ee.Repha;)k++;e.splice(k++,0,v),u++;}let c=u,h=f,d=false;if(r.rephPos!==q.Ra_To_Become_Reph&&s.rphf&&f+3<=u&&(r.rephMode==="Implicit"&&!et(e[f+2])||r.rephMode==="Explicit"&&e[f+2].shaperInfo.category===ee.ZWJ)){let v=[e[f].copy(),e[f+1].copy(),e[f+2].copy()];if(pt(v.slice(0,2),"rphf")||r.rephMode==="Explicit"&&pt(v,"rphf")){for(h+=2;h<u&&et(e[h]);)h++;c=f,d=true;}}else if(r.rephMode==="Log_Repha"&&e[f].shaperInfo.category===ee.Repha){for(h++;h<u&&et(e[h]);)h++;c=f,d=true;}switch(r.basePos){case "Last":{let v=u,k=false;do{let A=e[--v].shaperInfo;if(Nt(e[v])){if(A.position!==q.Below_C&&(A.position!==q.Post_C||k)){c=v;break}A.position===q.Below_C&&(k=true),c=v;}else if(f<v&&A.category===ee.ZWJ&&e[v-1].shaperInfo.category===ee.H)break}while(v>h);break}case "First":c=f;for(let v=c+1;v<u;v++)Nt(e[v])&&(e[v].shaperInfo.position=q.Below_C);}d&&c===f&&h-c<=2&&(d=false);for(let v=f;v<c;v++){let k=e[v].shaperInfo;k.position=Math.min(q.Pre_C,k.position);}c<u&&(e[c].shaperInfo.position=q.Base_C);for(let v=c+1;v<u;v++)if(e[v].shaperInfo.category===ee.M){for(let k=v+1;k<u;k++)if(Nt(e[k])){e[k].shaperInfo.position=q.Final_C;break}break}if(d&&(e[f].shaperInfo.position=q.Ra_To_Become_Reph),t.isOldSpec){let v=t.unicodeScript!=="Malayalam";for(let k=c+1;k<u;k++)if(e[k].shaperInfo.category===ee.H){let A;for(A=u-1;A>k&&!(Nt(e[A])||v&&e[A].shaperInfo.category===ee.H);A--);if(e[A].shaperInfo.category!==ee.H&&A>k){let w=e[k];e.splice(k,0,...e.splice(k+1,A-k)),e[A]=w;}break}}let g=q.Start;for(let v=f;v<u;v++){let k=e[v].shaperInfo;if(k.category&(t0|ee.N|ee.RS|ee.CM|Ir&k.category)){if(k.position=g,k.category===ee.H&&k.position===q.Pre_M){for(let A=v;A>f;A--)if(e[A-1].shaperInfo.position!==q.Pre_M){k.position=e[A-1].shaperInfo.position;break}}}else k.position!==q.SMVD&&(g=k.position);}let p=c;for(let v=c+1;v<u;v++)if(Nt(e[v])){for(let k=p+1;k<v;k++)e[k].shaperInfo.position<q.SMVD&&(e[k].shaperInfo.position=e[v].shaperInfo.position);p=v;}else e[v].shaperInfo.category===ee.M&&(p=v);let m=e.slice(f,u);m.sort((v,k)=>v.shaperInfo.position-k.shaperInfo.position),e.splice(f,m.length,...m);for(let v=f;v<u;v++)if(e[v].shaperInfo.position===q.Base_C){c=v;break}for(let v=f;v<u&&e[v].shaperInfo.position===q.Ra_To_Become_Reph;v++)e[v].features.rphf=true;let y=!t.isOldSpec&&r.blwfMode==="Pre_And_Post";for(let v=f;v<c;v++)e[v].features.half=true,y&&(e[v].features.blwf=true);for(let v=c+1;v<u;v++)e[v].features.abvf=true,e[v].features.pstf=true,e[v].features.blwf=true;if(t.isOldSpec&&t.unicodeScript==="Devanagari")for(let v=f;v+1<c;v++)e[v].shaperInfo.category===ee.Ra&&e[v+1].shaperInfo.category===ee.H&&(v+1===c||e[v+2].shaperInfo.category===ee.ZWJ)&&(e[v].features.blwf=true,e[v+1].features.blwf=true);let x=2;if(s.pref&&c+x<u)for(let v=c+1;v+x-1<u;v++){let k=[e[v].copy(),e[v+1].copy()];if(pt(k,"pref")){for(let A=0;A<x;A++)e[v++].features.pref=true;if(s.cfar)for(;v<u;v++)e[v].features.cfar=true;break}}for(let v=f+1;v<u;v++)if(et(e[v])){let k=e[v].shaperInfo.category===ee.ZWNJ,A=v;do A--,k&&delete e[A].features.half;while(A>f&&!Nt(e[A]))}}}function Pd(l,e,t){let r=t.indicConfig,s=l._layoutEngine.engine.GSUBProcessor.features;for(let n=0,a=Sn(e,0);n<e.length;n=a,a=Sn(e,n)){let f=!!s.pref,u=n;for(;u<a;u++)if(e[u].shaperInfo.position>=q.Base_C){if(f&&u+1<a){for(let i=u+1;i<a;i++)if(e[i].features.pref){if(!(e[i].substituted&&e[i].isLigated&&!e[i].isMultiplied)){for(u=i;u<a&&ft(e[u]);)u++;e[u].shaperInfo.position=q.BASE_C,f=false;}break}}if(t.unicodeScript==="Malayalam")for(let i=u+1;i<a;i++){for(;i<a&&et(e[i]);)i++;if(i===a||!ft(e[i]))break;for(i++;i<a&&et(e[i]);)i++;i<a&&Nt(e[i])&&e[i].shaperInfo.position===q.Below_C&&(u=i,e[u].shaperInfo.position=q.Base_C);}n<u&&e[u].shaperInfo.position>q.Base_C&&u--;break}if(u===a&&n<u&&e[u-1].shaperInfo.category===ee.ZWJ&&u--,u<a)for(;n<u&&e[u].shaperInfo.category&(ee.N|Ir);)u--;if(n+1<a&&n<u){let i=u===a?u-2:u-1;if(t.unicodeScript!=="Malayalam"&&t.unicodeScript!=="Tamil"){for(;i>n&&!(e[i].shaperInfo.category&(ee.M|Ir));)i--;ft(e[i])&&e[i].shaperInfo.position!==q.Pre_M?i+1<a&&et(e[i+1])&&i++:i=n;}if(n<i&&e[i].shaperInfo.position!==q.Pre_M){for(let o=i;o>n;o--)if(e[o-1].shaperInfo.position===q.Pre_M){let c=o-1;c<u&&u<=i&&u--;let h=e[c];e.splice(c,0,...e.splice(c+1,i-c)),e[i]=h,i--;}}}if(n+1<a&&e[n].shaperInfo.position===q.Ra_To_Become_Reph&&e[n].shaperInfo.category===ee.Repha!==(e[n].isLigated&&!e[n].isMultiplied)){let i,o=r.rephPos,c=false;if(o!==q.After_Post){for(i=n+1;i<u&&!ft(e[i]);)i++;if(i<u&&ft(e[i])&&(i+1<u&&et(e[i+1])&&i++,c=true),!c&&o===q.After_Main){for(i=u;i+1<a&&e[i+1].shaperInfo.position<=q.After_Main;)i++;c=i<a;}if(!c&&o===q.After_Sub){for(i=u;i+1<a&&!(e[i+1].shaperInfo.position&(q.Post_C|q.After_Post|q.SMVD));)i++;c=i<a;}}if(!c){for(i=n+1;i<u&&!ft(e[i]);)i++;i<u&&ft(e[i])&&(i+1<u&&et(e[i+1])&&i++,c=true);}if(!c){for(i=a-1;i>n&&e[i].shaperInfo.position===q.SMVD;)i--;if(ft(e[i]))for(let d=u+1;d<i;d++)e[d].shaperInfo.category===ee.M&&i--;}let h=e[n];e.splice(n,0,...e.splice(n+1,i-n)),e[i]=h,n<u&&u<=i&&u--;}if(f&&u+1<a){for(let i=u+1;i<a;i++)if(e[i].features.pref){if(e[i].isLigated&&!e[i].isMultiplied){let o=u;if(t.unicodeScript!=="Malayalam"&&t.unicodeScript!=="Tamil"){for(;o>n&&!(e[o-1].shaperInfo.category&(ee.M|Ir));)o--;if(o>n&&e[o-1].shaperInfo.category===ee.M){let d=i;for(let g=u+1;g<d;g++)if(e[g].shaperInfo.category===ee.M){o--;break}}}o>n&&ft(e[o-1])&&o<a&&et(e[o])&&o++;let c=i,h=e[c];e.splice(o+1,0,...e.splice(o,c-o)),e[o]=h,o<=u&&u<c&&u++;}break}}e[n].shaperInfo.position===q.Pre_M&&(!n||!/Cf|Mn/.test(yr(e[n-1].codePoints[0])))&&(e[n].features.init=true);}}function Sn(l,e){if(e>=l.length)return e;let t=l[e].shaperInfo.syllable;for(;++e<l.length&&l[e].shaperInfo.syllable===t;);return e}var{categories:Fd,decompositions:fo}=En(Dn),Td=new In.default(wa("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")),Dd=new ga.default(En(Dn)),J=class extends tt{static planFeatures(e){e.addStage(Rd),e.addStage(["locl","ccmp","nukt","akhn"]),e.addStage(po),e.addStage(["rphf"],false),e.addStage(Bd),e.addStage(po),e.addStage(["pref"]),e.addStage(Ld),e.addStage(["rkrf","abvf","blwf","half","pstf","vatu","cjct"]),e.addStage(Md),e.addStage(["abvs","blws","pres","psts","dist","abvm","blwm"]);}static assignFeatures(e,t){for(let r=t.length-1;r>=0;r--){let s=t[r].codePoints[0];if(fo[s]){let n=fo[s].map(a=>{let f=e.font.glyphForCodePoint(a);return new qe(e.font,f.id,[a],t[r].features)});t.splice(r,1,...n);}}}};Fe(J,"zeroMarkWidths","BEFORE_GPOS");function ho(l){return Td.get(l.codePoints[0])}var Js=class{constructor(e,t,r){this.category=e,this.syllableType=t,this.syllable=r;}};function Rd(l,e){let t=0;for(let[r,s,n]of Dd.match(e.map(ho))){++t;for(let f=r;f<=s;f++)e[f].shaperInfo=new Js(Fd[ho(e[f])],n[0],t);let a=e[r].shaperInfo.category==="R"?1:Math.min(3,s-r);for(let f=r;f<r+a;f++)e[f].features.rphf=true;}}function po(l,e){for(let t of e)t.substituted=false;}function Bd(l,e){for(let t of e)t.substituted&&t.features.rphf&&(t.shaperInfo.category="R");}function Ld(l,e){for(let t of e)t.substituted&&(t.shaperInfo.category="VPre");}function Md(l,e){let t=l.glyphForCodePoint(9676).id;for(let r=0,s=mo(e,0);r<e.length;r=s,s=mo(e,r)){let n,a,f=e[r].shaperInfo,u=f.syllableType;if(!(u!=="virama_terminated_cluster"&&u!=="standard_cluster"&&u!=="broken_cluster")){if(u==="broken_cluster"&&t){let i=new qe(l,t,[9676]);for(i.shaperInfo=f,n=r;n<s&&e[n].shaperInfo.category==="R";n++);e.splice(++n,0,i),s++;}if(f.category==="R"&&s-r>1){for(n=r+1;n<s;n++)if(f=e[n].shaperInfo,go(f)||rn(e[n])){rn(e[n])&&n--,e.splice(r,0,...e.splice(r+1,n-r),e[n]);break}}for(n=r,a=s;n<s;n++)f=e[n].shaperInfo,go(f)||rn(e[n])?a=rn(e[n])?n+1:n:(f.category==="VPre"||f.category==="VMPre")&&a<n&&e.splice(a,1,e[n],...e.splice(a,n-a));}}}function mo(l,e){if(e>=l.length)return e;let t=l[e].shaperInfo.syllable;for(;++e<l.length&&l[e].shaperInfo.syllable===t;);return e}function rn(l){return l.shaperInfo.category==="H"&&!l.isLigated}function go(l){return l.category==="B"||l.category==="GB"}var $d={arab:Qe,mong:Qe,syrc:Qe,"nko ":Qe,phag:Qe,mand:Qe,mani:Qe,phlp:Qe,hang:yn,bng2:he,beng:he,dev2:he,deva:he,gjr2:he,gujr:he,guru:he,gur2:he,knda:he,knd2:he,mlm2:he,mlym:he,ory2:he,orya:he,taml:he,tml2:he,telu:he,tel2:he,khmr:he,bali:J,batk:J,brah:J,bugi:J,buhd:J,cakm:J,cham:J,dupl:J,egyp:J,gran:J,hano:J,java:J,kthi:J,kali:J,khar:J,khoj:J,sind:J,lepc:J,limb:J,mahj:J,mtei:J,modi:J,hmng:J,rjng:J,saur:J,shrd:J,sidd:J,sinh:he,sund:J,sylo:J,tglg:J,tagb:J,tale:J,lana:J,tavt:J,takr:J,tibt:J,tfng:J,tirh:J,latn:tt,DFLT:tt};function Nd(l){Array.isArray(l)||(l=[l]);for(let e of l){let t=$d[e];if(t)return t}return tt}var Qs=class extends ar{applyLookup(e,t){switch(e){case 1:{let s=this.coverageIndex(t.coverage);if(s===-1)return false;let n=this.glyphIterator.cur;switch(t.version){case 1:n.id=n.id+t.deltaGlyphID&65535;break;case 2:n.id=t.substitute.get(s);break}return true}case 2:{let s=this.coverageIndex(t.coverage);if(s!==-1){let n=t.sequences.get(s);if(n.length===0)return this.glyphs.splice(this.glyphIterator.index,1),true;this.glyphIterator.cur.id=n[0],this.glyphIterator.cur.ligatureComponent=0;let a=this.glyphIterator.cur.features,f=this.glyphIterator.cur,u=n.slice(1).map((i,o)=>{let c=new qe(this.font,i,void 0,a);return c.shaperInfo=f.shaperInfo,c.isLigated=f.isLigated,c.ligatureComponent=o+1,c.substituted=true,c.isMultiplied=true,c});return this.glyphs.splice(this.glyphIterator.index+1,0,...u),true}return false}case 3:{let s=this.coverageIndex(t.coverage);if(s!==-1){let n=0;return this.glyphIterator.cur.id=t.alternateSet.get(s)[n],true}return false}case 4:{let s=this.coverageIndex(t.coverage);if(s===-1)return false;for(let n of t.ligatureSets.get(s)){let a=this.sequenceMatchIndices(1,n.components);if(!a)continue;let f=this.glyphIterator.cur,u=f.codePoints.slice();for(let p of a)u.push(...this.glyphs[p].codePoints);let i=new qe(this.font,n.glyph,u,f.features);i.shaperInfo=f.shaperInfo,i.isLigated=true,i.substituted=true;let o=f.isMark;for(let p=0;p<a.length&&o;p++)o=this.glyphs[a[p]].isMark;i.ligatureID=o?null:this.ligatureID++;let c=f.ligatureID,h=f.codePoints.length,d=h,g=this.glyphIterator.index+1;for(let p of a){if(o)g=p;else for(;g<p;){var r=d-h+Math.min(this.glyphs[g].ligatureComponent||1,h);this.glyphs[g].ligatureID=i.ligatureID,this.glyphs[g].ligatureComponent=r,g++;}c=this.glyphs[g].ligatureID,h=this.glyphs[g].codePoints.length,d+=h,g++;}if(c&&!o)for(let p=g;p<this.glyphs.length&&this.glyphs[p].ligatureID===c;p++){var r=d-h+Math.min(this.glyphs[p].ligatureComponent||1,h);this.glyphs[p].ligatureComponent=r;}for(let p=a.length-1;p>=0;p--)this.glyphs.splice(a[p],1);return this.glyphs[this.glyphIterator.index]=i,true}return false}case 5:return this.applyContext(t);case 6:return this.applyChainingContext(t);case 7:return this.applyLookup(t.lookupType,t.extension);default:throw new Error(`GSUB lookupType ${e} is not supported`)}}},ea=class extends ar{applyPositionValue(e,t){let r=this.positions[this.glyphIterator.peekIndex(e)];t.xAdvance!=null&&(r.xAdvance+=t.xAdvance),t.yAdvance!=null&&(r.yAdvance+=t.yAdvance),t.xPlacement!=null&&(r.xOffset+=t.xPlacement),t.yPlacement!=null&&(r.yOffset+=t.yPlacement);let s=this.font._variationProcessor,n=this.font.GDEF&&this.font.GDEF.itemVariationStore;s&&n&&(t.xPlaDevice&&(r.xOffset+=s.getDelta(n,t.xPlaDevice.a,t.xPlaDevice.b)),t.yPlaDevice&&(r.yOffset+=s.getDelta(n,t.yPlaDevice.a,t.yPlaDevice.b)),t.xAdvDevice&&(r.xAdvance+=s.getDelta(n,t.xAdvDevice.a,t.xAdvDevice.b)),t.yAdvDevice&&(r.yAdvance+=s.getDelta(n,t.yAdvDevice.a,t.yAdvDevice.b)));}applyLookup(e,t){switch(e){case 1:{let s=this.coverageIndex(t.coverage);if(s===-1)return false;switch(t.version){case 1:this.applyPositionValue(0,t.value);break;case 2:this.applyPositionValue(0,t.values.get(s));break}return true}case 2:{let s=this.glyphIterator.peek();if(!s)return false;let n=this.coverageIndex(t.coverage);if(n===-1)return false;switch(t.version){case 1:let a=t.pairSets.get(n);for(let i of a)if(i.secondGlyph===s.id)return this.applyPositionValue(0,i.value1),this.applyPositionValue(1,i.value2),true;return false;case 2:let f=this.getClassID(this.glyphIterator.cur.id,t.classDef1),u=this.getClassID(s.id,t.classDef2);if(f===-1||u===-1)return false;var r=t.classRecords.get(f).get(u);return this.applyPositionValue(0,r.value1),this.applyPositionValue(1,r.value2),true}}case 3:{let s=this.glyphIterator.peekIndex(),n=this.glyphs[s];if(!n)return false;let a=t.entryExitRecords[this.coverageIndex(t.coverage)];if(!a||!a.exitAnchor)return false;let f=t.entryExitRecords[this.coverageIndex(t.coverage,n.id)];if(!f||!f.entryAnchor)return false;let u=this.getAnchor(f.entryAnchor),i=this.getAnchor(a.exitAnchor),o=this.positions[this.glyphIterator.index],c=this.positions[s],h;switch(this.direction){case "ltr":o.xAdvance=i.x+o.xOffset,h=u.x+c.xOffset,c.xAdvance-=h,c.xOffset-=h;break;case "rtl":h=i.x+o.xOffset,o.xAdvance-=h,o.xOffset-=h,c.xAdvance=u.x+c.xOffset;break}return this.glyphIterator.flags.rightToLeft?(this.glyphIterator.cur.cursiveAttachment=s,o.yOffset=u.y-i.y):(n.cursiveAttachment=this.glyphIterator.index,o.yOffset=i.y-u.y),true}case 4:{let s=this.coverageIndex(t.markCoverage);if(s===-1)return false;let n=this.glyphIterator.index;for(;--n>=0&&(this.glyphs[n].isMark||this.glyphs[n].ligatureComponent>0););if(n<0)return false;let a=this.coverageIndex(t.baseCoverage,this.glyphs[n].id);if(a===-1)return false;let f=t.markArray[s],u=t.baseArray[a][f.class];return this.applyAnchor(f,u,n),true}case 5:{let s=this.coverageIndex(t.markCoverage);if(s===-1)return false;let n=this.glyphIterator.index;for(;--n>=0&&this.glyphs[n].isMark;);if(n<0)return false;let a=this.coverageIndex(t.ligatureCoverage,this.glyphs[n].id);if(a===-1)return false;let f=t.ligatureArray[a],u=this.glyphIterator.cur,i=this.glyphs[n],o=i.ligatureID&&i.ligatureID===u.ligatureID&&u.ligatureComponent>0?Math.min(u.ligatureComponent,i.codePoints.length)-1:i.codePoints.length-1,c=t.markArray[s],h=f[o][c.class];return this.applyAnchor(c,h,n),true}case 6:{let s=this.coverageIndex(t.mark1Coverage);if(s===-1)return false;let n=this.glyphIterator.peekIndex(-1),a=this.glyphs[n];if(!a||!a.isMark)return false;let f=this.glyphIterator.cur,u=false;if(f.ligatureID===a.ligatureID?f.ligatureID?f.ligatureComponent===a.ligatureComponent&&(u=true):u=true:(f.ligatureID&&!f.ligatureComponent||a.ligatureID&&!a.ligatureComponent)&&(u=true),!u)return false;let i=this.coverageIndex(t.mark2Coverage,a.id);if(i===-1)return false;let o=t.mark1Array[s],c=t.mark2Array[i][o.class];return this.applyAnchor(o,c,n),true}case 7:return this.applyContext(t);case 8:return this.applyChainingContext(t);case 9:return this.applyLookup(t.lookupType,t.extension);default:throw new Error(`Unsupported GPOS table: ${e}`)}}applyAnchor(e,t,r){let s=this.getAnchor(t),n=this.getAnchor(e.markAnchor);this.positions[r];let f=this.positions[this.glyphIterator.index];f.xOffset=s.x-n.x,f.yOffset=s.y-n.y,this.glyphIterator.cur.markAttachment=r;}getAnchor(e){let t=e.xCoordinate,r=e.yCoordinate,s=this.font._variationProcessor,n=this.font.GDEF&&this.font.GDEF.itemVariationStore;return s&&n&&(e.xDeviceTable&&(t+=s.getDelta(n,e.xDeviceTable.a,e.xDeviceTable.b)),e.yDeviceTable&&(r+=s.getDelta(n,e.yDeviceTable.a,e.yDeviceTable.b))),{x:t,y:r}}applyFeatures(e,t,r){super.applyFeatures(e,t,r);for(var s=0;s<this.glyphs.length;s++)this.fixCursiveAttachment(s);this.fixMarkAttachment();}fixCursiveAttachment(e){let t=this.glyphs[e];if(t.cursiveAttachment!=null){let r=t.cursiveAttachment;t.cursiveAttachment=null,this.fixCursiveAttachment(r),this.positions[e].yOffset+=this.positions[r].yOffset;}}fixMarkAttachment(){for(let e=0;e<this.glyphs.length;e++){let t=this.glyphs[e];if(t.markAttachment!=null){let r=t.markAttachment;if(this.positions[e].xOffset+=this.positions[r].xOffset,this.positions[e].yOffset+=this.positions[r].yOffset,this.direction==="ltr")for(let s=r;s<e;s++)this.positions[e].xOffset-=this.positions[s].xAdvance,this.positions[e].yOffset-=this.positions[s].yAdvance;else for(let s=r+1;s<e+1;s++)this.positions[e].xOffset+=this.positions[s].xAdvance,this.positions[e].yOffset+=this.positions[s].yAdvance;}}}},ta=class{setup(e){this.glyphInfos=e.glyphs.map(r=>new qe(this.font,r.id,[...r.codePoints]));let t=null;this.GPOSProcessor&&(t=this.GPOSProcessor.selectScript(e.script,e.language,e.direction)),this.GSUBProcessor&&(t=this.GSUBProcessor.selectScript(e.script,e.language,e.direction)),this.shaper=Nd(t),this.plan=new qs(this.font,t,e.direction),this.shaper.plan(this.plan,this.glyphInfos,e.features);for(let r in this.plan.allFeatures)e.features[r]=true;}substitute(e){this.GSUBProcessor&&(this.plan.process(this.GSUBProcessor,this.glyphInfos),e.glyphs=this.glyphInfos.map(t=>this.font.getGlyph(t.id,t.codePoints)));}position(e){return this.shaper.zeroMarkWidths==="BEFORE_GPOS"&&this.zeroMarkAdvances(e.positions),this.GPOSProcessor&&this.plan.process(this.GPOSProcessor,this.glyphInfos,e.positions),this.shaper.zeroMarkWidths==="AFTER_GPOS"&&this.zeroMarkAdvances(e.positions),e.direction==="rtl"&&(e.glyphs.reverse(),e.positions.reverse()),this.GPOSProcessor&&this.GPOSProcessor.features}zeroMarkAdvances(e){for(let t=0;t<this.glyphInfos.length;t++)this.glyphInfos[t].isMark&&(e[t].xAdvance=0,e[t].yAdvance=0);}cleanup(){this.glyphInfos=null,this.plan=null,this.shaper=null;}getAvailableFeatures(e,t){let r=[];return this.GSUBProcessor&&(this.GSUBProcessor.selectScript(e,t),r.push(...Object.keys(this.GSUBProcessor.features))),this.GPOSProcessor&&(this.GPOSProcessor.selectScript(e,t),r.push(...Object.keys(this.GPOSProcessor.features))),r}constructor(e){this.font=e,this.glyphInfos=null,this.plan=null,this.GSUBProcessor=null,this.GPOSProcessor=null,this.fallbackPosition=true,e.GSUB&&(this.GSUBProcessor=new Qs(e,e.GSUB)),e.GPOS&&(this.GPOSProcessor=new ea(e,e.GPOS));}},ra=class{layout(e,t,r,s,n){if(typeof t=="string"&&(n=s,s=r,r=t,t=[]),typeof e=="string"){r==null&&(r=kh(e));var a=this.font.glyphsForString(e);}else {if(r==null){let i=[];for(let o of e)i.push(...o.codePoints);r=Oh(i);}var a=e;}let f=new Us(a,t,r,s,n);return a.length===0?(f.positions=[],f):(this.engine&&this.engine.setup&&this.engine.setup(f),this.substitute(f),this.position(f),this.hideDefaultIgnorables(f.glyphs,f.positions),this.engine&&this.engine.cleanup&&this.engine.cleanup(),f)}substitute(e){this.engine&&this.engine.substitute&&this.engine.substitute(e);}position(e){e.positions=e.glyphs.map(r=>new zs(r.advanceWidth));let t=null;this.engine&&this.engine.position&&(t=this.engine.position(e)),!t&&(!this.engine||this.engine.fallbackPosition)&&(this.unicodeLayoutEngine||(this.unicodeLayoutEngine=new Ns(this.font)),this.unicodeLayoutEngine.positionGlyphs(e.glyphs,e.positions)),(!t||!t.kern)&&e.features.kern!==false&&this.font.kern&&(this.kernProcessor||(this.kernProcessor=new $s(this.font)),this.kernProcessor.process(e.glyphs,e.positions),e.features.kern=true);}hideDefaultIgnorables(e,t){let r=this.font.glyphForCodePoint(32);for(let s=0;s<e.length;s++)this.isDefaultIgnorable(e[s].codePoints[0])&&(e[s]=r,t[s].xAdvance=0,t[s].yAdvance=0);}isDefaultIgnorable(e){let t=e>>16;if(t===0)switch(e>>8){case 0:return e===173;case 3:return e===847;case 6:return e===1564;case 23:return 6068<=e&&e<=6069;case 24:return 6155<=e&&e<=6158;case 32:return 8203<=e&&e<=8207||8234<=e&&e<=8238||8288<=e&&e<=8303;case 254:return 65024<=e&&e<=65039||e===65279;case 255:return 65520<=e&&e<=65528;default:return false}else switch(t){case 1:return 113824<=e&&e<=113827||119155<=e&&e<=119162;case 14:return 917504<=e&&e<=921599;default:return false}}getAvailableFeatures(e,t){let r=[];return this.engine&&r.push(...this.engine.getAvailableFeatures(e,t)),this.font.kern&&r.indexOf("kern")===-1&&r.push("kern"),r}stringsForGlyph(e){let t=new Set,r=this.font._cmapProcessor.codePointsForGlyph(e);for(let s of r)t.add(String.fromCodePoint(s));if(this.engine&&this.engine.stringsForGlyph)for(let s of this.engine.stringsForGlyph(e))t.add(s);return Array.from(t)}constructor(e){this.font=e,this.unicodeLayoutEngine=null,this.kernProcessor=null,this.font.morx?this.engine=new Vs(this.font):(this.font.GSUB||this.font.GPOS)&&(this.engine=new ta(this.font));}},jd={moveTo:"M",lineTo:"L",quadraticCurveTo:"Q",bezierCurveTo:"C",closePath:"Z"},or=class l{toFunction(){return e=>{this.commands.forEach(t=>e[t.command].apply(e,t.args));}}toSVG(){return this.commands.map(t=>{let r=t.args.map(s=>Math.round(s*100)/100);return `${jd[t.command]}${r.join(" ")}`}).join("")}get cbox(){if(!this._cbox){let e=new _t;for(let t of this.commands)for(let r=0;r<t.args.length;r+=2)e.addPoint(t.args[r],t.args[r+1]);this._cbox=Object.freeze(e);}return this._cbox}get bbox(){if(this._bbox)return this._bbox;let e=new _t,t=0,r=0,s=x=>Math.pow(1-x,3)*d[y]+3*Math.pow(1-x,2)*x*g[y]+3*(1-x)*Math.pow(x,2)*p[y]+Math.pow(x,3)*m[y];for(let x of this.commands)switch(x.command){case "moveTo":case "lineTo":let[v,k]=x.args;e.addPoint(v,k),t=v,r=k;break;case "quadraticCurveTo":case "bezierCurveTo":if(x.command==="quadraticCurveTo")var[n,a,c,h]=x.args,f=t+2/3*(n-t),u=r+2/3*(a-r),i=c+2/3*(n-c),o=h+2/3*(a-h);else var[f,u,i,o,c,h]=x.args;e.addPoint(c,h);for(var d=[t,r],g=[f,u],p=[i,o],m=[c,h],y=0;y<=1;y++){let A=6*d[y]-12*g[y]+6*p[y],w=-3*d[y]+9*g[y]-9*p[y]+3*m[y];if(x=3*g[y]-3*d[y],w===0){if(A===0)continue;let F=-x/A;0<F&&F<1&&(y===0?e.addPoint(s(F),e.maxY):y===1&&e.addPoint(e.maxX,s(F)));continue}let C=Math.pow(A,2)-4*x*w;if(C<0)continue;let S=(-A+Math.sqrt(C))/(2*w);0<S&&S<1&&(y===0?e.addPoint(s(S),e.maxY):y===1&&e.addPoint(e.maxX,s(S)));let O=(-A-Math.sqrt(C))/(2*w);0<O&&O<1&&(y===0?e.addPoint(s(O),e.maxY):y===1&&e.addPoint(e.maxX,s(O)));}t=c,r=h;break}return this._bbox=Object.freeze(e)}mapPoints(e){let t=new l;for(let r of this.commands){let s=[];for(let n=0;n<r.args.length;n+=2){let[a,f]=e(r.args[n],r.args[n+1]);s.push(a,f);}t[r.command](...s);}return t}transform(e,t,r,s,n,a){return this.mapPoints((f,u)=>{let i=e*f+r*u+n,o=t*f+s*u+a;return [i,o]})}translate(e,t){return this.transform(1,0,0,1,e,t)}rotate(e){let t=Math.cos(e),r=Math.sin(e);return this.transform(t,r,-r,t,0,0)}scale(e,t=e){return this.transform(e,0,0,t,0,0)}constructor(){this.commands=[],this._bbox=null,this._cbox=null;}};for(let l of ["moveTo","lineTo","quadraticCurveTo","bezierCurveTo","closePath"])or.prototype[l]=function(...e){return this._bbox=this._cbox=null,this.commands.push({command:l,args:e}),this};var xr=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"],ze=class{_getPath(){return new or}_getCBox(){return this.path.cbox}_getBBox(){return this.path.bbox}_getTableMetrics(e){if(this.id<e.metrics.length)return e.metrics.get(this.id);let t=e.metrics.get(e.metrics.length-1);return {advance:t?t.advance:0,bearing:e.bearings.get(this.id-e.metrics.length)||0}}_getMetrics(e){if(this._metrics)return this._metrics;let{advance:t,bearing:r}=this._getTableMetrics(this._font.hmtx);if(this._font.vmtx)var{advance:s,bearing:n}=this._getTableMetrics(this._font.vmtx);else {let a;if((typeof e>"u"||e===null)&&({cbox:e}=this),(a=this._font["OS/2"])&&a.version>0)var s=Math.abs(a.typoAscender-a.typoDescender),n=a.typoAscender-e.maxY;else {let{hhea:f}=this._font;var s=Math.abs(f.ascent-f.descent),n=f.ascent-e.maxY;}}return this._font._variationProcessor&&this._font.HVAR&&(t+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:t,advanceHeight:s,leftBearing:r,topBearing:n}}get cbox(){return this._getCBox()}get bbox(){return this._getBBox()}get path(){return this._getPath()}getScaledPath(e){let t=1/this._font.unitsPerEm*e;return this.path.scale(t)}get advanceWidth(){return this._getMetrics().advanceWidth}get advanceHeight(){return this._getMetrics().advanceHeight}get ligatureCaretPositions(){}_getName(){let{post:e}=this._font;if(!e)return null;switch(e.version){case 1:return xr[this.id];case 2:let t=e.glyphNameIndex[this.id];return t<xr.length?xr[t]:e.names[t-xr.length];case 2.5:return xr[this.id+e.offsets[this.id]];case 4:return String.fromCharCode(e.map[this.id])}}get name(){return this._getName()}render(e,t){e.save();let r=1/this._font.head.unitsPerEm*t;e.scale(r,r),this.path.toFunction()(e),e.fill(),e.restore();}constructor(e,t,r){this.id=e,this.codePoints=t,this._font=r,this.isMark=this.codePoints.length>0&&this.codePoints.every(ns),this.isLigature=this.codePoints.length>1;}};xe([Ae],ze.prototype,"cbox",null);xe([Ae],ze.prototype,"bbox",null);xe([Ae],ze.prototype,"path",null);xe([Ae],ze.prototype,"advanceWidth",null);xe([Ae],ze.prototype,"advanceHeight",null);xe([Ae],ze.prototype,"name",null);var bo=new P({numberOfContours:R,xMin:R,yMin:R,xMax:R,yMax:R}),Ud=1,zd=2,Gd=4,Vd=8,qd=16,Hd=32,Wd=1;var Xd=8,yo=32,Yd=64,Zd=128,Kd=256;var Ve=class l{copy(){return new l(this.onCurve,this.endContour,this.x,this.y)}constructor(e,t,r=0,s=0){this.onCurve=e,this.endContour=t,this.x=r,this.y=s;}},na=class{constructor(e,t,r){this.glyphID=e,this.dx=t,this.dy=r,this.pos=0,this.scaleX=this.scaleY=1,this.scale01=this.scale10=0;}},lr=class extends ze{_getCBox(e){if(this._font._variationProcessor&&!e)return this.path.cbox;let t=this._font._getTableStream("glyf");t.pos+=this._font.loca.offsets[this.id];let r=bo.decode(t),s=new _t(r.xMin,r.yMin,r.xMax,r.yMax);return Object.freeze(s)}_parseGlyphCoord(e,t,r,s){if(r){var n=e.readUInt8();s||(n=-n),n+=t;}else if(s)var n=t;else var n=t+e.readInt16BE();return n}_decode(){let e=this._font.loca.offsets[this.id],t=this._font.loca.offsets[this.id+1];if(e===t)return null;let r=this._font._getTableStream("glyf");r.pos+=e;let s=r.pos,n=bo.decode(r);return n.numberOfContours>0?this._decodeSimple(n,r):n.numberOfContours<0&&this._decodeComposite(n,r,s),n}_decodeSimple(e,t){e.points=[];let r=new I(b,e.numberOfContours).decode(t);e.instructions=new I(L,b).decode(t);let s=[],n=r[r.length-1]+1;for(;s.length<n;){var a=t.readUInt8();if(s.push(a),a&Vd){let o=t.readUInt8();for(let c=0;c<o;c++)s.push(a);}}for(var f=0;f<s.length;f++){var a=s[f];let c=new Ve(!!(a&Ud),r.indexOf(f)>=0,0,0);e.points.push(c);}let u=0;for(var f=0;f<s.length;f++){var a=s[f];e.points[f].x=u=this._parseGlyphCoord(t,u,a&zd,a&qd);}let i=0;for(var f=0;f<s.length;f++){var a=s[f];e.points[f].y=i=this._parseGlyphCoord(t,i,a&Gd,a&Hd);}if(this._font._variationProcessor){let o=e.points.slice();o.push(...this._getPhantomPoints(e)),this._font._variationProcessor.transformPoints(this.id,o),e.phantomPoints=o.slice(-4);}}_decodeComposite(e,t,r=0){e.components=[];let s=false,n=yo;for(;n&yo;){n=t.readUInt16BE();let i=t.pos-r,o=t.readUInt16BE();if(s||(s=(n&Kd)!==0),n&Wd)var a=t.readInt16BE(),f=t.readInt16BE();else var a=t.readInt8(),f=t.readInt8();var u=new na(o,a,f);u.pos=i,n&Xd?u.scaleX=u.scaleY=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824:n&Yd?(u.scaleX=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824,u.scaleY=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824):n&Zd&&(u.scaleX=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824,u.scale01=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824,u.scale10=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824,u.scaleY=(t.readUInt8()<<24|t.readUInt8()<<16)/1073741824),e.components.push(u);}if(this._font._variationProcessor){let i=[];for(let o=0;o<e.components.length;o++){var u=e.components[o];i.push(new Ve(true,true,u.dx,u.dy));}i.push(...this._getPhantomPoints(e)),this._font._variationProcessor.transformPoints(this.id,i),e.phantomPoints=i.splice(-4,4);for(let o=0;o<i.length;o++){let c=i[o];e.components[o].dx=c.x,e.components[o].dy=c.y;}}return s}_getPhantomPoints(e){let t=this._getCBox(true);this._metrics==null&&(this._metrics=ze.prototype._getMetrics.call(this,t));let{advanceWidth:r,advanceHeight:s,leftBearing:n,topBearing:a}=this._metrics;return [new Ve(false,true,e.xMin-n,0),new Ve(false,true,e.xMin-n+r,0),new Ve(false,true,0,e.yMax+a),new Ve(false,true,0,e.yMax+a+s)]}_getContours(){let e=this._decode();if(!e)return [];let t=[];if(e.numberOfContours<0)for(let a of e.components){let f=this._font.getGlyph(a.glyphID)._getContours();for(let u=0;u<f.length;u++){let i=f[u];for(let o=0;o<i.length;o++){let c=i[o],h=c.x*a.scaleX+c.y*a.scale01+a.dx,d=c.y*a.scaleY+c.x*a.scale10+a.dy;t.push(new Ve(c.onCurve,c.endContour,h,d));}}}else t=e.points||[];e.phantomPoints&&!this._font.directory.tables.HVAR&&(this._metrics.advanceWidth=e.phantomPoints[1].x-e.phantomPoints[0].x,this._metrics.advanceHeight=e.phantomPoints[3].y-e.phantomPoints[2].y,this._metrics.leftBearing=e.xMin-e.phantomPoints[0].x,this._metrics.topBearing=e.phantomPoints[2].y-e.yMax);let r=[],s=[];for(let a=0;a<t.length;a++){var n=t[a];s.push(n),n.endContour&&(r.push(s),s=[]);}return r}_getMetrics(){if(this._metrics)return this._metrics;let e=this._getCBox(true);return super._getMetrics(e),this._font._variationProcessor&&!this._font.HVAR&&this.path,this._metrics}_getPath(){let e=this._getContours(),t=new or;for(let s=0;s<e.length;s++){let n=e[s],a=n[0],f=n[n.length-1],u=0;if(a.onCurve){var r=null;u=1;}else {f.onCurve?a=f:a=new Ve(false,false,(a.x+f.x)/2,(a.y+f.y)/2);var r=a;}t.moveTo(a.x,a.y);for(let i=u;i<n.length;i++){let o=n[i],c=i===0?a:n[i-1];if(c.onCurve&&o.onCurve)t.lineTo(o.x,o.y);else if(c.onCurve&&!o.onCurve)var r=o;else if(!c.onCurve&&!o.onCurve){let d=(c.x+o.x)/2,g=(c.y+o.y)/2;t.quadraticCurveTo(c.x,c.y,d,g);var r=o;}else if(!c.onCurve&&o.onCurve){t.quadraticCurveTo(r.x,r.y,o.x,o.y);var r=null;}else throw new Error("Unknown TTF path state")}r&&t.quadraticCurveTo(r.x,r.y,a.x,a.y),t.closePath();}return t}constructor(...e){super(...e),Fe(this,"type","TTF");}},sa=class extends ze{_getName(){return this._font.CFF2?super._getName():this._font["CFF "].getGlyphName(this.id)}bias(e){return e.length<1240?107:e.length<33900?1131:32768}_getPath(){let e=this._font.CFF2||this._font["CFF "],{stream:t}=e,r=e.topDict.CharStrings[this.id],s=r.offset+r.length;t.pos=r.offset;let n=new or,a=[],f=[],u=null,i=0,o=0,c=0,h,d,g=false;this._usedGsubrs=h={},this._usedSubrs=d={};let p=e.globalSubrIndex||[],m=this.bias(p),y=e.privateDictForGlyph(this.id)||{},x=y.Subrs||[],v=this.bias(x),k=e.topDict.vstore&&e.topDict.vstore.itemVariationStore,A=y.vsindex,w=this._font._variationProcessor;function C(){u==null&&(u=a.shift()+y.nominalWidthX);}function S(){return a.length%2!==0&&C(),i+=a.length>>1,a.length=0}function O(T,B){g&&n.closePath(),n.moveTo(T,B),g=true;}let F=function(){for(;t.pos<s;){let $=t.readUInt8();if($<32){let V,H,te,W,z,G,Y,ge,Ce,ke,Le,Ee,He,rt,We,Me;switch($){case 1:case 3:case 18:case 23:S();break;case 4:a.length>1&&C(),c+=a.shift(),O(o,c);break;case 5:for(;a.length>=2;)o+=a.shift(),c+=a.shift(),n.lineTo(o,c);break;case 6:case 7:for(te=$===6;a.length>=1;)te?o+=a.shift():c+=a.shift(),n.lineTo(o,c),te=!te;break;case 8:for(;a.length>0;)W=o+a.shift(),z=c+a.shift(),G=W+a.shift(),Y=z+a.shift(),o=G+a.shift(),c=Y+a.shift(),n.bezierCurveTo(W,z,G,Y,o,c);break;case 10:if(V=a.pop()+v,H=x[V],H){d[V]=true;let Z=t.pos,oe=s;t.pos=H.offset,s=H.offset+H.length,F(),t.pos=Z,s=oe;}break;case 11:if(e.version>=2)break;return;case 14:if(e.version>=2)break;a.length>0&&C(),g&&(n.closePath(),g=false);break;case 15:if(e.version<2)throw new Error("vsindex operator not supported in CFF v1");A=a.pop();break;case 16:{if(e.version<2)throw new Error("blend operator not supported in CFF v1");if(!w)throw new Error("blend operator in non-variation font");let Z=w.getBlendVector(k,A),oe=a.pop(),nt=oe*Z.length,_e=a.length-nt,Pt=_e-oe;for(let st=0;st<oe;st++){let at=a[Pt+st];for(let Ge=0;Ge<Z.length;Ge++)at+=Z[Ge]*a[_e++];a[Pt+st]=at;}for(;nt--;)a.pop();break}case 19:case 20:S(),t.pos+=i+7>>3;break;case 21:a.length>2&&C(),o+=a.shift(),c+=a.shift(),O(o,c);break;case 22:a.length>1&&C(),o+=a.shift(),O(o,c);break;case 24:for(;a.length>=8;)W=o+a.shift(),z=c+a.shift(),G=W+a.shift(),Y=z+a.shift(),o=G+a.shift(),c=Y+a.shift(),n.bezierCurveTo(W,z,G,Y,o,c);o+=a.shift(),c+=a.shift(),n.lineTo(o,c);break;case 25:for(;a.length>=8;)o+=a.shift(),c+=a.shift(),n.lineTo(o,c);W=o+a.shift(),z=c+a.shift(),G=W+a.shift(),Y=z+a.shift(),o=G+a.shift(),c=Y+a.shift(),n.bezierCurveTo(W,z,G,Y,o,c);break;case 26:for(a.length%2&&(o+=a.shift());a.length>=4;)W=o,z=c+a.shift(),G=W+a.shift(),Y=z+a.shift(),o=G,c=Y+a.shift(),n.bezierCurveTo(W,z,G,Y,o,c);break;case 27:for(a.length%2&&(c+=a.shift());a.length>=4;)W=o+a.shift(),z=c,G=W+a.shift(),Y=z+a.shift(),o=G+a.shift(),c=Y,n.bezierCurveTo(W,z,G,Y,o,c);break;case 28:a.push(t.readInt16BE());break;case 29:if(V=a.pop()+m,H=p[V],H){h[V]=true;let Z=t.pos,oe=s;t.pos=H.offset,s=H.offset+H.length,F(),t.pos=Z,s=oe;}break;case 30:case 31:for(te=$===31;a.length>=4;)te?(W=o+a.shift(),z=c,G=W+a.shift(),Y=z+a.shift(),c=Y+a.shift(),o=G+(a.length===1?a.shift():0)):(W=o,z=c+a.shift(),G=W+a.shift(),Y=z+a.shift(),o=G+a.shift(),c=Y+(a.length===1?a.shift():0)),n.bezierCurveTo(W,z,G,Y,o,c),te=!te;break;case 12:switch($=t.readUInt8(),$){case 3:let Z=a.pop(),oe=a.pop();a.push(Z&&oe?1:0);break;case 4:Z=a.pop(),oe=a.pop(),a.push(Z||oe?1:0);break;case 5:Z=a.pop(),a.push(Z?0:1);break;case 9:Z=a.pop(),a.push(Math.abs(Z));break;case 10:Z=a.pop(),oe=a.pop(),a.push(Z+oe);break;case 11:Z=a.pop(),oe=a.pop(),a.push(Z-oe);break;case 12:Z=a.pop(),oe=a.pop(),a.push(Z/oe);break;case 14:Z=a.pop(),a.push(-Z);break;case 15:Z=a.pop(),oe=a.pop(),a.push(Z===oe?1:0);break;case 18:a.pop();break;case 20:let nt=a.pop(),_e=a.pop();f[_e]=nt;break;case 21:_e=a.pop(),a.push(f[_e]||0);break;case 22:let Pt=a.pop(),st=a.pop(),at=a.pop(),Ge=a.pop();a.push(at<=Ge?Pt:st);break;case 23:a.push(Math.random());break;case 24:Z=a.pop(),oe=a.pop(),a.push(Z*oe);break;case 26:Z=a.pop(),a.push(Math.sqrt(Z));break;case 27:Z=a.pop(),a.push(Z,Z);break;case 28:Z=a.pop(),oe=a.pop(),a.push(oe,Z);break;case 29:_e=a.pop(),_e<0?_e=0:_e>a.length-1&&(_e=a.length-1),a.push(a[_e]);break;case 30:let mt=a.pop(),it=a.pop();if(it>=0)for(;it>0;){var T=a[mt-1];for(let ce=mt-2;ce>=0;ce--)a[ce+1]=a[ce];a[0]=T,it--;}else for(;it<0;){var T=a[0];for(let De=0;De<=mt;De++)a[De]=a[De+1];a[mt-1]=T,it++;}break;case 34:W=o+a.shift(),z=c,G=W+a.shift(),Y=z+a.shift(),ge=G+a.shift(),Ce=Y,ke=ge+a.shift(),Le=Ce,Ee=ke+a.shift(),He=Le,rt=Ee+a.shift(),We=He,o=rt,c=We,n.bezierCurveTo(W,z,G,Y,ge,Ce),n.bezierCurveTo(ke,Le,Ee,He,rt,We);break;case 35:Me=[];for(let ce=0;ce<=5;ce++)o+=a.shift(),c+=a.shift(),Me.push(o,c);n.bezierCurveTo(...Me.slice(0,6)),n.bezierCurveTo(...Me.slice(6)),a.shift();break;case 36:W=o+a.shift(),z=c+a.shift(),G=W+a.shift(),Y=z+a.shift(),ge=G+a.shift(),Ce=Y,ke=ge+a.shift(),Le=Ce,Ee=ke+a.shift(),He=Le+a.shift(),rt=Ee+a.shift(),We=He,o=rt,c=We,n.bezierCurveTo(W,z,G,Y,ge,Ce),n.bezierCurveTo(ke,Le,Ee,He,rt,We);break;case 37:let Gt=o,Se=c;Me=[];for(let ce=0;ce<=4;ce++)o+=a.shift(),c+=a.shift(),Me.push(o,c);Math.abs(o-Gt)>Math.abs(c-Se)?(o+=a.shift(),c=Se):(o=Gt,c+=a.shift()),Me.push(o,c),n.bezierCurveTo(...Me.slice(0,6)),n.bezierCurveTo(...Me.slice(6));break;default:throw new Error(`Unknown op: 12 ${$}`)}break;default:throw new Error(`Unknown op: ${$}`)}}else if($<247)a.push($-139);else if($<251){var B=t.readUInt8();a.push(($-247)*256+B+108);}else if($<255){var B=t.readUInt8();a.push(-($-251)*256-B-108);}else a.push(t.readInt32BE()/65536);}};return F(),g&&n.closePath(),n}constructor(...e){super(...e),Fe(this,"type","CFF");}},Jd=new P({originX:b,originY:b,type:new ne(4),data:new Re(l=>l.parent.buflen-l._currentOffset)}),aa=class extends lr{getImageForSize(e){for(let a=0;a<this._font.sbix.imageTables.length;a++){var t=this._font.sbix.imageTables[a];if(t.ppem>=e)break}let r=t.imageOffsets,s=r[this.id],n=r[this.id+1];return s===n?null:(this._font.stream.pos=s,Jd.decode(this._font.stream,{buflen:n-s}))}render(e,t){let r=this.getImageForSize(t);if(r!=null){let s=t/this._font.unitsPerEm;e.image(r.data,{height:t,x:r.originX,y:(this.bbox.minY-r.originY)*s});}this._font.sbix.flags.renderOutlines&&super.render(e,t);}constructor(...e){super(...e),Fe(this,"type","SBIX");}},An=class{constructor(e,t){this.glyph=e,this.color=t;}},ia=class extends ze{_getBBox(){let e=new _t;for(let t=0;t<this.layers.length;t++){let s=this.layers[t].glyph.bbox;e.addPoint(s.minX,s.minY),e.addPoint(s.maxX,s.maxY);}return e}get layers(){let e=this._font.CPAL,t=this._font.COLR,r=0,s=t.baseGlyphRecord.length-1;for(;r<=s;){let o=r+s>>1;var n=t.baseGlyphRecord[o];if(this.id<n.gid)s=o-1;else if(this.id>n.gid)r=o+1;else {var a=n;break}}if(a==null){var f=this._font._getBaseGlyph(this.id),u={red:0,green:0,blue:0,alpha:255};return [new An(f,u)]}let i=[];for(let o=a.firstLayerIndex;o<a.firstLayerIndex+a.numLayers;o++){var n=t.layerRecords[o],u=e.colorRecords[n.paletteIndex],f=this._font._getBaseGlyph(n.gid);i.push(new An(f,u));}return i}render(e,t){for(let{glyph:r,color:s}of this.layers)e.fillColor([s.red,s.green,s.blue],s.alpha/255*100),r.render(e,t);}constructor(...e){super(...e),Fe(this,"type","COLR");}},Qd=32768,ep=4095,tp=32768,vo=16384,rp=8192,wo=4095,xo=128,Co=127,np=128,sp=64,ap=63,oa=class{normalizeCoords(e){let t=[];for(var r=0;r<this.font.fvar.axis.length;r++){let s=this.font.fvar.axis[r];e[r]<s.defaultValue?t.push((e[r]-s.defaultValue+Number.EPSILON)/(s.defaultValue-s.minValue+Number.EPSILON)):t.push((e[r]-s.defaultValue+Number.EPSILON)/(s.maxValue-s.defaultValue+Number.EPSILON));}if(this.font.avar)for(var r=0;r<this.font.avar.segment.length;r++){let n=this.font.avar.segment[r];for(let a=0;a<n.correspondence.length;a++){let f=n.correspondence[a];if(a>=1&&t[r]<f.fromCoord){let u=n.correspondence[a-1];t[r]=((t[r]-u.fromCoord)*(f.toCoord-u.toCoord)+Number.EPSILON)/(f.fromCoord-u.fromCoord+Number.EPSILON)+u.toCoord;break}}}return t}transformPoints(e,t){if(!this.font.fvar||!this.font.gvar)return;let{gvar:r}=this.font;if(e>=r.glyphCount)return;let s=r.offsets[e];if(s===r.offsets[e+1])return;let{stream:n}=this.font;if(n.pos=s,n.pos>=n.length)return;let a=n.readUInt16BE(),f=s+n.readUInt16BE();if(a&Qd){var u=n.pos;n.pos=f;var i=this.decodePoints();f=n.pos,n.pos=u;}let o=t.map(m=>m.copy());a&=ep;for(let m=0;m<a;m++){let y=n.readUInt16BE(),x=n.readUInt16BE();if(x&tp){var c=[];for(let S=0;S<r.axisCount;S++)c.push(n.readInt16BE()/16384);}else {if((x&wo)>=r.globalCoordCount)throw new Error("Invalid gvar table");var c=r.globalCoords[x&wo];}if(x&vo){var h=[];for(let S=0;S<r.axisCount;S++)h.push(n.readInt16BE()/16384);var d=[];for(let S=0;S<r.axisCount;S++)d.push(n.readInt16BE()/16384);}let v=this.tupleFactor(x,c,h,d);if(v===0){f+=y;continue}var u=n.pos;if(n.pos=f,x&rp)var g=this.decodePoints();else var g=i;let A=g.length===0?t.length:g.length,w=this.decodeDeltas(A),C=this.decodeDeltas(A);if(g.length===0)for(let S=0;S<t.length;S++){var p=t[S];p.x+=Math.round(w[S]*v),p.y+=Math.round(C[S]*v);}else {let S=o.map(F=>F.copy()),O=t.map(()=>false);for(let F=0;F<g.length;F++){let T=g[F];if(T<t.length){let B=S[T];O[T]=true,B.x+=w[F]*v,B.y+=C[F]*v;}}this.interpolateMissingDeltas(S,o,O);for(let F=0;F<t.length;F++){let T=S[F].x-o[F].x,B=S[F].y-o[F].y;t[F].x=Math.round(t[F].x+T),t[F].y=Math.round(t[F].y+B);}}f+=y,n.pos=u;}}decodePoints(){let e=this.font.stream,t=e.readUInt8();t&xo&&(t=(t&Co)<<8|e.readUInt8());let r=new Uint16Array(t),s=0,n=0;for(;s<t;){let a=e.readUInt8(),f=(a&Co)+1,u=a&xo?e.readUInt16:e.readUInt8;for(let i=0;i<f&&s<t;i++)n+=u.call(e),r[s++]=n;}return r}decodeDeltas(e){let t=this.font.stream,r=0,s=new Int16Array(e);for(;r<e;){let n=t.readUInt8(),a=(n&ap)+1;if(n&np)r+=a;else {let f=n&sp?t.readInt16BE:t.readInt8;for(let u=0;u<a&&r<e;u++)s[r++]=f.call(t);}}return s}tupleFactor(e,t,r,s){let n=this.normalizedCoords,{gvar:a}=this.font,f=1;for(let u=0;u<a.axisCount;u++)if(t[u]!==0){if(n[u]===0)return 0;if((e&vo)===0){if(n[u]<Math.min(0,t[u])||n[u]>Math.max(0,t[u]))return 0;f=(f*n[u]+Number.EPSILON)/(t[u]+Number.EPSILON);}else {if(n[u]<r[u]||n[u]>s[u])return 0;n[u]<t[u]?f=f*(n[u]-r[u]+Number.EPSILON)/(t[u]-r[u]+Number.EPSILON):f=f*(s[u]-n[u]+Number.EPSILON)/(s[u]-t[u]+Number.EPSILON);}}return f}interpolateMissingDeltas(e,t,r){if(e.length===0)return;let s=0;for(;s<e.length;){let n=s,a=s,f=e[a];for(;!f.endContour;)f=e[++a];for(;s<=a&&!r[s];)s++;if(s>a)continue;let u=s,i=s;for(s++;s<=a;)r[s]&&(this.deltaInterpolate(i+1,s-1,i,s,t,e),i=s),s++;i===u?this.deltaShift(n,a,i,t,e):(this.deltaInterpolate(i+1,a,i,u,t,e),u>0&&this.deltaInterpolate(n,u-1,i,u,t,e)),s=a+1;}}deltaInterpolate(e,t,r,s,n,a){if(e>t)return;let f=["x","y"];for(let i=0;i<f.length;i++){let o=f[i];if(n[r][o]>n[s][o]){var u=r;r=s,s=u;}let c=n[r][o],h=n[s][o],d=a[r][o],g=a[s][o];if(c!==h||d===g){let p=c===h?0:(g-d)/(h-c);for(let m=e;m<=t;m++){let y=n[m][o];y<=c?y+=d-c:y>=h?y+=g-h:y=d+(y-c)*p,a[m][o]=y;}}}}deltaShift(e,t,r,s,n){let a=n[r].x-s[r].x,f=n[r].y-s[r].y;if(!(a===0&&f===0))for(let u=e;u<=t;u++)u!==r&&(n[u].x+=a,n[u].y+=f);}getAdvanceAdjustment(e,t){let r,s;if(t.advanceWidthMapping){let n=e;n>=t.advanceWidthMapping.mapCount&&(n=t.advanceWidthMapping.mapCount-1);t.advanceWidthMapping.entryFormat;({outerIndex:r,innerIndex:s}=t.advanceWidthMapping.mapData[n]);}else r=0,s=e;return this.getDelta(t.itemVariationStore,r,s)}getDelta(e,t,r){if(t>=e.itemVariationData.length)return 0;let s=e.itemVariationData[t];if(r>=s.deltaSets.length)return 0;let n=s.deltaSets[r],a=this.getBlendVector(e,t),f=0;for(let u=0;u<s.regionIndexCount;u++)f+=n.deltas[u]*a[u];return f}getBlendVector(e,t){let r=e.itemVariationData[t];if(this.blendVectors.has(r))return this.blendVectors.get(r);let s=this.normalizedCoords,n=[];for(let a=0;a<r.regionIndexCount;a++){let f=1,u=r.regionIndexes[a],i=e.variationRegionList.variationRegions[u];for(let o=0;o<i.length;o++){let c=i[o],h;c.startCoord>c.peakCoord||c.peakCoord>c.endCoord||c.startCoord<0&&c.endCoord>0&&c.peakCoord!==0||c.peakCoord===0?h=1:s[o]<c.startCoord||s[o]>c.endCoord?h=0:s[o]===c.peakCoord?h=1:s[o]<c.peakCoord?h=(s[o]-c.startCoord+Number.EPSILON)/(c.peakCoord-c.startCoord+Number.EPSILON):h=(c.endCoord-s[o]+Number.EPSILON)/(c.endCoord-c.peakCoord+Number.EPSILON),f*=h;}n[a]=f;}return this.blendVectors.set(r,n),n}constructor(e,t){this.font=e,this.normalizedCoords=this.normalizeCoords(t),this.blendVectors=new Map;}};Promise.resolve();var kn=class{includeGlyph(e){return typeof e=="object"&&(e=e.id),this.mapping[e]==null&&(this.glyphs.push(e),this.mapping[e]=this.glyphs.length-1),this.mapping[e]}constructor(e){this.font=e,this.glyphs=[],this.mapping={},this.includeGlyph(0);}},ip=1,op=2,lp=4,cp=8,up=16,fp=32,On=class{static size(e){return e>=0&&e<=255?1:2}static encode(e,t){t>=0&&t<=255?e.writeUInt8(t):e.writeInt16BE(t);}},So=new P({numberOfContours:R,xMin:R,yMin:R,xMax:R,yMax:R,endPtsOfContours:new I(b,"numberOfContours"),instructions:new I(L,b),flags:new I(L,0),xPoints:new I(On,0),yPoints:new I(On,0)}),la=class{encodeSimple(e,t=[]){let r=[],s=[],n=[],a=[],f=0,u=0,i=0,o=0,c=0;for(let y=0;y<e.commands.length;y++){let x=e.commands[y];for(let v=0;v<x.args.length;v+=2){let k=x.args[v],A=x.args[v+1],w=0;if(x.command==="quadraticCurveTo"&&v===2){let C=e.commands[y+1];if(C&&C.command==="quadraticCurveTo"){let S=(u+C.args[0])/2,O=(i+C.args[1])/2;if(k===S&&A===O)continue}}x.command==="quadraticCurveTo"&&v===0||(w|=ip),w=this._encodePoint(k,u,s,w,op,up),w=this._encodePoint(A,i,n,w,lp,fp),w===o&&f<255?(a[a.length-1]|=cp,f++):(f>0&&(a.push(f),f=0),a.push(w),o=w),u=k,i=A,c++;}x.command==="closePath"&&r.push(c-1);}e.commands.length>1&&e.commands[e.commands.length-1].command!=="closePath"&&r.push(c-1);let h=e.bbox,d={numberOfContours:r.length,xMin:h.minX,yMin:h.minY,xMax:h.maxX,yMax:h.maxY,endPtsOfContours:r,instructions:t,flags:a,xPoints:s,yPoints:n},g=So.size(d),p=4-g%4,m=new ct(g+p);return So.encode(m,d),p!==0&&m.fill(0,p),m.buffer}_encodePoint(e,t,r,s,n,a){let f=e-t;return e===t?s|=a:(-255<=f&&f<=255&&(s|=n,f<0?f=-f:s|=a),r.push(f)),s}},ca=class extends kn{_addGlyph(e){let t=this.font.getGlyph(e),r=t._decode(),s=this.font.loca.offsets[e],n=this.font.loca.offsets[e+1],a=this.font._getTableStream("glyf");a.pos+=s;let f=a.readBuffer(n-s);if(r&&r.numberOfContours<0){f=new Uint8Array(f);let u=new DataView(f.buffer);for(let i of r.components)e=this.includeGlyph(i.glyphID),u.setUint16(i.pos,e);}else r&&this.font._variationProcessor&&(f=this.glyphEncoder.encodeSimple(t.path,r.instructions));return this.glyf.push(f),this.loca.offsets.push(this.offset),this.hmtx.metrics.push({advance:t.advanceWidth,bearing:t._getMetrics().leftBearing}),this.offset+=f.length,this.glyf.length-1}encode(){this.glyf=[],this.offset=0,this.loca={offsets:[],version:this.font.loca.version},this.hmtx={metrics:[],bearings:[]};let e=0;for(;e<this.glyphs.length;)this._addGlyph(this.glyphs[e++]);let t=(0, nn.default)(this.font.maxp);t.numGlyphs=this.glyf.length,this.loca.offsets.push(this.offset);let r=(0, nn.default)(this.font.head);r.indexToLocFormat=this.loca.version;let s=(0, nn.default)(this.font.hhea);return s.numberOfMetrics=this.hmtx.metrics.length,Yo.toBuffer({tables:{head:r,hhea:s,loca:this.loca,maxp:t,"cvt ":this.font["cvt "],prep:this.font.prep,glyf:this.glyf,hmtx:this.hmtx,fpgm:this.font.fpgm}})}constructor(e){super(e),this.glyphEncoder=new la;}},ua=class extends kn{subsetCharstrings(){this.charstrings=[];let e={};for(let t of this.glyphs){this.charstrings.push(this.cff.getCharString(t));let r=this.font.getGlyph(t);r.path;for(let n in r._usedGsubrs)e[n]=true;}this.gsubrs=this.subsetSubrs(this.cff.globalSubrIndex,e);}subsetSubrs(e,t){let r=[];for(let s=0;s<e.length;s++){let n=e[s];t[s]?(this.cff.stream.pos=n.offset,r.push(this.cff.stream.readBuffer(n.length))):r.push(new Uint8Array([11]));}return r}subsetFontdict(e){e.FDArray=[],e.FDSelect={version:0,fds:[]};let t={},r=[],s={};for(let n of this.glyphs){let a=this.cff.fdForGlyph(n);if(a==null)continue;t[a]||(e.FDArray.push(Object.assign({},this.cff.topDict.FDArray[a])),r.push({}),s[a]=e.FDArray.length-1),t[a]=true,e.FDSelect.fds.push(s[a]);let f=this.font.getGlyph(n);f.path;for(let i in f._usedSubrs)r[s[a]][i]=true;}for(let n=0;n<e.FDArray.length;n++){let a=e.FDArray[n];delete a.FontName,a.Private&&a.Private.Subrs&&(a.Private=Object.assign({},a.Private),a.Private.Subrs=this.subsetSubrs(a.Private.Subrs,r[n]));}}createCIDFontdict(e){let t={};for(let s of this.glyphs){let n=this.font.getGlyph(s);n.path;for(let f in n._usedSubrs)t[f]=true;}let r=Object.assign({},this.cff.topDict.Private);return this.cff.topDict.Private&&this.cff.topDict.Private.Subrs&&(r.Subrs=this.subsetSubrs(this.cff.topDict.Private.Subrs,t)),e.FDArray=[{Private:r}],e.FDSelect={version:3,nRanges:1,ranges:[{first:0,fd:0}],sentinel:this.charstrings.length}}addString(e){return e?(this.strings||(this.strings=[]),this.strings.push(e),sn.length+this.strings.length-1):null}encode(){this.subsetCharstrings();let e={version:this.charstrings.length>255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},t=Object.assign({},this.cff.topDict);t.Private=null,t.charset=e,t.Encoding=null,t.CharStrings=this.charstrings;for(let s of ["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"])t[s]=this.addString(this.cff.string(t[s]));t.ROS=[this.addString("Adobe"),this.addString("Identity"),0],t.CIDCount=this.charstrings.length,this.cff.isCIDFont?this.subsetFontdict(t):this.createCIDFontdict(t);let r={version:1,hdrSize:this.cff.hdrSize,offSize:4,header:this.cff.header,nameIndex:[this.cff.postscriptName],topDictIndex:[t],stringIndex:this.strings,globalSubrIndex:this.gsubrs};return Vo.toBuffer(r)}constructor(e){if(super(e),this.cff=this.font["CFF "],!this.cff)throw new Error("Not a CFF Font")}},Ie=class l{static probe(e){let t=Pn.decode(e.slice(0,4));return t==="true"||t==="OTTO"||t==="\0\0\0"}setDefaultLanguage(e=null){this.defaultLanguage=e;}_getTable(e){if(!(e.tag in this._tables))try{this._tables[e.tag]=this._decodeTable(e);}catch{}return this._tables[e.tag]}_getTableStream(e){let t=this.directory.tables[e];return t?(this.stream.pos=t.offset,this.stream):null}_decodeDirectory(){return this.directory=Yo.decode(this.stream,{_startOffset:0})}_decodeTable(e){let t=this.stream.pos,r=this._getTableStream(e.tag),s=mn[e.tag].decode(r,this,e.length);return this.stream.pos=t,s}getName(e,t=this.defaultLanguage||on){let r=this.name&&this.name.records[e];return r&&(r[t]||r[this.defaultLanguage]||r[on]||r.en||r[Object.keys(r)[0]])||null}get postscriptName(){return this.getName("postscriptName")}get fullName(){return this.getName("fullName")}get familyName(){return this.getName("fontFamily")}get subfamilyName(){return this.getName("fontSubfamily")}get copyright(){return this.getName("copyright")}get version(){return this.getName("version")}get ascent(){return this.hhea.ascent}get descent(){return this.hhea.descent}get lineGap(){return this.hhea.lineGap}get underlinePosition(){return this.post.underlinePosition}get underlineThickness(){return this.post.underlineThickness}get italicAngle(){return this.post.italicAngle}get capHeight(){let e=this["OS/2"];return e?e.capHeight:this.ascent}get xHeight(){let e=this["OS/2"];return e?e.xHeight:0}get numGlyphs(){return this.maxp.numGlyphs}get unitsPerEm(){return this.head.unitsPerEm}get bbox(){return Object.freeze(new _t(this.head.xMin,this.head.yMin,this.head.xMax,this.head.yMax))}get _cmapProcessor(){return new Fr(this.cmap)}get characterSet(){return this._cmapProcessor.getCharacterSet()}hasGlyphForCodePoint(e){return !!this._cmapProcessor.lookup(e)}glyphForCodePoint(e){return this.getGlyph(this._cmapProcessor.lookup(e),[e])}glyphsForString(e){let t=[],r=e.length,s=0,n=-1,a=-1;for(;s<=r;){let f=0,u=0;if(s<r){if(f=e.charCodeAt(s++),55296<=f&&f<=56319&&s<r){let i=e.charCodeAt(s);56320<=i&&i<=57343&&(s++,f=((f&1023)<<10)+(i&1023)+65536);}u=65024<=f&&f<=65039||917760<=f&&f<=917999?1:0;}else s++;a===0&&u===1?t.push(this.getGlyph(this._cmapProcessor.lookup(n,f),[n,f])):a===0&&u===0&&t.push(this.glyphForCodePoint(n)),n=f,a=u;}return t}get _layoutEngine(){return new ra(this)}layout(e,t,r,s,n){return this._layoutEngine.layout(e,t,r,s,n)}stringsForGlyph(e){return this._layoutEngine.stringsForGlyph(e)}get availableFeatures(){return this._layoutEngine.getAvailableFeatures()}getAvailableFeatures(e,t){return this._layoutEngine.getAvailableFeatures(e,t)}_getBaseGlyph(e,t=[]){return this._glyphs[e]||(this.directory.tables.glyf?this._glyphs[e]=new lr(e,t,this):(this.directory.tables["CFF "]||this.directory.tables.CFF2)&&(this._glyphs[e]=new sa(e,t,this))),this._glyphs[e]||null}getGlyph(e,t=[]){return this._glyphs[e]||(this.directory.tables.sbix?this._glyphs[e]=new aa(e,t,this):this.directory.tables.COLR&&this.directory.tables.CPAL?this._glyphs[e]=new ia(e,t,this):this._getBaseGlyph(e,t)),this._glyphs[e]||null}createSubset(){return this.directory.tables["CFF "]?new ua(this):new ca(this)}get variationAxes(){let e={};if(!this.fvar)return e;for(let t of this.fvar.axis)e[t.axisTag.trim()]={name:t.name.en,min:t.minValue,default:t.defaultValue,max:t.maxValue};return e}get namedVariations(){let e={};if(!this.fvar)return e;for(let t of this.fvar.instance){let r={};for(let s=0;s<this.fvar.axis.length;s++){let n=this.fvar.axis[s];r[n.axisTag.trim()]=t.coord[s];}e[t.name.en]=r;}return e}getVariation(e){if(!(this.directory.tables.fvar&&(this.directory.tables.gvar&&this.directory.tables.glyf||this.directory.tables.CFF2)))throw new Error("Variations require a font with the fvar, gvar and glyf, or CFF2 tables.");if(typeof e=="string"&&(e=this.namedVariations[e]),typeof e!="object")throw new Error("Variation settings must be either a variation name or settings object.");let t=this.fvar.axis.map((n,a)=>{let f=n.axisTag.trim();return f in e?Math.max(n.minValue,Math.min(n.maxValue,e[f])):n.defaultValue}),r=new ue(this.stream.buffer);r.pos=this._directoryPos;let s=new l(r,t);return s._tables=this._tables,s}get _variationProcessor(){if(!this.fvar)return null;let e=this.variationCoords;return !e&&!this.CFF2?null:(e||(e=this.fvar.axis.map(t=>t.defaultValue)),new oa(this,e))}getFont(e){return this.getVariation(e)}constructor(e,t=null){Fe(this,"type","TTF"),this.defaultLanguage=null,this.stream=e,this.variationCoords=t,this._directoryPos=this.stream.pos,this._tables={},this._glyphs={},this._decodeDirectory();for(let r in this.directory.tables){let s=this.directory.tables[r];mn[r]&&s.length>0&&Object.defineProperty(this,r,{get:this._getTable.bind(this,s)});}}};xe([Ae],Ie.prototype,"bbox",null);xe([Ae],Ie.prototype,"_cmapProcessor",null);xe([Ae],Ie.prototype,"characterSet",null);xe([Ae],Ie.prototype,"_layoutEngine",null);xe([Ae],Ie.prototype,"variationAxes",null);xe([Ae],Ie.prototype,"namedVariations",null);xe([Ae],Ie.prototype,"_variationProcessor",null);var hp=new P({tag:new ne(4),offset:new E(_,"void",{type:"global"}),compLength:_,length:_,origChecksum:_}),s0=new P({tag:new ne(4),flavor:_,length:_,numTables:b,reserved:new ie(b),totalSfntSize:_,majorVersion:b,minorVersion:b,metaOffset:_,metaLength:_,metaOrigLength:_,privOffset:_,privLength:_,tables:new I(hp,"numTables")});s0.process=function(){let l={};for(let e of this.tables)l[e.tag]=e;this.tables=l;};var dp=s0,fa=class extends Ie{static probe(e){return Pn.decode(e.slice(0,4))==="wOFF"}_decodeDirectory(){this.directory=dp.decode(this.stream,{_startOffset:0});}_getTableStream(e){let t=this.directory.tables[e];if(t)if(this.stream.pos=t.offset,t.compLength<t.length){this.stream.pos+=2;let r=new Uint8Array(t.length),s=(0, Io.default)(this.stream.readBuffer(t.compLength-2),r);return new ue(s)}else return this.stream;return null}constructor(...e){super(...e),Fe(this,"type","WOFF");}},ha=class extends lr{_decode(){return this._font._transformedGlyphs[this.id]}_getCBox(){return this.path.bbox}constructor(...e){super(...e),Fe(this,"type","WOFF2");}},Ao={decode(l){let e=0,t=[0,1,2,3,4];for(let r=0;r<t.length;r++){let n=l.readUInt8();if(e&3758096384)throw new Error("Overflow");if(e=e<<7|n&127,(n&128)===0)return e}throw new Error("Bad base 128 number")}},pp=["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"],mp=new P({flags:L,customTag:new yt(new ne(4),l=>(l.flags&63)===63),tag:l=>l.customTag||pp[l.flags&63],length:Ao,transformVersion:l=>l.flags>>>6&3,transformed:l=>l.tag==="glyf"||l.tag==="loca"?l.transformVersion===0:l.transformVersion!==0,transformLength:new yt(Ao,l=>l.transformed)}),a0=new P({tag:new ne(4),flavor:_,length:_,numTables:b,reserved:new ie(b),totalSfntSize:_,totalCompressedSize:_,majorVersion:b,minorVersion:b,metaOffset:_,metaLength:_,metaOrigLength:_,privOffset:_,privLength:_,tables:new I(mp,"numTables")});a0.process=function(){let l={};for(let e=0;e<this.tables.length;e++){let t=this.tables[e];l[t.tag]=t;}return this.tables=l};var gp=a0,da=class extends Ie{static probe(e){return Pn.decode(e.slice(0,4))==="wOF2"}_decodeDirectory(){this.directory=gp.decode(this.stream),this._dataPos=this.stream.pos;}_decompress(){if(!this._decompressed){this.stream.pos=this._dataPos;let e=this.stream.readBuffer(this.directory.totalCompressedSize),t=0;for(let s in this.directory.tables){let n=this.directory.tables[s];n.offset=t,t+=n.transformLength!=null?n.transformLength:n.length;}let r=(0, Eo.default)(e,t);if(!r)throw new Error("Error decoding compressed data in WOFF2");this.stream=new ue(r),this._decompressed=true;}}_decodeTable(e){return this._decompress(),super._decodeTable(e)}_getBaseGlyph(e,t=[]){if(!this._glyphs[e])return this.directory.tables.glyf&&this.directory.tables.glyf.transformed?(this._transformedGlyphs||this._transformGlyfTable(),this._glyphs[e]=new ha(e,t,this)):super._getBaseGlyph(e,t)}_transformGlyfTable(){this._decompress(),this.stream.pos=this.directory.tables.glyf.offset;let e=bp.decode(this.stream),t=[];for(let s=0;s<e.numGlyphs;s++){let n={},a=e.nContours.readInt16BE();if(n.numberOfContours=a,a>0){let f=[],u=0;for(let i=0;i<a;i++){let o=Os(e.nPoints);u+=o,f.push(u);}n.points=xp(e.flags,e.glyphs,u);for(let i=0;i<a;i++)n.points[f[i]-1].endContour=true;var r=Os(e.glyphs);}else if(a<0&&lr.prototype._decodeComposite.call({_font:this},n,e.composites))var r=Os(e.glyphs);t.push(n);}this._transformedGlyphs=t;}constructor(...e){super(...e),Fe(this,"type","WOFF2");}},dt=class{decode(e,t){return new ue(this._buf.decode(e,t))}constructor(e){this.length=e,this._buf=new Re(e);}},bp=new P({version:_,numGlyphs:b,indexFormat:b,nContourStreamSize:_,nPointsStreamSize:_,flagStreamSize:_,glyphStreamSize:_,compositeStreamSize:_,bboxStreamSize:_,instructionStreamSize:_,nContours:new dt("nContourStreamSize"),nPoints:new dt("nPointsStreamSize"),flags:new dt("flagStreamSize"),glyphs:new dt("glyphStreamSize"),composites:new dt("compositeStreamSize"),bboxes:new dt("bboxStreamSize"),instructions:new dt("instructionStreamSize")}),yp=253,vp=254,wp=255,ko=253;function Os(l){let e=l.readUInt8();return e===yp?l.readUInt16BE():e===wp?l.readUInt8()+ko:e===vp?l.readUInt8()+ko*2:e}function Je(l,e){return l&1?e:-e}function xp(l,e,t){let r,s=r=0,n=[];for(let u=0;u<t;u++){let i=0,o=0,c=l.readUInt8(),h=!(c>>7);if(c&=127,c<10)i=0,o=Je(c,((c&14)<<7)+e.readUInt8());else if(c<20)i=Je(c,((c-10&14)<<7)+e.readUInt8()),o=0;else if(c<84){var a=c-20,f=e.readUInt8();i=Je(c,1+(a&48)+(f>>4)),o=Je(c>>1,1+((a&12)<<2)+(f&15));}else if(c<120){var a=c-84;i=Je(c,1+(a/12<<8)+e.readUInt8()),o=Je(c>>1,1+(a%12>>2<<8)+e.readUInt8());}else if(c<124){var f=e.readUInt8();let g=e.readUInt8();i=Je(c,(f<<4)+(g>>4)),o=Je(c>>1,((g&15)<<8)+e.readUInt8());}else i=Je(c,e.readUInt16BE()),o=Je(c>>1,e.readUInt16BE());s+=i,r+=o,n.push(new Ve(h,false,s,r));}return n}var Cp=new K(_,{65536:{numFonts:_,offsets:new I(_,"numFonts")},131072:{numFonts:_,offsets:new I(_,"numFonts"),dsigTag:_,dsigLength:_,dsigOffset:_}}),pa=class{static probe(e){return Pn.decode(e.slice(0,4))==="ttcf"}getFont(e){for(let t of this.header.offsets){let r=new ue(this.stream.buffer);r.pos=t;let s=new Ie(r);if(s.postscriptName===e||s.postscriptName instanceof Uint8Array&&e instanceof Uint8Array&&s.postscriptName.every((n,a)=>e[a]===n))return s}return null}get fonts(){let e=[];for(let t of this.header.offsets){let r=new ue(this.stream.buffer);r.pos=t,e.push(new Ie(r));}return e}constructor(e){if(Fe(this,"type","TTC"),this.stream=e,e.readString(4)!=="ttcf")throw new Error("Not a TrueType collection");this.header=Cp.decode(e);}},Sp=new ne(L);new P({len:_,buf:new Re("len")});var Ap=new P({id:b,nameOffset:R,attr:L,dataOffset:ut,handle:_}),kp=new P({name:new ne(4),maxTypeIndex:b,refList:new E(b,new I(Ap,l=>l.maxTypeIndex+1),{type:"parent"})}),Op=new P({length:b,types:new I(kp,l=>l.length+1)}),Ip=new P({reserved:new ie(L,24),typeList:new E(b,Op),nameListOffset:new E(b,"void")}),Oo=new P({dataOffset:_,map:new E(_,Ip),dataLength:_,mapLength:_}),ma=class{static probe(e){let t=new ue(e);try{var r=Oo.decode(t);}catch{return false}for(let s of r.map.typeList.types)if(s.name==="sfnt")return true;return false}getFont(e){if(!this.sfnt)return null;for(let t of this.sfnt.refList){let r=this.header.dataOffset+t.dataOffset+4,s=new ue(this.stream.buffer.slice(r)),n=new Ie(s);if(n.postscriptName===e||n.postscriptName instanceof Uint8Array&&e instanceof Uint8Array&&n.postscriptName.every((a,f)=>e[f]===a))return n}return null}get fonts(){let e=[];for(let t of this.sfnt.refList){let r=this.header.dataOffset+t.dataOffset+4,s=new ue(this.stream.buffer.slice(r));e.push(new Ie(s));}return e}constructor(e){Fe(this,"type","DFont"),this.stream=e,this.header=Oo.decode(this.stream);for(let t of this.header.map.typeList.types){for(let r of t.refList)r.nameOffset>=0?(this.stream.pos=r.nameOffset+this.header.map.nameListOffset,r.name=Sp.decode(this.stream)):r.name=null;t.name==="sfnt"&&(this.sfnt=t);}}};cr(Ie);cr(fa);cr(da);cr(pa);cr(ma);var Lr=class Lr{constructor(e){lt(this,"hb");lt(this,"faces",new Map);lt(this,"fonts",new Map);lt(this,"blobs",new Map);lt(this,"fontkitFonts",new Map);lt(this,"wasmBaseURL");lt(this,"initPromise");this.wasmBaseURL=e;}static setFallbackLoader(e){Lr.fallbackLoader=e;}async init(){if(this.initPromise){await this.initPromise;return}if(!this.hb){this.initPromise=this._doInit();try{await this.initPromise;}catch(e){throw new Error(`Failed to initialize FontRegistry: ${e instanceof Error?e.message:String(e)}`)}}}async _doInit(){try{this.hb=await Fa("https://shotstack-ingest-api-dev-sources.s3.ap-southeast-2.amazonaws.com/euo5r93oyr/zzz01k9h-yycyx-2x2y6-qx9bj-7n567b/source.wasm");}catch(e){throw this.initPromise=void 0,e}}async getHB(){if(!this.hb)try{await this.init();}catch(e){throw new Error(`Failed to get HarfBuzz instance: ${e instanceof Error?e.message:String(e)}`)}return this.hb}key(e){return `${e.family}__${e.weight??"400"}__${e.style??"normal"}`}async registerFromBytes(e,t){try{this.hb||await this.init();let r=this.key(t);if(this.fonts.has(r))return;let s=this.hb.createBlob(e),n=this.hb.createFace(s,0),a=this.hb.createFont(n),f=n.upem||1e3;a.setScale(f,f);let u=t.weight??"400",i=typeof u=="string"?parseInt(u,10):u;if(i!==400&&typeof a.setVariations=="function")try{a.setVariations(`wght=${i}`);}catch{}this.blobs.set(r,s),this.faces.set(r,n),this.fonts.set(r,a);try{let o=typeof Buffer<"u"?Buffer.from(e):new Uint8Array(e),c=ba(o);if(c.variationAxes&&Object.keys(c.variationAxes).length>0){let h=c.getVariation({wght:i});this.fontkitFonts.set(r,h);}else this.fontkitFonts.set(r,c);}catch{}}catch(r){throw new Error(`Failed to register font "${t.family}": ${r instanceof Error?r.message:String(r)}`)}}async tryFallbackInstall(e){let t=Lr.fallbackLoader;if(!t)return false;try{let r=await t({family:e.family,weight:e.weight??"400",style:e.style??"normal"});return r?(await this.registerFromBytes(r,{family:e.family,weight:e.weight??"400",style:e.style??"normal"}),!0):!1}catch{return false}}async getFont(e){try{this.hb||await this.init();let t=this.key(e),r=this.fonts.get(t);if(r||(r=await this.tryFallbackInstall(e)?this.fonts.get(t):void 0),!r)throw new Error(`Font not registered for ${t}`);return r}catch(t){throw t instanceof Error&&t.message.includes("Font not registered")?t:new Error(`Failed to get font "${e.family}": ${t instanceof Error?t.message:String(t)}`)}}async getFace(e){try{this.hb||await this.init();let t=this.key(e),r=this.faces.get(t);return r||(r=await this.tryFallbackInstall(e)?this.faces.get(t):void 0),r}catch(t){throw new Error(`Failed to get face for "${e.family}": ${t instanceof Error?t.message:String(t)}`)}}async getUnitsPerEm(e){try{return (await this.getFace(e))?.upem||1e3}catch(t){throw new Error(`Failed to get units per em for "${e.family}": ${t instanceof Error?t.message:String(t)}`)}}async glyphPath(e,t){let r=this.key(e);try{let s=this.fontkitFonts.get(r);if(s){let f=s.getGlyph(t);if(f&&f.path)return f.path.toSVG()}let a=(await this.getFont(e)).glyphToPath(t);return a&&a!==""?a:"M 0 0"}catch(s){throw new Error(`Failed to get glyph path for glyph ${t} in font "${e.family}": ${s instanceof Error?s.message:String(s)}`)}}destroy(){try{for(let[,e]of this.fonts)try{e.destroy();}catch{}for(let[,e]of this.faces)try{e.destroy();}catch{}for(let[,e]of this.blobs)try{e.destroy();}catch{}this.fonts.clear(),this.faces.clear(),this.blobs.clear(),this.fontkitFonts.clear(),this.hb=void 0,this.initPromise=void 0;}catch{}}};lt(Lr,"fallbackLoader");var Mr=Lr;var Rn=class{constructor(e){this.fonts=e;}transformText(e,t){switch(t){case "uppercase":return e.toUpperCase();case "lowercase":return e.toLowerCase();case "capitalize":return e.replace(/\b\w/g,r=>r.toUpperCase());default:return e}}async shapeFull(e,t){try{let r=await this.fonts.getHB(),s=r.createBuffer();try{s.addText(e),s.guessSegmentProperties();let n=await this.fonts.getFont(t),f=(await this.fonts.getFace(t))?.upem||1e3;return n.setScale(f,f),r.shape(n,s),s.json()}finally{try{s.destroy();}catch{}}}catch(r){throw new Error(`Failed to shape text with font "${t.family}": ${r instanceof Error?r.message:String(r)}`)}}async layout(e){try{let{textTransform:t,desc:r,fontSize:s,letterSpacing:n,width:a}=e,f=this.transformText(e.text,t);if(!f||f.length===0)return [];let u;try{u=await this.shapeFull(f,r);}catch(x){throw new Error(`Text shaping failed: ${x instanceof Error?x.message:String(x)}`)}let i;try{i=(await this.fonts.getFace(r))?.upem||1e3;}catch(x){throw new Error(`Failed to get font metrics: ${x instanceof Error?x.message:String(x)}`)}let o=s/i,c=u.map(x=>{let v=x.cl,k;return v>=0&&v<f.length&&(k=f[v]),{id:x.g,xAdvance:x.ax*o+n,xOffset:x.dx*o,yOffset:-x.dy*o,cluster:x.cl,char:k}}),h=[],d=[],g=0,p=new Set;for(let x=0;x<f.length;x++)f[x]===" "&&p.add(x);let m=-1;for(let x=0;x<c.length;x++){let v=c[x],k=v.xAdvance;if(v.char===`
4
- `){d.length>0&&h.push({glyphs:d,width:g,y:0}),d=[],g=0,m=x;continue}if(g+k>a&&d.length>0){if(m>-1){let A=m-(x-d.length)+1,w=d.splice(A),C=d.reduce((S,O)=>S+O.xAdvance,0);h.push({glyphs:d,width:C,y:0}),d=w,g=w.reduce((S,O)=>S+O.xAdvance,0);}else h.push({glyphs:d,width:g,y:0}),d=[],g=0;m=-1;}d.push(v),g+=k,p.has(v.cluster)&&(m=x);}d.length>0&&h.push({glyphs:d,width:g,y:0});let y=e.lineHeight*s;for(let x=0;x<h.length;x++)h[x].y=(x+1)*y;return h}catch(t){throw t instanceof Error?t:new Error(`Layout failed: ${String(t)}`)}}};function i0(l,e){return l.type==="linear"?{kind:"linear",angle:l.angle,stops:l.stops,opacity:e}:{kind:"radial",stops:l.stops,opacity:e}}function o0(l,e){let t=Math.max(1,Math.round(e.fontSize*.05)),r=e.baselineY+Math.round(e.fontSize*.1);return l==="line-through"&&(r=e.baselineY-Math.round(e.fontSize*.3)),{x1:e.xStart,x2:e.xStart+e.lineWidth,y:r,width:t}}async function l0(l){let e=[];if(e.push({op:"BeginFrame",width:l.canvas.width,height:l.canvas.height,pixelRatio:l.canvas.pixelRatio,clear:true,bg:l.background&&l.background.color?{color:l.background.color,opacity:l.background.opacity,radius:l.background.borderRadius}:void 0}),l.lines.length===0)return e;let t=Math.max(1,await l.getUnitsPerEm()),r=l.font.size/t,s=l.lines[l.lines.length-1].y,n;switch(l.align.vertical){case "top":n=l.font.size;break;case "bottom":n=l.textRect.height-s+l.font.size;break;case "middle":default:n=(l.textRect.height-s)/2+l.font.size;break}let a=l.style.gradient?i0(l.style.gradient,1):{kind:"solid",color:l.font.color,opacity:l.font.opacity},f=l.style.gradient?l.style.gradient.stops[l.style.gradient.stops.length-1]?.color??l.font.color:l.font.color,u=1/0,i=1/0,o=-1/0,c=-1/0;for(let h of l.lines){let d;switch(l.align.horizontal){case "left":d=0;break;case "right":d=l.textRect.width-h.width;break;case "center":default:d=(l.textRect.width-h.width)/2;break}let g=d,p=n+h.y-l.font.size;for(let m of h.glyphs){let y=await l.glyphPathProvider(m.id);if(!y||y==="M 0 0"){g+=m.xAdvance;continue}let x=g+m.xOffset,v=p+m.yOffset,k=Pp(y),A=x+r*k.x,w=x+r*(k.x+k.w),C=v-r*(k.y+k.h),S=v-r*k.y;A<u&&(u=A),C<i&&(i=C),w>o&&(o=w),S>c&&(c=S),l.shadow&&l.shadow.blur>0&&e.push({isShadow:true,op:"FillPath",path:y,x:x+l.shadow.offsetX,y:v+l.shadow.offsetY,scale:r,fill:{kind:"solid",color:l.shadow.color,opacity:l.shadow.opacity}}),l.stroke&&l.stroke.width>0&&e.push({op:"StrokePath",path:y,x,y:v,scale:r,width:l.stroke.width,color:l.stroke.color,opacity:l.stroke.opacity}),e.push({op:"FillPath",path:y,x,y:v,scale:r,fill:a}),g+=m.xAdvance;}if(l.style.textDecoration!=="none"){let m=o0(l.style.textDecoration,{baselineY:p,fontSize:l.font.size,lineWidth:h.width,xStart:d});e.push({op:"DecorationLine",from:{x:m.x1,y:m.y},to:{x:m.x2,y:m.y},width:m.width,color:f,opacity:l.font.opacity});}}if(u!==1/0){let h={x:u,y:i,w:Math.max(1,o-u),h:Math.max(1,c-i)};for(let d of e)d.op==="FillPath"&&!d.isShadow&&(d.gradientBBox=h);}return e}function _p(l){return l.match(/[MLCQZ]|-?\d*\.?\d+(?:e[-+]?\d+)?/gi)??[]}function Pp(l){let e=_p(l),t=0,r=1/0,s=1/0,n=-1/0,a=-1/0,f=(u,i)=>{u<r&&(r=u),i<s&&(s=i),u>n&&(n=u),i>a&&(a=i);};for(;t<e.length;)switch(e[t++]){case "M":case "L":{let i=parseFloat(e[t++]),o=parseFloat(e[t++]);f(i,o);break}case "C":{let i=parseFloat(e[t++]),o=parseFloat(e[t++]),c=parseFloat(e[t++]),h=parseFloat(e[t++]),d=parseFloat(e[t++]),g=parseFloat(e[t++]);f(i,o),f(c,h),f(d,g);break}case "Q":{let i=parseFloat(e[t++]),o=parseFloat(e[t++]),c=parseFloat(e[t++]),h=parseFloat(e[t++]);f(i,o),f(c,h);break}}return r===1/0?{x:0,y:0,w:0,h:0}:{x:r,y:s,w:n-r,h:a-s}}var Ca=.999;function f0(l,e,t){if(!t.anim||!t.anim.preset)return l;let{preset:r}=t.anim,s=e.reduce((f,u)=>f+u.glyphs.length,0),n=t.anim.duration??Math.max(.3,s/30/t.anim.speed),a=Math.max(0,Math.min(1,t.t/n));switch(r){case "typewriter":return Tp(l,e,a,t.anim.style,t.fontSize,t.t);case "fadeIn":return Bp(l,a);case "slideIn":return Lp(l,a,t.anim.direction??"left",t.fontSize);case "shift":return Rp(l,e,a,t.anim.direction??"left",t.fontSize,t.anim.style,n);case "ascend":return Dp(l,e,a,t.anim.direction??"up",t.fontSize,n);case "movingLetters":return Mp(l,a,t.anim.direction??"up",t.fontSize);default:return l}}var Bn=l=>l.op==="FillPath"&&l.isShadow===true,h0=l=>l.op==="FillPath"&&!l.isShadow;function Fp(l){for(let e of l)if(e.op==="FillPath"){let t=e.fill;if(t?.kind==="solid")return t.color;if((t?.kind==="linear"||t?.kind==="radial")&&Array.isArray(t.stops)&&t.stops.length)return t.stops[t.stops.length-1].color||"#000000"}return "#000000"}function Tp(l,e,t,r,s,n,a){if(r==="word"){let u=Sa(e),i=u.length,o=Math.floor(t*i);if(o===0)return l.filter(g=>g.op==="BeginFrame");let c=0;for(let g=0;g<Math.min(o,u.length);g++)c+=u[g].glyphCount;let h=c0(l,c),d=t>=Ca?h:h.filter(g=>g.op!=="DecorationLine");return t<1&&c>0?u0(d,c,s,n):d}else {let u=e.reduce((h,d)=>h+d.glyphs.length,0),i=Math.floor(t*u);if(i===0)return l.filter(h=>h.op==="BeginFrame");let o=c0(l,i),c=t>=Ca?o:o.filter(h=>h.op!=="DecorationLine");return t<1&&i>0?u0(c,i,s,n):c}}function Dp(l,e,t,r,s,n){let a=Sa(e),f=a.length;if(f===0)return l;let u=[],i=0;for(let o of l)if(o.op==="BeginFrame"){u.push(o);break}for(let o of l)if(o.op==="FillPath"||o.op==="StrokePath"){let c=-1,h=0;for(let d=0;d<a.length;d++){let g=a[d].glyphCount;if(i>=h&&i<h+g){c=d;break}h+=g;}if(c>=0){let d=c/Math.max(1,f)*(n/n),g=Math.min(1,d+.3);if(t>=g)u.push(o);else if(t>d){let p=(t-d)/Math.max(1e-6,g-d),m=Aa(Math.min(1,p)),y=r==="up"?s*.4:-s*.4,x={...o,y:o.y+y*(1-m)};o.op==="FillPath"?x.fill.kind==="solid"?x.fill={...x.fill,opacity:x.fill.opacity*m}:x.fill={...x.fill,opacity:(x.fill.opacity??1)*m}:x.opacity=x.opacity*m,u.push(x);}}h0(o)&&i++;}else o.op==="DecorationLine"&&t>=Ca&&u.push(o);return u}function Rp(l,e,t,r,s,n,a){let f=n==="word",i={left:{x:s*.6,y:0},right:{x:-s*.6,y:0},up:{x:0,y:s*.6},down:{x:0,y:-s*.6}}[r],o=f?Sa(e):[],c=e.reduce((v,k)=>v+k.glyphs.length,0),h=f?o.length:c;if(h===0)return l;let d=[];for(let v of l)if(v.op==="BeginFrame"){d.push(v);break}let g=.3,m=a*.7/Math.max(1,h-1),y=v=>{let k=v*m,A=k/a,w=Math.min(1,(k+g)/a);return {startF:A,endF:w}},x=0;for(let v of l){if(v.op!=="FillPath"&&v.op!=="StrokePath"){v.op==="DecorationLine"&&t>.8&&d.push(v);continue}let k;if(!f)k=x;else {let C=-1,S=0;for(let O=0;O<o.length;O++){let F=o[O].glyphCount;if(x>=S&&x<S+F){C=O;break}S+=F;}k=Math.max(0,C);}let{startF:A,endF:w}=y(k);if(t<=A){let C={...v,x:v.x+i.x,y:v.y+i.y};v.op==="FillPath"?C.fill.kind==="solid"?C.fill={...C.fill,opacity:0}:C.fill={...C.fill,opacity:0}:C.opacity=0,d.push(C);}else if(t>=w)d.push(v);else {let C=(t-A)/Math.max(1e-6,w-A),S=Aa(Math.min(1,C)),O=i.x*(1-S),F=i.y*(1-S),T={...v,x:v.x+O,y:v.y+F};if(v.op==="FillPath"){let B=T.fill.kind==="solid"?T.fill.opacity:T.fill.opacity??1;T.fill.kind==="solid"?T.fill={...T.fill,opacity:B*S}:T.fill={...T.fill,opacity:B*S};}else T.opacity=T.opacity*S;d.push(T);}h0(v)&&x++;}return d}function Bp(l,e){let t=d0(e),r=.95+.05*t;return Np(l,t,r)}function Lp(l,e,t,r){let s=Aa(e),n=zp(1-s,t,r*2),a=d0(e);return jp(l,n.dx,n.dy,a)}function Mp(l,e,t,r){let s=r*.3;return Up(l,t,s,e)}function Sa(l){let e=[],t=0;for(let r=0;r<l.length;r++){let s=l[r],n=$p(s);for(let a of n)a.length>0&&e.push({startGlyph:t,glyphCount:a.length,lineIndex:r}),t+=a.length;}return e}function $p(l){let e=[],t=[];for(let r of l.glyphs)r.char===" "||r.char===" "||r.char===`
5
- `?t.length&&(e.push([...t]),t=[]):t.push(r);return t.length&&e.push(t),e}function c0(l,e){let t=[],r=0,s=false;for(let n of l){if(n.op==="BeginFrame"){t.push(n);continue}if(n.op==="FillPath"&&!Bn(n)){r<e&&(t.push(n),s=true),r++;continue}if(n.op==="StrokePath"){r<e&&t.push(n);continue}if(n.op==="FillPath"&&Bn(n)){r<e&&t.push(n);continue}if(n.op==="DecorationLine"&&s){t.push(n);continue}}return t}function u0(l,e,t,r){if(!(Math.floor(r*2*2)%2===0)||e===0)return l;let a=null,f=0;for(let u of l)if(u.op==="FillPath"&&!Bn(u)&&(f++,f===e)){a=u;break}if(a&&a.op==="FillPath"){let u=Fp(l),i=a.x+t*.5,o=a.y,c={op:"DecorationLine",from:{x:i,y:o-t*.7},to:{x:i,y:o+t*.1},width:Math.max(2,t/25),color:u,opacity:1};return [...l,c]}return l}function Np(l,e,t){let r=0,s=0,n=0;return l.forEach(a=>{a.op==="FillPath"&&(r+=a.x,s+=a.y,n++);}),n>0&&(r/=n,s/=n),l.map(a=>{if(a.op==="FillPath"){let f={...a};if(f.fill.kind==="solid"?f.fill={...f.fill,opacity:f.fill.opacity*e}:f.fill={...f.fill,opacity:(f.fill.opacity??1)*e},t!==1&&n>0){let u=a.x-r,i=a.y-s;f.x=r+u*t,f.y=s+i*t;}return f}if(a.op==="StrokePath"){let f={...a,opacity:a.opacity*e};if(t!==1&&n>0){let u=a.x-r,i=a.y-s;f.x=r+u*t,f.y=s+i*t;}return f}return a.op==="DecorationLine"?{...a,opacity:a.opacity*e}:a})}function jp(l,e,t,r=1){return l.map(s=>{if(s.op==="FillPath"){let n={...s,x:s.x+e,y:s.y+t};return r<1&&(n.fill.kind==="solid"?n.fill={...n.fill,opacity:n.fill.opacity*r}:n.fill={...n.fill,opacity:(n.fill.opacity??1)*r}),n}return s.op==="StrokePath"?{...s,x:s.x+e,y:s.y+t,opacity:s.opacity*r}:s.op==="DecorationLine"?{...s,from:{x:s.from.x+e,y:s.from.y+t},to:{x:s.to.x+e,y:s.to.y+t},opacity:s.opacity*r}:s})}function Up(l,e,t,r){let s=0;return l.map(n=>{if(n.op==="FillPath"||n.op==="StrokePath"){let a=Math.sin(s/5*Math.PI+r*Math.PI*4),f=e==="left"||e==="right"?a*t*(e==="left"?-1:1):0,u=e==="up"||e==="down"?a*t*(e==="up"?-1:1):0,i=Math.min(1,r*2);if(n.op==="FillPath"){Bn(n)||s++;let o={...n,x:n.x+f,y:n.y+u};return o.fill.kind==="solid"?o.fill={...o.fill,opacity:o.fill.opacity*i}:o.fill={...o.fill,opacity:(o.fill.opacity??1)*i},o}return {...n,x:n.x+f,y:n.y+u,opacity:n.opacity*i}}return n})}function zp(l,e,t){let r=l*t;switch(e){case "left":return {dx:-r,dy:0};case "right":return {dx:r,dy:0};case "up":return {dx:0,dy:-r};case "down":return {dx:0,dy:r}}}function d0(l){return l*(2-l)}function Aa(l){return 1-Math.pow(1-l,3)}function ur(l,e=1){let t=/^#?([a-f0-9]{6})$/i.exec(l);if(!t)throw new Error(`Invalid color ${l}`);let r=parseInt(t[1],16),s=r>>16&255,n=r>>8&255,a=r&255;return {r:s,g:n,b:a,a:e}}function p0(l){let e=l.getContext("2d");if(!e)throw new Error("2D context unavailable");return {async render(t){let r=qp(t),s=new Map;for(let n of t){if(n.op==="BeginFrame"){let a=n.pixelRatio,f=n.width,u=n.height;if("width"in l&&"height"in l&&(l.width=Math.floor(f*a),l.height=Math.floor(u*a)),"style"in l&&(l.style.width=`${f}px`,l.style.height=`${u}px`),e.setTransform(a,0,0,a,0,0),n.clear&&e.clearRect(0,0,f,u),n.bg&&n.bg.color){let{color:i,opacity:o,radius:c}=n.bg;if(i){let h=ur(i,o);e.fillStyle=`rgba(${h.r},${h.g},${h.b},${h.a})`,c&&c>0?(Gp(e,0,0,f,u,c),e.fill()):e.fillRect(0,0,f,u);}}continue}if(n.op==="FillPath"){let a=n,f=new Path2D(a.path);e.save(),e.translate(a.x,a.y);let u=a.scale??1;e.scale(u,-u);let i=a.gradientBBox??r,o={x:(i.x-a.x)/u,y:-(i.y-a.y)/u,w:i.w/u,h:i.h/u},c=JSON.stringify({fill:a.fill,bbox:o}),h=s.get(c);h||(h=Vp(e,a.fill,o),s.set(c,h)),e.fillStyle=h,e.fill(f),e.restore();continue}if(n.op==="StrokePath"){let a=n,f=new Path2D(a.path);e.save(),e.translate(a.x,a.y);let u=a.scale??1;e.scale(u,-u);let i=1/Math.abs(u),o=ur(a.color,a.opacity);e.strokeStyle=`rgba(${o.r},${o.g},${o.b},${o.a})`,e.lineWidth=a.width*i,e.lineJoin="round",e.lineCap="round",e.stroke(f),e.restore();continue}if(n.op==="DecorationLine"){e.save();let a=ur(n.color,n.opacity);e.strokeStyle=`rgba(${a.r},${a.g},${a.b},${a.a})`,e.lineWidth=n.width,e.beginPath(),e.moveTo(n.from.x,n.from.y),e.lineTo(n.to.x,n.to.y),e.stroke(),e.restore();continue}}}}}function Gp(l,e,t,r,s,n){let a=new Path2D;a.moveTo(e+n,t),a.arcTo(e+r,t,e+r,t+s,n),a.arcTo(e+r,t+s,e,t+s,n),a.arcTo(e,t+s,e,t,n),a.arcTo(e,t,e+r,t,n),a.closePath(),l.save(),l.fill(a),l.restore();}function Vp(l,e,t){if(e.kind==="solid"){let f=ur(e.color,e.opacity);return `rgba(${f.r},${f.g},${f.b},${f.a})`}let r=t.x+t.w/2,s=t.y+t.h/2,n=Math.max(t.w,t.h)/2,a=f=>{let u=e.kind==="linear"||e.kind==="radial"?e.opacity:1,i=e.kind==="linear"||e.kind==="radial"?e.stops:[];for(let o of i){let c=ur(o.color,u);f.addColorStop(o.offset,`rgba(${c.r},${c.g},${c.b},${c.a})`);}return f};if(e.kind==="linear"){let f=e.angle*Math.PI/180,u=r+Math.cos(f+Math.PI)*n,i=s+Math.sin(f+Math.PI)*n,o=r+Math.cos(f)*n,c=s+Math.sin(f)*n;return a(l.createLinearGradient(u,i,o,c))}else return a(l.createRadialGradient(r,s,0,r,s,n))}function qp(l){let e=1/0,t=1/0,r=-1/0,s=-1/0;for(let n of l){if(n.op!=="FillPath")continue;let a=n;if(a.isShadow)continue;let f=Hp(a.path),u=a.scale??1,i=a.x+u*f.x,o=a.x+u*(f.x+f.w),c=a.y-u*(f.y+f.h),h=a.y-u*f.y;i<e&&(e=i),c<t&&(t=c),o>r&&(r=o),h>s&&(s=h);}return e===1/0?{x:0,y:0,w:1,h:1}:{x:e,y:t,w:Math.max(1,r-e),h:Math.max(1,s-t)}}function Hp(l){let e=Wp(l),t=0,r=1/0,s=1/0,n=-1/0,a=-1/0,f=(u,i)=>{u<r&&(r=u),i<s&&(s=i),u>n&&(n=u),i>a&&(a=i);};for(;t<e.length;)switch(e[t++]){case "M":case "L":{let i=parseFloat(e[t++]),o=parseFloat(e[t++]);f(i,o);break}case "C":{let i=parseFloat(e[t++]),o=parseFloat(e[t++]),c=parseFloat(e[t++]),h=parseFloat(e[t++]),d=parseFloat(e[t++]),g=parseFloat(e[t++]);f(i,o),f(c,h),f(d,g);break}case "Q":{let i=parseFloat(e[t++]),o=parseFloat(e[t++]),c=parseFloat(e[t++]),h=parseFloat(e[t++]);f(i,o),f(c,h);break}}return r===1/0?{x:0,y:0,w:0,h:0}:{x:r,y:s,w:n-r,h:a-s}}function Wp(l){return l.match(/[MLCQZ]|-?\d*\.?\d+(?:e[-+]?\d+)?/gi)??[]}async function fr(l){try{let e=await fetch(l);if(!e.ok)throw new Error(`Failed to fetch ${l}: ${e.status} ${e.statusText}`);try{return await e.arrayBuffer()}catch(t){throw new Error(`Failed to read response body as ArrayBuffer from ${l}: ${t instanceof Error?t.message:String(t)}`)}}catch(e){throw e instanceof Error?e.message.includes("Failed to fetch")||e.message.includes("Failed to read")?e:new Error(`Failed to fetch ${l}: ${e.message}`):new Error(`Failed to fetch ${l}: ${String(e)}`)}}var Ig=l=>l.op==="FillPath"&&l.isShadow===true,Eg=l=>l.op==="FillPath"&&l.isShadow!==true;var m0="https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxP.ttf";async function $g(l={}){let e=l.width??de.DEFAULTS.width,t=l.height??de.DEFAULTS.height,r=l.pixelRatio??de.DEFAULTS.pixelRatio,s="https://shotstack-ingest-api-dev-sources.s3.ap-southeast-2.amazonaws.com/euo5r93oyr/zzz01k9h-yycyx-2x2y6-qx9bj-7n567b/source.wasm",n=new Mr(s),a=new Rn(n);try{Mr.setFallbackLoader(async u=>{let i=(u.family??"Roboto").toLowerCase(),o=`${u.weight??"400"}`,c=u.style??"normal";if(i==="roboto"&&o==="400"&&c==="normal")return fr(m0)}),await n.init();}catch(u){throw new Error(`Failed to initialize font registry: ${u instanceof Error?u.message:String(u)}`)}async function f(u){try{if(u.customFonts)for(let h of u.customFonts)try{let d=await fr(h.src);await n.registerFromBytes(d,{family:h.family,weight:h.weight??"400",style:h.style??"normal"});}catch(d){throw new Error(`Failed to load custom font "${h.family}" from ${h.src}: ${d instanceof Error?d.message:String(d)}`)}let i=u.font??{family:"Roboto",weight:"400",style:"normal",size:48,color:"#000000",opacity:1},o={family:i.family,weight:`${i.weight}`,style:i.style};return await(async()=>{try{await n.getFace(o);}catch{if((i.family||"Roboto").toLowerCase()==="roboto"&&`${i.weight}`=="400"&&i.style==="normal"){let d=await fr(m0);await n.registerFromBytes(d,{family:"Roboto",weight:"400",style:"normal"});}else throw new Error(`Font not registered for ${o.family}__${o.weight}__${o.style}`)}})(),i}catch(i){throw i instanceof Error?i:new Error(`Failed to ensure fonts: ${String(i)}`)}}return {validate(u){try{let{value:i,error:o}=Pa.validate(u,{abortEarly:!1,convert:!0});if(o)throw o;return {value:i}}catch(i){throw i instanceof Error?new Error(`Validation failed: ${i.message}`):new Error(`Validation failed: ${String(i)}`)}},async registerFontFromUrl(u,i){try{let o=await fr(u);await n.registerFromBytes(o,i);}catch(o){throw new Error(`Failed to register font "${i.family}" from URL ${u}: ${o instanceof Error?o.message:String(o)}`)}},async registerFontFromFile(u,i){try{let o;if(typeof u=="string")try{o=await fr(u);}catch(c){throw new Error(`Failed to fetch font from ${u}: ${c instanceof Error?c.message:String(c)}`)}else try{o=await u.arrayBuffer();}catch(c){throw new Error(`Failed to read Blob as ArrayBuffer: ${c instanceof Error?c.message:String(c)}`)}await n.registerFromBytes(o,i);}catch(o){throw o instanceof Error?o:new Error(`Failed to register font "${i.family}" from ${typeof u=="string"?u:"Blob"}: ${String(o)}`)}},async renderFrame(u,i){try{let o=await f(u),c={family:o.family,weight:`${o.weight}`,style:o.style},h;try{h=await a.layout({text:u.text,width:u.width??e,letterSpacing:u.style?.letterSpacing??0,fontSize:o.size,lineHeight:u.style?.lineHeight??1.2,desc:c,textTransform:u.style?.textTransform??"none"});}catch(x){throw new Error(`Failed to layout text: ${x instanceof Error?x.message:String(x)}`)}let d={x:0,y:0,width:u.width??e,height:u.height??t},g=u.width??e,p=u.height??t,m=u.pixelRatio??r,y;try{y=await l0({canvas:{width:g,height:p,pixelRatio:m},textRect:d,lines:h,font:{family:o.family,size:o.size,weight:`${o.weight}`,style:o.style,color:o.color,opacity:o.opacity},style:{lineHeight:u.style?.lineHeight??1.2,textDecoration:u.style?.textDecoration??"none",gradient:u.style?.gradient},stroke:u.stroke,shadow:u.shadow,align:u.align??{horizontal:"center",vertical:"middle"},background:u.background,glyphPathProvider:x=>n.glyphPath(c,x),getUnitsPerEm:()=>n.getUnitsPerEm(c)});}catch(x){throw new Error(`Failed to build draw operations: ${x instanceof Error?x.message:String(x)}`)}try{return f0(y,h,{t:i,fontSize:o.size,anim:u.animation?{preset:u.animation.preset,speed:u.animation.speed,duration:u.animation.duration,style:u.animation.style,direction:u.animation.direction}:void 0})}catch(x){throw new Error(`Failed to apply animation: ${x instanceof Error?x.message:String(x)}`)}}catch(o){throw o instanceof Error?o:new Error(`Failed to render frame at time ${i}s: ${String(o)}`)}},createRenderer(u){try{return p0(u)}catch(i){throw new Error(`Failed to create renderer: ${i instanceof Error?i.message:String(i)}`)}},destroy(){try{n.destroy();}catch{}}}}
6
- export{$g as createTextEngine,Eg as isGlyphFill,Ig as isShadowFill};
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+
5
+ // src/schema/asset-schema.ts
6
+ import Joi from "joi";
7
+
8
+ // src/config/canvas-constants.ts
9
+ var CANVAS_CONFIG = {
10
+ DEFAULTS: {
11
+ width: 800,
12
+ height: 400,
13
+ pixelRatio: 2,
14
+ fontFamily: "Roboto",
15
+ fontSize: 48,
16
+ color: "#000000",
17
+ textAlign: "left"
18
+ },
19
+ LIMITS: {
20
+ minWidth: 1,
21
+ maxWidth: 4096,
22
+ minHeight: 1,
23
+ maxHeight: 4096,
24
+ minFontSize: 1,
25
+ maxFontSize: 512,
26
+ minDuration: 0.1,
27
+ maxDuration: 120,
28
+ maxTextLength: 1e4
29
+ },
30
+ ANIMATION_TYPES: [
31
+ "typewriter",
32
+ "fadeIn",
33
+ "slideIn",
34
+ "shift",
35
+ "ascend",
36
+ "movingLetters"
37
+ ]
38
+ };
39
+
40
+ // src/schema/asset-schema.ts
41
+ var HEX6 = /^#[A-Fa-f0-9]{6}$/;
42
+ var gradientSchema = Joi.object({
43
+ type: Joi.string().valid("linear", "radial").default("linear"),
44
+ angle: Joi.number().min(0).max(360).default(0),
45
+ stops: Joi.array().items(
46
+ Joi.object({
47
+ offset: Joi.number().min(0).max(1).required(),
48
+ color: Joi.string().pattern(HEX6).required()
49
+ }).unknown(false)
50
+ ).min(2).required()
51
+ }).unknown(false);
52
+ var shadowSchema = Joi.object({
53
+ offsetX: Joi.number().default(0),
54
+ offsetY: Joi.number().default(0),
55
+ blur: Joi.number().min(0).default(0),
56
+ color: Joi.string().pattern(HEX6).default("#000000"),
57
+ opacity: Joi.number().min(0).max(1).default(0.5)
58
+ }).unknown(false);
59
+ var strokeSchema = Joi.object({
60
+ width: Joi.number().min(0).default(0),
61
+ color: Joi.string().pattern(HEX6).default("#000000"),
62
+ opacity: Joi.number().min(0).max(1).default(1)
63
+ }).unknown(false);
64
+ var fontSchema = Joi.object({
65
+ family: Joi.string().default(CANVAS_CONFIG.DEFAULTS.fontFamily),
66
+ size: Joi.number().min(CANVAS_CONFIG.LIMITS.minFontSize).max(CANVAS_CONFIG.LIMITS.maxFontSize).default(CANVAS_CONFIG.DEFAULTS.fontSize),
67
+ weight: Joi.alternatives().try(Joi.string(), Joi.number()).default("400"),
68
+ style: Joi.string().valid("normal", "italic", "oblique").default("normal"),
69
+ color: Joi.string().pattern(HEX6).default(CANVAS_CONFIG.DEFAULTS.color),
70
+ opacity: Joi.number().min(0).max(1).default(1)
71
+ }).unknown(false);
72
+ var styleSchema = Joi.object({
73
+ letterSpacing: Joi.number().default(0),
74
+ lineHeight: Joi.number().min(0).max(10).default(1.2),
75
+ textTransform: Joi.string().valid("none", "uppercase", "lowercase", "capitalize").default("none"),
76
+ textDecoration: Joi.string().valid("none", "underline", "line-through").default("none"),
77
+ gradient: gradientSchema.optional()
78
+ }).unknown(false);
79
+ var alignmentSchema = Joi.object({
80
+ horizontal: Joi.string().valid("left", "center", "right").default(CANVAS_CONFIG.DEFAULTS.textAlign),
81
+ vertical: Joi.string().valid("top", "middle", "bottom").default("middle")
82
+ }).unknown(false);
83
+ var animationSchema = Joi.object({
84
+ preset: Joi.string().valid(...CANVAS_CONFIG.ANIMATION_TYPES),
85
+ speed: Joi.number().min(0.1).max(10).default(1),
86
+ duration: Joi.number().min(CANVAS_CONFIG.LIMITS.minDuration).max(CANVAS_CONFIG.LIMITS.maxDuration).optional(),
87
+ style: Joi.string().valid("character", "word").optional().when("preset", {
88
+ is: Joi.valid("typewriter", "shift"),
89
+ then: Joi.optional(),
90
+ otherwise: Joi.forbidden()
91
+ }),
92
+ direction: Joi.string().optional().when("preset", {
93
+ switch: [
94
+ { is: "ascend", then: Joi.valid("up", "down") },
95
+ { is: "shift", then: Joi.valid("left", "right", "up", "down") },
96
+ { is: "slideIn", then: Joi.valid("left", "right", "up", "down") },
97
+ { is: "movingLetters", then: Joi.valid("left", "right", "up", "down") }
98
+ ],
99
+ otherwise: Joi.forbidden()
100
+ })
101
+ }).unknown(false);
102
+ var backgroundSchema = Joi.object({
103
+ color: Joi.string().pattern(HEX6).optional(),
104
+ opacity: Joi.number().min(0).max(1).default(1),
105
+ borderRadius: Joi.number().min(0).default(0)
106
+ }).unknown(false);
107
+ var customFontSchema = Joi.object({
108
+ src: Joi.string().uri().required(),
109
+ family: Joi.string().required(),
110
+ weight: Joi.alternatives().try(Joi.string(), Joi.number()).optional(),
111
+ style: Joi.string().optional(),
112
+ originalFamily: Joi.string().optional()
113
+ }).unknown(false);
114
+ var RichTextAssetSchema = Joi.object({
115
+ type: Joi.string().valid("rich-text").required(),
116
+ text: Joi.string().allow("").max(CANVAS_CONFIG.LIMITS.maxTextLength).default(""),
117
+ width: Joi.number().min(CANVAS_CONFIG.LIMITS.minWidth).max(CANVAS_CONFIG.LIMITS.maxWidth).default(CANVAS_CONFIG.DEFAULTS.width).optional(),
118
+ height: Joi.number().min(CANVAS_CONFIG.LIMITS.minHeight).max(CANVAS_CONFIG.LIMITS.maxHeight).default(CANVAS_CONFIG.DEFAULTS.height).optional(),
119
+ font: fontSchema.optional(),
120
+ style: styleSchema.optional(),
121
+ stroke: strokeSchema.optional(),
122
+ shadow: shadowSchema.optional(),
123
+ background: backgroundSchema.optional(),
124
+ align: alignmentSchema.optional(),
125
+ animation: animationSchema.optional(),
126
+ customFonts: Joi.array().items(customFontSchema).optional(),
127
+ cacheEnabled: Joi.boolean().default(true),
128
+ pixelRatio: Joi.number().min(1).max(3).default(CANVAS_CONFIG.DEFAULTS.pixelRatio)
129
+ }).unknown(false);
130
+
131
+ // src/wasm/hb-loader.ts
132
+ var hbSingleton = null;
133
+ function isNode() {
134
+ return typeof process !== "undefined" && process.versions != null && process.versions.node != null;
135
+ }
136
+ async function loadWasmWeb(wasmBaseURL) {
137
+ try {
138
+ if (wasmBaseURL) {
139
+ const url = wasmBaseURL.endsWith(".wasm") ? wasmBaseURL : wasmBaseURL.endsWith("/") ? `${wasmBaseURL}hb.wasm` : `${wasmBaseURL}/hb.wasm`;
140
+ console.log(`Fetching WASM from: ${url}`);
141
+ const response = await fetch(url);
142
+ if (response.ok) {
143
+ const arrayBuffer = await response.arrayBuffer();
144
+ const bytes = new Uint8Array(arrayBuffer);
145
+ if (bytes.length >= 4 && bytes[0] === 0 && bytes[1] === 97 && bytes[2] === 115 && bytes[3] === 109) {
146
+ console.log(`\u2705 Valid WASM binary loaded (${bytes.length} bytes)`);
147
+ return arrayBuffer;
148
+ }
149
+ }
150
+ }
151
+ return void 0;
152
+ } catch (err) {
153
+ console.error("Error in loadWasmWeb:", err);
154
+ return void 0;
155
+ }
156
+ }
157
+ function setupWasmFetchInterceptor(wasmBinary) {
158
+ const originalFetch = window.fetch;
159
+ window.fetch = function(input, init) {
160
+ const url = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
161
+ if (url.includes("hb.wasm") || url.endsWith(".wasm")) {
162
+ console.log(`\u{1F504} Intercepted fetch for: ${url}`);
163
+ return Promise.resolve(
164
+ new Response(wasmBinary, {
165
+ status: 200,
166
+ statusText: "OK",
167
+ headers: {
168
+ "Content-Type": "application/wasm",
169
+ "Content-Length": wasmBinary.byteLength.toString()
170
+ }
171
+ })
172
+ );
173
+ }
174
+ return originalFetch.apply(this, [input, init]);
175
+ };
176
+ }
177
+ async function initHB(wasmBaseURL) {
178
+ if (hbSingleton) return hbSingleton;
179
+ try {
180
+ let wasmBinary;
181
+ wasmBinary = await loadWasmWeb(wasmBaseURL);
182
+ if (!wasmBinary) {
183
+ throw new Error("Failed to load WASM binary from any source");
184
+ }
185
+ console.log(`\u2705 WASM binary loaded successfully (${wasmBinary.byteLength} bytes)`);
186
+ if (!isNode()) {
187
+ setupWasmFetchInterceptor(wasmBinary);
188
+ }
189
+ const mod = await import("harfbuzzjs");
190
+ const candidate = mod.default;
191
+ let hb;
192
+ if (typeof candidate === "function") {
193
+ hb = await candidate();
194
+ } else if (candidate && typeof candidate.then === "function") {
195
+ hb = await candidate;
196
+ } else {
197
+ hb = candidate;
198
+ }
199
+ if (!hb || typeof hb.createBuffer !== "function" || typeof hb.createFont !== "function") {
200
+ throw new Error("Failed to initialize HarfBuzz: unexpected export shape from 'harfbuzzjs'.");
201
+ }
202
+ hbSingleton = hb;
203
+ console.log("\u2705 HarfBuzz initialized successfully");
204
+ return hbSingleton;
205
+ } catch (err) {
206
+ console.error("Failed to initialize HarfBuzz:", err);
207
+ throw new Error(
208
+ `Failed to initialize HarfBuzz: ${err instanceof Error ? err.message : String(err)}`
209
+ );
210
+ }
211
+ }
212
+
213
+ // src/core/font-registry.ts
214
+ import * as fontkit from "fontkit";
215
+ var _FontRegistry = class _FontRegistry {
216
+ constructor(wasmBaseURL) {
217
+ __publicField(this, "hb");
218
+ __publicField(this, "faces", /* @__PURE__ */ new Map());
219
+ __publicField(this, "fonts", /* @__PURE__ */ new Map());
220
+ __publicField(this, "blobs", /* @__PURE__ */ new Map());
221
+ __publicField(this, "fontkitFonts", /* @__PURE__ */ new Map());
222
+ __publicField(this, "wasmBaseURL");
223
+ __publicField(this, "initPromise");
224
+ this.wasmBaseURL = wasmBaseURL;
225
+ }
226
+ static setFallbackLoader(loader) {
227
+ _FontRegistry.fallbackLoader = loader;
228
+ }
229
+ async init() {
230
+ if (this.initPromise) {
231
+ await this.initPromise;
232
+ return;
233
+ }
234
+ if (this.hb) return;
235
+ this.initPromise = this._doInit();
236
+ try {
237
+ await this.initPromise;
238
+ } catch (err) {
239
+ throw new Error(
240
+ `Failed to initialize FontRegistry: ${err instanceof Error ? err.message : String(err)}`
241
+ );
242
+ }
243
+ }
244
+ async _doInit() {
245
+ try {
246
+ this.hb = await initHB(
247
+ "https://shotstack-ingest-api-dev-sources.s3.ap-southeast-2.amazonaws.com/euo5r93oyr/zzz01k9h-yycyx-2x2y6-qx9bj-7n567b/source.wasm"
248
+ );
249
+ } catch (error) {
250
+ this.initPromise = void 0;
251
+ throw error;
252
+ }
253
+ }
254
+ async getHB() {
255
+ if (!this.hb) {
256
+ try {
257
+ await this.init();
258
+ } catch (err) {
259
+ throw new Error(
260
+ `Failed to get HarfBuzz instance: ${err instanceof Error ? err.message : String(err)}`
261
+ );
262
+ }
263
+ }
264
+ return this.hb;
265
+ }
266
+ key(desc) {
267
+ return `${desc.family}__${desc.weight ?? "400"}__${desc.style ?? "normal"}`;
268
+ }
269
+ async registerFromBytes(bytes, desc) {
270
+ try {
271
+ if (!this.hb) await this.init();
272
+ const k = this.key(desc);
273
+ if (this.fonts.has(k)) return;
274
+ const blob = this.hb.createBlob(bytes);
275
+ const face = this.hb.createFace(blob, 0);
276
+ const font = this.hb.createFont(face);
277
+ const upem = face.upem || 1e3;
278
+ font.setScale(upem, upem);
279
+ const weight = desc.weight ?? "400";
280
+ const weightNum = typeof weight === "string" ? parseInt(weight, 10) : weight;
281
+ if (weightNum !== 400 && typeof font.setVariations === "function") {
282
+ try {
283
+ font.setVariations(`wght=${weightNum}`);
284
+ } catch (e) {
285
+ }
286
+ }
287
+ this.blobs.set(k, blob);
288
+ this.faces.set(k, face);
289
+ this.fonts.set(k, font);
290
+ try {
291
+ const buffer = typeof Buffer !== "undefined" ? Buffer.from(bytes) : new Uint8Array(bytes);
292
+ const fkFont = fontkit.create(buffer);
293
+ if (fkFont.variationAxes && Object.keys(fkFont.variationAxes).length > 0) {
294
+ const variationFont = fkFont.getVariation({ wght: weightNum });
295
+ this.fontkitFonts.set(k, variationFont);
296
+ console.log(`\u2705 Registered variable font: ${desc.family} weight=${weightNum}`);
297
+ } else {
298
+ this.fontkitFonts.set(k, fkFont);
299
+ console.log(`\u2705 Registered static font: ${desc.family}`);
300
+ }
301
+ } catch (err) {
302
+ console.warn(`\u26A0\uFE0F Fontkit failed for ${desc.family}:`, err);
303
+ }
304
+ } catch (err) {
305
+ throw new Error(
306
+ `Failed to register font "${desc.family}": ${err instanceof Error ? err.message : String(err)}`
307
+ );
308
+ }
309
+ }
310
+ async tryFallbackInstall(desc) {
311
+ const loader = _FontRegistry.fallbackLoader;
312
+ if (!loader) return false;
313
+ try {
314
+ const bytes = await loader({
315
+ family: desc.family,
316
+ weight: desc.weight ?? "400",
317
+ style: desc.style ?? "normal"
318
+ });
319
+ if (!bytes) return false;
320
+ await this.registerFromBytes(bytes, {
321
+ family: desc.family,
322
+ weight: desc.weight ?? "400",
323
+ style: desc.style ?? "normal"
324
+ });
325
+ return true;
326
+ } catch {
327
+ return false;
328
+ }
329
+ }
330
+ async getFont(desc) {
331
+ try {
332
+ if (!this.hb) await this.init();
333
+ const k = this.key(desc);
334
+ let f = this.fonts.get(k);
335
+ if (!f) {
336
+ const installed = await this.tryFallbackInstall(desc);
337
+ f = installed ? this.fonts.get(k) : void 0;
338
+ }
339
+ if (!f) throw new Error(`Font not registered for ${k}`);
340
+ return f;
341
+ } catch (err) {
342
+ if (err instanceof Error && err.message.includes("Font not registered")) {
343
+ throw err;
344
+ }
345
+ throw new Error(
346
+ `Failed to get font "${desc.family}": ${err instanceof Error ? err.message : String(err)}`
347
+ );
348
+ }
349
+ }
350
+ async getFace(desc) {
351
+ try {
352
+ if (!this.hb) await this.init();
353
+ const k = this.key(desc);
354
+ let face = this.faces.get(k);
355
+ if (!face) {
356
+ const installed = await this.tryFallbackInstall(desc);
357
+ face = installed ? this.faces.get(k) : void 0;
358
+ }
359
+ return face;
360
+ } catch (err) {
361
+ throw new Error(
362
+ `Failed to get face for "${desc.family}": ${err instanceof Error ? err.message : String(err)}`
363
+ );
364
+ }
365
+ }
366
+ async getUnitsPerEm(desc) {
367
+ try {
368
+ const face = await this.getFace(desc);
369
+ return face?.upem || 1e3;
370
+ } catch (err) {
371
+ throw new Error(
372
+ `Failed to get units per em for "${desc.family}": ${err instanceof Error ? err.message : String(err)}`
373
+ );
374
+ }
375
+ }
376
+ async glyphPath(desc, glyphId) {
377
+ const k = this.key(desc);
378
+ try {
379
+ const fkFont = this.fontkitFonts.get(k);
380
+ if (fkFont) {
381
+ const glyph = fkFont.getGlyph(glyphId);
382
+ if (glyph && glyph.path) {
383
+ return glyph.path.toSVG();
384
+ }
385
+ }
386
+ const font = await this.getFont(desc);
387
+ const path = font.glyphToPath(glyphId);
388
+ return path && path !== "" ? path : "M 0 0";
389
+ } catch (err) {
390
+ throw new Error(
391
+ `Failed to get glyph path for glyph ${glyphId} in font "${desc.family}": ${err instanceof Error ? err.message : String(err)}`
392
+ );
393
+ }
394
+ }
395
+ destroy() {
396
+ try {
397
+ for (const [, f] of this.fonts) {
398
+ try {
399
+ f.destroy();
400
+ } catch (err) {
401
+ console.error(
402
+ `Error destroying font: ${err instanceof Error ? err.message : String(err)}`
403
+ );
404
+ }
405
+ }
406
+ for (const [, f] of this.faces) {
407
+ try {
408
+ f.destroy();
409
+ } catch (err) {
410
+ console.error(
411
+ `Error destroying face: ${err instanceof Error ? err.message : String(err)}`
412
+ );
413
+ }
414
+ }
415
+ for (const [, b] of this.blobs) {
416
+ try {
417
+ b.destroy();
418
+ } catch (err) {
419
+ console.error(
420
+ `Error destroying blob: ${err instanceof Error ? err.message : String(err)}`
421
+ );
422
+ }
423
+ }
424
+ this.fonts.clear();
425
+ this.faces.clear();
426
+ this.blobs.clear();
427
+ this.fontkitFonts.clear();
428
+ this.hb = void 0;
429
+ this.initPromise = void 0;
430
+ } catch (err) {
431
+ console.error(
432
+ `Error during FontRegistry cleanup: ${err instanceof Error ? err.message : String(err)}`
433
+ );
434
+ }
435
+ }
436
+ };
437
+ __publicField(_FontRegistry, "fallbackLoader");
438
+ var FontRegistry = _FontRegistry;
439
+
440
+ // src/core/layout.ts
441
+ var LayoutEngine = class {
442
+ constructor(fonts) {
443
+ this.fonts = fonts;
444
+ }
445
+ transformText(t, tr) {
446
+ switch (tr) {
447
+ case "uppercase":
448
+ return t.toUpperCase();
449
+ case "lowercase":
450
+ return t.toLowerCase();
451
+ case "capitalize":
452
+ return t.replace(/\b\w/g, (c) => c.toUpperCase());
453
+ default:
454
+ return t;
455
+ }
456
+ }
457
+ async shapeFull(text, desc) {
458
+ try {
459
+ const hb = await this.fonts.getHB();
460
+ const buffer = hb.createBuffer();
461
+ try {
462
+ buffer.addText(text);
463
+ buffer.guessSegmentProperties();
464
+ const font = await this.fonts.getFont(desc);
465
+ const face = await this.fonts.getFace(desc);
466
+ const upem = face?.upem || 1e3;
467
+ font.setScale(upem, upem);
468
+ hb.shape(font, buffer);
469
+ const result = buffer.json();
470
+ return result;
471
+ } finally {
472
+ try {
473
+ buffer.destroy();
474
+ } catch (err) {
475
+ console.error(
476
+ `Error destroying HarfBuzz buffer: ${err instanceof Error ? err.message : String(err)}`
477
+ );
478
+ }
479
+ }
480
+ } catch (err) {
481
+ throw new Error(
482
+ `Failed to shape text with font "${desc.family}": ${err instanceof Error ? err.message : String(err)}`
483
+ );
484
+ }
485
+ }
486
+ async layout(params) {
487
+ try {
488
+ const { textTransform, desc, fontSize, letterSpacing, width } = params;
489
+ const input = this.transformText(params.text, textTransform);
490
+ if (!input || input.length === 0) {
491
+ return [];
492
+ }
493
+ let shaped;
494
+ try {
495
+ shaped = await this.shapeFull(input, desc);
496
+ } catch (err) {
497
+ throw new Error(`Text shaping failed: ${err instanceof Error ? err.message : String(err)}`);
498
+ }
499
+ let upem;
500
+ try {
501
+ const face = await this.fonts.getFace(desc);
502
+ upem = face?.upem || 1e3;
503
+ } catch (err) {
504
+ throw new Error(
505
+ `Failed to get font metrics: ${err instanceof Error ? err.message : String(err)}`
506
+ );
507
+ }
508
+ const scale = fontSize / upem;
509
+ const glyphs = shaped.map((g) => {
510
+ const charIndex = g.cl;
511
+ let char;
512
+ if (charIndex >= 0 && charIndex < input.length) {
513
+ char = input[charIndex];
514
+ }
515
+ return {
516
+ id: g.g,
517
+ xAdvance: g.ax * scale + letterSpacing,
518
+ xOffset: g.dx * scale,
519
+ yOffset: -g.dy * scale,
520
+ cluster: g.cl,
521
+ char
522
+ };
523
+ });
524
+ const lines = [];
525
+ let currentLine = [];
526
+ let currentWidth = 0;
527
+ const spaceIndices = /* @__PURE__ */ new Set();
528
+ for (let i = 0; i < input.length; i++) {
529
+ if (input[i] === " ") {
530
+ spaceIndices.add(i);
531
+ }
532
+ }
533
+ let lastBreakIndex = -1;
534
+ for (let i = 0; i < glyphs.length; i++) {
535
+ const glyph = glyphs[i];
536
+ const glyphWidth = glyph.xAdvance;
537
+ if (glyph.char === "\n") {
538
+ if (currentLine.length > 0) {
539
+ lines.push({
540
+ glyphs: currentLine,
541
+ width: currentWidth,
542
+ y: 0
543
+ });
544
+ }
545
+ currentLine = [];
546
+ currentWidth = 0;
547
+ lastBreakIndex = i;
548
+ continue;
549
+ }
550
+ if (currentWidth + glyphWidth > width && currentLine.length > 0) {
551
+ if (lastBreakIndex > -1) {
552
+ const breakPoint = lastBreakIndex - (i - currentLine.length) + 1;
553
+ const nextLine = currentLine.splice(breakPoint);
554
+ const lineWidth = currentLine.reduce((sum, g) => sum + g.xAdvance, 0);
555
+ lines.push({
556
+ glyphs: currentLine,
557
+ width: lineWidth,
558
+ y: 0
559
+ });
560
+ currentLine = nextLine;
561
+ currentWidth = nextLine.reduce((sum, g) => sum + g.xAdvance, 0);
562
+ } else {
563
+ lines.push({
564
+ glyphs: currentLine,
565
+ width: currentWidth,
566
+ y: 0
567
+ });
568
+ currentLine = [];
569
+ currentWidth = 0;
570
+ }
571
+ lastBreakIndex = -1;
572
+ }
573
+ currentLine.push(glyph);
574
+ currentWidth += glyphWidth;
575
+ if (spaceIndices.has(glyph.cluster)) {
576
+ lastBreakIndex = i;
577
+ }
578
+ }
579
+ if (currentLine.length > 0) {
580
+ lines.push({
581
+ glyphs: currentLine,
582
+ width: currentWidth,
583
+ y: 0
584
+ });
585
+ }
586
+ const lineHeight = params.lineHeight * fontSize;
587
+ for (let i = 0; i < lines.length; i++) {
588
+ lines[i].y = (i + 1) * lineHeight;
589
+ }
590
+ return lines;
591
+ } catch (err) {
592
+ if (err instanceof Error) {
593
+ throw err;
594
+ }
595
+ throw new Error(`Layout failed: ${String(err)}`);
596
+ }
597
+ }
598
+ };
599
+
600
+ // src/core/gradients.ts
601
+ function gradientSpecFrom(g, opacity) {
602
+ if (g.type === "linear") {
603
+ return { kind: "linear", angle: g.angle, stops: g.stops, opacity };
604
+ } else {
605
+ return { kind: "radial", stops: g.stops, opacity };
606
+ }
607
+ }
608
+
609
+ // src/core/decoration.ts
610
+ function decorationGeometry(kind, p) {
611
+ const thickness = Math.max(1, Math.round(p.fontSize * 0.05));
612
+ let y = p.baselineY + Math.round(p.fontSize * 0.1);
613
+ if (kind === "line-through") y = p.baselineY - Math.round(p.fontSize * 0.3);
614
+ return { x1: p.xStart, x2: p.xStart + p.lineWidth, y, width: thickness };
615
+ }
616
+
617
+ // src/core/drawops.ts
618
+ async function buildDrawOps(p) {
619
+ const ops = [];
620
+ ops.push({
621
+ op: "BeginFrame",
622
+ width: p.canvas.width,
623
+ height: p.canvas.height,
624
+ pixelRatio: p.canvas.pixelRatio,
625
+ clear: true,
626
+ bg: p.background && p.background.color ? { color: p.background.color, opacity: p.background.opacity, radius: p.background.borderRadius } : void 0
627
+ });
628
+ if (p.lines.length === 0) return ops;
629
+ const upem = Math.max(1, await p.getUnitsPerEm());
630
+ const scale = p.font.size / upem;
631
+ const blockHeight = p.lines[p.lines.length - 1].y;
632
+ let blockY;
633
+ switch (p.align.vertical) {
634
+ case "top":
635
+ blockY = p.font.size;
636
+ break;
637
+ case "bottom":
638
+ blockY = p.textRect.height - blockHeight + p.font.size;
639
+ break;
640
+ case "middle":
641
+ default:
642
+ blockY = (p.textRect.height - blockHeight) / 2 + p.font.size;
643
+ break;
644
+ }
645
+ const fill = p.style.gradient ? gradientSpecFrom(p.style.gradient, 1) : { kind: "solid", color: p.font.color, opacity: p.font.opacity };
646
+ const decoColor = p.style.gradient ? p.style.gradient.stops[p.style.gradient.stops.length - 1]?.color ?? p.font.color : p.font.color;
647
+ let gMinX = Infinity, gMinY = Infinity, gMaxX = -Infinity, gMaxY = -Infinity;
648
+ for (const line of p.lines) {
649
+ let lineX;
650
+ switch (p.align.horizontal) {
651
+ case "left":
652
+ lineX = 0;
653
+ break;
654
+ case "right":
655
+ lineX = p.textRect.width - line.width;
656
+ break;
657
+ case "center":
658
+ default:
659
+ lineX = (p.textRect.width - line.width) / 2;
660
+ break;
661
+ }
662
+ let xCursor = lineX;
663
+ const baselineY = blockY + line.y - p.font.size;
664
+ for (const glyph of line.glyphs) {
665
+ const path = await p.glyphPathProvider(glyph.id);
666
+ if (!path || path === "M 0 0") {
667
+ xCursor += glyph.xAdvance;
668
+ continue;
669
+ }
670
+ const glyphX = xCursor + glyph.xOffset;
671
+ const glyphY = baselineY + glyph.yOffset;
672
+ const pb = computePathBounds(path);
673
+ const x1 = glyphX + scale * pb.x;
674
+ const x2 = glyphX + scale * (pb.x + pb.w);
675
+ const y1 = glyphY - scale * (pb.y + pb.h);
676
+ const y2 = glyphY - scale * pb.y;
677
+ if (x1 < gMinX) gMinX = x1;
678
+ if (y1 < gMinY) gMinY = y1;
679
+ if (x2 > gMaxX) gMaxX = x2;
680
+ if (y2 > gMaxY) gMaxY = y2;
681
+ if (p.shadow && p.shadow.blur > 0) {
682
+ ops.push({
683
+ isShadow: true,
684
+ op: "FillPath",
685
+ path,
686
+ x: glyphX + p.shadow.offsetX,
687
+ y: glyphY + p.shadow.offsetY,
688
+ scale,
689
+ fill: { kind: "solid", color: p.shadow.color, opacity: p.shadow.opacity }
690
+ });
691
+ }
692
+ if (p.stroke && p.stroke.width > 0) {
693
+ ops.push({
694
+ op: "StrokePath",
695
+ path,
696
+ x: glyphX,
697
+ y: glyphY,
698
+ scale,
699
+ width: p.stroke.width,
700
+ color: p.stroke.color,
701
+ opacity: p.stroke.opacity
702
+ });
703
+ }
704
+ ops.push({
705
+ op: "FillPath",
706
+ path,
707
+ x: glyphX,
708
+ y: glyphY,
709
+ scale,
710
+ fill
711
+ });
712
+ xCursor += glyph.xAdvance;
713
+ }
714
+ if (p.style.textDecoration !== "none") {
715
+ const deco = decorationGeometry(p.style.textDecoration, {
716
+ baselineY,
717
+ fontSize: p.font.size,
718
+ lineWidth: line.width,
719
+ xStart: lineX
720
+ });
721
+ ops.push({
722
+ op: "DecorationLine",
723
+ from: { x: deco.x1, y: deco.y },
724
+ to: { x: deco.x2, y: deco.y },
725
+ width: deco.width,
726
+ color: decoColor,
727
+ opacity: p.font.opacity
728
+ });
729
+ }
730
+ }
731
+ if (gMinX !== Infinity) {
732
+ const gbox = { x: gMinX, y: gMinY, w: Math.max(1, gMaxX - gMinX), h: Math.max(1, gMaxY - gMinY) };
733
+ for (const op of ops) {
734
+ if (op.op === "FillPath" && !op.isShadow) {
735
+ op.gradientBBox = gbox;
736
+ }
737
+ }
738
+ }
739
+ return ops;
740
+ }
741
+ function tokenizePath(d) {
742
+ return d.match(/[MLCQZ]|-?\d*\.?\d+(?:e[-+]?\d+)?/gi) ?? [];
743
+ }
744
+ function computePathBounds(d) {
745
+ const t = tokenizePath(d);
746
+ let i = 0;
747
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
748
+ const touch = (x, y) => {
749
+ if (x < minX) minX = x;
750
+ if (y < minY) minY = y;
751
+ if (x > maxX) maxX = x;
752
+ if (y > maxY) maxY = y;
753
+ };
754
+ while (i < t.length) {
755
+ const cmd = t[i++];
756
+ switch (cmd) {
757
+ case "M":
758
+ case "L": {
759
+ const x = parseFloat(t[i++]);
760
+ const y = parseFloat(t[i++]);
761
+ touch(x, y);
762
+ break;
763
+ }
764
+ case "C": {
765
+ const c1x = parseFloat(t[i++]);
766
+ const c1y = parseFloat(t[i++]);
767
+ const c2x = parseFloat(t[i++]);
768
+ const c2y = parseFloat(t[i++]);
769
+ const x = parseFloat(t[i++]);
770
+ const y = parseFloat(t[i++]);
771
+ touch(c1x, c1y);
772
+ touch(c2x, c2y);
773
+ touch(x, y);
774
+ break;
775
+ }
776
+ case "Q": {
777
+ const cx = parseFloat(t[i++]);
778
+ const cy = parseFloat(t[i++]);
779
+ const x = parseFloat(t[i++]);
780
+ const y = parseFloat(t[i++]);
781
+ touch(cx, cy);
782
+ touch(x, y);
783
+ break;
784
+ }
785
+ case "Z":
786
+ break;
787
+ }
788
+ }
789
+ if (minX === Infinity) return { x: 0, y: 0, w: 0, h: 0 };
790
+ return { x: minX, y: minY, w: maxX - minX, h: maxY - minY };
791
+ }
792
+
793
+ // src/core/animations.ts
794
+ var DECORATION_DONE_THRESHOLD = 0.999;
795
+ function applyAnimation(ops, lines, p) {
796
+ if (!p.anim || !p.anim.preset) return ops;
797
+ const { preset } = p.anim;
798
+ const totalGlyphs = lines.reduce((s, l) => s + l.glyphs.length, 0);
799
+ const duration = p.anim.duration ?? Math.max(0.3, totalGlyphs / 30 / p.anim.speed);
800
+ const progress = Math.max(0, Math.min(1, p.t / duration));
801
+ switch (preset) {
802
+ case "typewriter":
803
+ return applyTypewriterAnimation(
804
+ ops,
805
+ lines,
806
+ progress,
807
+ p.anim.style,
808
+ p.fontSize,
809
+ p.t,
810
+ duration
811
+ );
812
+ case "fadeIn":
813
+ return applyFadeInAnimation(ops, progress);
814
+ case "slideIn":
815
+ return applySlideInAnimation(ops, progress, p.anim.direction ?? "left", p.fontSize);
816
+ case "shift":
817
+ return applyShiftAnimation(
818
+ ops,
819
+ lines,
820
+ progress,
821
+ p.anim.direction ?? "left",
822
+ p.fontSize,
823
+ p.anim.style,
824
+ duration
825
+ );
826
+ case "ascend":
827
+ return applyAscendAnimation(
828
+ ops,
829
+ lines,
830
+ progress,
831
+ p.anim.direction ?? "up",
832
+ p.fontSize,
833
+ duration
834
+ );
835
+ case "movingLetters":
836
+ return applyMovingLettersAnimation(ops, progress, p.anim.direction ?? "up", p.fontSize);
837
+ default:
838
+ return ops;
839
+ }
840
+ }
841
+ var isShadowFill = (op) => op.op === "FillPath" && op.isShadow === true;
842
+ var isGlyphFill = (op) => op.op === "FillPath" && !op.isShadow === true;
843
+ function getTextColorFromOps(ops) {
844
+ for (const op of ops) {
845
+ if (op.op === "FillPath") {
846
+ const fill = op.fill;
847
+ if (fill?.kind === "solid") return fill.color;
848
+ if ((fill?.kind === "linear" || fill?.kind === "radial") && Array.isArray(fill.stops) && fill.stops.length) {
849
+ return fill.stops[fill.stops.length - 1].color || "#000000";
850
+ }
851
+ }
852
+ }
853
+ return "#000000";
854
+ }
855
+ function applyTypewriterAnimation(ops, lines, progress, style, fontSize, time, duration) {
856
+ const byWord = style === "word";
857
+ if (byWord) {
858
+ const wordSegments = getWordSegments(lines);
859
+ const totalWords = wordSegments.length;
860
+ const visibleWords = Math.floor(progress * totalWords);
861
+ if (visibleWords === 0) return ops.filter((x) => x.op === "BeginFrame");
862
+ let totalVisibleGlyphs = 0;
863
+ for (let i = 0; i < Math.min(visibleWords, wordSegments.length); i++) {
864
+ totalVisibleGlyphs += wordSegments[i].glyphCount;
865
+ }
866
+ const visibleOpsRaw = sliceGlyphOps(ops, totalVisibleGlyphs);
867
+ const visibleOps = progress >= DECORATION_DONE_THRESHOLD ? visibleOpsRaw : visibleOpsRaw.filter((o) => o.op !== "DecorationLine");
868
+ if (progress < 1 && totalVisibleGlyphs > 0) {
869
+ return addTypewriterCursor(visibleOps, totalVisibleGlyphs, fontSize, time);
870
+ }
871
+ return visibleOps;
872
+ } else {
873
+ const totalGlyphs = lines.reduce((s, l) => s + l.glyphs.length, 0);
874
+ const visibleGlyphs = Math.floor(progress * totalGlyphs);
875
+ if (visibleGlyphs === 0) return ops.filter((x) => x.op === "BeginFrame");
876
+ const visibleOpsRaw = sliceGlyphOps(ops, visibleGlyphs);
877
+ const visibleOps = progress >= DECORATION_DONE_THRESHOLD ? visibleOpsRaw : visibleOpsRaw.filter((o) => o.op !== "DecorationLine");
878
+ if (progress < 1 && visibleGlyphs > 0) {
879
+ return addTypewriterCursor(visibleOps, visibleGlyphs, fontSize, time);
880
+ }
881
+ return visibleOps;
882
+ }
883
+ }
884
+ function applyAscendAnimation(ops, lines, progress, direction, fontSize, duration) {
885
+ const wordSegments = getWordSegments(lines);
886
+ const totalWords = wordSegments.length;
887
+ if (totalWords === 0) return ops;
888
+ const result = [];
889
+ let glyphIndex = 0;
890
+ for (const op of ops) {
891
+ if (op.op === "BeginFrame") {
892
+ result.push(op);
893
+ break;
894
+ }
895
+ }
896
+ for (const op of ops) {
897
+ if (op.op === "FillPath" || op.op === "StrokePath") {
898
+ let wordIndex = -1, acc = 0;
899
+ for (let i = 0; i < wordSegments.length; i++) {
900
+ const gcount = wordSegments[i].glyphCount;
901
+ if (glyphIndex >= acc && glyphIndex < acc + gcount) {
902
+ wordIndex = i;
903
+ break;
904
+ }
905
+ acc += gcount;
906
+ }
907
+ if (wordIndex >= 0) {
908
+ const startF = wordIndex / Math.max(1, totalWords) * (duration / duration);
909
+ const endF = Math.min(1, startF + 0.3);
910
+ if (progress >= endF) {
911
+ result.push(op);
912
+ } else if (progress > startF) {
913
+ const local = (progress - startF) / Math.max(1e-6, endF - startF);
914
+ const ease = easeOutCubic(Math.min(1, local));
915
+ const startOffset = direction === "up" ? fontSize * 0.4 : -fontSize * 0.4;
916
+ const animated = { ...op, y: op.y + startOffset * (1 - ease) };
917
+ if (op.op === "FillPath") {
918
+ if (animated.fill.kind === "solid")
919
+ animated.fill = { ...animated.fill, opacity: animated.fill.opacity * ease };
920
+ else animated.fill = { ...animated.fill, opacity: (animated.fill.opacity ?? 1) * ease };
921
+ } else {
922
+ animated.opacity = animated.opacity * ease;
923
+ }
924
+ result.push(animated);
925
+ }
926
+ }
927
+ if (isGlyphFill(op)) glyphIndex++;
928
+ } else if (op.op === "DecorationLine") {
929
+ if (progress >= DECORATION_DONE_THRESHOLD) {
930
+ result.push(op);
931
+ }
932
+ }
933
+ }
934
+ return result;
935
+ }
936
+ function applyShiftAnimation(ops, lines, progress, direction, fontSize, style, duration) {
937
+ const byWord = style === "word";
938
+ const startOffsets = {
939
+ left: { x: fontSize * 0.6, y: 0 },
940
+ right: { x: -fontSize * 0.6, y: 0 },
941
+ up: { x: 0, y: fontSize * 0.6 },
942
+ down: { x: 0, y: -fontSize * 0.6 }
943
+ };
944
+ const offset = startOffsets[direction];
945
+ const wordSegments = byWord ? getWordSegments(lines) : [];
946
+ const totalGlyphs = lines.reduce((s, l) => s + l.glyphs.length, 0);
947
+ const totalUnits = byWord ? wordSegments.length : totalGlyphs;
948
+ if (totalUnits === 0) return ops;
949
+ const result = [];
950
+ for (const op of ops) {
951
+ if (op.op === "BeginFrame") {
952
+ result.push(op);
953
+ break;
954
+ }
955
+ }
956
+ const windowDuration = 0.3;
957
+ const overlapFactor = 0.7;
958
+ const staggerDelay = duration * overlapFactor / Math.max(1, totalUnits - 1);
959
+ const windowFor = (unitIdx) => {
960
+ const startTime = unitIdx * staggerDelay;
961
+ const startF = startTime / duration;
962
+ const endF = Math.min(1, (startTime + windowDuration) / duration);
963
+ return { startF, endF };
964
+ };
965
+ let glyphIndex = 0;
966
+ for (const op of ops) {
967
+ if (op.op !== "FillPath" && op.op !== "StrokePath") {
968
+ if (op.op === "DecorationLine" && progress > 0.8) result.push(op);
969
+ continue;
970
+ }
971
+ let unitIndex;
972
+ if (!byWord) {
973
+ unitIndex = glyphIndex;
974
+ } else {
975
+ let wordIndex = -1, acc = 0;
976
+ for (let i = 0; i < wordSegments.length; i++) {
977
+ const gcount = wordSegments[i].glyphCount;
978
+ if (glyphIndex >= acc && glyphIndex < acc + gcount) {
979
+ wordIndex = i;
980
+ break;
981
+ }
982
+ acc += gcount;
983
+ }
984
+ unitIndex = Math.max(0, wordIndex);
985
+ }
986
+ const { startF, endF } = windowFor(unitIndex);
987
+ if (progress <= startF) {
988
+ const animated = { ...op, x: op.x + offset.x, y: op.y + offset.y };
989
+ if (op.op === "FillPath") {
990
+ if (animated.fill.kind === "solid") animated.fill = { ...animated.fill, opacity: 0 };
991
+ else animated.fill = { ...animated.fill, opacity: 0 };
992
+ } else {
993
+ animated.opacity = 0;
994
+ }
995
+ result.push(animated);
996
+ } else if (progress >= endF) {
997
+ result.push(op);
998
+ } else {
999
+ const local = (progress - startF) / Math.max(1e-6, endF - startF);
1000
+ const ease = easeOutCubic(Math.min(1, local));
1001
+ const dx = offset.x * (1 - ease);
1002
+ const dy = offset.y * (1 - ease);
1003
+ const animated = { ...op, x: op.x + dx, y: op.y + dy };
1004
+ if (op.op === "FillPath") {
1005
+ const targetOpacity = animated.fill.kind === "solid" ? animated.fill.opacity : animated.fill.opacity ?? 1;
1006
+ if (animated.fill.kind === "solid")
1007
+ animated.fill = { ...animated.fill, opacity: targetOpacity * ease };
1008
+ else animated.fill = { ...animated.fill, opacity: targetOpacity * ease };
1009
+ } else {
1010
+ animated.opacity = animated.opacity * ease;
1011
+ }
1012
+ result.push(animated);
1013
+ }
1014
+ if (isGlyphFill(op)) glyphIndex++;
1015
+ }
1016
+ return result;
1017
+ }
1018
+ function applyFadeInAnimation(ops, progress) {
1019
+ const alpha = easeOutQuad(progress);
1020
+ const scale = 0.95 + 0.05 * alpha;
1021
+ return scaleAndFade(ops, alpha, scale);
1022
+ }
1023
+ function applySlideInAnimation(ops, progress, direction, fontSize) {
1024
+ const easeProgress = easeOutCubic(progress);
1025
+ const shift = shiftFor(1 - easeProgress, direction, fontSize * 2);
1026
+ const alpha = easeOutQuad(progress);
1027
+ return translateGlyphOps(ops, shift.dx, shift.dy, alpha);
1028
+ }
1029
+ function applyMovingLettersAnimation(ops, progress, direction, fontSize) {
1030
+ const amp = fontSize * 0.3;
1031
+ return waveTransform(ops, direction, amp, progress);
1032
+ }
1033
+ function getWordSegments(lines) {
1034
+ const segments = [];
1035
+ let totalGlyphIndex = 0;
1036
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
1037
+ const line = lines[lineIndex];
1038
+ const words = segmentLineBySpaces(line);
1039
+ for (const word of words) {
1040
+ if (word.length > 0)
1041
+ segments.push({ startGlyph: totalGlyphIndex, glyphCount: word.length, lineIndex });
1042
+ totalGlyphIndex += word.length;
1043
+ }
1044
+ }
1045
+ return segments;
1046
+ }
1047
+ function segmentLineBySpaces(line) {
1048
+ const words = [];
1049
+ let current = [];
1050
+ for (const g of line.glyphs) {
1051
+ const isSpace = g.char === " " || g.char === " " || g.char === "\n";
1052
+ if (isSpace) {
1053
+ if (current.length) {
1054
+ words.push([...current]);
1055
+ current = [];
1056
+ }
1057
+ } else {
1058
+ current.push(g);
1059
+ }
1060
+ }
1061
+ if (current.length) words.push(current);
1062
+ return words;
1063
+ }
1064
+ function sliceGlyphOps(ops, maxGlyphs) {
1065
+ const result = [];
1066
+ let glyphCount = 0;
1067
+ let foundGlyphs = false;
1068
+ for (const op of ops) {
1069
+ if (op.op === "BeginFrame") {
1070
+ result.push(op);
1071
+ continue;
1072
+ }
1073
+ if (op.op === "FillPath" && !isShadowFill(op)) {
1074
+ if (glyphCount < maxGlyphs) {
1075
+ result.push(op);
1076
+ foundGlyphs = true;
1077
+ }
1078
+ glyphCount++;
1079
+ continue;
1080
+ }
1081
+ if (op.op === "StrokePath") {
1082
+ if (glyphCount < maxGlyphs) result.push(op);
1083
+ continue;
1084
+ }
1085
+ if (op.op === "FillPath" && isShadowFill(op)) {
1086
+ if (glyphCount < maxGlyphs) result.push(op);
1087
+ continue;
1088
+ }
1089
+ if (op.op === "DecorationLine" && foundGlyphs) {
1090
+ result.push(op);
1091
+ continue;
1092
+ }
1093
+ }
1094
+ return result;
1095
+ }
1096
+ function addTypewriterCursor(ops, glyphCount, fontSize, time) {
1097
+ const blinkRate = 2;
1098
+ const cursorVisible = Math.floor(time * blinkRate * 2) % 2 === 0;
1099
+ if (!cursorVisible || glyphCount === 0) return ops;
1100
+ let last = null;
1101
+ let count = 0;
1102
+ for (const op of ops) {
1103
+ if (op.op === "FillPath" && !isShadowFill(op)) {
1104
+ count++;
1105
+ if (count === glyphCount) {
1106
+ last = op;
1107
+ break;
1108
+ }
1109
+ }
1110
+ }
1111
+ if (last && last.op === "FillPath") {
1112
+ const color = getTextColorFromOps(ops);
1113
+ const cursorX = last.x + fontSize * 0.5;
1114
+ const cursorY = last.y;
1115
+ const cursorOp = {
1116
+ op: "DecorationLine",
1117
+ from: { x: cursorX, y: cursorY - fontSize * 0.7 },
1118
+ to: { x: cursorX, y: cursorY + fontSize * 0.1 },
1119
+ width: Math.max(2, fontSize / 25),
1120
+ color,
1121
+ opacity: 1
1122
+ };
1123
+ return [...ops, cursorOp];
1124
+ }
1125
+ return ops;
1126
+ }
1127
+ function scaleAndFade(ops, alpha, scale) {
1128
+ let cx = 0, cy = 0, n = 0;
1129
+ ops.forEach((op) => {
1130
+ if (op.op === "FillPath") {
1131
+ cx += op.x;
1132
+ cy += op.y;
1133
+ n++;
1134
+ }
1135
+ });
1136
+ if (n > 0) {
1137
+ cx /= n;
1138
+ cy /= n;
1139
+ }
1140
+ return ops.map((op) => {
1141
+ if (op.op === "FillPath") {
1142
+ const out = { ...op };
1143
+ if (out.fill.kind === "solid") out.fill = { ...out.fill, opacity: out.fill.opacity * alpha };
1144
+ else out.fill = { ...out.fill, opacity: (out.fill.opacity ?? 1) * alpha };
1145
+ if (scale !== 1 && n > 0) {
1146
+ const dx = op.x - cx, dy = op.y - cy;
1147
+ out.x = cx + dx * scale;
1148
+ out.y = cy + dy * scale;
1149
+ }
1150
+ return out;
1151
+ }
1152
+ if (op.op === "StrokePath") {
1153
+ const out = { ...op, opacity: op.opacity * alpha };
1154
+ if (scale !== 1 && n > 0) {
1155
+ const dx = op.x - cx, dy = op.y - cy;
1156
+ out.x = cx + dx * scale;
1157
+ out.y = cy + dy * scale;
1158
+ }
1159
+ return out;
1160
+ }
1161
+ if (op.op === "DecorationLine") return { ...op, opacity: op.opacity * alpha };
1162
+ return op;
1163
+ });
1164
+ }
1165
+ function translateGlyphOps(ops, dx, dy, alpha = 1) {
1166
+ return ops.map((op) => {
1167
+ if (op.op === "FillPath") {
1168
+ const out = { ...op, x: op.x + dx, y: op.y + dy };
1169
+ if (alpha < 1) {
1170
+ if (out.fill.kind === "solid")
1171
+ out.fill = { ...out.fill, opacity: out.fill.opacity * alpha };
1172
+ else out.fill = { ...out.fill, opacity: (out.fill.opacity ?? 1) * alpha };
1173
+ }
1174
+ return out;
1175
+ }
1176
+ if (op.op === "StrokePath")
1177
+ return { ...op, x: op.x + dx, y: op.y + dy, opacity: op.opacity * alpha };
1178
+ if (op.op === "DecorationLine") {
1179
+ return {
1180
+ ...op,
1181
+ from: { x: op.from.x + dx, y: op.from.y + dy },
1182
+ to: { x: op.to.x + dx, y: op.to.y + dy },
1183
+ opacity: op.opacity * alpha
1184
+ };
1185
+ }
1186
+ return op;
1187
+ });
1188
+ }
1189
+ function waveTransform(ops, dir, amp, p) {
1190
+ let glyphIndex = 0;
1191
+ return ops.map((op) => {
1192
+ if (op.op === "FillPath" || op.op === "StrokePath") {
1193
+ const phase = Math.sin(glyphIndex / 5 * Math.PI + p * Math.PI * 4);
1194
+ const dx = dir === "left" || dir === "right" ? phase * amp * (dir === "left" ? -1 : 1) : 0;
1195
+ const dy = dir === "up" || dir === "down" ? phase * amp * (dir === "up" ? -1 : 1) : 0;
1196
+ const waveAlpha = Math.min(1, p * 2);
1197
+ if (op.op === "FillPath") {
1198
+ if (!isShadowFill(op)) glyphIndex++;
1199
+ const out = { ...op, x: op.x + dx, y: op.y + dy };
1200
+ if (out.fill.kind === "solid")
1201
+ out.fill = { ...out.fill, opacity: out.fill.opacity * waveAlpha };
1202
+ else out.fill = { ...out.fill, opacity: (out.fill.opacity ?? 1) * waveAlpha };
1203
+ return out;
1204
+ }
1205
+ return { ...op, x: op.x + dx, y: op.y + dy, opacity: op.opacity * waveAlpha };
1206
+ }
1207
+ return op;
1208
+ });
1209
+ }
1210
+ function shiftFor(progress, dir, dist) {
1211
+ const d = progress * dist;
1212
+ switch (dir) {
1213
+ case "left":
1214
+ return { dx: -d, dy: 0 };
1215
+ case "right":
1216
+ return { dx: d, dy: 0 };
1217
+ case "up":
1218
+ return { dx: 0, dy: -d };
1219
+ case "down":
1220
+ return { dx: 0, dy: d };
1221
+ }
1222
+ }
1223
+ function easeOutQuad(t) {
1224
+ return t * (2 - t);
1225
+ }
1226
+ function easeOutCubic(t) {
1227
+ return 1 - Math.pow(1 - t, 3);
1228
+ }
1229
+
1230
+ // src/core/colors.ts
1231
+ function parseHex6(hex, alpha = 1) {
1232
+ const m = /^#?([a-f0-9]{6})$/i.exec(hex);
1233
+ if (!m) throw new Error(`Invalid color ${hex}`);
1234
+ const n = parseInt(m[1], 16);
1235
+ const r = n >> 16 & 255;
1236
+ const g = n >> 8 & 255;
1237
+ const b = n & 255;
1238
+ return { r, g, b, a: alpha };
1239
+ }
1240
+
1241
+ // src/painters/web.ts
1242
+ function createWebPainter(canvas) {
1243
+ const ctx = canvas.getContext("2d");
1244
+ if (!ctx) throw new Error("2D context unavailable");
1245
+ return {
1246
+ async render(ops) {
1247
+ const globalBox = computeGlobalTextBounds(ops);
1248
+ const gradientCache = /* @__PURE__ */ new Map();
1249
+ for (const op of ops) {
1250
+ if (op.op === "BeginFrame") {
1251
+ const dpr = op.pixelRatio;
1252
+ const w = op.width;
1253
+ const h = op.height;
1254
+ if ("width" in canvas && "height" in canvas) {
1255
+ canvas.width = Math.floor(w * dpr);
1256
+ canvas.height = Math.floor(h * dpr);
1257
+ }
1258
+ if ("style" in canvas) {
1259
+ canvas.style.width = `${w}px`;
1260
+ canvas.style.height = `${h}px`;
1261
+ }
1262
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
1263
+ if (op.clear) ctx.clearRect(0, 0, w, h);
1264
+ if (op.bg && op.bg.color) {
1265
+ const { color, opacity, radius } = op.bg;
1266
+ if (color) {
1267
+ const c = parseHex6(color, opacity);
1268
+ ctx.fillStyle = `rgba(${c.r},${c.g},${c.b},${c.a})`;
1269
+ if (radius && radius > 0) {
1270
+ drawRoundedRect(ctx, 0, 0, w, h, radius);
1271
+ ctx.fill();
1272
+ } else {
1273
+ ctx.fillRect(0, 0, w, h);
1274
+ }
1275
+ }
1276
+ }
1277
+ continue;
1278
+ }
1279
+ if (op.op === "FillPath") {
1280
+ const fillOp = op;
1281
+ const p = new Path2D(fillOp.path);
1282
+ ctx.save();
1283
+ ctx.translate(fillOp.x, fillOp.y);
1284
+ const s = fillOp.scale ?? 1;
1285
+ ctx.scale(s, -s);
1286
+ const bbox = fillOp.gradientBBox ?? globalBox;
1287
+ const localBBox = {
1288
+ x: (bbox.x - fillOp.x) / s,
1289
+ y: -(bbox.y - fillOp.y) / s,
1290
+ w: bbox.w / s,
1291
+ h: bbox.h / s
1292
+ };
1293
+ const cacheKey = JSON.stringify({ fill: fillOp.fill, bbox: localBBox });
1294
+ let fill = gradientCache.get(cacheKey);
1295
+ if (!fill) {
1296
+ fill = makeGradientFromBBox(ctx, fillOp.fill, localBBox);
1297
+ gradientCache.set(cacheKey, fill);
1298
+ }
1299
+ ctx.fillStyle = fill;
1300
+ ctx.fill(p);
1301
+ ctx.restore();
1302
+ continue;
1303
+ }
1304
+ if (op.op === "StrokePath") {
1305
+ const strokeOp = op;
1306
+ const p = new Path2D(strokeOp.path);
1307
+ ctx.save();
1308
+ ctx.translate(strokeOp.x, strokeOp.y);
1309
+ const s = strokeOp.scale ?? 1;
1310
+ ctx.scale(s, -s);
1311
+ const invAbs = 1 / Math.abs(s);
1312
+ const c = parseHex6(strokeOp.color, strokeOp.opacity);
1313
+ ctx.strokeStyle = `rgba(${c.r},${c.g},${c.b},${c.a})`;
1314
+ ctx.lineWidth = strokeOp.width * invAbs;
1315
+ ctx.lineJoin = "round";
1316
+ ctx.lineCap = "round";
1317
+ ctx.stroke(p);
1318
+ ctx.restore();
1319
+ continue;
1320
+ }
1321
+ if (op.op === "DecorationLine") {
1322
+ ctx.save();
1323
+ const c = parseHex6(op.color, op.opacity);
1324
+ ctx.strokeStyle = `rgba(${c.r},${c.g},${c.b},${c.a})`;
1325
+ ctx.lineWidth = op.width;
1326
+ ctx.beginPath();
1327
+ ctx.moveTo(op.from.x, op.from.y);
1328
+ ctx.lineTo(op.to.x, op.to.y);
1329
+ ctx.stroke();
1330
+ ctx.restore();
1331
+ continue;
1332
+ }
1333
+ }
1334
+ }
1335
+ };
1336
+ }
1337
+ function drawRoundedRect(ctx, x, y, w, h, r) {
1338
+ const p = new Path2D();
1339
+ p.moveTo(x + r, y);
1340
+ p.arcTo(x + w, y, x + w, y + h, r);
1341
+ p.arcTo(x + w, y + h, x, y + h, r);
1342
+ p.arcTo(x, y + h, x, y, r);
1343
+ p.arcTo(x, y, x + w, y, r);
1344
+ p.closePath();
1345
+ ctx.save();
1346
+ ctx.fill(p);
1347
+ ctx.restore();
1348
+ }
1349
+ function makeGradientFromBBox(ctx, spec, box) {
1350
+ if (spec.kind === "solid") {
1351
+ const c = parseHex6(spec.color, spec.opacity);
1352
+ return `rgba(${c.r},${c.g},${c.b},${c.a})`;
1353
+ }
1354
+ const cx = box.x + box.w / 2;
1355
+ const cy = box.y + box.h / 2;
1356
+ const r = Math.max(box.w, box.h) / 2;
1357
+ const addStops = (g) => {
1358
+ const opacity = spec.kind === "linear" || spec.kind === "radial" ? spec.opacity : 1;
1359
+ const stops = spec.kind === "linear" || spec.kind === "radial" ? spec.stops : [];
1360
+ for (const s of stops) {
1361
+ const c = parseHex6(s.color, opacity);
1362
+ g.addColorStop(s.offset, `rgba(${c.r},${c.g},${c.b},${c.a})`);
1363
+ }
1364
+ return g;
1365
+ };
1366
+ if (spec.kind === "linear") {
1367
+ const rad = spec.angle * Math.PI / 180;
1368
+ const x1 = cx + Math.cos(rad + Math.PI) * r;
1369
+ const y1 = cy + Math.sin(rad + Math.PI) * r;
1370
+ const x2 = cx + Math.cos(rad) * r;
1371
+ const y2 = cy + Math.sin(rad) * r;
1372
+ return addStops(ctx.createLinearGradient(x1, y1, x2, y2));
1373
+ } else {
1374
+ return addStops(ctx.createRadialGradient(cx, cy, 0, cx, cy, r));
1375
+ }
1376
+ }
1377
+ function computeGlobalTextBounds(ops) {
1378
+ let minX = Infinity;
1379
+ let minY = Infinity;
1380
+ let maxX = -Infinity;
1381
+ let maxY = -Infinity;
1382
+ for (const op of ops) {
1383
+ if (op.op !== "FillPath") continue;
1384
+ const fillOp = op;
1385
+ if (fillOp.isShadow) continue;
1386
+ const b = computePathBounds2(fillOp.path);
1387
+ const s = fillOp.scale ?? 1;
1388
+ const x1 = fillOp.x + s * b.x;
1389
+ const x2 = fillOp.x + s * (b.x + b.w);
1390
+ const y1 = fillOp.y - s * (b.y + b.h);
1391
+ const y2 = fillOp.y - s * b.y;
1392
+ if (x1 < minX) minX = x1;
1393
+ if (y1 < minY) minY = y1;
1394
+ if (x2 > maxX) maxX = x2;
1395
+ if (y2 > maxY) maxY = y2;
1396
+ }
1397
+ if (minX === Infinity) {
1398
+ return { x: 0, y: 0, w: 1, h: 1 };
1399
+ }
1400
+ return {
1401
+ x: minX,
1402
+ y: minY,
1403
+ w: Math.max(1, maxX - minX),
1404
+ h: Math.max(1, maxY - minY)
1405
+ };
1406
+ }
1407
+ function computePathBounds2(d) {
1408
+ const tokens = tokenizePath2(d);
1409
+ let i = 0;
1410
+ let minX = Infinity;
1411
+ let minY = Infinity;
1412
+ let maxX = -Infinity;
1413
+ let maxY = -Infinity;
1414
+ const touch = (x, y) => {
1415
+ if (x < minX) minX = x;
1416
+ if (y < minY) minY = y;
1417
+ if (x > maxX) maxX = x;
1418
+ if (y > maxY) maxY = y;
1419
+ };
1420
+ while (i < tokens.length) {
1421
+ const t = tokens[i++];
1422
+ switch (t) {
1423
+ case "M":
1424
+ case "L": {
1425
+ const x = parseFloat(tokens[i++]);
1426
+ const y = parseFloat(tokens[i++]);
1427
+ touch(x, y);
1428
+ break;
1429
+ }
1430
+ case "C": {
1431
+ const c1x = parseFloat(tokens[i++]);
1432
+ const c1y = parseFloat(tokens[i++]);
1433
+ const c2x = parseFloat(tokens[i++]);
1434
+ const c2y = parseFloat(tokens[i++]);
1435
+ const x = parseFloat(tokens[i++]);
1436
+ const y = parseFloat(tokens[i++]);
1437
+ touch(c1x, c1y);
1438
+ touch(c2x, c2y);
1439
+ touch(x, y);
1440
+ break;
1441
+ }
1442
+ case "Q": {
1443
+ const cx = parseFloat(tokens[i++]);
1444
+ const cy = parseFloat(tokens[i++]);
1445
+ const x = parseFloat(tokens[i++]);
1446
+ const y = parseFloat(tokens[i++]);
1447
+ touch(cx, cy);
1448
+ touch(x, y);
1449
+ break;
1450
+ }
1451
+ case "Z":
1452
+ break;
1453
+ default:
1454
+ break;
1455
+ }
1456
+ }
1457
+ if (minX === Infinity) {
1458
+ return { x: 0, y: 0, w: 0, h: 0 };
1459
+ }
1460
+ return {
1461
+ x: minX,
1462
+ y: minY,
1463
+ w: maxX - minX,
1464
+ h: maxY - minY
1465
+ };
1466
+ }
1467
+ function tokenizePath2(d) {
1468
+ return d.match(/[MLCQZ]|-?\d*\.?\d+(?:e[-+]?\d+)?/gi) ?? [];
1469
+ }
1470
+
1471
+ // src/io/web.ts
1472
+ async function fetchToArrayBuffer(url) {
1473
+ try {
1474
+ const res = await fetch(url);
1475
+ if (!res.ok) {
1476
+ throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
1477
+ }
1478
+ try {
1479
+ return await res.arrayBuffer();
1480
+ } catch (err) {
1481
+ throw new Error(
1482
+ `Failed to read response body as ArrayBuffer from ${url}: ${err instanceof Error ? err.message : String(err)}`
1483
+ );
1484
+ }
1485
+ } catch (err) {
1486
+ if (err instanceof Error) {
1487
+ if (err.message.includes("Failed to fetch") || err.message.includes("Failed to read")) {
1488
+ throw err;
1489
+ }
1490
+ throw new Error(`Failed to fetch ${url}: ${err.message}`);
1491
+ }
1492
+ throw new Error(`Failed to fetch ${url}: ${String(err)}`);
1493
+ }
1494
+ }
1495
+
1496
+ // src/types.ts
1497
+ var isShadowFill2 = (op) => {
1498
+ return op.op === "FillPath" && op.isShadow === true;
1499
+ };
1500
+ var isGlyphFill2 = (op) => {
1501
+ return op.op === "FillPath" && op.isShadow !== true;
1502
+ };
1503
+
1504
+ // src/env/entry.web.ts
1505
+ var DEFAULT_ROBOTO_URL = "https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxP.ttf";
1506
+ async function createTextEngine(opts = {}) {
1507
+ const width = opts.width ?? CANVAS_CONFIG.DEFAULTS.width;
1508
+ const height = opts.height ?? CANVAS_CONFIG.DEFAULTS.height;
1509
+ const pixelRatio = opts.pixelRatio ?? CANVAS_CONFIG.DEFAULTS.pixelRatio;
1510
+ const wasmBaseURL = "https://shotstack-ingest-api-dev-sources.s3.ap-southeast-2.amazonaws.com/euo5r93oyr/zzz01k9h-yycyx-2x2y6-qx9bj-7n567b/source.wasm";
1511
+ const fonts = new FontRegistry(wasmBaseURL);
1512
+ const layout = new LayoutEngine(fonts);
1513
+ try {
1514
+ FontRegistry.setFallbackLoader(async (desc) => {
1515
+ const family = (desc.family ?? "Roboto").toLowerCase();
1516
+ const weight = `${desc.weight ?? "400"}`;
1517
+ const style = desc.style ?? "normal";
1518
+ if (family === "roboto" && weight === "400" && style === "normal") {
1519
+ return fetchToArrayBuffer(DEFAULT_ROBOTO_URL);
1520
+ }
1521
+ return void 0;
1522
+ });
1523
+ await fonts.init();
1524
+ } catch (err) {
1525
+ throw new Error(
1526
+ `Failed to initialize font registry: ${err instanceof Error ? err.message : String(err)}`
1527
+ );
1528
+ }
1529
+ async function ensureFonts(asset) {
1530
+ try {
1531
+ if (asset.customFonts) {
1532
+ for (const cf of asset.customFonts) {
1533
+ try {
1534
+ const bytes = await fetchToArrayBuffer(cf.src);
1535
+ await fonts.registerFromBytes(bytes, {
1536
+ family: cf.family,
1537
+ weight: cf.weight ?? "400",
1538
+ style: cf.style ?? "normal"
1539
+ });
1540
+ } catch (err) {
1541
+ throw new Error(
1542
+ `Failed to load custom font "${cf.family}" from ${cf.src}: ${err instanceof Error ? err.message : String(err)}`
1543
+ );
1544
+ }
1545
+ }
1546
+ }
1547
+ const main = asset.font ?? {
1548
+ family: "Roboto",
1549
+ weight: "400",
1550
+ style: "normal",
1551
+ size: 48,
1552
+ color: "#000000",
1553
+ opacity: 1
1554
+ };
1555
+ const desc = { family: main.family, weight: `${main.weight}`, style: main.style };
1556
+ const ensureFace = async () => {
1557
+ try {
1558
+ await fonts.getFace(desc);
1559
+ } catch {
1560
+ const wantsDefaultRoboto = (main.family || "Roboto").toLowerCase() === "roboto" && `${main.weight}` === "400" && main.style === "normal";
1561
+ if (wantsDefaultRoboto) {
1562
+ const bytes = await fetchToArrayBuffer(DEFAULT_ROBOTO_URL);
1563
+ await fonts.registerFromBytes(bytes, {
1564
+ family: "Roboto",
1565
+ weight: "400",
1566
+ style: "normal"
1567
+ });
1568
+ } else {
1569
+ throw new Error(
1570
+ `Font not registered for ${desc.family}__${desc.weight}__${desc.style}`
1571
+ );
1572
+ }
1573
+ }
1574
+ };
1575
+ await ensureFace();
1576
+ return main;
1577
+ } catch (err) {
1578
+ if (err instanceof Error) throw err;
1579
+ throw new Error(`Failed to ensure fonts: ${String(err)}`);
1580
+ }
1581
+ }
1582
+ return {
1583
+ validate(input) {
1584
+ try {
1585
+ const { value, error } = RichTextAssetSchema.validate(input, {
1586
+ abortEarly: false,
1587
+ convert: true
1588
+ });
1589
+ if (error) throw error;
1590
+ return { value };
1591
+ } catch (err) {
1592
+ if (err instanceof Error) {
1593
+ throw new Error(`Validation failed: ${err.message}`);
1594
+ }
1595
+ throw new Error(`Validation failed: ${String(err)}`);
1596
+ }
1597
+ },
1598
+ async registerFontFromUrl(url, desc) {
1599
+ try {
1600
+ const bytes = await fetchToArrayBuffer(url);
1601
+ await fonts.registerFromBytes(bytes, desc);
1602
+ } catch (err) {
1603
+ throw new Error(
1604
+ `Failed to register font "${desc.family}" from URL ${url}: ${err instanceof Error ? err.message : String(err)}`
1605
+ );
1606
+ }
1607
+ },
1608
+ async registerFontFromFile(source, desc) {
1609
+ try {
1610
+ let bytes;
1611
+ if (typeof source === "string") {
1612
+ try {
1613
+ bytes = await fetchToArrayBuffer(source);
1614
+ } catch (err) {
1615
+ throw new Error(
1616
+ `Failed to fetch font from ${source}: ${err instanceof Error ? err.message : String(err)}`
1617
+ );
1618
+ }
1619
+ } else {
1620
+ try {
1621
+ bytes = await source.arrayBuffer();
1622
+ } catch (err) {
1623
+ throw new Error(
1624
+ `Failed to read Blob as ArrayBuffer: ${err instanceof Error ? err.message : String(err)}`
1625
+ );
1626
+ }
1627
+ }
1628
+ await fonts.registerFromBytes(bytes, desc);
1629
+ } catch (err) {
1630
+ if (err instanceof Error) {
1631
+ throw err;
1632
+ }
1633
+ throw new Error(
1634
+ `Failed to register font "${desc.family}" from ${typeof source === "string" ? source : "Blob"}: ${String(err)}`
1635
+ );
1636
+ }
1637
+ },
1638
+ async renderFrame(asset, tSeconds) {
1639
+ try {
1640
+ const main = await ensureFonts(asset);
1641
+ const desc = { family: main.family, weight: `${main.weight}`, style: main.style };
1642
+ let lines;
1643
+ try {
1644
+ lines = await layout.layout({
1645
+ text: asset.text,
1646
+ width: asset.width ?? width,
1647
+ letterSpacing: asset.style?.letterSpacing ?? 0,
1648
+ fontSize: main.size,
1649
+ lineHeight: asset.style?.lineHeight ?? 1.2,
1650
+ desc,
1651
+ textTransform: asset.style?.textTransform ?? "none"
1652
+ });
1653
+ } catch (err) {
1654
+ throw new Error(
1655
+ `Failed to layout text: ${err instanceof Error ? err.message : String(err)}`
1656
+ );
1657
+ }
1658
+ const textRect = {
1659
+ x: 0,
1660
+ y: 0,
1661
+ width: asset.width ?? width,
1662
+ height: asset.height ?? height
1663
+ };
1664
+ const canvasW = asset.width ?? width;
1665
+ const canvasH = asset.height ?? height;
1666
+ const canvasPR = asset.pixelRatio ?? pixelRatio;
1667
+ let ops0;
1668
+ try {
1669
+ ops0 = await buildDrawOps({
1670
+ canvas: { width: canvasW, height: canvasH, pixelRatio: canvasPR },
1671
+ textRect,
1672
+ lines,
1673
+ font: {
1674
+ family: main.family,
1675
+ size: main.size,
1676
+ weight: `${main.weight}`,
1677
+ style: main.style,
1678
+ color: main.color,
1679
+ opacity: main.opacity
1680
+ },
1681
+ style: {
1682
+ lineHeight: asset.style?.lineHeight ?? 1.2,
1683
+ textDecoration: asset.style?.textDecoration ?? "none",
1684
+ gradient: asset.style?.gradient
1685
+ },
1686
+ stroke: asset.stroke,
1687
+ shadow: asset.shadow,
1688
+ align: asset.align ?? { horizontal: "center", vertical: "middle" },
1689
+ background: asset.background,
1690
+ glyphPathProvider: (gid) => fonts.glyphPath(desc, gid),
1691
+ getUnitsPerEm: () => fonts.getUnitsPerEm(desc)
1692
+ });
1693
+ } catch (err) {
1694
+ throw new Error(
1695
+ `Failed to build draw operations: ${err instanceof Error ? err.message : String(err)}`
1696
+ );
1697
+ }
1698
+ try {
1699
+ const ops = applyAnimation(ops0, lines, {
1700
+ t: tSeconds,
1701
+ fontSize: main.size,
1702
+ anim: asset.animation ? {
1703
+ preset: asset.animation.preset,
1704
+ speed: asset.animation.speed,
1705
+ duration: asset.animation.duration,
1706
+ style: asset.animation.style,
1707
+ direction: asset.animation.direction
1708
+ } : void 0
1709
+ });
1710
+ return ops;
1711
+ } catch (err) {
1712
+ throw new Error(
1713
+ `Failed to apply animation: ${err instanceof Error ? err.message : String(err)}`
1714
+ );
1715
+ }
1716
+ } catch (err) {
1717
+ if (err instanceof Error) {
1718
+ throw err;
1719
+ }
1720
+ throw new Error(`Failed to render frame at time ${tSeconds}s: ${String(err)}`);
1721
+ }
1722
+ },
1723
+ createRenderer(canvas) {
1724
+ try {
1725
+ return createWebPainter(canvas);
1726
+ } catch (err) {
1727
+ throw new Error(
1728
+ `Failed to create renderer: ${err instanceof Error ? err.message : String(err)}`
1729
+ );
1730
+ }
1731
+ },
1732
+ destroy() {
1733
+ try {
1734
+ fonts.destroy();
1735
+ } catch (err) {
1736
+ console.error(`Error during cleanup: ${err instanceof Error ? err.message : String(err)}`);
1737
+ }
1738
+ }
1739
+ };
1740
+ }
1741
+ export {
1742
+ createTextEngine,
1743
+ isGlyphFill2 as isGlyphFill,
1744
+ isShadowFill2 as isShadowFill
1745
+ };