@rel-packages/osu-beatmap-preview 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
- var GQ=Object.create;var{getPrototypeOf:WQ,defineProperty:J7,getOwnPropertyNames:kQ}=Object;var CQ=Object.prototype.hasOwnProperty;function NQ(_){return this[_]}var YQ,UQ,y4=(_,$,J)=>{var Z=_!=null&&typeof _==="object";if(Z){var Q=$?YQ??=new WeakMap:UQ??=new WeakMap,q=Q.get(_);if(q)return q}J=_!=null?GQ(WQ(_)):{};let K=$||!_||!_.__esModule?J7(J,"default",{value:_,enumerable:!0}):J;for(let V of kQ(_))if(!CQ.call(K,V))J7(K,V,{get:NQ.bind(_,V),enumerable:!0});if(Z)Q.set(_,K);return K};var S4=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var IQ=(_)=>_;function bQ(_,$){this[_]=IQ.bind(null,$)}var BQ=(_,$)=>{for(var J in $)J7(_,J,{get:$[J],enumerable:!0,configurable:!0,set:bQ.bind($,J)})};var Q$=S4((ZH,G7)=>{var DQ=Object.prototype.hasOwnProperty,f0="~";function G5(){}if(Object.create){if(G5.prototype=Object.create(null),!new G5().__proto__)f0=!1}function AQ(_,$,J){this.fn=_,this.context=$,this.once=J||!1}function Z$(_,$,J,Z,Q){if(typeof J!=="function")throw TypeError("The listener must be a function");var q=new AQ(J,Z||_,Q),K=f0?f0+$:$;if(!_._events[K])_._events[K]=q,_._eventsCount++;else if(!_._events[K].fn)_._events[K].push(q);else _._events[K]=[_._events[K],q];return _}function O6(_,$){if(--_._eventsCount===0)_._events=new G5;else delete _._events[$]}function A0(){this._events=new G5,this._eventsCount=0}A0.prototype.eventNames=function(){var $=[],J,Z;if(this._eventsCount===0)return $;for(Z in J=this._events)if(DQ.call(J,Z))$.push(f0?Z.slice(1):Z);if(Object.getOwnPropertySymbols)return $.concat(Object.getOwnPropertySymbols(J));return $};A0.prototype.listeners=function($){var J=f0?f0+$:$,Z=this._events[J];if(!Z)return[];if(Z.fn)return[Z.fn];for(var Q=0,q=Z.length,K=Array(q);Q<q;Q++)K[Q]=Z[Q].fn;return K};A0.prototype.listenerCount=function($){var J=f0?f0+$:$,Z=this._events[J];if(!Z)return 0;if(Z.fn)return 1;return Z.length};A0.prototype.emit=function($,J,Z,Q,q,K){var V=f0?f0+$:$;if(!this._events[V])return!1;var H=this._events[V],w=arguments.length,h,z;if(H.fn){if(H.once)this.removeListener($,H.fn,void 0,!0);switch(w){case 1:return H.fn.call(H.context),!0;case 2:return H.fn.call(H.context,J),!0;case 3:return H.fn.call(H.context,J,Z),!0;case 4:return H.fn.call(H.context,J,Z,Q),!0;case 5:return H.fn.call(H.context,J,Z,Q,q),!0;case 6:return H.fn.call(H.context,J,Z,Q,q,K),!0}for(z=1,h=Array(w-1);z<w;z++)h[z-1]=arguments[z];H.fn.apply(H.context,h)}else{var X=H.length,W;for(z=0;z<X;z++){if(H[z].once)this.removeListener($,H[z].fn,void 0,!0);switch(w){case 1:H[z].fn.call(H[z].context);break;case 2:H[z].fn.call(H[z].context,J);break;case 3:H[z].fn.call(H[z].context,J,Z);break;case 4:H[z].fn.call(H[z].context,J,Z,Q);break;default:if(!h)for(W=1,h=Array(w-1);W<w;W++)h[W-1]=arguments[W];H[z].fn.apply(H[z].context,h)}}}return!0};A0.prototype.on=function($,J,Z){return Z$(this,$,J,Z,!1)};A0.prototype.once=function($,J,Z){return Z$(this,$,J,Z,!0)};A0.prototype.removeListener=function($,J,Z,Q){var q=f0?f0+$:$;if(!this._events[q])return this;if(!J)return O6(this,q),this;var K=this._events[q];if(K.fn){if(K.fn===J&&(!Q||K.once)&&(!Z||K.context===Z))O6(this,q)}else{for(var V=0,H=[],w=K.length;V<w;V++)if(K[V].fn!==J||Q&&!K[V].once||Z&&K[V].context!==Z)H.push(K[V]);if(H.length)this._events[q]=H.length===1?H[0]:H;else O6(this,q)}return this};A0.prototype.removeAllListeners=function($){var J;if($){if(J=f0?f0+$:$,this._events[J])O6(this,J)}else this._events=new G5,this._eventsCount=0;return this};A0.prototype.off=A0.prototype.removeListener;A0.prototype.addListener=A0.prototype.on;A0.prefixed=f0;A0.EventEmitter=A0;if(typeof G7<"u")G7.exports=A0});var w$=S4((QH,N7)=>{N7.exports=D6;N7.exports.default=D6;function D6(_,$,J){J=J||2;var Z=$&&$.length,Q=Z?$[0]*J:_.length,q=K$(_,0,Q,J,!0),K=[];if(!q||q.next===q.prev)return K;var V,H,w,h,z,X,W;if(Z)q=EQ(_,$,q,J);if(_.length>80*J){V=w=_[0],H=h=_[1];for(var G=J;G<Q;G+=J){if(z=_[G],X=_[G+1],z<V)V=z;if(X<H)H=X;if(z>w)w=z;if(X>h)h=X}W=Math.max(w-V,h-H),W=W!==0?32767/W:0}return W5(q,K,J,V,H,W,0),K}function K$(_,$,J,Z,Q){var q,K;if(Q===C7(_,$,J,Z)>0)for(q=$;q<J;q+=Z)K=q$(q,_[q],_[q+1],K);else for(q=J-Z;q>=$;q-=Z)K=q$(q,_[q],_[q+1],K);if(K&&A6(K,K.next))C5(K),K=K.next;return K}function Q1(_,$){if(!_)return _;if(!$)$=_;var J=_,Z;do if(Z=!1,!J.steiner&&(A6(J,J.next)||V0(J.prev,J,J.next)===0)){if(C5(J),J=$=J.prev,J===J.next)break;Z=!0}else J=J.next;while(Z||J!==$);return $}function W5(_,$,J,Z,Q,q,K){if(!_)return;if(!K&&q)TQ(_,Z,Q,q);var V=_,H,w;while(_.prev!==_.next){if(H=_.prev,w=_.next,q?RQ(_,Z,Q,q):PQ(_)){$.push(H.i/J|0),$.push(_.i/J|0),$.push(w.i/J|0),C5(_),_=w.next,V=w.next;continue}if(_=w,_===V){if(!K)W5(Q1(_),$,J,Z,Q,q,1);else if(K===1)_=MQ(Q1(_),$,J),W5(_,$,J,Z,Q,q,2);else if(K===2)fQ(_,$,J,Z,Q,q);break}}}function PQ(_){var $=_.prev,J=_,Z=_.next;if(V0($,J,Z)>=0)return!1;var Q=$.x,q=J.x,K=Z.x,V=$.y,H=J.y,w=Z.y,h=Q<q?Q<K?Q:K:q<K?q:K,z=V<H?V<w?V:w:H<w?H:w,X=Q>q?Q>K?Q:K:q>K?q:K,W=V>H?V>w?V:w:H>w?H:w,G=Z.next;while(G!==$){if(G.x>=h&&G.x<=X&&G.y>=z&&G.y<=W&&M1(Q,V,q,H,K,w,G.x,G.y)&&V0(G.prev,G,G.next)>=0)return!1;G=G.next}return!0}function RQ(_,$,J,Z){var Q=_.prev,q=_,K=_.next;if(V0(Q,q,K)>=0)return!1;var V=Q.x,H=q.x,w=K.x,h=Q.y,z=q.y,X=K.y,W=V<H?V<w?V:w:H<w?H:w,G=h<z?h<X?h:X:z<X?z:X,k=V>H?V>w?V:w:H>w?H:w,C=h>z?h>X?h:X:z>X?z:X,Y=W7(W,G,$,J,Z),U=W7(k,C,$,J,Z),N=_.prevZ,I=_.nextZ;while(N&&N.z>=Y&&I&&I.z<=U){if(N.x>=W&&N.x<=k&&N.y>=G&&N.y<=C&&N!==Q&&N!==K&&M1(V,h,H,z,w,X,N.x,N.y)&&V0(N.prev,N,N.next)>=0)return!1;if(N=N.prevZ,I.x>=W&&I.x<=k&&I.y>=G&&I.y<=C&&I!==Q&&I!==K&&M1(V,h,H,z,w,X,I.x,I.y)&&V0(I.prev,I,I.next)>=0)return!1;I=I.nextZ}while(N&&N.z>=Y){if(N.x>=W&&N.x<=k&&N.y>=G&&N.y<=C&&N!==Q&&N!==K&&M1(V,h,H,z,w,X,N.x,N.y)&&V0(N.prev,N,N.next)>=0)return!1;N=N.prevZ}while(I&&I.z<=U){if(I.x>=W&&I.x<=k&&I.y>=G&&I.y<=C&&I!==Q&&I!==K&&M1(V,h,H,z,w,X,I.x,I.y)&&V0(I.prev,I,I.next)>=0)return!1;I=I.nextZ}return!0}function MQ(_,$,J){var Z=_;do{var Q=Z.prev,q=Z.next.next;if(!A6(Q,q)&&V$(Q,Z,Z.next,q)&&k5(Q,q)&&k5(q,Q))$.push(Q.i/J|0),$.push(Z.i/J|0),$.push(q.i/J|0),C5(Z),C5(Z.next),Z=_=q;Z=Z.next}while(Z!==_);return Q1(Z)}function fQ(_,$,J,Z,Q,q){var K=_;do{var V=K.next.next;while(V!==K.prev){if(K.i!==V.i&&pQ(K,V)){var H=H$(K,V);K=Q1(K,K.next),H=Q1(H,H.next),W5(K,$,J,Z,Q,q,0),W5(H,$,J,Z,Q,q,0);return}V=V.next}K=K.next}while(K!==_)}function EQ(_,$,J,Z){var Q=[],q,K,V,H,w;for(q=0,K=$.length;q<K;q++){if(V=$[q]*Z,H=q<K-1?$[q+1]*Z:_.length,w=K$(_,V,H,Z,!1),w===w.next)w.steiner=!0;Q.push(gQ(w))}Q.sort(vQ);for(q=0;q<Q.length;q++)J=cQ(Q[q],J);return J}function vQ(_,$){return _.x-$.x}function cQ(_,$){var J=yQ(_,$);if(!J)return $;var Z=H$(J,_);return Q1(Z,Z.next),Q1(J,J.next)}function yQ(_,$){var J=$,Z=_.x,Q=_.y,q=-1/0,K;do{if(Q<=J.y&&Q>=J.next.y&&J.next.y!==J.y){var V=J.x+(Q-J.y)*(J.next.x-J.x)/(J.next.y-J.y);if(V<=Z&&V>q){if(q=V,K=J.x<J.next.x?J:J.next,V===Z)return K}}J=J.next}while(J!==$);if(!K)return null;var H=K,w=K.x,h=K.y,z=1/0,X;J=K;do{if(Z>=J.x&&J.x>=w&&Z!==J.x&&M1(Q<h?Z:q,Q,w,h,Q<h?q:Z,Q,J.x,J.y)){if(X=Math.abs(Q-J.y)/(Z-J.x),k5(J,_)&&(X<z||X===z&&(J.x>K.x||J.x===K.x&&SQ(K,J))))K=J,z=X}J=J.next}while(J!==H);return K}function SQ(_,$){return V0(_.prev,_,$.prev)<0&&V0($.next,_,_.next)<0}function TQ(_,$,J,Z){var Q=_;do{if(Q.z===0)Q.z=W7(Q.x,Q.y,$,J,Z);Q.prevZ=Q.prev,Q.nextZ=Q.next,Q=Q.next}while(Q!==_);Q.prevZ.nextZ=null,Q.prevZ=null,dQ(Q)}function dQ(_){var $,J,Z,Q,q,K,V,H,w=1;do{J=_,_=null,q=null,K=0;while(J){K++,Z=J,V=0;for($=0;$<w;$++)if(V++,Z=Z.nextZ,!Z)break;H=w;while(V>0||H>0&&Z){if(V!==0&&(H===0||!Z||J.z<=Z.z))Q=J,J=J.nextZ,V--;else Q=Z,Z=Z.nextZ,H--;if(q)q.nextZ=Q;else _=Q;Q.prevZ=q,q=Q}J=Z}q.nextZ=null,w*=2}while(K>1);return _}function W7(_,$,J,Z,Q){return _=(_-J)*Q|0,$=($-Z)*Q|0,_=(_|_<<8)&16711935,_=(_|_<<4)&252645135,_=(_|_<<2)&858993459,_=(_|_<<1)&1431655765,$=($|$<<8)&16711935,$=($|$<<4)&252645135,$=($|$<<2)&858993459,$=($|$<<1)&1431655765,_|$<<1}function gQ(_){var $=_,J=_;do{if($.x<J.x||$.x===J.x&&$.y<J.y)J=$;$=$.next}while($!==_);return J}function M1(_,$,J,Z,Q,q,K,V){return(Q-K)*($-V)>=(_-K)*(q-V)&&(_-K)*(Z-V)>=(J-K)*($-V)&&(J-K)*(q-V)>=(Q-K)*(Z-V)}function pQ(_,$){return _.next.i!==$.i&&_.prev.i!==$.i&&!xQ(_,$)&&(k5(_,$)&&k5($,_)&&mQ(_,$)&&(V0(_.prev,_,$.prev)||V0(_,$.prev,$))||A6(_,$)&&V0(_.prev,_,_.next)>0&&V0($.prev,$,$.next)>0)}function V0(_,$,J){return($.y-_.y)*(J.x-$.x)-($.x-_.x)*(J.y-$.y)}function A6(_,$){return _.x===$.x&&_.y===$.y}function V$(_,$,J,Z){var Q=L6(V0(_,$,J)),q=L6(V0(_,$,Z)),K=L6(V0(J,Z,_)),V=L6(V0(J,Z,$));if(Q!==q&&K!==V)return!0;if(Q===0&&j6(_,J,$))return!0;if(q===0&&j6(_,Z,$))return!0;if(K===0&&j6(J,_,Z))return!0;if(V===0&&j6(J,$,Z))return!0;return!1}function j6(_,$,J){return $.x<=Math.max(_.x,J.x)&&$.x>=Math.min(_.x,J.x)&&$.y<=Math.max(_.y,J.y)&&$.y>=Math.min(_.y,J.y)}function L6(_){return _>0?1:_<0?-1:0}function xQ(_,$){var J=_;do{if(J.i!==_.i&&J.next.i!==_.i&&J.i!==$.i&&J.next.i!==$.i&&V$(J,J.next,_,$))return!0;J=J.next}while(J!==_);return!1}function k5(_,$){return V0(_.prev,_,_.next)<0?V0(_,$,_.next)>=0&&V0(_,_.prev,$)>=0:V0(_,$,_.prev)<0||V0(_,_.next,$)<0}function mQ(_,$){var J=_,Z=!1,Q=(_.x+$.x)/2,q=(_.y+$.y)/2;do{if(J.y>q!==J.next.y>q&&J.next.y!==J.y&&Q<(J.next.x-J.x)*(q-J.y)/(J.next.y-J.y)+J.x)Z=!Z;J=J.next}while(J!==_);return Z}function H$(_,$){var J=new k7(_.i,_.x,_.y),Z=new k7($.i,$.x,$.y),Q=_.next,q=$.prev;return _.next=$,$.prev=_,J.next=Q,Q.prev=J,Z.next=J,J.prev=Z,q.next=Z,Z.prev=q,Z}function q$(_,$,J,Z){var Q=new k7(_,$,J);if(!Z)Q.prev=Q,Q.next=Q;else Q.next=Z.next,Q.prev=Z,Z.next.prev=Q,Z.next=Q;return Q}function C5(_){if(_.next.prev=_.prev,_.prev.next=_.next,_.prevZ)_.prevZ.nextZ=_.nextZ;if(_.nextZ)_.nextZ.prevZ=_.prevZ}function k7(_,$,J){this.i=_,this.x=$,this.y=J,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}D6.deviation=function(_,$,J,Z){var Q=$&&$.length,q=Q?$[0]*J:_.length,K=Math.abs(C7(_,0,q,J));if(Q)for(var V=0,H=$.length;V<H;V++){var w=$[V]*J,h=V<H-1?$[V+1]*J:_.length;K-=Math.abs(C7(_,w,h,J))}var z=0;for(V=0;V<Z.length;V+=3){var X=Z[V]*J,W=Z[V+1]*J,G=Z[V+2]*J;z+=Math.abs((_[X]-_[G])*(_[W+1]-_[X+1])-(_[X]-_[W])*(_[G+1]-_[X+1]))}return K===0&&z===0?0:Math.abs((z-K)/K)};function C7(_,$,J,Z){var Q=0;for(var q=$,K=J-Z;q<J;q+=Z)Q+=(_[K]-_[q])*(_[q+1]+_[K+1]),K=q;return Q}D6.flatten=function(_){var $=_[0][0].length,J={vertices:[],holes:[],dimensions:$},Z=0;for(var Q=0;Q<_.length;Q++){for(var q=0;q<_[Q].length;q++)for(var K=0;K<$;K++)J.vertices.push(_[Q][q][K]);if(Q>0)Z+=_[Q-1].length,J.holes.push(Z)}return J}});var Z7;((Q)=>{Q[Q.Standard=0]="Standard";Q[Q.Taiko=1]="Taiko";Q[Q.Catch=2]="Catch";Q[Q.Mania=3]="Mania"})(Z7||={});var Q7;((Q)=>{Q[Q.Auto=0]="Auto";Q[Q.Normal=1]="Normal";Q[Q.Soft=2]="Soft";Q[Q.Drum=3]="Drum"})(Q7||={});var J_={Circle:1,Slider:2,NewCombo:4,Spinner:8,ComboSkip:112,Hold:128},I6={Normal:1,Whistle:2,Finish:4,Clap:8},q7=(_)=>(_.type&J_.Circle)!==0,Z1=(_)=>(_.type&J_.Slider)!==0,Z_=(_)=>(_.type&J_.Spinner)!==0,K7=(_)=>(_.type&J_.Hold)!==0,T4=(_)=>(_.type&J_.NewCombo)!==0;var d4;((H)=>{H.NoOsuFiles="NO_OSU_FILES";H.DifficultyNotFound="DIFFICULTY_NOT_FOUND";H.InvalidBeatmap="INVALID_BEATMAP";H.UnsupportedMode="UNSUPPORTED_MODE";H.AudioNotLoaded="AUDIO_NOT_LOADED";H.AudioDecodeError="AUDIO_DECODE_ERROR";H.NotLoaded="NOT_LOADED";H.Unknown="UNKNOWN"})(d4||={});var g4=(_)=>({success:!0,data:_}),G_=(_,$)=>({success:!1,code:_,reason:$}),OV=(_)=>{if(_.success)return _.data;throw Error(`[${_.code}] ${_.reason}`)},jV=(_)=>{return _.success},LV=(_)=>{return!_.success};var c={None:0,NoFail:1,Easy:2,TouchDevice:4,Hidden:8,HardRock:16,SuddenDeath:32,DoubleTime:64,Relax:128,HalfTime:256,Nightcore:512,Flashlight:1024,Autoplay:2048,SpunOut:4096,Autopilot:8192,Perfect:16384,FadeIn:8388608,Mirror:1073741824},FQ=c.DoubleTime|c.HalfTime|c.Nightcore,AV=c.HardRock|c.Easy|FQ,PV=(_)=>{let $=0,J=_.toLowerCase(),Z={nf:c.NoFail,ez:c.Easy,td:c.TouchDevice,hd:c.Hidden,hr:c.HardRock,sd:c.SuddenDeath,dt:c.DoubleTime,rx:c.Relax,ht:c.HalfTime,nc:c.Nightcore,fl:c.Flashlight,at:c.Autoplay,so:c.SpunOut,ap:c.Autopilot,pf:c.Perfect,fi:c.FadeIn,mr:c.Mirror};for(let Q=0;Q<J.length-1;Q+=2){let q=J.slice(Q,Q+2);if(Z[q])$|=Z[q]}return $},RV=(_)=>{let $=[];if(_&c.NoFail)$.push("NF");if(_&c.Easy)$.push("EZ");if(_&c.Hidden)$.push("HD");if(_&c.HardRock)$.push("HR");if(_&c.SuddenDeath)$.push("SD");if(_&c.DoubleTime)$.push("DT");if(_&c.HalfTime)$.push("HT");if(_&c.Nightcore)$.push("NC");if(_&c.Flashlight)$.push("FL");if(_&c.SpunOut)$.push("SO");if(_&c.FadeIn)$.push("FI");if(_&c.Mirror)$.push("MR");let J=$.indexOf("DT"),Z=$.indexOf("NC");if(J>=0&&Z>=0)$.splice(J,1);return $.join("")},p4=(_)=>{if(_&(c.DoubleTime|c.Nightcore))return 1.5;if(_&c.HalfTime)return 0.75;return 1},OQ=[c.HardRock|c.Easy,c.DoubleTime|c.HalfTime|c.Nightcore,c.Hidden|c.FadeIn],MV=(_,$)=>{if(_&$)return _&~$;let J=_;for(let Z of OQ)if($&Z)J&=~Z;return J|$},z0=(_,$)=>(_&$)!==0,fV=(_)=>{let $=[{name:"Easy",acronym:"EZ",value:c.Easy},{name:"Hidden",acronym:"HD",value:c.Hidden},{name:"Double Time",acronym:"DT",value:c.DoubleTime},{name:"Half Time",acronym:"HT",value:c.HalfTime},{name:"Nightcore",acronym:"NC",value:c.Nightcore}];switch(_){case"standard":return[...$,{name:"Hard Rock",acronym:"HR",value:c.HardRock}];case"mania":return[...$,{name:"Hard Rock",acronym:"HR",value:c.HardRock},{name:"Fade In",acronym:"FI",value:c.FadeIn}];case"taiko":case"catch":return[...$,{name:"Hard Rock",acronym:"HR",value:c.HardRock}];default:return $}};import{init_wasm as x4,parse as m4}from"@rel-packages/osu-beatmap-parser/browser";import u4 from"jszip";class A1{async load_osz(_,$){await x4();let J=await u4.loadAsync(_),Z=new Map;for(let[Q,q]of Object.entries(J.files))if(!q.dir)Z.set(Q,await q.async("arraybuffer"));return this.load_from_files(Z,$)}async load_from_files(_,$){await x4();let J=[..._.keys()].filter((C)=>C.toLowerCase().endsWith(".osu"));if(J.length===0)throw Error("No .osu files found in beatmap");let Z=await Promise.all(J.map(async(C)=>{let Y=_.get(C),U=this.to_bytes(Y),N=await m4(U);return{filename:C,beatmap:N}})),Q=this.select_difficulty(J,Z,$?.difficulty),q=_.get(Q),K=this.to_bytes(q),V=await m4(K),H=V.General.AudioFilename||null,w=V.Events.background?.filename||null,h=V.Events.video?.filename||null,z=V.Events.video?.startTime??0,X=new Map;for(let[C,Y]of _)if(Y instanceof ArrayBuffer)X.set(C,Y);else X.set(C,new TextEncoder().encode(Y).buffer);let W;if(H)W=this.find_file(X,H);let G;if(w){let C=this.find_file(X,w);if(C)G=new Blob([C])}let k;if(h){let C=this.find_file(X,h);if(C)k=new Blob([C])}return{beatmap:V,available_difficulties:Z,files:X,audio:W,background:G,video:k,audio_filename:H??void 0,background_filename:w??void 0,video_filename:h??void 0,video_offset:h?z:void 0}}async list_difficulties(_){let $=await u4.loadAsync(_),J=[];for(let Q of Object.keys($.files))if(Q.toLowerCase().endsWith(".osu"))J.push(Q);let Z=[];for(let Q of J){let K=(await $.files[Q].async("string")).match(/Version:\s*(.+)/);Z.push(K?K[1].trim():Q)}return Z}select_difficulty(_,$,J){if(J===void 0)return _[0];if(typeof J==="number"){if(J<0||J>=_.length)throw Error(`Difficulty index ${J} out of range (0-${_.length-1})`);return _[J]}let Z=$.find((K)=>K.beatmap.Metadata.Version===J);if(Z)return Z.filename;let Q=J.toLowerCase(),q=$.find((K)=>K.filename.toLowerCase().includes(Q)||K.beatmap.Metadata.Version.toLowerCase().includes(Q));if(q)return q.filename;throw Error(`Difficulty "${J}" not found`)}find_file(_,$){if(_.has($))return _.get($);let J=$.toLowerCase();for(let[Z,Q]of _)if(Z.toLowerCase()===J)return Q;return}to_bytes(_){if(_ instanceof ArrayBuffer)return new Uint8Array(_);return new TextEncoder().encode(_)}}import{init_wasm as HQ,parse as CV}from"@rel-packages/osu-beatmap-parser/browser";var V7=512,H7=384,n4;((q)=>{q[q.None=0]="None";q[q.Large=32]="Large";q[q.Medium=16]="Medium";q[q.Small=8]="Small";q[q.Tiny=4]="Tiny"})(n4||={});var D_={offset_x:64,offset_y:48,scale:1,show_playfield:!0,playfield_color:"#ffffff",playfield_opacity:0.1,grid_level:0,grid_color:"#ffffff",grid_opacity:0.35,use_high_dpi:!0,enable_stacking:!0};class P1{backend;skin;config;mods;skin_elements;beatmap;objects=[];background_image=null;constructor(_,$,J=0,Z=D_,Q=null){this.backend=_,this.skin=$,this.mods=J,this.config={...D_,...Z},this.skin_elements=Q}set_background(_){this.background_image=_}update_config(_){this.config={...this.config,..._}}precompute(_=0){}on_seek(_){}dispose(){this.objects=[]}render_playfield(_,$,J,Z){if(!this.config.show_playfield)return;let{backend:Q,config:q}=this,K=_??512,V=$??384,H=J??0,w=Z??0;Q.save(),Q.set_alpha(q.playfield_opacity),Q.begin_path(),Q.move_to(H,w),Q.line_to(H+K,w),Q.line_to(H+K,w+V),Q.line_to(H,w+V),Q.line_to(H,w),Q.stroke_path(q.playfield_color,2),Q.restore()}render_grid(){if(this.config.grid_level===0)return;let{backend:_,config:$}=this,J=$.grid_level;_.save(),_.set_alpha($.grid_opacity);for(let Z=0;Z<=512;Z+=J)_.begin_path(),_.move_to(Z,0),_.line_to(Z,384),_.stroke_path($.grid_color,Z%(J*4)===0?1:0.5);for(let Z=0;Z<=384;Z+=J)_.begin_path(),_.move_to(0,Z),_.line_to(512,Z),_.stroke_path($.grid_color,Z%(J*4)===0?1:0.5);_.restore()}render_background(){if(!this.background_image)return;let{backend:_}=this;_.save(),_.set_alpha(0.3);let{width:$,height:J}=_,{width:Z,height:Q}=this.background_image;if(Z>0&&Q>0){let q=Math.max($/Z,J/Q),K=Z*q,V=Q*q,H=($-K)/2,w=(J-V)/2;_.draw_image(this.background_image,H,w,K,V)}else _.draw_image(this.background_image,0,0,$,J);_.restore()}get_visible_objects(_,$,J){let Z=[];for(let Q=0;Q<this.objects.length;Q++){let q=this.objects[Q],K=q.time-$,V=q.end_time+J;if(_>=K&&_<=V)Z.push(q)}return Z}}var p0=((_)=>(_[_.WEBGL_LEGACY=0]="WEBGL_LEGACY",_[_.WEBGL=1]="WEBGL",_[_.WEBGL2=2]="WEBGL2",_))(p0||{}),w7=((_)=>(_[_.UNKNOWN=0]="UNKNOWN",_[_.WEBGL=1]="WEBGL",_[_.CANVAS=2]="CANVAS",_))(w7||{}),b6=((_)=>(_[_.COLOR=16384]="COLOR",_[_.DEPTH=256]="DEPTH",_[_.STENCIL=1024]="STENCIL",_))(b6||{}),d=((_)=>(_[_.NORMAL=0]="NORMAL",_[_.ADD=1]="ADD",_[_.MULTIPLY=2]="MULTIPLY",_[_.SCREEN=3]="SCREEN",_[_.OVERLAY=4]="OVERLAY",_[_.DARKEN=5]="DARKEN",_[_.LIGHTEN=6]="LIGHTEN",_[_.COLOR_DODGE=7]="COLOR_DODGE",_[_.COLOR_BURN=8]="COLOR_BURN",_[_.HARD_LIGHT=9]="HARD_LIGHT",_[_.SOFT_LIGHT=10]="SOFT_LIGHT",_[_.DIFFERENCE=11]="DIFFERENCE",_[_.EXCLUSION=12]="EXCLUSION",_[_.HUE=13]="HUE",_[_.SATURATION=14]="SATURATION",_[_.COLOR=15]="COLOR",_[_.LUMINOSITY=16]="LUMINOSITY",_[_.NORMAL_NPM=17]="NORMAL_NPM",_[_.ADD_NPM=18]="ADD_NPM",_[_.SCREEN_NPM=19]="SCREEN_NPM",_[_.NONE=20]="NONE",_[_.SRC_OVER=0]="SRC_OVER",_[_.SRC_IN=21]="SRC_IN",_[_.SRC_OUT=22]="SRC_OUT",_[_.SRC_ATOP=23]="SRC_ATOP",_[_.DST_OVER=24]="DST_OVER",_[_.DST_IN=25]="DST_IN",_[_.DST_OUT=26]="DST_OUT",_[_.DST_ATOP=27]="DST_ATOP",_[_.ERASE=26]="ERASE",_[_.SUBTRACT=28]="SUBTRACT",_[_.XOR=29]="XOR",_))(d||{}),c0=((_)=>(_[_.POINTS=0]="POINTS",_[_.LINES=1]="LINES",_[_.LINE_LOOP=2]="LINE_LOOP",_[_.LINE_STRIP=3]="LINE_STRIP",_[_.TRIANGLES=4]="TRIANGLES",_[_.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",_[_.TRIANGLE_FAN=6]="TRIANGLE_FAN",_))(c0||{}),R=((_)=>(_[_.RGBA=6408]="RGBA",_[_.RGB=6407]="RGB",_[_.RG=33319]="RG",_[_.RED=6403]="RED",_[_.RGBA_INTEGER=36249]="RGBA_INTEGER",_[_.RGB_INTEGER=36248]="RGB_INTEGER",_[_.RG_INTEGER=33320]="RG_INTEGER",_[_.RED_INTEGER=36244]="RED_INTEGER",_[_.ALPHA=6406]="ALPHA",_[_.LUMINANCE=6409]="LUMINANCE",_[_.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",_[_.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",_[_.DEPTH_STENCIL=34041]="DEPTH_STENCIL",_))(R||{}),A_=((_)=>(_[_.TEXTURE_2D=3553]="TEXTURE_2D",_[_.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",_[_.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",_[_.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",_[_.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",_[_.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",_[_.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",_[_.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",_[_.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",_))(A_||{}),g=((_)=>(_[_.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",_[_.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",_[_.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",_[_.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",_[_.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",_[_.UNSIGNED_INT=5125]="UNSIGNED_INT",_[_.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",_[_.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",_[_.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",_[_.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",_[_.BYTE=5120]="BYTE",_[_.SHORT=5122]="SHORT",_[_.INT=5124]="INT",_[_.FLOAT=5126]="FLOAT",_[_.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",_[_.HALF_FLOAT=36193]="HALF_FLOAT",_))(g||{}),S=((_)=>(_[_.FLOAT=0]="FLOAT",_[_.INT=1]="INT",_[_.UINT=2]="UINT",_))(S||{}),y0=((_)=>(_[_.NEAREST=0]="NEAREST",_[_.LINEAR=1]="LINEAR",_))(y0||{}),x0=((_)=>(_[_.CLAMP=33071]="CLAMP",_[_.REPEAT=10497]="REPEAT",_[_.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",_))(x0||{}),F0=((_)=>(_[_.OFF=0]="OFF",_[_.POW2=1]="POW2",_[_.ON=2]="ON",_[_.ON_MANUAL=3]="ON_MANUAL",_))(F0||{}),K0=((_)=>(_[_.NPM=0]="NPM",_[_.UNPACK=1]="UNPACK",_[_.PMA=2]="PMA",_[_.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",_[_.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",_[_.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",_))(K0||{}),m0=((_)=>(_[_.NO=0]="NO",_[_.YES=1]="YES",_[_.AUTO=2]="AUTO",_[_.BLEND=0]="BLEND",_[_.CLEAR=1]="CLEAR",_[_.BLIT=2]="BLIT",_))(m0||{}),B6=((_)=>(_[_.AUTO=0]="AUTO",_[_.MANUAL=1]="MANUAL",_))(B6||{}),M0=((_)=>(_.LOW="lowp",_.MEDIUM="mediump",_.HIGH="highp",_))(M0||{}),X0=((_)=>(_[_.NONE=0]="NONE",_[_.SCISSOR=1]="SCISSOR",_[_.STENCIL=2]="STENCIL",_[_.SPRITE=3]="SPRITE",_[_.COLOR=4]="COLOR",_))(X0||{});var e=((_)=>(_[_.NONE=0]="NONE",_[_.LOW=2]="LOW",_[_.MEDIUM=4]="MEDIUM",_[_.HIGH=8]="HIGH",_))(e||{}),S0=((_)=>(_[_.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",_[_.ARRAY_BUFFER=34962]="ARRAY_BUFFER",_[_.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",_))(S0||{});var h7={createCanvas:(_,$)=>{let J=document.createElement("canvas");return J.width=_,J.height=$,J},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(_,$)=>fetch(_,$),parseXML:(_)=>new DOMParser().parseFromString(_,"text/xml")};var B={ADAPTER:h7,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var z7=/iPhone/i,l4=/iPod/i,o4=/iPad/i,s4=/\biOS-universal(?:.+)Mac\b/i,X7=/\bAndroid(?:.+)Mobile\b/i,i4=/Android/i,R1=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,F6=/Silk/i,P_=/Windows Phone/i,a4=/\bWindows(?:.+)ARM\b/i,r4=/BlackBerry/i,t4=/BB10/i,e4=/Opera Mini/i,_$=/\b(CriOS|Chrome)(?:.+)Mobile/i,$$=/Mobile(?:.+)Firefox\b/i,J$=function(_){return typeof _<"u"&&_.platform==="MacIntel"&&typeof _.maxTouchPoints==="number"&&_.maxTouchPoints>1&&typeof MSStream>"u"};function jQ(_){return function($){return $.test(_)}}function X5(_){var $={userAgent:"",platform:"",maxTouchPoints:0};if(!_&&typeof navigator<"u")$={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0};else if(typeof _==="string")$.userAgent=_;else if(_&&_.userAgent)$={userAgent:_.userAgent,platform:_.platform,maxTouchPoints:_.maxTouchPoints||0};var J=$.userAgent,Z=J.split("[FBAN");if(typeof Z[1]<"u")J=Z[0];if(Z=J.split("Twitter"),typeof Z[1]<"u")J=Z[0];var Q=jQ(J),q={apple:{phone:Q(z7)&&!Q(P_),ipod:Q(l4),tablet:!Q(z7)&&(Q(o4)||J$($))&&!Q(P_),universal:Q(s4),device:(Q(z7)||Q(l4)||Q(o4)||Q(s4)||J$($))&&!Q(P_)},amazon:{phone:Q(R1),tablet:!Q(R1)&&Q(F6),device:Q(R1)||Q(F6)},android:{phone:!Q(P_)&&Q(R1)||!Q(P_)&&Q(X7),tablet:!Q(P_)&&!Q(R1)&&!Q(X7)&&(Q(F6)||Q(i4)),device:!Q(P_)&&(Q(R1)||Q(F6)||Q(X7)||Q(i4))||Q(/\bokhttp\b/i)},windows:{phone:Q(P_),tablet:Q(a4),device:Q(P_)||Q(a4)},other:{blackberry:Q(r4),blackberry10:Q(t4),opera:Q(e4),firefox:Q($$),chrome:Q(_$),device:Q(r4)||Q(t4)||Q(e4)||Q($$)||Q(_$)},any:!1,phone:!1,tablet:!1};return q.any=q.apple.device||q.android.device||q.windows.device||q.other.device,q.phone=q.apple.phone||q.android.phone||q.windows.phone,q.tablet=q.apple.tablet||q.android.tablet||q.windows.tablet,q}var LQ=X5.default??X5,o0=LQ(globalThis.navigator);var P={};BQ(P,{url:()=>N$,uid:()=>W_,trimCanvas:()=>o$,string2hex:()=>v$,skipHello:()=>U$,sign:()=>x$,sayHello:()=>I$,rgb2hex:()=>c$,removeItems:()=>E6,premultiplyTintToRgba:()=>d$,premultiplyTint:()=>T$,premultiplyRgba:()=>S$,premultiplyBlendMode:()=>I5,path:()=>B7,nextPow2:()=>d_,log2:()=>B5,isWebGLSupported:()=>R6,isPow2:()=>b5,isMobile:()=>o0,interleaveTypedArrays:()=>p$,hex2string:()=>E$,hex2rgb:()=>f$,getResolutionOfUrl:()=>j5,getCanvasBoundingBox:()=>v6,getBufferType:()=>T_,earcut:()=>i$.default,determineCrossOrigin:()=>c6,detectVideoAlphaMode:()=>Y$,destroyTextureCache:()=>m$,deprecation:()=>l,decomposeDataUri:()=>s$,createIndicesForQuads:()=>g$,correctBlendMode:()=>y$,clearTextureCache:()=>u$,TextureCache:()=>U0,ProgramCache:()=>O5,EventEmitter:()=>g_.default,DATA_URI:()=>f6,CanvasRenderTarget:()=>f7,BoundingBox:()=>F5,BaseTextureCache:()=>E0});B.RETINA_PREFIX=/@([0-9\.]+)x/;B.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var g_=y4(Q$(),1),i$=y4(w$(),1);var{URL:uQ,URLSearchParams:qH}=globalThis;function b7(_){return typeof _==="string"}function G$(_){return typeof _==="object"&&_!==null}function P6(_){return _===null}function nQ(_){return _==null}function Q_(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var lQ=/^([a-z0-9.+-]+:)/i,oQ=/:[0-9]*$/,sQ=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,iQ=["<",">",'"',"`"," ","\r",`
2
- `,"\t"],aQ=["{","}","|","\\","^","`"].concat(iQ),Y7=["'"].concat(aQ),h$=["%","/","?",";","#"].concat(Y7),z$=["/","?","#"],rQ=255,X$=/^[+a-z0-9A-Z_-]{0,63}$/,tQ=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,eQ={javascript:!0,"javascript:":!0},U7={javascript:!0,"javascript:":!0},f1={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},I7={parse(_){var $=decodeURIComponent;return(_+"").replace(/\+/g," ").split("&").filter(Boolean).reduce(function(J,Z,Q){var q=Z.split("="),K=$(q[0]||""),V=$(q[1]||""),H=J[K];return J[K]=H===void 0?V:[].concat(H,V),J},{})},stringify(_){var $=encodeURIComponent;return Object.keys(_||{}).reduce(function(J,Z){return[].concat(_[Z]).forEach(function(Q){J.push($(Z)+"="+$(Q))}),J},[]).join("&").replace(/\s/g,"+")}};function N5(_,$,J){if(_&&G$(_)&&_ instanceof Q_)return _;var Z=new Q_;return Z.parse(_,$,J),Z}Q_.prototype.parse=function(_,$,J){if(!b7(_))throw TypeError("Parameter 'url' must be a string, not "+typeof _);var Z=_.indexOf("?"),Q=Z!==-1&&Z<_.indexOf("#")?"?":"#",q=_.split(Q),K=/\\/g;q[0]=q[0].replace(K,"/"),_=q.join(Q);var V=_;if(V=V.trim(),!J&&_.split("#").length===1){var H=sQ.exec(V);if(H){if(this.path=V,this.href=V,this.pathname=H[1],H[2])if(this.search=H[2],$)this.query=I7.parse(this.search.substr(1));else this.query=this.search.substr(1);else if($)this.search="",this.query={};return this}}var w=lQ.exec(V);if(w){w=w[0];var h=w.toLowerCase();this.protocol=h,V=V.substr(w.length)}if(J||w||V.match(/^\/\/[^@\/]+@[^@\/]+/)){var z=V.substr(0,2)==="//";if(z&&!(w&&U7[w]))V=V.substr(2),this.slashes=!0}if(!U7[w]&&(z||w&&!f1[w])){var X=-1;for(var W=0;W<z$.length;W++){var G=V.indexOf(z$[W]);if(G!==-1&&(X===-1||G<X))X=G}var k,C;if(X===-1)C=V.lastIndexOf("@");else C=V.lastIndexOf("@",X);if(C!==-1)k=V.slice(0,C),V=V.slice(C+1),this.auth=decodeURIComponent(k);X=-1;for(var W=0;W<h$.length;W++){var G=V.indexOf(h$[W]);if(G!==-1&&(X===-1||G<X))X=G}if(X===-1)X=V.length;this.host=V.slice(0,X),V=V.slice(X),this.parseHost(),this.hostname=this.hostname||"";var Y=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!Y){var U=this.hostname.split(/\./);for(var W=0,N=U.length;W<N;W++){var I=U[W];if(!I)continue;if(!I.match(X$)){var f="";for(var y=0,D=I.length;y<D;y++)if(I.charCodeAt(y)>127)f+="x";else f+=I[y];if(!f.match(X$)){var L=U.slice(0,W),v=U.slice(W+1),m=I.match(tQ);if(m)L.push(m[1]),v.unshift(m[2]);if(v.length)V="/"+v.join(".")+V;this.hostname=L.join(".");break}}}}if(this.hostname.length>rQ)this.hostname="";else this.hostname=this.hostname.toLowerCase();if(!Y)this.hostname=new uQ(`https://${this.hostname}`).hostname;var F=this.port?":"+this.port:"",M=this.hostname||"";if(this.host=M+F,this.href+=this.host,Y){if(this.hostname=this.hostname.substr(1,this.hostname.length-2),V[0]!=="/")V="/"+V}}if(!eQ[h])for(var W=0,N=Y7.length;W<N;W++){var j=Y7[W];if(V.indexOf(j)===-1)continue;var A=encodeURIComponent(j);if(A===j)A=escape(j);V=V.split(j).join(A)}var i=V.indexOf("#");if(i!==-1)this.hash=V.substr(i),V=V.slice(0,i);var a=V.indexOf("?");if(a!==-1){if(this.search=V.substr(a),this.query=V.substr(a+1),$)this.query=I7.parse(this.query);V=V.slice(0,a)}else if($)this.search="",this.query={};if(V)this.pathname=V;if(f1[h]&&this.hostname&&!this.pathname)this.pathname="/";if(this.pathname||this.search){var F=this.pathname||"",T=this.search||"";this.path=F+T}return this.href=this.format(),this};function W$(_){if(b7(_))_=N5(_);if(!(_ instanceof Q_))return Q_.prototype.format.call(_);return _.format()}Q_.prototype.format=function(){var _=this.auth||"";if(_)_=encodeURIComponent(_),_=_.replace(/%3A/i,":"),_+="@";var $=this.protocol||"",J=this.pathname||"",Z=this.hash||"",Q=!1,q="";if(this.host)Q=_+this.host;else if(this.hostname){if(Q=_+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port)Q+=":"+this.port}if(this.query&&G$(this.query)&&Object.keys(this.query).length)q=I7.stringify(this.query);var K=this.search||q&&"?"+q||"";if($&&$.substr(-1)!==":")$+=":";if(this.slashes||(!$||f1[$])&&Q!==!1){if(Q="//"+(Q||""),J&&J.charAt(0)!=="/")J="/"+J}else if(!Q)Q="";if(Z&&Z.charAt(0)!=="#")Z="#"+Z;if(K&&K.charAt(0)!=="?")K="?"+K;return J=J.replace(/[?#]/g,function(V){return encodeURIComponent(V)}),K=K.replace("#","%23"),$+Q+J+K+Z};function k$(_,$){return N5(_,!1,!0).resolve($)}Q_.prototype.resolve=function(_){return this.resolveObject(N5(_,!1,!0)).format()};Q_.prototype.resolveObject=function(_){if(b7(_)){var $=new Q_;$.parse(_,!1,!0),_=$}var J=new Q_,Z=Object.keys(this);for(var Q=0;Q<Z.length;Q++){var q=Z[Q];J[q]=this[q]}if(J.hash=_.hash,_.href==="")return J.href=J.format(),J;if(_.slashes&&!_.protocol){var K=Object.keys(_);for(var V=0;V<K.length;V++){var H=K[V];if(H!=="protocol")J[H]=_[H]}if(f1[J.protocol]&&J.hostname&&!J.pathname)J.path=J.pathname="/";return J.href=J.format(),J}if(_.protocol&&_.protocol!==J.protocol){if(!f1[_.protocol]){var w=Object.keys(_);for(var h=0;h<w.length;h++){var z=w[h];J[z]=_[z]}return J.href=J.format(),J}if(J.protocol=_.protocol,!_.host&&!U7[_.protocol]){var N=(_.pathname||"").split("/");while(N.length&&!(_.host=N.shift()));if(!_.host)_.host="";if(!_.hostname)_.hostname="";if(N[0]!=="")N.unshift("");if(N.length<2)N.unshift("");J.pathname=N.join("/")}else J.pathname=_.pathname;if(J.search=_.search,J.query=_.query,J.host=_.host||"",J.auth=_.auth,J.hostname=_.hostname||_.host,J.port=_.port,J.pathname||J.search){var X=J.pathname||"",W=J.search||"";J.path=X+W}return J.slashes=J.slashes||_.slashes,J.href=J.format(),J}var G=J.pathname&&J.pathname.charAt(0)==="/",k=_.host||_.pathname&&_.pathname.charAt(0)==="/",C=k||G||J.host&&_.pathname,Y=C,U=J.pathname&&J.pathname.split("/")||[],N=_.pathname&&_.pathname.split("/")||[],I=J.protocol&&!f1[J.protocol];if(I){if(J.hostname="",J.port=null,J.host)if(U[0]==="")U[0]=J.host;else U.unshift(J.host);if(J.host="",_.protocol){if(_.hostname=null,_.port=null,_.host)if(N[0]==="")N[0]=_.host;else N.unshift(_.host);_.host=null}C=C&&(N[0]===""||U[0]==="")}if(k)J.host=_.host||_.host===""?_.host:J.host,J.hostname=_.hostname||_.hostname===""?_.hostname:J.hostname,J.search=_.search,J.query=_.query,U=N;else if(N.length){if(!U)U=[];U.pop(),U=U.concat(N),J.search=_.search,J.query=_.query}else if(!nQ(_.search)){if(I){J.hostname=J.host=U.shift();var f=J.host&&J.host.indexOf("@")>0?J.host.split("@"):!1;if(f)J.auth=f.shift(),J.host=J.hostname=f.shift()}if(J.search=_.search,J.query=_.query,!P6(J.pathname)||!P6(J.search))J.path=(J.pathname?J.pathname:"")+(J.search?J.search:"");return J.href=J.format(),J}if(!U.length){if(J.pathname=null,J.search)J.path="/"+J.search;else J.path=null;return J.href=J.format(),J}var y=U.slice(-1)[0],D=(J.host||_.host||U.length>1)&&(y==="."||y==="..")||y==="",L=0;for(var v=U.length;v>=0;v--)if(y=U[v],y===".")U.splice(v,1);else if(y==="..")U.splice(v,1),L++;else if(L)U.splice(v,1),L--;if(!C&&!Y)for(;L--;L)U.unshift("..");if(C&&U[0]!==""&&(!U[0]||U[0].charAt(0)!=="/"))U.unshift("");if(D&&U.join("/").substr(-1)!=="/")U.push("");var m=U[0]===""||U[0]&&U[0].charAt(0)==="/";if(I){J.hostname=J.host=m?"":U.length?U.shift():"";var f=J.host&&J.host.indexOf("@")>0?J.host.split("@"):!1;if(f)J.auth=f.shift(),J.host=J.hostname=f.shift()}if(C=C||J.host&&U.length,C&&!m)U.unshift("");if(!U.length)J.pathname=null,J.path=null;else J.pathname=U.join("/");if(!P6(J.pathname)||!P6(J.search))J.path=(J.pathname?J.pathname:"")+(J.search?J.search:"");return J.auth=_.auth||J.auth,J.slashes=J.slashes||_.slashes,J.href=J.format(),J};Q_.prototype.parseHost=function(){var _=this.host,$=oQ.exec(_);if($){if($=$[0],$!==":")this.port=$.substr(1);_=_.substr(0,_.length-$.length)}if(_)this.hostname=_};var C$={};function l(_,$,J=3){if(C$[$])return;let Z=Error().stack;typeof Z>"u"?console.warn("PixiJS Deprecation Warning: ",`${$}
1
+ var WQ=Object.create;var{getPrototypeOf:kQ,defineProperty:Z9,getOwnPropertyNames:CQ}=Object;var NQ=Object.prototype.hasOwnProperty;function YQ(_){return this[_]}var UQ,IQ,c4=(_,$,J)=>{var Z=_!=null&&typeof _==="object";if(Z){var Q=$?UQ??=new WeakMap:IQ??=new WeakMap,q=Q.get(_);if(q)return q}J=_!=null?WQ(kQ(_)):{};let K=$||!_||!_.__esModule?Z9(J,"default",{value:_,enumerable:!0}):J;for(let V of CQ(_))if(!NQ.call(K,V))Z9(K,V,{get:YQ.bind(_,V),enumerable:!0});if(Z)Q.set(_,K);return K};var y4=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var bQ=(_)=>_;function BQ(_,$){this[_]=bQ.bind(null,$)}var FQ=(_,$)=>{for(var J in $)Z9(_,J,{get:$[J],enumerable:!0,configurable:!0,set:BQ.bind($,J)})};var Z$=y4((qH,W9)=>{var AQ=Object.prototype.hasOwnProperty,f0="~";function G5(){}if(Object.create){if(G5.prototype=Object.create(null),!new G5().__proto__)f0=!1}function PQ(_,$,J){this.fn=_,this.context=$,this.once=J||!1}function J$(_,$,J,Z,Q){if(typeof J!=="function")throw TypeError("The listener must be a function");var q=new PQ(J,Z||_,Q),K=f0?f0+$:$;if(!_._events[K])_._events[K]=q,_._eventsCount++;else if(!_._events[K].fn)_._events[K].push(q);else _._events[K]=[_._events[K],q];return _}function O6(_,$){if(--_._eventsCount===0)_._events=new G5;else delete _._events[$]}function A0(){this._events=new G5,this._eventsCount=0}A0.prototype.eventNames=function(){var $=[],J,Z;if(this._eventsCount===0)return $;for(Z in J=this._events)if(AQ.call(J,Z))$.push(f0?Z.slice(1):Z);if(Object.getOwnPropertySymbols)return $.concat(Object.getOwnPropertySymbols(J));return $};A0.prototype.listeners=function($){var J=f0?f0+$:$,Z=this._events[J];if(!Z)return[];if(Z.fn)return[Z.fn];for(var Q=0,q=Z.length,K=Array(q);Q<q;Q++)K[Q]=Z[Q].fn;return K};A0.prototype.listenerCount=function($){var J=f0?f0+$:$,Z=this._events[J];if(!Z)return 0;if(Z.fn)return 1;return Z.length};A0.prototype.emit=function($,J,Z,Q,q,K){var V=f0?f0+$:$;if(!this._events[V])return!1;var H=this._events[V],w=arguments.length,h,z;if(H.fn){if(H.once)this.removeListener($,H.fn,void 0,!0);switch(w){case 1:return H.fn.call(H.context),!0;case 2:return H.fn.call(H.context,J),!0;case 3:return H.fn.call(H.context,J,Z),!0;case 4:return H.fn.call(H.context,J,Z,Q),!0;case 5:return H.fn.call(H.context,J,Z,Q,q),!0;case 6:return H.fn.call(H.context,J,Z,Q,q,K),!0}for(z=1,h=Array(w-1);z<w;z++)h[z-1]=arguments[z];H.fn.apply(H.context,h)}else{var X=H.length,W;for(z=0;z<X;z++){if(H[z].once)this.removeListener($,H[z].fn,void 0,!0);switch(w){case 1:H[z].fn.call(H[z].context);break;case 2:H[z].fn.call(H[z].context,J);break;case 3:H[z].fn.call(H[z].context,J,Z);break;case 4:H[z].fn.call(H[z].context,J,Z,Q);break;default:if(!h)for(W=1,h=Array(w-1);W<w;W++)h[W-1]=arguments[W];H[z].fn.apply(H[z].context,h)}}}return!0};A0.prototype.on=function($,J,Z){return J$(this,$,J,Z,!1)};A0.prototype.once=function($,J,Z){return J$(this,$,J,Z,!0)};A0.prototype.removeListener=function($,J,Z,Q){var q=f0?f0+$:$;if(!this._events[q])return this;if(!J)return O6(this,q),this;var K=this._events[q];if(K.fn){if(K.fn===J&&(!Q||K.once)&&(!Z||K.context===Z))O6(this,q)}else{for(var V=0,H=[],w=K.length;V<w;V++)if(K[V].fn!==J||Q&&!K[V].once||Z&&K[V].context!==Z)H.push(K[V]);if(H.length)this._events[q]=H.length===1?H[0]:H;else O6(this,q)}return this};A0.prototype.removeAllListeners=function($){var J;if($){if(J=f0?f0+$:$,this._events[J])O6(this,J)}else this._events=new G5,this._eventsCount=0;return this};A0.prototype.off=A0.prototype.removeListener;A0.prototype.addListener=A0.prototype.on;A0.prefixed=f0;A0.EventEmitter=A0;if(typeof W9<"u")W9.exports=A0});var H$=y4((KH,Y9)=>{Y9.exports=D6;Y9.exports.default=D6;function D6(_,$,J){J=J||2;var Z=$&&$.length,Q=Z?$[0]*J:_.length,q=q$(_,0,Q,J,!0),K=[];if(!q||q.next===q.prev)return K;var V,H,w,h,z,X,W;if(Z)q=vQ(_,$,q,J);if(_.length>80*J){V=w=_[0],H=h=_[1];for(var G=J;G<Q;G+=J){if(z=_[G],X=_[G+1],z<V)V=z;if(X<H)H=X;if(z>w)w=z;if(X>h)h=X}W=Math.max(w-V,h-H),W=W!==0?32767/W:0}return W5(q,K,J,V,H,W,0),K}function q$(_,$,J,Z,Q){var q,K;if(Q===N9(_,$,J,Z)>0)for(q=$;q<J;q+=Z)K=Q$(q,_[q],_[q+1],K);else for(q=J-Z;q>=$;q-=Z)K=Q$(q,_[q],_[q+1],K);if(K&&A6(K,K.next))C5(K),K=K.next;return K}function Q1(_,$){if(!_)return _;if(!$)$=_;var J=_,Z;do if(Z=!1,!J.steiner&&(A6(J,J.next)||V0(J.prev,J,J.next)===0)){if(C5(J),J=$=J.prev,J===J.next)break;Z=!0}else J=J.next;while(Z||J!==$);return $}function W5(_,$,J,Z,Q,q,K){if(!_)return;if(!K&&q)dQ(_,Z,Q,q);var V=_,H,w;while(_.prev!==_.next){if(H=_.prev,w=_.next,q?MQ(_,Z,Q,q):RQ(_)){$.push(H.i/J|0),$.push(_.i/J|0),$.push(w.i/J|0),C5(_),_=w.next,V=w.next;continue}if(_=w,_===V){if(!K)W5(Q1(_),$,J,Z,Q,q,1);else if(K===1)_=fQ(Q1(_),$,J),W5(_,$,J,Z,Q,q,2);else if(K===2)EQ(_,$,J,Z,Q,q);break}}}function RQ(_){var $=_.prev,J=_,Z=_.next;if(V0($,J,Z)>=0)return!1;var Q=$.x,q=J.x,K=Z.x,V=$.y,H=J.y,w=Z.y,h=Q<q?Q<K?Q:K:q<K?q:K,z=V<H?V<w?V:w:H<w?H:w,X=Q>q?Q>K?Q:K:q>K?q:K,W=V>H?V>w?V:w:H>w?H:w,G=Z.next;while(G!==$){if(G.x>=h&&G.x<=X&&G.y>=z&&G.y<=W&&M1(Q,V,q,H,K,w,G.x,G.y)&&V0(G.prev,G,G.next)>=0)return!1;G=G.next}return!0}function MQ(_,$,J,Z){var Q=_.prev,q=_,K=_.next;if(V0(Q,q,K)>=0)return!1;var V=Q.x,H=q.x,w=K.x,h=Q.y,z=q.y,X=K.y,W=V<H?V<w?V:w:H<w?H:w,G=h<z?h<X?h:X:z<X?z:X,k=V>H?V>w?V:w:H>w?H:w,C=h>z?h>X?h:X:z>X?z:X,Y=k9(W,G,$,J,Z),U=k9(k,C,$,J,Z),N=_.prevZ,I=_.nextZ;while(N&&N.z>=Y&&I&&I.z<=U){if(N.x>=W&&N.x<=k&&N.y>=G&&N.y<=C&&N!==Q&&N!==K&&M1(V,h,H,z,w,X,N.x,N.y)&&V0(N.prev,N,N.next)>=0)return!1;if(N=N.prevZ,I.x>=W&&I.x<=k&&I.y>=G&&I.y<=C&&I!==Q&&I!==K&&M1(V,h,H,z,w,X,I.x,I.y)&&V0(I.prev,I,I.next)>=0)return!1;I=I.nextZ}while(N&&N.z>=Y){if(N.x>=W&&N.x<=k&&N.y>=G&&N.y<=C&&N!==Q&&N!==K&&M1(V,h,H,z,w,X,N.x,N.y)&&V0(N.prev,N,N.next)>=0)return!1;N=N.prevZ}while(I&&I.z<=U){if(I.x>=W&&I.x<=k&&I.y>=G&&I.y<=C&&I!==Q&&I!==K&&M1(V,h,H,z,w,X,I.x,I.y)&&V0(I.prev,I,I.next)>=0)return!1;I=I.nextZ}return!0}function fQ(_,$,J){var Z=_;do{var Q=Z.prev,q=Z.next.next;if(!A6(Q,q)&&K$(Q,Z,Z.next,q)&&k5(Q,q)&&k5(q,Q))$.push(Q.i/J|0),$.push(Z.i/J|0),$.push(q.i/J|0),C5(Z),C5(Z.next),Z=_=q;Z=Z.next}while(Z!==_);return Q1(Z)}function EQ(_,$,J,Z,Q,q){var K=_;do{var V=K.next.next;while(V!==K.prev){if(K.i!==V.i&&xQ(K,V)){var H=V$(K,V);K=Q1(K,K.next),H=Q1(H,H.next),W5(K,$,J,Z,Q,q,0),W5(H,$,J,Z,Q,q,0);return}V=V.next}K=K.next}while(K!==_)}function vQ(_,$,J,Z){var Q=[],q,K,V,H,w;for(q=0,K=$.length;q<K;q++){if(V=$[q]*Z,H=q<K-1?$[q+1]*Z:_.length,w=q$(_,V,H,Z,!1),w===w.next)w.steiner=!0;Q.push(pQ(w))}Q.sort(cQ);for(q=0;q<Q.length;q++)J=yQ(Q[q],J);return J}function cQ(_,$){return _.x-$.x}function yQ(_,$){var J=SQ(_,$);if(!J)return $;var Z=V$(J,_);return Q1(Z,Z.next),Q1(J,J.next)}function SQ(_,$){var J=$,Z=_.x,Q=_.y,q=-1/0,K;do{if(Q<=J.y&&Q>=J.next.y&&J.next.y!==J.y){var V=J.x+(Q-J.y)*(J.next.x-J.x)/(J.next.y-J.y);if(V<=Z&&V>q){if(q=V,K=J.x<J.next.x?J:J.next,V===Z)return K}}J=J.next}while(J!==$);if(!K)return null;var H=K,w=K.x,h=K.y,z=1/0,X;J=K;do{if(Z>=J.x&&J.x>=w&&Z!==J.x&&M1(Q<h?Z:q,Q,w,h,Q<h?q:Z,Q,J.x,J.y)){if(X=Math.abs(Q-J.y)/(Z-J.x),k5(J,_)&&(X<z||X===z&&(J.x>K.x||J.x===K.x&&TQ(K,J))))K=J,z=X}J=J.next}while(J!==H);return K}function TQ(_,$){return V0(_.prev,_,$.prev)<0&&V0($.next,_,_.next)<0}function dQ(_,$,J,Z){var Q=_;do{if(Q.z===0)Q.z=k9(Q.x,Q.y,$,J,Z);Q.prevZ=Q.prev,Q.nextZ=Q.next,Q=Q.next}while(Q!==_);Q.prevZ.nextZ=null,Q.prevZ=null,gQ(Q)}function gQ(_){var $,J,Z,Q,q,K,V,H,w=1;do{J=_,_=null,q=null,K=0;while(J){K++,Z=J,V=0;for($=0;$<w;$++)if(V++,Z=Z.nextZ,!Z)break;H=w;while(V>0||H>0&&Z){if(V!==0&&(H===0||!Z||J.z<=Z.z))Q=J,J=J.nextZ,V--;else Q=Z,Z=Z.nextZ,H--;if(q)q.nextZ=Q;else _=Q;Q.prevZ=q,q=Q}J=Z}q.nextZ=null,w*=2}while(K>1);return _}function k9(_,$,J,Z,Q){return _=(_-J)*Q|0,$=($-Z)*Q|0,_=(_|_<<8)&16711935,_=(_|_<<4)&252645135,_=(_|_<<2)&858993459,_=(_|_<<1)&1431655765,$=($|$<<8)&16711935,$=($|$<<4)&252645135,$=($|$<<2)&858993459,$=($|$<<1)&1431655765,_|$<<1}function pQ(_){var $=_,J=_;do{if($.x<J.x||$.x===J.x&&$.y<J.y)J=$;$=$.next}while($!==_);return J}function M1(_,$,J,Z,Q,q,K,V){return(Q-K)*($-V)>=(_-K)*(q-V)&&(_-K)*(Z-V)>=(J-K)*($-V)&&(J-K)*(q-V)>=(Q-K)*(Z-V)}function xQ(_,$){return _.next.i!==$.i&&_.prev.i!==$.i&&!mQ(_,$)&&(k5(_,$)&&k5($,_)&&uQ(_,$)&&(V0(_.prev,_,$.prev)||V0(_,$.prev,$))||A6(_,$)&&V0(_.prev,_,_.next)>0&&V0($.prev,$,$.next)>0)}function V0(_,$,J){return($.y-_.y)*(J.x-$.x)-($.x-_.x)*(J.y-$.y)}function A6(_,$){return _.x===$.x&&_.y===$.y}function K$(_,$,J,Z){var Q=L6(V0(_,$,J)),q=L6(V0(_,$,Z)),K=L6(V0(J,Z,_)),V=L6(V0(J,Z,$));if(Q!==q&&K!==V)return!0;if(Q===0&&j6(_,J,$))return!0;if(q===0&&j6(_,Z,$))return!0;if(K===0&&j6(J,_,Z))return!0;if(V===0&&j6(J,$,Z))return!0;return!1}function j6(_,$,J){return $.x<=Math.max(_.x,J.x)&&$.x>=Math.min(_.x,J.x)&&$.y<=Math.max(_.y,J.y)&&$.y>=Math.min(_.y,J.y)}function L6(_){return _>0?1:_<0?-1:0}function mQ(_,$){var J=_;do{if(J.i!==_.i&&J.next.i!==_.i&&J.i!==$.i&&J.next.i!==$.i&&K$(J,J.next,_,$))return!0;J=J.next}while(J!==_);return!1}function k5(_,$){return V0(_.prev,_,_.next)<0?V0(_,$,_.next)>=0&&V0(_,_.prev,$)>=0:V0(_,$,_.prev)<0||V0(_,_.next,$)<0}function uQ(_,$){var J=_,Z=!1,Q=(_.x+$.x)/2,q=(_.y+$.y)/2;do{if(J.y>q!==J.next.y>q&&J.next.y!==J.y&&Q<(J.next.x-J.x)*(q-J.y)/(J.next.y-J.y)+J.x)Z=!Z;J=J.next}while(J!==_);return Z}function V$(_,$){var J=new C9(_.i,_.x,_.y),Z=new C9($.i,$.x,$.y),Q=_.next,q=$.prev;return _.next=$,$.prev=_,J.next=Q,Q.prev=J,Z.next=J,J.prev=Z,q.next=Z,Z.prev=q,Z}function Q$(_,$,J,Z){var Q=new C9(_,$,J);if(!Z)Q.prev=Q,Q.next=Q;else Q.next=Z.next,Q.prev=Z,Z.next.prev=Q,Z.next=Q;return Q}function C5(_){if(_.next.prev=_.prev,_.prev.next=_.next,_.prevZ)_.prevZ.nextZ=_.nextZ;if(_.nextZ)_.nextZ.prevZ=_.prevZ}function C9(_,$,J){this.i=_,this.x=$,this.y=J,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}D6.deviation=function(_,$,J,Z){var Q=$&&$.length,q=Q?$[0]*J:_.length,K=Math.abs(N9(_,0,q,J));if(Q)for(var V=0,H=$.length;V<H;V++){var w=$[V]*J,h=V<H-1?$[V+1]*J:_.length;K-=Math.abs(N9(_,w,h,J))}var z=0;for(V=0;V<Z.length;V+=3){var X=Z[V]*J,W=Z[V+1]*J,G=Z[V+2]*J;z+=Math.abs((_[X]-_[G])*(_[W+1]-_[X+1])-(_[X]-_[W])*(_[G+1]-_[X+1]))}return K===0&&z===0?0:Math.abs((z-K)/K)};function N9(_,$,J,Z){var Q=0;for(var q=$,K=J-Z;q<J;q+=Z)Q+=(_[K]-_[q])*(_[q+1]+_[K+1]),K=q;return Q}D6.flatten=function(_){var $=_[0][0].length,J={vertices:[],holes:[],dimensions:$},Z=0;for(var Q=0;Q<_.length;Q++){for(var q=0;q<_[Q].length;q++)for(var K=0;K<$;K++)J.vertices.push(_[Q][q][K]);if(Q>0)Z+=_[Q-1].length,J.holes.push(Z)}return J}});var Q9;((Q)=>{Q[Q.Standard=0]="Standard";Q[Q.Taiko=1]="Taiko";Q[Q.Catch=2]="Catch";Q[Q.Mania=3]="Mania"})(Q9||={});var q9;((Q)=>{Q[Q.Auto=0]="Auto";Q[Q.Normal=1]="Normal";Q[Q.Soft=2]="Soft";Q[Q.Drum=3]="Drum"})(q9||={});var J_={Circle:1,Slider:2,NewCombo:4,Spinner:8,ComboSkip:112,Hold:128},I6={Normal:1,Whistle:2,Finish:4,Clap:8},K9=(_)=>(_.type&J_.Circle)!==0,Z1=(_)=>(_.type&J_.Slider)!==0,Z_=(_)=>(_.type&J_.Spinner)!==0,V9=(_)=>(_.type&J_.Hold)!==0,S4=(_)=>(_.type&J_.NewCombo)!==0;var T4;((H)=>{H.NoOsuFiles="NO_OSU_FILES";H.DifficultyNotFound="DIFFICULTY_NOT_FOUND";H.InvalidBeatmap="INVALID_BEATMAP";H.UnsupportedMode="UNSUPPORTED_MODE";H.AudioNotLoaded="AUDIO_NOT_LOADED";H.AudioDecodeError="AUDIO_DECODE_ERROR";H.NotLoaded="NOT_LOADED";H.Unknown="UNKNOWN"})(T4||={});var d4=(_)=>({success:!0,data:_}),G_=(_,$)=>({success:!1,code:_,reason:$}),LV=(_)=>{if(_.success)return _.data;throw Error(`[${_.code}] ${_.reason}`)},DV=(_)=>{return _.success},AV=(_)=>{return!_.success};var c={None:0,NoFail:1,Easy:2,TouchDevice:4,Hidden:8,HardRock:16,SuddenDeath:32,DoubleTime:64,Relax:128,HalfTime:256,Nightcore:512,Flashlight:1024,Autoplay:2048,SpunOut:4096,Autopilot:8192,Perfect:16384,FadeIn:8388608,Mirror:1073741824},OQ=c.DoubleTime|c.HalfTime|c.Nightcore,RV=c.HardRock|c.Easy|OQ,MV=(_)=>{let $=0,J=_.toLowerCase(),Z={nf:c.NoFail,ez:c.Easy,td:c.TouchDevice,hd:c.Hidden,hr:c.HardRock,sd:c.SuddenDeath,dt:c.DoubleTime,rx:c.Relax,ht:c.HalfTime,nc:c.Nightcore,fl:c.Flashlight,at:c.Autoplay,so:c.SpunOut,ap:c.Autopilot,pf:c.Perfect,fi:c.FadeIn,mr:c.Mirror};for(let Q=0;Q<J.length-1;Q+=2){let q=J.slice(Q,Q+2);if(Z[q])$|=Z[q]}return $},fV=(_)=>{let $=[];if(_&c.NoFail)$.push("NF");if(_&c.Easy)$.push("EZ");if(_&c.Hidden)$.push("HD");if(_&c.HardRock)$.push("HR");if(_&c.SuddenDeath)$.push("SD");if(_&c.DoubleTime)$.push("DT");if(_&c.HalfTime)$.push("HT");if(_&c.Nightcore)$.push("NC");if(_&c.Flashlight)$.push("FL");if(_&c.SpunOut)$.push("SO");if(_&c.FadeIn)$.push("FI");if(_&c.Mirror)$.push("MR");let J=$.indexOf("DT"),Z=$.indexOf("NC");if(J>=0&&Z>=0)$.splice(J,1);return $.join("")},g4=(_)=>{if(_&(c.DoubleTime|c.Nightcore))return 1.5;if(_&c.HalfTime)return 0.75;return 1},jQ=[c.HardRock|c.Easy,c.DoubleTime|c.HalfTime|c.Nightcore,c.Hidden|c.FadeIn],EV=(_,$)=>{if(_&$)return _&~$;let J=_;for(let Z of jQ)if($&Z)J&=~Z;return J|$},h0=(_,$)=>(_&$)!==0,vV=(_)=>{let $=[{name:"Easy",acronym:"EZ",value:c.Easy},{name:"Hidden",acronym:"HD",value:c.Hidden},{name:"Double Time",acronym:"DT",value:c.DoubleTime},{name:"Half Time",acronym:"HT",value:c.HalfTime},{name:"Nightcore",acronym:"NC",value:c.Nightcore}];switch(_){case"standard":return[...$,{name:"Hard Rock",acronym:"HR",value:c.HardRock}];case"mania":return[...$,{name:"Hard Rock",acronym:"HR",value:c.HardRock},{name:"Fade In",acronym:"FI",value:c.FadeIn}];case"taiko":case"catch":return[...$,{name:"Hard Rock",acronym:"HR",value:c.HardRock}];default:return $}};import{init_wasm as p4,parse as x4}from"@rel-packages/osu-beatmap-parser/browser";import m4 from"jszip";class A1{async load_osz(_,$){await p4();let J=await m4.loadAsync(_),Z=new Map;for(let[Q,q]of Object.entries(J.files))if(!q.dir)Z.set(Q,await q.async("arraybuffer"));return this.load_from_files(Z,$)}async load_from_files(_,$){await p4();let J=[..._.keys()].filter((C)=>C.toLowerCase().endsWith(".osu"));if(J.length===0)throw Error("No .osu files found in beatmap");let Z=await Promise.all(J.map(async(C)=>{let Y=_.get(C),U=this.to_bytes(Y),N=await x4(U);return{filename:C,beatmap:N}})),Q=this.select_difficulty(J,Z,$?.difficulty),q=_.get(Q),K=this.to_bytes(q),V=await x4(K),H=V.General.AudioFilename||null,w=V.Events.background?.filename||null,h=V.Events.video?.filename||null,z=V.Events.video?.startTime??0,X=new Map;for(let[C,Y]of _)if(Y instanceof ArrayBuffer)X.set(C,Y);else X.set(C,new TextEncoder().encode(Y).buffer);let W;if(H)W=this.find_file(X,H);let G;if(w){let C=this.find_file(X,w);if(C)G=new Blob([C])}let k;if(h){let C=this.find_file(X,h);if(C)k=new Blob([C])}return{beatmap:V,available_difficulties:Z,files:X,audio:W,background:G,video:k,audio_filename:H??void 0,background_filename:w??void 0,video_filename:h??void 0,video_offset:h?z:void 0}}async list_difficulties(_){let $=await m4.loadAsync(_),J=[];for(let Q of Object.keys($.files))if(Q.toLowerCase().endsWith(".osu"))J.push(Q);let Z=[];for(let Q of J){let K=(await $.files[Q].async("string")).match(/Version:\s*(.+)/);Z.push(K?K[1].trim():Q)}return Z}select_difficulty(_,$,J){if(J===void 0)return _[0];if(typeof J==="number"){if(J<0||J>=_.length)throw Error(`Difficulty index ${J} out of range (0-${_.length-1})`);return _[J]}let Z=$.find((K)=>K.beatmap.Metadata.Version===J);if(Z)return Z.filename;let Q=J.toLowerCase(),q=$.find((K)=>K.filename.toLowerCase().includes(Q)||K.beatmap.Metadata.Version.toLowerCase().includes(Q));if(q)return q.filename;throw Error(`Difficulty "${J}" not found`)}find_file(_,$){if(_.has($))return _.get($);let J=$.toLowerCase();for(let[Z,Q]of _)if(Z.toLowerCase()===J)return Q;return}to_bytes(_){if(_ instanceof ArrayBuffer)return new Uint8Array(_);return new TextEncoder().encode(_)}}import{init_wasm as wQ,parse as YV}from"@rel-packages/osu-beatmap-parser/browser";var H9=512,w9=384,u4;((q)=>{q[q.None=0]="None";q[q.Large=32]="Large";q[q.Medium=16]="Medium";q[q.Small=8]="Small";q[q.Tiny=4]="Tiny"})(u4||={});var D_={offset_x:64,offset_y:48,scale:1,show_playfield:!0,playfield_color:"#ffffff",playfield_opacity:0.1,grid_level:0,grid_color:"#ffffff",grid_opacity:0.35,use_high_dpi:!0,enable_stacking:!0};class P1{backend;skin;config;mods;skin_elements;beatmap;objects=[];background_image=null;constructor(_,$,J=0,Z=D_,Q=null){this.backend=_,this.skin=$,this.mods=J,this.config={...D_,...Z},this.skin_elements=Q}set_background(_){this.background_image=_}update_config(_){this.config={...this.config,..._}}precompute(_=0){}on_seek(_){}dispose(){this.objects=[]}render_playfield(_,$,J,Z){if(!this.config.show_playfield)return;let{backend:Q,config:q}=this,K=_??512,V=$??384,H=J??0,w=Z??0;Q.save(),Q.set_alpha(q.playfield_opacity),Q.begin_path(),Q.move_to(H,w),Q.line_to(H+K,w),Q.line_to(H+K,w+V),Q.line_to(H,w+V),Q.line_to(H,w),Q.stroke_path(q.playfield_color,2),Q.restore()}render_grid(){if(this.config.grid_level===0)return;let{backend:_,config:$}=this,J=$.grid_level;_.save(),_.set_alpha($.grid_opacity);for(let Z=0;Z<=512;Z+=J)_.begin_path(),_.move_to(Z,0),_.line_to(Z,384),_.stroke_path($.grid_color,Z%(J*4)===0?1:0.5);for(let Z=0;Z<=384;Z+=J)_.begin_path(),_.move_to(0,Z),_.line_to(512,Z),_.stroke_path($.grid_color,Z%(J*4)===0?1:0.5);_.restore()}render_background(){if(!this.background_image)return;let{backend:_}=this;_.save(),_.set_alpha(0.3);let{width:$,height:J}=_,{width:Z,height:Q}=this.background_image;if(Z>0&&Q>0){let q=Math.max($/Z,J/Q),K=Z*q,V=Q*q,H=($-K)/2,w=(J-V)/2;_.draw_image(this.background_image,H,w,K,V)}else _.draw_image(this.background_image,0,0,$,J);_.restore()}get_visible_objects(_,$,J){let Z=[];for(let Q=0;Q<this.objects.length;Q++){let q=this.objects[Q],K=q.time-$,V=q.end_time+J;if(_>=K&&_<=V)Z.push(q)}return Z}}var p0=((_)=>(_[_.WEBGL_LEGACY=0]="WEBGL_LEGACY",_[_.WEBGL=1]="WEBGL",_[_.WEBGL2=2]="WEBGL2",_))(p0||{}),h9=((_)=>(_[_.UNKNOWN=0]="UNKNOWN",_[_.WEBGL=1]="WEBGL",_[_.CANVAS=2]="CANVAS",_))(h9||{}),b6=((_)=>(_[_.COLOR=16384]="COLOR",_[_.DEPTH=256]="DEPTH",_[_.STENCIL=1024]="STENCIL",_))(b6||{}),d=((_)=>(_[_.NORMAL=0]="NORMAL",_[_.ADD=1]="ADD",_[_.MULTIPLY=2]="MULTIPLY",_[_.SCREEN=3]="SCREEN",_[_.OVERLAY=4]="OVERLAY",_[_.DARKEN=5]="DARKEN",_[_.LIGHTEN=6]="LIGHTEN",_[_.COLOR_DODGE=7]="COLOR_DODGE",_[_.COLOR_BURN=8]="COLOR_BURN",_[_.HARD_LIGHT=9]="HARD_LIGHT",_[_.SOFT_LIGHT=10]="SOFT_LIGHT",_[_.DIFFERENCE=11]="DIFFERENCE",_[_.EXCLUSION=12]="EXCLUSION",_[_.HUE=13]="HUE",_[_.SATURATION=14]="SATURATION",_[_.COLOR=15]="COLOR",_[_.LUMINOSITY=16]="LUMINOSITY",_[_.NORMAL_NPM=17]="NORMAL_NPM",_[_.ADD_NPM=18]="ADD_NPM",_[_.SCREEN_NPM=19]="SCREEN_NPM",_[_.NONE=20]="NONE",_[_.SRC_OVER=0]="SRC_OVER",_[_.SRC_IN=21]="SRC_IN",_[_.SRC_OUT=22]="SRC_OUT",_[_.SRC_ATOP=23]="SRC_ATOP",_[_.DST_OVER=24]="DST_OVER",_[_.DST_IN=25]="DST_IN",_[_.DST_OUT=26]="DST_OUT",_[_.DST_ATOP=27]="DST_ATOP",_[_.ERASE=26]="ERASE",_[_.SUBTRACT=28]="SUBTRACT",_[_.XOR=29]="XOR",_))(d||{}),c0=((_)=>(_[_.POINTS=0]="POINTS",_[_.LINES=1]="LINES",_[_.LINE_LOOP=2]="LINE_LOOP",_[_.LINE_STRIP=3]="LINE_STRIP",_[_.TRIANGLES=4]="TRIANGLES",_[_.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",_[_.TRIANGLE_FAN=6]="TRIANGLE_FAN",_))(c0||{}),R=((_)=>(_[_.RGBA=6408]="RGBA",_[_.RGB=6407]="RGB",_[_.RG=33319]="RG",_[_.RED=6403]="RED",_[_.RGBA_INTEGER=36249]="RGBA_INTEGER",_[_.RGB_INTEGER=36248]="RGB_INTEGER",_[_.RG_INTEGER=33320]="RG_INTEGER",_[_.RED_INTEGER=36244]="RED_INTEGER",_[_.ALPHA=6406]="ALPHA",_[_.LUMINANCE=6409]="LUMINANCE",_[_.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",_[_.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",_[_.DEPTH_STENCIL=34041]="DEPTH_STENCIL",_))(R||{}),A_=((_)=>(_[_.TEXTURE_2D=3553]="TEXTURE_2D",_[_.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",_[_.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",_[_.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",_[_.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",_[_.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",_[_.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",_[_.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",_[_.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",_))(A_||{}),g=((_)=>(_[_.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",_[_.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",_[_.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",_[_.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",_[_.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",_[_.UNSIGNED_INT=5125]="UNSIGNED_INT",_[_.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",_[_.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",_[_.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",_[_.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",_[_.BYTE=5120]="BYTE",_[_.SHORT=5122]="SHORT",_[_.INT=5124]="INT",_[_.FLOAT=5126]="FLOAT",_[_.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",_[_.HALF_FLOAT=36193]="HALF_FLOAT",_))(g||{}),S=((_)=>(_[_.FLOAT=0]="FLOAT",_[_.INT=1]="INT",_[_.UINT=2]="UINT",_))(S||{}),y0=((_)=>(_[_.NEAREST=0]="NEAREST",_[_.LINEAR=1]="LINEAR",_))(y0||{}),x0=((_)=>(_[_.CLAMP=33071]="CLAMP",_[_.REPEAT=10497]="REPEAT",_[_.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",_))(x0||{}),F0=((_)=>(_[_.OFF=0]="OFF",_[_.POW2=1]="POW2",_[_.ON=2]="ON",_[_.ON_MANUAL=3]="ON_MANUAL",_))(F0||{}),K0=((_)=>(_[_.NPM=0]="NPM",_[_.UNPACK=1]="UNPACK",_[_.PMA=2]="PMA",_[_.NO_PREMULTIPLIED_ALPHA=0]="NO_PREMULTIPLIED_ALPHA",_[_.PREMULTIPLY_ON_UPLOAD=1]="PREMULTIPLY_ON_UPLOAD",_[_.PREMULTIPLIED_ALPHA=2]="PREMULTIPLIED_ALPHA",_))(K0||{}),m0=((_)=>(_[_.NO=0]="NO",_[_.YES=1]="YES",_[_.AUTO=2]="AUTO",_[_.BLEND=0]="BLEND",_[_.CLEAR=1]="CLEAR",_[_.BLIT=2]="BLIT",_))(m0||{}),B6=((_)=>(_[_.AUTO=0]="AUTO",_[_.MANUAL=1]="MANUAL",_))(B6||{}),M0=((_)=>(_.LOW="lowp",_.MEDIUM="mediump",_.HIGH="highp",_))(M0||{}),z0=((_)=>(_[_.NONE=0]="NONE",_[_.SCISSOR=1]="SCISSOR",_[_.STENCIL=2]="STENCIL",_[_.SPRITE=3]="SPRITE",_[_.COLOR=4]="COLOR",_))(z0||{});var e=((_)=>(_[_.NONE=0]="NONE",_[_.LOW=2]="LOW",_[_.MEDIUM=4]="MEDIUM",_[_.HIGH=8]="HIGH",_))(e||{}),S0=((_)=>(_[_.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",_[_.ARRAY_BUFFER=34962]="ARRAY_BUFFER",_[_.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",_))(S0||{});var z9={createCanvas:(_,$)=>{let J=document.createElement("canvas");return J.width=_,J.height=$,J},getCanvasRenderingContext2D:()=>CanvasRenderingContext2D,getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(_,$)=>fetch(_,$),parseXML:(_)=>new DOMParser().parseFromString(_,"text/xml")};var B={ADAPTER:z9,RESOLUTION:1,CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};var X9=/iPhone/i,n4=/iPod/i,l4=/iPad/i,o4=/\biOS-universal(?:.+)Mac\b/i,G9=/\bAndroid(?:.+)Mobile\b/i,s4=/Android/i,R1=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,F6=/Silk/i,P_=/Windows Phone/i,i4=/\bWindows(?:.+)ARM\b/i,a4=/BlackBerry/i,r4=/BB10/i,t4=/Opera Mini/i,e4=/\b(CriOS|Chrome)(?:.+)Mobile/i,_$=/Mobile(?:.+)Firefox\b/i,$$=function(_){return typeof _<"u"&&_.platform==="MacIntel"&&typeof _.maxTouchPoints==="number"&&_.maxTouchPoints>1&&typeof MSStream>"u"};function LQ(_){return function($){return $.test(_)}}function X5(_){var $={userAgent:"",platform:"",maxTouchPoints:0};if(!_&&typeof navigator<"u")$={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0};else if(typeof _==="string")$.userAgent=_;else if(_&&_.userAgent)$={userAgent:_.userAgent,platform:_.platform,maxTouchPoints:_.maxTouchPoints||0};var J=$.userAgent,Z=J.split("[FBAN");if(typeof Z[1]<"u")J=Z[0];if(Z=J.split("Twitter"),typeof Z[1]<"u")J=Z[0];var Q=LQ(J),q={apple:{phone:Q(X9)&&!Q(P_),ipod:Q(n4),tablet:!Q(X9)&&(Q(l4)||$$($))&&!Q(P_),universal:Q(o4),device:(Q(X9)||Q(n4)||Q(l4)||Q(o4)||$$($))&&!Q(P_)},amazon:{phone:Q(R1),tablet:!Q(R1)&&Q(F6),device:Q(R1)||Q(F6)},android:{phone:!Q(P_)&&Q(R1)||!Q(P_)&&Q(G9),tablet:!Q(P_)&&!Q(R1)&&!Q(G9)&&(Q(F6)||Q(s4)),device:!Q(P_)&&(Q(R1)||Q(F6)||Q(G9)||Q(s4))||Q(/\bokhttp\b/i)},windows:{phone:Q(P_),tablet:Q(i4),device:Q(P_)||Q(i4)},other:{blackberry:Q(a4),blackberry10:Q(r4),opera:Q(t4),firefox:Q(_$),chrome:Q(e4),device:Q(a4)||Q(r4)||Q(t4)||Q(_$)||Q(e4)},any:!1,phone:!1,tablet:!1};return q.any=q.apple.device||q.android.device||q.windows.device||q.other.device,q.phone=q.apple.phone||q.android.phone||q.windows.phone,q.tablet=q.apple.tablet||q.android.tablet||q.windows.tablet,q}var DQ=X5.default??X5,o0=DQ(globalThis.navigator);var P={};FQ(P,{url:()=>C$,uid:()=>W_,trimCanvas:()=>l$,string2hex:()=>E$,skipHello:()=>Y$,sign:()=>p$,sayHello:()=>U$,rgb2hex:()=>v$,removeItems:()=>E6,premultiplyTintToRgba:()=>T$,premultiplyTint:()=>S$,premultiplyRgba:()=>y$,premultiplyBlendMode:()=>I5,path:()=>F9,nextPow2:()=>d_,log2:()=>B5,isWebGLSupported:()=>R6,isPow2:()=>b5,isMobile:()=>o0,interleaveTypedArrays:()=>g$,hex2string:()=>f$,hex2rgb:()=>M$,getResolutionOfUrl:()=>j5,getCanvasBoundingBox:()=>v6,getBufferType:()=>T_,earcut:()=>s$.default,determineCrossOrigin:()=>c6,detectVideoAlphaMode:()=>N$,destroyTextureCache:()=>x$,deprecation:()=>l,decomposeDataUri:()=>o$,createIndicesForQuads:()=>d$,correctBlendMode:()=>c$,clearTextureCache:()=>m$,TextureCache:()=>U0,ProgramCache:()=>O5,EventEmitter:()=>g_.default,DATA_URI:()=>f6,CanvasRenderTarget:()=>E9,BoundingBox:()=>F5,BaseTextureCache:()=>E0});B.RETINA_PREFIX=/@([0-9\.]+)x/;B.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT=!1;var g_=c4(Z$(),1),s$=c4(H$(),1);var{URL:nQ,URLSearchParams:VH}=globalThis;function B9(_){return typeof _==="string"}function X$(_){return typeof _==="object"&&_!==null}function P6(_){return _===null}function lQ(_){return _==null}function Q_(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var oQ=/^([a-z0-9.+-]+:)/i,sQ=/:[0-9]*$/,iQ=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,aQ=["<",">",'"',"`"," ","\r",`
2
+ `,"\t"],rQ=["{","}","|","\\","^","`"].concat(aQ),U9=["'"].concat(rQ),w$=["%","/","?",";","#"].concat(U9),h$=["/","?","#"],tQ=255,z$=/^[+a-z0-9A-Z_-]{0,63}$/,eQ=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,_2={javascript:!0,"javascript:":!0},I9={javascript:!0,"javascript:":!0},f1={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b9={parse(_){var $=decodeURIComponent;return(_+"").replace(/\+/g," ").split("&").filter(Boolean).reduce(function(J,Z,Q){var q=Z.split("="),K=$(q[0]||""),V=$(q[1]||""),H=J[K];return J[K]=H===void 0?V:[].concat(H,V),J},{})},stringify(_){var $=encodeURIComponent;return Object.keys(_||{}).reduce(function(J,Z){return[].concat(_[Z]).forEach(function(Q){J.push($(Z)+"="+$(Q))}),J},[]).join("&").replace(/\s/g,"+")}};function N5(_,$,J){if(_&&X$(_)&&_ instanceof Q_)return _;var Z=new Q_;return Z.parse(_,$,J),Z}Q_.prototype.parse=function(_,$,J){if(!B9(_))throw TypeError("Parameter 'url' must be a string, not "+typeof _);var Z=_.indexOf("?"),Q=Z!==-1&&Z<_.indexOf("#")?"?":"#",q=_.split(Q),K=/\\/g;q[0]=q[0].replace(K,"/"),_=q.join(Q);var V=_;if(V=V.trim(),!J&&_.split("#").length===1){var H=iQ.exec(V);if(H){if(this.path=V,this.href=V,this.pathname=H[1],H[2])if(this.search=H[2],$)this.query=b9.parse(this.search.substr(1));else this.query=this.search.substr(1);else if($)this.search="",this.query={};return this}}var w=oQ.exec(V);if(w){w=w[0];var h=w.toLowerCase();this.protocol=h,V=V.substr(w.length)}if(J||w||V.match(/^\/\/[^@\/]+@[^@\/]+/)){var z=V.substr(0,2)==="//";if(z&&!(w&&I9[w]))V=V.substr(2),this.slashes=!0}if(!I9[w]&&(z||w&&!f1[w])){var X=-1;for(var W=0;W<h$.length;W++){var G=V.indexOf(h$[W]);if(G!==-1&&(X===-1||G<X))X=G}var k,C;if(X===-1)C=V.lastIndexOf("@");else C=V.lastIndexOf("@",X);if(C!==-1)k=V.slice(0,C),V=V.slice(C+1),this.auth=decodeURIComponent(k);X=-1;for(var W=0;W<w$.length;W++){var G=V.indexOf(w$[W]);if(G!==-1&&(X===-1||G<X))X=G}if(X===-1)X=V.length;this.host=V.slice(0,X),V=V.slice(X),this.parseHost(),this.hostname=this.hostname||"";var Y=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!Y){var U=this.hostname.split(/\./);for(var W=0,N=U.length;W<N;W++){var I=U[W];if(!I)continue;if(!I.match(z$)){var f="";for(var y=0,D=I.length;y<D;y++)if(I.charCodeAt(y)>127)f+="x";else f+=I[y];if(!f.match(z$)){var L=U.slice(0,W),v=U.slice(W+1),m=I.match(eQ);if(m)L.push(m[1]),v.unshift(m[2]);if(v.length)V="/"+v.join(".")+V;this.hostname=L.join(".");break}}}}if(this.hostname.length>tQ)this.hostname="";else this.hostname=this.hostname.toLowerCase();if(!Y)this.hostname=new nQ(`https://${this.hostname}`).hostname;var F=this.port?":"+this.port:"",M=this.hostname||"";if(this.host=M+F,this.href+=this.host,Y){if(this.hostname=this.hostname.substr(1,this.hostname.length-2),V[0]!=="/")V="/"+V}}if(!_2[h])for(var W=0,N=U9.length;W<N;W++){var j=U9[W];if(V.indexOf(j)===-1)continue;var A=encodeURIComponent(j);if(A===j)A=escape(j);V=V.split(j).join(A)}var i=V.indexOf("#");if(i!==-1)this.hash=V.substr(i),V=V.slice(0,i);var a=V.indexOf("?");if(a!==-1){if(this.search=V.substr(a),this.query=V.substr(a+1),$)this.query=b9.parse(this.query);V=V.slice(0,a)}else if($)this.search="",this.query={};if(V)this.pathname=V;if(f1[h]&&this.hostname&&!this.pathname)this.pathname="/";if(this.pathname||this.search){var F=this.pathname||"",T=this.search||"";this.path=F+T}return this.href=this.format(),this};function G$(_){if(B9(_))_=N5(_);if(!(_ instanceof Q_))return Q_.prototype.format.call(_);return _.format()}Q_.prototype.format=function(){var _=this.auth||"";if(_)_=encodeURIComponent(_),_=_.replace(/%3A/i,":"),_+="@";var $=this.protocol||"",J=this.pathname||"",Z=this.hash||"",Q=!1,q="";if(this.host)Q=_+this.host;else if(this.hostname){if(Q=_+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]"),this.port)Q+=":"+this.port}if(this.query&&X$(this.query)&&Object.keys(this.query).length)q=b9.stringify(this.query);var K=this.search||q&&"?"+q||"";if($&&$.substr(-1)!==":")$+=":";if(this.slashes||(!$||f1[$])&&Q!==!1){if(Q="//"+(Q||""),J&&J.charAt(0)!=="/")J="/"+J}else if(!Q)Q="";if(Z&&Z.charAt(0)!=="#")Z="#"+Z;if(K&&K.charAt(0)!=="?")K="?"+K;return J=J.replace(/[?#]/g,function(V){return encodeURIComponent(V)}),K=K.replace("#","%23"),$+Q+J+K+Z};function W$(_,$){return N5(_,!1,!0).resolve($)}Q_.prototype.resolve=function(_){return this.resolveObject(N5(_,!1,!0)).format()};Q_.prototype.resolveObject=function(_){if(B9(_)){var $=new Q_;$.parse(_,!1,!0),_=$}var J=new Q_,Z=Object.keys(this);for(var Q=0;Q<Z.length;Q++){var q=Z[Q];J[q]=this[q]}if(J.hash=_.hash,_.href==="")return J.href=J.format(),J;if(_.slashes&&!_.protocol){var K=Object.keys(_);for(var V=0;V<K.length;V++){var H=K[V];if(H!=="protocol")J[H]=_[H]}if(f1[J.protocol]&&J.hostname&&!J.pathname)J.path=J.pathname="/";return J.href=J.format(),J}if(_.protocol&&_.protocol!==J.protocol){if(!f1[_.protocol]){var w=Object.keys(_);for(var h=0;h<w.length;h++){var z=w[h];J[z]=_[z]}return J.href=J.format(),J}if(J.protocol=_.protocol,!_.host&&!I9[_.protocol]){var N=(_.pathname||"").split("/");while(N.length&&!(_.host=N.shift()));if(!_.host)_.host="";if(!_.hostname)_.hostname="";if(N[0]!=="")N.unshift("");if(N.length<2)N.unshift("");J.pathname=N.join("/")}else J.pathname=_.pathname;if(J.search=_.search,J.query=_.query,J.host=_.host||"",J.auth=_.auth,J.hostname=_.hostname||_.host,J.port=_.port,J.pathname||J.search){var X=J.pathname||"",W=J.search||"";J.path=X+W}return J.slashes=J.slashes||_.slashes,J.href=J.format(),J}var G=J.pathname&&J.pathname.charAt(0)==="/",k=_.host||_.pathname&&_.pathname.charAt(0)==="/",C=k||G||J.host&&_.pathname,Y=C,U=J.pathname&&J.pathname.split("/")||[],N=_.pathname&&_.pathname.split("/")||[],I=J.protocol&&!f1[J.protocol];if(I){if(J.hostname="",J.port=null,J.host)if(U[0]==="")U[0]=J.host;else U.unshift(J.host);if(J.host="",_.protocol){if(_.hostname=null,_.port=null,_.host)if(N[0]==="")N[0]=_.host;else N.unshift(_.host);_.host=null}C=C&&(N[0]===""||U[0]==="")}if(k)J.host=_.host||_.host===""?_.host:J.host,J.hostname=_.hostname||_.hostname===""?_.hostname:J.hostname,J.search=_.search,J.query=_.query,U=N;else if(N.length){if(!U)U=[];U.pop(),U=U.concat(N),J.search=_.search,J.query=_.query}else if(!lQ(_.search)){if(I){J.hostname=J.host=U.shift();var f=J.host&&J.host.indexOf("@")>0?J.host.split("@"):!1;if(f)J.auth=f.shift(),J.host=J.hostname=f.shift()}if(J.search=_.search,J.query=_.query,!P6(J.pathname)||!P6(J.search))J.path=(J.pathname?J.pathname:"")+(J.search?J.search:"");return J.href=J.format(),J}if(!U.length){if(J.pathname=null,J.search)J.path="/"+J.search;else J.path=null;return J.href=J.format(),J}var y=U.slice(-1)[0],D=(J.host||_.host||U.length>1)&&(y==="."||y==="..")||y==="",L=0;for(var v=U.length;v>=0;v--)if(y=U[v],y===".")U.splice(v,1);else if(y==="..")U.splice(v,1),L++;else if(L)U.splice(v,1),L--;if(!C&&!Y)for(;L--;L)U.unshift("..");if(C&&U[0]!==""&&(!U[0]||U[0].charAt(0)!=="/"))U.unshift("");if(D&&U.join("/").substr(-1)!=="/")U.push("");var m=U[0]===""||U[0]&&U[0].charAt(0)==="/";if(I){J.hostname=J.host=m?"":U.length?U.shift():"";var f=J.host&&J.host.indexOf("@")>0?J.host.split("@"):!1;if(f)J.auth=f.shift(),J.host=J.hostname=f.shift()}if(C=C||J.host&&U.length,C&&!m)U.unshift("");if(!U.length)J.pathname=null,J.path=null;else J.pathname=U.join("/");if(!P6(J.pathname)||!P6(J.search))J.path=(J.pathname?J.pathname:"")+(J.search?J.search:"");return J.auth=_.auth||J.auth,J.slashes=J.slashes||_.slashes,J.href=J.format(),J};Q_.prototype.parseHost=function(){var _=this.host,$=sQ.exec(_);if($){if($=$[0],$!==":")this.port=$.substr(1);_=_.substr(0,_.length-$.length)}if(_)this.hostname=_};var k$={};function l(_,$,J=3){if(k$[$])return;let Z=Error().stack;typeof Z>"u"?console.warn("PixiJS Deprecation Warning: ",`${$}
3
3
  Deprecated since v${_}`):(Z=Z.split(`
4
4
  `).splice(J).join(`
5
5
  `),console.groupCollapsed?(console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s","color:#614108;background:#fffbe6","font-weight:normal;color:#614108;background:#fffbe6",`${$}
6
6
  Deprecated since v${_}`),console.warn(Z),console.groupEnd()):(console.warn("PixiJS Deprecation Warning: ",`${$}
7
- Deprecated since v${_}`),console.warn(Z))),C$[$]=!0}var N$={get parse(){return l("7.3.0","utils.url.parse is deprecated, use native URL API instead."),N5},get format(){return l("7.3.0","utils.url.format is deprecated, use native URL API instead."),W$},get resolve(){return l("7.3.0","utils.url.resolve is deprecated, use native URL API instead."),k$}};function q_(_){if(typeof _!="string")throw TypeError(`Path must be a string. Received ${JSON.stringify(_)}`)}function Y5(_){return _.split("?")[0].split("#")[0]}function _2(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function $2(_,$,J){return _.replace(new RegExp(_2($),"g"),J)}function J2(_,$){let J="",Z=0,Q=-1,q=0,K=-1;for(let V=0;V<=_.length;++V){if(V<_.length)K=_.charCodeAt(V);else{if(K===47)break;K=47}if(K===47){if(!(Q===V-1||q===1))if(Q!==V-1&&q===2){if(J.length<2||Z!==2||J.charCodeAt(J.length-1)!==46||J.charCodeAt(J.length-2)!==46){if(J.length>2){let H=J.lastIndexOf("/");if(H!==J.length-1){H===-1?(J="",Z=0):(J=J.slice(0,H),Z=J.length-1-J.lastIndexOf("/")),Q=V,q=0;continue}}else if(J.length===2||J.length===1){J="",Z=0,Q=V,q=0;continue}}$&&(J.length>0?J+="/..":J="..",Z=2)}else J.length>0?J+=`/${_.slice(Q+1,V)}`:J=_.slice(Q+1,V),Z=V-Q-1;Q=V,q=0}else K===46&&q!==-1?++q:q=-1}return J}var B7={toPosix(_){return $2(_,"\\","/")},isUrl(_){return/^https?:/.test(this.toPosix(_))},isDataUrl(_){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(_)},isBlobUrl(_){return _.startsWith("blob:")},hasProtocol(_){return/^[^/:]+:/.test(this.toPosix(_))},getProtocol(_){q_(_),_=this.toPosix(_);let $=/^file:\/\/\//.exec(_);if($)return $[0];let J=/^[^/:]+:\/{0,2}/.exec(_);return J?J[0]:""},toAbsolute(_,$,J){if(q_(_),this.isDataUrl(_)||this.isBlobUrl(_))return _;let Z=Y5(this.toPosix($??B.ADAPTER.getBaseUrl())),Q=Y5(this.toPosix(J??this.rootname(Z)));return _=this.toPosix(_),_.startsWith("/")?B7.join(Q,_.slice(1)):this.isAbsolute(_)?_:this.join(Z,_)},normalize(_){if(q_(_),_.length===0)return".";if(this.isDataUrl(_)||this.isBlobUrl(_))return _;_=this.toPosix(_);let $="",J=_.startsWith("/");this.hasProtocol(_)&&($=this.rootname(_),_=_.slice($.length));let Z=_.endsWith("/");return _=J2(_,!1),_.length>0&&Z&&(_+="/"),J?`/${_}`:$+_},isAbsolute(_){return q_(_),_=this.toPosix(_),this.hasProtocol(_)?!0:_.startsWith("/")},join(..._){if(_.length===0)return".";let $;for(let J=0;J<_.length;++J){let Z=_[J];if(q_(Z),Z.length>0)if($===void 0)$=Z;else{let Q=_[J-1]??"";this.joinExtensions.includes(this.extname(Q).toLowerCase())?$+=`/../${Z}`:$+=`/${Z}`}}return $===void 0?".":this.normalize($)},dirname(_){if(q_(_),_.length===0)return".";_=this.toPosix(_);let $=_.charCodeAt(0),J=$===47,Z=-1,Q=!0,q=this.getProtocol(_),K=_;_=_.slice(q.length);for(let V=_.length-1;V>=1;--V)if($=_.charCodeAt(V),$===47){if(!Q){Z=V;break}}else Q=!1;return Z===-1?J?"/":this.isUrl(K)?q+_:q:J&&Z===1?"//":q+_.slice(0,Z)},rootname(_){q_(_),_=this.toPosix(_);let $="";if(_.startsWith("/")?$="/":$=this.getProtocol(_),this.isUrl(_)){let J=_.indexOf("/",$.length);J!==-1?$=_.slice(0,J):$=_,$.endsWith("/")||($+="/")}return $},basename(_,$){q_(_),$&&q_($),_=Y5(this.toPosix(_));let J=0,Z=-1,Q=!0,q;if($!==void 0&&$.length>0&&$.length<=_.length){if($.length===_.length&&$===_)return"";let K=$.length-1,V=-1;for(q=_.length-1;q>=0;--q){let H=_.charCodeAt(q);if(H===47){if(!Q){J=q+1;break}}else V===-1&&(Q=!1,V=q+1),K>=0&&(H===$.charCodeAt(K)?--K===-1&&(Z=q):(K=-1,Z=V))}return J===Z?Z=V:Z===-1&&(Z=_.length),_.slice(J,Z)}for(q=_.length-1;q>=0;--q)if(_.charCodeAt(q)===47){if(!Q){J=q+1;break}}else Z===-1&&(Q=!1,Z=q+1);return Z===-1?"":_.slice(J,Z)},extname(_){q_(_),_=Y5(this.toPosix(_));let $=-1,J=0,Z=-1,Q=!0,q=0;for(let K=_.length-1;K>=0;--K){let V=_.charCodeAt(K);if(V===47){if(!Q){J=K+1;break}continue}Z===-1&&(Q=!1,Z=K+1),V===46?$===-1?$=K:q!==1&&(q=1):$!==-1&&(q=-1)}return $===-1||Z===-1||q===0||q===1&&$===Z-1&&$===J+1?"":_.slice($,Z)},parse(_){q_(_);let $={root:"",dir:"",base:"",ext:"",name:""};if(_.length===0)return $;_=Y5(this.toPosix(_));let J=_.charCodeAt(0),Z=this.isAbsolute(_),Q,q="";$.root=this.rootname(_),Z||this.hasProtocol(_)?Q=1:Q=0;let K=-1,V=0,H=-1,w=!0,h=_.length-1,z=0;for(;h>=Q;--h){if(J=_.charCodeAt(h),J===47){if(!w){V=h+1;break}continue}H===-1&&(w=!1,H=h+1),J===46?K===-1?K=h:z!==1&&(z=1):K!==-1&&(z=-1)}return K===-1||H===-1||z===0||z===1&&K===H-1&&K===V+1?H!==-1&&(V===0&&Z?$.base=$.name=_.slice(1,H):$.base=$.name=_.slice(V,H)):(V===0&&Z?($.name=_.slice(1,K),$.base=_.slice(1,H)):($.name=_.slice(V,K),$.base=_.slice(V,H)),$.ext=_.slice(K,H)),$.dir=this.dirname(_),q&&($.dir=q+$.dir),$},sep:"/",delimiter:":",joinExtensions:[".html"]};var F7;async function Y$(){return F7??(F7=(async()=>{let _=document.createElement("canvas").getContext("webgl");if(!_)return K0.UNPACK;let $=await new Promise((q)=>{let K=document.createElement("video");K.onloadeddata=()=>q(K),K.onerror=()=>q(null),K.autoplay=!1,K.crossOrigin="anonymous",K.preload="auto",K.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",K.load()});if(!$)return K0.UNPACK;let J=_.createTexture();_.bindTexture(_.TEXTURE_2D,J);let Z=_.createFramebuffer();_.bindFramebuffer(_.FRAMEBUFFER,Z),_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,J,0),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),_.pixelStorei(_.UNPACK_COLORSPACE_CONVERSION_WEBGL,_.NONE),_.texImage2D(_.TEXTURE_2D,0,_.RGBA,_.RGBA,_.UNSIGNED_BYTE,$);let Q=new Uint8Array(4);return _.readPixels(0,0,1,1,_.RGBA,_.UNSIGNED_BYTE,Q),_.deleteFramebuffer(Z),_.deleteTexture(J),_.getExtension("WEBGL_lose_context")?.loseContext(),Q[0]<=Q[3]?K0.PMA:K0.UNPACK})()),F7}function U$(){l("7.0.0","skipHello is deprecated, please use settings.RENDER_OPTIONS.hello")}function I$(){l("7.0.0",`sayHello is deprecated, please use Renderer's "hello" option`)}var O7;function R6(){return typeof O7>"u"&&(O7=function(){let _={stencil:!0,failIfMajorPerformanceCaveat:B.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!B.ADAPTER.getWebGLRenderingContext())return!1;let $=B.ADAPTER.createCanvas(),J=$.getContext("webgl",_)||$.getContext("experimental-webgl",_),Z=!!J?.getContextAttributes()?.stencil;if(J){let Q=J.getExtension("WEBGL_lose_context");Q&&Q.loseContext()}return J=null,Z}catch{return!1}}()),O7}var Z2={grad:0.9,turn:360,rad:360/(2*Math.PI)},R_=function(_){return typeof _=="string"?_.length>0:typeof _=="number"},Y0=function(_,$,J){return $===void 0&&($=0),J===void 0&&(J=Math.pow(10,$)),Math.round(J*_)/J+0},s0=function(_,$,J){return $===void 0&&($=0),J===void 0&&(J=1),_>J?J:_>$?_:$},A$=function(_){return(_=isFinite(_)?_%360:0)>0?_:_+360},b$=function(_){return{r:s0(_.r,0,255),g:s0(_.g,0,255),b:s0(_.b,0,255),a:s0(_.a)}},j7=function(_){return{r:Y0(_.r),g:Y0(_.g),b:Y0(_.b),a:Y0(_.a,3)}},Q2=/^#([0-9a-f]{3,8})$/i,M6=function(_){var $=_.toString(16);return $.length<2?"0"+$:$},P$=function(_){var{r:$,g:J,b:Z,a:Q}=_,q=Math.max($,J,Z),K=q-Math.min($,J,Z),V=K?q===$?(J-Z)/K:q===J?2+(Z-$)/K:4+($-J)/K:0;return{h:60*(V<0?V+6:V),s:q?K/q*100:0,v:q/255*100,a:Q}},R$=function(_){var{h:$,s:J,v:Z,a:Q}=_;$=$/360*6,J/=100,Z/=100;var q=Math.floor($),K=Z*(1-J),V=Z*(1-($-q)*J),H=Z*(1-(1-$+q)*J),w=q%6;return{r:255*[Z,V,K,K,H,Z][w],g:255*[H,Z,Z,V,K,K][w],b:255*[K,K,H,Z,Z,V][w],a:Q}},B$=function(_){return{h:A$(_.h),s:s0(_.s,0,100),l:s0(_.l,0,100),a:s0(_.a)}},F$=function(_){return{h:Y0(_.h),s:Y0(_.s),l:Y0(_.l),a:Y0(_.a,3)}},O$=function(_){return R$((J=($=_).s,{h:$.h,s:(J*=((Z=$.l)<50?Z:100-Z)/100)>0?2*J/(Z+J)*100:0,v:Z+J,a:$.a}));var $,J,Z},U5=function(_){return{h:($=P$(_)).h,s:(Q=(200-(J=$.s))*(Z=$.v)/100)>0&&Q<200?J*Z/100/(Q<=100?Q:200-Q)*100:0,l:Q/2,a:$.a};var $,J,Z,Q},q2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,K2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,V2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,H2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,A7={string:[[function(_){var $=Q2.exec(_);return $?(_=$[1]).length<=4?{r:parseInt(_[0]+_[0],16),g:parseInt(_[1]+_[1],16),b:parseInt(_[2]+_[2],16),a:_.length===4?Y0(parseInt(_[3]+_[3],16)/255,2):1}:_.length===6||_.length===8?{r:parseInt(_.substr(0,2),16),g:parseInt(_.substr(2,2),16),b:parseInt(_.substr(4,2),16),a:_.length===8?Y0(parseInt(_.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(_){var $=V2.exec(_)||H2.exec(_);return $?$[2]!==$[4]||$[4]!==$[6]?null:b$({r:Number($[1])/($[2]?0.39215686274509803:1),g:Number($[3])/($[4]?0.39215686274509803:1),b:Number($[5])/($[6]?0.39215686274509803:1),a:$[7]===void 0?1:Number($[7])/($[8]?100:1)}):null},"rgb"],[function(_){var $=q2.exec(_)||K2.exec(_);if(!$)return null;var J,Z,Q=B$({h:(J=$[1],Z=$[2],Z===void 0&&(Z="deg"),Number(J)*(Z2[Z]||1)),s:Number($[3]),l:Number($[4]),a:$[5]===void 0?1:Number($[5])/($[6]?100:1)});return O$(Q)},"hsl"]],object:[[function(_){var{r:$,g:J,b:Z,a:Q}=_,q=Q===void 0?1:Q;return R_($)&&R_(J)&&R_(Z)?b$({r:Number($),g:Number(J),b:Number(Z),a:Number(q)}):null},"rgb"],[function(_){var{h:$,s:J,l:Z,a:Q}=_,q=Q===void 0?1:Q;if(!R_($)||!R_(J)||!R_(Z))return null;var K=B$({h:Number($),s:Number(J),l:Number(Z),a:Number(q)});return O$(K)},"hsl"],[function(_){var{h:$,s:J,v:Z,a:Q}=_,q=Q===void 0?1:Q;if(!R_($)||!R_(J)||!R_(Z))return null;var K=function(V){return{h:A$(V.h),s:s0(V.s,0,100),v:s0(V.v,0,100),a:s0(V.a)}}({h:Number($),s:Number(J),v:Number(Z),a:Number(q)});return R$(K)},"hsv"]]},j$=function(_,$){for(var J=0;J<$.length;J++){var Z=$[J][0](_);if(Z)return[Z,$[J][1]]}return[null,void 0]},w2=function(_){return typeof _=="string"?j$(_.trim(),A7.string):typeof _=="object"&&_!==null?j$(_,A7.object):[null,void 0]};var L7=function(_,$){var J=U5(_);return{h:J.h,s:s0(J.s+100*$,0,100),l:J.l,a:J.a}},D7=function(_){return(299*_.r+587*_.g+114*_.b)/1000/255},L$=function(_,$){var J=U5(_);return{h:J.h,s:J.s,l:s0(J.l+100*$,0,100),a:J.a}},P7=function(){function _($){this.parsed=w2($)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return _.prototype.isValid=function(){return this.parsed!==null},_.prototype.brightness=function(){return Y0(D7(this.rgba),2)},_.prototype.isDark=function(){return D7(this.rgba)<0.5},_.prototype.isLight=function(){return D7(this.rgba)>=0.5},_.prototype.toHex=function(){return $=j7(this.rgba),J=$.r,Z=$.g,Q=$.b,K=(q=$.a)<1?M6(Y0(255*q)):"","#"+M6(J)+M6(Z)+M6(Q)+K;var $,J,Z,Q,q,K},_.prototype.toRgb=function(){return j7(this.rgba)},_.prototype.toRgbString=function(){return $=j7(this.rgba),J=$.r,Z=$.g,Q=$.b,(q=$.a)<1?"rgba("+J+", "+Z+", "+Q+", "+q+")":"rgb("+J+", "+Z+", "+Q+")";var $,J,Z,Q,q},_.prototype.toHsl=function(){return F$(U5(this.rgba))},_.prototype.toHslString=function(){return $=F$(U5(this.rgba)),J=$.h,Z=$.s,Q=$.l,(q=$.a)<1?"hsla("+J+", "+Z+"%, "+Q+"%, "+q+")":"hsl("+J+", "+Z+"%, "+Q+"%)";var $,J,Z,Q,q},_.prototype.toHsv=function(){return $=P$(this.rgba),{h:Y0($.h),s:Y0($.s),v:Y0($.v),a:Y0($.a,3)};var $},_.prototype.invert=function(){return K_({r:255-($=this.rgba).r,g:255-$.g,b:255-$.b,a:$.a});var $},_.prototype.saturate=function($){return $===void 0&&($=0.1),K_(L7(this.rgba,$))},_.prototype.desaturate=function($){return $===void 0&&($=0.1),K_(L7(this.rgba,-$))},_.prototype.grayscale=function(){return K_(L7(this.rgba,-1))},_.prototype.lighten=function($){return $===void 0&&($=0.1),K_(L$(this.rgba,$))},_.prototype.darken=function($){return $===void 0&&($=0.1),K_(L$(this.rgba,-$))},_.prototype.rotate=function($){return $===void 0&&($=15),this.hue(this.hue()+$)},_.prototype.alpha=function($){return typeof $=="number"?K_({r:(J=this.rgba).r,g:J.g,b:J.b,a:$}):Y0(this.rgba.a,3);var J},_.prototype.hue=function($){var J=U5(this.rgba);return typeof $=="number"?K_({h:$,s:J.s,l:J.l,a:J.a}):Y0(J.h)},_.prototype.isEqual=function($){return this.toHex()===K_($).toHex()},_}(),K_=function(_){return _ instanceof P7?_:new P7(_)},D$=[],M$=function(_){_.forEach(function($){D$.indexOf($)<0&&($(P7,A7),D$.push($))})};function R7(_,$){var J={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},Z={};for(var Q in J)Z[J[Q]]=Q;var q={};_.prototype.toName=function(K){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var V,H,w=Z[this.toHex()];if(w)return w;if(K==null?void 0:K.closest){var h=this.toRgb(),z=1/0,X="black";if(!q.length)for(var W in J)q[W]=new _(J[W]).toRgb();for(var G in J){var k=(V=h,H=q[G],Math.pow(V.r-H.r,2)+Math.pow(V.g-H.g,2)+Math.pow(V.b-H.b,2));k<z&&(z=k,X=G)}return X}},$.string.push([function(K){var V=K.toLowerCase(),H=V==="transparent"?"#0000":J[V];return H?new _(H).toRgb():null},"name"])}M$([R7]);var E1=class _{constructor($=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=$}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue($){return this.value=$,this}set value($){if($ instanceof _)this._value=this.cloneSource($._value),this._int=$._int,this._components.set($._components);else{if($===null)throw Error("Cannot set PIXI.Color#value to null");(this._value===null||!this.isSourceEqual(this._value,$))&&(this.normalize($),this._value=this.cloneSource($))}}get value(){return this._value}cloneSource($){return typeof $=="string"||typeof $=="number"||$ instanceof Number||$===null?$:Array.isArray($)||ArrayBuffer.isView($)?$.slice(0):typeof $=="object"&&$!==null?{...$}:$}isSourceEqual($,J){let Z=typeof $;if(Z!==typeof J)return!1;if(Z==="number"||Z==="string"||$ instanceof Number)return $===J;if(Array.isArray($)&&Array.isArray(J)||ArrayBuffer.isView($)&&ArrayBuffer.isView(J))return $.length!==J.length?!1:$.every((Q,q)=>Q===J[q]);if($!==null&&J!==null){let Q=Object.keys($),q=Object.keys(J);return Q.length!==q.length?!1:Q.every((K)=>$[K]===J[K])}return $===J}toRgba(){let[$,J,Z,Q]=this._components;return{r:$,g:J,b:Z,a:Q}}toRgb(){let[$,J,Z]=this._components;return{r:$,g:J,b:Z}}toRgbaString(){let[$,J,Z]=this.toUint8RgbArray();return`rgba(${$},${J},${Z},${this.alpha})`}toUint8RgbArray($){let[J,Z,Q]=this._components;return $=$??[],$[0]=Math.round(J*255),$[1]=Math.round(Z*255),$[2]=Math.round(Q*255),$}toRgbArray($){$=$??[];let[J,Z,Q]=this._components;return $[0]=J,$[1]=Z,$[2]=Q,$}toNumber(){return this._int}toLittleEndianNumber(){let $=this._int;return($>>16)+($&65280)+(($&255)<<16)}multiply($){let[J,Z,Q,q]=_.temp.setValue($)._components;return this._components[0]*=J,this._components[1]*=Z,this._components[2]*=Q,this._components[3]*=q,this.refreshInt(),this._value=null,this}premultiply($,J=!0){return J&&(this._components[0]*=$,this._components[1]*=$,this._components[2]*=$),this._components[3]=$,this.refreshInt(),this._value=null,this}toPremultiplied($,J=!0){if($===1)return-16777216+this._int;if($===0)return J?0:this._int;let Z=this._int>>16&255,Q=this._int>>8&255,q=this._int&255;return J&&(Z=Z*$+0.5|0,Q=Q*$+0.5|0,q=q*$+0.5|0),($*255<<24)+(Z<<16)+(Q<<8)+q}toHex(){let $=this._int.toString(16);return`#${"000000".substring(0,6-$.length)+$}`}toHexa(){let $=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-$.length)+$}setAlpha($){return this._components[3]=this._clamp($),this}round($){let[J,Z,Q]=this._components;return this._components[0]=Math.round(J*$)/$,this._components[1]=Math.round(Z*$)/$,this._components[2]=Math.round(Q*$)/$,this.refreshInt(),this._value=null,this}toArray($){$=$??[];let[J,Z,Q,q]=this._components;return $[0]=J,$[1]=Z,$[2]=Q,$[3]=q,$}normalize($){let J,Z,Q,q;if((typeof $=="number"||$ instanceof Number)&&$>=0&&$<=16777215){let K=$;J=(K>>16&255)/255,Z=(K>>8&255)/255,Q=(K&255)/255,q=1}else if((Array.isArray($)||$ instanceof Float32Array)&&$.length>=3&&$.length<=4)$=this._clamp($),[J,Z,Q,q=1]=$;else if(($ instanceof Uint8Array||$ instanceof Uint8ClampedArray)&&$.length>=3&&$.length<=4)$=this._clamp($,0,255),[J,Z,Q,q=255]=$,J/=255,Z/=255,Q/=255,q/=255;else if(typeof $=="string"||typeof $=="object"){if(typeof $=="string"){let V=_.HEX_PATTERN.exec($);V&&($=`#${V[2]}`)}let K=K_($);K.isValid()&&({r:J,g:Z,b:Q,a:q}=K.rgba,J/=255,Z/=255,Q/=255)}if(J!==void 0)this._components[0]=J,this._components[1]=Z,this._components[2]=Q,this._components[3]=q,this.refreshInt();else throw Error(`Unable to convert color ${$}`)}refreshInt(){this._clamp(this._components);let[$,J,Z]=this._components;this._int=($*255<<16)+(J*255<<8)+(Z*255|0)}_clamp($,J=0,Z=1){return typeof $=="number"?Math.min(Math.max($,J),Z):($.forEach((Q,q)=>{$[q]=Math.min(Math.max(Q,J),Z)}),$)}};E1.shared=new E1,E1.temp=new E1,E1.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;var s=E1;function f$(_,$=[]){return l("7.2.0","utils.hex2rgb is deprecated, use Color#toRgbArray instead"),s.shared.setValue(_).toRgbArray($)}function E$(_){return l("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),s.shared.setValue(_).toHex()}function v$(_){return l("7.2.0","utils.string2hex is deprecated, use Color#toNumber instead"),s.shared.setValue(_).toNumber()}function c$(_){return l("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),s.shared.setValue(_).toNumber()}function h2(){let _=[],$=[];for(let Z=0;Z<32;Z++)_[Z]=Z,$[Z]=Z;_[d.NORMAL_NPM]=d.NORMAL,_[d.ADD_NPM]=d.ADD,_[d.SCREEN_NPM]=d.SCREEN,$[d.NORMAL]=d.NORMAL_NPM,$[d.ADD]=d.ADD_NPM,$[d.SCREEN]=d.SCREEN_NPM;let J=[];return J.push($),J.push(_),J}var I5=h2();function y$(_,$){return I5[$?1:0][_]}function S$(_,$,J,Z=!0){return l("7.2.0","utils.premultiplyRgba has moved to Color.premultiply"),s.shared.setValue(_).premultiply($,Z).toArray(J??new Float32Array(4))}function T$(_,$){return l("7.2.0","utils.premultiplyTint has moved to Color.toPremultiplied"),s.shared.setValue(_).toPremultiplied($)}function d$(_,$,J,Z=!0){return l("7.2.0","utils.premultiplyTintToRgba has moved to Color.premultiply"),s.shared.setValue(_).premultiply($,Z).toArray(J??new Float32Array(4))}var f6=/^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i;function g$(_,$=null){let J=_*6;if($=$||new Uint16Array(J),$.length!==J)throw Error(`Out buffer length is incorrect, got ${$.length} and expected ${J}`);for(let Z=0,Q=0;Z<J;Z+=6,Q+=4)$[Z+0]=Q+0,$[Z+1]=Q+1,$[Z+2]=Q+2,$[Z+3]=Q+0,$[Z+4]=Q+2,$[Z+5]=Q+3;return $}function T_(_){if(_.BYTES_PER_ELEMENT===4)return _ instanceof Float32Array?"Float32Array":_ instanceof Uint32Array?"Uint32Array":"Int32Array";if(_.BYTES_PER_ELEMENT===2){if(_ instanceof Uint16Array)return"Uint16Array"}else if(_.BYTES_PER_ELEMENT===1&&_ instanceof Uint8Array)return"Uint8Array";return null}var z2={Float32Array,Uint32Array,Int32Array,Uint8Array};function p$(_,$){let J=0,Z=0,Q={};for(let H=0;H<_.length;H++)Z+=$[H],J+=_[H].length;let q=new ArrayBuffer(J*4),K=null,V=0;for(let H=0;H<_.length;H++){let w=$[H],h=_[H],z=T_(h);Q[z]||(Q[z]=new z2[z](q)),K=Q[z];for(let X=0;X<h.length;X++){let W=(X/w|0)*Z+V,G=X%w;K[W+G]=h[X]}V+=w}return new Float32Array(q)}function d_(_){return _+=_===0?1:0,--_,_|=_>>>1,_|=_>>>2,_|=_>>>4,_|=_>>>8,_|=_>>>16,_+1}function b5(_){return!(_&_-1)&&!!_}function B5(_){let $=(_>65535?1:0)<<4;_>>>=$;let J=(_>255?1:0)<<3;return _>>>=J,$|=J,J=(_>15?1:0)<<2,_>>>=J,$|=J,J=(_>3?1:0)<<1,_>>>=J,$|=J,$|_>>1}function E6(_,$,J){let Z=_.length,Q;if($>=Z||J===0)return;J=$+J>Z?Z-$:J;let q=Z-J;for(Q=$;Q<q;++Q)_[Q]=_[Q+J];_.length=q}function x$(_){return _===0?0:_<0?-1:1}var X2=0;function W_(){return++X2}var M7=class{constructor(_,$,J,Z){this.left=_,this.top=$,this.right=J,this.bottom=Z}get width(){return this.right-this.left}get height(){return this.bottom-this.top}isEmpty(){return this.left===this.right||this.top===this.bottom}};M7.EMPTY=new M7(0,0,0,0);var F5=M7;var O5={},U0=Object.create(null),E0=Object.create(null);function m$(){let _;for(_ in U0)U0[_].destroy();for(_ in E0)E0[_].destroy()}function u$(){let _;for(_ in U0)delete U0[_];for(_ in E0)delete E0[_]}class f7{constructor(_,$,J){this._canvas=B.ADAPTER.createCanvas(),this._context=this._canvas.getContext("2d"),this.resolution=J||B.RESOLUTION,this.resize(_,$)}clear(){this._checkDestroyed(),this._context.setTransform(1,0,0,1,0,0),this._context.clearRect(0,0,this._canvas.width,this._canvas.height)}resize(_,$){this._checkDestroyed(),this._canvas.width=Math.round(_*this.resolution),this._canvas.height=Math.round($*this.resolution)}destroy(){this._context=null,this._canvas=null}get width(){return this._checkDestroyed(),this._canvas.width}set width(_){this._checkDestroyed(),this._canvas.width=Math.round(_)}get height(){return this._checkDestroyed(),this._canvas.height}set height(_){this._checkDestroyed(),this._canvas.height=Math.round(_)}get canvas(){return this._checkDestroyed(),this._canvas}get context(){return this._checkDestroyed(),this._context}_checkDestroyed(){if(this._canvas===null)throw TypeError("The CanvasRenderTarget has already been destroyed")}}function n$(_,$,J){for(let Z=0,Q=4*J*$;Z<$;++Z,Q+=4)if(_[Q+3]!==0)return!1;return!0}function l$(_,$,J,Z,Q){let q=4*$;for(let K=Z,V=Z*q+4*J;K<=Q;++K,V+=q)if(_[V+3]!==0)return!1;return!0}function v6(_){let{width:$,height:J}=_,Z=_.getContext("2d",{willReadFrequently:!0});if(Z===null)throw TypeError("Failed to get canvas 2D context");let Q=Z.getImageData(0,0,$,J).data,q=0,K=0,V=$-1,H=J-1;for(;K<J&&n$(Q,$,K);)++K;if(K===J)return F5.EMPTY;for(;n$(Q,$,H);)--H;for(;l$(Q,$,q,K,H);)++q;for(;l$(Q,$,V,K,H);)--V;return++V,++H,new F5(q,K,V,H)}function o$(_){let $=v6(_),{width:J,height:Z}=$,Q=null;if(!$.isEmpty()){let q=_.getContext("2d");if(q===null)throw TypeError("Failed to get canvas 2D context");Q=q.getImageData($.left,$.top,J,Z)}return{width:J,height:Z,data:Q}}function s$(_){let $=f6.exec(_);if($)return{mediaType:$[1]?$[1].toLowerCase():void 0,subType:$[2]?$[2].toLowerCase():void 0,charset:$[3]?$[3].toLowerCase():void 0,encoding:$[4]?$[4].toLowerCase():void 0,data:$[5]}}function c6(_,$=globalThis.location){if(_.startsWith("data:"))return"";$=$||globalThis.location;let J=new URL(_,document.baseURI);return J.hostname!==$.hostname||J.port!==$.port||J.protocol!==$.protocol?"anonymous":""}function j5(_,$=1){let J=B.RETINA_PREFIX?.exec(_);return J?parseFloat(J[1]):$}var b=((_)=>(_.Renderer="renderer",_.Application="application",_.RendererSystem="renderer-webgl-system",_.RendererPlugin="renderer-webgl-plugin",_.CanvasRendererSystem="renderer-canvas-system",_.CanvasRendererPlugin="renderer-canvas-plugin",_.Asset="asset",_.LoadParser="load-parser",_.ResolveParser="resolve-parser",_.CacheParser="cache-parser",_.DetectionParser="detection-parser",_))(b||{}),E7=(_)=>{if(typeof _=="function"||typeof _=="object"&&_.extension){if(!_.extension)throw Error("Extension class must have an extension object");_={...typeof _.extension!="object"?{type:_.extension}:_.extension,ref:_}}if(typeof _=="object")_={..._};else throw Error("Invalid extension type");return typeof _.type=="string"&&(_.type=[_.type]),_},a$=(_,$)=>E7(_).priority??$,O={_addHandlers:{},_removeHandlers:{},_queue:{},remove(..._){return _.map(E7).forEach(($)=>{$.type.forEach((J)=>this._removeHandlers[J]?.($))}),this},add(..._){return _.map(E7).forEach(($)=>{$.type.forEach((J)=>{let Z=this._addHandlers,Q=this._queue;Z[J]?Z[J]?.($):(Q[J]=Q[J]||[],Q[J]?.push($))})}),this},handle(_,$,J){let Z=this._addHandlers,Q=this._removeHandlers;if(Z[_]||Q[_])throw Error(`Extension type ${_} already has a handler`);Z[_]=$,Q[_]=J;let q=this._queue;return q[_]&&(q[_]?.forEach((K)=>$(K)),delete q[_]),this},handleByMap(_,$){return this.handle(_,(J)=>{J.name&&($[J.name]=J.ref)},(J)=>{J.name&&delete $[J.name]})},handleByList(_,$,J=-1){return this.handle(_,(Z)=>{$.includes(Z.ref)||($.push(Z.ref),$.sort((Q,q)=>a$(q,J)-a$(Q,J)))},(Z)=>{let Q=$.indexOf(Z.ref);Q!==-1&&$.splice(Q,1)})}};class q1{constructor(_){typeof _=="number"?this.rawBinaryData=new ArrayBuffer(_):_ instanceof Uint8Array?this.rawBinaryData=_.buffer:this.rawBinaryData=_,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(_){return this[`${_}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(_){switch(_){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw Error(`${_} isn't a valid view type`)}}}var G2=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
8
- `);function W2(_){let $="";for(let J=0;J<_;++J)J>0&&($+=`
9
- else `),J<_-1&&($+=`if(test == ${J}.0){}`);return $}function y6(_,$){if(_===0)throw Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");let J=$.createShader($.FRAGMENT_SHADER);for(;;){let Z=G2.replace(/%forloop%/gi,W2(_));if($.shaderSource(J,Z),$.compileShader(J),!$.getShaderParameter(J,$.COMPILE_STATUS))_=_/2|0;else break}return _}var v7=0,c7=1,y7=2,S7=3,T7=4,d7=5;class I0{constructor(){this.data=0,this.blendMode=d.NORMAL,this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<v7)}set blend(_){!!(this.data&1<<v7)!==_&&(this.data^=1<<v7)}get offsets(){return!!(this.data&1<<c7)}set offsets(_){!!(this.data&1<<c7)!==_&&(this.data^=1<<c7)}get culling(){return!!(this.data&1<<y7)}set culling(_){!!(this.data&1<<y7)!==_&&(this.data^=1<<y7)}get depthTest(){return!!(this.data&1<<S7)}set depthTest(_){!!(this.data&1<<S7)!==_&&(this.data^=1<<S7)}get depthMask(){return!!(this.data&1<<d7)}set depthMask(_){!!(this.data&1<<d7)!==_&&(this.data^=1<<d7)}get clockwiseFrontFace(){return!!(this.data&1<<T7)}set clockwiseFrontFace(_){!!(this.data&1<<T7)!==_&&(this.data^=1<<T7)}get blendMode(){return this._blendMode}set blendMode(_){this.blend=_!==d.NONE,this._blendMode=_}get polygonOffset(){return this._polygonOffset}set polygonOffset(_){this.offsets=!!_,this._polygonOffset=_}static for2d(){let _=new I0;return _.depthTest=!1,_.blend=!0,_}}I0.prototype.toString=function(){return`[@pixi/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`};var L5=[];function v1(_,$){if(!_)return null;let J="";if(typeof _=="string"){let Z=/\.(\w{3,4})(?:$|\?|#)/i.exec(_);Z&&(J=Z[1].toLowerCase())}for(let Z=L5.length-1;Z>=0;--Z){let Q=L5[Z];if(Q.test&&Q.test(_,J))return new Q(_,$)}throw Error("Unrecognized source type to auto-detect Resource")}class W0{constructor(_){this.items=[],this._name=_,this._aliasCount=0}emit(_,$,J,Z,Q,q,K,V){if(arguments.length>8)throw Error("max arguments reached");let{name:H,items:w}=this;this._aliasCount++;for(let h=0,z=w.length;h<z;h++)w[h][H](_,$,J,Z,Q,q,K,V);return w===this.items&&this._aliasCount--,this}ensureNonAliasedItems(){this._aliasCount>0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(_){return _[this._name]&&(this.ensureNonAliasedItems(),this.remove(_),this.items.push(_)),this}remove(_){let $=this.items.indexOf(_);return $!==-1&&(this.ensureNonAliasedItems(),this.items.splice($,1)),this}contains(_){return this.items.includes(_)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(W0.prototype,{dispatch:{value:W0.prototype.emit},run:{value:W0.prototype.emit}});class i0{constructor(_=0,$=0){this._width=_,this._height=$,this.destroyed=!1,this.internal=!1,this.onResize=new W0("setRealSize"),this.onUpdate=new W0("update"),this.onError=new W0("onError")}bind(_){this.onResize.add(_),this.onUpdate.add(_),this.onError.add(_),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(_){this.onResize.remove(_),this.onUpdate.remove(_),this.onError.remove(_)}resize(_,$){(_!==this._width||$!==this._height)&&(this._width=_,this._height=$,this.onResize.emit(_,$))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(_,$,J){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(_,$){return!1}}class k_ extends i0{constructor(_,$){let{width:J,height:Z}=$||{};if(!J||!Z)throw Error("BufferResource width or height invalid");super(J,Z),this.data=_,this.unpackAlignment=$.unpackAlignment??4}upload(_,$,J){let Z=_.gl;Z.pixelStorei(Z.UNPACK_ALIGNMENT,this.unpackAlignment),Z.pixelStorei(Z.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$.alphaMode===K0.UNPACK);let{realWidth:Q,realHeight:q}=$;return J.width===Q&&J.height===q?Z.texSubImage2D($.target,0,0,0,Q,q,$.format,J.type,this.data):(J.width=Q,J.height=q,Z.texImage2D($.target,0,J.internalFormat,Q,q,0,$.format,J.type,this.data)),!0}dispose(){this.data=null}static test(_){return _===null||_ instanceof Int8Array||_ instanceof Uint8Array||_ instanceof Uint8ClampedArray||_ instanceof Int16Array||_ instanceof Uint16Array||_ instanceof Int32Array||_ instanceof Uint32Array||_ instanceof Float32Array}}var k2={scaleMode:y0.NEAREST,alphaMode:K0.NPM},g7=class _ extends g_.default{constructor($=null,J=null){super(),J=Object.assign({},_.defaultOptions,J);let{alphaMode:Z,mipmap:Q,anisotropicLevel:q,scaleMode:K,width:V,height:H,wrapMode:w,format:h,type:z,target:X,resolution:W,resourceOptions:G}=J;$&&!($ instanceof i0)&&($=v1($,G),$.internal=!0),this.resolution=W||B.RESOLUTION,this.width=Math.round((V||0)*this.resolution)/this.resolution,this.height=Math.round((H||0)*this.resolution)/this.resolution,this._mipmap=Q,this.anisotropicLevel=q,this._wrapMode=w,this._scaleMode=K,this.format=h,this.type=z,this.target=X,this.alphaMode=Z,this.uid=W_(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=V>0&&H>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource($)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap($){this._mipmap!==$&&(this._mipmap=$,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode($){this._scaleMode!==$&&(this._scaleMode=$,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode($){this._wrapMode!==$&&(this._wrapMode=$,this.dirtyStyleId++)}setStyle($,J){let Z;return $!==void 0&&$!==this.scaleMode&&(this.scaleMode=$,Z=!0),J!==void 0&&J!==this.mipmap&&(this.mipmap=J,Z=!0),Z&&this.dirtyStyleId++,this}setSize($,J,Z){return Z=Z||this.resolution,this.setRealSize($*Z,J*Z,Z)}setRealSize($,J,Z){return this.resolution=Z||this.resolution,this.width=Math.round($)/this.resolution,this.height=Math.round(J)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=b5(this.realWidth)&&b5(this.realHeight)}setResolution($){let J=this.resolution;return J===$?this:(this.resolution=$,this.valid&&(this.width=Math.round(this.width*J)/$,this.height=Math.round(this.height*J)/$,this.emit("update",this)),this._refreshPOT(),this)}setResource($){if(this.resource===$)return this;if(this.resource)throw Error("Resource can be set only once");return $.bind(this),this.resource=$,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError($){this.emit("error",this,$)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete E0[this.cacheId],delete U0[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),_.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from($,J,Z=B.STRICT_TEXTURE_CACHE){let Q=typeof $=="string",q=null;if(Q)q=$;else{if(!$._pixiId){let V=J?.pixiIdPrefix||"pixiid";$._pixiId=`${V}_${W_()}`}q=$._pixiId}let K=E0[q];if(Q&&Z&&!K)throw Error(`The cacheId "${q}" does not exist in BaseTextureCache.`);return K||(K=new _($,J),K.cacheId=q,_.addToCache(K,q)),K}static fromBuffer($,J,Z,Q){$=$||new Float32Array(J*Z*4);let q=new k_($,{width:J,height:Z,...Q?.resourceOptions}),K,V;return $ instanceof Float32Array?(K=R.RGBA,V=g.FLOAT):$ instanceof Int32Array?(K=R.RGBA_INTEGER,V=g.INT):$ instanceof Uint32Array?(K=R.RGBA_INTEGER,V=g.UNSIGNED_INT):$ instanceof Int16Array?(K=R.RGBA_INTEGER,V=g.SHORT):$ instanceof Uint16Array?(K=R.RGBA_INTEGER,V=g.UNSIGNED_SHORT):$ instanceof Int8Array?(K=R.RGBA,V=g.BYTE):(K=R.RGBA,V=g.UNSIGNED_BYTE),q.internal=!0,new _(q,Object.assign({},k2,{type:V,format:K},Q))}static addToCache($,J){J&&($.textureCacheIds.includes(J)||$.textureCacheIds.push(J),E0[J]&&E0[J]!==$&&console.warn(`BaseTexture added to the cache with an id [${J}] that already had an entry`),E0[J]=$)}static removeFromCache($){if(typeof $=="string"){let J=E0[$];if(J){let Z=J.textureCacheIds.indexOf($);return Z>-1&&J.textureCacheIds.splice(Z,1),delete E0[$],J}}else if($?.textureCacheIds){for(let J=0;J<$.textureCacheIds.length;++J)delete E0[$.textureCacheIds[J]];return $.textureCacheIds.length=0,$}return null}};g7.defaultOptions={mipmap:F0.POW2,anisotropicLevel:0,scaleMode:y0.LINEAR,wrapMode:x0.CLAMP,alphaMode:K0.UNPACK,target:A_.TEXTURE_2D,format:R.RGBA,type:g.UNSIGNED_BYTE},g7._globalBatch=0;var p=g7;class K1{constructor(){this.texArray=null,this.blend=0,this.type=c0.TRIANGLES,this.start=0,this.size=0,this.data=null}}var C2=0;class _0{constructor(_,$=!0,J=!1){this.data=_||new Float32Array(1),this._glBuffers={},this._updateID=0,this.index=J,this.static=$,this.id=C2++,this.disposeRunner=new W0("disposeBuffer")}update(_){_ instanceof Array&&(_=new Float32Array(_)),this.data=_||this.data,this._updateID++}dispose(){this.disposeRunner.emit(this,!1)}destroy(){this.dispose(),this.data=null}set index(_){this.type=_?S0.ELEMENT_ARRAY_BUFFER:S0.ARRAY_BUFFER}get index(){return this.type===S0.ELEMENT_ARRAY_BUFFER}static from(_){return _ instanceof Array&&(_=new Float32Array(_)),new _0(_)}}class c1{constructor(_,$=0,J=!1,Z=g.FLOAT,Q,q,K,V=1){this.buffer=_,this.size=$,this.normalized=J,this.type=Z,this.stride=Q,this.start=q,this.instance=K,this.divisor=V}destroy(){this.buffer=null}static from(_,$,J,Z,Q){return new c1(_,$,J,Z,Q)}}var N2={Float32Array,Uint32Array,Int32Array,Uint8Array};function r$(_,$){let J=0,Z=0,Q={};for(let H=0;H<_.length;H++)Z+=$[H],J+=_[H].length;let q=new ArrayBuffer(J*4),K=null,V=0;for(let H=0;H<_.length;H++){let w=$[H],h=_[H],z=T_(h);Q[z]||(Q[z]=new N2[z](q)),K=Q[z];for(let X=0;X<h.length;X++){let W=(X/w|0)*Z+V,G=X%w;K[W+G]=h[X]}V+=w}return new Float32Array(q)}var t$={5126:4,5123:2,5121:1},Y2=0,U2={Float32Array,Uint32Array,Int32Array,Uint8Array,Uint16Array};class T0{constructor(_=[],$={}){this.buffers=_,this.indexBuffer=null,this.attributes=$,this.glVertexArrayObjects={},this.id=Y2++,this.instanced=!1,this.instanceCount=1,this.disposeRunner=new W0("disposeGeometry"),this.refCount=0}addAttribute(_,$,J=0,Z=!1,Q,q,K,V=!1){if(!$)throw Error("You must pass a buffer when creating an attribute");$ instanceof _0||($ instanceof Array&&($=new Float32Array($)),$=new _0($));let H=_.split("|");if(H.length>1){for(let h=0;h<H.length;h++)this.addAttribute(H[h],$,J,Z,Q);return this}let w=this.buffers.indexOf($);return w===-1&&(this.buffers.push($),w=this.buffers.length-1),this.attributes[_]=new c1(w,J,Z,Q,q,K,V),this.instanced=this.instanced||V,this}getAttribute(_){return this.attributes[_]}getBuffer(_){return this.buffers[this.getAttribute(_).buffer]}addIndex(_){return _ instanceof _0||(_ instanceof Array&&(_=new Uint16Array(_)),_=new _0(_)),_.type=S0.ELEMENT_ARRAY_BUFFER,this.indexBuffer=_,this.buffers.includes(_)||this.buffers.push(_),this}getIndex(){return this.indexBuffer}interleave(){if(this.buffers.length===1||this.buffers.length===2&&this.indexBuffer)return this;let _=[],$=[],J=new _0,Z;for(Z in this.attributes){let Q=this.attributes[Z],q=this.buffers[Q.buffer];_.push(q.data),$.push(Q.size*t$[Q.type]/4),Q.buffer=0}for(J.data=r$(_,$),Z=0;Z<this.buffers.length;Z++)this.buffers[Z]!==this.indexBuffer&&this.buffers[Z].destroy();return this.buffers=[J],this.indexBuffer&&this.buffers.push(this.indexBuffer),this}getSize(){for(let _ in this.attributes){let $=this.attributes[_];return this.buffers[$.buffer].data.length/($.stride/4||$.size)}return 0}dispose(){this.disposeRunner.emit(this,!1)}destroy(){this.dispose(),this.buffers=null,this.indexBuffer=null,this.attributes=null}clone(){let _=new T0;for(let $=0;$<this.buffers.length;$++)_.buffers[$]=new _0(this.buffers[$].data.slice(0));for(let $ in this.attributes){let J=this.attributes[$];_.attributes[$]=new c1(J.buffer,J.size,J.normalized,J.type,J.stride,J.start,J.instance)}return this.indexBuffer&&(_.indexBuffer=_.buffers[this.buffers.indexOf(this.indexBuffer)],_.indexBuffer.type=S0.ELEMENT_ARRAY_BUFFER),_}static merge(_){let $=new T0,J=[],Z=[],Q=[],q;for(let K=0;K<_.length;K++){q=_[K];for(let V=0;V<q.buffers.length;V++)Z[V]=Z[V]||0,Z[V]+=q.buffers[V].data.length,Q[V]=0}for(let K=0;K<q.buffers.length;K++)J[K]=new U2[T_(q.buffers[K].data)](Z[K]),$.buffers[K]=new _0(J[K]);for(let K=0;K<_.length;K++){q=_[K];for(let V=0;V<q.buffers.length;V++)J[V].set(q.buffers[V].data,Q[V]),Q[V]+=q.buffers[V].data.length}if($.attributes=q.attributes,q.indexBuffer){$.indexBuffer=$.buffers[q.buffers.indexOf(q.indexBuffer)],$.indexBuffer.type=S0.ELEMENT_ARRAY_BUFFER;let K=0,V=0,H=0,w=0;for(let h=0;h<q.buffers.length;h++)if(q.buffers[h]!==q.indexBuffer){w=h;break}for(let h in q.attributes){let z=q.attributes[h];(z.buffer|0)===w&&(V+=z.size*t$[z.type]/4)}for(let h=0;h<_.length;h++){let z=_[h].indexBuffer.data;for(let X=0;X<z.length;X++)$.indexBuffer.data[X+H]+=K;K+=_[h].buffers[w].data.length/V,H+=z.length}}return $}}class y1 extends T0{constructor(_=!1){super(),this._buffer=new _0(null,_,!1),this._indexBuffer=new _0(null,_,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,g.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,g.FLOAT).addAttribute("aColor",this._buffer,4,!0,g.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,g.FLOAT).addIndex(this._indexBuffer)}}var p_=Math.PI*2,p7=180/Math.PI,x7=Math.PI/180,$0=((_)=>(_[_.POLY=0]="POLY",_[_.RECT=1]="RECT",_[_.CIRC=2]="CIRC",_[_.ELIP=3]="ELIP",_[_.RREC=4]="RREC",_))($0||{});class u{constructor(_=0,$=0){this.x=0,this.y=0,this.x=_,this.y=$}clone(){return new u(this.x,this.y)}copyFrom(_){return this.set(_.x,_.y),this}copyTo(_){return _.set(this.x,this.y),_}equals(_){return _.x===this.x&&_.y===this.y}set(_=0,$=_){return this.x=_,this.y=$,this}}u.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};var S6=[new u,new u,new u,new u];class x{constructor(_=0,$=0,J=0,Z=0){this.x=Number(_),this.y=Number($),this.width=Number(J),this.height=Number(Z),this.type=$0.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new x(0,0,0,0)}clone(){return new x(this.x,this.y,this.width,this.height)}copyFrom(_){return this.x=_.x,this.y=_.y,this.width=_.width,this.height=_.height,this}copyTo(_){return _.x=this.x,_.y=this.y,_.width=this.width,_.height=this.height,_}contains(_,$){return this.width<=0||this.height<=0?!1:_>=this.x&&_<this.x+this.width&&$>=this.y&&$<this.y+this.height}intersects(_,$){if(!$){let D=this.x<_.x?_.x:this.x;if((this.right>_.right?_.right:this.right)<=D)return!1;let L=this.y<_.y?_.y:this.y;return(this.bottom>_.bottom?_.bottom:this.bottom)>L}let J=this.left,Z=this.right,Q=this.top,q=this.bottom;if(Z<=J||q<=Q)return!1;let K=S6[0].set(_.left,_.top),V=S6[1].set(_.left,_.bottom),H=S6[2].set(_.right,_.top),w=S6[3].set(_.right,_.bottom);if(H.x<=K.x||V.y<=K.y)return!1;let h=Math.sign($.a*$.d-$.b*$.c);if(h===0||($.apply(K,K),$.apply(V,V),$.apply(H,H),$.apply(w,w),Math.max(K.x,V.x,H.x,w.x)<=J||Math.min(K.x,V.x,H.x,w.x)>=Z||Math.max(K.y,V.y,H.y,w.y)<=Q||Math.min(K.y,V.y,H.y,w.y)>=q))return!1;let z=h*(V.y-K.y),X=h*(K.x-V.x),W=z*J+X*Q,G=z*Z+X*Q,k=z*J+X*q,C=z*Z+X*q;if(Math.max(W,G,k,C)<=z*K.x+X*K.y||Math.min(W,G,k,C)>=z*w.x+X*w.y)return!1;let Y=h*(K.y-H.y),U=h*(H.x-K.x),N=Y*J+U*Q,I=Y*Z+U*Q,f=Y*J+U*q,y=Y*Z+U*q;return!(Math.max(N,I,f,y)<=Y*K.x+U*K.y||Math.min(N,I,f,y)>=Y*w.x+U*w.y)}pad(_=0,$=_){return this.x-=_,this.y-=$,this.width+=_*2,this.height+=$*2,this}fit(_){let $=Math.max(this.x,_.x),J=Math.min(this.x+this.width,_.x+_.width),Z=Math.max(this.y,_.y),Q=Math.min(this.y+this.height,_.y+_.height);return this.x=$,this.width=Math.max(J-$,0),this.y=Z,this.height=Math.max(Q-Z,0),this}ceil(_=1,$=0.001){let J=Math.ceil((this.x+this.width-$)*_)/_,Z=Math.ceil((this.y+this.height-$)*_)/_;return this.x=Math.floor((this.x+$)*_)/_,this.y=Math.floor((this.y+$)*_)/_,this.width=J-this.x,this.height=Z-this.y,this}enlarge(_){let $=Math.min(this.x,_.x),J=Math.max(this.x+this.width,_.x+_.width),Z=Math.min(this.y,_.y),Q=Math.max(this.y+this.height,_.y+_.height);return this.x=$,this.width=J-$,this.y=Z,this.height=Q-Z,this}}x.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class S1{constructor(_=0,$=0,J=0){this.x=_,this.y=$,this.radius=J,this.type=$0.CIRC}clone(){return new S1(this.x,this.y,this.radius)}contains(_,$){if(this.radius<=0)return!1;let J=this.radius*this.radius,Z=this.x-_,Q=this.y-$;return Z*=Z,Q*=Q,Z+Q<=J}getBounds(){return new x(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}S1.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class T1{constructor(_=0,$=0,J=0,Z=0){this.x=_,this.y=$,this.width=J,this.height=Z,this.type=$0.ELIP}clone(){return new T1(this.x,this.y,this.width,this.height)}contains(_,$){if(this.width<=0||this.height<=0)return!1;let J=(_-this.x)/this.width,Z=($-this.y)/this.height;return J*=J,Z*=Z,J+Z<=1}getBounds(){return new x(this.x-this.width,this.y-this.height,this.width,this.height)}}T1.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class C_{constructor(..._){let $=Array.isArray(_[0])?_[0]:_;if(typeof $[0]!="number"){let J=[];for(let Z=0,Q=$.length;Z<Q;Z++)J.push($[Z].x,$[Z].y);$=J}this.points=$,this.type=$0.POLY,this.closeStroke=!0}clone(){let _=this.points.slice(),$=new C_(_);return $.closeStroke=this.closeStroke,$}contains(_,$){let J=!1,Z=this.points.length/2;for(let Q=0,q=Z-1;Q<Z;q=Q++){let K=this.points[Q*2],V=this.points[Q*2+1],H=this.points[q*2],w=this.points[q*2+1];V>$!=w>$&&_<(H-K)*(($-V)/(w-V))+K&&(J=!J)}return J}}C_.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((_,$)=>`${_}, ${$}`,"")}]`};class d1{constructor(_=0,$=0,J=0,Z=0,Q=20){this.x=_,this.y=$,this.width=J,this.height=Z,this.radius=Q,this.type=$0.RREC}clone(){return new d1(this.x,this.y,this.width,this.height,this.radius)}contains(_,$){if(this.width<=0||this.height<=0)return!1;if(_>=this.x&&_<=this.x+this.width&&$>=this.y&&$<=this.y+this.height){let J=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if($>=this.y+J&&$<=this.y+this.height-J||_>=this.x+J&&_<=this.x+this.width-J)return!0;let Z=_-(this.x+J),Q=$-(this.y+J),q=J*J;if(Z*Z+Q*Q<=q||(Z=_-(this.x+this.width-J),Z*Z+Q*Q<=q)||(Q=$-(this.y+this.height-J),Z*Z+Q*Q<=q)||(Z=_-(this.x+J),Z*Z+Q*Q<=q))return!0}return!1}}d1.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class o{constructor(_=1,$=0,J=0,Z=1,Q=0,q=0){this.array=null,this.a=_,this.b=$,this.c=J,this.d=Z,this.tx=Q,this.ty=q}fromArray(_){this.a=_[0],this.b=_[1],this.c=_[3],this.d=_[4],this.tx=_[2],this.ty=_[5]}set(_,$,J,Z,Q,q){return this.a=_,this.b=$,this.c=J,this.d=Z,this.tx=Q,this.ty=q,this}toArray(_,$){this.array||(this.array=new Float32Array(9));let J=$||this.array;return _?(J[0]=this.a,J[1]=this.b,J[2]=0,J[3]=this.c,J[4]=this.d,J[5]=0,J[6]=this.tx,J[7]=this.ty,J[8]=1):(J[0]=this.a,J[1]=this.c,J[2]=this.tx,J[3]=this.b,J[4]=this.d,J[5]=this.ty,J[6]=0,J[7]=0,J[8]=1),J}apply(_,$){$=$||new u;let{x:J,y:Z}=_;return $.x=this.a*J+this.c*Z+this.tx,$.y=this.b*J+this.d*Z+this.ty,$}applyInverse(_,$){$=$||new u;let J=1/(this.a*this.d+this.c*-this.b),Z=_.x,Q=_.y;return $.x=this.d*J*Z+-this.c*J*Q+(this.ty*this.c-this.tx*this.d)*J,$.y=this.a*J*Q+-this.b*J*Z+(-this.ty*this.a+this.tx*this.b)*J,$}translate(_,$){return this.tx+=_,this.ty+=$,this}scale(_,$){return this.a*=_,this.d*=$,this.c*=_,this.b*=$,this.tx*=_,this.ty*=$,this}rotate(_){let $=Math.cos(_),J=Math.sin(_),Z=this.a,Q=this.c,q=this.tx;return this.a=Z*$-this.b*J,this.b=Z*J+this.b*$,this.c=Q*$-this.d*J,this.d=Q*J+this.d*$,this.tx=q*$-this.ty*J,this.ty=q*J+this.ty*$,this}append(_){let $=this.a,J=this.b,Z=this.c,Q=this.d;return this.a=_.a*$+_.b*Z,this.b=_.a*J+_.b*Q,this.c=_.c*$+_.d*Z,this.d=_.c*J+_.d*Q,this.tx=_.tx*$+_.ty*Z+this.tx,this.ty=_.tx*J+_.ty*Q+this.ty,this}setTransform(_,$,J,Z,Q,q,K,V,H){return this.a=Math.cos(K+H)*Q,this.b=Math.sin(K+H)*Q,this.c=-Math.sin(K-V)*q,this.d=Math.cos(K-V)*q,this.tx=_-(J*this.a+Z*this.c),this.ty=$-(J*this.b+Z*this.d),this}prepend(_){let $=this.tx;if(_.a!==1||_.b!==0||_.c!==0||_.d!==1){let J=this.a,Z=this.c;this.a=J*_.a+this.b*_.c,this.b=J*_.b+this.b*_.d,this.c=Z*_.a+this.d*_.c,this.d=Z*_.b+this.d*_.d}return this.tx=$*_.a+this.ty*_.c+_.tx,this.ty=$*_.b+this.ty*_.d+_.ty,this}decompose(_){let $=this.a,J=this.b,Z=this.c,Q=this.d,q=_.pivot,K=-Math.atan2(-Z,Q),V=Math.atan2(J,$),H=Math.abs(K+V);return H<0.00001||Math.abs(p_-H)<0.00001?(_.rotation=V,_.skew.x=_.skew.y=0):(_.rotation=0,_.skew.x=K,_.skew.y=V),_.scale.x=Math.sqrt($*$+J*J),_.scale.y=Math.sqrt(Z*Z+Q*Q),_.position.x=this.tx+(q.x*$+q.y*Z),_.position.y=this.ty+(q.x*J+q.y*Q),_}invert(){let _=this.a,$=this.b,J=this.c,Z=this.d,Q=this.tx,q=_*Z-$*J;return this.a=Z/q,this.b=-$/q,this.c=-J/q,this.d=_/q,this.tx=(J*this.ty-Z*Q)/q,this.ty=-(_*this.ty-$*Q)/q,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){let _=new o;return _.a=this.a,_.b=this.b,_.c=this.c,_.d=this.d,_.tx=this.tx,_.ty=this.ty,_}copyTo(_){return _.a=this.a,_.b=this.b,_.c=this.c,_.d=this.d,_.tx=this.tx,_.ty=this.ty,_}copyFrom(_){return this.a=_.a,this.b=_.b,this.c=_.c,this.d=_.d,this.tx=_.tx,this.ty=_.ty,this}static get IDENTITY(){return new o}static get TEMP_MATRIX(){return new o}}o.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};var V1=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],H1=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],w1=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],h1=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],m7=[],e$=[],T6=Math.sign;function I2(){for(let _=0;_<16;_++){let $=[];m7.push($);for(let J=0;J<16;J++){let Z=T6(V1[_]*V1[J]+w1[_]*H1[J]),Q=T6(H1[_]*V1[J]+h1[_]*H1[J]),q=T6(V1[_]*w1[J]+w1[_]*h1[J]),K=T6(H1[_]*w1[J]+h1[_]*h1[J]);for(let V=0;V<16;V++)if(V1[V]===Z&&H1[V]===Q&&w1[V]===q&&h1[V]===K){$.push(V);break}}}for(let _=0;_<16;_++){let $=new o;$.set(V1[_],H1[_],w1[_],h1[_],0,0),e$.push($)}}I2();var Q0={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:(_)=>V1[_],uY:(_)=>H1[_],vX:(_)=>w1[_],vY:(_)=>h1[_],inv:(_)=>_&8?_&15:-_&7,add:(_,$)=>m7[_][$],sub:(_,$)=>m7[_][Q0.inv($)],rotate180:(_)=>_^4,isVertical:(_)=>(_&3)===2,byDirection:(_,$)=>Math.abs(_)*2<=Math.abs($)?$>=0?Q0.S:Q0.N:Math.abs($)*2<=Math.abs(_)?_>0?Q0.E:Q0.W:$>0?_>0?Q0.SE:Q0.SW:_>0?Q0.NE:Q0.NW,matrixAppendRotationInv:(_,$,J=0,Z=0)=>{let Q=e$[Q0.inv($)];Q.tx=J,Q.ty=Z,_.append(Q)}};class u0{constructor(_,$,J=0,Z=0){this._x=J,this._y=Z,this.cb=_,this.scope=$}clone(_=this.cb,$=this.scope){return new u0(_,$,this._x,this._y)}set(_=0,$=_){return(this._x!==_||this._y!==$)&&(this._x=_,this._y=$,this.cb.call(this.scope)),this}copyFrom(_){return(this._x!==_.x||this._y!==_.y)&&(this._x=_.x,this._y=_.y,this.cb.call(this.scope)),this}copyTo(_){return _.set(this._x,this._y),_}equals(_){return _.x===this._x&&_.y===this._y}get x(){return this._x}set x(_){this._x!==_&&(this._x=_,this.cb.call(this.scope))}get y(){return this._y}set y(_){this._y!==_&&(this._y=_,this.cb.call(this.scope))}}u0.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};var u7=class{constructor(){this.worldTransform=new o,this.localTransform=new o,this.position=new u0(this.onChange,this,0,0),this.scale=new u0(this.onChange,this,1,1),this.pivot=new u0(this.onChange,this,0,0),this.skew=new u0(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){let _=this.localTransform;this._localID!==this._currentLocalID&&(_.a=this._cx*this.scale.x,_.b=this._sx*this.scale.x,_.c=this._cy*this.scale.y,_.d=this._sy*this.scale.y,_.tx=this.position.x-(this.pivot.x*_.a+this.pivot.y*_.c),_.ty=this.position.y-(this.pivot.x*_.b+this.pivot.y*_.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(_){let $=this.localTransform;if(this._localID!==this._currentLocalID&&($.a=this._cx*this.scale.x,$.b=this._sx*this.scale.x,$.c=this._cy*this.scale.y,$.d=this._sy*this.scale.y,$.tx=this.position.x-(this.pivot.x*$.a+this.pivot.y*$.c),$.ty=this.position.y-(this.pivot.x*$.b+this.pivot.y*$.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==_._worldID){let J=_.worldTransform,Z=this.worldTransform;Z.a=$.a*J.a+$.b*J.c,Z.b=$.a*J.b+$.b*J.d,Z.c=$.c*J.a+$.d*J.c,Z.d=$.c*J.b+$.d*J.d,Z.tx=$.tx*J.a+$.ty*J.c+J.tx,Z.ty=$.tx*J.b+$.ty*J.d+J.ty,this._parentID=_._worldID,this._worldID++}}setFromMatrix(_){_.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(_){this._rotation!==_&&(this._rotation=_,this.updateSkew())}};u7.IDENTITY=new u7;var z1=u7;z1.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var _J=`varying vec2 vTextureCoord;
7
+ Deprecated since v${_}`),console.warn(Z))),k$[$]=!0}var C$={get parse(){return l("7.3.0","utils.url.parse is deprecated, use native URL API instead."),N5},get format(){return l("7.3.0","utils.url.format is deprecated, use native URL API instead."),G$},get resolve(){return l("7.3.0","utils.url.resolve is deprecated, use native URL API instead."),W$}};function q_(_){if(typeof _!="string")throw TypeError(`Path must be a string. Received ${JSON.stringify(_)}`)}function Y5(_){return _.split("?")[0].split("#")[0]}function $2(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J2(_,$,J){return _.replace(new RegExp($2($),"g"),J)}function Z2(_,$){let J="",Z=0,Q=-1,q=0,K=-1;for(let V=0;V<=_.length;++V){if(V<_.length)K=_.charCodeAt(V);else{if(K===47)break;K=47}if(K===47){if(!(Q===V-1||q===1))if(Q!==V-1&&q===2){if(J.length<2||Z!==2||J.charCodeAt(J.length-1)!==46||J.charCodeAt(J.length-2)!==46){if(J.length>2){let H=J.lastIndexOf("/");if(H!==J.length-1){H===-1?(J="",Z=0):(J=J.slice(0,H),Z=J.length-1-J.lastIndexOf("/")),Q=V,q=0;continue}}else if(J.length===2||J.length===1){J="",Z=0,Q=V,q=0;continue}}$&&(J.length>0?J+="/..":J="..",Z=2)}else J.length>0?J+=`/${_.slice(Q+1,V)}`:J=_.slice(Q+1,V),Z=V-Q-1;Q=V,q=0}else K===46&&q!==-1?++q:q=-1}return J}var F9={toPosix(_){return J2(_,"\\","/")},isUrl(_){return/^https?:/.test(this.toPosix(_))},isDataUrl(_){return/^data:([a-z]+\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}()_|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s<>]*?)$/i.test(_)},isBlobUrl(_){return _.startsWith("blob:")},hasProtocol(_){return/^[^/:]+:/.test(this.toPosix(_))},getProtocol(_){q_(_),_=this.toPosix(_);let $=/^file:\/\/\//.exec(_);if($)return $[0];let J=/^[^/:]+:\/{0,2}/.exec(_);return J?J[0]:""},toAbsolute(_,$,J){if(q_(_),this.isDataUrl(_)||this.isBlobUrl(_))return _;let Z=Y5(this.toPosix($??B.ADAPTER.getBaseUrl())),Q=Y5(this.toPosix(J??this.rootname(Z)));return _=this.toPosix(_),_.startsWith("/")?F9.join(Q,_.slice(1)):this.isAbsolute(_)?_:this.join(Z,_)},normalize(_){if(q_(_),_.length===0)return".";if(this.isDataUrl(_)||this.isBlobUrl(_))return _;_=this.toPosix(_);let $="",J=_.startsWith("/");this.hasProtocol(_)&&($=this.rootname(_),_=_.slice($.length));let Z=_.endsWith("/");return _=Z2(_,!1),_.length>0&&Z&&(_+="/"),J?`/${_}`:$+_},isAbsolute(_){return q_(_),_=this.toPosix(_),this.hasProtocol(_)?!0:_.startsWith("/")},join(..._){if(_.length===0)return".";let $;for(let J=0;J<_.length;++J){let Z=_[J];if(q_(Z),Z.length>0)if($===void 0)$=Z;else{let Q=_[J-1]??"";this.joinExtensions.includes(this.extname(Q).toLowerCase())?$+=`/../${Z}`:$+=`/${Z}`}}return $===void 0?".":this.normalize($)},dirname(_){if(q_(_),_.length===0)return".";_=this.toPosix(_);let $=_.charCodeAt(0),J=$===47,Z=-1,Q=!0,q=this.getProtocol(_),K=_;_=_.slice(q.length);for(let V=_.length-1;V>=1;--V)if($=_.charCodeAt(V),$===47){if(!Q){Z=V;break}}else Q=!1;return Z===-1?J?"/":this.isUrl(K)?q+_:q:J&&Z===1?"//":q+_.slice(0,Z)},rootname(_){q_(_),_=this.toPosix(_);let $="";if(_.startsWith("/")?$="/":$=this.getProtocol(_),this.isUrl(_)){let J=_.indexOf("/",$.length);J!==-1?$=_.slice(0,J):$=_,$.endsWith("/")||($+="/")}return $},basename(_,$){q_(_),$&&q_($),_=Y5(this.toPosix(_));let J=0,Z=-1,Q=!0,q;if($!==void 0&&$.length>0&&$.length<=_.length){if($.length===_.length&&$===_)return"";let K=$.length-1,V=-1;for(q=_.length-1;q>=0;--q){let H=_.charCodeAt(q);if(H===47){if(!Q){J=q+1;break}}else V===-1&&(Q=!1,V=q+1),K>=0&&(H===$.charCodeAt(K)?--K===-1&&(Z=q):(K=-1,Z=V))}return J===Z?Z=V:Z===-1&&(Z=_.length),_.slice(J,Z)}for(q=_.length-1;q>=0;--q)if(_.charCodeAt(q)===47){if(!Q){J=q+1;break}}else Z===-1&&(Q=!1,Z=q+1);return Z===-1?"":_.slice(J,Z)},extname(_){q_(_),_=Y5(this.toPosix(_));let $=-1,J=0,Z=-1,Q=!0,q=0;for(let K=_.length-1;K>=0;--K){let V=_.charCodeAt(K);if(V===47){if(!Q){J=K+1;break}continue}Z===-1&&(Q=!1,Z=K+1),V===46?$===-1?$=K:q!==1&&(q=1):$!==-1&&(q=-1)}return $===-1||Z===-1||q===0||q===1&&$===Z-1&&$===J+1?"":_.slice($,Z)},parse(_){q_(_);let $={root:"",dir:"",base:"",ext:"",name:""};if(_.length===0)return $;_=Y5(this.toPosix(_));let J=_.charCodeAt(0),Z=this.isAbsolute(_),Q,q="";$.root=this.rootname(_),Z||this.hasProtocol(_)?Q=1:Q=0;let K=-1,V=0,H=-1,w=!0,h=_.length-1,z=0;for(;h>=Q;--h){if(J=_.charCodeAt(h),J===47){if(!w){V=h+1;break}continue}H===-1&&(w=!1,H=h+1),J===46?K===-1?K=h:z!==1&&(z=1):K!==-1&&(z=-1)}return K===-1||H===-1||z===0||z===1&&K===H-1&&K===V+1?H!==-1&&(V===0&&Z?$.base=$.name=_.slice(1,H):$.base=$.name=_.slice(V,H)):(V===0&&Z?($.name=_.slice(1,K),$.base=_.slice(1,H)):($.name=_.slice(V,K),$.base=_.slice(V,H)),$.ext=_.slice(K,H)),$.dir=this.dirname(_),q&&($.dir=q+$.dir),$},sep:"/",delimiter:":",joinExtensions:[".html"]};var O9;async function N$(){return O9??(O9=(async()=>{let _=document.createElement("canvas").getContext("webgl");if(!_)return K0.UNPACK;let $=await new Promise((q)=>{let K=document.createElement("video");K.onloadeddata=()=>q(K),K.onerror=()=>q(null),K.autoplay=!1,K.crossOrigin="anonymous",K.preload="auto",K.src="data:video/webm;base64,GkXfo59ChoEBQveBAULygQRC84EIQoKEd2VibUKHgQJChYECGFOAZwEAAAAAAAHTEU2bdLpNu4tTq4QVSalmU6yBoU27i1OrhBZUrmtTrIHGTbuMU6uEElTDZ1OsggEXTbuMU6uEHFO7a1OsggG97AEAAAAAAABZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmoCrXsYMPQkBNgIRMYXZmV0GETGF2ZkSJiEBEAAAAAAAAFlSua8yuAQAAAAAAAEPXgQFzxYgAAAAAAAAAAZyBACK1nIN1bmSIgQCGhVZfVlA5g4EBI+ODhAJiWgDglLCBArqBApqBAlPAgQFVsIRVuYEBElTDZ9Vzc9JjwItjxYgAAAAAAAAAAWfInEWjh0VOQ09ERVJEh49MYXZjIGxpYnZweC12cDlnyKJFo4hEVVJBVElPTkSHlDAwOjAwOjAwLjA0MDAwMDAwMAAAH0O2dcfngQCgwqGggQAAAIJJg0IAABAAFgA4JBwYSgAAICAAEb///4r+AAB1oZ2mm+6BAaWWgkmDQgAAEAAWADgkHBhKAAAgIABIQBxTu2uRu4+zgQC3iveBAfGCAXHwgQM=",K.load()});if(!$)return K0.UNPACK;let J=_.createTexture();_.bindTexture(_.TEXTURE_2D,J);let Z=_.createFramebuffer();_.bindFramebuffer(_.FRAMEBUFFER,Z),_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,J,0),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),_.pixelStorei(_.UNPACK_COLORSPACE_CONVERSION_WEBGL,_.NONE),_.texImage2D(_.TEXTURE_2D,0,_.RGBA,_.RGBA,_.UNSIGNED_BYTE,$);let Q=new Uint8Array(4);return _.readPixels(0,0,1,1,_.RGBA,_.UNSIGNED_BYTE,Q),_.deleteFramebuffer(Z),_.deleteTexture(J),_.getExtension("WEBGL_lose_context")?.loseContext(),Q[0]<=Q[3]?K0.PMA:K0.UNPACK})()),O9}function Y$(){l("7.0.0","skipHello is deprecated, please use settings.RENDER_OPTIONS.hello")}function U$(){l("7.0.0",`sayHello is deprecated, please use Renderer's "hello" option`)}var j9;function R6(){return typeof j9>"u"&&(j9=function(){let _={stencil:!0,failIfMajorPerformanceCaveat:B.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT};try{if(!B.ADAPTER.getWebGLRenderingContext())return!1;let $=B.ADAPTER.createCanvas(),J=$.getContext("webgl",_)||$.getContext("experimental-webgl",_),Z=!!J?.getContextAttributes()?.stencil;if(J){let Q=J.getExtension("WEBGL_lose_context");Q&&Q.loseContext()}return J=null,Z}catch{return!1}}()),j9}var Q2={grad:0.9,turn:360,rad:360/(2*Math.PI)},R_=function(_){return typeof _=="string"?_.length>0:typeof _=="number"},Y0=function(_,$,J){return $===void 0&&($=0),J===void 0&&(J=Math.pow(10,$)),Math.round(J*_)/J+0},s0=function(_,$,J){return $===void 0&&($=0),J===void 0&&(J=1),_>J?J:_>$?_:$},D$=function(_){return(_=isFinite(_)?_%360:0)>0?_:_+360},I$=function(_){return{r:s0(_.r,0,255),g:s0(_.g,0,255),b:s0(_.b,0,255),a:s0(_.a)}},L9=function(_){return{r:Y0(_.r),g:Y0(_.g),b:Y0(_.b),a:Y0(_.a,3)}},q2=/^#([0-9a-f]{3,8})$/i,M6=function(_){var $=_.toString(16);return $.length<2?"0"+$:$},A$=function(_){var{r:$,g:J,b:Z,a:Q}=_,q=Math.max($,J,Z),K=q-Math.min($,J,Z),V=K?q===$?(J-Z)/K:q===J?2+(Z-$)/K:4+($-J)/K:0;return{h:60*(V<0?V+6:V),s:q?K/q*100:0,v:q/255*100,a:Q}},P$=function(_){var{h:$,s:J,v:Z,a:Q}=_;$=$/360*6,J/=100,Z/=100;var q=Math.floor($),K=Z*(1-J),V=Z*(1-($-q)*J),H=Z*(1-(1-$+q)*J),w=q%6;return{r:255*[Z,V,K,K,H,Z][w],g:255*[H,Z,Z,V,K,K][w],b:255*[K,K,H,Z,Z,V][w],a:Q}},b$=function(_){return{h:D$(_.h),s:s0(_.s,0,100),l:s0(_.l,0,100),a:s0(_.a)}},B$=function(_){return{h:Y0(_.h),s:Y0(_.s),l:Y0(_.l),a:Y0(_.a,3)}},F$=function(_){return P$((J=($=_).s,{h:$.h,s:(J*=((Z=$.l)<50?Z:100-Z)/100)>0?2*J/(Z+J)*100:0,v:Z+J,a:$.a}));var $,J,Z},U5=function(_){return{h:($=A$(_)).h,s:(Q=(200-(J=$.s))*(Z=$.v)/100)>0&&Q<200?J*Z/100/(Q<=100?Q:200-Q)*100:0,l:Q/2,a:$.a};var $,J,Z,Q},K2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,V2=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,H2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,w2=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,P9={string:[[function(_){var $=q2.exec(_);return $?(_=$[1]).length<=4?{r:parseInt(_[0]+_[0],16),g:parseInt(_[1]+_[1],16),b:parseInt(_[2]+_[2],16),a:_.length===4?Y0(parseInt(_[3]+_[3],16)/255,2):1}:_.length===6||_.length===8?{r:parseInt(_.substr(0,2),16),g:parseInt(_.substr(2,2),16),b:parseInt(_.substr(4,2),16),a:_.length===8?Y0(parseInt(_.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(_){var $=H2.exec(_)||w2.exec(_);return $?$[2]!==$[4]||$[4]!==$[6]?null:I$({r:Number($[1])/($[2]?0.39215686274509803:1),g:Number($[3])/($[4]?0.39215686274509803:1),b:Number($[5])/($[6]?0.39215686274509803:1),a:$[7]===void 0?1:Number($[7])/($[8]?100:1)}):null},"rgb"],[function(_){var $=K2.exec(_)||V2.exec(_);if(!$)return null;var J,Z,Q=b$({h:(J=$[1],Z=$[2],Z===void 0&&(Z="deg"),Number(J)*(Q2[Z]||1)),s:Number($[3]),l:Number($[4]),a:$[5]===void 0?1:Number($[5])/($[6]?100:1)});return F$(Q)},"hsl"]],object:[[function(_){var{r:$,g:J,b:Z,a:Q}=_,q=Q===void 0?1:Q;return R_($)&&R_(J)&&R_(Z)?I$({r:Number($),g:Number(J),b:Number(Z),a:Number(q)}):null},"rgb"],[function(_){var{h:$,s:J,l:Z,a:Q}=_,q=Q===void 0?1:Q;if(!R_($)||!R_(J)||!R_(Z))return null;var K=b$({h:Number($),s:Number(J),l:Number(Z),a:Number(q)});return F$(K)},"hsl"],[function(_){var{h:$,s:J,v:Z,a:Q}=_,q=Q===void 0?1:Q;if(!R_($)||!R_(J)||!R_(Z))return null;var K=function(V){return{h:D$(V.h),s:s0(V.s,0,100),v:s0(V.v,0,100),a:s0(V.a)}}({h:Number($),s:Number(J),v:Number(Z),a:Number(q)});return P$(K)},"hsv"]]},O$=function(_,$){for(var J=0;J<$.length;J++){var Z=$[J][0](_);if(Z)return[Z,$[J][1]]}return[null,void 0]},h2=function(_){return typeof _=="string"?O$(_.trim(),P9.string):typeof _=="object"&&_!==null?O$(_,P9.object):[null,void 0]};var D9=function(_,$){var J=U5(_);return{h:J.h,s:s0(J.s+100*$,0,100),l:J.l,a:J.a}},A9=function(_){return(299*_.r+587*_.g+114*_.b)/1000/255},j$=function(_,$){var J=U5(_);return{h:J.h,s:J.s,l:s0(J.l+100*$,0,100),a:J.a}},R9=function(){function _($){this.parsed=h2($)[0],this.rgba=this.parsed||{r:0,g:0,b:0,a:1}}return _.prototype.isValid=function(){return this.parsed!==null},_.prototype.brightness=function(){return Y0(A9(this.rgba),2)},_.prototype.isDark=function(){return A9(this.rgba)<0.5},_.prototype.isLight=function(){return A9(this.rgba)>=0.5},_.prototype.toHex=function(){return $=L9(this.rgba),J=$.r,Z=$.g,Q=$.b,K=(q=$.a)<1?M6(Y0(255*q)):"","#"+M6(J)+M6(Z)+M6(Q)+K;var $,J,Z,Q,q,K},_.prototype.toRgb=function(){return L9(this.rgba)},_.prototype.toRgbString=function(){return $=L9(this.rgba),J=$.r,Z=$.g,Q=$.b,(q=$.a)<1?"rgba("+J+", "+Z+", "+Q+", "+q+")":"rgb("+J+", "+Z+", "+Q+")";var $,J,Z,Q,q},_.prototype.toHsl=function(){return B$(U5(this.rgba))},_.prototype.toHslString=function(){return $=B$(U5(this.rgba)),J=$.h,Z=$.s,Q=$.l,(q=$.a)<1?"hsla("+J+", "+Z+"%, "+Q+"%, "+q+")":"hsl("+J+", "+Z+"%, "+Q+"%)";var $,J,Z,Q,q},_.prototype.toHsv=function(){return $=A$(this.rgba),{h:Y0($.h),s:Y0($.s),v:Y0($.v),a:Y0($.a,3)};var $},_.prototype.invert=function(){return K_({r:255-($=this.rgba).r,g:255-$.g,b:255-$.b,a:$.a});var $},_.prototype.saturate=function($){return $===void 0&&($=0.1),K_(D9(this.rgba,$))},_.prototype.desaturate=function($){return $===void 0&&($=0.1),K_(D9(this.rgba,-$))},_.prototype.grayscale=function(){return K_(D9(this.rgba,-1))},_.prototype.lighten=function($){return $===void 0&&($=0.1),K_(j$(this.rgba,$))},_.prototype.darken=function($){return $===void 0&&($=0.1),K_(j$(this.rgba,-$))},_.prototype.rotate=function($){return $===void 0&&($=15),this.hue(this.hue()+$)},_.prototype.alpha=function($){return typeof $=="number"?K_({r:(J=this.rgba).r,g:J.g,b:J.b,a:$}):Y0(this.rgba.a,3);var J},_.prototype.hue=function($){var J=U5(this.rgba);return typeof $=="number"?K_({h:$,s:J.s,l:J.l,a:J.a}):Y0(J.h)},_.prototype.isEqual=function($){return this.toHex()===K_($).toHex()},_}(),K_=function(_){return _ instanceof R9?_:new R9(_)},L$=[],R$=function(_){_.forEach(function($){L$.indexOf($)<0&&($(R9,P9),L$.push($))})};function M9(_,$){var J={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},Z={};for(var Q in J)Z[J[Q]]=Q;var q={};_.prototype.toName=function(K){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var V,H,w=Z[this.toHex()];if(w)return w;if(K==null?void 0:K.closest){var h=this.toRgb(),z=1/0,X="black";if(!q.length)for(var W in J)q[W]=new _(J[W]).toRgb();for(var G in J){var k=(V=h,H=q[G],Math.pow(V.r-H.r,2)+Math.pow(V.g-H.g,2)+Math.pow(V.b-H.b,2));k<z&&(z=k,X=G)}return X}},$.string.push([function(K){var V=K.toLowerCase(),H=V==="transparent"?"#0000":J[V];return H?new _(H).toRgb():null},"name"])}R$([M9]);var E1=class _{constructor($=16777215){this._value=null,this._components=new Float32Array(4),this._components.fill(1),this._int=16777215,this.value=$}get red(){return this._components[0]}get green(){return this._components[1]}get blue(){return this._components[2]}get alpha(){return this._components[3]}setValue($){return this.value=$,this}set value($){if($ instanceof _)this._value=this.cloneSource($._value),this._int=$._int,this._components.set($._components);else{if($===null)throw Error("Cannot set PIXI.Color#value to null");(this._value===null||!this.isSourceEqual(this._value,$))&&(this.normalize($),this._value=this.cloneSource($))}}get value(){return this._value}cloneSource($){return typeof $=="string"||typeof $=="number"||$ instanceof Number||$===null?$:Array.isArray($)||ArrayBuffer.isView($)?$.slice(0):typeof $=="object"&&$!==null?{...$}:$}isSourceEqual($,J){let Z=typeof $;if(Z!==typeof J)return!1;if(Z==="number"||Z==="string"||$ instanceof Number)return $===J;if(Array.isArray($)&&Array.isArray(J)||ArrayBuffer.isView($)&&ArrayBuffer.isView(J))return $.length!==J.length?!1:$.every((Q,q)=>Q===J[q]);if($!==null&&J!==null){let Q=Object.keys($),q=Object.keys(J);return Q.length!==q.length?!1:Q.every((K)=>$[K]===J[K])}return $===J}toRgba(){let[$,J,Z,Q]=this._components;return{r:$,g:J,b:Z,a:Q}}toRgb(){let[$,J,Z]=this._components;return{r:$,g:J,b:Z}}toRgbaString(){let[$,J,Z]=this.toUint8RgbArray();return`rgba(${$},${J},${Z},${this.alpha})`}toUint8RgbArray($){let[J,Z,Q]=this._components;return $=$??[],$[0]=Math.round(J*255),$[1]=Math.round(Z*255),$[2]=Math.round(Q*255),$}toRgbArray($){$=$??[];let[J,Z,Q]=this._components;return $[0]=J,$[1]=Z,$[2]=Q,$}toNumber(){return this._int}toLittleEndianNumber(){let $=this._int;return($>>16)+($&65280)+(($&255)<<16)}multiply($){let[J,Z,Q,q]=_.temp.setValue($)._components;return this._components[0]*=J,this._components[1]*=Z,this._components[2]*=Q,this._components[3]*=q,this.refreshInt(),this._value=null,this}premultiply($,J=!0){return J&&(this._components[0]*=$,this._components[1]*=$,this._components[2]*=$),this._components[3]=$,this.refreshInt(),this._value=null,this}toPremultiplied($,J=!0){if($===1)return-16777216+this._int;if($===0)return J?0:this._int;let Z=this._int>>16&255,Q=this._int>>8&255,q=this._int&255;return J&&(Z=Z*$+0.5|0,Q=Q*$+0.5|0,q=q*$+0.5|0),($*255<<24)+(Z<<16)+(Q<<8)+q}toHex(){let $=this._int.toString(16);return`#${"000000".substring(0,6-$.length)+$}`}toHexa(){let $=Math.round(this._components[3]*255).toString(16);return this.toHex()+"00".substring(0,2-$.length)+$}setAlpha($){return this._components[3]=this._clamp($),this}round($){let[J,Z,Q]=this._components;return this._components[0]=Math.round(J*$)/$,this._components[1]=Math.round(Z*$)/$,this._components[2]=Math.round(Q*$)/$,this.refreshInt(),this._value=null,this}toArray($){$=$??[];let[J,Z,Q,q]=this._components;return $[0]=J,$[1]=Z,$[2]=Q,$[3]=q,$}normalize($){let J,Z,Q,q;if((typeof $=="number"||$ instanceof Number)&&$>=0&&$<=16777215){let K=$;J=(K>>16&255)/255,Z=(K>>8&255)/255,Q=(K&255)/255,q=1}else if((Array.isArray($)||$ instanceof Float32Array)&&$.length>=3&&$.length<=4)$=this._clamp($),[J,Z,Q,q=1]=$;else if(($ instanceof Uint8Array||$ instanceof Uint8ClampedArray)&&$.length>=3&&$.length<=4)$=this._clamp($,0,255),[J,Z,Q,q=255]=$,J/=255,Z/=255,Q/=255,q/=255;else if(typeof $=="string"||typeof $=="object"){if(typeof $=="string"){let V=_.HEX_PATTERN.exec($);V&&($=`#${V[2]}`)}let K=K_($);K.isValid()&&({r:J,g:Z,b:Q,a:q}=K.rgba,J/=255,Z/=255,Q/=255)}if(J!==void 0)this._components[0]=J,this._components[1]=Z,this._components[2]=Q,this._components[3]=q,this.refreshInt();else throw Error(`Unable to convert color ${$}`)}refreshInt(){this._clamp(this._components);let[$,J,Z]=this._components;this._int=($*255<<16)+(J*255<<8)+(Z*255|0)}_clamp($,J=0,Z=1){return typeof $=="number"?Math.min(Math.max($,J),Z):($.forEach((Q,q)=>{$[q]=Math.min(Math.max(Q,J),Z)}),$)}};E1.shared=new E1,E1.temp=new E1,E1.HEX_PATTERN=/^(#|0x)?(([a-f0-9]{3}){1,2}([a-f0-9]{2})?)$/i;var s=E1;function M$(_,$=[]){return l("7.2.0","utils.hex2rgb is deprecated, use Color#toRgbArray instead"),s.shared.setValue(_).toRgbArray($)}function f$(_){return l("7.2.0","utils.hex2string is deprecated, use Color#toHex instead"),s.shared.setValue(_).toHex()}function E$(_){return l("7.2.0","utils.string2hex is deprecated, use Color#toNumber instead"),s.shared.setValue(_).toNumber()}function v$(_){return l("7.2.0","utils.rgb2hex is deprecated, use Color#toNumber instead"),s.shared.setValue(_).toNumber()}function z2(){let _=[],$=[];for(let Z=0;Z<32;Z++)_[Z]=Z,$[Z]=Z;_[d.NORMAL_NPM]=d.NORMAL,_[d.ADD_NPM]=d.ADD,_[d.SCREEN_NPM]=d.SCREEN,$[d.NORMAL]=d.NORMAL_NPM,$[d.ADD]=d.ADD_NPM,$[d.SCREEN]=d.SCREEN_NPM;let J=[];return J.push($),J.push(_),J}var I5=z2();function c$(_,$){return I5[$?1:0][_]}function y$(_,$,J,Z=!0){return l("7.2.0","utils.premultiplyRgba has moved to Color.premultiply"),s.shared.setValue(_).premultiply($,Z).toArray(J??new Float32Array(4))}function S$(_,$){return l("7.2.0","utils.premultiplyTint has moved to Color.toPremultiplied"),s.shared.setValue(_).toPremultiplied($)}function T$(_,$,J,Z=!0){return l("7.2.0","utils.premultiplyTintToRgba has moved to Color.premultiply"),s.shared.setValue(_).premultiply($,Z).toArray(J??new Float32Array(4))}var f6=/^\s*data:(?:([\w-]+)\/([\w+.-]+))?(?:;charset=([\w-]+))?(?:;(base64))?,(.*)/i;function d$(_,$=null){let J=_*6;if($=$||new Uint16Array(J),$.length!==J)throw Error(`Out buffer length is incorrect, got ${$.length} and expected ${J}`);for(let Z=0,Q=0;Z<J;Z+=6,Q+=4)$[Z+0]=Q+0,$[Z+1]=Q+1,$[Z+2]=Q+2,$[Z+3]=Q+0,$[Z+4]=Q+2,$[Z+5]=Q+3;return $}function T_(_){if(_.BYTES_PER_ELEMENT===4)return _ instanceof Float32Array?"Float32Array":_ instanceof Uint32Array?"Uint32Array":"Int32Array";if(_.BYTES_PER_ELEMENT===2){if(_ instanceof Uint16Array)return"Uint16Array"}else if(_.BYTES_PER_ELEMENT===1&&_ instanceof Uint8Array)return"Uint8Array";return null}var X2={Float32Array,Uint32Array,Int32Array,Uint8Array};function g$(_,$){let J=0,Z=0,Q={};for(let H=0;H<_.length;H++)Z+=$[H],J+=_[H].length;let q=new ArrayBuffer(J*4),K=null,V=0;for(let H=0;H<_.length;H++){let w=$[H],h=_[H],z=T_(h);Q[z]||(Q[z]=new X2[z](q)),K=Q[z];for(let X=0;X<h.length;X++){let W=(X/w|0)*Z+V,G=X%w;K[W+G]=h[X]}V+=w}return new Float32Array(q)}function d_(_){return _+=_===0?1:0,--_,_|=_>>>1,_|=_>>>2,_|=_>>>4,_|=_>>>8,_|=_>>>16,_+1}function b5(_){return!(_&_-1)&&!!_}function B5(_){let $=(_>65535?1:0)<<4;_>>>=$;let J=(_>255?1:0)<<3;return _>>>=J,$|=J,J=(_>15?1:0)<<2,_>>>=J,$|=J,J=(_>3?1:0)<<1,_>>>=J,$|=J,$|_>>1}function E6(_,$,J){let Z=_.length,Q;if($>=Z||J===0)return;J=$+J>Z?Z-$:J;let q=Z-J;for(Q=$;Q<q;++Q)_[Q]=_[Q+J];_.length=q}function p$(_){return _===0?0:_<0?-1:1}var G2=0;function W_(){return++G2}var f9=class{constructor(_,$,J,Z){this.left=_,this.top=$,this.right=J,this.bottom=Z}get width(){return this.right-this.left}get height(){return this.bottom-this.top}isEmpty(){return this.left===this.right||this.top===this.bottom}};f9.EMPTY=new f9(0,0,0,0);var F5=f9;var O5={},U0=Object.create(null),E0=Object.create(null);function x$(){let _;for(_ in U0)U0[_].destroy();for(_ in E0)E0[_].destroy()}function m$(){let _;for(_ in U0)delete U0[_];for(_ in E0)delete E0[_]}class E9{constructor(_,$,J){this._canvas=B.ADAPTER.createCanvas(),this._context=this._canvas.getContext("2d"),this.resolution=J||B.RESOLUTION,this.resize(_,$)}clear(){this._checkDestroyed(),this._context.setTransform(1,0,0,1,0,0),this._context.clearRect(0,0,this._canvas.width,this._canvas.height)}resize(_,$){this._checkDestroyed(),this._canvas.width=Math.round(_*this.resolution),this._canvas.height=Math.round($*this.resolution)}destroy(){this._context=null,this._canvas=null}get width(){return this._checkDestroyed(),this._canvas.width}set width(_){this._checkDestroyed(),this._canvas.width=Math.round(_)}get height(){return this._checkDestroyed(),this._canvas.height}set height(_){this._checkDestroyed(),this._canvas.height=Math.round(_)}get canvas(){return this._checkDestroyed(),this._canvas}get context(){return this._checkDestroyed(),this._context}_checkDestroyed(){if(this._canvas===null)throw TypeError("The CanvasRenderTarget has already been destroyed")}}function u$(_,$,J){for(let Z=0,Q=4*J*$;Z<$;++Z,Q+=4)if(_[Q+3]!==0)return!1;return!0}function n$(_,$,J,Z,Q){let q=4*$;for(let K=Z,V=Z*q+4*J;K<=Q;++K,V+=q)if(_[V+3]!==0)return!1;return!0}function v6(_){let{width:$,height:J}=_,Z=_.getContext("2d",{willReadFrequently:!0});if(Z===null)throw TypeError("Failed to get canvas 2D context");let Q=Z.getImageData(0,0,$,J).data,q=0,K=0,V=$-1,H=J-1;for(;K<J&&u$(Q,$,K);)++K;if(K===J)return F5.EMPTY;for(;u$(Q,$,H);)--H;for(;n$(Q,$,q,K,H);)++q;for(;n$(Q,$,V,K,H);)--V;return++V,++H,new F5(q,K,V,H)}function l$(_){let $=v6(_),{width:J,height:Z}=$,Q=null;if(!$.isEmpty()){let q=_.getContext("2d");if(q===null)throw TypeError("Failed to get canvas 2D context");Q=q.getImageData($.left,$.top,J,Z)}return{width:J,height:Z,data:Q}}function o$(_){let $=f6.exec(_);if($)return{mediaType:$[1]?$[1].toLowerCase():void 0,subType:$[2]?$[2].toLowerCase():void 0,charset:$[3]?$[3].toLowerCase():void 0,encoding:$[4]?$[4].toLowerCase():void 0,data:$[5]}}function c6(_,$=globalThis.location){if(_.startsWith("data:"))return"";$=$||globalThis.location;let J=new URL(_,document.baseURI);return J.hostname!==$.hostname||J.port!==$.port||J.protocol!==$.protocol?"anonymous":""}function j5(_,$=1){let J=B.RETINA_PREFIX?.exec(_);return J?parseFloat(J[1]):$}var b=((_)=>(_.Renderer="renderer",_.Application="application",_.RendererSystem="renderer-webgl-system",_.RendererPlugin="renderer-webgl-plugin",_.CanvasRendererSystem="renderer-canvas-system",_.CanvasRendererPlugin="renderer-canvas-plugin",_.Asset="asset",_.LoadParser="load-parser",_.ResolveParser="resolve-parser",_.CacheParser="cache-parser",_.DetectionParser="detection-parser",_))(b||{}),v9=(_)=>{if(typeof _=="function"||typeof _=="object"&&_.extension){if(!_.extension)throw Error("Extension class must have an extension object");_={...typeof _.extension!="object"?{type:_.extension}:_.extension,ref:_}}if(typeof _=="object")_={..._};else throw Error("Invalid extension type");return typeof _.type=="string"&&(_.type=[_.type]),_},i$=(_,$)=>v9(_).priority??$,O={_addHandlers:{},_removeHandlers:{},_queue:{},remove(..._){return _.map(v9).forEach(($)=>{$.type.forEach((J)=>this._removeHandlers[J]?.($))}),this},add(..._){return _.map(v9).forEach(($)=>{$.type.forEach((J)=>{let Z=this._addHandlers,Q=this._queue;Z[J]?Z[J]?.($):(Q[J]=Q[J]||[],Q[J]?.push($))})}),this},handle(_,$,J){let Z=this._addHandlers,Q=this._removeHandlers;if(Z[_]||Q[_])throw Error(`Extension type ${_} already has a handler`);Z[_]=$,Q[_]=J;let q=this._queue;return q[_]&&(q[_]?.forEach((K)=>$(K)),delete q[_]),this},handleByMap(_,$){return this.handle(_,(J)=>{J.name&&($[J.name]=J.ref)},(J)=>{J.name&&delete $[J.name]})},handleByList(_,$,J=-1){return this.handle(_,(Z)=>{$.includes(Z.ref)||($.push(Z.ref),$.sort((Q,q)=>i$(q,J)-i$(Q,J)))},(Z)=>{let Q=$.indexOf(Z.ref);Q!==-1&&$.splice(Q,1)})}};class q1{constructor(_){typeof _=="number"?this.rawBinaryData=new ArrayBuffer(_):_ instanceof Uint8Array?this.rawBinaryData=_.buffer:this.rawBinaryData=_,this.uint32View=new Uint32Array(this.rawBinaryData),this.float32View=new Float32Array(this.rawBinaryData)}get int8View(){return this._int8View||(this._int8View=new Int8Array(this.rawBinaryData)),this._int8View}get uint8View(){return this._uint8View||(this._uint8View=new Uint8Array(this.rawBinaryData)),this._uint8View}get int16View(){return this._int16View||(this._int16View=new Int16Array(this.rawBinaryData)),this._int16View}get uint16View(){return this._uint16View||(this._uint16View=new Uint16Array(this.rawBinaryData)),this._uint16View}get int32View(){return this._int32View||(this._int32View=new Int32Array(this.rawBinaryData)),this._int32View}view(_){return this[`${_}View`]}destroy(){this.rawBinaryData=null,this._int8View=null,this._uint8View=null,this._int16View=null,this._uint16View=null,this._int32View=null,this.uint32View=null,this.float32View=null}static sizeOf(_){switch(_){case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;default:throw Error(`${_} isn't a valid view type`)}}}var W2=["precision mediump float;","void main(void){","float test = 0.1;","%forloop%","gl_FragColor = vec4(0.0);","}"].join(`
8
+ `);function k2(_){let $="";for(let J=0;J<_;++J)J>0&&($+=`
9
+ else `),J<_-1&&($+=`if(test == ${J}.0){}`);return $}function y6(_,$){if(_===0)throw Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");let J=$.createShader($.FRAGMENT_SHADER);for(;;){let Z=W2.replace(/%forloop%/gi,k2(_));if($.shaderSource(J,Z),$.compileShader(J),!$.getShaderParameter(J,$.COMPILE_STATUS))_=_/2|0;else break}return _}var c9=0,y9=1,S9=2,T9=3,d9=4,g9=5;class I0{constructor(){this.data=0,this.blendMode=d.NORMAL,this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<c9)}set blend(_){!!(this.data&1<<c9)!==_&&(this.data^=1<<c9)}get offsets(){return!!(this.data&1<<y9)}set offsets(_){!!(this.data&1<<y9)!==_&&(this.data^=1<<y9)}get culling(){return!!(this.data&1<<S9)}set culling(_){!!(this.data&1<<S9)!==_&&(this.data^=1<<S9)}get depthTest(){return!!(this.data&1<<T9)}set depthTest(_){!!(this.data&1<<T9)!==_&&(this.data^=1<<T9)}get depthMask(){return!!(this.data&1<<g9)}set depthMask(_){!!(this.data&1<<g9)!==_&&(this.data^=1<<g9)}get clockwiseFrontFace(){return!!(this.data&1<<d9)}set clockwiseFrontFace(_){!!(this.data&1<<d9)!==_&&(this.data^=1<<d9)}get blendMode(){return this._blendMode}set blendMode(_){this.blend=_!==d.NONE,this._blendMode=_}get polygonOffset(){return this._polygonOffset}set polygonOffset(_){this.offsets=!!_,this._polygonOffset=_}static for2d(){let _=new I0;return _.depthTest=!1,_.blend=!0,_}}I0.prototype.toString=function(){return`[@pixi/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`};var L5=[];function v1(_,$){if(!_)return null;let J="";if(typeof _=="string"){let Z=/\.(\w{3,4})(?:$|\?|#)/i.exec(_);Z&&(J=Z[1].toLowerCase())}for(let Z=L5.length-1;Z>=0;--Z){let Q=L5[Z];if(Q.test&&Q.test(_,J))return new Q(_,$)}throw Error("Unrecognized source type to auto-detect Resource")}class W0{constructor(_){this.items=[],this._name=_,this._aliasCount=0}emit(_,$,J,Z,Q,q,K,V){if(arguments.length>8)throw Error("max arguments reached");let{name:H,items:w}=this;this._aliasCount++;for(let h=0,z=w.length;h<z;h++)w[h][H](_,$,J,Z,Q,q,K,V);return w===this.items&&this._aliasCount--,this}ensureNonAliasedItems(){this._aliasCount>0&&this.items.length>1&&(this._aliasCount=0,this.items=this.items.slice(0))}add(_){return _[this._name]&&(this.ensureNonAliasedItems(),this.remove(_),this.items.push(_)),this}remove(_){let $=this.items.indexOf(_);return $!==-1&&(this.ensureNonAliasedItems(),this.items.splice($,1)),this}contains(_){return this.items.includes(_)}removeAll(){return this.ensureNonAliasedItems(),this.items.length=0,this}destroy(){this.removeAll(),this.items.length=0,this._name=""}get empty(){return this.items.length===0}get name(){return this._name}}Object.defineProperties(W0.prototype,{dispatch:{value:W0.prototype.emit},run:{value:W0.prototype.emit}});class i0{constructor(_=0,$=0){this._width=_,this._height=$,this.destroyed=!1,this.internal=!1,this.onResize=new W0("setRealSize"),this.onUpdate=new W0("update"),this.onError=new W0("onError")}bind(_){this.onResize.add(_),this.onUpdate.add(_),this.onError.add(_),(this._width||this._height)&&this.onResize.emit(this._width,this._height)}unbind(_){this.onResize.remove(_),this.onUpdate.remove(_),this.onError.remove(_)}resize(_,$){(_!==this._width||$!==this._height)&&(this._width=_,this._height=$,this.onResize.emit(_,$))}get valid(){return!!this._width&&!!this._height}update(){this.destroyed||this.onUpdate.emit()}load(){return Promise.resolve(this)}get width(){return this._width}get height(){return this._height}style(_,$,J){return!1}dispose(){}destroy(){this.destroyed||(this.destroyed=!0,this.dispose(),this.onError.removeAll(),this.onError=null,this.onResize.removeAll(),this.onResize=null,this.onUpdate.removeAll(),this.onUpdate=null)}static test(_,$){return!1}}class k_ extends i0{constructor(_,$){let{width:J,height:Z}=$||{};if(!J||!Z)throw Error("BufferResource width or height invalid");super(J,Z),this.data=_,this.unpackAlignment=$.unpackAlignment??4}upload(_,$,J){let Z=_.gl;Z.pixelStorei(Z.UNPACK_ALIGNMENT,this.unpackAlignment),Z.pixelStorei(Z.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$.alphaMode===K0.UNPACK);let{realWidth:Q,realHeight:q}=$;return J.width===Q&&J.height===q?Z.texSubImage2D($.target,0,0,0,Q,q,$.format,J.type,this.data):(J.width=Q,J.height=q,Z.texImage2D($.target,0,J.internalFormat,Q,q,0,$.format,J.type,this.data)),!0}dispose(){this.data=null}static test(_){return _===null||_ instanceof Int8Array||_ instanceof Uint8Array||_ instanceof Uint8ClampedArray||_ instanceof Int16Array||_ instanceof Uint16Array||_ instanceof Int32Array||_ instanceof Uint32Array||_ instanceof Float32Array}}var C2={scaleMode:y0.NEAREST,alphaMode:K0.NPM},p9=class _ extends g_.default{constructor($=null,J=null){super(),J=Object.assign({},_.defaultOptions,J);let{alphaMode:Z,mipmap:Q,anisotropicLevel:q,scaleMode:K,width:V,height:H,wrapMode:w,format:h,type:z,target:X,resolution:W,resourceOptions:G}=J;$&&!($ instanceof i0)&&($=v1($,G),$.internal=!0),this.resolution=W||B.RESOLUTION,this.width=Math.round((V||0)*this.resolution)/this.resolution,this.height=Math.round((H||0)*this.resolution)/this.resolution,this._mipmap=Q,this.anisotropicLevel=q,this._wrapMode=w,this._scaleMode=K,this.format=h,this.type=z,this.target=X,this.alphaMode=Z,this.uid=W_(),this.touched=0,this.isPowerOfTwo=!1,this._refreshPOT(),this._glTextures={},this.dirtyId=0,this.dirtyStyleId=0,this.cacheId=null,this.valid=V>0&&H>0,this.textureCacheIds=[],this.destroyed=!1,this.resource=null,this._batchEnabled=0,this._batchLocation=0,this.parentTextureArray=null,this.setResource($)}get realWidth(){return Math.round(this.width*this.resolution)}get realHeight(){return Math.round(this.height*this.resolution)}get mipmap(){return this._mipmap}set mipmap($){this._mipmap!==$&&(this._mipmap=$,this.dirtyStyleId++)}get scaleMode(){return this._scaleMode}set scaleMode($){this._scaleMode!==$&&(this._scaleMode=$,this.dirtyStyleId++)}get wrapMode(){return this._wrapMode}set wrapMode($){this._wrapMode!==$&&(this._wrapMode=$,this.dirtyStyleId++)}setStyle($,J){let Z;return $!==void 0&&$!==this.scaleMode&&(this.scaleMode=$,Z=!0),J!==void 0&&J!==this.mipmap&&(this.mipmap=J,Z=!0),Z&&this.dirtyStyleId++,this}setSize($,J,Z){return Z=Z||this.resolution,this.setRealSize($*Z,J*Z,Z)}setRealSize($,J,Z){return this.resolution=Z||this.resolution,this.width=Math.round($)/this.resolution,this.height=Math.round(J)/this.resolution,this._refreshPOT(),this.update(),this}_refreshPOT(){this.isPowerOfTwo=b5(this.realWidth)&&b5(this.realHeight)}setResolution($){let J=this.resolution;return J===$?this:(this.resolution=$,this.valid&&(this.width=Math.round(this.width*J)/$,this.height=Math.round(this.height*J)/$,this.emit("update",this)),this._refreshPOT(),this)}setResource($){if(this.resource===$)return this;if(this.resource)throw Error("Resource can be set only once");return $.bind(this),this.resource=$,this}update(){this.valid?(this.dirtyId++,this.dirtyStyleId++,this.emit("update",this)):this.width>0&&this.height>0&&(this.valid=!0,this.emit("loaded",this),this.emit("update",this))}onError($){this.emit("error",this,$)}destroy(){this.resource&&(this.resource.unbind(this),this.resource.internal&&this.resource.destroy(),this.resource=null),this.cacheId&&(delete E0[this.cacheId],delete U0[this.cacheId],this.cacheId=null),this.valid=!1,this.dispose(),_.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}dispose(){this.emit("dispose",this)}castToBaseTexture(){return this}static from($,J,Z=B.STRICT_TEXTURE_CACHE){let Q=typeof $=="string",q=null;if(Q)q=$;else{if(!$._pixiId){let V=J?.pixiIdPrefix||"pixiid";$._pixiId=`${V}_${W_()}`}q=$._pixiId}let K=E0[q];if(Q&&Z&&!K)throw Error(`The cacheId "${q}" does not exist in BaseTextureCache.`);return K||(K=new _($,J),K.cacheId=q,_.addToCache(K,q)),K}static fromBuffer($,J,Z,Q){$=$||new Float32Array(J*Z*4);let q=new k_($,{width:J,height:Z,...Q?.resourceOptions}),K,V;return $ instanceof Float32Array?(K=R.RGBA,V=g.FLOAT):$ instanceof Int32Array?(K=R.RGBA_INTEGER,V=g.INT):$ instanceof Uint32Array?(K=R.RGBA_INTEGER,V=g.UNSIGNED_INT):$ instanceof Int16Array?(K=R.RGBA_INTEGER,V=g.SHORT):$ instanceof Uint16Array?(K=R.RGBA_INTEGER,V=g.UNSIGNED_SHORT):$ instanceof Int8Array?(K=R.RGBA,V=g.BYTE):(K=R.RGBA,V=g.UNSIGNED_BYTE),q.internal=!0,new _(q,Object.assign({},C2,{type:V,format:K},Q))}static addToCache($,J){J&&($.textureCacheIds.includes(J)||$.textureCacheIds.push(J),E0[J]&&E0[J]!==$&&console.warn(`BaseTexture added to the cache with an id [${J}] that already had an entry`),E0[J]=$)}static removeFromCache($){if(typeof $=="string"){let J=E0[$];if(J){let Z=J.textureCacheIds.indexOf($);return Z>-1&&J.textureCacheIds.splice(Z,1),delete E0[$],J}}else if($?.textureCacheIds){for(let J=0;J<$.textureCacheIds.length;++J)delete E0[$.textureCacheIds[J]];return $.textureCacheIds.length=0,$}return null}};p9.defaultOptions={mipmap:F0.POW2,anisotropicLevel:0,scaleMode:y0.LINEAR,wrapMode:x0.CLAMP,alphaMode:K0.UNPACK,target:A_.TEXTURE_2D,format:R.RGBA,type:g.UNSIGNED_BYTE},p9._globalBatch=0;var p=p9;class K1{constructor(){this.texArray=null,this.blend=0,this.type=c0.TRIANGLES,this.start=0,this.size=0,this.data=null}}var N2=0;class _0{constructor(_,$=!0,J=!1){this.data=_||new Float32Array(1),this._glBuffers={},this._updateID=0,this.index=J,this.static=$,this.id=N2++,this.disposeRunner=new W0("disposeBuffer")}update(_){_ instanceof Array&&(_=new Float32Array(_)),this.data=_||this.data,this._updateID++}dispose(){this.disposeRunner.emit(this,!1)}destroy(){this.dispose(),this.data=null}set index(_){this.type=_?S0.ELEMENT_ARRAY_BUFFER:S0.ARRAY_BUFFER}get index(){return this.type===S0.ELEMENT_ARRAY_BUFFER}static from(_){return _ instanceof Array&&(_=new Float32Array(_)),new _0(_)}}class c1{constructor(_,$=0,J=!1,Z=g.FLOAT,Q,q,K,V=1){this.buffer=_,this.size=$,this.normalized=J,this.type=Z,this.stride=Q,this.start=q,this.instance=K,this.divisor=V}destroy(){this.buffer=null}static from(_,$,J,Z,Q){return new c1(_,$,J,Z,Q)}}var Y2={Float32Array,Uint32Array,Int32Array,Uint8Array};function a$(_,$){let J=0,Z=0,Q={};for(let H=0;H<_.length;H++)Z+=$[H],J+=_[H].length;let q=new ArrayBuffer(J*4),K=null,V=0;for(let H=0;H<_.length;H++){let w=$[H],h=_[H],z=T_(h);Q[z]||(Q[z]=new Y2[z](q)),K=Q[z];for(let X=0;X<h.length;X++){let W=(X/w|0)*Z+V,G=X%w;K[W+G]=h[X]}V+=w}return new Float32Array(q)}var r$={5126:4,5123:2,5121:1},U2=0,I2={Float32Array,Uint32Array,Int32Array,Uint8Array,Uint16Array};class T0{constructor(_=[],$={}){this.buffers=_,this.indexBuffer=null,this.attributes=$,this.glVertexArrayObjects={},this.id=U2++,this.instanced=!1,this.instanceCount=1,this.disposeRunner=new W0("disposeGeometry"),this.refCount=0}addAttribute(_,$,J=0,Z=!1,Q,q,K,V=!1){if(!$)throw Error("You must pass a buffer when creating an attribute");$ instanceof _0||($ instanceof Array&&($=new Float32Array($)),$=new _0($));let H=_.split("|");if(H.length>1){for(let h=0;h<H.length;h++)this.addAttribute(H[h],$,J,Z,Q);return this}let w=this.buffers.indexOf($);return w===-1&&(this.buffers.push($),w=this.buffers.length-1),this.attributes[_]=new c1(w,J,Z,Q,q,K,V),this.instanced=this.instanced||V,this}getAttribute(_){return this.attributes[_]}getBuffer(_){return this.buffers[this.getAttribute(_).buffer]}addIndex(_){return _ instanceof _0||(_ instanceof Array&&(_=new Uint16Array(_)),_=new _0(_)),_.type=S0.ELEMENT_ARRAY_BUFFER,this.indexBuffer=_,this.buffers.includes(_)||this.buffers.push(_),this}getIndex(){return this.indexBuffer}interleave(){if(this.buffers.length===1||this.buffers.length===2&&this.indexBuffer)return this;let _=[],$=[],J=new _0,Z;for(Z in this.attributes){let Q=this.attributes[Z],q=this.buffers[Q.buffer];_.push(q.data),$.push(Q.size*r$[Q.type]/4),Q.buffer=0}for(J.data=a$(_,$),Z=0;Z<this.buffers.length;Z++)this.buffers[Z]!==this.indexBuffer&&this.buffers[Z].destroy();return this.buffers=[J],this.indexBuffer&&this.buffers.push(this.indexBuffer),this}getSize(){for(let _ in this.attributes){let $=this.attributes[_];return this.buffers[$.buffer].data.length/($.stride/4||$.size)}return 0}dispose(){this.disposeRunner.emit(this,!1)}destroy(){this.dispose(),this.buffers=null,this.indexBuffer=null,this.attributes=null}clone(){let _=new T0;for(let $=0;$<this.buffers.length;$++)_.buffers[$]=new _0(this.buffers[$].data.slice(0));for(let $ in this.attributes){let J=this.attributes[$];_.attributes[$]=new c1(J.buffer,J.size,J.normalized,J.type,J.stride,J.start,J.instance)}return this.indexBuffer&&(_.indexBuffer=_.buffers[this.buffers.indexOf(this.indexBuffer)],_.indexBuffer.type=S0.ELEMENT_ARRAY_BUFFER),_}static merge(_){let $=new T0,J=[],Z=[],Q=[],q;for(let K=0;K<_.length;K++){q=_[K];for(let V=0;V<q.buffers.length;V++)Z[V]=Z[V]||0,Z[V]+=q.buffers[V].data.length,Q[V]=0}for(let K=0;K<q.buffers.length;K++)J[K]=new I2[T_(q.buffers[K].data)](Z[K]),$.buffers[K]=new _0(J[K]);for(let K=0;K<_.length;K++){q=_[K];for(let V=0;V<q.buffers.length;V++)J[V].set(q.buffers[V].data,Q[V]),Q[V]+=q.buffers[V].data.length}if($.attributes=q.attributes,q.indexBuffer){$.indexBuffer=$.buffers[q.buffers.indexOf(q.indexBuffer)],$.indexBuffer.type=S0.ELEMENT_ARRAY_BUFFER;let K=0,V=0,H=0,w=0;for(let h=0;h<q.buffers.length;h++)if(q.buffers[h]!==q.indexBuffer){w=h;break}for(let h in q.attributes){let z=q.attributes[h];(z.buffer|0)===w&&(V+=z.size*r$[z.type]/4)}for(let h=0;h<_.length;h++){let z=_[h].indexBuffer.data;for(let X=0;X<z.length;X++)$.indexBuffer.data[X+H]+=K;K+=_[h].buffers[w].data.length/V,H+=z.length}}return $}}class y1 extends T0{constructor(_=!1){super(),this._buffer=new _0(null,_,!1),this._indexBuffer=new _0(null,_,!0),this.addAttribute("aVertexPosition",this._buffer,2,!1,g.FLOAT).addAttribute("aTextureCoord",this._buffer,2,!1,g.FLOAT).addAttribute("aColor",this._buffer,4,!0,g.UNSIGNED_BYTE).addAttribute("aTextureId",this._buffer,1,!0,g.FLOAT).addIndex(this._indexBuffer)}}var p_=Math.PI*2,x9=180/Math.PI,m9=Math.PI/180,$0=((_)=>(_[_.POLY=0]="POLY",_[_.RECT=1]="RECT",_[_.CIRC=2]="CIRC",_[_.ELIP=3]="ELIP",_[_.RREC=4]="RREC",_))($0||{});class u{constructor(_=0,$=0){this.x=0,this.y=0,this.x=_,this.y=$}clone(){return new u(this.x,this.y)}copyFrom(_){return this.set(_.x,_.y),this}copyTo(_){return _.set(this.x,this.y),_}equals(_){return _.x===this.x&&_.y===this.y}set(_=0,$=_){return this.x=_,this.y=$,this}}u.prototype.toString=function(){return`[@pixi/math:Point x=${this.x} y=${this.y}]`};var S6=[new u,new u,new u,new u];class x{constructor(_=0,$=0,J=0,Z=0){this.x=Number(_),this.y=Number($),this.width=Number(J),this.height=Number(Z),this.type=$0.RECT}get left(){return this.x}get right(){return this.x+this.width}get top(){return this.y}get bottom(){return this.y+this.height}static get EMPTY(){return new x(0,0,0,0)}clone(){return new x(this.x,this.y,this.width,this.height)}copyFrom(_){return this.x=_.x,this.y=_.y,this.width=_.width,this.height=_.height,this}copyTo(_){return _.x=this.x,_.y=this.y,_.width=this.width,_.height=this.height,_}contains(_,$){return this.width<=0||this.height<=0?!1:_>=this.x&&_<this.x+this.width&&$>=this.y&&$<this.y+this.height}intersects(_,$){if(!$){let D=this.x<_.x?_.x:this.x;if((this.right>_.right?_.right:this.right)<=D)return!1;let L=this.y<_.y?_.y:this.y;return(this.bottom>_.bottom?_.bottom:this.bottom)>L}let J=this.left,Z=this.right,Q=this.top,q=this.bottom;if(Z<=J||q<=Q)return!1;let K=S6[0].set(_.left,_.top),V=S6[1].set(_.left,_.bottom),H=S6[2].set(_.right,_.top),w=S6[3].set(_.right,_.bottom);if(H.x<=K.x||V.y<=K.y)return!1;let h=Math.sign($.a*$.d-$.b*$.c);if(h===0||($.apply(K,K),$.apply(V,V),$.apply(H,H),$.apply(w,w),Math.max(K.x,V.x,H.x,w.x)<=J||Math.min(K.x,V.x,H.x,w.x)>=Z||Math.max(K.y,V.y,H.y,w.y)<=Q||Math.min(K.y,V.y,H.y,w.y)>=q))return!1;let z=h*(V.y-K.y),X=h*(K.x-V.x),W=z*J+X*Q,G=z*Z+X*Q,k=z*J+X*q,C=z*Z+X*q;if(Math.max(W,G,k,C)<=z*K.x+X*K.y||Math.min(W,G,k,C)>=z*w.x+X*w.y)return!1;let Y=h*(K.y-H.y),U=h*(H.x-K.x),N=Y*J+U*Q,I=Y*Z+U*Q,f=Y*J+U*q,y=Y*Z+U*q;return!(Math.max(N,I,f,y)<=Y*K.x+U*K.y||Math.min(N,I,f,y)>=Y*w.x+U*w.y)}pad(_=0,$=_){return this.x-=_,this.y-=$,this.width+=_*2,this.height+=$*2,this}fit(_){let $=Math.max(this.x,_.x),J=Math.min(this.x+this.width,_.x+_.width),Z=Math.max(this.y,_.y),Q=Math.min(this.y+this.height,_.y+_.height);return this.x=$,this.width=Math.max(J-$,0),this.y=Z,this.height=Math.max(Q-Z,0),this}ceil(_=1,$=0.001){let J=Math.ceil((this.x+this.width-$)*_)/_,Z=Math.ceil((this.y+this.height-$)*_)/_;return this.x=Math.floor((this.x+$)*_)/_,this.y=Math.floor((this.y+$)*_)/_,this.width=J-this.x,this.height=Z-this.y,this}enlarge(_){let $=Math.min(this.x,_.x),J=Math.max(this.x+this.width,_.x+_.width),Z=Math.min(this.y,_.y),Q=Math.max(this.y+this.height,_.y+_.height);return this.x=$,this.width=J-$,this.y=Z,this.height=Q-Z,this}}x.prototype.toString=function(){return`[@pixi/math:Rectangle x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class S1{constructor(_=0,$=0,J=0){this.x=_,this.y=$,this.radius=J,this.type=$0.CIRC}clone(){return new S1(this.x,this.y,this.radius)}contains(_,$){if(this.radius<=0)return!1;let J=this.radius*this.radius,Z=this.x-_,Q=this.y-$;return Z*=Z,Q*=Q,Z+Q<=J}getBounds(){return new x(this.x-this.radius,this.y-this.radius,this.radius*2,this.radius*2)}}S1.prototype.toString=function(){return`[@pixi/math:Circle x=${this.x} y=${this.y} radius=${this.radius}]`};class T1{constructor(_=0,$=0,J=0,Z=0){this.x=_,this.y=$,this.width=J,this.height=Z,this.type=$0.ELIP}clone(){return new T1(this.x,this.y,this.width,this.height)}contains(_,$){if(this.width<=0||this.height<=0)return!1;let J=(_-this.x)/this.width,Z=($-this.y)/this.height;return J*=J,Z*=Z,J+Z<=1}getBounds(){return new x(this.x-this.width,this.y-this.height,this.width,this.height)}}T1.prototype.toString=function(){return`[@pixi/math:Ellipse x=${this.x} y=${this.y} width=${this.width} height=${this.height}]`};class C_{constructor(..._){let $=Array.isArray(_[0])?_[0]:_;if(typeof $[0]!="number"){let J=[];for(let Z=0,Q=$.length;Z<Q;Z++)J.push($[Z].x,$[Z].y);$=J}this.points=$,this.type=$0.POLY,this.closeStroke=!0}clone(){let _=this.points.slice(),$=new C_(_);return $.closeStroke=this.closeStroke,$}contains(_,$){let J=!1,Z=this.points.length/2;for(let Q=0,q=Z-1;Q<Z;q=Q++){let K=this.points[Q*2],V=this.points[Q*2+1],H=this.points[q*2],w=this.points[q*2+1];V>$!=w>$&&_<(H-K)*(($-V)/(w-V))+K&&(J=!J)}return J}}C_.prototype.toString=function(){return`[@pixi/math:PolygoncloseStroke=${this.closeStroke}points=${this.points.reduce((_,$)=>`${_}, ${$}`,"")}]`};class d1{constructor(_=0,$=0,J=0,Z=0,Q=20){this.x=_,this.y=$,this.width=J,this.height=Z,this.radius=Q,this.type=$0.RREC}clone(){return new d1(this.x,this.y,this.width,this.height,this.radius)}contains(_,$){if(this.width<=0||this.height<=0)return!1;if(_>=this.x&&_<=this.x+this.width&&$>=this.y&&$<=this.y+this.height){let J=Math.max(0,Math.min(this.radius,Math.min(this.width,this.height)/2));if($>=this.y+J&&$<=this.y+this.height-J||_>=this.x+J&&_<=this.x+this.width-J)return!0;let Z=_-(this.x+J),Q=$-(this.y+J),q=J*J;if(Z*Z+Q*Q<=q||(Z=_-(this.x+this.width-J),Z*Z+Q*Q<=q)||(Q=$-(this.y+this.height-J),Z*Z+Q*Q<=q)||(Z=_-(this.x+J),Z*Z+Q*Q<=q))return!0}return!1}}d1.prototype.toString=function(){return`[@pixi/math:RoundedRectangle x=${this.x} y=${this.y}width=${this.width} height=${this.height} radius=${this.radius}]`};class o{constructor(_=1,$=0,J=0,Z=1,Q=0,q=0){this.array=null,this.a=_,this.b=$,this.c=J,this.d=Z,this.tx=Q,this.ty=q}fromArray(_){this.a=_[0],this.b=_[1],this.c=_[3],this.d=_[4],this.tx=_[2],this.ty=_[5]}set(_,$,J,Z,Q,q){return this.a=_,this.b=$,this.c=J,this.d=Z,this.tx=Q,this.ty=q,this}toArray(_,$){this.array||(this.array=new Float32Array(9));let J=$||this.array;return _?(J[0]=this.a,J[1]=this.b,J[2]=0,J[3]=this.c,J[4]=this.d,J[5]=0,J[6]=this.tx,J[7]=this.ty,J[8]=1):(J[0]=this.a,J[1]=this.c,J[2]=this.tx,J[3]=this.b,J[4]=this.d,J[5]=this.ty,J[6]=0,J[7]=0,J[8]=1),J}apply(_,$){$=$||new u;let{x:J,y:Z}=_;return $.x=this.a*J+this.c*Z+this.tx,$.y=this.b*J+this.d*Z+this.ty,$}applyInverse(_,$){$=$||new u;let J=1/(this.a*this.d+this.c*-this.b),Z=_.x,Q=_.y;return $.x=this.d*J*Z+-this.c*J*Q+(this.ty*this.c-this.tx*this.d)*J,$.y=this.a*J*Q+-this.b*J*Z+(-this.ty*this.a+this.tx*this.b)*J,$}translate(_,$){return this.tx+=_,this.ty+=$,this}scale(_,$){return this.a*=_,this.d*=$,this.c*=_,this.b*=$,this.tx*=_,this.ty*=$,this}rotate(_){let $=Math.cos(_),J=Math.sin(_),Z=this.a,Q=this.c,q=this.tx;return this.a=Z*$-this.b*J,this.b=Z*J+this.b*$,this.c=Q*$-this.d*J,this.d=Q*J+this.d*$,this.tx=q*$-this.ty*J,this.ty=q*J+this.ty*$,this}append(_){let $=this.a,J=this.b,Z=this.c,Q=this.d;return this.a=_.a*$+_.b*Z,this.b=_.a*J+_.b*Q,this.c=_.c*$+_.d*Z,this.d=_.c*J+_.d*Q,this.tx=_.tx*$+_.ty*Z+this.tx,this.ty=_.tx*J+_.ty*Q+this.ty,this}setTransform(_,$,J,Z,Q,q,K,V,H){return this.a=Math.cos(K+H)*Q,this.b=Math.sin(K+H)*Q,this.c=-Math.sin(K-V)*q,this.d=Math.cos(K-V)*q,this.tx=_-(J*this.a+Z*this.c),this.ty=$-(J*this.b+Z*this.d),this}prepend(_){let $=this.tx;if(_.a!==1||_.b!==0||_.c!==0||_.d!==1){let J=this.a,Z=this.c;this.a=J*_.a+this.b*_.c,this.b=J*_.b+this.b*_.d,this.c=Z*_.a+this.d*_.c,this.d=Z*_.b+this.d*_.d}return this.tx=$*_.a+this.ty*_.c+_.tx,this.ty=$*_.b+this.ty*_.d+_.ty,this}decompose(_){let $=this.a,J=this.b,Z=this.c,Q=this.d,q=_.pivot,K=-Math.atan2(-Z,Q),V=Math.atan2(J,$),H=Math.abs(K+V);return H<0.00001||Math.abs(p_-H)<0.00001?(_.rotation=V,_.skew.x=_.skew.y=0):(_.rotation=0,_.skew.x=K,_.skew.y=V),_.scale.x=Math.sqrt($*$+J*J),_.scale.y=Math.sqrt(Z*Z+Q*Q),_.position.x=this.tx+(q.x*$+q.y*Z),_.position.y=this.ty+(q.x*J+q.y*Q),_}invert(){let _=this.a,$=this.b,J=this.c,Z=this.d,Q=this.tx,q=_*Z-$*J;return this.a=Z/q,this.b=-$/q,this.c=-J/q,this.d=_/q,this.tx=(J*this.ty-Z*Q)/q,this.ty=-(_*this.ty-$*Q)/q,this}identity(){return this.a=1,this.b=0,this.c=0,this.d=1,this.tx=0,this.ty=0,this}clone(){let _=new o;return _.a=this.a,_.b=this.b,_.c=this.c,_.d=this.d,_.tx=this.tx,_.ty=this.ty,_}copyTo(_){return _.a=this.a,_.b=this.b,_.c=this.c,_.d=this.d,_.tx=this.tx,_.ty=this.ty,_}copyFrom(_){return this.a=_.a,this.b=_.b,this.c=_.c,this.d=_.d,this.tx=_.tx,this.ty=_.ty,this}static get IDENTITY(){return new o}static get TEMP_MATRIX(){return new o}}o.prototype.toString=function(){return`[@pixi/math:Matrix a=${this.a} b=${this.b} c=${this.c} d=${this.d} tx=${this.tx} ty=${this.ty}]`};var V1=[1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1,0,1],H1=[0,1,1,1,0,-1,-1,-1,0,1,1,1,0,-1,-1,-1],w1=[0,-1,-1,-1,0,1,1,1,0,1,1,1,0,-1,-1,-1],h1=[1,1,0,-1,-1,-1,0,1,-1,-1,0,1,1,1,0,-1],u9=[],t$=[],T6=Math.sign;function b2(){for(let _=0;_<16;_++){let $=[];u9.push($);for(let J=0;J<16;J++){let Z=T6(V1[_]*V1[J]+w1[_]*H1[J]),Q=T6(H1[_]*V1[J]+h1[_]*H1[J]),q=T6(V1[_]*w1[J]+w1[_]*h1[J]),K=T6(H1[_]*w1[J]+h1[_]*h1[J]);for(let V=0;V<16;V++)if(V1[V]===Z&&H1[V]===Q&&w1[V]===q&&h1[V]===K){$.push(V);break}}}for(let _=0;_<16;_++){let $=new o;$.set(V1[_],H1[_],w1[_],h1[_],0,0),t$.push($)}}b2();var Q0={E:0,SE:1,S:2,SW:3,W:4,NW:5,N:6,NE:7,MIRROR_VERTICAL:8,MAIN_DIAGONAL:10,MIRROR_HORIZONTAL:12,REVERSE_DIAGONAL:14,uX:(_)=>V1[_],uY:(_)=>H1[_],vX:(_)=>w1[_],vY:(_)=>h1[_],inv:(_)=>_&8?_&15:-_&7,add:(_,$)=>u9[_][$],sub:(_,$)=>u9[_][Q0.inv($)],rotate180:(_)=>_^4,isVertical:(_)=>(_&3)===2,byDirection:(_,$)=>Math.abs(_)*2<=Math.abs($)?$>=0?Q0.S:Q0.N:Math.abs($)*2<=Math.abs(_)?_>0?Q0.E:Q0.W:$>0?_>0?Q0.SE:Q0.SW:_>0?Q0.NE:Q0.NW,matrixAppendRotationInv:(_,$,J=0,Z=0)=>{let Q=t$[Q0.inv($)];Q.tx=J,Q.ty=Z,_.append(Q)}};class u0{constructor(_,$,J=0,Z=0){this._x=J,this._y=Z,this.cb=_,this.scope=$}clone(_=this.cb,$=this.scope){return new u0(_,$,this._x,this._y)}set(_=0,$=_){return(this._x!==_||this._y!==$)&&(this._x=_,this._y=$,this.cb.call(this.scope)),this}copyFrom(_){return(this._x!==_.x||this._y!==_.y)&&(this._x=_.x,this._y=_.y,this.cb.call(this.scope)),this}copyTo(_){return _.set(this._x,this._y),_}equals(_){return _.x===this._x&&_.y===this._y}get x(){return this._x}set x(_){this._x!==_&&(this._x=_,this.cb.call(this.scope))}get y(){return this._y}set y(_){this._y!==_&&(this._y=_,this.cb.call(this.scope))}}u0.prototype.toString=function(){return`[@pixi/math:ObservablePoint x=${this.x} y=${this.y} scope=${this.scope}]`};var n9=class{constructor(){this.worldTransform=new o,this.localTransform=new o,this.position=new u0(this.onChange,this,0,0),this.scale=new u0(this.onChange,this,1,1),this.pivot=new u0(this.onChange,this,0,0),this.skew=new u0(this.updateSkew,this,0,0),this._rotation=0,this._cx=1,this._sx=0,this._cy=0,this._sy=1,this._localID=0,this._currentLocalID=0,this._worldID=0,this._parentID=0}onChange(){this._localID++}updateSkew(){this._cx=Math.cos(this._rotation+this.skew.y),this._sx=Math.sin(this._rotation+this.skew.y),this._cy=-Math.sin(this._rotation-this.skew.x),this._sy=Math.cos(this._rotation-this.skew.x),this._localID++}updateLocalTransform(){let _=this.localTransform;this._localID!==this._currentLocalID&&(_.a=this._cx*this.scale.x,_.b=this._sx*this.scale.x,_.c=this._cy*this.scale.y,_.d=this._sy*this.scale.y,_.tx=this.position.x-(this.pivot.x*_.a+this.pivot.y*_.c),_.ty=this.position.y-(this.pivot.x*_.b+this.pivot.y*_.d),this._currentLocalID=this._localID,this._parentID=-1)}updateTransform(_){let $=this.localTransform;if(this._localID!==this._currentLocalID&&($.a=this._cx*this.scale.x,$.b=this._sx*this.scale.x,$.c=this._cy*this.scale.y,$.d=this._sy*this.scale.y,$.tx=this.position.x-(this.pivot.x*$.a+this.pivot.y*$.c),$.ty=this.position.y-(this.pivot.x*$.b+this.pivot.y*$.d),this._currentLocalID=this._localID,this._parentID=-1),this._parentID!==_._worldID){let J=_.worldTransform,Z=this.worldTransform;Z.a=$.a*J.a+$.b*J.c,Z.b=$.a*J.b+$.b*J.d,Z.c=$.c*J.a+$.d*J.c,Z.d=$.c*J.b+$.d*J.d,Z.tx=$.tx*J.a+$.ty*J.c+J.tx,Z.ty=$.tx*J.b+$.ty*J.d+J.ty,this._parentID=_._worldID,this._worldID++}}setFromMatrix(_){_.decompose(this),this._localID++}get rotation(){return this._rotation}set rotation(_){this._rotation!==_&&(this._rotation=_,this.updateSkew())}};n9.IDENTITY=new n9;var z1=n9;z1.prototype.toString=function(){return`[@pixi/math:Transform position=(${this.position.x}, ${this.position.y}) rotation=${this.rotation} scale=(${this.scale.x}, ${this.scale.y}) skew=(${this.skew.x}, ${this.skew.y}) ]`};var e$=`varying vec2 vTextureCoord;
10
10
 
11
11
  uniform sampler2D uSampler;
12
12
 
13
13
  void main(void){
14
14
  gl_FragColor *= texture2D(uSampler, vTextureCoord);
15
- }`;var $J=`attribute vec2 aVertexPosition;
15
+ }`;var _J=`attribute vec2 aVertexPosition;
16
16
  attribute vec2 aTextureCoord;
17
17
 
18
18
  uniform mat3 projectionMatrix;
@@ -23,7 +23,7 @@ void main(void){
23
23
  gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
24
24
  vTextureCoord = aTextureCoord;
25
25
  }
26
- `;function d6(_,$,J){let Z=_.createShader($);return _.shaderSource(Z,J),_.compileShader(Z),Z}function n7(_){let $=Array(_);for(let J=0;J<$.length;J++)$[J]=!1;return $}function D5(_,$){switch(_){case"float":return 0;case"vec2":return new Float32Array(2*$);case"vec3":return new Float32Array(3*$);case"vec4":return new Float32Array(4*$);case"int":case"uint":case"sampler2D":case"sampler2DArray":return 0;case"ivec2":return new Int32Array(2*$);case"ivec3":return new Int32Array(3*$);case"ivec4":return new Int32Array(4*$);case"uvec2":return new Uint32Array(2*$);case"uvec3":return new Uint32Array(3*$);case"uvec4":return new Uint32Array(4*$);case"bool":return!1;case"bvec2":return n7(2*$);case"bvec3":return n7(3*$);case"bvec4":return n7(4*$);case"mat2":return new Float32Array([1,0,0,1]);case"mat3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var N_=[{test:(_)=>_.type==="float"&&_.size===1&&!_.isArray,code:(_)=>`
26
+ `;function d6(_,$,J){let Z=_.createShader($);return _.shaderSource(Z,J),_.compileShader(Z),Z}function l9(_){let $=Array(_);for(let J=0;J<$.length;J++)$[J]=!1;return $}function D5(_,$){switch(_){case"float":return 0;case"vec2":return new Float32Array(2*$);case"vec3":return new Float32Array(3*$);case"vec4":return new Float32Array(4*$);case"int":case"uint":case"sampler2D":case"sampler2DArray":return 0;case"ivec2":return new Int32Array(2*$);case"ivec3":return new Int32Array(3*$);case"ivec4":return new Int32Array(4*$);case"uvec2":return new Uint32Array(2*$);case"uvec3":return new Uint32Array(3*$);case"uvec4":return new Uint32Array(4*$);case"bool":return!1;case"bvec2":return l9(2*$);case"bvec3":return l9(3*$);case"bvec4":return l9(4*$);case"mat2":return new Float32Array([1,0,0,1]);case"mat3":return new Float32Array([1,0,0,0,1,0,0,0,1]);case"mat4":return new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}return null}var N_=[{test:(_)=>_.type==="float"&&_.size===1&&!_.isArray,code:(_)=>`
27
27
  if(uv["${_}"] !== ud["${_}"].value)
28
28
  {
29
29
  ud["${_}"].value = uv["${_}"]
@@ -143,7 +143,7 @@ void main(void){
143
143
  cv[3] = v[3];
144
144
 
145
145
  gl.uniform4f(ud["${_}"].location, v[0], v[1], v[2], v[3])
146
- }`}];var b2={float:`
146
+ }`}];var B2={float:`
147
147
  if (cv !== v)
148
148
  {
149
149
  cu.value = v;
@@ -279,7 +279,7 @@ void main(void){
279
279
  cu.value = v;
280
280
 
281
281
  gl.uniform1i(location, v);
282
- }`},B2={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function l7(_,$){let J=[`
282
+ }`},F2={float:"gl.uniform1fv(location, v)",vec2:"gl.uniform2fv(location, v)",vec3:"gl.uniform3fv(location, v)",vec4:"gl.uniform4fv(location, v)",mat4:"gl.uniformMatrix4fv(location, false, v)",mat3:"gl.uniformMatrix3fv(location, false, v)",mat2:"gl.uniformMatrix2fv(location, false, v)",int:"gl.uniform1iv(location, v)",ivec2:"gl.uniform2iv(location, v)",ivec3:"gl.uniform3iv(location, v)",ivec4:"gl.uniform4iv(location, v)",uint:"gl.uniform1uiv(location, v)",uvec2:"gl.uniform2uiv(location, v)",uvec3:"gl.uniform3uiv(location, v)",uvec4:"gl.uniform4uiv(location, v)",bool:"gl.uniform1iv(location, v)",bvec2:"gl.uniform2iv(location, v)",bvec3:"gl.uniform3iv(location, v)",bvec4:"gl.uniform4iv(location, v)",sampler2D:"gl.uniform1iv(location, v)",samplerCube:"gl.uniform1iv(location, v)",sampler2DArray:"gl.uniform1iv(location, v)"};function o9(_,$){let J=[`
283
283
  var v = null;
284
284
  var cv = null;
285
285
  var cu = null;
@@ -289,18 +289,18 @@ void main(void){
289
289
  renderer.shader.syncUniformBufferGroup(uv.${Z}, '${Z}');
290
290
  `):J.push(`
291
291
  renderer.shader.syncUniformGroup(uv.${Z}, syncData);
292
- `));continue}let q=_.uniforms[Z],K=!1;for(let V=0;V<N_.length;V++)if(N_[V].test(Q,q)){J.push(N_[V].code(Z,q)),K=!0;break}if(!K){let V=(Q.size===1&&!Q.isArray?b2:B2)[Q.type].replace("location",`ud["${Z}"].location`);J.push(`
292
+ `));continue}let q=_.uniforms[Z],K=!1;for(let V=0;V<N_.length;V++)if(N_[V].test(Q,q)){J.push(N_[V].code(Z,q)),K=!0;break}if(!K){let V=(Q.size===1&&!Q.isArray?B2:F2)[Q.type].replace("location",`ud["${Z}"].location`);J.push(`
293
293
  cu = ud["${Z}"];
294
294
  cv = cu.value;
295
295
  v = uv["${Z}"];
296
296
  ${V};`)}}return Function("ud","uv","renderer","syncData",J.join(`
297
- `))}var JJ={},g6=JJ;function p6(){if(g6===JJ||g6?.isContextLost()){let _=B.ADAPTER.createCanvas(),$;B.PREFER_ENV>=p0.WEBGL2&&($=_.getContext("webgl2",{})),$||($=_.getContext("webgl",{})||_.getContext("experimental-webgl",{}),$?$.getExtension("WEBGL_draw_buffers"):$=null),g6=$}return g6}var x6;function o7(){if(!x6){x6=M0.MEDIUM;let _=p6();if(_&&_.getShaderPrecisionFormat){let $=_.getShaderPrecisionFormat(_.FRAGMENT_SHADER,_.HIGH_FLOAT);$&&(x6=$.precision?M0.HIGH:M0.MEDIUM)}}return x6}function ZJ(_,$){let J=_.getShaderSource($).split(`
297
+ `))}var $J={},g6=$J;function p6(){if(g6===$J||g6?.isContextLost()){let _=B.ADAPTER.createCanvas(),$;B.PREFER_ENV>=p0.WEBGL2&&($=_.getContext("webgl2",{})),$||($=_.getContext("webgl",{})||_.getContext("experimental-webgl",{}),$?$.getExtension("WEBGL_draw_buffers"):$=null),g6=$}return g6}var x6;function s9(){if(!x6){x6=M0.MEDIUM;let _=p6();if(_&&_.getShaderPrecisionFormat){let $=_.getShaderPrecisionFormat(_.FRAGMENT_SHADER,_.HIGH_FLOAT);$&&(x6=$.precision?M0.HIGH:M0.MEDIUM)}}return x6}function JJ(_,$){let J=_.getShaderSource($).split(`
298
298
  `).map((w,h)=>`${h}: ${w}`),Z=_.getShaderInfoLog($),Q=Z.split(`
299
299
  `),q={},K=Q.map((w)=>parseFloat(w.replace(/^ERROR\: 0\:([\d]+)\:.*$/,"$1"))).filter((w)=>w&&!q[w]?(q[w]=!0,!0):!1),V=[""];K.forEach((w)=>{J[w-1]=`%c${J[w-1]}%c`,V.push("background: #FF0000; color:#FFFFFF; font-size: 10px","font-size: 10px")});let H=J.join(`
300
- `);V[0]=H,console.error(Z),console.groupCollapsed("click to view full shader code"),console.warn(...V),console.groupEnd()}function s7(_,$,J,Z){_.getProgramParameter($,_.LINK_STATUS)||(_.getShaderParameter(J,_.COMPILE_STATUS)||ZJ(_,J),_.getShaderParameter(Z,_.COMPILE_STATUS)||ZJ(_,Z),console.error("PixiJS Error: Could not initialize shader."),_.getProgramInfoLog($)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",_.getProgramInfoLog($)))}var F2={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function A5(_){return F2[_]}var m6=null,QJ={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function P5(_,$){if(!m6){let J=Object.keys(QJ);m6={};for(let Z=0;Z<J.length;++Z){let Q=J[Z];m6[_[Q]]=QJ[Q]}}return m6[$]}function u6(_,$,J){if(_.substring(0,9)!=="precision"){let Z=$;return $===M0.HIGH&&J!==M0.HIGH&&(Z=M0.MEDIUM),`precision ${Z} float;
301
- ${_}`}else if(J!==M0.HIGH&&_.substring(0,15)==="precision highp")return _.replace("precision highp","precision mediump");return _}var R5;function n6(){if(typeof R5=="boolean")return R5;try{R5=Function("param1","param2","param3","return param1[param2] === param3;")({a:"b"},"a","b")===!0}catch{R5=!1}return R5}var O2=0,l6={},i7=class _{constructor($,J,Z="pixi-shader",Q={}){this.extra={},this.id=O2++,this.vertexSrc=$||_.defaultVertexSrc,this.fragmentSrc=J||_.defaultFragmentSrc,this.vertexSrc=this.vertexSrc.trim(),this.fragmentSrc=this.fragmentSrc.trim(),this.extra=Q,this.vertexSrc.substring(0,8)!=="#version"&&(Z=Z.replace(/\s+/g,"-"),l6[Z]?(l6[Z]++,Z+=`-${l6[Z]}`):l6[Z]=1,this.vertexSrc=`#define SHADER_NAME ${Z}
300
+ `);V[0]=H,console.error(Z),console.groupCollapsed("click to view full shader code"),console.warn(...V),console.groupEnd()}function i9(_,$,J,Z){_.getProgramParameter($,_.LINK_STATUS)||(_.getShaderParameter(J,_.COMPILE_STATUS)||JJ(_,J),_.getShaderParameter(Z,_.COMPILE_STATUS)||JJ(_,Z),console.error("PixiJS Error: Could not initialize shader."),_.getProgramInfoLog($)!==""&&console.warn("PixiJS Warning: gl.getProgramInfoLog()",_.getProgramInfoLog($)))}var O2={float:1,vec2:2,vec3:3,vec4:4,int:1,ivec2:2,ivec3:3,ivec4:4,uint:1,uvec2:2,uvec3:3,uvec4:4,bool:1,bvec2:2,bvec3:3,bvec4:4,mat2:4,mat3:9,mat4:16,sampler2D:1};function A5(_){return O2[_]}var m6=null,ZJ={FLOAT:"float",FLOAT_VEC2:"vec2",FLOAT_VEC3:"vec3",FLOAT_VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",UNSIGNED_INT:"uint",UNSIGNED_INT_VEC2:"uvec2",UNSIGNED_INT_VEC3:"uvec3",UNSIGNED_INT_VEC4:"uvec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",FLOAT_MAT2:"mat2",FLOAT_MAT3:"mat3",FLOAT_MAT4:"mat4",SAMPLER_2D:"sampler2D",INT_SAMPLER_2D:"sampler2D",UNSIGNED_INT_SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube",INT_SAMPLER_CUBE:"samplerCube",UNSIGNED_INT_SAMPLER_CUBE:"samplerCube",SAMPLER_2D_ARRAY:"sampler2DArray",INT_SAMPLER_2D_ARRAY:"sampler2DArray",UNSIGNED_INT_SAMPLER_2D_ARRAY:"sampler2DArray"};function P5(_,$){if(!m6){let J=Object.keys(ZJ);m6={};for(let Z=0;Z<J.length;++Z){let Q=J[Z];m6[_[Q]]=ZJ[Q]}}return m6[$]}function u6(_,$,J){if(_.substring(0,9)!=="precision"){let Z=$;return $===M0.HIGH&&J!==M0.HIGH&&(Z=M0.MEDIUM),`precision ${Z} float;
301
+ ${_}`}else if(J!==M0.HIGH&&_.substring(0,15)==="precision highp")return _.replace("precision highp","precision mediump");return _}var R5;function n6(){if(typeof R5=="boolean")return R5;try{R5=Function("param1","param2","param3","return param1[param2] === param3;")({a:"b"},"a","b")===!0}catch{R5=!1}return R5}var j2=0,l6={},a9=class _{constructor($,J,Z="pixi-shader",Q={}){this.extra={},this.id=j2++,this.vertexSrc=$||_.defaultVertexSrc,this.fragmentSrc=J||_.defaultFragmentSrc,this.vertexSrc=this.vertexSrc.trim(),this.fragmentSrc=this.fragmentSrc.trim(),this.extra=Q,this.vertexSrc.substring(0,8)!=="#version"&&(Z=Z.replace(/\s+/g,"-"),l6[Z]?(l6[Z]++,Z+=`-${l6[Z]}`):l6[Z]=1,this.vertexSrc=`#define SHADER_NAME ${Z}
302
302
  ${this.vertexSrc}`,this.fragmentSrc=`#define SHADER_NAME ${Z}
303
- ${this.fragmentSrc}`,this.vertexSrc=u6(this.vertexSrc,_.defaultVertexPrecision,M0.HIGH),this.fragmentSrc=u6(this.fragmentSrc,_.defaultFragmentPrecision,o7())),this.glPrograms={},this.syncUniforms=null}static get defaultVertexSrc(){return $J}static get defaultFragmentSrc(){return _J}static from($,J,Z){let Q=$+J,q=O5[Q];return q||(O5[Q]=q=new _($,J,Z)),q}};i7.defaultVertexPrecision=M0.HIGH,i7.defaultFragmentPrecision=o0.apple.device?M0.HIGH:M0.MEDIUM;var P0=i7;var j2=0;class O0{constructor(_,$,J){this.group=!0,this.syncUniforms={},this.dirtyId=0,this.id=j2++,this.static=!!$,this.ubo=!!J,_ instanceof _0?(this.buffer=_,this.buffer.type=S0.UNIFORM_BUFFER,this.autoManage=!1,this.ubo=!0):(this.uniforms=_,this.ubo&&(this.buffer=new _0(new Float32Array(1)),this.buffer.type=S0.UNIFORM_BUFFER,this.autoManage=!0))}update(){this.dirtyId++,!this.autoManage&&this.buffer&&this.buffer.update()}add(_,$,J){if(!this.ubo)this.uniforms[_]=new O0($,J);else throw Error("[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them")}static from(_,$,J){return new O0(_,$,J)}static uboFrom(_,$){return new O0(_,$??!0,!0)}}class j0{constructor(_,$){this.uniformBindCount=0,this.program=_,$?$ instanceof O0?this.uniformGroup=$:this.uniformGroup=new O0($):this.uniformGroup=new O0({}),this.disposeRunner=new W0("disposeShader")}checkUniformExists(_,$){if($.uniforms[_])return!0;for(let J in $.uniforms){let Z=$.uniforms[J];if(Z.group===!0&&this.checkUniformExists(_,Z))return!0}return!1}destroy(){this.uniformGroup=null,this.disposeRunner.emit(this),this.disposeRunner.destroy()}get uniforms(){return this.uniformGroup.uniforms}static from(_,$,J){let Z=P0.from(_,$);return new j0(Z,J)}}class o6{constructor(_,$){if(this.vertexSrc=_,this.fragTemplate=$,this.programCache={},this.defaultGroupCache={},!$.includes("%count%"))throw Error('Fragment template must contain "%count%".');if(!$.includes("%forloop%"))throw Error('Fragment template must contain "%forloop%".')}generateShader(_){if(!this.programCache[_]){let J=new Int32Array(_);for(let Q=0;Q<_;Q++)J[Q]=Q;this.defaultGroupCache[_]=O0.from({uSamplers:J},!0);let Z=this.fragTemplate;Z=Z.replace(/%count%/gi,`${_}`),Z=Z.replace(/%forloop%/gi,this.generateSampleSrc(_)),this.programCache[_]=new P0(this.vertexSrc,Z)}let $={tint:new Float32Array([1,1,1,1]),translationMatrix:new o,default:this.defaultGroupCache[_]};return new j0(this.programCache[_],$)}generateSampleSrc(_){let $="";$+=`
303
+ ${this.fragmentSrc}`,this.vertexSrc=u6(this.vertexSrc,_.defaultVertexPrecision,M0.HIGH),this.fragmentSrc=u6(this.fragmentSrc,_.defaultFragmentPrecision,s9())),this.glPrograms={},this.syncUniforms=null}static get defaultVertexSrc(){return _J}static get defaultFragmentSrc(){return e$}static from($,J,Z){let Q=$+J,q=O5[Q];return q||(O5[Q]=q=new _($,J,Z)),q}};a9.defaultVertexPrecision=M0.HIGH,a9.defaultFragmentPrecision=o0.apple.device?M0.HIGH:M0.MEDIUM;var P0=a9;var L2=0;class O0{constructor(_,$,J){this.group=!0,this.syncUniforms={},this.dirtyId=0,this.id=L2++,this.static=!!$,this.ubo=!!J,_ instanceof _0?(this.buffer=_,this.buffer.type=S0.UNIFORM_BUFFER,this.autoManage=!1,this.ubo=!0):(this.uniforms=_,this.ubo&&(this.buffer=new _0(new Float32Array(1)),this.buffer.type=S0.UNIFORM_BUFFER,this.autoManage=!0))}update(){this.dirtyId++,!this.autoManage&&this.buffer&&this.buffer.update()}add(_,$,J){if(!this.ubo)this.uniforms[_]=new O0($,J);else throw Error("[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them")}static from(_,$,J){return new O0(_,$,J)}static uboFrom(_,$){return new O0(_,$??!0,!0)}}class j0{constructor(_,$){this.uniformBindCount=0,this.program=_,$?$ instanceof O0?this.uniformGroup=$:this.uniformGroup=new O0($):this.uniformGroup=new O0({}),this.disposeRunner=new W0("disposeShader")}checkUniformExists(_,$){if($.uniforms[_])return!0;for(let J in $.uniforms){let Z=$.uniforms[J];if(Z.group===!0&&this.checkUniformExists(_,Z))return!0}return!1}destroy(){this.uniformGroup=null,this.disposeRunner.emit(this),this.disposeRunner.destroy()}get uniforms(){return this.uniformGroup.uniforms}static from(_,$,J){let Z=P0.from(_,$);return new j0(Z,J)}}class o6{constructor(_,$){if(this.vertexSrc=_,this.fragTemplate=$,this.programCache={},this.defaultGroupCache={},!$.includes("%count%"))throw Error('Fragment template must contain "%count%".');if(!$.includes("%forloop%"))throw Error('Fragment template must contain "%forloop%".')}generateShader(_){if(!this.programCache[_]){let J=new Int32Array(_);for(let Q=0;Q<_;Q++)J[Q]=Q;this.defaultGroupCache[_]=O0.from({uSamplers:J},!0);let Z=this.fragTemplate;Z=Z.replace(/%count%/gi,`${_}`),Z=Z.replace(/%forloop%/gi,this.generateSampleSrc(_)),this.programCache[_]=new P0(this.vertexSrc,Z)}let $={tint:new Float32Array([1,1,1,1]),translationMatrix:new o,default:this.defaultGroupCache[_]};return new j0(this.programCache[_],$)}generateSampleSrc(_){let $="";$+=`
304
304
  `,$+=`
305
305
  `;for(let J=0;J<_;J++)J>0&&($+=`
306
306
  else `),J<_-1&&($+=`if(vTextureId < ${J}.5)`),$+=`
@@ -308,7 +308,7 @@ else `),J<_-1&&($+=`if(vTextureId < ${J}.5)`),$+=`
308
308
  color = texture2D(uSamplers[${J}], vTextureCoord);`,$+=`
309
309
  }`;return $+=`
310
310
  `,$+=`
311
- `,$}}class X1{constructor(){this.elements=[],this.ids=[],this.count=0}clear(){for(let _=0;_<this.count;_++)this.elements[_]=null;this.count=0}}function qJ(){return!o0.apple.device}function KJ(_){let $=!0,J=B.ADAPTER.getNavigator();if(o0.tablet||o0.phone){if(o0.apple.device){let Z=J.userAgent.match(/OS (\d+)_(\d+)?/);Z&&parseInt(Z[1],10)<11&&($=!1)}if(o0.android.device){let Z=J.userAgent.match(/Android\s([0-9.]*)/);Z&&parseInt(Z[1],10)<7&&($=!1)}}return $?_:4}class Y_{constructor(_){this.renderer=_}flush(){}destroy(){this.renderer=null}start(){}stop(){this.flush()}render(_){}}var VJ=`varying vec2 vTextureCoord;
311
+ `,$}}class X1{constructor(){this.elements=[],this.ids=[],this.count=0}clear(){for(let _=0;_<this.count;_++)this.elements[_]=null;this.count=0}}function QJ(){return!o0.apple.device}function qJ(_){let $=!0,J=B.ADAPTER.getNavigator();if(o0.tablet||o0.phone){if(o0.apple.device){let Z=J.userAgent.match(/OS (\d+)_(\d+)?/);Z&&parseInt(Z[1],10)<11&&($=!1)}if(o0.android.device){let Z=J.userAgent.match(/Android\s([0-9.]*)/);Z&&parseInt(Z[1],10)<7&&($=!1)}}return $?_:4}class Y_{constructor(_){this.renderer=_}flush(){}destroy(){this.renderer=null}start(){}stop(){this.flush()}render(_){}}var KJ=`varying vec2 vTextureCoord;
312
312
  varying vec4 vColor;
313
313
  varying float vTextureId;
314
314
  uniform sampler2D uSamplers[%count%];
@@ -318,7 +318,7 @@ void main(void){
318
318
  %forloop%
319
319
  gl_FragColor = color * vColor;
320
320
  }
321
- `;var HJ=`precision highp float;
321
+ `;var VJ=`precision highp float;
322
322
  attribute vec2 aVertexPosition;
323
323
  attribute vec2 aTextureCoord;
324
324
  attribute vec4 aColor;
@@ -339,14 +339,14 @@ void main(void){
339
339
  vTextureId = aTextureId;
340
340
  vColor = aColor * tint;
341
341
  }
342
- `;var M5=class _ extends Y_{constructor($){super($),this.setShaderGenerator(),this.geometryClass=y1,this.vertexSize=6,this.state=I0.for2d(),this.size=_.defaultBatchSize*4,this._vertexCount=0,this._indexCount=0,this._bufferedElements=[],this._bufferedTextures=[],this._bufferSize=0,this._shader=null,this._packedGeometries=[],this._packedGeometryPoolSize=2,this._flushId=0,this._aBuffers={},this._iBuffers={},this.maxTextures=1,this.renderer.on("prerender",this.onPrerender,this),$.runners.contextChange.add(this),this._dcIndex=0,this._aIndex=0,this._iIndex=0,this._attributeBuffer=null,this._indexBuffer=null,this._tempBoundTextures=[]}static get defaultMaxTextures(){return this._defaultMaxTextures=this._defaultMaxTextures??KJ(32),this._defaultMaxTextures}static set defaultMaxTextures($){this._defaultMaxTextures=$}static get canUploadSameBuffer(){return this._canUploadSameBuffer=this._canUploadSameBuffer??qJ(),this._canUploadSameBuffer}static set canUploadSameBuffer($){this._canUploadSameBuffer=$}get MAX_TEXTURES(){return l("7.1.0","BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures"),this.maxTextures}static get defaultVertexSrc(){return HJ}static get defaultFragmentTemplate(){return VJ}setShaderGenerator({vertex:$=_.defaultVertexSrc,fragment:J=_.defaultFragmentTemplate}={}){this.shaderGenerator=new o6($,J)}contextChange(){let $=this.renderer.gl;B.PREFER_ENV===p0.WEBGL_LEGACY?this.maxTextures=1:(this.maxTextures=Math.min($.getParameter($.MAX_TEXTURE_IMAGE_UNITS),_.defaultMaxTextures),this.maxTextures=y6(this.maxTextures,$)),this._shader=this.shaderGenerator.generateShader(this.maxTextures);for(let J=0;J<this._packedGeometryPoolSize;J++)this._packedGeometries[J]=new this.geometryClass;this.initFlushBuffers()}initFlushBuffers(){let{_drawCallPool:$,_textureArrayPool:J}=_,Z=this.size/4,Q=Math.floor(Z/this.maxTextures)+1;for(;$.length<Z;)$.push(new K1);for(;J.length<Q;)J.push(new X1);for(let q=0;q<this.maxTextures;q++)this._tempBoundTextures[q]=null}onPrerender(){this._flushId=0}render($){$._texture.valid&&(this._vertexCount+$.vertexData.length/2>this.size&&this.flush(),this._vertexCount+=$.vertexData.length/2,this._indexCount+=$.indices.length,this._bufferedTextures[this._bufferSize]=$._texture.baseTexture,this._bufferedElements[this._bufferSize++]=$)}buildTexturesAndDrawCalls(){let{_bufferedTextures:$,maxTextures:J}=this,Z=_._textureArrayPool,Q=this.renderer.batch,q=this._tempBoundTextures,K=this.renderer.textureGC.count,V=++p._globalBatch,H=0,w=Z[0],h=0;Q.copyBoundTextures(q,J);for(let z=0;z<this._bufferSize;++z){let X=$[z];$[z]=null,X._batchEnabled!==V&&(w.count>=J&&(Q.boundArray(w,q,V,J),this.buildDrawCalls(w,h,z),h=z,w=Z[++H],++V),X._batchEnabled=V,X.touched=K,w.elements[w.count++]=X)}w.count>0&&(Q.boundArray(w,q,V,J),this.buildDrawCalls(w,h,this._bufferSize),++H,++V);for(let z=0;z<q.length;z++)q[z]=null;p._globalBatch=V}buildDrawCalls($,J,Z){let{_bufferedElements:Q,_attributeBuffer:q,_indexBuffer:K,vertexSize:V}=this,H=_._drawCallPool,w=this._dcIndex,h=this._aIndex,z=this._iIndex,X=H[w];X.start=this._iIndex,X.texArray=$;for(let W=J;W<Z;++W){let G=Q[W],k=G._texture.baseTexture,C=I5[k.alphaMode?1:0][G.blendMode];Q[W]=null,J<W&&X.blend!==C&&(X.size=z-X.start,J=W,X=H[++w],X.texArray=$,X.start=z),this.packInterleavedGeometry(G,q,K,h,z),h+=G.vertexData.length/2*V,z+=G.indices.length,X.blend=C}J<Z&&(X.size=z-X.start,++w),this._dcIndex=w,this._aIndex=h,this._iIndex=z}bindAndClearTexArray($){let J=this.renderer.texture;for(let Z=0;Z<$.count;Z++)J.bind($.elements[Z],$.ids[Z]),$.elements[Z]=null;$.count=0}updateGeometry(){let{_packedGeometries:$,_attributeBuffer:J,_indexBuffer:Z}=this;_.canUploadSameBuffer?($[this._flushId]._buffer.update(J.rawBinaryData),$[this._flushId]._indexBuffer.update(Z),this.renderer.geometry.updateBuffers()):(this._packedGeometryPoolSize<=this._flushId&&(this._packedGeometryPoolSize++,$[this._flushId]=new this.geometryClass),$[this._flushId]._buffer.update(J.rawBinaryData),$[this._flushId]._indexBuffer.update(Z),this.renderer.geometry.bind($[this._flushId]),this.renderer.geometry.updateBuffers(),this._flushId++)}drawBatches(){let $=this._dcIndex,{gl:J,state:Z}=this.renderer,Q=_._drawCallPool,q=null;for(let K=0;K<$;K++){let{texArray:V,type:H,size:w,start:h,blend:z}=Q[K];q!==V&&(q=V,this.bindAndClearTexArray(V)),this.state.blendMode=z,Z.set(this.state),J.drawElements(H,w,J.UNSIGNED_SHORT,h*2)}}flush(){this._vertexCount!==0&&(this._attributeBuffer=this.getAttributeBuffer(this._vertexCount),this._indexBuffer=this.getIndexBuffer(this._indexCount),this._aIndex=0,this._iIndex=0,this._dcIndex=0,this.buildTexturesAndDrawCalls(),this.updateGeometry(),this.drawBatches(),this._bufferSize=0,this._vertexCount=0,this._indexCount=0)}start(){this.renderer.state.set(this.state),this.renderer.texture.ensureSamplerType(this.maxTextures),this.renderer.shader.bind(this._shader),_.canUploadSameBuffer&&this.renderer.geometry.bind(this._packedGeometries[this._flushId])}stop(){this.flush()}destroy(){for(let $=0;$<this._packedGeometryPoolSize;$++)this._packedGeometries[$]&&this._packedGeometries[$].destroy();this.renderer.off("prerender",this.onPrerender,this),this._aBuffers=null,this._iBuffers=null,this._packedGeometries=null,this._attributeBuffer=null,this._indexBuffer=null,this._shader&&(this._shader.destroy(),this._shader=null),super.destroy()}getAttributeBuffer($){let J=d_(Math.ceil($/8)),Z=B5(J),Q=J*8;this._aBuffers.length<=Z&&(this._iBuffers.length=Z+1);let q=this._aBuffers[Q];return q||(this._aBuffers[Q]=q=new q1(Q*this.vertexSize*4)),q}getIndexBuffer($){let J=d_(Math.ceil($/12)),Z=B5(J),Q=J*12;this._iBuffers.length<=Z&&(this._iBuffers.length=Z+1);let q=this._iBuffers[Z];return q||(this._iBuffers[Z]=q=new Uint16Array(Q)),q}packInterleavedGeometry($,J,Z,Q,q){let{uint32View:K,float32View:V}=J,H=Q/this.vertexSize,w=$.uvs,h=$.indices,z=$.vertexData,X=$._texture.baseTexture._batchLocation,W=Math.min($.worldAlpha,1),G=s.shared.setValue($._tintRGB).toPremultiplied(W,$._texture.baseTexture.alphaMode>0);for(let k=0;k<z.length;k+=2)V[Q++]=z[k],V[Q++]=z[k+1],V[Q++]=w[k],V[Q++]=w[k+1],K[Q++]=G,V[Q++]=X;for(let k=0;k<h.length;k++)Z[q++]=H+h[k]}};M5.defaultBatchSize=4096,M5.extension={name:"batch",type:b.RendererPlugin},M5._drawCallPool=[],M5._textureArrayPool=[];var M_=M5;O.add(M_);var wJ=`varying vec2 vTextureCoord;
342
+ `;var M5=class _ extends Y_{constructor($){super($),this.setShaderGenerator(),this.geometryClass=y1,this.vertexSize=6,this.state=I0.for2d(),this.size=_.defaultBatchSize*4,this._vertexCount=0,this._indexCount=0,this._bufferedElements=[],this._bufferedTextures=[],this._bufferSize=0,this._shader=null,this._packedGeometries=[],this._packedGeometryPoolSize=2,this._flushId=0,this._aBuffers={},this._iBuffers={},this.maxTextures=1,this.renderer.on("prerender",this.onPrerender,this),$.runners.contextChange.add(this),this._dcIndex=0,this._aIndex=0,this._iIndex=0,this._attributeBuffer=null,this._indexBuffer=null,this._tempBoundTextures=[]}static get defaultMaxTextures(){return this._defaultMaxTextures=this._defaultMaxTextures??qJ(32),this._defaultMaxTextures}static set defaultMaxTextures($){this._defaultMaxTextures=$}static get canUploadSameBuffer(){return this._canUploadSameBuffer=this._canUploadSameBuffer??QJ(),this._canUploadSameBuffer}static set canUploadSameBuffer($){this._canUploadSameBuffer=$}get MAX_TEXTURES(){return l("7.1.0","BatchRenderer#MAX_TEXTURES renamed to BatchRenderer#maxTextures"),this.maxTextures}static get defaultVertexSrc(){return VJ}static get defaultFragmentTemplate(){return KJ}setShaderGenerator({vertex:$=_.defaultVertexSrc,fragment:J=_.defaultFragmentTemplate}={}){this.shaderGenerator=new o6($,J)}contextChange(){let $=this.renderer.gl;B.PREFER_ENV===p0.WEBGL_LEGACY?this.maxTextures=1:(this.maxTextures=Math.min($.getParameter($.MAX_TEXTURE_IMAGE_UNITS),_.defaultMaxTextures),this.maxTextures=y6(this.maxTextures,$)),this._shader=this.shaderGenerator.generateShader(this.maxTextures);for(let J=0;J<this._packedGeometryPoolSize;J++)this._packedGeometries[J]=new this.geometryClass;this.initFlushBuffers()}initFlushBuffers(){let{_drawCallPool:$,_textureArrayPool:J}=_,Z=this.size/4,Q=Math.floor(Z/this.maxTextures)+1;for(;$.length<Z;)$.push(new K1);for(;J.length<Q;)J.push(new X1);for(let q=0;q<this.maxTextures;q++)this._tempBoundTextures[q]=null}onPrerender(){this._flushId=0}render($){$._texture.valid&&(this._vertexCount+$.vertexData.length/2>this.size&&this.flush(),this._vertexCount+=$.vertexData.length/2,this._indexCount+=$.indices.length,this._bufferedTextures[this._bufferSize]=$._texture.baseTexture,this._bufferedElements[this._bufferSize++]=$)}buildTexturesAndDrawCalls(){let{_bufferedTextures:$,maxTextures:J}=this,Z=_._textureArrayPool,Q=this.renderer.batch,q=this._tempBoundTextures,K=this.renderer.textureGC.count,V=++p._globalBatch,H=0,w=Z[0],h=0;Q.copyBoundTextures(q,J);for(let z=0;z<this._bufferSize;++z){let X=$[z];$[z]=null,X._batchEnabled!==V&&(w.count>=J&&(Q.boundArray(w,q,V,J),this.buildDrawCalls(w,h,z),h=z,w=Z[++H],++V),X._batchEnabled=V,X.touched=K,w.elements[w.count++]=X)}w.count>0&&(Q.boundArray(w,q,V,J),this.buildDrawCalls(w,h,this._bufferSize),++H,++V);for(let z=0;z<q.length;z++)q[z]=null;p._globalBatch=V}buildDrawCalls($,J,Z){let{_bufferedElements:Q,_attributeBuffer:q,_indexBuffer:K,vertexSize:V}=this,H=_._drawCallPool,w=this._dcIndex,h=this._aIndex,z=this._iIndex,X=H[w];X.start=this._iIndex,X.texArray=$;for(let W=J;W<Z;++W){let G=Q[W],k=G._texture.baseTexture,C=I5[k.alphaMode?1:0][G.blendMode];Q[W]=null,J<W&&X.blend!==C&&(X.size=z-X.start,J=W,X=H[++w],X.texArray=$,X.start=z),this.packInterleavedGeometry(G,q,K,h,z),h+=G.vertexData.length/2*V,z+=G.indices.length,X.blend=C}J<Z&&(X.size=z-X.start,++w),this._dcIndex=w,this._aIndex=h,this._iIndex=z}bindAndClearTexArray($){let J=this.renderer.texture;for(let Z=0;Z<$.count;Z++)J.bind($.elements[Z],$.ids[Z]),$.elements[Z]=null;$.count=0}updateGeometry(){let{_packedGeometries:$,_attributeBuffer:J,_indexBuffer:Z}=this;_.canUploadSameBuffer?($[this._flushId]._buffer.update(J.rawBinaryData),$[this._flushId]._indexBuffer.update(Z),this.renderer.geometry.updateBuffers()):(this._packedGeometryPoolSize<=this._flushId&&(this._packedGeometryPoolSize++,$[this._flushId]=new this.geometryClass),$[this._flushId]._buffer.update(J.rawBinaryData),$[this._flushId]._indexBuffer.update(Z),this.renderer.geometry.bind($[this._flushId]),this.renderer.geometry.updateBuffers(),this._flushId++)}drawBatches(){let $=this._dcIndex,{gl:J,state:Z}=this.renderer,Q=_._drawCallPool,q=null;for(let K=0;K<$;K++){let{texArray:V,type:H,size:w,start:h,blend:z}=Q[K];q!==V&&(q=V,this.bindAndClearTexArray(V)),this.state.blendMode=z,Z.set(this.state),J.drawElements(H,w,J.UNSIGNED_SHORT,h*2)}}flush(){this._vertexCount!==0&&(this._attributeBuffer=this.getAttributeBuffer(this._vertexCount),this._indexBuffer=this.getIndexBuffer(this._indexCount),this._aIndex=0,this._iIndex=0,this._dcIndex=0,this.buildTexturesAndDrawCalls(),this.updateGeometry(),this.drawBatches(),this._bufferSize=0,this._vertexCount=0,this._indexCount=0)}start(){this.renderer.state.set(this.state),this.renderer.texture.ensureSamplerType(this.maxTextures),this.renderer.shader.bind(this._shader),_.canUploadSameBuffer&&this.renderer.geometry.bind(this._packedGeometries[this._flushId])}stop(){this.flush()}destroy(){for(let $=0;$<this._packedGeometryPoolSize;$++)this._packedGeometries[$]&&this._packedGeometries[$].destroy();this.renderer.off("prerender",this.onPrerender,this),this._aBuffers=null,this._iBuffers=null,this._packedGeometries=null,this._attributeBuffer=null,this._indexBuffer=null,this._shader&&(this._shader.destroy(),this._shader=null),super.destroy()}getAttributeBuffer($){let J=d_(Math.ceil($/8)),Z=B5(J),Q=J*8;this._aBuffers.length<=Z&&(this._iBuffers.length=Z+1);let q=this._aBuffers[Q];return q||(this._aBuffers[Q]=q=new q1(Q*this.vertexSize*4)),q}getIndexBuffer($){let J=d_(Math.ceil($/12)),Z=B5(J),Q=J*12;this._iBuffers.length<=Z&&(this._iBuffers.length=Z+1);let q=this._iBuffers[Z];return q||(this._iBuffers[Z]=q=new Uint16Array(Q)),q}packInterleavedGeometry($,J,Z,Q,q){let{uint32View:K,float32View:V}=J,H=Q/this.vertexSize,w=$.uvs,h=$.indices,z=$.vertexData,X=$._texture.baseTexture._batchLocation,W=Math.min($.worldAlpha,1),G=s.shared.setValue($._tintRGB).toPremultiplied(W,$._texture.baseTexture.alphaMode>0);for(let k=0;k<z.length;k+=2)V[Q++]=z[k],V[Q++]=z[k+1],V[Q++]=w[k],V[Q++]=w[k+1],K[Q++]=G,V[Q++]=X;for(let k=0;k<h.length;k++)Z[q++]=H+h[k]}};M5.defaultBatchSize=4096,M5.extension={name:"batch",type:b.RendererPlugin},M5._drawCallPool=[],M5._textureArrayPool=[];var M_=M5;O.add(M_);var HJ=`varying vec2 vTextureCoord;
343
343
 
344
344
  uniform sampler2D uSampler;
345
345
 
346
346
  void main(void){
347
347
  gl_FragColor = texture2D(uSampler, vTextureCoord);
348
348
  }
349
- `;var hJ=`attribute vec2 aVertexPosition;
349
+ `;var wJ=`attribute vec2 aVertexPosition;
350
350
 
351
351
  uniform mat3 projectionMatrix;
352
352
 
@@ -372,7 +372,7 @@ void main(void)
372
372
  gl_Position = filterVertexPosition();
373
373
  vTextureCoord = filterTextureCoord();
374
374
  }
375
- `;var a7=class _ extends j0{constructor($,J,Z){let Q=P0.from($||_.defaultVertexSrc,J||_.defaultFragmentSrc);super(Q,Z),this.padding=0,this.resolution=_.defaultResolution,this.multisample=_.defaultMultisample,this.enabled=!0,this.autoFit=!0,this.state=new I0}apply($,J,Z,Q,q){$.applyFilter(this,J,Z,Q)}get blendMode(){return this.state.blendMode}set blendMode($){this.state.blendMode=$}get resolution(){return this._resolution}set resolution($){this._resolution=$}static get defaultVertexSrc(){return hJ}static get defaultFragmentSrc(){return wJ}};a7.defaultResolution=1,a7.defaultMultisample=e.NONE;var J0=a7;class x_{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new s(0),this.alpha=1}init(_){this.clearBeforeRender=_.clearBeforeRender;let{backgroundColor:$,background:J,backgroundAlpha:Z}=_,Q=J??$;Q!==void 0&&(this.color=Q),this.alpha=Z}get color(){return this._backgroundColor.value}set color(_){this._backgroundColor.setValue(_)}get alpha(){return this._backgroundColor.alpha}set alpha(_){this._backgroundColor.setAlpha(_)}get backgroundColor(){return this._backgroundColor}destroy(){}}x_.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0},x_.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"background"};O.add(x_);class f5{constructor(_){this.renderer=_,this.emptyRenderer=new Y_(_),this.currentRenderer=this.emptyRenderer}setObjectRenderer(_){this.currentRenderer!==_&&(this.currentRenderer.stop(),this.currentRenderer=_,this.currentRenderer.start())}flush(){this.setObjectRenderer(this.emptyRenderer)}reset(){this.setObjectRenderer(this.emptyRenderer)}copyBoundTextures(_,$){let{boundTextures:J}=this.renderer.texture;for(let Z=$-1;Z>=0;--Z)_[Z]=J[Z]||null,_[Z]&&(_[Z]._batchLocation=Z)}boundArray(_,$,J,Z){let{elements:Q,ids:q,count:K}=_,V=0;for(let H=0;H<K;H++){let w=Q[H],h=w._batchLocation;if(h>=0&&h<Z&&$[h]===w){q[H]=h;continue}for(;V<Z;){let z=$[V];if(z&&z._batchEnabled===J&&z._batchLocation===V){V++;continue}q[H]=V,w._batchLocation=V,$[V]=w;break}}}destroy(){this.renderer=null}}f5.extension={type:b.RendererSystem,name:"batch"};O.add(f5);var zJ=0;class m_{constructor(_){this.renderer=_,this.webGLVersion=1,this.extensions={},this.supports={uint32Indices:!1},this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(_){this.gl=_,this.renderer.gl=_,this.renderer.CONTEXT_UID=zJ++}init(_){if(_.context)this.initFromContext(_.context);else{let $=this.renderer.background.alpha<1,J=_.premultipliedAlpha;this.preserveDrawingBuffer=_.preserveDrawingBuffer,this.useContextAlpha=_.useContextAlpha,this.powerPreference=_.powerPreference,this.initFromOptions({alpha:$,premultipliedAlpha:J,antialias:_.antialias,stencil:!0,preserveDrawingBuffer:_.preserveDrawingBuffer,powerPreference:_.powerPreference})}}initFromContext(_){this.gl=_,this.validateContext(_),this.renderer.gl=_,this.renderer.CONTEXT_UID=zJ++,this.renderer.runners.contextChange.emit(_);let $=this.renderer.view;$.addEventListener!==void 0&&($.addEventListener("webglcontextlost",this.handleContextLost,!1),$.addEventListener("webglcontextrestored",this.handleContextRestored,!1))}initFromOptions(_){let $=this.createContext(this.renderer.view,_);this.initFromContext($)}createContext(_,$){let J;if(B.PREFER_ENV>=p0.WEBGL2&&(J=_.getContext("webgl2",$)),J)this.webGLVersion=2;else if(this.webGLVersion=1,J=_.getContext("webgl",$)||_.getContext("experimental-webgl",$),!J)throw Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=J,this.getExtensions(),this.gl}getExtensions(){let{gl:_}=this,$={loseContext:_.getExtension("WEBGL_lose_context"),anisotropicFiltering:_.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:_.getExtension("OES_texture_float_linear"),s3tc:_.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:_.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:_.getExtension("WEBGL_compressed_texture_etc"),etc1:_.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:_.getExtension("WEBGL_compressed_texture_pvrtc")||_.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:_.getExtension("WEBGL_compressed_texture_atc"),astc:_.getExtension("WEBGL_compressed_texture_astc"),bptc:_.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,$,{drawBuffers:_.getExtension("WEBGL_draw_buffers"),depthTexture:_.getExtension("WEBGL_depth_texture"),vertexArrayObject:_.getExtension("OES_vertex_array_object")||_.getExtension("MOZ_OES_vertex_array_object")||_.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:_.getExtension("OES_element_index_uint"),floatTexture:_.getExtension("OES_texture_float"),floatTextureLinear:_.getExtension("OES_texture_float_linear"),textureHalfFloat:_.getExtension("OES_texture_half_float"),textureHalfFloatLinear:_.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,$,{colorBufferFloat:_.getExtension("EXT_color_buffer_float")})}handleContextLost(_){_.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){let _=this.renderer.view;this.renderer=null,_.removeEventListener!==void 0&&(_.removeEventListener("webglcontextlost",this.handleContextLost),_.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(_){let $=_.getContextAttributes(),J="WebGL2RenderingContext"in globalThis&&_ instanceof globalThis.WebGL2RenderingContext;J&&(this.webGLVersion=2),$&&!$.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let Z=J||!!_.getExtension("OES_element_index_uint");this.supports.uint32Indices=Z,Z||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}m_.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},m_.extension={type:b.RendererSystem,name:"context"};O.add(m_);class G1{constructor(_,$){if(this.width=Math.round(_),this.height=Math.round($),!this.width||!this.height)throw Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new W0("disposeFramebuffer"),this.multisample=e.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(_=0,$){return this.colorTextures[_]=$||new p(null,{scaleMode:y0.NEAREST,resolution:1,mipmap:F0.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(_){return this.depthTexture=_||new p(null,{scaleMode:y0.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:F0.OFF,format:R.DEPTH_COMPONENT,type:g.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(_,$){if(_=Math.round(_),$=Math.round($),!_||!$)throw Error("Framebuffer width and height must not be zero");if(!(_===this.width&&$===this.height)){this.width=_,this.height=$,this.dirtyId++,this.dirtySize++;for(let J=0;J<this.colorTextures.length;J++){let Z=this.colorTextures[J],Q=Z.resolution;Z.setSize(_/Q,$/Q)}if(this.depthTexture){let J=this.depthTexture.resolution;this.depthTexture.setSize(_/J,$/J)}}}dispose(){this.disposeRunner.emit(this,!1)}destroyDepthTexture(){this.depthTexture&&(this.depthTexture.destroy(),this.depthTexture=null,++this.dirtyId,++this.dirtyFormat)}}class g1 extends p{constructor(_={}){if(typeof _=="number"){let $=arguments[0],J=arguments[1],Z=arguments[2],Q=arguments[3];_={width:$,height:J,scaleMode:Z,resolution:Q}}_.width=_.width??100,_.height=_.height??100,_.multisample??(_.multisample=e.NONE),super(null,_),this.mipmap=F0.OFF,this.valid=!0,this._clear=new s([0,0,0,0]),this.framebuffer=new G1(this.realWidth,this.realHeight).addColorTexture(0,this),this.framebuffer.multisample=_.multisample,this.maskStack=[],this.filterStack=[{}]}set clearColor(_){this._clear.setValue(_)}get clearColor(){return this._clear.value}get clear(){return this._clear}get multisample(){return this.framebuffer.multisample}set multisample(_){this.framebuffer.multisample=_}resize(_,$){this.framebuffer.resize(_*this.resolution,$*this.resolution),this.setRealSize(this.framebuffer.width,this.framebuffer.height)}dispose(){this.framebuffer.dispose(),super.dispose()}destroy(){super.destroy(),this.framebuffer.destroyDepthTexture(),this.framebuffer=null}}class b0 extends i0{constructor(_){let $=_,J=$.naturalWidth||$.videoWidth||$.displayWidth||$.width,Z=$.naturalHeight||$.videoHeight||$.displayHeight||$.height;super(J,Z),this.source=_,this.noSubImage=!1}static crossOrigin(_,$,J){J===void 0&&!$.startsWith("data:")?_.crossOrigin=c6($):J!==!1&&(_.crossOrigin=typeof J=="string"?J:"anonymous")}upload(_,$,J,Z){let Q=_.gl,q=$.realWidth,K=$.realHeight;if(Z=Z||this.source,typeof HTMLImageElement<"u"&&Z instanceof HTMLImageElement){if(!Z.complete||Z.naturalWidth===0)return!1}else if(typeof HTMLVideoElement<"u"&&Z instanceof HTMLVideoElement&&Z.readyState<=1)return!1;return Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$.alphaMode===K0.UNPACK),!this.noSubImage&&$.target===Q.TEXTURE_2D&&J.width===q&&J.height===K?Q.texSubImage2D(Q.TEXTURE_2D,0,0,0,$.format,J.type,Z):(J.width=q,J.height=K,Q.texImage2D($.target,0,J.internalFormat,$.format,J.type,Z)),!0}update(){if(this.destroyed)return;let _=this.source,$=_.naturalWidth||_.videoWidth||_.width,J=_.naturalHeight||_.videoHeight||_.height;this.resize($,J),super.update()}dispose(){this.source=null}}class p1 extends b0{constructor(_,$){if($=$||{},typeof _=="string"){let J=new Image;b0.crossOrigin(J,_,$.crossorigin),J.src=_,_=J}super(_),!_.complete&&this._width&&this._height&&(this._width=0,this._height=0),this.url=_.src,this._process=null,this.preserveBitmap=!1,this.createBitmap=($.createBitmap??B.CREATE_IMAGE_BITMAP)&&!!globalThis.createImageBitmap,this.alphaMode=typeof $.alphaMode=="number"?$.alphaMode:null,this.bitmap=null,this._load=null,$.autoLoad!==!1&&this.load()}load(_){return this._load?this._load:(_!==void 0&&(this.createBitmap=_),this._load=new Promise(($,J)=>{let Z=this.source;this.url=Z.src;let Q=()=>{this.destroyed||(Z.onload=null,Z.onerror=null,this.update(),this._load=null,this.createBitmap?$(this.process()):$(this))};Z.complete&&Z.src?Q():(Z.onload=Q,Z.onerror=(q)=>{J(q),this.onError.emit(q)})}),this._load)}process(){let _=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);let $=globalThis.createImageBitmap,J=!_.crossOrigin||_.crossOrigin==="anonymous";return this._process=fetch(_.src,{mode:J?"cors":"no-cors"}).then((Z)=>Z.blob()).then((Z)=>$(Z,0,0,_.width,_.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===K0.UNPACK?"premultiply":"none"})).then((Z)=>this.destroyed?Promise.reject():(this.bitmap=Z,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(_,$,J){if(typeof this.alphaMode=="number"&&($.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(_,$,J);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(_,$,J,this.bitmap),!this.preserveBitmap){let Z=!0,Q=$._glTextures;for(let q in Q){let K=Q[q];if(K!==J&&K.dirtyId!==$.dirtyId){Z=!1;break}}Z&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(_){return typeof HTMLImageElement<"u"&&(typeof _=="string"||_ instanceof HTMLImageElement)}}class x1{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(_,$,J){let{width:Z,height:Q}=$;if(J){let q=_.width/2/Z,K=_.height/2/Q,V=_.x/Z+q,H=_.y/Q+K;J=Q0.add(J,Q0.NW),this.x0=V+q*Q0.uX(J),this.y0=H+K*Q0.uY(J),J=Q0.add(J,2),this.x1=V+q*Q0.uX(J),this.y1=H+K*Q0.uY(J),J=Q0.add(J,2),this.x2=V+q*Q0.uX(J),this.y2=H+K*Q0.uY(J),J=Q0.add(J,2),this.x3=V+q*Q0.uX(J),this.y3=H+K*Q0.uY(J)}else this.x0=_.x/Z,this.y0=_.y/Q,this.x1=(_.x+_.width)/Z,this.y1=_.y/Q,this.x2=(_.x+_.width)/Z,this.y2=(_.y+_.height)/Q,this.x3=_.x/Z,this.y3=(_.y+_.height)/Q;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}x1.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};var XJ=new x1;function s6(_){_.destroy=function(){},_.on=function(){},_.once=function(){},_.emit=function(){}}class E extends g_.default{constructor(_,$,J,Z,Q,q,K){if(super(),this.noFrame=!1,$||(this.noFrame=!0,$=new x(0,0,1,1)),_ instanceof E&&(_=_.baseTexture),this.baseTexture=_,this._frame=$,this.trim=Z,this.valid=!1,this.destroyed=!1,this._uvs=XJ,this.uvMatrix=null,this.orig=J||$,this._rotate=Number(Q||0),Q===!0)this._rotate=2;else if(this._rotate%2!==0)throw Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=q?new u(q.x,q.y):new u(0,0),this.defaultBorders=K,this._updateID=0,this.textureCacheIds=[],_.valid?this.noFrame?_.valid&&this.onBaseTextureUpdated(_):this.frame=$:_.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&_.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(_){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=_.width,this._frame.height=_.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(_){if(this.baseTexture){if(_){let{resource:$}=this.baseTexture;$?.url&&U0[$.url]&&E.removeFromCache($.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,E.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){let _=this._frame.clone(),$=this._frame===this.orig?_:this.orig.clone(),J=new E(this.baseTexture,!this.noFrame&&_,$,this.trim?.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(J._frame=_),J}updateUvs(){this._uvs===XJ&&(this._uvs=new x1),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(_,$={},J=B.STRICT_TEXTURE_CACHE){let Z=typeof _=="string",Q=null;if(Z)Q=_;else if(_ instanceof p){if(!_.cacheId){let K=$?.pixiIdPrefix||"pixiid";_.cacheId=`${K}-${W_()}`,p.addToCache(_,_.cacheId)}Q=_.cacheId}else{if(!_._pixiId){let K=$?.pixiIdPrefix||"pixiid";_._pixiId=`${K}_${W_()}`}Q=_._pixiId}let q=U0[Q];if(Z&&J&&!q)throw Error(`The cacheId "${Q}" does not exist in TextureCache.`);return!q&&!(_ instanceof p)?($.resolution||($.resolution=j5(_)),q=new E(new p(_,$)),q.baseTexture.cacheId=Q,p.addToCache(q.baseTexture,Q),E.addToCache(q,Q)):!q&&_ instanceof p&&(q=new E(_),E.addToCache(q,Q)),q}static fromURL(_,$){let J=Object.assign({autoLoad:!1},$?.resourceOptions),Z=E.from(_,Object.assign({resourceOptions:J},$),!1),Q=Z.baseTexture.resource;return Z.baseTexture.valid?Promise.resolve(Z):Q.load().then(()=>Promise.resolve(Z))}static fromBuffer(_,$,J,Z){return new E(p.fromBuffer(_,$,J,Z))}static fromLoader(_,$,J,Z){let Q=new p(_,Object.assign({scaleMode:p.defaultOptions.scaleMode,resolution:j5($)},Z)),{resource:q}=Q;q instanceof p1&&(q.url=$);let K=new E(Q);return J||(J=$),p.addToCache(K.baseTexture,J),E.addToCache(K,J),J!==$&&(p.addToCache(K.baseTexture,$),E.addToCache(K,$)),K.baseTexture.valid?Promise.resolve(K):new Promise((V)=>{K.baseTexture.once("loaded",()=>V(K))})}static addToCache(_,$){$&&(_.textureCacheIds.includes($)||_.textureCacheIds.push($),U0[$]&&U0[$]!==_&&console.warn(`Texture added to the cache with an id [${$}] that already had an entry`),U0[$]=_)}static removeFromCache(_){if(typeof _=="string"){let $=U0[_];if($){let J=$.textureCacheIds.indexOf(_);return J>-1&&$.textureCacheIds.splice(J,1),delete U0[_],$}}else if(_?.textureCacheIds){for(let $=0;$<_.textureCacheIds.length;++$)U0[_.textureCacheIds[$]]===_&&delete U0[_.textureCacheIds[$]];return _.textureCacheIds.length=0,_}return null}get resolution(){return this.baseTexture.resolution}get frame(){return this._frame}set frame(_){this._frame=_,this.noFrame=!1;let{x:$,y:J,width:Z,height:Q}=_,q=$+Z>this.baseTexture.width,K=J+Q>this.baseTexture.height;if(q||K){let V=q&&K?"and":"or",H=`X: ${$} + ${Z} = ${$+Z} > ${this.baseTexture.width}`,w=`Y: ${J} + ${Q} = ${J+Q} > ${this.baseTexture.height}`;throw Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${H} ${V} ${w}`)}this.valid=Z&&Q&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=_),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(_){this._rotate=_,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return E._EMPTY||(E._EMPTY=new E(new p),s6(E._EMPTY),s6(E._EMPTY.baseTexture)),E._EMPTY}static get WHITE(){if(!E._WHITE){let _=B.ADAPTER.createCanvas(16,16),$=_.getContext("2d");_.width=16,_.height=16,$.fillStyle="white",$.fillRect(0,0,16,16),E._WHITE=new E(p.from(_)),s6(E._WHITE),s6(E._WHITE.baseTexture)}return E._WHITE}}class a0 extends E{constructor(_,$){super(_,$),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(_){this.framebuffer.multisample=_}resize(_,$,J=!0){let Z=this.baseTexture.resolution,Q=Math.round(_*Z)/Z,q=Math.round($*Z)/Z;this.valid=Q>0&&q>0,this._frame.width=this.orig.width=Q,this._frame.height=this.orig.height=q,J&&this.baseTexture.resize(Q,q),this.updateUvs()}setResolution(_){let{baseTexture:$}=this;$.resolution!==_&&($.setResolution(_),this.resize($.width,$.height,!1))}static create(_){return new a0(new g1(_))}}class E5{constructor(_){this.texturePool={},this.textureOptions=_||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(_,$,J=e.NONE){let Z=new g1(Object.assign({width:_,height:$,resolution:1,multisample:J},this.textureOptions));return new a0(Z)}getOptimalTexture(_,$,J=1,Z=e.NONE){let Q;_=Math.max(Math.ceil(_*J-0.000001),1),$=Math.max(Math.ceil($*J-0.000001),1),!this.enableFullScreen||_!==this._pixelsWidth||$!==this._pixelsHeight?(_=d_(_),$=d_($),Q=((_&65535)<<16|$&65535)>>>0,Z>1&&(Q+=Z*4294967296)):Q=Z>1?-Z:-1,this.texturePool[Q]||(this.texturePool[Q]=[]);let q=this.texturePool[Q].pop();return q||(q=this.createTexture(_,$,Z)),q.filterPoolKey=Q,q.setResolution(J),q}getFilterTexture(_,$,J){let Z=this.getOptimalTexture(_.width,_.height,$||_.resolution,J||e.NONE);return Z.filterFrame=_.filterFrame,Z}returnTexture(_){let $=_.filterPoolKey;_.filterFrame=null,this.texturePool[$].push(_)}returnFilterTexture(_){this.returnTexture(_)}clear(_){if(_=_!==!1,_)for(let $ in this.texturePool){let J=this.texturePool[$];if(J)for(let Z=0;Z<J.length;Z++)J[Z].destroy(!0)}this.texturePool={}}setScreenSize(_){if(!(_.width===this._pixelsWidth&&_.height===this._pixelsHeight)){this.enableFullScreen=_.width>0&&_.height>0;for(let $ in this.texturePool){if(!(Number($)<0))continue;let J=this.texturePool[$];if(J)for(let Z=0;Z<J.length;Z++)J[Z].destroy(!0);this.texturePool[$]=[]}this._pixelsWidth=_.width,this._pixelsHeight=_.height}}}E5.SCREEN_KEY=-1;class i6 extends T0{constructor(){super(),this.addAttribute("aVertexPosition",new Float32Array([0,0,1,0,1,1,0,1])).addIndex([0,1,3,2])}}class m1 extends T0{constructor(){super(),this.vertices=new Float32Array([-1,-1,1,-1,1,1,-1,1]),this.uvs=new Float32Array([0,0,1,0,1,1,0,1]),this.vertexBuffer=new _0(this.vertices),this.uvBuffer=new _0(this.uvs),this.addAttribute("aVertexPosition",this.vertexBuffer).addAttribute("aTextureCoord",this.uvBuffer).addIndex([0,1,2,0,2,3])}map(_,$){let J=0,Z=0;return this.uvs[0]=J,this.uvs[1]=Z,this.uvs[2]=J+$.width/_.width,this.uvs[3]=Z,this.uvs[4]=J+$.width/_.width,this.uvs[5]=Z+$.height/_.height,this.uvs[6]=J,this.uvs[7]=Z+$.height/_.height,J=$.x,Z=$.y,this.vertices[0]=J,this.vertices[1]=Z,this.vertices[2]=J+$.width,this.vertices[3]=Z,this.vertices[4]=J+$.width,this.vertices[5]=Z+$.height,this.vertices[6]=J,this.vertices[7]=Z+$.height,this.invalidate(),this}invalidate(){return this.vertexBuffer._updateID++,this.uvBuffer._updateID++,this}}class a6{constructor(){this.renderTexture=null,this.target=null,this.legacy=!1,this.resolution=1,this.multisample=e.NONE,this.sourceFrame=new x,this.destinationFrame=new x,this.bindingSourceFrame=new x,this.bindingDestinationFrame=new x,this.filters=[],this.transform=null}clear(){this.target=null,this.filters=null,this.renderTexture=null}}var r6=[new u,new u,new u,new u],r7=new o;class v5{constructor(_){this.renderer=_,this.defaultFilterStack=[{}],this.texturePool=new E5,this.statePool=[],this.quad=new i6,this.quadUv=new m1,this.tempRect=new x,this.activeState={},this.globalUniforms=new O0({outputFrame:new x,inputSize:new Float32Array(4),inputPixel:new Float32Array(4),inputClamp:new Float32Array(4),resolution:1,filterArea:new Float32Array(4),filterClamp:new Float32Array(4)},!0),this.forceClear=!1,this.useMaxPadding=!1}init(){this.texturePool.setScreenSize(this.renderer.view)}push(_,$){let J=this.renderer,Z=this.defaultFilterStack,Q=this.statePool.pop()||new a6,q=J.renderTexture,K,V;if(q.current){let k=q.current;K=k.resolution,V=k.multisample}else K=J.resolution,V=J.multisample;let H=$[0].resolution||K,w=$[0].multisample??V,h=$[0].padding,z=$[0].autoFit,X=$[0].legacy??!0;for(let k=1;k<$.length;k++){let C=$[k];H=Math.min(H,C.resolution||K),w=Math.min(w,C.multisample??V),h=this.useMaxPadding?Math.max(h,C.padding):h+C.padding,z=z&&C.autoFit,X=X||(C.legacy??!0)}Z.length===1&&(this.defaultFilterStack[0].renderTexture=q.current),Z.push(Q),Q.resolution=H,Q.multisample=w,Q.legacy=X,Q.target=_,Q.sourceFrame.copyFrom(_.filterArea||_.getBounds(!0)),Q.sourceFrame.pad(h);let W=this.tempRect.copyFrom(q.sourceFrame);J.projection.transform&&this.transformAABB(r7.copyFrom(J.projection.transform).invert(),W),z?(Q.sourceFrame.fit(W),(Q.sourceFrame.width<=0||Q.sourceFrame.height<=0)&&(Q.sourceFrame.width=0,Q.sourceFrame.height=0)):Q.sourceFrame.intersects(W)||(Q.sourceFrame.width=0,Q.sourceFrame.height=0),this.roundFrame(Q.sourceFrame,q.current?q.current.resolution:J.resolution,q.sourceFrame,q.destinationFrame,J.projection.transform),Q.renderTexture=this.getOptimalFilterTexture(Q.sourceFrame.width,Q.sourceFrame.height,H,w),Q.filters=$,Q.destinationFrame.width=Q.renderTexture.width,Q.destinationFrame.height=Q.renderTexture.height;let G=this.tempRect;G.x=0,G.y=0,G.width=Q.sourceFrame.width,G.height=Q.sourceFrame.height,Q.renderTexture.filterFrame=Q.sourceFrame,Q.bindingSourceFrame.copyFrom(q.sourceFrame),Q.bindingDestinationFrame.copyFrom(q.destinationFrame),Q.transform=J.projection.transform,J.projection.transform=null,q.bind(Q.renderTexture,Q.sourceFrame,G),J.framebuffer.clear(0,0,0,0)}pop(){let _=this.defaultFilterStack,$=_.pop(),J=$.filters;this.activeState=$;let Z=this.globalUniforms.uniforms;Z.outputFrame=$.sourceFrame,Z.resolution=$.resolution;let{inputSize:Q,inputPixel:q,inputClamp:K}=Z;if(Q[0]=$.destinationFrame.width,Q[1]=$.destinationFrame.height,Q[2]=1/Q[0],Q[3]=1/Q[1],q[0]=Math.round(Q[0]*$.resolution),q[1]=Math.round(Q[1]*$.resolution),q[2]=1/q[0],q[3]=1/q[1],K[0]=0.5*q[2],K[1]=0.5*q[3],K[2]=$.sourceFrame.width*Q[2]-0.5*q[2],K[3]=$.sourceFrame.height*Q[3]-0.5*q[3],$.legacy){let H=Z.filterArea;H[0]=$.destinationFrame.width,H[1]=$.destinationFrame.height,H[2]=$.sourceFrame.x,H[3]=$.sourceFrame.y,Z.filterClamp=Z.inputClamp}this.globalUniforms.update();let V=_[_.length-1];if(this.renderer.framebuffer.blit(),J.length===1)J[0].apply(this,$.renderTexture,V.renderTexture,m0.BLEND,$),this.returnFilterTexture($.renderTexture);else{let H=$.renderTexture,w=this.getOptimalFilterTexture(H.width,H.height,$.resolution);w.filterFrame=H.filterFrame;let h=0;for(h=0;h<J.length-1;++h){h===1&&$.multisample>1&&(w=this.getOptimalFilterTexture(H.width,H.height,$.resolution),w.filterFrame=H.filterFrame),J[h].apply(this,H,w,m0.CLEAR,$);let z=H;H=w,w=z}J[h].apply(this,H,V.renderTexture,m0.BLEND,$),h>1&&$.multisample>1&&this.returnFilterTexture($.renderTexture),this.returnFilterTexture(H),this.returnFilterTexture(w)}$.clear(),this.statePool.push($)}bindAndClear(_,$=m0.CLEAR){let{renderTexture:J,state:Z}=this.renderer;if(_===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,_?.filterFrame){let q=this.tempRect;q.x=0,q.y=0,q.width=_.filterFrame.width,q.height=_.filterFrame.height,J.bind(_,_.filterFrame,q)}else _!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?J.bind(_):this.renderer.renderTexture.bind(_,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);let Q=Z.stateId&1||this.forceClear;($===m0.CLEAR||$===m0.BLIT&&Q)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(_,$,J,Z){let Q=this.renderer;Q.state.set(_.state),this.bindAndClear(J,Z),_.uniforms.uSampler=$,_.uniforms.filterGlobals=this.globalUniforms,Q.shader.bind(_),_.legacy=!!_.program.attributeData.aTextureCoord,_.legacy?(this.quadUv.map($._frame,$.filterFrame),Q.geometry.bind(this.quadUv),Q.geometry.draw(c0.TRIANGLES)):(Q.geometry.bind(this.quad),Q.geometry.draw(c0.TRIANGLE_STRIP))}calculateSpriteMatrix(_,$){let{sourceFrame:J,destinationFrame:Z}=this.activeState,{orig:Q}=$._texture,q=_.set(Z.width,0,0,Z.height,J.x,J.y),K=$.worldTransform.copyTo(o.TEMP_MATRIX);return K.invert(),q.prepend(K),q.scale(1/Q.width,1/Q.height),q.translate($.anchor.x,$.anchor.y),q}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(_,$,J=1,Z=e.NONE){return this.texturePool.getOptimalTexture(_,$,J,Z)}getFilterTexture(_,$,J){if(typeof _=="number"){let Q=_;_=$,$=Q}_=_||this.activeState.renderTexture;let Z=this.texturePool.getOptimalTexture(_.width,_.height,$||_.resolution,J||e.NONE);return Z.filterFrame=_.filterFrame,Z}returnFilterTexture(_){this.texturePool.returnTexture(_)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(_,$){let J=r6[0],Z=r6[1],Q=r6[2],q=r6[3];J.set($.left,$.top),Z.set($.left,$.bottom),Q.set($.right,$.top),q.set($.right,$.bottom),_.apply(J,J),_.apply(Z,Z),_.apply(Q,Q),_.apply(q,q);let K=Math.min(J.x,Z.x,Q.x,q.x),V=Math.min(J.y,Z.y,Q.y,q.y),H=Math.max(J.x,Z.x,Q.x,q.x),w=Math.max(J.y,Z.y,Q.y,q.y);$.x=K,$.y=V,$.width=H-K,$.height=w-V}roundFrame(_,$,J,Z,Q){if(!(_.width<=0||_.height<=0||J.width<=0||J.height<=0)){if(Q){let{a:q,b:K,c:V,d:H}=Q;if((Math.abs(K)>0.0001||Math.abs(V)>0.0001)&&(Math.abs(q)>0.0001||Math.abs(H)>0.0001))return}Q=Q?r7.copyFrom(Q):r7.identity(),Q.translate(-J.x,-J.y).scale(Z.width/J.width,Z.height/J.height).translate(Z.x,Z.y),this.transformAABB(Q,_),_.ceil($),this.transformAABB(Q.invert(),_)}}}v5.extension={type:b.RendererSystem,name:"filter"};O.add(v5);class t6{constructor(_){this.framebuffer=_,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=e.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}var L2=new x;class c5{constructor(_){this.renderer=_,this.managedFramebuffers=[],this.unknownFramebuffer=new G1(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);let _=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new x,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let $=this.renderer.context.extensions.drawBuffers,J=this.renderer.context.extensions.depthTexture;B.PREFER_ENV===p0.WEBGL_LEGACY&&($=null,J=null),$?_.drawBuffers=(Z)=>$.drawBuffersWEBGL(Z):(this.hasMRT=!1,_.drawBuffers=()=>{}),J||(this.writeDepthTexture=!1)}else this.msaaSamples=_.getInternalformatParameter(_.RENDERBUFFER,_.RGBA8,_.SAMPLES)}bind(_,$,J=0){let{gl:Z}=this;if(_){let Q=_.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(_);this.current!==_&&(this.current=_,Z.bindFramebuffer(Z.FRAMEBUFFER,Q.framebuffer)),Q.mipLevel!==J&&(_.dirtyId++,_.dirtyFormat++,Q.mipLevel=J),Q.dirtyId!==_.dirtyId&&(Q.dirtyId=_.dirtyId,Q.dirtyFormat!==_.dirtyFormat?(Q.dirtyFormat=_.dirtyFormat,Q.dirtySize=_.dirtySize,this.updateFramebuffer(_,J)):Q.dirtySize!==_.dirtySize&&(Q.dirtySize=_.dirtySize,this.resizeFramebuffer(_)));for(let q=0;q<_.colorTextures.length;q++){let K=_.colorTextures[q];this.renderer.texture.unbind(K.parentTextureArray||K)}if(_.depthTexture&&this.renderer.texture.unbind(_.depthTexture),$){let q=$.width>>J,K=$.height>>J,V=q/$.width;this.setViewport($.x*V,$.y*V,q,K)}else{let q=_.width>>J,K=_.height>>J;this.setViewport(0,0,q,K)}}else this.current&&(this.current=null,Z.bindFramebuffer(Z.FRAMEBUFFER,null)),$?this.setViewport($.x,$.y,$.width,$.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(_,$,J,Z){let Q=this.viewport;_=Math.round(_),$=Math.round($),J=Math.round(J),Z=Math.round(Z),(Q.width!==J||Q.height!==Z||Q.x!==_||Q.y!==$)&&(Q.x=_,Q.y=$,Q.width=J,Q.height=Z,this.gl.viewport(_,$,J,Z))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(_,$,J,Z,Q=b6.COLOR|b6.DEPTH){let{gl:q}=this;q.clearColor(_,$,J,Z),q.clear(Q)}initFramebuffer(_){let{gl:$}=this,J=new t6($.createFramebuffer());return J.multisample=this.detectSamples(_.multisample),_.glFramebuffers[this.CONTEXT_UID]=J,this.managedFramebuffers.push(_),_.disposeRunner.add(this),J}resizeFramebuffer(_){let{gl:$}=this,J=_.glFramebuffers[this.CONTEXT_UID];if(J.stencil){$.bindRenderbuffer($.RENDERBUFFER,J.stencil);let q;this.renderer.context.webGLVersion===1?q=$.DEPTH_STENCIL:_.depth&&_.stencil?q=$.DEPTH24_STENCIL8:_.depth?q=$.DEPTH_COMPONENT24:q=$.STENCIL_INDEX8,J.msaaBuffer?$.renderbufferStorageMultisample($.RENDERBUFFER,J.multisample,q,_.width,_.height):$.renderbufferStorage($.RENDERBUFFER,q,_.width,_.height)}let Z=_.colorTextures,Q=Z.length;$.drawBuffers||(Q=Math.min(Q,1));for(let q=0;q<Q;q++){let K=Z[q],V=K.parentTextureArray||K;this.renderer.texture.bind(V,0),q===0&&J.msaaBuffer&&($.bindRenderbuffer($.RENDERBUFFER,J.msaaBuffer),$.renderbufferStorageMultisample($.RENDERBUFFER,J.multisample,V._glTextures[this.CONTEXT_UID].internalFormat,_.width,_.height))}_.depthTexture&&this.writeDepthTexture&&this.renderer.texture.bind(_.depthTexture,0)}updateFramebuffer(_,$){let{gl:J}=this,Z=_.glFramebuffers[this.CONTEXT_UID],Q=_.colorTextures,q=Q.length;J.drawBuffers||(q=Math.min(q,1)),Z.multisample>1&&this.canMultisampleFramebuffer(_)?Z.msaaBuffer=Z.msaaBuffer||J.createRenderbuffer():Z.msaaBuffer&&(J.deleteRenderbuffer(Z.msaaBuffer),Z.msaaBuffer=null,Z.blitFramebuffer&&(Z.blitFramebuffer.dispose(),Z.blitFramebuffer=null));let K=[];for(let V=0;V<q;V++){let H=Q[V],w=H.parentTextureArray||H;this.renderer.texture.bind(w,0),V===0&&Z.msaaBuffer?(J.bindRenderbuffer(J.RENDERBUFFER,Z.msaaBuffer),J.renderbufferStorageMultisample(J.RENDERBUFFER,Z.multisample,w._glTextures[this.CONTEXT_UID].internalFormat,_.width,_.height),J.framebufferRenderbuffer(J.FRAMEBUFFER,J.COLOR_ATTACHMENT0,J.RENDERBUFFER,Z.msaaBuffer)):(J.framebufferTexture2D(J.FRAMEBUFFER,J.COLOR_ATTACHMENT0+V,H.target,w._glTextures[this.CONTEXT_UID].texture,$),K.push(J.COLOR_ATTACHMENT0+V))}if(K.length>1&&J.drawBuffers(K),_.depthTexture&&this.writeDepthTexture){let V=_.depthTexture;this.renderer.texture.bind(V,0),J.framebufferTexture2D(J.FRAMEBUFFER,J.DEPTH_ATTACHMENT,J.TEXTURE_2D,V._glTextures[this.CONTEXT_UID].texture,$)}if((_.stencil||_.depth)&&!(_.depthTexture&&this.writeDepthTexture)){Z.stencil=Z.stencil||J.createRenderbuffer();let V,H;this.renderer.context.webGLVersion===1?(V=J.DEPTH_STENCIL_ATTACHMENT,H=J.DEPTH_STENCIL):_.depth&&_.stencil?(V=J.DEPTH_STENCIL_ATTACHMENT,H=J.DEPTH24_STENCIL8):_.depth?(V=J.DEPTH_ATTACHMENT,H=J.DEPTH_COMPONENT24):(V=J.STENCIL_ATTACHMENT,H=J.STENCIL_INDEX8),J.bindRenderbuffer(J.RENDERBUFFER,Z.stencil),Z.msaaBuffer?J.renderbufferStorageMultisample(J.RENDERBUFFER,Z.multisample,H,_.width,_.height):J.renderbufferStorage(J.RENDERBUFFER,H,_.width,_.height),J.framebufferRenderbuffer(J.FRAMEBUFFER,V,J.RENDERBUFFER,Z.stencil)}else Z.stencil&&(J.deleteRenderbuffer(Z.stencil),Z.stencil=null)}canMultisampleFramebuffer(_){return this.renderer.context.webGLVersion!==1&&_.colorTextures.length<=1&&!_.depthTexture}detectSamples(_){let{msaaSamples:$}=this,J=e.NONE;if(_<=1||$===null)return J;for(let Z=0;Z<$.length;Z++)if($[Z]<=_){J=$[Z];break}return J===1&&(J=e.NONE),J}blit(_,$,J){let{current:Z,renderer:Q,gl:q,CONTEXT_UID:K}=this;if(Q.context.webGLVersion!==2||!Z)return;let V=Z.glFramebuffers[K];if(!V)return;if(!_){if(!V.msaaBuffer)return;let w=Z.colorTextures[0];if(!w)return;V.blitFramebuffer||(V.blitFramebuffer=new G1(Z.width,Z.height),V.blitFramebuffer.addColorTexture(0,w)),_=V.blitFramebuffer,_.colorTextures[0]!==w&&(_.colorTextures[0]=w,_.dirtyId++,_.dirtyFormat++),(_.width!==Z.width||_.height!==Z.height)&&(_.width=Z.width,_.height=Z.height,_.dirtyId++,_.dirtySize++)}$||($=L2,$.width=Z.width,$.height=Z.height),J||(J=$);let H=$.width===J.width&&$.height===J.height;this.bind(_),q.bindFramebuffer(q.READ_FRAMEBUFFER,V.framebuffer),q.blitFramebuffer($.left,$.top,$.right,$.bottom,J.left,J.top,J.right,J.bottom,q.COLOR_BUFFER_BIT,H?q.NEAREST:q.LINEAR),q.bindFramebuffer(q.READ_FRAMEBUFFER,_.glFramebuffers[this.CONTEXT_UID].framebuffer)}disposeFramebuffer(_,$){let J=_.glFramebuffers[this.CONTEXT_UID],Z=this.gl;if(!J)return;delete _.glFramebuffers[this.CONTEXT_UID];let Q=this.managedFramebuffers.indexOf(_);Q>=0&&this.managedFramebuffers.splice(Q,1),_.disposeRunner.remove(this),$||(Z.deleteFramebuffer(J.framebuffer),J.msaaBuffer&&Z.deleteRenderbuffer(J.msaaBuffer),J.stencil&&Z.deleteRenderbuffer(J.stencil)),J.blitFramebuffer&&this.disposeFramebuffer(J.blitFramebuffer,$)}disposeAll(_){let $=this.managedFramebuffers;this.managedFramebuffers=[];for(let J=0;J<$.length;J++)this.disposeFramebuffer($[J],_)}forceStencil(){let _=this.current;if(!_)return;let $=_.glFramebuffers[this.CONTEXT_UID];if(!$||$.stencil&&_.stencil)return;_.stencil=!0;let{width:J,height:Z}=_,Q=this.gl,q=$.stencil=Q.createRenderbuffer();Q.bindRenderbuffer(Q.RENDERBUFFER,q);let K,V;this.renderer.context.webGLVersion===1?(K=Q.DEPTH_STENCIL_ATTACHMENT,V=Q.DEPTH_STENCIL):_.depth?(K=Q.DEPTH_STENCIL_ATTACHMENT,V=Q.DEPTH24_STENCIL8):(K=Q.STENCIL_ATTACHMENT,V=Q.STENCIL_INDEX8),$.msaaBuffer?Q.renderbufferStorageMultisample(Q.RENDERBUFFER,$.multisample,V,J,Z):Q.renderbufferStorage(Q.RENDERBUFFER,V,J,Z),Q.framebufferRenderbuffer(Q.FRAMEBUFFER,K,Q.RENDERBUFFER,q)}reset(){this.current=this.unknownFramebuffer,this.viewport=new x}destroy(){this.renderer=null}}c5.extension={type:b.RendererSystem,name:"framebuffer"};O.add(c5);var t7={5126:4,5123:2,5121:1};class y5{constructor(_){this.renderer=_,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this.canUseUInt32ElementIndex=!1,this.managedGeometries={}}contextChange(){this.disposeAll(!0);let _=this.gl=this.renderer.gl,$=this.renderer.context;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,$.webGLVersion!==2){let J=this.renderer.context.extensions.vertexArrayObject;B.PREFER_ENV===p0.WEBGL_LEGACY&&(J=null),J?(_.createVertexArray=()=>J.createVertexArrayOES(),_.bindVertexArray=(Z)=>J.bindVertexArrayOES(Z),_.deleteVertexArray=(Z)=>J.deleteVertexArrayOES(Z)):(this.hasVao=!1,_.createVertexArray=()=>null,_.bindVertexArray=()=>null,_.deleteVertexArray=()=>null)}if($.webGLVersion!==2){let J=_.getExtension("ANGLE_instanced_arrays");J?(_.vertexAttribDivisor=(Z,Q)=>J.vertexAttribDivisorANGLE(Z,Q),_.drawElementsInstanced=(Z,Q,q,K,V)=>J.drawElementsInstancedANGLE(Z,Q,q,K,V),_.drawArraysInstanced=(Z,Q,q,K)=>J.drawArraysInstancedANGLE(Z,Q,q,K)):this.hasInstance=!1}this.canUseUInt32ElementIndex=$.webGLVersion===2||!!$.extensions.uint32ElementIndex}bind(_,$){$=$||this.renderer.shader.shader;let{gl:J}=this,Z=_.glVertexArrayObjects[this.CONTEXT_UID],Q=!1;Z||(this.managedGeometries[_.id]=_,_.disposeRunner.add(this),_.glVertexArrayObjects[this.CONTEXT_UID]=Z={},Q=!0);let q=Z[$.program.id]||this.initGeometryVao(_,$,Q);this._activeGeometry=_,this._activeVao!==q&&(this._activeVao=q,this.hasVao?J.bindVertexArray(q):this.activateVao(_,$.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){let _=this._activeGeometry,$=this.renderer.buffer;for(let J=0;J<_.buffers.length;J++){let Z=_.buffers[J];$.update(Z)}}checkCompatibility(_,$){let J=_.attributes,Z=$.attributeData;for(let Q in Z)if(!J[Q])throw Error(`shader and geometry incompatible, geometry missing the "${Q}" attribute`)}getSignature(_,$){let J=_.attributes,Z=$.attributeData,Q=["g",_.id];for(let q in J)Z[q]&&Q.push(q,Z[q].location);return Q.join("-")}initGeometryVao(_,$,J=!0){let Z=this.gl,Q=this.CONTEXT_UID,q=this.renderer.buffer,K=$.program;K.glPrograms[Q]||this.renderer.shader.generateProgram($),this.checkCompatibility(_,K);let V=this.getSignature(_,K),H=_.glVertexArrayObjects[this.CONTEXT_UID],w=H[V];if(w)return H[K.id]=w,w;let{buffers:h,attributes:z}=_,X={},W={};for(let G in h)X[G]=0,W[G]=0;for(let G in z)!z[G].size&&K.attributeData[G]?z[G].size=K.attributeData[G].size:z[G].size||console.warn(`PIXI Geometry attribute '${G}' size cannot be determined (likely the bound shader does not have the attribute)`),X[z[G].buffer]+=z[G].size*t7[z[G].type];for(let G in z){let k=z[G],C=k.size;k.stride===void 0&&(X[k.buffer]===C*t7[k.type]?k.stride=0:k.stride=X[k.buffer]),k.start===void 0&&(k.start=W[k.buffer],W[k.buffer]+=C*t7[k.type])}w=Z.createVertexArray(),Z.bindVertexArray(w);for(let G=0;G<h.length;G++){let k=h[G];q.bind(k),J&&k._glBuffers[Q].refCount++}return this.activateVao(_,K),H[K.id]=w,H[V]=w,Z.bindVertexArray(null),q.unbind(S0.ARRAY_BUFFER),w}disposeGeometry(_,$){if(!this.managedGeometries[_.id])return;delete this.managedGeometries[_.id];let J=_.glVertexArrayObjects[this.CONTEXT_UID],Z=this.gl,Q=_.buffers,q=this.renderer?.buffer;if(_.disposeRunner.remove(this),!!J){if(q)for(let K=0;K<Q.length;K++){let V=Q[K]._glBuffers[this.CONTEXT_UID];V&&(V.refCount--,V.refCount===0&&!$&&q.dispose(Q[K],$))}if(!$){for(let K in J)if(K[0]==="g"){let V=J[K];this._activeVao===V&&this.unbind(),Z.deleteVertexArray(V)}}delete _.glVertexArrayObjects[this.CONTEXT_UID]}}disposeAll(_){let $=Object.keys(this.managedGeometries);for(let J=0;J<$.length;J++)this.disposeGeometry(this.managedGeometries[$[J]],_)}activateVao(_,$){let J=this.gl,Z=this.CONTEXT_UID,Q=this.renderer.buffer,q=_.buffers,K=_.attributes;_.indexBuffer&&Q.bind(_.indexBuffer);let V=null;for(let H in K){let w=K[H],h=q[w.buffer],z=h._glBuffers[Z];if($.attributeData[H]){V!==z&&(Q.bind(h),V=z);let X=$.attributeData[H].location;if(J.enableVertexAttribArray(X),J.vertexAttribPointer(X,w.size,w.type||J.FLOAT,w.normalized,w.stride,w.start),w.instance)if(this.hasInstance)J.vertexAttribDivisor(X,w.divisor);else throw Error("geometry error, GPU Instancing is not supported on this device")}}}draw(_,$,J,Z){let{gl:Q}=this,q=this._activeGeometry;if(q.indexBuffer){let K=q.indexBuffer.data.BYTES_PER_ELEMENT,V=K===2?Q.UNSIGNED_SHORT:Q.UNSIGNED_INT;K===2||K===4&&this.canUseUInt32ElementIndex?q.instanced?Q.drawElementsInstanced(_,$||q.indexBuffer.data.length,V,(J||0)*K,Z||1):Q.drawElements(_,$||q.indexBuffer.data.length,V,(J||0)*K):console.warn("unsupported index buffer type: uint32")}else q.instanced?Q.drawArraysInstanced(_,J,$||q.getSize(),Z||1):Q.drawArrays(_,J,$||q.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this.renderer=null}}y5.extension={type:b.RendererSystem,name:"geometry"};O.add(y5);var GJ=new o;class W1{constructor(_,$){this._texture=_,this.mapCoord=new o,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,this.clampMargin=typeof $>"u"?0.5:$,this.isSimple=!1}get texture(){return this._texture}set texture(_){this._texture=_,this._textureID=-1}multiplyUvs(_,$){$===void 0&&($=_);let J=this.mapCoord;for(let Z=0;Z<_.length;Z+=2){let Q=_[Z],q=_[Z+1];$[Z]=Q*J.a+q*J.c+J.tx,$[Z+1]=Q*J.b+q*J.d+J.ty}return $}update(_){let $=this._texture;if(!$||!$.valid||!_&&this._textureID===$._updateID)return!1;this._textureID=$._updateID,this._updateID++;let J=$._uvs;this.mapCoord.set(J.x1-J.x0,J.y1-J.y0,J.x3-J.x0,J.y3-J.y0,J.x0,J.y0);let{orig:Z,trim:Q}=$;Q&&(GJ.set(Z.width/Q.width,0,0,Z.height/Q.height,-Q.x/Q.width,-Q.y/Q.height),this.mapCoord.append(GJ));let q=$.baseTexture,K=this.uClampFrame,V=this.clampMargin/q.resolution,H=this.clampOffset;return K[0]=($._frame.x+V+H)/q.width,K[1]=($._frame.y+V+H)/q.height,K[2]=($._frame.x+$._frame.width-V+H)/q.width,K[3]=($._frame.y+$._frame.height-V+H)/q.height,this.uClampOffset[0]=H/q.realWidth,this.uClampOffset[1]=H/q.realHeight,this.isSimple=$._frame.width===q.width&&$._frame.height===q.height&&$.rotate===0,!0}}var WJ=`varying vec2 vMaskCoord;
375
+ `;var r9=class _ extends j0{constructor($,J,Z){let Q=P0.from($||_.defaultVertexSrc,J||_.defaultFragmentSrc);super(Q,Z),this.padding=0,this.resolution=_.defaultResolution,this.multisample=_.defaultMultisample,this.enabled=!0,this.autoFit=!0,this.state=new I0}apply($,J,Z,Q,q){$.applyFilter(this,J,Z,Q)}get blendMode(){return this.state.blendMode}set blendMode($){this.state.blendMode=$}get resolution(){return this._resolution}set resolution($){this._resolution=$}static get defaultVertexSrc(){return wJ}static get defaultFragmentSrc(){return HJ}};r9.defaultResolution=1,r9.defaultMultisample=e.NONE;var J0=r9;class x_{constructor(){this.clearBeforeRender=!0,this._backgroundColor=new s(0),this.alpha=1}init(_){this.clearBeforeRender=_.clearBeforeRender;let{backgroundColor:$,background:J,backgroundAlpha:Z}=_,Q=J??$;Q!==void 0&&(this.color=Q),this.alpha=Z}get color(){return this._backgroundColor.value}set color(_){this._backgroundColor.setValue(_)}get alpha(){return this._backgroundColor.alpha}set alpha(_){this._backgroundColor.setAlpha(_)}get backgroundColor(){return this._backgroundColor}destroy(){}}x_.defaultOptions={backgroundAlpha:1,backgroundColor:0,clearBeforeRender:!0},x_.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"background"};O.add(x_);class f5{constructor(_){this.renderer=_,this.emptyRenderer=new Y_(_),this.currentRenderer=this.emptyRenderer}setObjectRenderer(_){this.currentRenderer!==_&&(this.currentRenderer.stop(),this.currentRenderer=_,this.currentRenderer.start())}flush(){this.setObjectRenderer(this.emptyRenderer)}reset(){this.setObjectRenderer(this.emptyRenderer)}copyBoundTextures(_,$){let{boundTextures:J}=this.renderer.texture;for(let Z=$-1;Z>=0;--Z)_[Z]=J[Z]||null,_[Z]&&(_[Z]._batchLocation=Z)}boundArray(_,$,J,Z){let{elements:Q,ids:q,count:K}=_,V=0;for(let H=0;H<K;H++){let w=Q[H],h=w._batchLocation;if(h>=0&&h<Z&&$[h]===w){q[H]=h;continue}for(;V<Z;){let z=$[V];if(z&&z._batchEnabled===J&&z._batchLocation===V){V++;continue}q[H]=V,w._batchLocation=V,$[V]=w;break}}}destroy(){this.renderer=null}}f5.extension={type:b.RendererSystem,name:"batch"};O.add(f5);var hJ=0;class m_{constructor(_){this.renderer=_,this.webGLVersion=1,this.extensions={},this.supports={uint32Indices:!1},this.handleContextLost=this.handleContextLost.bind(this),this.handleContextRestored=this.handleContextRestored.bind(this)}get isLost(){return!this.gl||this.gl.isContextLost()}contextChange(_){this.gl=_,this.renderer.gl=_,this.renderer.CONTEXT_UID=hJ++}init(_){if(_.context)this.initFromContext(_.context);else{let $=this.renderer.background.alpha<1,J=_.premultipliedAlpha;this.preserveDrawingBuffer=_.preserveDrawingBuffer,this.useContextAlpha=_.useContextAlpha,this.powerPreference=_.powerPreference,this.initFromOptions({alpha:$,premultipliedAlpha:J,antialias:_.antialias,stencil:!0,preserveDrawingBuffer:_.preserveDrawingBuffer,powerPreference:_.powerPreference})}}initFromContext(_){this.gl=_,this.validateContext(_),this.renderer.gl=_,this.renderer.CONTEXT_UID=hJ++,this.renderer.runners.contextChange.emit(_);let $=this.renderer.view;$.addEventListener!==void 0&&($.addEventListener("webglcontextlost",this.handleContextLost,!1),$.addEventListener("webglcontextrestored",this.handleContextRestored,!1))}initFromOptions(_){let $=this.createContext(this.renderer.view,_);this.initFromContext($)}createContext(_,$){let J;if(B.PREFER_ENV>=p0.WEBGL2&&(J=_.getContext("webgl2",$)),J)this.webGLVersion=2;else if(this.webGLVersion=1,J=_.getContext("webgl",$)||_.getContext("experimental-webgl",$),!J)throw Error("This browser does not support WebGL. Try using the canvas renderer");return this.gl=J,this.getExtensions(),this.gl}getExtensions(){let{gl:_}=this,$={loseContext:_.getExtension("WEBGL_lose_context"),anisotropicFiltering:_.getExtension("EXT_texture_filter_anisotropic"),floatTextureLinear:_.getExtension("OES_texture_float_linear"),s3tc:_.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:_.getExtension("WEBGL_compressed_texture_s3tc_srgb"),etc:_.getExtension("WEBGL_compressed_texture_etc"),etc1:_.getExtension("WEBGL_compressed_texture_etc1"),pvrtc:_.getExtension("WEBGL_compressed_texture_pvrtc")||_.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),atc:_.getExtension("WEBGL_compressed_texture_atc"),astc:_.getExtension("WEBGL_compressed_texture_astc"),bptc:_.getExtension("EXT_texture_compression_bptc")};this.webGLVersion===1?Object.assign(this.extensions,$,{drawBuffers:_.getExtension("WEBGL_draw_buffers"),depthTexture:_.getExtension("WEBGL_depth_texture"),vertexArrayObject:_.getExtension("OES_vertex_array_object")||_.getExtension("MOZ_OES_vertex_array_object")||_.getExtension("WEBKIT_OES_vertex_array_object"),uint32ElementIndex:_.getExtension("OES_element_index_uint"),floatTexture:_.getExtension("OES_texture_float"),floatTextureLinear:_.getExtension("OES_texture_float_linear"),textureHalfFloat:_.getExtension("OES_texture_half_float"),textureHalfFloatLinear:_.getExtension("OES_texture_half_float_linear")}):this.webGLVersion===2&&Object.assign(this.extensions,$,{colorBufferFloat:_.getExtension("EXT_color_buffer_float")})}handleContextLost(_){_.preventDefault(),setTimeout(()=>{this.gl.isContextLost()&&this.extensions.loseContext&&this.extensions.loseContext.restoreContext()},0)}handleContextRestored(){this.renderer.runners.contextChange.emit(this.gl)}destroy(){let _=this.renderer.view;this.renderer=null,_.removeEventListener!==void 0&&(_.removeEventListener("webglcontextlost",this.handleContextLost),_.removeEventListener("webglcontextrestored",this.handleContextRestored)),this.gl.useProgram(null),this.extensions.loseContext&&this.extensions.loseContext.loseContext()}postrender(){this.renderer.objectRenderer.renderingToScreen&&this.gl.flush()}validateContext(_){let $=_.getContextAttributes(),J="WebGL2RenderingContext"in globalThis&&_ instanceof globalThis.WebGL2RenderingContext;J&&(this.webGLVersion=2),$&&!$.stencil&&console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");let Z=J||!!_.getExtension("OES_element_index_uint");this.supports.uint32Indices=Z,Z||console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly")}}m_.defaultOptions={context:null,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,powerPreference:"default"},m_.extension={type:b.RendererSystem,name:"context"};O.add(m_);class G1{constructor(_,$){if(this.width=Math.round(_),this.height=Math.round($),!this.width||!this.height)throw Error("Framebuffer width or height is zero");this.stencil=!1,this.depth=!1,this.dirtyId=0,this.dirtyFormat=0,this.dirtySize=0,this.depthTexture=null,this.colorTextures=[],this.glFramebuffers={},this.disposeRunner=new W0("disposeFramebuffer"),this.multisample=e.NONE}get colorTexture(){return this.colorTextures[0]}addColorTexture(_=0,$){return this.colorTextures[_]=$||new p(null,{scaleMode:y0.NEAREST,resolution:1,mipmap:F0.OFF,width:this.width,height:this.height}),this.dirtyId++,this.dirtyFormat++,this}addDepthTexture(_){return this.depthTexture=_||new p(null,{scaleMode:y0.NEAREST,resolution:1,width:this.width,height:this.height,mipmap:F0.OFF,format:R.DEPTH_COMPONENT,type:g.UNSIGNED_SHORT}),this.dirtyId++,this.dirtyFormat++,this}enableDepth(){return this.depth=!0,this.dirtyId++,this.dirtyFormat++,this}enableStencil(){return this.stencil=!0,this.dirtyId++,this.dirtyFormat++,this}resize(_,$){if(_=Math.round(_),$=Math.round($),!_||!$)throw Error("Framebuffer width and height must not be zero");if(!(_===this.width&&$===this.height)){this.width=_,this.height=$,this.dirtyId++,this.dirtySize++;for(let J=0;J<this.colorTextures.length;J++){let Z=this.colorTextures[J],Q=Z.resolution;Z.setSize(_/Q,$/Q)}if(this.depthTexture){let J=this.depthTexture.resolution;this.depthTexture.setSize(_/J,$/J)}}}dispose(){this.disposeRunner.emit(this,!1)}destroyDepthTexture(){this.depthTexture&&(this.depthTexture.destroy(),this.depthTexture=null,++this.dirtyId,++this.dirtyFormat)}}class g1 extends p{constructor(_={}){if(typeof _=="number"){let $=arguments[0],J=arguments[1],Z=arguments[2],Q=arguments[3];_={width:$,height:J,scaleMode:Z,resolution:Q}}_.width=_.width??100,_.height=_.height??100,_.multisample??(_.multisample=e.NONE),super(null,_),this.mipmap=F0.OFF,this.valid=!0,this._clear=new s([0,0,0,0]),this.framebuffer=new G1(this.realWidth,this.realHeight).addColorTexture(0,this),this.framebuffer.multisample=_.multisample,this.maskStack=[],this.filterStack=[{}]}set clearColor(_){this._clear.setValue(_)}get clearColor(){return this._clear.value}get clear(){return this._clear}get multisample(){return this.framebuffer.multisample}set multisample(_){this.framebuffer.multisample=_}resize(_,$){this.framebuffer.resize(_*this.resolution,$*this.resolution),this.setRealSize(this.framebuffer.width,this.framebuffer.height)}dispose(){this.framebuffer.dispose(),super.dispose()}destroy(){super.destroy(),this.framebuffer.destroyDepthTexture(),this.framebuffer=null}}class b0 extends i0{constructor(_){let $=_,J=$.naturalWidth||$.videoWidth||$.displayWidth||$.width,Z=$.naturalHeight||$.videoHeight||$.displayHeight||$.height;super(J,Z),this.source=_,this.noSubImage=!1}static crossOrigin(_,$,J){J===void 0&&!$.startsWith("data:")?_.crossOrigin=c6($):J!==!1&&(_.crossOrigin=typeof J=="string"?J:"anonymous")}upload(_,$,J,Z){let Q=_.gl,q=$.realWidth,K=$.realHeight;if(Z=Z||this.source,typeof HTMLImageElement<"u"&&Z instanceof HTMLImageElement){if(!Z.complete||Z.naturalWidth===0)return!1}else if(typeof HTMLVideoElement<"u"&&Z instanceof HTMLVideoElement&&Z.readyState<=1)return!1;return Q.pixelStorei(Q.UNPACK_PREMULTIPLY_ALPHA_WEBGL,$.alphaMode===K0.UNPACK),!this.noSubImage&&$.target===Q.TEXTURE_2D&&J.width===q&&J.height===K?Q.texSubImage2D(Q.TEXTURE_2D,0,0,0,$.format,J.type,Z):(J.width=q,J.height=K,Q.texImage2D($.target,0,J.internalFormat,$.format,J.type,Z)),!0}update(){if(this.destroyed)return;let _=this.source,$=_.naturalWidth||_.videoWidth||_.width,J=_.naturalHeight||_.videoHeight||_.height;this.resize($,J),super.update()}dispose(){this.source=null}}class p1 extends b0{constructor(_,$){if($=$||{},typeof _=="string"){let J=new Image;b0.crossOrigin(J,_,$.crossorigin),J.src=_,_=J}super(_),!_.complete&&this._width&&this._height&&(this._width=0,this._height=0),this.url=_.src,this._process=null,this.preserveBitmap=!1,this.createBitmap=($.createBitmap??B.CREATE_IMAGE_BITMAP)&&!!globalThis.createImageBitmap,this.alphaMode=typeof $.alphaMode=="number"?$.alphaMode:null,this.bitmap=null,this._load=null,$.autoLoad!==!1&&this.load()}load(_){return this._load?this._load:(_!==void 0&&(this.createBitmap=_),this._load=new Promise(($,J)=>{let Z=this.source;this.url=Z.src;let Q=()=>{this.destroyed||(Z.onload=null,Z.onerror=null,this.update(),this._load=null,this.createBitmap?$(this.process()):$(this))};Z.complete&&Z.src?Q():(Z.onload=Q,Z.onerror=(q)=>{J(q),this.onError.emit(q)})}),this._load)}process(){let _=this.source;if(this._process!==null)return this._process;if(this.bitmap!==null||!globalThis.createImageBitmap)return Promise.resolve(this);let $=globalThis.createImageBitmap,J=!_.crossOrigin||_.crossOrigin==="anonymous";return this._process=fetch(_.src,{mode:J?"cors":"no-cors"}).then((Z)=>Z.blob()).then((Z)=>$(Z,0,0,_.width,_.height,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===K0.UNPACK?"premultiply":"none"})).then((Z)=>this.destroyed?Promise.reject():(this.bitmap=Z,this.update(),this._process=null,Promise.resolve(this))),this._process}upload(_,$,J){if(typeof this.alphaMode=="number"&&($.alphaMode=this.alphaMode),!this.createBitmap)return super.upload(_,$,J);if(!this.bitmap&&(this.process(),!this.bitmap))return!1;if(super.upload(_,$,J,this.bitmap),!this.preserveBitmap){let Z=!0,Q=$._glTextures;for(let q in Q){let K=Q[q];if(K!==J&&K.dirtyId!==$.dirtyId){Z=!1;break}}Z&&(this.bitmap.close&&this.bitmap.close(),this.bitmap=null)}return!0}dispose(){this.source.onload=null,this.source.onerror=null,super.dispose(),this.bitmap&&(this.bitmap.close(),this.bitmap=null),this._process=null,this._load=null}static test(_){return typeof HTMLImageElement<"u"&&(typeof _=="string"||_ instanceof HTMLImageElement)}}class x1{constructor(){this.x0=0,this.y0=0,this.x1=1,this.y1=0,this.x2=1,this.y2=1,this.x3=0,this.y3=1,this.uvsFloat32=new Float32Array(8)}set(_,$,J){let{width:Z,height:Q}=$;if(J){let q=_.width/2/Z,K=_.height/2/Q,V=_.x/Z+q,H=_.y/Q+K;J=Q0.add(J,Q0.NW),this.x0=V+q*Q0.uX(J),this.y0=H+K*Q0.uY(J),J=Q0.add(J,2),this.x1=V+q*Q0.uX(J),this.y1=H+K*Q0.uY(J),J=Q0.add(J,2),this.x2=V+q*Q0.uX(J),this.y2=H+K*Q0.uY(J),J=Q0.add(J,2),this.x3=V+q*Q0.uX(J),this.y3=H+K*Q0.uY(J)}else this.x0=_.x/Z,this.y0=_.y/Q,this.x1=(_.x+_.width)/Z,this.y1=_.y/Q,this.x2=(_.x+_.width)/Z,this.y2=(_.y+_.height)/Q,this.x3=_.x/Z,this.y3=(_.y+_.height)/Q;this.uvsFloat32[0]=this.x0,this.uvsFloat32[1]=this.y0,this.uvsFloat32[2]=this.x1,this.uvsFloat32[3]=this.y1,this.uvsFloat32[4]=this.x2,this.uvsFloat32[5]=this.y2,this.uvsFloat32[6]=this.x3,this.uvsFloat32[7]=this.y3}}x1.prototype.toString=function(){return`[@pixi/core:TextureUvs x0=${this.x0} y0=${this.y0} x1=${this.x1} y1=${this.y1} x2=${this.x2} y2=${this.y2} x3=${this.x3} y3=${this.y3}]`};var zJ=new x1;function s6(_){_.destroy=function(){},_.on=function(){},_.once=function(){},_.emit=function(){}}class E extends g_.default{constructor(_,$,J,Z,Q,q,K){if(super(),this.noFrame=!1,$||(this.noFrame=!0,$=new x(0,0,1,1)),_ instanceof E&&(_=_.baseTexture),this.baseTexture=_,this._frame=$,this.trim=Z,this.valid=!1,this.destroyed=!1,this._uvs=zJ,this.uvMatrix=null,this.orig=J||$,this._rotate=Number(Q||0),Q===!0)this._rotate=2;else if(this._rotate%2!==0)throw Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");this.defaultAnchor=q?new u(q.x,q.y):new u(0,0),this.defaultBorders=K,this._updateID=0,this.textureCacheIds=[],_.valid?this.noFrame?_.valid&&this.onBaseTextureUpdated(_):this.frame=$:_.once("loaded",this.onBaseTextureUpdated,this),this.noFrame&&_.on("update",this.onBaseTextureUpdated,this)}update(){this.baseTexture.resource&&this.baseTexture.resource.update()}onBaseTextureUpdated(_){if(this.noFrame){if(!this.baseTexture.valid)return;this._frame.width=_.width,this._frame.height=_.height,this.valid=!0,this.updateUvs()}else this.frame=this._frame;this.emit("update",this)}destroy(_){if(this.baseTexture){if(_){let{resource:$}=this.baseTexture;$?.url&&U0[$.url]&&E.removeFromCache($.url),this.baseTexture.destroy()}this.baseTexture.off("loaded",this.onBaseTextureUpdated,this),this.baseTexture.off("update",this.onBaseTextureUpdated,this),this.baseTexture=null}this._frame=null,this._uvs=null,this.trim=null,this.orig=null,this.valid=!1,E.removeFromCache(this),this.textureCacheIds=null,this.destroyed=!0,this.emit("destroyed",this),this.removeAllListeners()}clone(){let _=this._frame.clone(),$=this._frame===this.orig?_:this.orig.clone(),J=new E(this.baseTexture,!this.noFrame&&_,$,this.trim?.clone(),this.rotate,this.defaultAnchor,this.defaultBorders);return this.noFrame&&(J._frame=_),J}updateUvs(){this._uvs===zJ&&(this._uvs=new x1),this._uvs.set(this._frame,this.baseTexture,this.rotate),this._updateID++}static from(_,$={},J=B.STRICT_TEXTURE_CACHE){let Z=typeof _=="string",Q=null;if(Z)Q=_;else if(_ instanceof p){if(!_.cacheId){let K=$?.pixiIdPrefix||"pixiid";_.cacheId=`${K}-${W_()}`,p.addToCache(_,_.cacheId)}Q=_.cacheId}else{if(!_._pixiId){let K=$?.pixiIdPrefix||"pixiid";_._pixiId=`${K}_${W_()}`}Q=_._pixiId}let q=U0[Q];if(Z&&J&&!q)throw Error(`The cacheId "${Q}" does not exist in TextureCache.`);return!q&&!(_ instanceof p)?($.resolution||($.resolution=j5(_)),q=new E(new p(_,$)),q.baseTexture.cacheId=Q,p.addToCache(q.baseTexture,Q),E.addToCache(q,Q)):!q&&_ instanceof p&&(q=new E(_),E.addToCache(q,Q)),q}static fromURL(_,$){let J=Object.assign({autoLoad:!1},$?.resourceOptions),Z=E.from(_,Object.assign({resourceOptions:J},$),!1),Q=Z.baseTexture.resource;return Z.baseTexture.valid?Promise.resolve(Z):Q.load().then(()=>Promise.resolve(Z))}static fromBuffer(_,$,J,Z){return new E(p.fromBuffer(_,$,J,Z))}static fromLoader(_,$,J,Z){let Q=new p(_,Object.assign({scaleMode:p.defaultOptions.scaleMode,resolution:j5($)},Z)),{resource:q}=Q;q instanceof p1&&(q.url=$);let K=new E(Q);return J||(J=$),p.addToCache(K.baseTexture,J),E.addToCache(K,J),J!==$&&(p.addToCache(K.baseTexture,$),E.addToCache(K,$)),K.baseTexture.valid?Promise.resolve(K):new Promise((V)=>{K.baseTexture.once("loaded",()=>V(K))})}static addToCache(_,$){$&&(_.textureCacheIds.includes($)||_.textureCacheIds.push($),U0[$]&&U0[$]!==_&&console.warn(`Texture added to the cache with an id [${$}] that already had an entry`),U0[$]=_)}static removeFromCache(_){if(typeof _=="string"){let $=U0[_];if($){let J=$.textureCacheIds.indexOf(_);return J>-1&&$.textureCacheIds.splice(J,1),delete U0[_],$}}else if(_?.textureCacheIds){for(let $=0;$<_.textureCacheIds.length;++$)U0[_.textureCacheIds[$]]===_&&delete U0[_.textureCacheIds[$]];return _.textureCacheIds.length=0,_}return null}get resolution(){return this.baseTexture.resolution}get frame(){return this._frame}set frame(_){this._frame=_,this.noFrame=!1;let{x:$,y:J,width:Z,height:Q}=_,q=$+Z>this.baseTexture.width,K=J+Q>this.baseTexture.height;if(q||K){let V=q&&K?"and":"or",H=`X: ${$} + ${Z} = ${$+Z} > ${this.baseTexture.width}`,w=`Y: ${J} + ${Q} = ${J+Q} > ${this.baseTexture.height}`;throw Error(`Texture Error: frame does not fit inside the base Texture dimensions: ${H} ${V} ${w}`)}this.valid=Z&&Q&&this.baseTexture.valid,!this.trim&&!this.rotate&&(this.orig=_),this.valid&&this.updateUvs()}get rotate(){return this._rotate}set rotate(_){this._rotate=_,this.valid&&this.updateUvs()}get width(){return this.orig.width}get height(){return this.orig.height}castToBaseTexture(){return this.baseTexture}static get EMPTY(){return E._EMPTY||(E._EMPTY=new E(new p),s6(E._EMPTY),s6(E._EMPTY.baseTexture)),E._EMPTY}static get WHITE(){if(!E._WHITE){let _=B.ADAPTER.createCanvas(16,16),$=_.getContext("2d");_.width=16,_.height=16,$.fillStyle="white",$.fillRect(0,0,16,16),E._WHITE=new E(p.from(_)),s6(E._WHITE),s6(E._WHITE.baseTexture)}return E._WHITE}}class a0 extends E{constructor(_,$){super(_,$),this.valid=!0,this.filterFrame=null,this.filterPoolKey=null,this.updateUvs()}get framebuffer(){return this.baseTexture.framebuffer}get multisample(){return this.framebuffer.multisample}set multisample(_){this.framebuffer.multisample=_}resize(_,$,J=!0){let Z=this.baseTexture.resolution,Q=Math.round(_*Z)/Z,q=Math.round($*Z)/Z;this.valid=Q>0&&q>0,this._frame.width=this.orig.width=Q,this._frame.height=this.orig.height=q,J&&this.baseTexture.resize(Q,q),this.updateUvs()}setResolution(_){let{baseTexture:$}=this;$.resolution!==_&&($.setResolution(_),this.resize($.width,$.height,!1))}static create(_){return new a0(new g1(_))}}class E5{constructor(_){this.texturePool={},this.textureOptions=_||{},this.enableFullScreen=!1,this._pixelsWidth=0,this._pixelsHeight=0}createTexture(_,$,J=e.NONE){let Z=new g1(Object.assign({width:_,height:$,resolution:1,multisample:J},this.textureOptions));return new a0(Z)}getOptimalTexture(_,$,J=1,Z=e.NONE){let Q;_=Math.max(Math.ceil(_*J-0.000001),1),$=Math.max(Math.ceil($*J-0.000001),1),!this.enableFullScreen||_!==this._pixelsWidth||$!==this._pixelsHeight?(_=d_(_),$=d_($),Q=((_&65535)<<16|$&65535)>>>0,Z>1&&(Q+=Z*4294967296)):Q=Z>1?-Z:-1,this.texturePool[Q]||(this.texturePool[Q]=[]);let q=this.texturePool[Q].pop();return q||(q=this.createTexture(_,$,Z)),q.filterPoolKey=Q,q.setResolution(J),q}getFilterTexture(_,$,J){let Z=this.getOptimalTexture(_.width,_.height,$||_.resolution,J||e.NONE);return Z.filterFrame=_.filterFrame,Z}returnTexture(_){let $=_.filterPoolKey;_.filterFrame=null,this.texturePool[$].push(_)}returnFilterTexture(_){this.returnTexture(_)}clear(_){if(_=_!==!1,_)for(let $ in this.texturePool){let J=this.texturePool[$];if(J)for(let Z=0;Z<J.length;Z++)J[Z].destroy(!0)}this.texturePool={}}setScreenSize(_){if(!(_.width===this._pixelsWidth&&_.height===this._pixelsHeight)){this.enableFullScreen=_.width>0&&_.height>0;for(let $ in this.texturePool){if(!(Number($)<0))continue;let J=this.texturePool[$];if(J)for(let Z=0;Z<J.length;Z++)J[Z].destroy(!0);this.texturePool[$]=[]}this._pixelsWidth=_.width,this._pixelsHeight=_.height}}}E5.SCREEN_KEY=-1;class i6 extends T0{constructor(){super(),this.addAttribute("aVertexPosition",new Float32Array([0,0,1,0,1,1,0,1])).addIndex([0,1,3,2])}}class m1 extends T0{constructor(){super(),this.vertices=new Float32Array([-1,-1,1,-1,1,1,-1,1]),this.uvs=new Float32Array([0,0,1,0,1,1,0,1]),this.vertexBuffer=new _0(this.vertices),this.uvBuffer=new _0(this.uvs),this.addAttribute("aVertexPosition",this.vertexBuffer).addAttribute("aTextureCoord",this.uvBuffer).addIndex([0,1,2,0,2,3])}map(_,$){let J=0,Z=0;return this.uvs[0]=J,this.uvs[1]=Z,this.uvs[2]=J+$.width/_.width,this.uvs[3]=Z,this.uvs[4]=J+$.width/_.width,this.uvs[5]=Z+$.height/_.height,this.uvs[6]=J,this.uvs[7]=Z+$.height/_.height,J=$.x,Z=$.y,this.vertices[0]=J,this.vertices[1]=Z,this.vertices[2]=J+$.width,this.vertices[3]=Z,this.vertices[4]=J+$.width,this.vertices[5]=Z+$.height,this.vertices[6]=J,this.vertices[7]=Z+$.height,this.invalidate(),this}invalidate(){return this.vertexBuffer._updateID++,this.uvBuffer._updateID++,this}}class a6{constructor(){this.renderTexture=null,this.target=null,this.legacy=!1,this.resolution=1,this.multisample=e.NONE,this.sourceFrame=new x,this.destinationFrame=new x,this.bindingSourceFrame=new x,this.bindingDestinationFrame=new x,this.filters=[],this.transform=null}clear(){this.target=null,this.filters=null,this.renderTexture=null}}var r6=[new u,new u,new u,new u],t9=new o;class v5{constructor(_){this.renderer=_,this.defaultFilterStack=[{}],this.texturePool=new E5,this.statePool=[],this.quad=new i6,this.quadUv=new m1,this.tempRect=new x,this.activeState={},this.globalUniforms=new O0({outputFrame:new x,inputSize:new Float32Array(4),inputPixel:new Float32Array(4),inputClamp:new Float32Array(4),resolution:1,filterArea:new Float32Array(4),filterClamp:new Float32Array(4)},!0),this.forceClear=!1,this.useMaxPadding=!1}init(){this.texturePool.setScreenSize(this.renderer.view)}push(_,$){let J=this.renderer,Z=this.defaultFilterStack,Q=this.statePool.pop()||new a6,q=J.renderTexture,K,V;if(q.current){let k=q.current;K=k.resolution,V=k.multisample}else K=J.resolution,V=J.multisample;let H=$[0].resolution||K,w=$[0].multisample??V,h=$[0].padding,z=$[0].autoFit,X=$[0].legacy??!0;for(let k=1;k<$.length;k++){let C=$[k];H=Math.min(H,C.resolution||K),w=Math.min(w,C.multisample??V),h=this.useMaxPadding?Math.max(h,C.padding):h+C.padding,z=z&&C.autoFit,X=X||(C.legacy??!0)}Z.length===1&&(this.defaultFilterStack[0].renderTexture=q.current),Z.push(Q),Q.resolution=H,Q.multisample=w,Q.legacy=X,Q.target=_,Q.sourceFrame.copyFrom(_.filterArea||_.getBounds(!0)),Q.sourceFrame.pad(h);let W=this.tempRect.copyFrom(q.sourceFrame);J.projection.transform&&this.transformAABB(t9.copyFrom(J.projection.transform).invert(),W),z?(Q.sourceFrame.fit(W),(Q.sourceFrame.width<=0||Q.sourceFrame.height<=0)&&(Q.sourceFrame.width=0,Q.sourceFrame.height=0)):Q.sourceFrame.intersects(W)||(Q.sourceFrame.width=0,Q.sourceFrame.height=0),this.roundFrame(Q.sourceFrame,q.current?q.current.resolution:J.resolution,q.sourceFrame,q.destinationFrame,J.projection.transform),Q.renderTexture=this.getOptimalFilterTexture(Q.sourceFrame.width,Q.sourceFrame.height,H,w),Q.filters=$,Q.destinationFrame.width=Q.renderTexture.width,Q.destinationFrame.height=Q.renderTexture.height;let G=this.tempRect;G.x=0,G.y=0,G.width=Q.sourceFrame.width,G.height=Q.sourceFrame.height,Q.renderTexture.filterFrame=Q.sourceFrame,Q.bindingSourceFrame.copyFrom(q.sourceFrame),Q.bindingDestinationFrame.copyFrom(q.destinationFrame),Q.transform=J.projection.transform,J.projection.transform=null,q.bind(Q.renderTexture,Q.sourceFrame,G),J.framebuffer.clear(0,0,0,0)}pop(){let _=this.defaultFilterStack,$=_.pop(),J=$.filters;this.activeState=$;let Z=this.globalUniforms.uniforms;Z.outputFrame=$.sourceFrame,Z.resolution=$.resolution;let{inputSize:Q,inputPixel:q,inputClamp:K}=Z;if(Q[0]=$.destinationFrame.width,Q[1]=$.destinationFrame.height,Q[2]=1/Q[0],Q[3]=1/Q[1],q[0]=Math.round(Q[0]*$.resolution),q[1]=Math.round(Q[1]*$.resolution),q[2]=1/q[0],q[3]=1/q[1],K[0]=0.5*q[2],K[1]=0.5*q[3],K[2]=$.sourceFrame.width*Q[2]-0.5*q[2],K[3]=$.sourceFrame.height*Q[3]-0.5*q[3],$.legacy){let H=Z.filterArea;H[0]=$.destinationFrame.width,H[1]=$.destinationFrame.height,H[2]=$.sourceFrame.x,H[3]=$.sourceFrame.y,Z.filterClamp=Z.inputClamp}this.globalUniforms.update();let V=_[_.length-1];if(this.renderer.framebuffer.blit(),J.length===1)J[0].apply(this,$.renderTexture,V.renderTexture,m0.BLEND,$),this.returnFilterTexture($.renderTexture);else{let H=$.renderTexture,w=this.getOptimalFilterTexture(H.width,H.height,$.resolution);w.filterFrame=H.filterFrame;let h=0;for(h=0;h<J.length-1;++h){h===1&&$.multisample>1&&(w=this.getOptimalFilterTexture(H.width,H.height,$.resolution),w.filterFrame=H.filterFrame),J[h].apply(this,H,w,m0.CLEAR,$);let z=H;H=w,w=z}J[h].apply(this,H,V.renderTexture,m0.BLEND,$),h>1&&$.multisample>1&&this.returnFilterTexture($.renderTexture),this.returnFilterTexture(H),this.returnFilterTexture(w)}$.clear(),this.statePool.push($)}bindAndClear(_,$=m0.CLEAR){let{renderTexture:J,state:Z}=this.renderer;if(_===this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?this.renderer.projection.transform=this.activeState.transform:this.renderer.projection.transform=null,_?.filterFrame){let q=this.tempRect;q.x=0,q.y=0,q.width=_.filterFrame.width,q.height=_.filterFrame.height,J.bind(_,_.filterFrame,q)}else _!==this.defaultFilterStack[this.defaultFilterStack.length-1].renderTexture?J.bind(_):this.renderer.renderTexture.bind(_,this.activeState.bindingSourceFrame,this.activeState.bindingDestinationFrame);let Q=Z.stateId&1||this.forceClear;($===m0.CLEAR||$===m0.BLIT&&Q)&&this.renderer.framebuffer.clear(0,0,0,0)}applyFilter(_,$,J,Z){let Q=this.renderer;Q.state.set(_.state),this.bindAndClear(J,Z),_.uniforms.uSampler=$,_.uniforms.filterGlobals=this.globalUniforms,Q.shader.bind(_),_.legacy=!!_.program.attributeData.aTextureCoord,_.legacy?(this.quadUv.map($._frame,$.filterFrame),Q.geometry.bind(this.quadUv),Q.geometry.draw(c0.TRIANGLES)):(Q.geometry.bind(this.quad),Q.geometry.draw(c0.TRIANGLE_STRIP))}calculateSpriteMatrix(_,$){let{sourceFrame:J,destinationFrame:Z}=this.activeState,{orig:Q}=$._texture,q=_.set(Z.width,0,0,Z.height,J.x,J.y),K=$.worldTransform.copyTo(o.TEMP_MATRIX);return K.invert(),q.prepend(K),q.scale(1/Q.width,1/Q.height),q.translate($.anchor.x,$.anchor.y),q}destroy(){this.renderer=null,this.texturePool.clear(!1)}getOptimalFilterTexture(_,$,J=1,Z=e.NONE){return this.texturePool.getOptimalTexture(_,$,J,Z)}getFilterTexture(_,$,J){if(typeof _=="number"){let Q=_;_=$,$=Q}_=_||this.activeState.renderTexture;let Z=this.texturePool.getOptimalTexture(_.width,_.height,$||_.resolution,J||e.NONE);return Z.filterFrame=_.filterFrame,Z}returnFilterTexture(_){this.texturePool.returnTexture(_)}emptyPool(){this.texturePool.clear(!0)}resize(){this.texturePool.setScreenSize(this.renderer.view)}transformAABB(_,$){let J=r6[0],Z=r6[1],Q=r6[2],q=r6[3];J.set($.left,$.top),Z.set($.left,$.bottom),Q.set($.right,$.top),q.set($.right,$.bottom),_.apply(J,J),_.apply(Z,Z),_.apply(Q,Q),_.apply(q,q);let K=Math.min(J.x,Z.x,Q.x,q.x),V=Math.min(J.y,Z.y,Q.y,q.y),H=Math.max(J.x,Z.x,Q.x,q.x),w=Math.max(J.y,Z.y,Q.y,q.y);$.x=K,$.y=V,$.width=H-K,$.height=w-V}roundFrame(_,$,J,Z,Q){if(!(_.width<=0||_.height<=0||J.width<=0||J.height<=0)){if(Q){let{a:q,b:K,c:V,d:H}=Q;if((Math.abs(K)>0.0001||Math.abs(V)>0.0001)&&(Math.abs(q)>0.0001||Math.abs(H)>0.0001))return}Q=Q?t9.copyFrom(Q):t9.identity(),Q.translate(-J.x,-J.y).scale(Z.width/J.width,Z.height/J.height).translate(Z.x,Z.y),this.transformAABB(Q,_),_.ceil($),this.transformAABB(Q.invert(),_)}}}v5.extension={type:b.RendererSystem,name:"filter"};O.add(v5);class t6{constructor(_){this.framebuffer=_,this.stencil=null,this.dirtyId=-1,this.dirtyFormat=-1,this.dirtySize=-1,this.multisample=e.NONE,this.msaaBuffer=null,this.blitFramebuffer=null,this.mipLevel=0}}var D2=new x;class c5{constructor(_){this.renderer=_,this.managedFramebuffers=[],this.unknownFramebuffer=new G1(10,10),this.msaaSamples=null}contextChange(){this.disposeAll(!0);let _=this.gl=this.renderer.gl;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.current=this.unknownFramebuffer,this.viewport=new x,this.hasMRT=!0,this.writeDepthTexture=!0,this.renderer.context.webGLVersion===1){let $=this.renderer.context.extensions.drawBuffers,J=this.renderer.context.extensions.depthTexture;B.PREFER_ENV===p0.WEBGL_LEGACY&&($=null,J=null),$?_.drawBuffers=(Z)=>$.drawBuffersWEBGL(Z):(this.hasMRT=!1,_.drawBuffers=()=>{}),J||(this.writeDepthTexture=!1)}else this.msaaSamples=_.getInternalformatParameter(_.RENDERBUFFER,_.RGBA8,_.SAMPLES)}bind(_,$,J=0){let{gl:Z}=this;if(_){let Q=_.glFramebuffers[this.CONTEXT_UID]||this.initFramebuffer(_);this.current!==_&&(this.current=_,Z.bindFramebuffer(Z.FRAMEBUFFER,Q.framebuffer)),Q.mipLevel!==J&&(_.dirtyId++,_.dirtyFormat++,Q.mipLevel=J),Q.dirtyId!==_.dirtyId&&(Q.dirtyId=_.dirtyId,Q.dirtyFormat!==_.dirtyFormat?(Q.dirtyFormat=_.dirtyFormat,Q.dirtySize=_.dirtySize,this.updateFramebuffer(_,J)):Q.dirtySize!==_.dirtySize&&(Q.dirtySize=_.dirtySize,this.resizeFramebuffer(_)));for(let q=0;q<_.colorTextures.length;q++){let K=_.colorTextures[q];this.renderer.texture.unbind(K.parentTextureArray||K)}if(_.depthTexture&&this.renderer.texture.unbind(_.depthTexture),$){let q=$.width>>J,K=$.height>>J,V=q/$.width;this.setViewport($.x*V,$.y*V,q,K)}else{let q=_.width>>J,K=_.height>>J;this.setViewport(0,0,q,K)}}else this.current&&(this.current=null,Z.bindFramebuffer(Z.FRAMEBUFFER,null)),$?this.setViewport($.x,$.y,$.width,$.height):this.setViewport(0,0,this.renderer.width,this.renderer.height)}setViewport(_,$,J,Z){let Q=this.viewport;_=Math.round(_),$=Math.round($),J=Math.round(J),Z=Math.round(Z),(Q.width!==J||Q.height!==Z||Q.x!==_||Q.y!==$)&&(Q.x=_,Q.y=$,Q.width=J,Q.height=Z,this.gl.viewport(_,$,J,Z))}get size(){return this.current?{x:0,y:0,width:this.current.width,height:this.current.height}:{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}clear(_,$,J,Z,Q=b6.COLOR|b6.DEPTH){let{gl:q}=this;q.clearColor(_,$,J,Z),q.clear(Q)}initFramebuffer(_){let{gl:$}=this,J=new t6($.createFramebuffer());return J.multisample=this.detectSamples(_.multisample),_.glFramebuffers[this.CONTEXT_UID]=J,this.managedFramebuffers.push(_),_.disposeRunner.add(this),J}resizeFramebuffer(_){let{gl:$}=this,J=_.glFramebuffers[this.CONTEXT_UID];if(J.stencil){$.bindRenderbuffer($.RENDERBUFFER,J.stencil);let q;this.renderer.context.webGLVersion===1?q=$.DEPTH_STENCIL:_.depth&&_.stencil?q=$.DEPTH24_STENCIL8:_.depth?q=$.DEPTH_COMPONENT24:q=$.STENCIL_INDEX8,J.msaaBuffer?$.renderbufferStorageMultisample($.RENDERBUFFER,J.multisample,q,_.width,_.height):$.renderbufferStorage($.RENDERBUFFER,q,_.width,_.height)}let Z=_.colorTextures,Q=Z.length;$.drawBuffers||(Q=Math.min(Q,1));for(let q=0;q<Q;q++){let K=Z[q],V=K.parentTextureArray||K;this.renderer.texture.bind(V,0),q===0&&J.msaaBuffer&&($.bindRenderbuffer($.RENDERBUFFER,J.msaaBuffer),$.renderbufferStorageMultisample($.RENDERBUFFER,J.multisample,V._glTextures[this.CONTEXT_UID].internalFormat,_.width,_.height))}_.depthTexture&&this.writeDepthTexture&&this.renderer.texture.bind(_.depthTexture,0)}updateFramebuffer(_,$){let{gl:J}=this,Z=_.glFramebuffers[this.CONTEXT_UID],Q=_.colorTextures,q=Q.length;J.drawBuffers||(q=Math.min(q,1)),Z.multisample>1&&this.canMultisampleFramebuffer(_)?Z.msaaBuffer=Z.msaaBuffer||J.createRenderbuffer():Z.msaaBuffer&&(J.deleteRenderbuffer(Z.msaaBuffer),Z.msaaBuffer=null,Z.blitFramebuffer&&(Z.blitFramebuffer.dispose(),Z.blitFramebuffer=null));let K=[];for(let V=0;V<q;V++){let H=Q[V],w=H.parentTextureArray||H;this.renderer.texture.bind(w,0),V===0&&Z.msaaBuffer?(J.bindRenderbuffer(J.RENDERBUFFER,Z.msaaBuffer),J.renderbufferStorageMultisample(J.RENDERBUFFER,Z.multisample,w._glTextures[this.CONTEXT_UID].internalFormat,_.width,_.height),J.framebufferRenderbuffer(J.FRAMEBUFFER,J.COLOR_ATTACHMENT0,J.RENDERBUFFER,Z.msaaBuffer)):(J.framebufferTexture2D(J.FRAMEBUFFER,J.COLOR_ATTACHMENT0+V,H.target,w._glTextures[this.CONTEXT_UID].texture,$),K.push(J.COLOR_ATTACHMENT0+V))}if(K.length>1&&J.drawBuffers(K),_.depthTexture&&this.writeDepthTexture){let V=_.depthTexture;this.renderer.texture.bind(V,0),J.framebufferTexture2D(J.FRAMEBUFFER,J.DEPTH_ATTACHMENT,J.TEXTURE_2D,V._glTextures[this.CONTEXT_UID].texture,$)}if((_.stencil||_.depth)&&!(_.depthTexture&&this.writeDepthTexture)){Z.stencil=Z.stencil||J.createRenderbuffer();let V,H;this.renderer.context.webGLVersion===1?(V=J.DEPTH_STENCIL_ATTACHMENT,H=J.DEPTH_STENCIL):_.depth&&_.stencil?(V=J.DEPTH_STENCIL_ATTACHMENT,H=J.DEPTH24_STENCIL8):_.depth?(V=J.DEPTH_ATTACHMENT,H=J.DEPTH_COMPONENT24):(V=J.STENCIL_ATTACHMENT,H=J.STENCIL_INDEX8),J.bindRenderbuffer(J.RENDERBUFFER,Z.stencil),Z.msaaBuffer?J.renderbufferStorageMultisample(J.RENDERBUFFER,Z.multisample,H,_.width,_.height):J.renderbufferStorage(J.RENDERBUFFER,H,_.width,_.height),J.framebufferRenderbuffer(J.FRAMEBUFFER,V,J.RENDERBUFFER,Z.stencil)}else Z.stencil&&(J.deleteRenderbuffer(Z.stencil),Z.stencil=null)}canMultisampleFramebuffer(_){return this.renderer.context.webGLVersion!==1&&_.colorTextures.length<=1&&!_.depthTexture}detectSamples(_){let{msaaSamples:$}=this,J=e.NONE;if(_<=1||$===null)return J;for(let Z=0;Z<$.length;Z++)if($[Z]<=_){J=$[Z];break}return J===1&&(J=e.NONE),J}blit(_,$,J){let{current:Z,renderer:Q,gl:q,CONTEXT_UID:K}=this;if(Q.context.webGLVersion!==2||!Z)return;let V=Z.glFramebuffers[K];if(!V)return;if(!_){if(!V.msaaBuffer)return;let w=Z.colorTextures[0];if(!w)return;V.blitFramebuffer||(V.blitFramebuffer=new G1(Z.width,Z.height),V.blitFramebuffer.addColorTexture(0,w)),_=V.blitFramebuffer,_.colorTextures[0]!==w&&(_.colorTextures[0]=w,_.dirtyId++,_.dirtyFormat++),(_.width!==Z.width||_.height!==Z.height)&&(_.width=Z.width,_.height=Z.height,_.dirtyId++,_.dirtySize++)}$||($=D2,$.width=Z.width,$.height=Z.height),J||(J=$);let H=$.width===J.width&&$.height===J.height;this.bind(_),q.bindFramebuffer(q.READ_FRAMEBUFFER,V.framebuffer),q.blitFramebuffer($.left,$.top,$.right,$.bottom,J.left,J.top,J.right,J.bottom,q.COLOR_BUFFER_BIT,H?q.NEAREST:q.LINEAR),q.bindFramebuffer(q.READ_FRAMEBUFFER,_.glFramebuffers[this.CONTEXT_UID].framebuffer)}disposeFramebuffer(_,$){let J=_.glFramebuffers[this.CONTEXT_UID],Z=this.gl;if(!J)return;delete _.glFramebuffers[this.CONTEXT_UID];let Q=this.managedFramebuffers.indexOf(_);Q>=0&&this.managedFramebuffers.splice(Q,1),_.disposeRunner.remove(this),$||(Z.deleteFramebuffer(J.framebuffer),J.msaaBuffer&&Z.deleteRenderbuffer(J.msaaBuffer),J.stencil&&Z.deleteRenderbuffer(J.stencil)),J.blitFramebuffer&&this.disposeFramebuffer(J.blitFramebuffer,$)}disposeAll(_){let $=this.managedFramebuffers;this.managedFramebuffers=[];for(let J=0;J<$.length;J++)this.disposeFramebuffer($[J],_)}forceStencil(){let _=this.current;if(!_)return;let $=_.glFramebuffers[this.CONTEXT_UID];if(!$||$.stencil&&_.stencil)return;_.stencil=!0;let{width:J,height:Z}=_,Q=this.gl,q=$.stencil=Q.createRenderbuffer();Q.bindRenderbuffer(Q.RENDERBUFFER,q);let K,V;this.renderer.context.webGLVersion===1?(K=Q.DEPTH_STENCIL_ATTACHMENT,V=Q.DEPTH_STENCIL):_.depth?(K=Q.DEPTH_STENCIL_ATTACHMENT,V=Q.DEPTH24_STENCIL8):(K=Q.STENCIL_ATTACHMENT,V=Q.STENCIL_INDEX8),$.msaaBuffer?Q.renderbufferStorageMultisample(Q.RENDERBUFFER,$.multisample,V,J,Z):Q.renderbufferStorage(Q.RENDERBUFFER,V,J,Z),Q.framebufferRenderbuffer(Q.FRAMEBUFFER,K,Q.RENDERBUFFER,q)}reset(){this.current=this.unknownFramebuffer,this.viewport=new x}destroy(){this.renderer=null}}c5.extension={type:b.RendererSystem,name:"framebuffer"};O.add(c5);var e9={5126:4,5123:2,5121:1};class y5{constructor(_){this.renderer=_,this._activeGeometry=null,this._activeVao=null,this.hasVao=!0,this.hasInstance=!0,this.canUseUInt32ElementIndex=!1,this.managedGeometries={}}contextChange(){this.disposeAll(!0);let _=this.gl=this.renderer.gl,$=this.renderer.context;if(this.CONTEXT_UID=this.renderer.CONTEXT_UID,$.webGLVersion!==2){let J=this.renderer.context.extensions.vertexArrayObject;B.PREFER_ENV===p0.WEBGL_LEGACY&&(J=null),J?(_.createVertexArray=()=>J.createVertexArrayOES(),_.bindVertexArray=(Z)=>J.bindVertexArrayOES(Z),_.deleteVertexArray=(Z)=>J.deleteVertexArrayOES(Z)):(this.hasVao=!1,_.createVertexArray=()=>null,_.bindVertexArray=()=>null,_.deleteVertexArray=()=>null)}if($.webGLVersion!==2){let J=_.getExtension("ANGLE_instanced_arrays");J?(_.vertexAttribDivisor=(Z,Q)=>J.vertexAttribDivisorANGLE(Z,Q),_.drawElementsInstanced=(Z,Q,q,K,V)=>J.drawElementsInstancedANGLE(Z,Q,q,K,V),_.drawArraysInstanced=(Z,Q,q,K)=>J.drawArraysInstancedANGLE(Z,Q,q,K)):this.hasInstance=!1}this.canUseUInt32ElementIndex=$.webGLVersion===2||!!$.extensions.uint32ElementIndex}bind(_,$){$=$||this.renderer.shader.shader;let{gl:J}=this,Z=_.glVertexArrayObjects[this.CONTEXT_UID],Q=!1;Z||(this.managedGeometries[_.id]=_,_.disposeRunner.add(this),_.glVertexArrayObjects[this.CONTEXT_UID]=Z={},Q=!0);let q=Z[$.program.id]||this.initGeometryVao(_,$,Q);this._activeGeometry=_,this._activeVao!==q&&(this._activeVao=q,this.hasVao?J.bindVertexArray(q):this.activateVao(_,$.program)),this.updateBuffers()}reset(){this.unbind()}updateBuffers(){let _=this._activeGeometry,$=this.renderer.buffer;for(let J=0;J<_.buffers.length;J++){let Z=_.buffers[J];$.update(Z)}}checkCompatibility(_,$){let J=_.attributes,Z=$.attributeData;for(let Q in Z)if(!J[Q])throw Error(`shader and geometry incompatible, geometry missing the "${Q}" attribute`)}getSignature(_,$){let J=_.attributes,Z=$.attributeData,Q=["g",_.id];for(let q in J)Z[q]&&Q.push(q,Z[q].location);return Q.join("-")}initGeometryVao(_,$,J=!0){let Z=this.gl,Q=this.CONTEXT_UID,q=this.renderer.buffer,K=$.program;K.glPrograms[Q]||this.renderer.shader.generateProgram($),this.checkCompatibility(_,K);let V=this.getSignature(_,K),H=_.glVertexArrayObjects[this.CONTEXT_UID],w=H[V];if(w)return H[K.id]=w,w;let{buffers:h,attributes:z}=_,X={},W={};for(let G in h)X[G]=0,W[G]=0;for(let G in z)!z[G].size&&K.attributeData[G]?z[G].size=K.attributeData[G].size:z[G].size||console.warn(`PIXI Geometry attribute '${G}' size cannot be determined (likely the bound shader does not have the attribute)`),X[z[G].buffer]+=z[G].size*e9[z[G].type];for(let G in z){let k=z[G],C=k.size;k.stride===void 0&&(X[k.buffer]===C*e9[k.type]?k.stride=0:k.stride=X[k.buffer]),k.start===void 0&&(k.start=W[k.buffer],W[k.buffer]+=C*e9[k.type])}w=Z.createVertexArray(),Z.bindVertexArray(w);for(let G=0;G<h.length;G++){let k=h[G];q.bind(k),J&&k._glBuffers[Q].refCount++}return this.activateVao(_,K),H[K.id]=w,H[V]=w,Z.bindVertexArray(null),q.unbind(S0.ARRAY_BUFFER),w}disposeGeometry(_,$){if(!this.managedGeometries[_.id])return;delete this.managedGeometries[_.id];let J=_.glVertexArrayObjects[this.CONTEXT_UID],Z=this.gl,Q=_.buffers,q=this.renderer?.buffer;if(_.disposeRunner.remove(this),!!J){if(q)for(let K=0;K<Q.length;K++){let V=Q[K]._glBuffers[this.CONTEXT_UID];V&&(V.refCount--,V.refCount===0&&!$&&q.dispose(Q[K],$))}if(!$){for(let K in J)if(K[0]==="g"){let V=J[K];this._activeVao===V&&this.unbind(),Z.deleteVertexArray(V)}}delete _.glVertexArrayObjects[this.CONTEXT_UID]}}disposeAll(_){let $=Object.keys(this.managedGeometries);for(let J=0;J<$.length;J++)this.disposeGeometry(this.managedGeometries[$[J]],_)}activateVao(_,$){let J=this.gl,Z=this.CONTEXT_UID,Q=this.renderer.buffer,q=_.buffers,K=_.attributes;_.indexBuffer&&Q.bind(_.indexBuffer);let V=null;for(let H in K){let w=K[H],h=q[w.buffer],z=h._glBuffers[Z];if($.attributeData[H]){V!==z&&(Q.bind(h),V=z);let X=$.attributeData[H].location;if(J.enableVertexAttribArray(X),J.vertexAttribPointer(X,w.size,w.type||J.FLOAT,w.normalized,w.stride,w.start),w.instance)if(this.hasInstance)J.vertexAttribDivisor(X,w.divisor);else throw Error("geometry error, GPU Instancing is not supported on this device")}}}draw(_,$,J,Z){let{gl:Q}=this,q=this._activeGeometry;if(q.indexBuffer){let K=q.indexBuffer.data.BYTES_PER_ELEMENT,V=K===2?Q.UNSIGNED_SHORT:Q.UNSIGNED_INT;K===2||K===4&&this.canUseUInt32ElementIndex?q.instanced?Q.drawElementsInstanced(_,$||q.indexBuffer.data.length,V,(J||0)*K,Z||1):Q.drawElements(_,$||q.indexBuffer.data.length,V,(J||0)*K):console.warn("unsupported index buffer type: uint32")}else q.instanced?Q.drawArraysInstanced(_,J,$||q.getSize(),Z||1):Q.drawArrays(_,J,$||q.getSize());return this}unbind(){this.gl.bindVertexArray(null),this._activeVao=null,this._activeGeometry=null}destroy(){this.renderer=null}}y5.extension={type:b.RendererSystem,name:"geometry"};O.add(y5);var XJ=new o;class W1{constructor(_,$){this._texture=_,this.mapCoord=new o,this.uClampFrame=new Float32Array(4),this.uClampOffset=new Float32Array(2),this._textureID=-1,this._updateID=0,this.clampOffset=0,this.clampMargin=typeof $>"u"?0.5:$,this.isSimple=!1}get texture(){return this._texture}set texture(_){this._texture=_,this._textureID=-1}multiplyUvs(_,$){$===void 0&&($=_);let J=this.mapCoord;for(let Z=0;Z<_.length;Z+=2){let Q=_[Z],q=_[Z+1];$[Z]=Q*J.a+q*J.c+J.tx,$[Z+1]=Q*J.b+q*J.d+J.ty}return $}update(_){let $=this._texture;if(!$||!$.valid||!_&&this._textureID===$._updateID)return!1;this._textureID=$._updateID,this._updateID++;let J=$._uvs;this.mapCoord.set(J.x1-J.x0,J.y1-J.y0,J.x3-J.x0,J.y3-J.y0,J.x0,J.y0);let{orig:Z,trim:Q}=$;Q&&(XJ.set(Z.width/Q.width,0,0,Z.height/Q.height,-Q.x/Q.width,-Q.y/Q.height),this.mapCoord.append(XJ));let q=$.baseTexture,K=this.uClampFrame,V=this.clampMargin/q.resolution,H=this.clampOffset;return K[0]=($._frame.x+V+H)/q.width,K[1]=($._frame.y+V+H)/q.height,K[2]=($._frame.x+$._frame.width-V+H)/q.width,K[3]=($._frame.y+$._frame.height-V+H)/q.height,this.uClampOffset[0]=H/q.realWidth,this.uClampOffset[1]=H/q.realHeight,this.isSimple=$._frame.width===q.width&&$._frame.height===q.height&&$.rotate===0,!0}}var GJ=`varying vec2 vMaskCoord;
376
376
  varying vec2 vTextureCoord;
377
377
 
378
378
  uniform sampler2D uSampler;
@@ -397,7 +397,7 @@ void main(void)
397
397
 
398
398
  gl_FragColor = original;
399
399
  }
400
- `;var kJ=`attribute vec2 aVertexPosition;
400
+ `;var WJ=`attribute vec2 aVertexPosition;
401
401
  attribute vec2 aTextureCoord;
402
402
 
403
403
  uniform mat3 projectionMatrix;
@@ -413,7 +413,7 @@ void main(void)
413
413
  vTextureCoord = aTextureCoord;
414
414
  vMaskCoord = ( otherMatrix * vec3( aTextureCoord, 1.0) ).xy;
415
415
  }
416
- `;class e6 extends J0{constructor(_,$,J){let Z=null;typeof _!="string"&&$===void 0&&J===void 0&&(Z=_,_=void 0,$=void 0,J=void 0),super(_||kJ,$||WJ,J),this.maskSprite=Z,this.maskMatrix=new o}get maskSprite(){return this._maskSprite}set maskSprite(_){this._maskSprite=_,this._maskSprite&&(this._maskSprite.renderable=!1)}apply(_,$,J,Z){let Q=this._maskSprite,q=Q._texture;q.valid&&(q.uvMatrix||(q.uvMatrix=new W1(q,0)),q.uvMatrix.update(),this.uniforms.npmAlpha=q.baseTexture.alphaMode?0:1,this.uniforms.mask=q,this.uniforms.otherMatrix=_.calculateSpriteMatrix(this.maskMatrix,Q).prepend(q.uvMatrix.mapCoord),this.uniforms.alpha=Q.worldAlpha,this.uniforms.maskClamp=q.uvMatrix.uClampFrame,_.applyFilter(this,$,J,Z))}}class _8{constructor(_=null){this.type=X0.NONE,this.autoDetect=!0,this.maskObject=_||null,this.pooled=!1,this.isMaskData=!0,this.resolution=null,this.multisample=J0.defaultMultisample,this.enabled=!0,this.colorMask=15,this._filters=null,this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null,this._scissorRectLocal=null,this._colorMask=15,this._target=null}get filter(){return this._filters?this._filters[0]:null}set filter(_){_?this._filters?this._filters[0]=_:this._filters=[_]:this._filters=null}reset(){this.pooled&&(this.maskObject=null,this.type=X0.NONE,this.autoDetect=!0),this._target=null,this._scissorRectLocal=null}copyCountersOrReset(_){_?(this._stencilCounter=_._stencilCounter,this._scissorCounter=_._scissorCounter,this._scissorRect=_._scissorRect):(this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null)}}class S5{constructor(_){this.renderer=_,this.enableScissor=!0,this.alphaMaskPool=[],this.maskDataPool=[],this.maskStack=[],this.alphaMaskIndex=0}setMaskStack(_){this.maskStack=_,this.renderer.scissor.setMaskStack(_),this.renderer.stencil.setMaskStack(_)}push(_,$){let J=$;if(!J.isMaskData){let Q=this.maskDataPool.pop()||new _8;Q.pooled=!0,Q.maskObject=$,J=Q}let Z=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null;if(J.copyCountersOrReset(Z),J._colorMask=Z?Z._colorMask:15,J.autoDetect&&this.detect(J),J._target=_,J.type!==X0.SPRITE&&this.maskStack.push(J),J.enabled)switch(J.type){case X0.SCISSOR:this.renderer.scissor.push(J);break;case X0.STENCIL:this.renderer.stencil.push(J);break;case X0.SPRITE:J.copyCountersOrReset(null),this.pushSpriteMask(J);break;case X0.COLOR:this.pushColorMask(J);break;default:break}J.type===X0.SPRITE&&this.maskStack.push(J)}pop(_){let $=this.maskStack.pop();if(!(!$||$._target!==_)){if($.enabled)switch($.type){case X0.SCISSOR:this.renderer.scissor.pop($);break;case X0.STENCIL:this.renderer.stencil.pop($.maskObject);break;case X0.SPRITE:this.popSpriteMask($);break;case X0.COLOR:this.popColorMask($);break;default:break}if($.reset(),$.pooled&&this.maskDataPool.push($),this.maskStack.length!==0){let J=this.maskStack[this.maskStack.length-1];J.type===X0.SPRITE&&J._filters&&(J._filters[0].maskSprite=J.maskObject)}}}detect(_){let $=_.maskObject;$?$.isSprite?_.type=X0.SPRITE:this.enableScissor&&this.renderer.scissor.testScissor(_)?_.type=X0.SCISSOR:_.type=X0.STENCIL:_.type=X0.COLOR}pushSpriteMask(_){let{maskObject:$}=_,J=_._target,Z=_._filters;Z||(Z=this.alphaMaskPool[this.alphaMaskIndex],Z||(Z=this.alphaMaskPool[this.alphaMaskIndex]=[new e6])),Z[0].resolution=_.resolution,Z[0].multisample=_.multisample,Z[0].maskSprite=$;let Q=J.filterArea;J.filterArea=$.getBounds(!0),this.renderer.filter.push(J,Z),J.filterArea=Q,_._filters||this.alphaMaskIndex++}popSpriteMask(_){this.renderer.filter.pop(),_._filters?_._filters[0].maskSprite=null:(this.alphaMaskIndex--,this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite=null)}pushColorMask(_){let $=_._colorMask,J=_._colorMask=$&_.colorMask;J!==$&&this.renderer.gl.colorMask((J&1)!==0,(J&2)!==0,(J&4)!==0,(J&8)!==0)}popColorMask(_){let $=_._colorMask,J=this.maskStack.length>0?this.maskStack[this.maskStack.length-1]._colorMask:15;J!==$&&this.renderer.gl.colorMask((J&1)!==0,(J&2)!==0,(J&4)!==0,(J&8)!==0)}destroy(){this.renderer=null}}S5.extension={type:b.RendererSystem,name:"mask"};O.add(S5);class T5{constructor(_){this.renderer=_,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(_){let{gl:$}=this.renderer,J=this.getStackLength();this.maskStack=_;let Z=this.getStackLength();Z!==J&&(Z===0?$.disable(this.glConst):($.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}var CJ=new o,NJ=[],YJ=class _ extends T5{constructor($){super($),this.glConst=B.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){let $=this.maskStack[this.maskStack.length-1];return $?$._scissorCounter:0}calcScissorRect($){if($._scissorRectLocal)return;let J=$._scissorRect,{maskObject:Z}=$,{renderer:Q}=this,q=Q.renderTexture,K=Z.getBounds(!0,NJ.pop()??new x);this.roundFrameToPixels(K,q.current?q.current.resolution:Q.resolution,q.sourceFrame,q.destinationFrame,Q.projection.transform),J&&K.fit(J),$._scissorRectLocal=K}static isMatrixRotated($){if(!$)return!1;let{a:J,b:Z,c:Q,d:q}=$;return(Math.abs(Z)>0.0001||Math.abs(Q)>0.0001)&&(Math.abs(J)>0.0001||Math.abs(q)>0.0001)}testScissor($){let{maskObject:J}=$;if(!J.isFastRect||!J.isFastRect()||_.isMatrixRotated(J.worldTransform)||_.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect($);let Z=$._scissorRectLocal;return Z.width>0&&Z.height>0}roundFrameToPixels($,J,Z,Q,q){_.isMatrixRotated(q)||(q=q?CJ.copyFrom(q):CJ.identity(),q.translate(-Z.x,-Z.y).scale(Q.width/Z.width,Q.height/Z.height).translate(Q.x,Q.y),this.renderer.filter.transformAABB(q,$),$.fit(Q),$.x=Math.round($.x*J),$.y=Math.round($.y*J),$.width=Math.round($.width*J),$.height=Math.round($.height*J))}push($){$._scissorRectLocal||this.calcScissorRect($);let{gl:J}=this.renderer;$._scissorRect||J.enable(J.SCISSOR_TEST),$._scissorCounter++,$._scissorRect=$._scissorRectLocal,this._useCurrent()}pop($){let{gl:J}=this.renderer;$&&NJ.push($._scissorRectLocal),this.getStackLength()>0?this._useCurrent():J.disable(J.SCISSOR_TEST)}_useCurrent(){let $=this.maskStack[this.maskStack.length-1]._scissorRect,J;this.renderer.renderTexture.current?J=$.y:J=this.renderer.height-$.height-$.y,this.renderer.gl.scissor($.x,J,$.width,$.height)}};YJ.extension={type:b.RendererSystem,name:"scissor"};var e7=YJ;O.add(e7);class d5 extends T5{constructor(_){super(_),this.glConst=B.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){let _=this.maskStack[this.maskStack.length-1];return _?_._stencilCounter:0}push(_){let $=_.maskObject,{gl:J}=this.renderer,Z=_._stencilCounter;Z===0&&(this.renderer.framebuffer.forceStencil(),J.clearStencil(0),J.clear(J.STENCIL_BUFFER_BIT),J.enable(J.STENCIL_TEST)),_._stencilCounter++;let Q=_._colorMask;Q!==0&&(_._colorMask=0,J.colorMask(!1,!1,!1,!1)),J.stencilFunc(J.EQUAL,Z,4294967295),J.stencilOp(J.KEEP,J.KEEP,J.INCR),$.renderable=!0,$.render(this.renderer),this.renderer.batch.flush(),$.renderable=!1,Q!==0&&(_._colorMask=Q,J.colorMask((Q&1)!==0,(Q&2)!==0,(Q&4)!==0,(Q&8)!==0)),this._useCurrent()}pop(_){let $=this.renderer.gl;if(this.getStackLength()===0)$.disable($.STENCIL_TEST);else{let J=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,Z=J?J._colorMask:15;Z!==0&&(J._colorMask=0,$.colorMask(!1,!1,!1,!1)),$.stencilOp($.KEEP,$.KEEP,$.DECR),_.renderable=!0,_.render(this.renderer),this.renderer.batch.flush(),_.renderable=!1,Z!==0&&(J._colorMask=Z,$.colorMask((Z&1)!==0,(Z&2)!==0,(Z&4)!==0,(Z&8)!==0)),this._useCurrent()}}_useCurrent(){let _=this.renderer.gl;_.stencilFunc(_.EQUAL,this.getStackLength(),4294967295),_.stencilOp(_.KEEP,_.KEEP,_.KEEP)}}d5.extension={type:b.RendererSystem,name:"stencil"};O.add(d5);class g5{constructor(_){this.renderer=_,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return l("7.0.0","renderer.plugins.extract has moved to renderer.extract"),_.extract}},prepare:{enumerable:!1,get(){return l("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),_.prepare}},interaction:{enumerable:!1,get(){return l("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),_.events}}})}init(){let _=this.rendererPlugins;for(let $ in _)this.plugins[$]=new _[$](this.renderer)}destroy(){for(let _ in this.plugins)this.plugins[_].destroy(),this.plugins[_]=null}}g5.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"_plugin"};O.add(g5);class p5{constructor(_){this.renderer=_,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new o,this.transform=null}update(_,$,J,Z){this.destinationFrame=_||this.destinationFrame||this.defaultFrame,this.sourceFrame=$||this.sourceFrame||_,this.calculateProjection(this.destinationFrame,this.sourceFrame,J,Z),this.transform&&this.projectionMatrix.append(this.transform);let Q=this.renderer;Q.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,Q.globalUniforms.update(),Q.shader.shader&&Q.shader.syncUniformGroup(Q.shader.shader.uniforms.globals)}calculateProjection(_,$,J,Z){let Q=this.projectionMatrix,q=Z?-1:1;Q.identity(),Q.a=1/$.width*2,Q.d=q*(1/$.height*2),Q.tx=-1-$.x*Q.a,Q.ty=-q-$.y*Q.d}setTransform(_){}destroy(){this.renderer=null}}p5.extension={type:b.RendererSystem,name:"projection"};O.add(p5);var D2=new z1,UJ=new x;class x5{constructor(_){this.renderer=_,this._tempMatrix=new o}generateTexture(_,$){let{region:J,...Z}=$||{},Q=J?.copyTo(UJ)||_.getLocalBounds(UJ,!0),q=Z.resolution||this.renderer.resolution;Q.width=Math.max(Q.width,1/q),Q.height=Math.max(Q.height,1/q),Z.width=Q.width,Z.height=Q.height,Z.resolution=q,Z.multisample??(Z.multisample=this.renderer.multisample);let K=a0.create(Z);this._tempMatrix.tx=-Q.x,this._tempMatrix.ty=-Q.y;let V=_.transform;return _.transform=D2,this.renderer.render(_,{renderTexture:K,transform:this._tempMatrix,skipUpdateTransform:!!_.parent,blit:!0}),_.transform=V,K}destroy(){}}x5.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"textureGenerator"};O.add(x5);var k1=new x,m5=new x;class u5{constructor(_){this.renderer=_,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new x,this.destinationFrame=new x,this.viewportFrame=new x}contextChange(){let _=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(_&&_.alpha&&_.premultipliedAlpha)}bind(_=null,$,J){let Z=this.renderer;this.current=_;let Q,q,K;_?(Q=_.baseTexture,K=Q.resolution,$||(k1.width=_.frame.width,k1.height=_.frame.height,$=k1),J||(m5.x=_.frame.x,m5.y=_.frame.y,m5.width=$.width,m5.height=$.height,J=m5),q=Q.framebuffer):(K=Z.resolution,$||(k1.width=Z._view.screen.width,k1.height=Z._view.screen.height,$=k1),J||(J=k1,J.width=$.width,J.height=$.height));let V=this.viewportFrame;V.x=J.x*K,V.y=J.y*K,V.width=J.width*K,V.height=J.height*K,_||(V.y=Z.view.height-(V.y+V.height)),V.ceil(),this.renderer.framebuffer.bind(q,V),this.renderer.projection.update(J,$,K,!q),_?this.renderer.mask.setMaskStack(Q.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom($),this.destinationFrame.copyFrom(J)}clear(_,$){let J=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,Z=s.shared.setValue(_||J);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&Z.premultiply(Z.alpha);let Q=this.destinationFrame,q=this.current?this.current.baseTexture:this.renderer._view.screen,K=Q.width!==q.width||Q.height!==q.height;if(K){let{x:V,y:H,width:w,height:h}=this.viewportFrame;V=Math.round(V),H=Math.round(H),w=Math.round(w),h=Math.round(h),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(V,H,w,h)}this.renderer.framebuffer.clear(Z.red,Z.green,Z.blue,Z.alpha,$),K&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}u5.extension={type:b.RendererSystem,name:"renderTexture"};O.add(u5);class $8{constructor(_,$){this.program=_,this.uniformData=$,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function IJ(_,$){let J={},Z=$.getProgramParameter(_,$.ACTIVE_ATTRIBUTES);for(let Q=0;Q<Z;Q++){let q=$.getActiveAttrib(_,Q);if(q.name.startsWith("gl_"))continue;let K=P5($,q.type),V={type:K,name:q.name,size:A5(K),location:$.getAttribLocation(_,q.name)};J[q.name]=V}return J}function bJ(_,$){let J={},Z=$.getProgramParameter(_,$.ACTIVE_UNIFORMS);for(let Q=0;Q<Z;Q++){let q=$.getActiveUniform(_,Q),K=q.name.replace(/\[.*?\]$/,""),V=!!q.name.match(/\[.*?\]$/),H=P5($,q.type);J[K]={name:K,index:Q,type:H,size:q.size,isArray:V,value:D5(H,q.size)}}return J}function _9(_,$){let J=d6(_,_.VERTEX_SHADER,$.vertexSrc),Z=d6(_,_.FRAGMENT_SHADER,$.fragmentSrc),Q=_.createProgram();_.attachShader(Q,J),_.attachShader(Q,Z);let q=$.extra?.transformFeedbackVaryings;if(q&&(typeof _.transformFeedbackVaryings!="function"?console.warn("TransformFeedback is not supported but TransformFeedbackVaryings are given."):_.transformFeedbackVaryings(Q,q.names,q.bufferMode==="separate"?_.SEPARATE_ATTRIBS:_.INTERLEAVED_ATTRIBS)),_.linkProgram(Q),_.getProgramParameter(Q,_.LINK_STATUS)||s7(_,Q,J,Z),$.attributeData=IJ(Q,_),$.uniformData=bJ(Q,_),!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test($.vertexSrc)){let V=Object.keys($.attributeData);V.sort((H,w)=>H>w?1:-1);for(let H=0;H<V.length;H++)$.attributeData[V[H]].location=H,_.bindAttribLocation(Q,H,V[H]);_.linkProgram(Q)}_.deleteShader(J),_.deleteShader(Z);let K={};for(let V in $.uniformData){let H=$.uniformData[V];K[V]={location:_.getUniformLocation(Q,V),value:D5(H.type,H.size)}}return new $8(Q,K)}function A2(_,$,J,Z,Q){J.buffer.update(Q)}var P2={float:`
416
+ `;class e6 extends J0{constructor(_,$,J){let Z=null;typeof _!="string"&&$===void 0&&J===void 0&&(Z=_,_=void 0,$=void 0,J=void 0),super(_||WJ,$||GJ,J),this.maskSprite=Z,this.maskMatrix=new o}get maskSprite(){return this._maskSprite}set maskSprite(_){this._maskSprite=_,this._maskSprite&&(this._maskSprite.renderable=!1)}apply(_,$,J,Z){let Q=this._maskSprite,q=Q._texture;q.valid&&(q.uvMatrix||(q.uvMatrix=new W1(q,0)),q.uvMatrix.update(),this.uniforms.npmAlpha=q.baseTexture.alphaMode?0:1,this.uniforms.mask=q,this.uniforms.otherMatrix=_.calculateSpriteMatrix(this.maskMatrix,Q).prepend(q.uvMatrix.mapCoord),this.uniforms.alpha=Q.worldAlpha,this.uniforms.maskClamp=q.uvMatrix.uClampFrame,_.applyFilter(this,$,J,Z))}}class _8{constructor(_=null){this.type=z0.NONE,this.autoDetect=!0,this.maskObject=_||null,this.pooled=!1,this.isMaskData=!0,this.resolution=null,this.multisample=J0.defaultMultisample,this.enabled=!0,this.colorMask=15,this._filters=null,this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null,this._scissorRectLocal=null,this._colorMask=15,this._target=null}get filter(){return this._filters?this._filters[0]:null}set filter(_){_?this._filters?this._filters[0]=_:this._filters=[_]:this._filters=null}reset(){this.pooled&&(this.maskObject=null,this.type=z0.NONE,this.autoDetect=!0),this._target=null,this._scissorRectLocal=null}copyCountersOrReset(_){_?(this._stencilCounter=_._stencilCounter,this._scissorCounter=_._scissorCounter,this._scissorRect=_._scissorRect):(this._stencilCounter=0,this._scissorCounter=0,this._scissorRect=null)}}class S5{constructor(_){this.renderer=_,this.enableScissor=!0,this.alphaMaskPool=[],this.maskDataPool=[],this.maskStack=[],this.alphaMaskIndex=0}setMaskStack(_){this.maskStack=_,this.renderer.scissor.setMaskStack(_),this.renderer.stencil.setMaskStack(_)}push(_,$){let J=$;if(!J.isMaskData){let Q=this.maskDataPool.pop()||new _8;Q.pooled=!0,Q.maskObject=$,J=Q}let Z=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null;if(J.copyCountersOrReset(Z),J._colorMask=Z?Z._colorMask:15,J.autoDetect&&this.detect(J),J._target=_,J.type!==z0.SPRITE&&this.maskStack.push(J),J.enabled)switch(J.type){case z0.SCISSOR:this.renderer.scissor.push(J);break;case z0.STENCIL:this.renderer.stencil.push(J);break;case z0.SPRITE:J.copyCountersOrReset(null),this.pushSpriteMask(J);break;case z0.COLOR:this.pushColorMask(J);break;default:break}J.type===z0.SPRITE&&this.maskStack.push(J)}pop(_){let $=this.maskStack.pop();if(!(!$||$._target!==_)){if($.enabled)switch($.type){case z0.SCISSOR:this.renderer.scissor.pop($);break;case z0.STENCIL:this.renderer.stencil.pop($.maskObject);break;case z0.SPRITE:this.popSpriteMask($);break;case z0.COLOR:this.popColorMask($);break;default:break}if($.reset(),$.pooled&&this.maskDataPool.push($),this.maskStack.length!==0){let J=this.maskStack[this.maskStack.length-1];J.type===z0.SPRITE&&J._filters&&(J._filters[0].maskSprite=J.maskObject)}}}detect(_){let $=_.maskObject;$?$.isSprite?_.type=z0.SPRITE:this.enableScissor&&this.renderer.scissor.testScissor(_)?_.type=z0.SCISSOR:_.type=z0.STENCIL:_.type=z0.COLOR}pushSpriteMask(_){let{maskObject:$}=_,J=_._target,Z=_._filters;Z||(Z=this.alphaMaskPool[this.alphaMaskIndex],Z||(Z=this.alphaMaskPool[this.alphaMaskIndex]=[new e6])),Z[0].resolution=_.resolution,Z[0].multisample=_.multisample,Z[0].maskSprite=$;let Q=J.filterArea;J.filterArea=$.getBounds(!0),this.renderer.filter.push(J,Z),J.filterArea=Q,_._filters||this.alphaMaskIndex++}popSpriteMask(_){this.renderer.filter.pop(),_._filters?_._filters[0].maskSprite=null:(this.alphaMaskIndex--,this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite=null)}pushColorMask(_){let $=_._colorMask,J=_._colorMask=$&_.colorMask;J!==$&&this.renderer.gl.colorMask((J&1)!==0,(J&2)!==0,(J&4)!==0,(J&8)!==0)}popColorMask(_){let $=_._colorMask,J=this.maskStack.length>0?this.maskStack[this.maskStack.length-1]._colorMask:15;J!==$&&this.renderer.gl.colorMask((J&1)!==0,(J&2)!==0,(J&4)!==0,(J&8)!==0)}destroy(){this.renderer=null}}S5.extension={type:b.RendererSystem,name:"mask"};O.add(S5);class T5{constructor(_){this.renderer=_,this.maskStack=[],this.glConst=0}getStackLength(){return this.maskStack.length}setMaskStack(_){let{gl:$}=this.renderer,J=this.getStackLength();this.maskStack=_;let Z=this.getStackLength();Z!==J&&(Z===0?$.disable(this.glConst):($.enable(this.glConst),this._useCurrent()))}_useCurrent(){}destroy(){this.renderer=null,this.maskStack=null}}var kJ=new o,CJ=[],NJ=class _ extends T5{constructor($){super($),this.glConst=B.ADAPTER.getWebGLRenderingContext().SCISSOR_TEST}getStackLength(){let $=this.maskStack[this.maskStack.length-1];return $?$._scissorCounter:0}calcScissorRect($){if($._scissorRectLocal)return;let J=$._scissorRect,{maskObject:Z}=$,{renderer:Q}=this,q=Q.renderTexture,K=Z.getBounds(!0,CJ.pop()??new x);this.roundFrameToPixels(K,q.current?q.current.resolution:Q.resolution,q.sourceFrame,q.destinationFrame,Q.projection.transform),J&&K.fit(J),$._scissorRectLocal=K}static isMatrixRotated($){if(!$)return!1;let{a:J,b:Z,c:Q,d:q}=$;return(Math.abs(Z)>0.0001||Math.abs(Q)>0.0001)&&(Math.abs(J)>0.0001||Math.abs(q)>0.0001)}testScissor($){let{maskObject:J}=$;if(!J.isFastRect||!J.isFastRect()||_.isMatrixRotated(J.worldTransform)||_.isMatrixRotated(this.renderer.projection.transform))return!1;this.calcScissorRect($);let Z=$._scissorRectLocal;return Z.width>0&&Z.height>0}roundFrameToPixels($,J,Z,Q,q){_.isMatrixRotated(q)||(q=q?kJ.copyFrom(q):kJ.identity(),q.translate(-Z.x,-Z.y).scale(Q.width/Z.width,Q.height/Z.height).translate(Q.x,Q.y),this.renderer.filter.transformAABB(q,$),$.fit(Q),$.x=Math.round($.x*J),$.y=Math.round($.y*J),$.width=Math.round($.width*J),$.height=Math.round($.height*J))}push($){$._scissorRectLocal||this.calcScissorRect($);let{gl:J}=this.renderer;$._scissorRect||J.enable(J.SCISSOR_TEST),$._scissorCounter++,$._scissorRect=$._scissorRectLocal,this._useCurrent()}pop($){let{gl:J}=this.renderer;$&&CJ.push($._scissorRectLocal),this.getStackLength()>0?this._useCurrent():J.disable(J.SCISSOR_TEST)}_useCurrent(){let $=this.maskStack[this.maskStack.length-1]._scissorRect,J;this.renderer.renderTexture.current?J=$.y:J=this.renderer.height-$.height-$.y,this.renderer.gl.scissor($.x,J,$.width,$.height)}};NJ.extension={type:b.RendererSystem,name:"scissor"};var _7=NJ;O.add(_7);class d5 extends T5{constructor(_){super(_),this.glConst=B.ADAPTER.getWebGLRenderingContext().STENCIL_TEST}getStackLength(){let _=this.maskStack[this.maskStack.length-1];return _?_._stencilCounter:0}push(_){let $=_.maskObject,{gl:J}=this.renderer,Z=_._stencilCounter;Z===0&&(this.renderer.framebuffer.forceStencil(),J.clearStencil(0),J.clear(J.STENCIL_BUFFER_BIT),J.enable(J.STENCIL_TEST)),_._stencilCounter++;let Q=_._colorMask;Q!==0&&(_._colorMask=0,J.colorMask(!1,!1,!1,!1)),J.stencilFunc(J.EQUAL,Z,4294967295),J.stencilOp(J.KEEP,J.KEEP,J.INCR),$.renderable=!0,$.render(this.renderer),this.renderer.batch.flush(),$.renderable=!1,Q!==0&&(_._colorMask=Q,J.colorMask((Q&1)!==0,(Q&2)!==0,(Q&4)!==0,(Q&8)!==0)),this._useCurrent()}pop(_){let $=this.renderer.gl;if(this.getStackLength()===0)$.disable($.STENCIL_TEST);else{let J=this.maskStack.length!==0?this.maskStack[this.maskStack.length-1]:null,Z=J?J._colorMask:15;Z!==0&&(J._colorMask=0,$.colorMask(!1,!1,!1,!1)),$.stencilOp($.KEEP,$.KEEP,$.DECR),_.renderable=!0,_.render(this.renderer),this.renderer.batch.flush(),_.renderable=!1,Z!==0&&(J._colorMask=Z,$.colorMask((Z&1)!==0,(Z&2)!==0,(Z&4)!==0,(Z&8)!==0)),this._useCurrent()}}_useCurrent(){let _=this.renderer.gl;_.stencilFunc(_.EQUAL,this.getStackLength(),4294967295),_.stencilOp(_.KEEP,_.KEEP,_.KEEP)}}d5.extension={type:b.RendererSystem,name:"stencil"};O.add(d5);class g5{constructor(_){this.renderer=_,this.plugins={},Object.defineProperties(this.plugins,{extract:{enumerable:!1,get(){return l("7.0.0","renderer.plugins.extract has moved to renderer.extract"),_.extract}},prepare:{enumerable:!1,get(){return l("7.0.0","renderer.plugins.prepare has moved to renderer.prepare"),_.prepare}},interaction:{enumerable:!1,get(){return l("7.0.0","renderer.plugins.interaction has been deprecated, use renderer.events"),_.events}}})}init(){let _=this.rendererPlugins;for(let $ in _)this.plugins[$]=new _[$](this.renderer)}destroy(){for(let _ in this.plugins)this.plugins[_].destroy(),this.plugins[_]=null}}g5.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"_plugin"};O.add(g5);class p5{constructor(_){this.renderer=_,this.destinationFrame=null,this.sourceFrame=null,this.defaultFrame=null,this.projectionMatrix=new o,this.transform=null}update(_,$,J,Z){this.destinationFrame=_||this.destinationFrame||this.defaultFrame,this.sourceFrame=$||this.sourceFrame||_,this.calculateProjection(this.destinationFrame,this.sourceFrame,J,Z),this.transform&&this.projectionMatrix.append(this.transform);let Q=this.renderer;Q.globalUniforms.uniforms.projectionMatrix=this.projectionMatrix,Q.globalUniforms.update(),Q.shader.shader&&Q.shader.syncUniformGroup(Q.shader.shader.uniforms.globals)}calculateProjection(_,$,J,Z){let Q=this.projectionMatrix,q=Z?-1:1;Q.identity(),Q.a=1/$.width*2,Q.d=q*(1/$.height*2),Q.tx=-1-$.x*Q.a,Q.ty=-q-$.y*Q.d}setTransform(_){}destroy(){this.renderer=null}}p5.extension={type:b.RendererSystem,name:"projection"};O.add(p5);var A2=new z1,YJ=new x;class x5{constructor(_){this.renderer=_,this._tempMatrix=new o}generateTexture(_,$){let{region:J,...Z}=$||{},Q=J?.copyTo(YJ)||_.getLocalBounds(YJ,!0),q=Z.resolution||this.renderer.resolution;Q.width=Math.max(Q.width,1/q),Q.height=Math.max(Q.height,1/q),Z.width=Q.width,Z.height=Q.height,Z.resolution=q,Z.multisample??(Z.multisample=this.renderer.multisample);let K=a0.create(Z);this._tempMatrix.tx=-Q.x,this._tempMatrix.ty=-Q.y;let V=_.transform;return _.transform=A2,this.renderer.render(_,{renderTexture:K,transform:this._tempMatrix,skipUpdateTransform:!!_.parent,blit:!0}),_.transform=V,K}destroy(){}}x5.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"textureGenerator"};O.add(x5);var k1=new x,m5=new x;class u5{constructor(_){this.renderer=_,this.defaultMaskStack=[],this.current=null,this.sourceFrame=new x,this.destinationFrame=new x,this.viewportFrame=new x}contextChange(){let _=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!(_&&_.alpha&&_.premultipliedAlpha)}bind(_=null,$,J){let Z=this.renderer;this.current=_;let Q,q,K;_?(Q=_.baseTexture,K=Q.resolution,$||(k1.width=_.frame.width,k1.height=_.frame.height,$=k1),J||(m5.x=_.frame.x,m5.y=_.frame.y,m5.width=$.width,m5.height=$.height,J=m5),q=Q.framebuffer):(K=Z.resolution,$||(k1.width=Z._view.screen.width,k1.height=Z._view.screen.height,$=k1),J||(J=k1,J.width=$.width,J.height=$.height));let V=this.viewportFrame;V.x=J.x*K,V.y=J.y*K,V.width=J.width*K,V.height=J.height*K,_||(V.y=Z.view.height-(V.y+V.height)),V.ceil(),this.renderer.framebuffer.bind(q,V),this.renderer.projection.update(J,$,K,!q),_?this.renderer.mask.setMaskStack(Q.maskStack):this.renderer.mask.setMaskStack(this.defaultMaskStack),this.sourceFrame.copyFrom($),this.destinationFrame.copyFrom(J)}clear(_,$){let J=this.current?this.current.baseTexture.clear:this.renderer.background.backgroundColor,Z=s.shared.setValue(_||J);(this.current&&this.current.baseTexture.alphaMode>0||!this.current&&this._rendererPremultipliedAlpha)&&Z.premultiply(Z.alpha);let Q=this.destinationFrame,q=this.current?this.current.baseTexture:this.renderer._view.screen,K=Q.width!==q.width||Q.height!==q.height;if(K){let{x:V,y:H,width:w,height:h}=this.viewportFrame;V=Math.round(V),H=Math.round(H),w=Math.round(w),h=Math.round(h),this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST),this.renderer.gl.scissor(V,H,w,h)}this.renderer.framebuffer.clear(Z.red,Z.green,Z.blue,Z.alpha,$),K&&this.renderer.scissor.pop()}resize(){this.bind(null)}reset(){this.bind(null)}destroy(){this.renderer=null}}u5.extension={type:b.RendererSystem,name:"renderTexture"};O.add(u5);class $8{constructor(_,$){this.program=_,this.uniformData=$,this.uniformGroups={},this.uniformDirtyGroups={},this.uniformBufferBindings={}}destroy(){this.uniformData=null,this.uniformGroups=null,this.uniformDirtyGroups=null,this.uniformBufferBindings=null,this.program=null}}function UJ(_,$){let J={},Z=$.getProgramParameter(_,$.ACTIVE_ATTRIBUTES);for(let Q=0;Q<Z;Q++){let q=$.getActiveAttrib(_,Q);if(q.name.startsWith("gl_"))continue;let K=P5($,q.type),V={type:K,name:q.name,size:A5(K),location:$.getAttribLocation(_,q.name)};J[q.name]=V}return J}function IJ(_,$){let J={},Z=$.getProgramParameter(_,$.ACTIVE_UNIFORMS);for(let Q=0;Q<Z;Q++){let q=$.getActiveUniform(_,Q),K=q.name.replace(/\[.*?\]$/,""),V=!!q.name.match(/\[.*?\]$/),H=P5($,q.type);J[K]={name:K,index:Q,type:H,size:q.size,isArray:V,value:D5(H,q.size)}}return J}function $7(_,$){let J=d6(_,_.VERTEX_SHADER,$.vertexSrc),Z=d6(_,_.FRAGMENT_SHADER,$.fragmentSrc),Q=_.createProgram();_.attachShader(Q,J),_.attachShader(Q,Z);let q=$.extra?.transformFeedbackVaryings;if(q&&(typeof _.transformFeedbackVaryings!="function"?console.warn("TransformFeedback is not supported but TransformFeedbackVaryings are given."):_.transformFeedbackVaryings(Q,q.names,q.bufferMode==="separate"?_.SEPARATE_ATTRIBS:_.INTERLEAVED_ATTRIBS)),_.linkProgram(Q),_.getProgramParameter(Q,_.LINK_STATUS)||i9(_,Q,J,Z),$.attributeData=UJ(Q,_),$.uniformData=IJ(Q,_),!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test($.vertexSrc)){let V=Object.keys($.attributeData);V.sort((H,w)=>H>w?1:-1);for(let H=0;H<V.length;H++)$.attributeData[V[H]].location=H,_.bindAttribLocation(Q,H,V[H]);_.linkProgram(Q)}_.deleteShader(J),_.deleteShader(Z);let K={};for(let V in $.uniformData){let H=$.uniformData[V];K[V]={location:_.getUniformLocation(Q,V),value:D5(H.type,H.size)}}return new $8(Q,K)}function P2(_,$,J,Z,Q){J.buffer.update(Q)}var R2={float:`
417
417
  data[offset] = v;
418
418
  `,vec2:`
419
419
  data[offset] = v[0];
@@ -451,7 +451,7 @@ void main(void)
451
451
  {
452
452
  data[offset + i] = v[i];
453
453
  }
454
- `},BJ={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:32,mat3:48,mat4:64};function FJ(_){let $=_.map((q)=>({data:q,offset:0,dataLen:0,dirty:0})),J=0,Z=0,Q=0;for(let q=0;q<$.length;q++){let K=$[q];if(J=BJ[K.data.type],K.data.size>1&&(J=Math.max(J,16)*K.data.size),K.dataLen=J,Z%J!==0&&Z<16){let V=Z%J%16;Z+=V,Q+=V}Z+J>16?(Q=Math.ceil(Q/16)*16,K.offset=Q,Q+=J,Z=J):(K.offset=Q,Z+=J,Q+=J)}return Q=Math.ceil(Q/16)*16,{uboElements:$,size:Q}}function OJ(_,$){let J=[];for(let Z in _)$[Z]&&J.push($[Z]);return J.sort((Z,Q)=>Z.index-Q.index),J}function $9(_,$){if(!_.autoManage)return{size:0,syncFunc:A2};let J=OJ(_.uniforms,$),{uboElements:Z,size:Q}=FJ(J),q=[`
454
+ `},bJ={float:4,vec2:8,vec3:12,vec4:16,int:4,ivec2:8,ivec3:12,ivec4:16,uint:4,uvec2:8,uvec3:12,uvec4:16,bool:4,bvec2:8,bvec3:12,bvec4:16,mat2:32,mat3:48,mat4:64};function BJ(_){let $=_.map((q)=>({data:q,offset:0,dataLen:0,dirty:0})),J=0,Z=0,Q=0;for(let q=0;q<$.length;q++){let K=$[q];if(J=bJ[K.data.type],K.data.size>1&&(J=Math.max(J,16)*K.data.size),K.dataLen=J,Z%J!==0&&Z<16){let V=Z%J%16;Z+=V,Q+=V}Z+J>16?(Q=Math.ceil(Q/16)*16,K.offset=Q,Q+=J,Z=J):(K.offset=Q,Z+=J,Q+=J)}return Q=Math.ceil(Q/16)*16,{uboElements:$,size:Q}}function FJ(_,$){let J=[];for(let Z in _)$[Z]&&J.push($[Z]);return J.sort((Z,Q)=>Z.index-Q.index),J}function J7(_,$){if(!_.autoManage)return{size:0,syncFunc:P2};let J=FJ(_.uniforms,$),{uboElements:Z,size:Q}=BJ(J),q=[`
455
455
  var v = null;
456
456
  var v2 = null;
457
457
  var cv = null;
@@ -459,7 +459,7 @@ void main(void)
459
459
  var gl = renderer.gl
460
460
  var index = 0;
461
461
  var data = buffer.data;
462
- `];for(let K=0;K<Z.length;K++){let V=Z[K],H=_.uniforms[V.data.name],w=V.data.name,h=!1;for(let z=0;z<N_.length;z++){let X=N_[z];if(X.codeUbo&&X.test(V.data,H)){q.push(`offset = ${V.offset/4};`,N_[z].codeUbo(V.data.name,H)),h=!0;break}}if(!h)if(V.data.size>1){let z=A5(V.data.type),X=Math.max(BJ[V.data.type]/16,1),W=z/X,G=(4-W%4)%4;q.push(`
462
+ `];for(let K=0;K<Z.length;K++){let V=Z[K],H=_.uniforms[V.data.name],w=V.data.name,h=!1;for(let z=0;z<N_.length;z++){let X=N_[z];if(X.codeUbo&&X.test(V.data,H)){q.push(`offset = ${V.offset/4};`,N_[z].codeUbo(V.data.name,H)),h=!0;break}}if(!h)if(V.data.size>1){let z=A5(V.data.type),X=Math.max(bJ[V.data.type]/16,1),W=z/X,G=(4-W%4)%4;q.push(`
463
463
  cv = ud.${w}.value;
464
464
  v = uv.${w};
465
465
  offset = ${V.offset/4};
@@ -475,7 +475,7 @@ void main(void)
475
475
  offset += ${G};
476
476
  }
477
477
 
478
- `)}else{let z=P2[V.data.type];q.push(`
478
+ `)}else{let z=R2[V.data.type];q.push(`
479
479
  cv = ud.${w}.value;
480
480
  v = uv.${w};
481
481
  offset = ${V.offset/4};
@@ -483,7 +483,7 @@ void main(void)
483
483
  `)}}return q.push(`
484
484
  renderer.buffer.update(buffer);
485
485
  `),{size:Q,syncFunc:Function("ud","uv","renderer","syncData","buffer",q.join(`
486
- `))}}var R2=0,J8={textureCount:0,uboCount:0};class n5{constructor(_){this.destroyed=!1,this.renderer=_,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=R2++}systemCheck(){if(!n6())throw Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(_){this.gl=_,this.reset()}bind(_,$){_.disposeRunner.add(this),_.uniforms.globals=this.renderer.globalUniforms;let J=_.program,Z=J.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(_);return this.shader=_,this.program!==J&&(this.program=J,this.gl.useProgram(Z.program)),$||(J8.textureCount=0,J8.uboCount=0,this.syncUniformGroup(_.uniformGroup,J8)),Z}setUniforms(_){let $=this.shader.program,J=$.glPrograms[this.renderer.CONTEXT_UID];$.syncUniforms(J.uniformData,_,this.renderer)}syncUniformGroup(_,$){let J=this.getGlProgram();(!_.static||_.dirtyId!==J.uniformDirtyGroups[_.id])&&(J.uniformDirtyGroups[_.id]=_.dirtyId,this.syncUniforms(_,J,$))}syncUniforms(_,$,J){(_.syncUniforms[this.shader.program.id]||this.createSyncGroups(_))($.uniformData,_.uniforms,this.renderer,J)}createSyncGroups(_){let $=this.getSignature(_,this.shader.program.uniformData,"u");return this.cache[$]||(this.cache[$]=l7(_,this.shader.program.uniformData)),_.syncUniforms[this.shader.program.id]=this.cache[$],_.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(_,$){let J=this.getGlProgram();if(!_.static||_.dirtyId!==0||!J.uniformGroups[_.id]){_.dirtyId=0;let Z=J.uniformGroups[_.id]||this.createSyncBufferGroup(_,J,$);_.buffer.update(),Z(J.uniformData,_.uniforms,this.renderer,J8,_.buffer)}this.renderer.buffer.bindBufferBase(_.buffer,J.uniformBufferBindings[$])}createSyncBufferGroup(_,$,J){let{gl:Z}=this.renderer;this.renderer.buffer.bind(_.buffer);let Q=this.gl.getUniformBlockIndex($.program,J);$.uniformBufferBindings[J]=this.shader.uniformBindCount,Z.uniformBlockBinding($.program,Q,this.shader.uniformBindCount),this.shader.uniformBindCount++;let q=this.getSignature(_,this.shader.program.uniformData,"ubo"),K=this._uboCache[q];if(K||(K=this._uboCache[q]=$9(_,this.shader.program.uniformData)),_.autoManage){let V=new Float32Array(K.size/4);_.buffer.update(V)}return $.uniformGroups[_.id]=K.syncFunc,$.uniformGroups[_.id]}getSignature(_,$,J){let Z=_.uniforms,Q=[`${J}-`];for(let q in Z)Q.push(q),$[q]&&Q.push($[q].type);return Q.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(_){let $=this.gl,J=_.program,Z=_9($,J);return J.glPrograms[this.renderer.CONTEXT_UID]=Z,Z}reset(){this.program=null,this.shader=null}disposeShader(_){this.shader===_&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}n5.extension={type:b.RendererSystem,name:"shader"};O.add(n5);class u_{constructor(_){this.renderer=_}run(_){let{renderer:$}=this;$.runners.init.emit($.options),_.hello&&console.log(`PixiJS 7.4.3 - ${$.rendererLogId} - https://pixijs.com`),$.resize($.screen.width,$.screen.height)}destroy(){}}u_.defaultOptions={hello:!1},u_.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"startup"};O.add(u_);function jJ(_,$=[]){return $[d.NORMAL]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.ADD]=[_.ONE,_.ONE],$[d.MULTIPLY]=[_.DST_COLOR,_.ONE_MINUS_SRC_ALPHA,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SCREEN]=[_.ONE,_.ONE_MINUS_SRC_COLOR,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.OVERLAY]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.DARKEN]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.LIGHTEN]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.COLOR_DODGE]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.COLOR_BURN]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.HARD_LIGHT]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SOFT_LIGHT]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.DIFFERENCE]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.EXCLUSION]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.HUE]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SATURATION]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.COLOR]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.LUMINOSITY]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.NONE]=[0,0],$[d.NORMAL_NPM]=[_.SRC_ALPHA,_.ONE_MINUS_SRC_ALPHA,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.ADD_NPM]=[_.SRC_ALPHA,_.ONE,_.ONE,_.ONE],$[d.SCREEN_NPM]=[_.SRC_ALPHA,_.ONE_MINUS_SRC_COLOR,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SRC_IN]=[_.DST_ALPHA,_.ZERO],$[d.SRC_OUT]=[_.ONE_MINUS_DST_ALPHA,_.ZERO],$[d.SRC_ATOP]=[_.DST_ALPHA,_.ONE_MINUS_SRC_ALPHA],$[d.DST_OVER]=[_.ONE_MINUS_DST_ALPHA,_.ONE],$[d.DST_IN]=[_.ZERO,_.SRC_ALPHA],$[d.DST_OUT]=[_.ZERO,_.ONE_MINUS_SRC_ALPHA],$[d.DST_ATOP]=[_.ONE_MINUS_DST_ALPHA,_.SRC_ALPHA],$[d.XOR]=[_.ONE_MINUS_DST_ALPHA,_.ONE_MINUS_SRC_ALPHA],$[d.SUBTRACT]=[_.ONE,_.ONE,_.ONE,_.ONE,_.FUNC_REVERSE_SUBTRACT,_.FUNC_ADD],$}var M2=0,f2=1,E2=2,v2=3,c2=4,y2=5,LJ=class _{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=d.NONE,this._blendEq=!1,this.map=[],this.map[M2]=this.setBlend,this.map[f2]=this.setOffset,this.map[E2]=this.setCullFace,this.map[v2]=this.setDepthTest,this.map[c2]=this.setFrontFace,this.map[y2]=this.setDepthMask,this.checks=[],this.defaultState=new I0,this.defaultState.blend=!0}contextChange($){this.gl=$,this.blendModes=jJ($),this.set(this.defaultState),this.reset()}set($){if($=$||this.defaultState,this.stateId!==$.data){let J=this.stateId^$.data,Z=0;for(;J;)J&1&&this.map[Z].call(this,!!($.data&1<<Z)),J=J>>1,Z++;this.stateId=$.data}for(let J=0;J<this.checks.length;J++)this.checks[J](this,$)}forceState($){$=$||this.defaultState;for(let J=0;J<this.map.length;J++)this.map[J].call(this,!!($.data&1<<J));for(let J=0;J<this.checks.length;J++)this.checks[J](this,$);this.stateId=$.data}setBlend($){this.updateCheck(_.checkBlendMode,$),this.gl[$?"enable":"disable"](this.gl.BLEND)}setOffset($){this.updateCheck(_.checkPolygonOffset,$),this.gl[$?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest($){this.gl[$?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask($){this.gl.depthMask($)}setCullFace($){this.gl[$?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace($){this.gl.frontFace(this.gl[$?"CW":"CCW"])}setBlendMode($){if($===this.blendMode)return;this.blendMode=$;let J=this.blendModes[$],Z=this.gl;J.length===2?Z.blendFunc(J[0],J[1]):Z.blendFuncSeparate(J[0],J[1],J[2],J[3]),J.length===6?(this._blendEq=!0,Z.blendEquationSeparate(J[4],J[5])):this._blendEq&&(this._blendEq=!1,Z.blendEquationSeparate(Z.FUNC_ADD,Z.FUNC_ADD))}setPolygonOffset($,J){this.gl.polygonOffset($,J)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode=-1,this.setBlendMode(0)}updateCheck($,J){let Z=this.checks.indexOf($);J&&Z===-1?this.checks.push($):!J&&Z!==-1&&this.checks.splice(Z,1)}static checkBlendMode($,J){$.setBlendMode(J.blendMode)}static checkPolygonOffset($,J){$.setPolygonOffset(1,J.polygonOffset)}destroy(){this.gl=null}};LJ.extension={type:b.RendererSystem,name:"state"};var J9=LJ;O.add(J9);class l5 extends g_.default{constructor(){super(...arguments),this.runners={},this._systemsHash={}}setup(_){this.addRunners(..._.runners);let $=(_.priority??[]).filter((Z)=>_.systems[Z]),J=[...$,...Object.keys(_.systems).filter((Z)=>!$.includes(Z))];for(let Z of J)this.addSystem(_.systems[Z],Z)}addRunners(..._){_.forEach(($)=>{this.runners[$]=new W0($)})}addSystem(_,$){let J=new _(this);if(this[$])throw Error(`Whoops! The name "${$}" is already in use`);this[$]=J,this._systemsHash[$]=J;for(let Z in this.runners)this.runners[Z].add(J);return this}emitWithCustomOptions(_,$){let J=Object.keys(this._systemsHash);_.items.forEach((Z)=>{let Q=J.find((q)=>this._systemsHash[q]===Z);Z[_.name]($[Q])})}destroy(){Object.values(this.runners).forEach((_)=>{_.destroy()}),this._systemsHash={}}}var o5=class _{constructor($){this.renderer=$,this.count=0,this.checkCount=0,this.maxIdle=_.defaultMaxIdle,this.checkCountMax=_.defaultCheckCountMax,this.mode=_.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==B6.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let $=this.renderer.texture,J=$.managedTextures,Z=!1;for(let Q=0;Q<J.length;Q++){let q=J[Q];q.resource&&this.count-q.touched>this.maxIdle&&($.destroyTexture(q,!0),J[Q]=null,Z=!0)}if(Z){let Q=0;for(let q=0;q<J.length;q++)J[q]!==null&&(J[Q++]=J[q]);J.length=Q}}unload($){let J=this.renderer.texture,Z=$._texture;Z&&!Z.framebuffer&&J.destroyTexture(Z);for(let Q=$.children.length-1;Q>=0;Q--)this.unload($.children[Q])}destroy(){this.renderer=null}};o5.defaultMode=B6.AUTO,o5.defaultMaxIdle=3600,o5.defaultCheckCountMax=600,o5.extension={type:b.RendererSystem,name:"textureGC"};var U_=o5;O.add(U_);class u1{constructor(_){this.texture=_,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=g.UNSIGNED_BYTE,this.internalFormat=R.RGBA,this.samplerType=0}}function DJ(_){let $;return"WebGL2RenderingContext"in globalThis&&_ instanceof globalThis.WebGL2RenderingContext?$={[_.RGB]:S.FLOAT,[_.RGBA]:S.FLOAT,[_.ALPHA]:S.FLOAT,[_.LUMINANCE]:S.FLOAT,[_.LUMINANCE_ALPHA]:S.FLOAT,[_.R8]:S.FLOAT,[_.R8_SNORM]:S.FLOAT,[_.RG8]:S.FLOAT,[_.RG8_SNORM]:S.FLOAT,[_.RGB8]:S.FLOAT,[_.RGB8_SNORM]:S.FLOAT,[_.RGB565]:S.FLOAT,[_.RGBA4]:S.FLOAT,[_.RGB5_A1]:S.FLOAT,[_.RGBA8]:S.FLOAT,[_.RGBA8_SNORM]:S.FLOAT,[_.RGB10_A2]:S.FLOAT,[_.RGB10_A2UI]:S.FLOAT,[_.SRGB8]:S.FLOAT,[_.SRGB8_ALPHA8]:S.FLOAT,[_.R16F]:S.FLOAT,[_.RG16F]:S.FLOAT,[_.RGB16F]:S.FLOAT,[_.RGBA16F]:S.FLOAT,[_.R32F]:S.FLOAT,[_.RG32F]:S.FLOAT,[_.RGB32F]:S.FLOAT,[_.RGBA32F]:S.FLOAT,[_.R11F_G11F_B10F]:S.FLOAT,[_.RGB9_E5]:S.FLOAT,[_.R8I]:S.INT,[_.R8UI]:S.UINT,[_.R16I]:S.INT,[_.R16UI]:S.UINT,[_.R32I]:S.INT,[_.R32UI]:S.UINT,[_.RG8I]:S.INT,[_.RG8UI]:S.UINT,[_.RG16I]:S.INT,[_.RG16UI]:S.UINT,[_.RG32I]:S.INT,[_.RG32UI]:S.UINT,[_.RGB8I]:S.INT,[_.RGB8UI]:S.UINT,[_.RGB16I]:S.INT,[_.RGB16UI]:S.UINT,[_.RGB32I]:S.INT,[_.RGB32UI]:S.UINT,[_.RGBA8I]:S.INT,[_.RGBA8UI]:S.UINT,[_.RGBA16I]:S.INT,[_.RGBA16UI]:S.UINT,[_.RGBA32I]:S.INT,[_.RGBA32UI]:S.UINT,[_.DEPTH_COMPONENT16]:S.FLOAT,[_.DEPTH_COMPONENT24]:S.FLOAT,[_.DEPTH_COMPONENT32F]:S.FLOAT,[_.DEPTH_STENCIL]:S.FLOAT,[_.DEPTH24_STENCIL8]:S.FLOAT,[_.DEPTH32F_STENCIL8]:S.FLOAT}:$={[_.RGB]:S.FLOAT,[_.RGBA]:S.FLOAT,[_.ALPHA]:S.FLOAT,[_.LUMINANCE]:S.FLOAT,[_.LUMINANCE_ALPHA]:S.FLOAT,[_.DEPTH_STENCIL]:S.FLOAT},$}function AJ(_){let $;return"WebGL2RenderingContext"in globalThis&&_ instanceof globalThis.WebGL2RenderingContext?$={[g.UNSIGNED_BYTE]:{[R.RGBA]:_.RGBA8,[R.RGB]:_.RGB8,[R.RG]:_.RG8,[R.RED]:_.R8,[R.RGBA_INTEGER]:_.RGBA8UI,[R.RGB_INTEGER]:_.RGB8UI,[R.RG_INTEGER]:_.RG8UI,[R.RED_INTEGER]:_.R8UI,[R.ALPHA]:_.ALPHA,[R.LUMINANCE]:_.LUMINANCE,[R.LUMINANCE_ALPHA]:_.LUMINANCE_ALPHA},[g.BYTE]:{[R.RGBA]:_.RGBA8_SNORM,[R.RGB]:_.RGB8_SNORM,[R.RG]:_.RG8_SNORM,[R.RED]:_.R8_SNORM,[R.RGBA_INTEGER]:_.RGBA8I,[R.RGB_INTEGER]:_.RGB8I,[R.RG_INTEGER]:_.RG8I,[R.RED_INTEGER]:_.R8I},[g.UNSIGNED_SHORT]:{[R.RGBA_INTEGER]:_.RGBA16UI,[R.RGB_INTEGER]:_.RGB16UI,[R.RG_INTEGER]:_.RG16UI,[R.RED_INTEGER]:_.R16UI,[R.DEPTH_COMPONENT]:_.DEPTH_COMPONENT16},[g.SHORT]:{[R.RGBA_INTEGER]:_.RGBA16I,[R.RGB_INTEGER]:_.RGB16I,[R.RG_INTEGER]:_.RG16I,[R.RED_INTEGER]:_.R16I},[g.UNSIGNED_INT]:{[R.RGBA_INTEGER]:_.RGBA32UI,[R.RGB_INTEGER]:_.RGB32UI,[R.RG_INTEGER]:_.RG32UI,[R.RED_INTEGER]:_.R32UI,[R.DEPTH_COMPONENT]:_.DEPTH_COMPONENT24},[g.INT]:{[R.RGBA_INTEGER]:_.RGBA32I,[R.RGB_INTEGER]:_.RGB32I,[R.RG_INTEGER]:_.RG32I,[R.RED_INTEGER]:_.R32I},[g.FLOAT]:{[R.RGBA]:_.RGBA32F,[R.RGB]:_.RGB32F,[R.RG]:_.RG32F,[R.RED]:_.R32F,[R.DEPTH_COMPONENT]:_.DEPTH_COMPONENT32F},[g.HALF_FLOAT]:{[R.RGBA]:_.RGBA16F,[R.RGB]:_.RGB16F,[R.RG]:_.RG16F,[R.RED]:_.R16F},[g.UNSIGNED_SHORT_5_6_5]:{[R.RGB]:_.RGB565},[g.UNSIGNED_SHORT_4_4_4_4]:{[R.RGBA]:_.RGBA4},[g.UNSIGNED_SHORT_5_5_5_1]:{[R.RGBA]:_.RGB5_A1},[g.UNSIGNED_INT_2_10_10_10_REV]:{[R.RGBA]:_.RGB10_A2,[R.RGBA_INTEGER]:_.RGB10_A2UI},[g.UNSIGNED_INT_10F_11F_11F_REV]:{[R.RGB]:_.R11F_G11F_B10F},[g.UNSIGNED_INT_5_9_9_9_REV]:{[R.RGB]:_.RGB9_E5},[g.UNSIGNED_INT_24_8]:{[R.DEPTH_STENCIL]:_.DEPTH24_STENCIL8},[g.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[R.DEPTH_STENCIL]:_.DEPTH32F_STENCIL8}}:$={[g.UNSIGNED_BYTE]:{[R.RGBA]:_.RGBA,[R.RGB]:_.RGB,[R.ALPHA]:_.ALPHA,[R.LUMINANCE]:_.LUMINANCE,[R.LUMINANCE_ALPHA]:_.LUMINANCE_ALPHA},[g.UNSIGNED_SHORT_5_6_5]:{[R.RGB]:_.RGB},[g.UNSIGNED_SHORT_4_4_4_4]:{[R.RGBA]:_.RGBA},[g.UNSIGNED_SHORT_5_5_5_1]:{[R.RGBA]:_.RGBA}},$}class s5{constructor(_){this.renderer=_,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new p,this.hasIntegerTextures=!1}contextChange(){let _=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=AJ(_),this.samplerTypes=DJ(_);let $=_.getParameter(_.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=$;for(let Z=0;Z<$;Z++)this.boundTextures[Z]=null;this.emptyTextures={};let J=new u1(_.createTexture());_.bindTexture(_.TEXTURE_2D,J.texture),_.texImage2D(_.TEXTURE_2D,0,_.RGBA,1,1,0,_.RGBA,_.UNSIGNED_BYTE,new Uint8Array(4)),this.emptyTextures[_.TEXTURE_2D]=J,this.emptyTextures[_.TEXTURE_CUBE_MAP]=new u1(_.createTexture()),_.bindTexture(_.TEXTURE_CUBE_MAP,this.emptyTextures[_.TEXTURE_CUBE_MAP].texture);for(let Z=0;Z<6;Z++)_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,_.RGBA,1,1,0,_.RGBA,_.UNSIGNED_BYTE,null);_.texParameteri(_.TEXTURE_CUBE_MAP,_.TEXTURE_MAG_FILTER,_.LINEAR),_.texParameteri(_.TEXTURE_CUBE_MAP,_.TEXTURE_MIN_FILTER,_.LINEAR);for(let Z=0;Z<this.boundTextures.length;Z++)this.bind(null,Z)}bind(_,$=0){let{gl:J}=this;if(_=_?.castToBaseTexture(),_?.valid&&!_.parentTextureArray){_.touched=this.renderer.textureGC.count;let Z=_._glTextures[this.CONTEXT_UID]||this.initTexture(_);this.boundTextures[$]!==_&&(this.currentLocation!==$&&(this.currentLocation=$,J.activeTexture(J.TEXTURE0+$)),J.bindTexture(_.target,Z.texture)),Z.dirtyId!==_.dirtyId?(this.currentLocation!==$&&(this.currentLocation=$,J.activeTexture(J.TEXTURE0+$)),this.updateTexture(_)):Z.dirtyStyleId!==_.dirtyStyleId&&this.updateTextureStyle(_),this.boundTextures[$]=_}else this.currentLocation!==$&&(this.currentLocation=$,J.activeTexture(J.TEXTURE0+$)),J.bindTexture(J.TEXTURE_2D,this.emptyTextures[J.TEXTURE_2D].texture),this.boundTextures[$]=null}reset(){this._unknownBoundTextures=!0,this.hasIntegerTextures=!1,this.currentLocation=-1;for(let _=0;_<this.boundTextures.length;_++)this.boundTextures[_]=this.unknownTexture}unbind(_){let{gl:$,boundTextures:J}=this;if(this._unknownBoundTextures){this._unknownBoundTextures=!1;for(let Z=0;Z<J.length;Z++)J[Z]===this.unknownTexture&&this.bind(null,Z)}for(let Z=0;Z<J.length;Z++)J[Z]===_&&(this.currentLocation!==Z&&($.activeTexture($.TEXTURE0+Z),this.currentLocation=Z),$.bindTexture(_.target,this.emptyTextures[_.target].texture),J[Z]=null)}ensureSamplerType(_){let{boundTextures:$,hasIntegerTextures:J,CONTEXT_UID:Z}=this;if(J)for(let Q=_-1;Q>=0;--Q){let q=$[Q];q&&q._glTextures[Z].samplerType!==S.FLOAT&&this.renderer.texture.unbind(q)}}initTexture(_){let $=new u1(this.gl.createTexture());return $.dirtyId=-1,_._glTextures[this.CONTEXT_UID]=$,this.managedTextures.push(_),_.on("dispose",this.destroyTexture,this),$}initTextureType(_,$){$.internalFormat=this.internalFormats[_.type]?.[_.format]??_.format,$.samplerType=this.samplerTypes[$.internalFormat]??S.FLOAT,this.webGLVersion===2&&_.type===g.HALF_FLOAT?$.type=this.gl.HALF_FLOAT:$.type=_.type}updateTexture(_){let $=_._glTextures[this.CONTEXT_UID];if(!$)return;let J=this.renderer;if(this.initTextureType(_,$),_.resource?.upload(J,_,$))$.samplerType!==S.FLOAT&&(this.hasIntegerTextures=!0);else{let{realWidth:Z,realHeight:Q}=_,q=J.gl;($.width!==Z||$.height!==Q||$.dirtyId<0)&&($.width=Z,$.height=Q,q.texImage2D(_.target,0,$.internalFormat,Z,Q,0,_.format,$.type,null))}_.dirtyStyleId!==$.dirtyStyleId&&this.updateTextureStyle(_),$.dirtyId=_.dirtyId}destroyTexture(_,$){let{gl:J}=this;if(_=_.castToBaseTexture(),_._glTextures[this.CONTEXT_UID]&&(this.unbind(_),J.deleteTexture(_._glTextures[this.CONTEXT_UID].texture),_.off("dispose",this.destroyTexture,this),delete _._glTextures[this.CONTEXT_UID],!$)){let Z=this.managedTextures.indexOf(_);Z!==-1&&E6(this.managedTextures,Z,1)}}updateTextureStyle(_){let $=_._glTextures[this.CONTEXT_UID];$&&((_.mipmap===F0.POW2||this.webGLVersion!==2)&&!_.isPowerOfTwo?$.mipmap=!1:$.mipmap=_.mipmap>=1,this.webGLVersion!==2&&!_.isPowerOfTwo?$.wrapMode=x0.CLAMP:$.wrapMode=_.wrapMode,_.resource?.style(this.renderer,_,$)||this.setStyle(_,$),$.dirtyStyleId=_.dirtyStyleId)}setStyle(_,$){let J=this.gl;if($.mipmap&&_.mipmap!==F0.ON_MANUAL&&J.generateMipmap(_.target),J.texParameteri(_.target,J.TEXTURE_WRAP_S,$.wrapMode),J.texParameteri(_.target,J.TEXTURE_WRAP_T,$.wrapMode),$.mipmap){J.texParameteri(_.target,J.TEXTURE_MIN_FILTER,_.scaleMode===y0.LINEAR?J.LINEAR_MIPMAP_LINEAR:J.NEAREST_MIPMAP_NEAREST);let Z=this.renderer.context.extensions.anisotropicFiltering;if(Z&&_.anisotropicLevel>0&&_.scaleMode===y0.LINEAR){let Q=Math.min(_.anisotropicLevel,J.getParameter(Z.MAX_TEXTURE_MAX_ANISOTROPY_EXT));J.texParameterf(_.target,Z.TEXTURE_MAX_ANISOTROPY_EXT,Q)}}else J.texParameteri(_.target,J.TEXTURE_MIN_FILTER,_.scaleMode===y0.LINEAR?J.LINEAR:J.NEAREST);J.texParameteri(_.target,J.TEXTURE_MAG_FILTER,_.scaleMode===y0.LINEAR?J.LINEAR:J.NEAREST)}destroy(){this.renderer=null}}s5.extension={type:b.RendererSystem,name:"texture"};O.add(s5);class i5{constructor(_){this.renderer=_}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(_){let{gl:$,CONTEXT_UID:J}=this,Z=_._glTransformFeedbacks[J]||this.createGLTransformFeedback(_);$.bindTransformFeedback($.TRANSFORM_FEEDBACK,Z)}unbind(){let{gl:_}=this;_.bindTransformFeedback(_.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(_,$){let{gl:J,renderer:Z}=this;$&&Z.shader.bind($),J.beginTransformFeedback(_)}endTransformFeedback(){let{gl:_}=this;_.endTransformFeedback()}createGLTransformFeedback(_){let{gl:$,renderer:J,CONTEXT_UID:Z}=this,Q=$.createTransformFeedback();_._glTransformFeedbacks[Z]=Q,$.bindTransformFeedback($.TRANSFORM_FEEDBACK,Q);for(let q=0;q<_.buffers.length;q++){let K=_.buffers[q];K&&(J.buffer.update(K),K._glBuffers[Z].refCount++,$.bindBufferBase($.TRANSFORM_FEEDBACK_BUFFER,q,K._glBuffers[Z].buffer||null))}return $.bindTransformFeedback($.TRANSFORM_FEEDBACK,null),_.disposeRunner.add(this),Q}disposeTransformFeedback(_,$){let J=_._glTransformFeedbacks[this.CONTEXT_UID],Z=this.gl;_.disposeRunner.remove(this);let Q=this.renderer.buffer;if(Q)for(let q=0;q<_.buffers.length;q++){let K=_.buffers[q];if(!K)continue;let V=K._glBuffers[this.CONTEXT_UID];V&&(V.refCount--,V.refCount===0&&!$&&Q.dispose(K,$))}J&&($||Z.deleteTransformFeedback(J),delete _._glTransformFeedbacks[this.CONTEXT_UID])}destroy(){this.renderer=null}}i5.extension={type:b.RendererSystem,name:"transformFeedback"};O.add(i5);class n_{constructor(_){this.renderer=_}init(_){this.screen=new x(0,0,_.width,_.height),this.element=_.view||B.ADAPTER.createCanvas(),this.resolution=_.resolution||B.RESOLUTION,this.autoDensity=!!_.autoDensity}resizeView(_,$){this.element.width=Math.round(_*this.resolution),this.element.height=Math.round($*this.resolution);let J=this.element.width/this.resolution,Z=this.element.height/this.resolution;this.screen.width=J,this.screen.height=Z,this.autoDensity&&(this.element.style.width=`${J}px`,this.element.style.height=`${Z}px`),this.renderer.emit("resize",J,Z),this.renderer.runners.resize.emit(this.screen.width,this.screen.height)}destroy(_){_&&this.element.parentNode?.removeChild(this.element),this.renderer=null,this.element=null,this.screen=null}}n_.defaultOptions={width:800,height:600,resolution:void 0,autoDensity:!1},n_.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"_view"};O.add(n_);B.PREFER_ENV=p0.WEBGL2;B.STRICT_TEXTURE_CACHE=!1;B.RENDER_OPTIONS={...m_.defaultOptions,...x_.defaultOptions,...n_.defaultOptions,...u_.defaultOptions};Object.defineProperties(B,{WRAP_MODE:{get(){return p.defaultOptions.wrapMode},set(_){l("7.1.0","settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"),p.defaultOptions.wrapMode=_}},SCALE_MODE:{get(){return p.defaultOptions.scaleMode},set(_){l("7.1.0","settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"),p.defaultOptions.scaleMode=_}},MIPMAP_TEXTURES:{get(){return p.defaultOptions.mipmap},set(_){l("7.1.0","settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"),p.defaultOptions.mipmap=_}},ANISOTROPIC_LEVEL:{get(){return p.defaultOptions.anisotropicLevel},set(_){l("7.1.0","settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel"),p.defaultOptions.anisotropicLevel=_}},FILTER_RESOLUTION:{get(){return l("7.1.0","settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"),J0.defaultResolution},set(_){J0.defaultResolution=_}},FILTER_MULTISAMPLE:{get(){return l("7.1.0","settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"),J0.defaultMultisample},set(_){J0.defaultMultisample=_}},SPRITE_MAX_TEXTURES:{get(){return M_.defaultMaxTextures},set(_){l("7.1.0","settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"),M_.defaultMaxTextures=_}},SPRITE_BATCH_SIZE:{get(){return M_.defaultBatchSize},set(_){l("7.1.0","settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"),M_.defaultBatchSize=_}},CAN_UPLOAD_SAME_BUFFER:{get(){return M_.canUploadSameBuffer},set(_){l("7.1.0","settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"),M_.canUploadSameBuffer=_}},GC_MODE:{get(){return U_.defaultMode},set(_){l("7.1.0","settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"),U_.defaultMode=_}},GC_MAX_IDLE:{get(){return U_.defaultMaxIdle},set(_){l("7.1.0","settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"),U_.defaultMaxIdle=_}},GC_MAX_CHECK_COUNT:{get(){return U_.defaultCheckCountMax},set(_){l("7.1.0","settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"),U_.defaultCheckCountMax=_}},PRECISION_VERTEX:{get(){return P0.defaultVertexPrecision},set(_){l("7.1.0","settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"),P0.defaultVertexPrecision=_}},PRECISION_FRAGMENT:{get(){return P0.defaultFragmentPrecision},set(_){l("7.1.0","settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"),P0.defaultFragmentPrecision=_}}});var n0=((_)=>(_[_.INTERACTION=50]="INTERACTION",_[_.HIGH=25]="HIGH",_[_.NORMAL=0]="NORMAL",_[_.LOW=-25]="LOW",_[_.UTILITY=-50]="UTILITY",_))(n0||{});class a5{constructor(_,$=null,J=0,Z=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=_,this.context=$,this.priority=J,this.once=Z}match(_,$=null){return this.fn===_&&this.context===$}emit(_){this.fn&&(this.context?this.fn.call(this.context,_):this.fn(_));let $=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),$}connect(_){this.previous=_,_.next&&(_.next.previous=this),this.next=_.next,_.next=this}destroy(_=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);let $=this.next;return this.next=_?null:$,this.previous=null,$}}var PJ=class _{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new a5(null,null,1/0),this.deltaMS=1/_.targetFPMS,this.elapsedMS=1/_.targetFPMS,this._tick=($)=>{this._requestId=null,this.started&&(this.update($),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add($,J,Z=n0.NORMAL){return this._addListener(new a5($,J,Z))}addOnce($,J,Z=n0.NORMAL){return this._addListener(new a5($,J,Z,!0))}_addListener($){let J=this._head.next,Z=this._head;if(!J)$.connect(Z);else{for(;J;){if($.priority>J.priority){$.connect(Z);break}Z=J,J=J.next}$.previous||$.connect(Z)}return this._startIfPossible(),this}remove($,J){let Z=this._head.next;for(;Z;)Z.match($,J)?Z=Z.destroy():Z=Z.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let $=0,J=this._head;for(;J=J.next;)$++;return $}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let $=this._head.next;for(;$;)$=$.destroy(!0);this._head.destroy(),this._head=null}}update($=performance.now()){let J;if($>this.lastTime){if(J=this.elapsedMS=$-this.lastTime,J>this._maxElapsedMS&&(J=this._maxElapsedMS),J*=this.speed,this._minElapsedMS){let q=$-this._lastFrame|0;if(q<this._minElapsedMS)return;this._lastFrame=$-q%this._minElapsedMS}this.deltaMS=J,this.deltaTime=this.deltaMS*_.targetFPMS;let Z=this._head,Q=Z.next;for(;Q;)Q=Q.emit(this.deltaTime);Z.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=$}get FPS(){return 1000/this.elapsedMS}get minFPS(){return 1000/this._maxElapsedMS}set minFPS($){let J=Math.min(this.maxFPS,$),Z=Math.min(Math.max(0,J)/1000,_.targetFPMS);this._maxElapsedMS=1/Z}get maxFPS(){return this._minElapsedMS?Math.round(1000/this._minElapsedMS):0}set maxFPS($){if($===0)this._minElapsedMS=0;else{let J=Math.max(this.minFPS,$);this._minElapsedMS=1/(J/1000)}}static get shared(){if(!_._shared){let $=_._shared=new _;$.autoStart=!0,$._protected=!0}return _._shared}static get system(){if(!_._system){let $=_._system=new _;$.autoStart=!0,$._protected=!0}return _._system}};PJ.targetFPMS=0.06;var k0=PJ;Object.defineProperties(B,{TARGET_FPMS:{get(){return k0.targetFPMS},set(_){l("7.1.0","settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"),k0.targetFPMS=_}}});class Z8{static init(_){_=Object.assign({autoStart:!0,sharedTicker:!1},_),Object.defineProperty(this,"ticker",{set($){this._ticker&&this._ticker.remove(this.render,this),this._ticker=$,$&&$.add(this.render,this,n0.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=_.sharedTicker?k0.shared:new k0,_.autoStart&&this.start()}static destroy(){if(this._ticker){let _=this._ticker;this.ticker=null,_.destroy()}}}Z8.extension=b.Application;O.add(Z8);var RJ=[];O.handleByList(b.Renderer,RJ);function Z9(_){for(let $ of RJ)if($.test(_))return new $(_);throw Error("Unable to auto-detect a suitable renderer.")}var MJ=`attribute vec2 aVertexPosition;
486
+ `))}}var M2=0,J8={textureCount:0,uboCount:0};class n5{constructor(_){this.destroyed=!1,this.renderer=_,this.systemCheck(),this.gl=null,this.shader=null,this.program=null,this.cache={},this._uboCache={},this.id=M2++}systemCheck(){if(!n6())throw Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.")}contextChange(_){this.gl=_,this.reset()}bind(_,$){_.disposeRunner.add(this),_.uniforms.globals=this.renderer.globalUniforms;let J=_.program,Z=J.glPrograms[this.renderer.CONTEXT_UID]||this.generateProgram(_);return this.shader=_,this.program!==J&&(this.program=J,this.gl.useProgram(Z.program)),$||(J8.textureCount=0,J8.uboCount=0,this.syncUniformGroup(_.uniformGroup,J8)),Z}setUniforms(_){let $=this.shader.program,J=$.glPrograms[this.renderer.CONTEXT_UID];$.syncUniforms(J.uniformData,_,this.renderer)}syncUniformGroup(_,$){let J=this.getGlProgram();(!_.static||_.dirtyId!==J.uniformDirtyGroups[_.id])&&(J.uniformDirtyGroups[_.id]=_.dirtyId,this.syncUniforms(_,J,$))}syncUniforms(_,$,J){(_.syncUniforms[this.shader.program.id]||this.createSyncGroups(_))($.uniformData,_.uniforms,this.renderer,J)}createSyncGroups(_){let $=this.getSignature(_,this.shader.program.uniformData,"u");return this.cache[$]||(this.cache[$]=o9(_,this.shader.program.uniformData)),_.syncUniforms[this.shader.program.id]=this.cache[$],_.syncUniforms[this.shader.program.id]}syncUniformBufferGroup(_,$){let J=this.getGlProgram();if(!_.static||_.dirtyId!==0||!J.uniformGroups[_.id]){_.dirtyId=0;let Z=J.uniformGroups[_.id]||this.createSyncBufferGroup(_,J,$);_.buffer.update(),Z(J.uniformData,_.uniforms,this.renderer,J8,_.buffer)}this.renderer.buffer.bindBufferBase(_.buffer,J.uniformBufferBindings[$])}createSyncBufferGroup(_,$,J){let{gl:Z}=this.renderer;this.renderer.buffer.bind(_.buffer);let Q=this.gl.getUniformBlockIndex($.program,J);$.uniformBufferBindings[J]=this.shader.uniformBindCount,Z.uniformBlockBinding($.program,Q,this.shader.uniformBindCount),this.shader.uniformBindCount++;let q=this.getSignature(_,this.shader.program.uniformData,"ubo"),K=this._uboCache[q];if(K||(K=this._uboCache[q]=J7(_,this.shader.program.uniformData)),_.autoManage){let V=new Float32Array(K.size/4);_.buffer.update(V)}return $.uniformGroups[_.id]=K.syncFunc,$.uniformGroups[_.id]}getSignature(_,$,J){let Z=_.uniforms,Q=[`${J}-`];for(let q in Z)Q.push(q),$[q]&&Q.push($[q].type);return Q.join("-")}getGlProgram(){return this.shader?this.shader.program.glPrograms[this.renderer.CONTEXT_UID]:null}generateProgram(_){let $=this.gl,J=_.program,Z=$7($,J);return J.glPrograms[this.renderer.CONTEXT_UID]=Z,Z}reset(){this.program=null,this.shader=null}disposeShader(_){this.shader===_&&(this.shader=null)}destroy(){this.renderer=null,this.destroyed=!0}}n5.extension={type:b.RendererSystem,name:"shader"};O.add(n5);class u_{constructor(_){this.renderer=_}run(_){let{renderer:$}=this;$.runners.init.emit($.options),_.hello&&console.log(`PixiJS 7.4.3 - ${$.rendererLogId} - https://pixijs.com`),$.resize($.screen.width,$.screen.height)}destroy(){}}u_.defaultOptions={hello:!1},u_.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"startup"};O.add(u_);function OJ(_,$=[]){return $[d.NORMAL]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.ADD]=[_.ONE,_.ONE],$[d.MULTIPLY]=[_.DST_COLOR,_.ONE_MINUS_SRC_ALPHA,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SCREEN]=[_.ONE,_.ONE_MINUS_SRC_COLOR,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.OVERLAY]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.DARKEN]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.LIGHTEN]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.COLOR_DODGE]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.COLOR_BURN]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.HARD_LIGHT]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SOFT_LIGHT]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.DIFFERENCE]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.EXCLUSION]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.HUE]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SATURATION]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.COLOR]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.LUMINOSITY]=[_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.NONE]=[0,0],$[d.NORMAL_NPM]=[_.SRC_ALPHA,_.ONE_MINUS_SRC_ALPHA,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.ADD_NPM]=[_.SRC_ALPHA,_.ONE,_.ONE,_.ONE],$[d.SCREEN_NPM]=[_.SRC_ALPHA,_.ONE_MINUS_SRC_COLOR,_.ONE,_.ONE_MINUS_SRC_ALPHA],$[d.SRC_IN]=[_.DST_ALPHA,_.ZERO],$[d.SRC_OUT]=[_.ONE_MINUS_DST_ALPHA,_.ZERO],$[d.SRC_ATOP]=[_.DST_ALPHA,_.ONE_MINUS_SRC_ALPHA],$[d.DST_OVER]=[_.ONE_MINUS_DST_ALPHA,_.ONE],$[d.DST_IN]=[_.ZERO,_.SRC_ALPHA],$[d.DST_OUT]=[_.ZERO,_.ONE_MINUS_SRC_ALPHA],$[d.DST_ATOP]=[_.ONE_MINUS_DST_ALPHA,_.SRC_ALPHA],$[d.XOR]=[_.ONE_MINUS_DST_ALPHA,_.ONE_MINUS_SRC_ALPHA],$[d.SUBTRACT]=[_.ONE,_.ONE,_.ONE,_.ONE,_.FUNC_REVERSE_SUBTRACT,_.FUNC_ADD],$}var f2=0,E2=1,v2=2,c2=3,y2=4,S2=5,jJ=class _{constructor(){this.gl=null,this.stateId=0,this.polygonOffset=0,this.blendMode=d.NONE,this._blendEq=!1,this.map=[],this.map[f2]=this.setBlend,this.map[E2]=this.setOffset,this.map[v2]=this.setCullFace,this.map[c2]=this.setDepthTest,this.map[y2]=this.setFrontFace,this.map[S2]=this.setDepthMask,this.checks=[],this.defaultState=new I0,this.defaultState.blend=!0}contextChange($){this.gl=$,this.blendModes=OJ($),this.set(this.defaultState),this.reset()}set($){if($=$||this.defaultState,this.stateId!==$.data){let J=this.stateId^$.data,Z=0;for(;J;)J&1&&this.map[Z].call(this,!!($.data&1<<Z)),J=J>>1,Z++;this.stateId=$.data}for(let J=0;J<this.checks.length;J++)this.checks[J](this,$)}forceState($){$=$||this.defaultState;for(let J=0;J<this.map.length;J++)this.map[J].call(this,!!($.data&1<<J));for(let J=0;J<this.checks.length;J++)this.checks[J](this,$);this.stateId=$.data}setBlend($){this.updateCheck(_.checkBlendMode,$),this.gl[$?"enable":"disable"](this.gl.BLEND)}setOffset($){this.updateCheck(_.checkPolygonOffset,$),this.gl[$?"enable":"disable"](this.gl.POLYGON_OFFSET_FILL)}setDepthTest($){this.gl[$?"enable":"disable"](this.gl.DEPTH_TEST)}setDepthMask($){this.gl.depthMask($)}setCullFace($){this.gl[$?"enable":"disable"](this.gl.CULL_FACE)}setFrontFace($){this.gl.frontFace(this.gl[$?"CW":"CCW"])}setBlendMode($){if($===this.blendMode)return;this.blendMode=$;let J=this.blendModes[$],Z=this.gl;J.length===2?Z.blendFunc(J[0],J[1]):Z.blendFuncSeparate(J[0],J[1],J[2],J[3]),J.length===6?(this._blendEq=!0,Z.blendEquationSeparate(J[4],J[5])):this._blendEq&&(this._blendEq=!1,Z.blendEquationSeparate(Z.FUNC_ADD,Z.FUNC_ADD))}setPolygonOffset($,J){this.gl.polygonOffset($,J)}reset(){this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL,!1),this.forceState(this.defaultState),this._blendEq=!0,this.blendMode=-1,this.setBlendMode(0)}updateCheck($,J){let Z=this.checks.indexOf($);J&&Z===-1?this.checks.push($):!J&&Z!==-1&&this.checks.splice(Z,1)}static checkBlendMode($,J){$.setBlendMode(J.blendMode)}static checkPolygonOffset($,J){$.setPolygonOffset(1,J.polygonOffset)}destroy(){this.gl=null}};jJ.extension={type:b.RendererSystem,name:"state"};var Z7=jJ;O.add(Z7);class l5 extends g_.default{constructor(){super(...arguments),this.runners={},this._systemsHash={}}setup(_){this.addRunners(..._.runners);let $=(_.priority??[]).filter((Z)=>_.systems[Z]),J=[...$,...Object.keys(_.systems).filter((Z)=>!$.includes(Z))];for(let Z of J)this.addSystem(_.systems[Z],Z)}addRunners(..._){_.forEach(($)=>{this.runners[$]=new W0($)})}addSystem(_,$){let J=new _(this);if(this[$])throw Error(`Whoops! The name "${$}" is already in use`);this[$]=J,this._systemsHash[$]=J;for(let Z in this.runners)this.runners[Z].add(J);return this}emitWithCustomOptions(_,$){let J=Object.keys(this._systemsHash);_.items.forEach((Z)=>{let Q=J.find((q)=>this._systemsHash[q]===Z);Z[_.name]($[Q])})}destroy(){Object.values(this.runners).forEach((_)=>{_.destroy()}),this._systemsHash={}}}var o5=class _{constructor($){this.renderer=$,this.count=0,this.checkCount=0,this.maxIdle=_.defaultMaxIdle,this.checkCountMax=_.defaultCheckCountMax,this.mode=_.defaultMode}postrender(){this.renderer.objectRenderer.renderingToScreen&&(this.count++,this.mode!==B6.MANUAL&&(this.checkCount++,this.checkCount>this.checkCountMax&&(this.checkCount=0,this.run())))}run(){let $=this.renderer.texture,J=$.managedTextures,Z=!1;for(let Q=0;Q<J.length;Q++){let q=J[Q];q.resource&&this.count-q.touched>this.maxIdle&&($.destroyTexture(q,!0),J[Q]=null,Z=!0)}if(Z){let Q=0;for(let q=0;q<J.length;q++)J[q]!==null&&(J[Q++]=J[q]);J.length=Q}}unload($){let J=this.renderer.texture,Z=$._texture;Z&&!Z.framebuffer&&J.destroyTexture(Z);for(let Q=$.children.length-1;Q>=0;Q--)this.unload($.children[Q])}destroy(){this.renderer=null}};o5.defaultMode=B6.AUTO,o5.defaultMaxIdle=3600,o5.defaultCheckCountMax=600,o5.extension={type:b.RendererSystem,name:"textureGC"};var U_=o5;O.add(U_);class u1{constructor(_){this.texture=_,this.width=-1,this.height=-1,this.dirtyId=-1,this.dirtyStyleId=-1,this.mipmap=!1,this.wrapMode=33071,this.type=g.UNSIGNED_BYTE,this.internalFormat=R.RGBA,this.samplerType=0}}function LJ(_){let $;return"WebGL2RenderingContext"in globalThis&&_ instanceof globalThis.WebGL2RenderingContext?$={[_.RGB]:S.FLOAT,[_.RGBA]:S.FLOAT,[_.ALPHA]:S.FLOAT,[_.LUMINANCE]:S.FLOAT,[_.LUMINANCE_ALPHA]:S.FLOAT,[_.R8]:S.FLOAT,[_.R8_SNORM]:S.FLOAT,[_.RG8]:S.FLOAT,[_.RG8_SNORM]:S.FLOAT,[_.RGB8]:S.FLOAT,[_.RGB8_SNORM]:S.FLOAT,[_.RGB565]:S.FLOAT,[_.RGBA4]:S.FLOAT,[_.RGB5_A1]:S.FLOAT,[_.RGBA8]:S.FLOAT,[_.RGBA8_SNORM]:S.FLOAT,[_.RGB10_A2]:S.FLOAT,[_.RGB10_A2UI]:S.FLOAT,[_.SRGB8]:S.FLOAT,[_.SRGB8_ALPHA8]:S.FLOAT,[_.R16F]:S.FLOAT,[_.RG16F]:S.FLOAT,[_.RGB16F]:S.FLOAT,[_.RGBA16F]:S.FLOAT,[_.R32F]:S.FLOAT,[_.RG32F]:S.FLOAT,[_.RGB32F]:S.FLOAT,[_.RGBA32F]:S.FLOAT,[_.R11F_G11F_B10F]:S.FLOAT,[_.RGB9_E5]:S.FLOAT,[_.R8I]:S.INT,[_.R8UI]:S.UINT,[_.R16I]:S.INT,[_.R16UI]:S.UINT,[_.R32I]:S.INT,[_.R32UI]:S.UINT,[_.RG8I]:S.INT,[_.RG8UI]:S.UINT,[_.RG16I]:S.INT,[_.RG16UI]:S.UINT,[_.RG32I]:S.INT,[_.RG32UI]:S.UINT,[_.RGB8I]:S.INT,[_.RGB8UI]:S.UINT,[_.RGB16I]:S.INT,[_.RGB16UI]:S.UINT,[_.RGB32I]:S.INT,[_.RGB32UI]:S.UINT,[_.RGBA8I]:S.INT,[_.RGBA8UI]:S.UINT,[_.RGBA16I]:S.INT,[_.RGBA16UI]:S.UINT,[_.RGBA32I]:S.INT,[_.RGBA32UI]:S.UINT,[_.DEPTH_COMPONENT16]:S.FLOAT,[_.DEPTH_COMPONENT24]:S.FLOAT,[_.DEPTH_COMPONENT32F]:S.FLOAT,[_.DEPTH_STENCIL]:S.FLOAT,[_.DEPTH24_STENCIL8]:S.FLOAT,[_.DEPTH32F_STENCIL8]:S.FLOAT}:$={[_.RGB]:S.FLOAT,[_.RGBA]:S.FLOAT,[_.ALPHA]:S.FLOAT,[_.LUMINANCE]:S.FLOAT,[_.LUMINANCE_ALPHA]:S.FLOAT,[_.DEPTH_STENCIL]:S.FLOAT},$}function DJ(_){let $;return"WebGL2RenderingContext"in globalThis&&_ instanceof globalThis.WebGL2RenderingContext?$={[g.UNSIGNED_BYTE]:{[R.RGBA]:_.RGBA8,[R.RGB]:_.RGB8,[R.RG]:_.RG8,[R.RED]:_.R8,[R.RGBA_INTEGER]:_.RGBA8UI,[R.RGB_INTEGER]:_.RGB8UI,[R.RG_INTEGER]:_.RG8UI,[R.RED_INTEGER]:_.R8UI,[R.ALPHA]:_.ALPHA,[R.LUMINANCE]:_.LUMINANCE,[R.LUMINANCE_ALPHA]:_.LUMINANCE_ALPHA},[g.BYTE]:{[R.RGBA]:_.RGBA8_SNORM,[R.RGB]:_.RGB8_SNORM,[R.RG]:_.RG8_SNORM,[R.RED]:_.R8_SNORM,[R.RGBA_INTEGER]:_.RGBA8I,[R.RGB_INTEGER]:_.RGB8I,[R.RG_INTEGER]:_.RG8I,[R.RED_INTEGER]:_.R8I},[g.UNSIGNED_SHORT]:{[R.RGBA_INTEGER]:_.RGBA16UI,[R.RGB_INTEGER]:_.RGB16UI,[R.RG_INTEGER]:_.RG16UI,[R.RED_INTEGER]:_.R16UI,[R.DEPTH_COMPONENT]:_.DEPTH_COMPONENT16},[g.SHORT]:{[R.RGBA_INTEGER]:_.RGBA16I,[R.RGB_INTEGER]:_.RGB16I,[R.RG_INTEGER]:_.RG16I,[R.RED_INTEGER]:_.R16I},[g.UNSIGNED_INT]:{[R.RGBA_INTEGER]:_.RGBA32UI,[R.RGB_INTEGER]:_.RGB32UI,[R.RG_INTEGER]:_.RG32UI,[R.RED_INTEGER]:_.R32UI,[R.DEPTH_COMPONENT]:_.DEPTH_COMPONENT24},[g.INT]:{[R.RGBA_INTEGER]:_.RGBA32I,[R.RGB_INTEGER]:_.RGB32I,[R.RG_INTEGER]:_.RG32I,[R.RED_INTEGER]:_.R32I},[g.FLOAT]:{[R.RGBA]:_.RGBA32F,[R.RGB]:_.RGB32F,[R.RG]:_.RG32F,[R.RED]:_.R32F,[R.DEPTH_COMPONENT]:_.DEPTH_COMPONENT32F},[g.HALF_FLOAT]:{[R.RGBA]:_.RGBA16F,[R.RGB]:_.RGB16F,[R.RG]:_.RG16F,[R.RED]:_.R16F},[g.UNSIGNED_SHORT_5_6_5]:{[R.RGB]:_.RGB565},[g.UNSIGNED_SHORT_4_4_4_4]:{[R.RGBA]:_.RGBA4},[g.UNSIGNED_SHORT_5_5_5_1]:{[R.RGBA]:_.RGB5_A1},[g.UNSIGNED_INT_2_10_10_10_REV]:{[R.RGBA]:_.RGB10_A2,[R.RGBA_INTEGER]:_.RGB10_A2UI},[g.UNSIGNED_INT_10F_11F_11F_REV]:{[R.RGB]:_.R11F_G11F_B10F},[g.UNSIGNED_INT_5_9_9_9_REV]:{[R.RGB]:_.RGB9_E5},[g.UNSIGNED_INT_24_8]:{[R.DEPTH_STENCIL]:_.DEPTH24_STENCIL8},[g.FLOAT_32_UNSIGNED_INT_24_8_REV]:{[R.DEPTH_STENCIL]:_.DEPTH32F_STENCIL8}}:$={[g.UNSIGNED_BYTE]:{[R.RGBA]:_.RGBA,[R.RGB]:_.RGB,[R.ALPHA]:_.ALPHA,[R.LUMINANCE]:_.LUMINANCE,[R.LUMINANCE_ALPHA]:_.LUMINANCE_ALPHA},[g.UNSIGNED_SHORT_5_6_5]:{[R.RGB]:_.RGB},[g.UNSIGNED_SHORT_4_4_4_4]:{[R.RGBA]:_.RGBA},[g.UNSIGNED_SHORT_5_5_5_1]:{[R.RGBA]:_.RGBA}},$}class s5{constructor(_){this.renderer=_,this.boundTextures=[],this.currentLocation=-1,this.managedTextures=[],this._unknownBoundTextures=!1,this.unknownTexture=new p,this.hasIntegerTextures=!1}contextChange(){let _=this.gl=this.renderer.gl;this.CONTEXT_UID=this.renderer.CONTEXT_UID,this.webGLVersion=this.renderer.context.webGLVersion,this.internalFormats=DJ(_),this.samplerTypes=LJ(_);let $=_.getParameter(_.MAX_TEXTURE_IMAGE_UNITS);this.boundTextures.length=$;for(let Z=0;Z<$;Z++)this.boundTextures[Z]=null;this.emptyTextures={};let J=new u1(_.createTexture());_.bindTexture(_.TEXTURE_2D,J.texture),_.texImage2D(_.TEXTURE_2D,0,_.RGBA,1,1,0,_.RGBA,_.UNSIGNED_BYTE,new Uint8Array(4)),this.emptyTextures[_.TEXTURE_2D]=J,this.emptyTextures[_.TEXTURE_CUBE_MAP]=new u1(_.createTexture()),_.bindTexture(_.TEXTURE_CUBE_MAP,this.emptyTextures[_.TEXTURE_CUBE_MAP].texture);for(let Z=0;Z<6;Z++)_.texImage2D(_.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,_.RGBA,1,1,0,_.RGBA,_.UNSIGNED_BYTE,null);_.texParameteri(_.TEXTURE_CUBE_MAP,_.TEXTURE_MAG_FILTER,_.LINEAR),_.texParameteri(_.TEXTURE_CUBE_MAP,_.TEXTURE_MIN_FILTER,_.LINEAR);for(let Z=0;Z<this.boundTextures.length;Z++)this.bind(null,Z)}bind(_,$=0){let{gl:J}=this;if(_=_?.castToBaseTexture(),_?.valid&&!_.parentTextureArray){_.touched=this.renderer.textureGC.count;let Z=_._glTextures[this.CONTEXT_UID]||this.initTexture(_);this.boundTextures[$]!==_&&(this.currentLocation!==$&&(this.currentLocation=$,J.activeTexture(J.TEXTURE0+$)),J.bindTexture(_.target,Z.texture)),Z.dirtyId!==_.dirtyId?(this.currentLocation!==$&&(this.currentLocation=$,J.activeTexture(J.TEXTURE0+$)),this.updateTexture(_)):Z.dirtyStyleId!==_.dirtyStyleId&&this.updateTextureStyle(_),this.boundTextures[$]=_}else this.currentLocation!==$&&(this.currentLocation=$,J.activeTexture(J.TEXTURE0+$)),J.bindTexture(J.TEXTURE_2D,this.emptyTextures[J.TEXTURE_2D].texture),this.boundTextures[$]=null}reset(){this._unknownBoundTextures=!0,this.hasIntegerTextures=!1,this.currentLocation=-1;for(let _=0;_<this.boundTextures.length;_++)this.boundTextures[_]=this.unknownTexture}unbind(_){let{gl:$,boundTextures:J}=this;if(this._unknownBoundTextures){this._unknownBoundTextures=!1;for(let Z=0;Z<J.length;Z++)J[Z]===this.unknownTexture&&this.bind(null,Z)}for(let Z=0;Z<J.length;Z++)J[Z]===_&&(this.currentLocation!==Z&&($.activeTexture($.TEXTURE0+Z),this.currentLocation=Z),$.bindTexture(_.target,this.emptyTextures[_.target].texture),J[Z]=null)}ensureSamplerType(_){let{boundTextures:$,hasIntegerTextures:J,CONTEXT_UID:Z}=this;if(J)for(let Q=_-1;Q>=0;--Q){let q=$[Q];q&&q._glTextures[Z].samplerType!==S.FLOAT&&this.renderer.texture.unbind(q)}}initTexture(_){let $=new u1(this.gl.createTexture());return $.dirtyId=-1,_._glTextures[this.CONTEXT_UID]=$,this.managedTextures.push(_),_.on("dispose",this.destroyTexture,this),$}initTextureType(_,$){$.internalFormat=this.internalFormats[_.type]?.[_.format]??_.format,$.samplerType=this.samplerTypes[$.internalFormat]??S.FLOAT,this.webGLVersion===2&&_.type===g.HALF_FLOAT?$.type=this.gl.HALF_FLOAT:$.type=_.type}updateTexture(_){let $=_._glTextures[this.CONTEXT_UID];if(!$)return;let J=this.renderer;if(this.initTextureType(_,$),_.resource?.upload(J,_,$))$.samplerType!==S.FLOAT&&(this.hasIntegerTextures=!0);else{let{realWidth:Z,realHeight:Q}=_,q=J.gl;($.width!==Z||$.height!==Q||$.dirtyId<0)&&($.width=Z,$.height=Q,q.texImage2D(_.target,0,$.internalFormat,Z,Q,0,_.format,$.type,null))}_.dirtyStyleId!==$.dirtyStyleId&&this.updateTextureStyle(_),$.dirtyId=_.dirtyId}destroyTexture(_,$){let{gl:J}=this;if(_=_.castToBaseTexture(),_._glTextures[this.CONTEXT_UID]&&(this.unbind(_),J.deleteTexture(_._glTextures[this.CONTEXT_UID].texture),_.off("dispose",this.destroyTexture,this),delete _._glTextures[this.CONTEXT_UID],!$)){let Z=this.managedTextures.indexOf(_);Z!==-1&&E6(this.managedTextures,Z,1)}}updateTextureStyle(_){let $=_._glTextures[this.CONTEXT_UID];$&&((_.mipmap===F0.POW2||this.webGLVersion!==2)&&!_.isPowerOfTwo?$.mipmap=!1:$.mipmap=_.mipmap>=1,this.webGLVersion!==2&&!_.isPowerOfTwo?$.wrapMode=x0.CLAMP:$.wrapMode=_.wrapMode,_.resource?.style(this.renderer,_,$)||this.setStyle(_,$),$.dirtyStyleId=_.dirtyStyleId)}setStyle(_,$){let J=this.gl;if($.mipmap&&_.mipmap!==F0.ON_MANUAL&&J.generateMipmap(_.target),J.texParameteri(_.target,J.TEXTURE_WRAP_S,$.wrapMode),J.texParameteri(_.target,J.TEXTURE_WRAP_T,$.wrapMode),$.mipmap){J.texParameteri(_.target,J.TEXTURE_MIN_FILTER,_.scaleMode===y0.LINEAR?J.LINEAR_MIPMAP_LINEAR:J.NEAREST_MIPMAP_NEAREST);let Z=this.renderer.context.extensions.anisotropicFiltering;if(Z&&_.anisotropicLevel>0&&_.scaleMode===y0.LINEAR){let Q=Math.min(_.anisotropicLevel,J.getParameter(Z.MAX_TEXTURE_MAX_ANISOTROPY_EXT));J.texParameterf(_.target,Z.TEXTURE_MAX_ANISOTROPY_EXT,Q)}}else J.texParameteri(_.target,J.TEXTURE_MIN_FILTER,_.scaleMode===y0.LINEAR?J.LINEAR:J.NEAREST);J.texParameteri(_.target,J.TEXTURE_MAG_FILTER,_.scaleMode===y0.LINEAR?J.LINEAR:J.NEAREST)}destroy(){this.renderer=null}}s5.extension={type:b.RendererSystem,name:"texture"};O.add(s5);class i5{constructor(_){this.renderer=_}contextChange(){this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(_){let{gl:$,CONTEXT_UID:J}=this,Z=_._glTransformFeedbacks[J]||this.createGLTransformFeedback(_);$.bindTransformFeedback($.TRANSFORM_FEEDBACK,Z)}unbind(){let{gl:_}=this;_.bindTransformFeedback(_.TRANSFORM_FEEDBACK,null)}beginTransformFeedback(_,$){let{gl:J,renderer:Z}=this;$&&Z.shader.bind($),J.beginTransformFeedback(_)}endTransformFeedback(){let{gl:_}=this;_.endTransformFeedback()}createGLTransformFeedback(_){let{gl:$,renderer:J,CONTEXT_UID:Z}=this,Q=$.createTransformFeedback();_._glTransformFeedbacks[Z]=Q,$.bindTransformFeedback($.TRANSFORM_FEEDBACK,Q);for(let q=0;q<_.buffers.length;q++){let K=_.buffers[q];K&&(J.buffer.update(K),K._glBuffers[Z].refCount++,$.bindBufferBase($.TRANSFORM_FEEDBACK_BUFFER,q,K._glBuffers[Z].buffer||null))}return $.bindTransformFeedback($.TRANSFORM_FEEDBACK,null),_.disposeRunner.add(this),Q}disposeTransformFeedback(_,$){let J=_._glTransformFeedbacks[this.CONTEXT_UID],Z=this.gl;_.disposeRunner.remove(this);let Q=this.renderer.buffer;if(Q)for(let q=0;q<_.buffers.length;q++){let K=_.buffers[q];if(!K)continue;let V=K._glBuffers[this.CONTEXT_UID];V&&(V.refCount--,V.refCount===0&&!$&&Q.dispose(K,$))}J&&($||Z.deleteTransformFeedback(J),delete _._glTransformFeedbacks[this.CONTEXT_UID])}destroy(){this.renderer=null}}i5.extension={type:b.RendererSystem,name:"transformFeedback"};O.add(i5);class n_{constructor(_){this.renderer=_}init(_){this.screen=new x(0,0,_.width,_.height),this.element=_.view||B.ADAPTER.createCanvas(),this.resolution=_.resolution||B.RESOLUTION,this.autoDensity=!!_.autoDensity}resizeView(_,$){this.element.width=Math.round(_*this.resolution),this.element.height=Math.round($*this.resolution);let J=this.element.width/this.resolution,Z=this.element.height/this.resolution;this.screen.width=J,this.screen.height=Z,this.autoDensity&&(this.element.style.width=`${J}px`,this.element.style.height=`${Z}px`),this.renderer.emit("resize",J,Z),this.renderer.runners.resize.emit(this.screen.width,this.screen.height)}destroy(_){_&&this.element.parentNode?.removeChild(this.element),this.renderer=null,this.element=null,this.screen=null}}n_.defaultOptions={width:800,height:600,resolution:void 0,autoDensity:!1},n_.extension={type:[b.RendererSystem,b.CanvasRendererSystem],name:"_view"};O.add(n_);B.PREFER_ENV=p0.WEBGL2;B.STRICT_TEXTURE_CACHE=!1;B.RENDER_OPTIONS={...m_.defaultOptions,...x_.defaultOptions,...n_.defaultOptions,...u_.defaultOptions};Object.defineProperties(B,{WRAP_MODE:{get(){return p.defaultOptions.wrapMode},set(_){l("7.1.0","settings.WRAP_MODE is deprecated, use BaseTexture.defaultOptions.wrapMode"),p.defaultOptions.wrapMode=_}},SCALE_MODE:{get(){return p.defaultOptions.scaleMode},set(_){l("7.1.0","settings.SCALE_MODE is deprecated, use BaseTexture.defaultOptions.scaleMode"),p.defaultOptions.scaleMode=_}},MIPMAP_TEXTURES:{get(){return p.defaultOptions.mipmap},set(_){l("7.1.0","settings.MIPMAP_TEXTURES is deprecated, use BaseTexture.defaultOptions.mipmap"),p.defaultOptions.mipmap=_}},ANISOTROPIC_LEVEL:{get(){return p.defaultOptions.anisotropicLevel},set(_){l("7.1.0","settings.ANISOTROPIC_LEVEL is deprecated, use BaseTexture.defaultOptions.anisotropicLevel"),p.defaultOptions.anisotropicLevel=_}},FILTER_RESOLUTION:{get(){return l("7.1.0","settings.FILTER_RESOLUTION is deprecated, use Filter.defaultResolution"),J0.defaultResolution},set(_){J0.defaultResolution=_}},FILTER_MULTISAMPLE:{get(){return l("7.1.0","settings.FILTER_MULTISAMPLE is deprecated, use Filter.defaultMultisample"),J0.defaultMultisample},set(_){J0.defaultMultisample=_}},SPRITE_MAX_TEXTURES:{get(){return M_.defaultMaxTextures},set(_){l("7.1.0","settings.SPRITE_MAX_TEXTURES is deprecated, use BatchRenderer.defaultMaxTextures"),M_.defaultMaxTextures=_}},SPRITE_BATCH_SIZE:{get(){return M_.defaultBatchSize},set(_){l("7.1.0","settings.SPRITE_BATCH_SIZE is deprecated, use BatchRenderer.defaultBatchSize"),M_.defaultBatchSize=_}},CAN_UPLOAD_SAME_BUFFER:{get(){return M_.canUploadSameBuffer},set(_){l("7.1.0","settings.CAN_UPLOAD_SAME_BUFFER is deprecated, use BatchRenderer.canUploadSameBuffer"),M_.canUploadSameBuffer=_}},GC_MODE:{get(){return U_.defaultMode},set(_){l("7.1.0","settings.GC_MODE is deprecated, use TextureGCSystem.defaultMode"),U_.defaultMode=_}},GC_MAX_IDLE:{get(){return U_.defaultMaxIdle},set(_){l("7.1.0","settings.GC_MAX_IDLE is deprecated, use TextureGCSystem.defaultMaxIdle"),U_.defaultMaxIdle=_}},GC_MAX_CHECK_COUNT:{get(){return U_.defaultCheckCountMax},set(_){l("7.1.0","settings.GC_MAX_CHECK_COUNT is deprecated, use TextureGCSystem.defaultCheckCountMax"),U_.defaultCheckCountMax=_}},PRECISION_VERTEX:{get(){return P0.defaultVertexPrecision},set(_){l("7.1.0","settings.PRECISION_VERTEX is deprecated, use Program.defaultVertexPrecision"),P0.defaultVertexPrecision=_}},PRECISION_FRAGMENT:{get(){return P0.defaultFragmentPrecision},set(_){l("7.1.0","settings.PRECISION_FRAGMENT is deprecated, use Program.defaultFragmentPrecision"),P0.defaultFragmentPrecision=_}}});var n0=((_)=>(_[_.INTERACTION=50]="INTERACTION",_[_.HIGH=25]="HIGH",_[_.NORMAL=0]="NORMAL",_[_.LOW=-25]="LOW",_[_.UTILITY=-50]="UTILITY",_))(n0||{});class a5{constructor(_,$=null,J=0,Z=!1){this.next=null,this.previous=null,this._destroyed=!1,this.fn=_,this.context=$,this.priority=J,this.once=Z}match(_,$=null){return this.fn===_&&this.context===$}emit(_){this.fn&&(this.context?this.fn.call(this.context,_):this.fn(_));let $=this.next;return this.once&&this.destroy(!0),this._destroyed&&(this.next=null),$}connect(_){this.previous=_,_.next&&(_.next.previous=this),this.next=_.next,_.next=this}destroy(_=!1){this._destroyed=!0,this.fn=null,this.context=null,this.previous&&(this.previous.next=this.next),this.next&&(this.next.previous=this.previous);let $=this.next;return this.next=_?null:$,this.previous=null,$}}var AJ=class _{constructor(){this.autoStart=!1,this.deltaTime=1,this.lastTime=-1,this.speed=1,this.started=!1,this._requestId=null,this._maxElapsedMS=100,this._minElapsedMS=0,this._protected=!1,this._lastFrame=-1,this._head=new a5(null,null,1/0),this.deltaMS=1/_.targetFPMS,this.elapsedMS=1/_.targetFPMS,this._tick=($)=>{this._requestId=null,this.started&&(this.update($),this.started&&this._requestId===null&&this._head.next&&(this._requestId=requestAnimationFrame(this._tick)))}}_requestIfNeeded(){this._requestId===null&&this._head.next&&(this.lastTime=performance.now(),this._lastFrame=this.lastTime,this._requestId=requestAnimationFrame(this._tick))}_cancelIfNeeded(){this._requestId!==null&&(cancelAnimationFrame(this._requestId),this._requestId=null)}_startIfPossible(){this.started?this._requestIfNeeded():this.autoStart&&this.start()}add($,J,Z=n0.NORMAL){return this._addListener(new a5($,J,Z))}addOnce($,J,Z=n0.NORMAL){return this._addListener(new a5($,J,Z,!0))}_addListener($){let J=this._head.next,Z=this._head;if(!J)$.connect(Z);else{for(;J;){if($.priority>J.priority){$.connect(Z);break}Z=J,J=J.next}$.previous||$.connect(Z)}return this._startIfPossible(),this}remove($,J){let Z=this._head.next;for(;Z;)Z.match($,J)?Z=Z.destroy():Z=Z.next;return this._head.next||this._cancelIfNeeded(),this}get count(){if(!this._head)return 0;let $=0,J=this._head;for(;J=J.next;)$++;return $}start(){this.started||(this.started=!0,this._requestIfNeeded())}stop(){this.started&&(this.started=!1,this._cancelIfNeeded())}destroy(){if(!this._protected){this.stop();let $=this._head.next;for(;$;)$=$.destroy(!0);this._head.destroy(),this._head=null}}update($=performance.now()){let J;if($>this.lastTime){if(J=this.elapsedMS=$-this.lastTime,J>this._maxElapsedMS&&(J=this._maxElapsedMS),J*=this.speed,this._minElapsedMS){let q=$-this._lastFrame|0;if(q<this._minElapsedMS)return;this._lastFrame=$-q%this._minElapsedMS}this.deltaMS=J,this.deltaTime=this.deltaMS*_.targetFPMS;let Z=this._head,Q=Z.next;for(;Q;)Q=Q.emit(this.deltaTime);Z.next||this._cancelIfNeeded()}else this.deltaTime=this.deltaMS=this.elapsedMS=0;this.lastTime=$}get FPS(){return 1000/this.elapsedMS}get minFPS(){return 1000/this._maxElapsedMS}set minFPS($){let J=Math.min(this.maxFPS,$),Z=Math.min(Math.max(0,J)/1000,_.targetFPMS);this._maxElapsedMS=1/Z}get maxFPS(){return this._minElapsedMS?Math.round(1000/this._minElapsedMS):0}set maxFPS($){if($===0)this._minElapsedMS=0;else{let J=Math.max(this.minFPS,$);this._minElapsedMS=1/(J/1000)}}static get shared(){if(!_._shared){let $=_._shared=new _;$.autoStart=!0,$._protected=!0}return _._shared}static get system(){if(!_._system){let $=_._system=new _;$.autoStart=!0,$._protected=!0}return _._system}};AJ.targetFPMS=0.06;var k0=AJ;Object.defineProperties(B,{TARGET_FPMS:{get(){return k0.targetFPMS},set(_){l("7.1.0","settings.TARGET_FPMS is deprecated, use Ticker.targetFPMS"),k0.targetFPMS=_}}});class Z8{static init(_){_=Object.assign({autoStart:!0,sharedTicker:!1},_),Object.defineProperty(this,"ticker",{set($){this._ticker&&this._ticker.remove(this.render,this),this._ticker=$,$&&$.add(this.render,this,n0.LOW)},get(){return this._ticker}}),this.stop=()=>{this._ticker.stop()},this.start=()=>{this._ticker.start()},this._ticker=null,this.ticker=_.sharedTicker?k0.shared:new k0,_.autoStart&&this.start()}static destroy(){if(this._ticker){let _=this._ticker;this.ticker=null,_.destroy()}}}Z8.extension=b.Application;O.add(Z8);var PJ=[];O.handleByList(b.Renderer,PJ);function Q7(_){for(let $ of PJ)if($.test(_))return new $(_);throw Error("Unable to auto-detect a suitable renderer.")}var RJ=`attribute vec2 aVertexPosition;
487
487
  attribute vec2 aTextureCoord;
488
488
 
489
489
  uniform mat3 projectionMatrix;
@@ -494,7 +494,7 @@ void main(void)
494
494
  {
495
495
  gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);
496
496
  vTextureCoord = aTextureCoord;
497
- }`;var fJ=`attribute vec2 aVertexPosition;
497
+ }`;var MJ=`attribute vec2 aVertexPosition;
498
498
 
499
499
  uniform mat3 projectionMatrix;
500
500
 
@@ -520,7 +520,7 @@ void main(void)
520
520
  gl_Position = filterVertexPosition();
521
521
  vTextureCoord = filterTextureCoord();
522
522
  }
523
- `;var Q9=MJ,r5=fJ;class Q8{constructor(_){this.renderer=_}contextChange(_){let $;if(this.renderer.context.webGLVersion===1){let J=_.getParameter(_.FRAMEBUFFER_BINDING);_.bindFramebuffer(_.FRAMEBUFFER,null),$=_.getParameter(_.SAMPLES),_.bindFramebuffer(_.FRAMEBUFFER,J)}else{let J=_.getParameter(_.DRAW_FRAMEBUFFER_BINDING);_.bindFramebuffer(_.DRAW_FRAMEBUFFER,null),$=_.getParameter(_.SAMPLES),_.bindFramebuffer(_.DRAW_FRAMEBUFFER,J)}$>=e.HIGH?this.multisample=e.HIGH:$>=e.MEDIUM?this.multisample=e.MEDIUM:$>=e.LOW?this.multisample=e.LOW:this.multisample=e.NONE}destroy(){}}Q8.extension={type:b.RendererSystem,name:"_multisample"};O.add(Q8);class q9{constructor(_){this.buffer=_||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class q8{constructor(_){this.renderer=_,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(_){let{gl:$,CONTEXT_UID:J}=this,Z=_._glBuffers[J]||this.createGLBuffer(_);$.bindBuffer(_.type,Z.buffer)}unbind(_){let{gl:$}=this;$.bindBuffer(_,null)}bindBufferBase(_,$){let{gl:J,CONTEXT_UID:Z}=this;if(this.boundBufferBases[$]!==_){let Q=_._glBuffers[Z]||this.createGLBuffer(_);this.boundBufferBases[$]=_,J.bindBufferBase(J.UNIFORM_BUFFER,$,Q.buffer)}}bindBufferRange(_,$,J){let{gl:Z,CONTEXT_UID:Q}=this;J=J||0;let q=_._glBuffers[Q]||this.createGLBuffer(_);Z.bindBufferRange(Z.UNIFORM_BUFFER,$||0,q.buffer,J*256,256)}update(_){let{gl:$,CONTEXT_UID:J}=this,Z=_._glBuffers[J]||this.createGLBuffer(_);if(_._updateID!==Z.updateID)if(Z.updateID=_._updateID,$.bindBuffer(_.type,Z.buffer),Z.byteLength>=_.data.byteLength)$.bufferSubData(_.type,0,_.data);else{let Q=_.static?$.STATIC_DRAW:$.DYNAMIC_DRAW;Z.byteLength=_.data.byteLength,$.bufferData(_.type,_.data,Q)}}dispose(_,$){if(!this.managedBuffers[_.id])return;delete this.managedBuffers[_.id];let J=_._glBuffers[this.CONTEXT_UID],Z=this.gl;_.disposeRunner.remove(this),J&&($||Z.deleteBuffer(J.buffer),delete _._glBuffers[this.CONTEXT_UID])}disposeAll(_){let $=Object.keys(this.managedBuffers);for(let J=0;J<$.length;J++)this.dispose(this.managedBuffers[$[J]],_)}createGLBuffer(_){let{CONTEXT_UID:$,gl:J}=this;return _._glBuffers[$]=new q9(J.createBuffer()),this.managedBuffers[_.id]=_,_.disposeRunner.add(this),_._glBuffers[$]}}q8.extension={type:b.RendererSystem,name:"buffer"};O.add(q8);class K8{constructor(_){this.renderer=_}render(_,$){let J=this.renderer,Z,Q,q,K;if($&&(Z=$.renderTexture,Q=$.clear,q=$.transform,K=$.skipUpdateTransform),this.renderingToScreen=!Z,J.runners.prerender.emit(),J.emit("prerender"),J.projection.transform=q,!J.context.isLost){if(Z||(this.lastObjectRendered=_),!K){let V=_.enableTempParent();_.updateTransform(),_.disableTempParent(V)}J.renderTexture.bind(Z),J.batch.currentRenderer.start(),(Q??J.background.clearBeforeRender)&&J.renderTexture.clear(),_.render(J),J.batch.currentRenderer.flush(),Z&&($.blit&&J.framebuffer.blit(),Z.baseTexture.update()),J.runners.postrender.emit(),J.projection.transform=null,J.emit("postrender")}}destroy(){this.renderer=null,this.lastObjectRendered=null}}K8.extension={type:b.RendererSystem,name:"objectRenderer"};O.add(K8);var V8=class _ extends l5{constructor($){super(),this.type=w7.WEBGL,$=Object.assign({},B.RENDER_OPTIONS,$),this.gl=null,this.CONTEXT_UID=0,this.globalUniforms=new O0({projectionMatrix:new o},!0);let J={runners:["init","destroy","contextChange","resolutionChange","reset","update","postrender","prerender","resize"],systems:_.__systems,priority:["_view","textureGenerator","background","_plugin","startup","context","state","texture","buffer","geometry","framebuffer","transformFeedback","mask","scissor","stencil","projection","textureGC","filter","renderTexture","batch","objectRenderer","_multisample"]};this.setup(J),"useContextAlpha"in $&&(l("7.0.0","options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"),$.premultipliedAlpha=$.useContextAlpha&&$.useContextAlpha!=="notMultiplied",$.backgroundAlpha=$.useContextAlpha===!1?1:$.backgroundAlpha),this._plugin.rendererPlugins=_.__plugins,this.options=$,this.startup.run(this.options)}static test($){return $?.forceCanvas?!1:R6()}render($,J){this.objectRenderer.render($,J)}resize($,J){this._view.resizeView($,J)}reset(){return this.runners.reset.emit(),this}clear(){this.renderTexture.bind(),this.renderTexture.clear()}destroy($=!1){this.runners.destroy.items.reverse(),this.emitWithCustomOptions(this.runners.destroy,{_view:$}),super.destroy()}get plugins(){return this._plugin.plugins}get multisample(){return this._multisample.multisample}get width(){return this._view.element.width}get height(){return this._view.element.height}get resolution(){return this._view.resolution}set resolution($){this._view.resolution=$,this.runners.resolutionChange.emit($)}get autoDensity(){return this._view.autoDensity}get view(){return this._view.element}get screen(){return this._view.screen}get lastObjectRendered(){return this.objectRenderer.lastObjectRendered}get renderingToScreen(){return this.objectRenderer.renderingToScreen}get rendererLogId(){return`WebGL ${this.context.webGLVersion}`}get clearBeforeRender(){return l("7.0.0","renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead."),this.background.clearBeforeRender}get useContextAlpha(){return l("7.0.0","renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead."),this.context.useContextAlpha}get preserveDrawingBuffer(){return l("7.0.0","renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context"),this.context.preserveDrawingBuffer}get backgroundColor(){return l("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color}set backgroundColor($){l("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color=$}get backgroundAlpha(){return l("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha}set backgroundAlpha($){l("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha=$}get powerPreference(){return l("7.0.0","renderer.powerPreference has been deprecated, we can only know this if pixi creates the context"),this.context.powerPreference}generateTexture($,J){return this.textureGenerator.generateTexture($,J)}};V8.extension={type:b.Renderer,priority:1},V8.__plugins={},V8.__systems={};var H8=V8;O.handleByMap(b.RendererPlugin,H8.__plugins);O.handleByMap(b.RendererSystem,H8.__systems);O.add(H8);class C1 extends i0{constructor(_,$){let{width:J,height:Z}=$||{};super(J,Z),this.items=[],this.itemDirtyIds=[];for(let Q=0;Q<_;Q++){let q=new p;this.items.push(q),this.itemDirtyIds.push(-2)}this.length=_,this._load=null,this.baseTexture=null}initFromArray(_,$){for(let J=0;J<this.length;J++)_[J]&&(_[J].castToBaseTexture?this.addBaseTextureAt(_[J].castToBaseTexture(),J):_[J]instanceof i0?this.addResourceAt(_[J],J):this.addResourceAt(v1(_[J],$),J))}dispose(){for(let _=0,$=this.length;_<$;_++)this.items[_].destroy();this.items=null,this.itemDirtyIds=null,this._load=null}addResourceAt(_,$){if(!this.items[$])throw Error(`Index ${$} is out of bounds`);return _.valid&&!this.valid&&this.resize(_.width,_.height),this.items[$].setResource(_),this}bind(_){if(this.baseTexture!==null)throw Error("Only one base texture per TextureArray is allowed");super.bind(_);for(let $=0;$<this.length;$++)this.items[$].parentTextureArray=_,this.items[$].on("update",_.update,_)}unbind(_){super.unbind(_);for(let $=0;$<this.length;$++)this.items[$].parentTextureArray=null,this.items[$].off("update",_.update,_)}load(){if(this._load)return this._load;let _=this.items.map(($)=>$.resource).filter(($)=>$).map(($)=>$.load());return this._load=Promise.all(_).then(()=>{let{realWidth:$,realHeight:J}=this.items[0];return this.resize($,J),this.update(),Promise.resolve(this)}),this._load}}class w8 extends C1{constructor(_,$){let{width:J,height:Z}=$||{},Q,q;Array.isArray(_)?(Q=_,q=_.length):q=_,super(q,{width:J,height:Z}),Q&&this.initFromArray(Q,$)}addBaseTextureAt(_,$){if(_.resource)this.addResourceAt(_.resource,$);else throw Error("ArrayResource does not support RenderTexture");return this}bind(_){super.bind(_),_.target=A_.TEXTURE_2D_ARRAY}upload(_,$,J){let{length:Z,itemDirtyIds:Q,items:q}=this,{gl:K}=_;J.dirtyId<0&&K.texImage3D(K.TEXTURE_2D_ARRAY,0,J.internalFormat,this._width,this._height,Z,0,$.format,J.type,null);for(let V=0;V<Z;V++){let H=q[V];Q[V]<H.dirtyId&&(Q[V]=H.dirtyId,H.valid&&K.texSubImage3D(K.TEXTURE_2D_ARRAY,0,0,0,V,H.resource.width,H.resource.height,1,$.format,J.type,H.resource.source))}return!0}}class h8 extends b0{constructor(_){super(_)}static test(_){let{OffscreenCanvas:$}=globalThis;return $&&_ instanceof $?!0:globalThis.HTMLCanvasElement&&_ instanceof HTMLCanvasElement}}var EJ=class _ extends C1{constructor($,J){let{width:Z,height:Q,autoLoad:q,linkBaseTexture:K}=J||{};if($&&$.length!==_.SIDES)throw Error(`Invalid length. Got ${$.length}, expected 6`);super(6,{width:Z,height:Q});for(let V=0;V<_.SIDES;V++)this.items[V].target=A_.TEXTURE_CUBE_MAP_POSITIVE_X+V;this.linkBaseTexture=K!==!1,$&&this.initFromArray($,J),q!==!1&&this.load()}bind($){super.bind($),$.target=A_.TEXTURE_CUBE_MAP}addBaseTextureAt($,J,Z){if(Z===void 0&&(Z=this.linkBaseTexture),!this.items[J])throw Error(`Index ${J} is out of bounds`);if(!this.linkBaseTexture||$.parentTextureArray||Object.keys($._glTextures).length>0)if($.resource)this.addResourceAt($.resource,J);else throw Error("CubeResource does not support copying of renderTexture.");else $.target=A_.TEXTURE_CUBE_MAP_POSITIVE_X+J,$.parentTextureArray=this.baseTexture,this.items[J]=$;return $.valid&&!this.valid&&this.resize($.realWidth,$.realHeight),this.items[J]=$,this}upload($,J,Z){let Q=this.itemDirtyIds;for(let q=0;q<_.SIDES;q++){let K=this.items[q];(Q[q]<K.dirtyId||Z.dirtyId<J.dirtyId)&&(K.valid&&K.resource?(K.resource.upload($,K,Z),Q[q]=K.dirtyId):Q[q]<-1&&($.gl.texImage2D(K.target,0,Z.internalFormat,J.realWidth,J.realHeight,0,J.format,Z.type,null),Q[q]=-1))}return!0}static test($){return Array.isArray($)&&$.length===_.SIDES}};EJ.SIDES=6;var K9=EJ;class l_ extends b0{constructor(_,$){$=$||{};let J,Z,Q;typeof _=="string"?(J=l_.EMPTY,Z=_,Q=!0):(J=_,Z=null,Q=!1),super(J),this.url=Z,this.crossOrigin=$.crossOrigin??!0,this.alphaMode=typeof $.alphaMode=="number"?$.alphaMode:null,this.ownsImageBitmap=$.ownsImageBitmap??Q,this._load=null,$.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(async(_,$)=>{if(this.url===null){_(this);return}try{let J=await B.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;let Z=await J.blob();if(this.destroyed)return;let Q=await createImageBitmap(Z,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===K0.UNPACK?"premultiply":"none"});if(this.destroyed){Q.close();return}this.source=Q,this.update(),_(this)}catch(J){if(this.destroyed)return;$(J),this.onError.emit(J)}}),this._load)}upload(_,$,J){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&($.alphaMode=this.alphaMode),super.upload(_,$,J)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(_){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof _=="string"||_ instanceof ImageBitmap)}static get EMPTY(){return l_._EMPTY=l_._EMPTY??B.ADAPTER.createCanvas(0,0),l_._EMPTY}}var V9=class _ extends b0{constructor($,J){J=J||{},super(B.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=$,this.scale=J.scale||1,this._overrideWidth=J.width,this._overrideHeight=J.height,this._resolve=null,this._crossorigin=J.crossorigin,this._load=null,J.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(($)=>{if(this._resolve=()=>{this.update(),$(this)},_.SVG_XML.test(this.svg.trim())){if(!btoa)throw Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){let $=new Image;b0.crossOrigin($,this.svg,this._crossorigin),$.src=this.svg,$.onerror=(J)=>{this._resolve&&($.onerror=null,this.onError.emit(J))},$.onload=()=>{if(!this._resolve)return;let{width:J,height:Z}=$;if(!J||!Z)throw Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let Q=J*this.scale,q=Z*this.scale;(this._overrideWidth||this._overrideHeight)&&(Q=this._overrideWidth||this._overrideHeight/Z*J,q=this._overrideHeight||this._overrideWidth/J*Z),Q=Math.round(Q),q=Math.round(q);let K=this.source;K.width=Q,K.height=q,K._pixiId=`canvas_${W_()}`,K.getContext("2d").drawImage($,0,0,J,Z,0,0,Q,q),this._resolve(),this._resolve=null}}static getSize($){let J=_.SVG_SIZE.exec($),Z={};return J&&(Z[J[1]]=Math.round(parseFloat(J[3])),Z[J[5]]=Math.round(parseFloat(J[7]))),Z}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test($,J){return J==="svg"||typeof $=="string"&&$.startsWith("data:image/svg+xml")||typeof $=="string"&&_.SVG_XML.test($)}};V9.SVG_XML=/^(<\?xml[^?]+\?>)?\s*(<!--[^(-->)]*-->)?\s*\<svg/m,V9.SVG_SIZE=/<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var n1=V9;class H9 extends b0{constructor(_){super(_)}static test(_){return!!globalThis.VideoFrame&&_ instanceof globalThis.VideoFrame}}var w9=class _ extends b0{constructor($,J){if(J=J||{},!($ instanceof HTMLVideoElement)){let Z=document.createElement("video");J.autoLoad!==!1&&Z.setAttribute("preload","auto"),J.playsinline!==!1&&(Z.setAttribute("webkit-playsinline",""),Z.setAttribute("playsinline","")),J.muted===!0&&(Z.setAttribute("muted",""),Z.muted=!0),J.loop===!0&&Z.setAttribute("loop",""),J.autoPlay!==!1&&Z.setAttribute("autoplay",""),typeof $=="string"&&($=[$]);let Q=$[0].src||$[0];b0.crossOrigin(Z,Q,J.crossorigin);for(let q=0;q<$.length;++q){let K=document.createElement("source"),{src:V,mime:H}=$[q];if(V=V||$[q],V.startsWith("data:"))H=V.slice(5,V.indexOf(";"));else if(!V.startsWith("blob:")){let w=V.split("?").shift().toLowerCase(),h=w.slice(w.lastIndexOf(".")+1);H=H||_.MIME_TYPES[h]||`video/${h}`}K.src=V,H&&(K.type=H),Z.appendChild(K)}$=Z}super($),this.noSubImage=!0,this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=J.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=J.autoPlay!==!1,this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),J.autoLoad!==!1&&this.load()}update($=0){if(!this.destroyed){if(this._updateFPS){let J=k0.shared.elapsedMS*this.source.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-J)}(!this._updateFPS||this._msToNextUpdate<=0)&&(super.update(),this._msToNextUpdate=this._updateFPS?Math.floor(1000/this._updateFPS):0)}}_videoFrameRequestCallback(){this.update(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)}load(){if(this._load)return this._load;let $=this.source;return($.readyState===$.HAVE_ENOUGH_DATA||$.readyState===$.HAVE_FUTURE_DATA)&&$.width&&$.height&&($.complete=!0),$.addEventListener("play",this._onPlayStart),$.addEventListener("pause",this._onPlayStop),$.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._onCanPlay():($.addEventListener("canplay",this._onCanPlay),$.addEventListener("canplaythrough",this._onCanPlay),$.addEventListener("error",this._onError,!0)),this._load=new Promise((J,Z)=>{this.valid?J(this):(this._resolve=J,this._reject=Z,$.load())}),this._load}_onError($){this.source.removeEventListener("error",this._onError,!0),this.onError.emit($),this._reject&&(this._reject($),this._reject=null,this._resolve=null)}_isSourcePlaying(){let $=this.source;return!$.paused&&!$.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){let $=this.source;$.removeEventListener("canplay",this._onCanPlay),$.removeEventListener("canplaythrough",this._onCanPlay);let J=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!J&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&$.play()}dispose(){this._configureAutoUpdate();let $=this.source;$&&($.removeEventListener("play",this._onPlayStart),$.removeEventListener("pause",this._onPlayStop),$.removeEventListener("seeked",this._onSeeked),$.removeEventListener("canplay",this._onCanPlay),$.removeEventListener("canplaythrough",this._onCanPlay),$.removeEventListener("error",this._onError,!0),$.pause(),$.src="",$.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate($){$!==this._autoUpdate&&(this._autoUpdate=$,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS($){$!==this._updateFPS&&(this._updateFPS=$,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(k0.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(k0.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(k0.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test($,J){return globalThis.HTMLVideoElement&&$ instanceof HTMLVideoElement||_.TYPES.includes(J)}};w9.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],w9.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};var t5=w9;L5.push(l_,p1,h8,t5,H9,n1,k_,K9,w8);class f_{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(_){return this.minX>this.maxX||this.minY>this.maxY?x.EMPTY:(_=_||new x(0,0,1,1),_.x=this.minX,_.y=this.minY,_.width=this.maxX-this.minX,_.height=this.maxY-this.minY,_)}addPoint(_){this.minX=Math.min(this.minX,_.x),this.maxX=Math.max(this.maxX,_.x),this.minY=Math.min(this.minY,_.y),this.maxY=Math.max(this.maxY,_.y)}addPointMatrix(_,$){let{a:J,b:Z,c:Q,d:q,tx:K,ty:V}=_,H=J*$.x+Q*$.y+K,w=Z*$.x+q*$.y+V;this.minX=Math.min(this.minX,H),this.maxX=Math.max(this.maxX,H),this.minY=Math.min(this.minY,w),this.maxY=Math.max(this.maxY,w)}addQuad(_){let $=this.minX,J=this.minY,Z=this.maxX,Q=this.maxY,q=_[0],K=_[1];$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,q=_[2],K=_[3],$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,q=_[4],K=_[5],$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,q=_[6],K=_[7],$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,this.minX=$,this.minY=J,this.maxX=Z,this.maxY=Q}addFrame(_,$,J,Z,Q){this.addFrameMatrix(_.worldTransform,$,J,Z,Q)}addFrameMatrix(_,$,J,Z,Q){let{a:q,b:K,c:V,d:H,tx:w,ty:h}=_,z=this.minX,X=this.minY,W=this.maxX,G=this.maxY,k=q*$+V*J+w,C=K*$+H*J+h;z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,k=q*Z+V*J+w,C=K*Z+H*J+h,z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,k=q*$+V*Q+w,C=K*$+H*Q+h,z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,k=q*Z+V*Q+w,C=K*Z+H*Q+h,z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,this.minX=z,this.minY=X,this.maxX=W,this.maxY=G}addVertexData(_,$,J){let Z=this.minX,Q=this.minY,q=this.maxX,K=this.maxY;for(let V=$;V<J;V+=2){let H=_[V],w=_[V+1];Z=H<Z?H:Z,Q=w<Q?w:Q,q=H>q?H:q,K=w>K?w:K}this.minX=Z,this.minY=Q,this.maxX=q,this.maxY=K}addVertices(_,$,J,Z){this.addVerticesMatrix(_.worldTransform,$,J,Z)}addVerticesMatrix(_,$,J,Z,Q=0,q=Q){let{a:K,b:V,c:H,d:w,tx:h,ty:z}=_,X=this.minX,W=this.minY,G=this.maxX,k=this.maxY;for(let C=J;C<Z;C+=2){let Y=$[C],U=$[C+1],N=K*Y+H*U+h,I=w*U+V*Y+z;X=Math.min(X,N-Q),G=Math.max(G,N+Q),W=Math.min(W,I-q),k=Math.max(k,I+q)}this.minX=X,this.minY=W,this.maxX=G,this.maxY=k}addBounds(_){let $=this.minX,J=this.minY,Z=this.maxX,Q=this.maxY;this.minX=_.minX<$?_.minX:$,this.minY=_.minY<J?_.minY:J,this.maxX=_.maxX>Z?_.maxX:Z,this.maxY=_.maxY>Q?_.maxY:Q}addBoundsMask(_,$){let J=_.minX>$.minX?_.minX:$.minX,Z=_.minY>$.minY?_.minY:$.minY,Q=_.maxX<$.maxX?_.maxX:$.maxX,q=_.maxY<$.maxY?_.maxY:$.maxY;if(J<=Q&&Z<=q){let K=this.minX,V=this.minY,H=this.maxX,w=this.maxY;this.minX=J<K?J:K,this.minY=Z<V?Z:V,this.maxX=Q>H?Q:H,this.maxY=q>w?q:w}}addBoundsMatrix(_,$){this.addFrameMatrix($,_.minX,_.minY,_.maxX,_.maxY)}addBoundsArea(_,$){let J=_.minX>$.x?_.minX:$.x,Z=_.minY>$.y?_.minY:$.y,Q=_.maxX<$.x+$.width?_.maxX:$.x+$.width,q=_.maxY<$.y+$.height?_.maxY:$.y+$.height;if(J<=Q&&Z<=q){let K=this.minX,V=this.minY,H=this.maxX,w=this.maxY;this.minX=J<K?J:K,this.minY=Z<V?Z:V,this.maxX=Q>H?Q:H,this.maxY=q>w?q:w}}pad(_=0,$=_){this.isEmpty()||(this.minX-=_,this.maxX+=_,this.minY-=$,this.maxY+=$)}addFramePad(_,$,J,Z,Q,q){_-=Q,$-=q,J+=Q,Z+=q,this.minX=this.minX<_?this.minX:_,this.maxX=this.maxX>J?this.maxX:J,this.minY=this.minY<$?this.minY:$,this.maxY=this.maxY>Z?this.maxY:Z}}class t extends P.EventEmitter{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new z1,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new f_,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(_){let $=Object.keys(_);for(let J=0;J<$.length;++J){let Z=$[J];Object.defineProperty(t.prototype,Z,Object.getOwnPropertyDescriptor(_,Z))}}get destroyed(){return this._destroyed}_recursivePostUpdateTransform(){this.parent?(this.parent._recursivePostUpdateTransform(),this.transform.updateTransform(this.parent.transform)):this.transform.updateTransform(this._tempDisplayObjectParent.transform)}updateTransform(){this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha}getBounds(_,$){return _||(this.parent?(this._recursivePostUpdateTransform(),this.updateTransform()):(this.parent=this._tempDisplayObjectParent,this.updateTransform(),this.parent=null)),this._bounds.updateID!==this._boundsID&&(this.calculateBounds(),this._bounds.updateID=this._boundsID),$||(this._boundsRect||(this._boundsRect=new x),$=this._boundsRect),this._bounds.getRectangle($)}getLocalBounds(_){_||(this._localBoundsRect||(this._localBoundsRect=new x),_=this._localBoundsRect),this._localBounds||(this._localBounds=new f_);let $=this.transform,J=this.parent;this.parent=null,this._tempDisplayObjectParent.worldAlpha=J?.worldAlpha??1,this.transform=this._tempDisplayObjectParent.transform;let Z=this._bounds,Q=this._boundsID;this._bounds=this._localBounds;let q=this.getBounds(!1,_);return this.parent=J,this.transform=$,this._bounds=Z,this._bounds.updateID+=this._boundsID-Q,q}toGlobal(_,$,J=!1){return J||(this._recursivePostUpdateTransform(),this.parent?this.displayObjectUpdateTransform():(this.parent=this._tempDisplayObjectParent,this.displayObjectUpdateTransform(),this.parent=null)),this.worldTransform.apply(_,$)}toLocal(_,$,J,Z){return $&&(_=$.toGlobal(_,J,Z)),Z||(this._recursivePostUpdateTransform(),this.parent?this.displayObjectUpdateTransform():(this.parent=this._tempDisplayObjectParent,this.displayObjectUpdateTransform(),this.parent=null)),this.worldTransform.applyInverse(_,J)}setParent(_){if(!_||!_.addChild)throw Error("setParent: Argument must be a Container");return _.addChild(this),_}removeFromParent(){this.parent?.removeChild(this)}setTransform(_=0,$=0,J=1,Z=1,Q=0,q=0,K=0,V=0,H=0){return this.position.x=_,this.position.y=$,this.scale.x=J||1,this.scale.y=Z||1,this.rotation=Q,this.skew.x=q,this.skew.y=K,this.pivot.x=V,this.pivot.y=H,this}destroy(_){this.removeFromParent(),this._destroyed=!0,this.transform=null,this.parent=null,this._bounds=null,this.mask=null,this.cullArea=null,this.filters=null,this.filterArea=null,this.hitArea=null,this.eventMode="auto",this.interactiveChildren=!1,this.emit("destroyed"),this.removeAllListeners()}get _tempDisplayObjectParent(){return this.tempDisplayObjectParent===null&&(this.tempDisplayObjectParent=new h9),this.tempDisplayObjectParent}enableTempParent(){let _=this.parent;return this.parent=this._tempDisplayObjectParent,_}disableTempParent(_){this.parent=_}get x(){return this.position.x}set x(_){this.transform.position.x=_}get y(){return this.position.y}set y(_){this.transform.position.y=_}get worldTransform(){return this.transform.worldTransform}get localTransform(){return this.transform.localTransform}get position(){return this.transform.position}set position(_){this.transform.position.copyFrom(_)}get scale(){return this.transform.scale}set scale(_){this.transform.scale.copyFrom(_)}get pivot(){return this.transform.pivot}set pivot(_){this.transform.pivot.copyFrom(_)}get skew(){return this.transform.skew}set skew(_){this.transform.skew.copyFrom(_)}get rotation(){return this.transform.rotation}set rotation(_){this.transform.rotation=_}get angle(){return this.transform.rotation*p7}set angle(_){this.transform.rotation=_*x7}get zIndex(){return this._zIndex}set zIndex(_){this._zIndex!==_&&(this._zIndex=_,this.parent&&(this.parent.sortDirty=!0))}get worldVisible(){let _=this;do{if(!_.visible)return!1;_=_.parent}while(_);return!0}get mask(){return this._mask}set mask(_){if(this._mask!==_){if(this._mask){let $=this._mask.isMaskData?this._mask.maskObject:this._mask;$&&($._maskRefCount--,$._maskRefCount===0&&($.renderable=!0,$.isMask=!1))}if(this._mask=_,this._mask){let $=this._mask.isMaskData?this._mask.maskObject:this._mask;$&&($._maskRefCount===0&&($.renderable=!1,$.isMask=!0),$._maskRefCount++)}}}}class h9 extends t{constructor(){super(...arguments),this.sortDirty=null}}t.prototype.displayObjectUpdateTransform=t.prototype.updateTransform;var S2=new o;function T2(_,$){return _.zIndex===$.zIndex?_._lastSortedIndex-$._lastSortedIndex:_.zIndex-$.zIndex}var vJ=class _ extends t{constructor(){super(),this.children=[],this.sortableChildren=_.defaultSortableChildren,this.sortDirty=!1}onChildrenChange($){}addChild(...$){if($.length>1)for(let J=0;J<$.length;J++)this.addChild($[J]);else{let J=$[0];J.parent&&J.parent.removeChild(J),J.parent=this,this.sortDirty=!0,J.transform._parentID=-1,this.children.push(J),this._boundsID++,this.onChildrenChange(this.children.length-1),this.emit("childAdded",J,this,this.children.length-1),J.emit("added",this)}return $[0]}addChildAt($,J){if(J<0||J>this.children.length)throw Error(`${$}addChildAt: The index ${J} supplied is out of bounds ${this.children.length}`);return $.parent&&$.parent.removeChild($),$.parent=this,this.sortDirty=!0,$.transform._parentID=-1,this.children.splice(J,0,$),this._boundsID++,this.onChildrenChange(J),$.emit("added",this),this.emit("childAdded",$,this,J),$}swapChildren($,J){if($===J)return;let Z=this.getChildIndex($),Q=this.getChildIndex(J);this.children[Z]=J,this.children[Q]=$,this.onChildrenChange(Z<Q?Z:Q)}getChildIndex($){let J=this.children.indexOf($);if(J===-1)throw Error("The supplied DisplayObject must be a child of the caller");return J}setChildIndex($,J){if(J<0||J>=this.children.length)throw Error(`The index ${J} supplied is out of bounds ${this.children.length}`);let Z=this.getChildIndex($);P.removeItems(this.children,Z,1),this.children.splice(J,0,$),this.onChildrenChange(J)}getChildAt($){if($<0||$>=this.children.length)throw Error(`getChildAt: Index (${$}) does not exist.`);return this.children[$]}removeChild(...$){if($.length>1)for(let J=0;J<$.length;J++)this.removeChild($[J]);else{let J=$[0],Z=this.children.indexOf(J);if(Z===-1)return null;J.parent=null,J.transform._parentID=-1,P.removeItems(this.children,Z,1),this._boundsID++,this.onChildrenChange(Z),J.emit("removed",this),this.emit("childRemoved",J,this,Z)}return $[0]}removeChildAt($){let J=this.getChildAt($);return J.parent=null,J.transform._parentID=-1,P.removeItems(this.children,$,1),this._boundsID++,this.onChildrenChange($),J.emit("removed",this),this.emit("childRemoved",J,this,$),J}removeChildren($=0,J=this.children.length){let Z=$,Q=J,q=Q-Z,K;if(q>0&&q<=Q){K=this.children.splice(Z,q);for(let V=0;V<K.length;++V)K[V].parent=null,K[V].transform&&(K[V].transform._parentID=-1);this._boundsID++,this.onChildrenChange($);for(let V=0;V<K.length;++V)K[V].emit("removed",this),this.emit("childRemoved",K[V],this,V);return K}else if(q===0&&this.children.length===0)return[];throw RangeError("removeChildren: numeric values are outside the acceptable range.")}sortChildren(){let $=!1;for(let J=0,Z=this.children.length;J<Z;++J){let Q=this.children[J];Q._lastSortedIndex=J,!$&&Q.zIndex!==0&&($=!0)}$&&this.children.length>1&&this.children.sort(T2),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let $=0,J=this.children.length;$<J;++$){let Z=this.children[$];Z.visible&&Z.updateTransform()}}calculateBounds(){this._bounds.clear(),this._calculateBounds();for(let $=0;$<this.children.length;$++){let J=this.children[$];if(!(!J.visible||!J.renderable))if(J.calculateBounds(),J._mask){let Z=J._mask.isMaskData?J._mask.maskObject:J._mask;Z?(Z.calculateBounds(),this._bounds.addBoundsMask(J._bounds,Z._bounds)):this._bounds.addBounds(J._bounds)}else J.filterArea?this._bounds.addBoundsArea(J._bounds,J.filterArea):this._bounds.addBounds(J._bounds)}this._bounds.updateID=this._boundsID}getLocalBounds($,J=!1){let Z=super.getLocalBounds($);if(!J)for(let Q=0,q=this.children.length;Q<q;++Q){let K=this.children[Q];K.visible&&K.updateTransform()}return Z}_calculateBounds(){}_renderWithCulling($){let J=$.renderTexture.sourceFrame;if(!(J.width>0&&J.height>0))return;let Z,Q;this.cullArea?(Z=this.cullArea,Q=this.worldTransform):this._render!==_.prototype._render&&(Z=this.getBounds(!0));let q=$.projection.transform;if(q&&(Q?(Q=S2.copyFrom(Q),Q.prepend(q)):Q=q),Z&&J.intersects(Z,Q))this._render($);else if(this.cullArea)return;for(let K=0,V=this.children.length;K<V;++K){let H=this.children[K],w=H.cullable;H.cullable=w||!this.cullArea,H.render($),H.cullable=w}}render($){if(!(!this.visible||this.worldAlpha<=0||!this.renderable))if(this._mask||this.filters?.length)this.renderAdvanced($);else if(this.cullable)this._renderWithCulling($);else{this._render($);for(let J=0,Z=this.children.length;J<Z;++J)this.children[J].render($)}}renderAdvanced($){let J=this.filters,Z=this._mask;if(J){this._enabledFilters||(this._enabledFilters=[]),this._enabledFilters.length=0;for(let q=0;q<J.length;q++)J[q].enabled&&this._enabledFilters.push(J[q])}let Q=J&&this._enabledFilters?.length||Z&&(!Z.isMaskData||Z.enabled&&(Z.autoDetect||Z.type!==X0.NONE));if(Q&&$.batch.flush(),J&&this._enabledFilters?.length&&$.filter.push(this,this._enabledFilters),Z&&$.mask.push(this,this._mask),this.cullable)this._renderWithCulling($);else{this._render($);for(let q=0,K=this.children.length;q<K;++q)this.children[q].render($)}Q&&$.batch.flush(),Z&&$.mask.pop(this),J&&this._enabledFilters?.length&&$.filter.pop()}_render($){}destroy($){super.destroy(),this.sortDirty=!1;let J=typeof $=="boolean"?$:$?.children,Z=this.removeChildren(0,this.children.length);if(J)for(let Q=0;Q<Z.length;++Q)Z[Q].destroy($)}get width(){return this.scale.x*this.getLocalBounds().width}set width($){let J=this.getLocalBounds().width;J!==0?this.scale.x=$/J:this.scale.x=1,this._width=$}get height(){return this.scale.y*this.getLocalBounds().height}set height($){let J=this.getLocalBounds().height;J!==0?this.scale.y=$/J:this.scale.y=1,this._height=$}};vJ.defaultSortableChildren=!1;var q0=vJ;q0.prototype.containerUpdateTransform=q0.prototype.updateTransform;Object.defineProperties(B,{SORTABLE_CHILDREN:{get(){return q0.defaultSortableChildren},set(_){P.deprecation("7.1.0","settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren"),q0.defaultSortableChildren=_}}});var e5=new u,d2=new Uint16Array([0,1,2,0,2,3]);class L0 extends q0{constructor(_){super(),this._anchor=new u0(this._onAnchorUpdate,this,_?_.defaultAnchor.x:0,_?_.defaultAnchor.y:0),this._texture=null,this._width=0,this._height=0,this._tintColor=new s(16777215),this._tintRGB=null,this.tint=16777215,this.blendMode=d.NORMAL,this._cachedTint=16777215,this.uvs=null,this.texture=_||E.EMPTY,this.vertexData=new Float32Array(8),this.vertexTrimmedData=null,this._transformID=-1,this._textureID=-1,this._transformTrimmedID=-1,this._textureTrimmedID=-1,this.indices=d2,this.pluginName="batch",this.isSprite=!0,this._roundPixels=B.ROUND_PIXELS}_onTextureUpdate(){this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this._width&&(this.scale.x=P.sign(this.scale.x)*this._width/this._texture.orig.width),this._height&&(this.scale.y=P.sign(this.scale.y)*this._height/this._texture.orig.height)}_onAnchorUpdate(){this._transformID=-1,this._transformTrimmedID=-1}calculateVertices(){let _=this._texture;if(this._transformID===this.transform._worldID&&this._textureID===_._updateID)return;this._textureID!==_._updateID&&(this.uvs=this._texture._uvs.uvsFloat32),this._transformID=this.transform._worldID,this._textureID=_._updateID;let $=this.transform.worldTransform,J=$.a,Z=$.b,Q=$.c,q=$.d,K=$.tx,V=$.ty,H=this.vertexData,w=_.trim,h=_.orig,z=this._anchor,X=0,W=0,G=0,k=0;if(w?(W=w.x-z._x*h.width,X=W+w.width,k=w.y-z._y*h.height,G=k+w.height):(W=-z._x*h.width,X=W+h.width,k=-z._y*h.height,G=k+h.height),H[0]=J*W+Q*k+K,H[1]=q*k+Z*W+V,H[2]=J*X+Q*k+K,H[3]=q*k+Z*X+V,H[4]=J*X+Q*G+K,H[5]=q*G+Z*X+V,H[6]=J*W+Q*G+K,H[7]=q*G+Z*W+V,this._roundPixels){let C=B.RESOLUTION;for(let Y=0;Y<H.length;++Y)H[Y]=Math.round(H[Y]*C)/C}}calculateTrimmedVertices(){if(!this.vertexTrimmedData)this.vertexTrimmedData=new Float32Array(8);else if(this._transformTrimmedID===this.transform._worldID&&this._textureTrimmedID===this._texture._updateID)return;this._transformTrimmedID=this.transform._worldID,this._textureTrimmedID=this._texture._updateID;let _=this._texture,$=this.vertexTrimmedData,J=_.orig,Z=this._anchor,Q=this.transform.worldTransform,q=Q.a,K=Q.b,V=Q.c,H=Q.d,w=Q.tx,h=Q.ty,z=-Z._x*J.width,X=z+J.width,W=-Z._y*J.height,G=W+J.height;if($[0]=q*z+V*W+w,$[1]=H*W+K*z+h,$[2]=q*X+V*W+w,$[3]=H*W+K*X+h,$[4]=q*X+V*G+w,$[5]=H*G+K*X+h,$[6]=q*z+V*G+w,$[7]=H*G+K*z+h,this._roundPixels){let k=B.RESOLUTION;for(let C=0;C<$.length;++C)$[C]=Math.round($[C]*k)/k}}_render(_){this.calculateVertices(),_.batch.setObjectRenderer(_.plugins[this.pluginName]),_.plugins[this.pluginName].render(this)}_calculateBounds(){let _=this._texture.trim,$=this._texture.orig;!_||_.width===$.width&&_.height===$.height?(this.calculateVertices(),this._bounds.addQuad(this.vertexData)):(this.calculateTrimmedVertices(),this._bounds.addQuad(this.vertexTrimmedData))}getLocalBounds(_){return this.children.length===0?(this._localBounds||(this._localBounds=new f_),this._localBounds.minX=this._texture.orig.width*-this._anchor._x,this._localBounds.minY=this._texture.orig.height*-this._anchor._y,this._localBounds.maxX=this._texture.orig.width*(1-this._anchor._x),this._localBounds.maxY=this._texture.orig.height*(1-this._anchor._y),_||(this._localBoundsRect||(this._localBoundsRect=new x),_=this._localBoundsRect),this._localBounds.getRectangle(_)):super.getLocalBounds.call(this,_)}containsPoint(_){this.worldTransform.applyInverse(_,e5);let $=this._texture.orig.width,J=this._texture.orig.height,Z=-$*this.anchor.x,Q=0;return e5.x>=Z&&e5.x<Z+$&&(Q=-J*this.anchor.y,e5.y>=Q&&e5.y<Q+J)}destroy(_){if(super.destroy(_),this._texture.off("update",this._onTextureUpdate,this),this._anchor=null,typeof _=="boolean"?_:_?.texture){let $=typeof _=="boolean"?_:_?.baseTexture;this._texture.destroy(!!$)}this._texture=null}static from(_,$){let J=_ instanceof E?_:E.from(_,$);return new L0(J)}set roundPixels(_){this._roundPixels!==_&&(this._transformID=-1,this._transformTrimmedID=-1),this._roundPixels=_}get roundPixels(){return this._roundPixels}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(_){let $=P.sign(this.scale.x)||1;this.scale.x=$*_/this._texture.orig.width,this._width=_}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(_){let $=P.sign(this.scale.y)||1;this.scale.y=$*_/this._texture.orig.height,this._height=_}get anchor(){return this._anchor}set anchor(_){this._anchor.copyFrom(_)}get tint(){return this._tintColor.value}set tint(_){this._tintColor.setValue(_),this._tintRGB=this._tintColor.toLittleEndianNumber()}get tintValue(){return this._tintColor.toNumber()}get texture(){return this._texture}set texture(_){this._texture!==_&&(this._texture&&this._texture.off("update",this._onTextureUpdate,this),this._texture=_||E.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,_&&(_.baseTexture.valid?this._onTextureUpdate():_.once("update",this._onTextureUpdate,this)))}}var cJ=new o;t.prototype._cacheAsBitmap=!1;t.prototype._cacheData=null;t.prototype._cacheAsBitmapResolution=null;t.prototype._cacheAsBitmapMultisample=null;class yJ{constructor(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.originalContainsPoint=null,this.sprite=null}}Object.defineProperties(t.prototype,{cacheAsBitmapResolution:{get(){return this._cacheAsBitmapResolution},set(_){_!==this._cacheAsBitmapResolution&&(this._cacheAsBitmapResolution=_,this.cacheAsBitmap&&(this.cacheAsBitmap=!1,this.cacheAsBitmap=!0))}},cacheAsBitmapMultisample:{get(){return this._cacheAsBitmapMultisample},set(_){_!==this._cacheAsBitmapMultisample&&(this._cacheAsBitmapMultisample=_,this.cacheAsBitmap&&(this.cacheAsBitmap=!1,this.cacheAsBitmap=!0))}},cacheAsBitmap:{get(){return this._cacheAsBitmap},set(_){if(this._cacheAsBitmap===_)return;this._cacheAsBitmap=_;let $;_?(this._cacheData||(this._cacheData=new yJ),$=this._cacheData,$.originalRender=this.render,$.originalRenderCanvas=this.renderCanvas,$.originalUpdateTransform=this.updateTransform,$.originalCalculateBounds=this.calculateBounds,$.originalGetLocalBounds=this.getLocalBounds,$.originalDestroy=this.destroy,$.originalContainsPoint=this.containsPoint,$.originalMask=this._mask,$.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):($=this._cacheData,$.sprite&&this._destroyCachedDisplayObject(),this.render=$.originalRender,this.renderCanvas=$.originalRenderCanvas,this.calculateBounds=$.originalCalculateBounds,this.getLocalBounds=$.originalGetLocalBounds,this.destroy=$.originalDestroy,this.updateTransform=$.originalUpdateTransform,this.containsPoint=$.originalContainsPoint,this._mask=$.originalMask,this.filterArea=$.originalFilterArea)}}});t.prototype._renderCached=function(_){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(_),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(_))};t.prototype._initCachedDisplayObject=function(_){if(this._cacheData?.sprite)return;let $=this.alpha;this.alpha=1,_.batch.flush();let J=this.getLocalBounds(new x,!0);if(this.filters?.length){let X=this.filters[0].padding;J.pad(X)}let Z=this.cacheAsBitmapResolution||_.resolution;J.ceil(Z),J.width=Math.max(J.width,1/Z),J.height=Math.max(J.height,1/Z);let Q=_.renderTexture.current,q=_.renderTexture.sourceFrame.clone(),K=_.renderTexture.destinationFrame.clone(),V=_.projection.transform,H=a0.create({width:J.width,height:J.height,resolution:Z,multisample:this.cacheAsBitmapMultisample??_.multisample}),w=`cacheAsBitmap_${P.uid()}`;this._cacheData.textureCacheId=w,p.addToCache(H.baseTexture,w),E.addToCache(H,w);let h=this.transform.localTransform.copyTo(cJ).invert().translate(-J.x,-J.y);this.render=this._cacheData.originalRender,_.render(this,{renderTexture:H,clear:!0,transform:h,skipUpdateTransform:!1}),_.framebuffer.blit(),_.projection.transform=V,_.renderTexture.bind(Q,q,K),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null,this.alpha=$;let z=new L0(H);z.transform.worldTransform=this.transform.worldTransform,z.anchor.x=-(J.x/J.width),z.anchor.y=-(J.y/J.height),z.alpha=$,z._bounds=this._bounds,this._cacheData.sprite=z,this.transform._parentID=-1,this.parent?this.updateTransform():(this.enableTempParent(),this.updateTransform(),this.disableTempParent(null)),this.containsPoint=z.containsPoint.bind(z)};t.prototype._renderCachedCanvas=function(_){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(_),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(_))};t.prototype._initCachedDisplayObjectCanvas=function(_){if(this._cacheData?.sprite)return;let $=this.getLocalBounds(new x,!0),J=this.alpha;this.alpha=1;let Z=_.canvasContext.activeContext,Q=_._projTransform,q=this.cacheAsBitmapResolution||_.resolution;$.ceil(q),$.width=Math.max($.width,1/q),$.height=Math.max($.height,1/q);let K=a0.create({width:$.width,height:$.height,resolution:q}),V=`cacheAsBitmap_${P.uid()}`;this._cacheData.textureCacheId=V,p.addToCache(K.baseTexture,V),E.addToCache(K,V);let H=cJ;this.transform.localTransform.copyTo(H),H.invert(),H.tx-=$.x,H.ty-=$.y,this.renderCanvas=this._cacheData.originalRenderCanvas,_.render(this,{renderTexture:K,clear:!0,transform:H,skipUpdateTransform:!1}),_.canvasContext.activeContext=Z,_._projTransform=Q,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null,this.alpha=J;let w=new L0(K);w.transform.worldTransform=this.transform.worldTransform,w.anchor.x=-($.x/$.width),w.anchor.y=-($.y/$.height),w.alpha=J,w._bounds=this._bounds,this._cacheData.sprite=w,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=_._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=w.containsPoint.bind(w)};t.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._bounds.updateID=this._boundsID};t.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds(null)};t.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,p.removeFromCache(this._cacheData.textureCacheId),E.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null};t.prototype._cacheAsBitmapDestroy=function(_){this.cacheAsBitmap=!1,this.destroy(_)};t.prototype.name=null;q0.prototype.getChildByName=function(_,$){for(let J=0,Z=this.children.length;J<Z;J++)if(this.children[J].name===_)return this.children[J];if($)for(let J=0,Z=this.children.length;J<Z;J++){let Q=this.children[J];if(!Q.getChildByName)continue;let q=Q.getChildByName(_,!0);if(q)return q}return null};t.prototype.getGlobalPosition=function(_=new u,$=!1){return this.parent?this.parent.toGlobal(this.position,_,$):(_.x=this.position.x,_.y=this.position.y),_};var SJ=`varying vec2 vTextureCoord;
523
+ `;var q7=RJ,r5=MJ;class Q8{constructor(_){this.renderer=_}contextChange(_){let $;if(this.renderer.context.webGLVersion===1){let J=_.getParameter(_.FRAMEBUFFER_BINDING);_.bindFramebuffer(_.FRAMEBUFFER,null),$=_.getParameter(_.SAMPLES),_.bindFramebuffer(_.FRAMEBUFFER,J)}else{let J=_.getParameter(_.DRAW_FRAMEBUFFER_BINDING);_.bindFramebuffer(_.DRAW_FRAMEBUFFER,null),$=_.getParameter(_.SAMPLES),_.bindFramebuffer(_.DRAW_FRAMEBUFFER,J)}$>=e.HIGH?this.multisample=e.HIGH:$>=e.MEDIUM?this.multisample=e.MEDIUM:$>=e.LOW?this.multisample=e.LOW:this.multisample=e.NONE}destroy(){}}Q8.extension={type:b.RendererSystem,name:"_multisample"};O.add(Q8);class K7{constructor(_){this.buffer=_||null,this.updateID=-1,this.byteLength=-1,this.refCount=0}}class q8{constructor(_){this.renderer=_,this.managedBuffers={},this.boundBufferBases={}}destroy(){this.renderer=null}contextChange(){this.disposeAll(!0),this.gl=this.renderer.gl,this.CONTEXT_UID=this.renderer.CONTEXT_UID}bind(_){let{gl:$,CONTEXT_UID:J}=this,Z=_._glBuffers[J]||this.createGLBuffer(_);$.bindBuffer(_.type,Z.buffer)}unbind(_){let{gl:$}=this;$.bindBuffer(_,null)}bindBufferBase(_,$){let{gl:J,CONTEXT_UID:Z}=this;if(this.boundBufferBases[$]!==_){let Q=_._glBuffers[Z]||this.createGLBuffer(_);this.boundBufferBases[$]=_,J.bindBufferBase(J.UNIFORM_BUFFER,$,Q.buffer)}}bindBufferRange(_,$,J){let{gl:Z,CONTEXT_UID:Q}=this;J=J||0;let q=_._glBuffers[Q]||this.createGLBuffer(_);Z.bindBufferRange(Z.UNIFORM_BUFFER,$||0,q.buffer,J*256,256)}update(_){let{gl:$,CONTEXT_UID:J}=this,Z=_._glBuffers[J]||this.createGLBuffer(_);if(_._updateID!==Z.updateID)if(Z.updateID=_._updateID,$.bindBuffer(_.type,Z.buffer),Z.byteLength>=_.data.byteLength)$.bufferSubData(_.type,0,_.data);else{let Q=_.static?$.STATIC_DRAW:$.DYNAMIC_DRAW;Z.byteLength=_.data.byteLength,$.bufferData(_.type,_.data,Q)}}dispose(_,$){if(!this.managedBuffers[_.id])return;delete this.managedBuffers[_.id];let J=_._glBuffers[this.CONTEXT_UID],Z=this.gl;_.disposeRunner.remove(this),J&&($||Z.deleteBuffer(J.buffer),delete _._glBuffers[this.CONTEXT_UID])}disposeAll(_){let $=Object.keys(this.managedBuffers);for(let J=0;J<$.length;J++)this.dispose(this.managedBuffers[$[J]],_)}createGLBuffer(_){let{CONTEXT_UID:$,gl:J}=this;return _._glBuffers[$]=new K7(J.createBuffer()),this.managedBuffers[_.id]=_,_.disposeRunner.add(this),_._glBuffers[$]}}q8.extension={type:b.RendererSystem,name:"buffer"};O.add(q8);class K8{constructor(_){this.renderer=_}render(_,$){let J=this.renderer,Z,Q,q,K;if($&&(Z=$.renderTexture,Q=$.clear,q=$.transform,K=$.skipUpdateTransform),this.renderingToScreen=!Z,J.runners.prerender.emit(),J.emit("prerender"),J.projection.transform=q,!J.context.isLost){if(Z||(this.lastObjectRendered=_),!K){let V=_.enableTempParent();_.updateTransform(),_.disableTempParent(V)}J.renderTexture.bind(Z),J.batch.currentRenderer.start(),(Q??J.background.clearBeforeRender)&&J.renderTexture.clear(),_.render(J),J.batch.currentRenderer.flush(),Z&&($.blit&&J.framebuffer.blit(),Z.baseTexture.update()),J.runners.postrender.emit(),J.projection.transform=null,J.emit("postrender")}}destroy(){this.renderer=null,this.lastObjectRendered=null}}K8.extension={type:b.RendererSystem,name:"objectRenderer"};O.add(K8);var V8=class _ extends l5{constructor($){super(),this.type=h9.WEBGL,$=Object.assign({},B.RENDER_OPTIONS,$),this.gl=null,this.CONTEXT_UID=0,this.globalUniforms=new O0({projectionMatrix:new o},!0);let J={runners:["init","destroy","contextChange","resolutionChange","reset","update","postrender","prerender","resize"],systems:_.__systems,priority:["_view","textureGenerator","background","_plugin","startup","context","state","texture","buffer","geometry","framebuffer","transformFeedback","mask","scissor","stencil","projection","textureGC","filter","renderTexture","batch","objectRenderer","_multisample"]};this.setup(J),"useContextAlpha"in $&&(l("7.0.0","options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead"),$.premultipliedAlpha=$.useContextAlpha&&$.useContextAlpha!=="notMultiplied",$.backgroundAlpha=$.useContextAlpha===!1?1:$.backgroundAlpha),this._plugin.rendererPlugins=_.__plugins,this.options=$,this.startup.run(this.options)}static test($){return $?.forceCanvas?!1:R6()}render($,J){this.objectRenderer.render($,J)}resize($,J){this._view.resizeView($,J)}reset(){return this.runners.reset.emit(),this}clear(){this.renderTexture.bind(),this.renderTexture.clear()}destroy($=!1){this.runners.destroy.items.reverse(),this.emitWithCustomOptions(this.runners.destroy,{_view:$}),super.destroy()}get plugins(){return this._plugin.plugins}get multisample(){return this._multisample.multisample}get width(){return this._view.element.width}get height(){return this._view.element.height}get resolution(){return this._view.resolution}set resolution($){this._view.resolution=$,this.runners.resolutionChange.emit($)}get autoDensity(){return this._view.autoDensity}get view(){return this._view.element}get screen(){return this._view.screen}get lastObjectRendered(){return this.objectRenderer.lastObjectRendered}get renderingToScreen(){return this.objectRenderer.renderingToScreen}get rendererLogId(){return`WebGL ${this.context.webGLVersion}`}get clearBeforeRender(){return l("7.0.0","renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead."),this.background.clearBeforeRender}get useContextAlpha(){return l("7.0.0","renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead."),this.context.useContextAlpha}get preserveDrawingBuffer(){return l("7.0.0","renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context"),this.context.preserveDrawingBuffer}get backgroundColor(){return l("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color}set backgroundColor($){l("7.0.0","renderer.backgroundColor has been deprecated, use renderer.background.color instead."),this.background.color=$}get backgroundAlpha(){return l("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha}set backgroundAlpha($){l("7.0.0","renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead."),this.background.alpha=$}get powerPreference(){return l("7.0.0","renderer.powerPreference has been deprecated, we can only know this if pixi creates the context"),this.context.powerPreference}generateTexture($,J){return this.textureGenerator.generateTexture($,J)}};V8.extension={type:b.Renderer,priority:1},V8.__plugins={},V8.__systems={};var H8=V8;O.handleByMap(b.RendererPlugin,H8.__plugins);O.handleByMap(b.RendererSystem,H8.__systems);O.add(H8);class C1 extends i0{constructor(_,$){let{width:J,height:Z}=$||{};super(J,Z),this.items=[],this.itemDirtyIds=[];for(let Q=0;Q<_;Q++){let q=new p;this.items.push(q),this.itemDirtyIds.push(-2)}this.length=_,this._load=null,this.baseTexture=null}initFromArray(_,$){for(let J=0;J<this.length;J++)_[J]&&(_[J].castToBaseTexture?this.addBaseTextureAt(_[J].castToBaseTexture(),J):_[J]instanceof i0?this.addResourceAt(_[J],J):this.addResourceAt(v1(_[J],$),J))}dispose(){for(let _=0,$=this.length;_<$;_++)this.items[_].destroy();this.items=null,this.itemDirtyIds=null,this._load=null}addResourceAt(_,$){if(!this.items[$])throw Error(`Index ${$} is out of bounds`);return _.valid&&!this.valid&&this.resize(_.width,_.height),this.items[$].setResource(_),this}bind(_){if(this.baseTexture!==null)throw Error("Only one base texture per TextureArray is allowed");super.bind(_);for(let $=0;$<this.length;$++)this.items[$].parentTextureArray=_,this.items[$].on("update",_.update,_)}unbind(_){super.unbind(_);for(let $=0;$<this.length;$++)this.items[$].parentTextureArray=null,this.items[$].off("update",_.update,_)}load(){if(this._load)return this._load;let _=this.items.map(($)=>$.resource).filter(($)=>$).map(($)=>$.load());return this._load=Promise.all(_).then(()=>{let{realWidth:$,realHeight:J}=this.items[0];return this.resize($,J),this.update(),Promise.resolve(this)}),this._load}}class w8 extends C1{constructor(_,$){let{width:J,height:Z}=$||{},Q,q;Array.isArray(_)?(Q=_,q=_.length):q=_,super(q,{width:J,height:Z}),Q&&this.initFromArray(Q,$)}addBaseTextureAt(_,$){if(_.resource)this.addResourceAt(_.resource,$);else throw Error("ArrayResource does not support RenderTexture");return this}bind(_){super.bind(_),_.target=A_.TEXTURE_2D_ARRAY}upload(_,$,J){let{length:Z,itemDirtyIds:Q,items:q}=this,{gl:K}=_;J.dirtyId<0&&K.texImage3D(K.TEXTURE_2D_ARRAY,0,J.internalFormat,this._width,this._height,Z,0,$.format,J.type,null);for(let V=0;V<Z;V++){let H=q[V];Q[V]<H.dirtyId&&(Q[V]=H.dirtyId,H.valid&&K.texSubImage3D(K.TEXTURE_2D_ARRAY,0,0,0,V,H.resource.width,H.resource.height,1,$.format,J.type,H.resource.source))}return!0}}class h8 extends b0{constructor(_){super(_)}static test(_){let{OffscreenCanvas:$}=globalThis;return $&&_ instanceof $?!0:globalThis.HTMLCanvasElement&&_ instanceof HTMLCanvasElement}}var fJ=class _ extends C1{constructor($,J){let{width:Z,height:Q,autoLoad:q,linkBaseTexture:K}=J||{};if($&&$.length!==_.SIDES)throw Error(`Invalid length. Got ${$.length}, expected 6`);super(6,{width:Z,height:Q});for(let V=0;V<_.SIDES;V++)this.items[V].target=A_.TEXTURE_CUBE_MAP_POSITIVE_X+V;this.linkBaseTexture=K!==!1,$&&this.initFromArray($,J),q!==!1&&this.load()}bind($){super.bind($),$.target=A_.TEXTURE_CUBE_MAP}addBaseTextureAt($,J,Z){if(Z===void 0&&(Z=this.linkBaseTexture),!this.items[J])throw Error(`Index ${J} is out of bounds`);if(!this.linkBaseTexture||$.parentTextureArray||Object.keys($._glTextures).length>0)if($.resource)this.addResourceAt($.resource,J);else throw Error("CubeResource does not support copying of renderTexture.");else $.target=A_.TEXTURE_CUBE_MAP_POSITIVE_X+J,$.parentTextureArray=this.baseTexture,this.items[J]=$;return $.valid&&!this.valid&&this.resize($.realWidth,$.realHeight),this.items[J]=$,this}upload($,J,Z){let Q=this.itemDirtyIds;for(let q=0;q<_.SIDES;q++){let K=this.items[q];(Q[q]<K.dirtyId||Z.dirtyId<J.dirtyId)&&(K.valid&&K.resource?(K.resource.upload($,K,Z),Q[q]=K.dirtyId):Q[q]<-1&&($.gl.texImage2D(K.target,0,Z.internalFormat,J.realWidth,J.realHeight,0,J.format,Z.type,null),Q[q]=-1))}return!0}static test($){return Array.isArray($)&&$.length===_.SIDES}};fJ.SIDES=6;var V7=fJ;class l_ extends b0{constructor(_,$){$=$||{};let J,Z,Q;typeof _=="string"?(J=l_.EMPTY,Z=_,Q=!0):(J=_,Z=null,Q=!1),super(J),this.url=Z,this.crossOrigin=$.crossOrigin??!0,this.alphaMode=typeof $.alphaMode=="number"?$.alphaMode:null,this.ownsImageBitmap=$.ownsImageBitmap??Q,this._load=null,$.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(async(_,$)=>{if(this.url===null){_(this);return}try{let J=await B.ADAPTER.fetch(this.url,{mode:this.crossOrigin?"cors":"no-cors"});if(this.destroyed)return;let Z=await J.blob();if(this.destroyed)return;let Q=await createImageBitmap(Z,{premultiplyAlpha:this.alphaMode===null||this.alphaMode===K0.UNPACK?"premultiply":"none"});if(this.destroyed){Q.close();return}this.source=Q,this.update(),_(this)}catch(J){if(this.destroyed)return;$(J),this.onError.emit(J)}}),this._load)}upload(_,$,J){return this.source instanceof ImageBitmap?(typeof this.alphaMode=="number"&&($.alphaMode=this.alphaMode),super.upload(_,$,J)):(this.load(),!1)}dispose(){this.ownsImageBitmap&&this.source instanceof ImageBitmap&&this.source.close(),super.dispose(),this._load=null}static test(_){return!!globalThis.createImageBitmap&&typeof ImageBitmap<"u"&&(typeof _=="string"||_ instanceof ImageBitmap)}static get EMPTY(){return l_._EMPTY=l_._EMPTY??B.ADAPTER.createCanvas(0,0),l_._EMPTY}}var H7=class _ extends b0{constructor($,J){J=J||{},super(B.ADAPTER.createCanvas()),this._width=0,this._height=0,this.svg=$,this.scale=J.scale||1,this._overrideWidth=J.width,this._overrideHeight=J.height,this._resolve=null,this._crossorigin=J.crossorigin,this._load=null,J.autoLoad!==!1&&this.load()}load(){return this._load?this._load:(this._load=new Promise(($)=>{if(this._resolve=()=>{this.update(),$(this)},_.SVG_XML.test(this.svg.trim())){if(!btoa)throw Error("Your browser doesn't support base64 conversions.");this.svg=`data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(this.svg)))}`}this._loadSvg()}),this._load)}_loadSvg(){let $=new Image;b0.crossOrigin($,this.svg,this._crossorigin),$.src=this.svg,$.onerror=(J)=>{this._resolve&&($.onerror=null,this.onError.emit(J))},$.onload=()=>{if(!this._resolve)return;let{width:J,height:Z}=$;if(!J||!Z)throw Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");let Q=J*this.scale,q=Z*this.scale;(this._overrideWidth||this._overrideHeight)&&(Q=this._overrideWidth||this._overrideHeight/Z*J,q=this._overrideHeight||this._overrideWidth/J*Z),Q=Math.round(Q),q=Math.round(q);let K=this.source;K.width=Q,K.height=q,K._pixiId=`canvas_${W_()}`,K.getContext("2d").drawImage($,0,0,J,Z,0,0,Q,q),this._resolve(),this._resolve=null}}static getSize($){let J=_.SVG_SIZE.exec($),Z={};return J&&(Z[J[1]]=Math.round(parseFloat(J[3])),Z[J[5]]=Math.round(parseFloat(J[7]))),Z}dispose(){super.dispose(),this._resolve=null,this._crossorigin=null}static test($,J){return J==="svg"||typeof $=="string"&&$.startsWith("data:image/svg+xml")||typeof $=="string"&&_.SVG_XML.test($)}};H7.SVG_XML=/^(<\?xml[^?]+\?>)?\s*(<!--[^(-->)]*-->)?\s*\<svg/m,H7.SVG_SIZE=/<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;var n1=H7;class w7 extends b0{constructor(_){super(_)}static test(_){return!!globalThis.VideoFrame&&_ instanceof globalThis.VideoFrame}}var h7=class _ extends b0{constructor($,J){if(J=J||{},!($ instanceof HTMLVideoElement)){let Z=document.createElement("video");J.autoLoad!==!1&&Z.setAttribute("preload","auto"),J.playsinline!==!1&&(Z.setAttribute("webkit-playsinline",""),Z.setAttribute("playsinline","")),J.muted===!0&&(Z.setAttribute("muted",""),Z.muted=!0),J.loop===!0&&Z.setAttribute("loop",""),J.autoPlay!==!1&&Z.setAttribute("autoplay",""),typeof $=="string"&&($=[$]);let Q=$[0].src||$[0];b0.crossOrigin(Z,Q,J.crossorigin);for(let q=0;q<$.length;++q){let K=document.createElement("source"),{src:V,mime:H}=$[q];if(V=V||$[q],V.startsWith("data:"))H=V.slice(5,V.indexOf(";"));else if(!V.startsWith("blob:")){let w=V.split("?").shift().toLowerCase(),h=w.slice(w.lastIndexOf(".")+1);H=H||_.MIME_TYPES[h]||`video/${h}`}K.src=V,H&&(K.type=H),Z.appendChild(K)}$=Z}super($),this.noSubImage=!0,this._autoUpdate=!0,this._isConnectedToTicker=!1,this._updateFPS=J.updateFPS||0,this._msToNextUpdate=0,this.autoPlay=J.autoPlay!==!1,this._videoFrameRequestCallback=this._videoFrameRequestCallback.bind(this),this._videoFrameRequestCallbackHandle=null,this._load=null,this._resolve=null,this._reject=null,this._onCanPlay=this._onCanPlay.bind(this),this._onError=this._onError.bind(this),this._onPlayStart=this._onPlayStart.bind(this),this._onPlayStop=this._onPlayStop.bind(this),this._onSeeked=this._onSeeked.bind(this),J.autoLoad!==!1&&this.load()}update($=0){if(!this.destroyed){if(this._updateFPS){let J=k0.shared.elapsedMS*this.source.playbackRate;this._msToNextUpdate=Math.floor(this._msToNextUpdate-J)}(!this._updateFPS||this._msToNextUpdate<=0)&&(super.update(),this._msToNextUpdate=this._updateFPS?Math.floor(1000/this._updateFPS):0)}}_videoFrameRequestCallback(){this.update(),this.destroyed?this._videoFrameRequestCallbackHandle=null:this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback)}load(){if(this._load)return this._load;let $=this.source;return($.readyState===$.HAVE_ENOUGH_DATA||$.readyState===$.HAVE_FUTURE_DATA)&&$.width&&$.height&&($.complete=!0),$.addEventListener("play",this._onPlayStart),$.addEventListener("pause",this._onPlayStop),$.addEventListener("seeked",this._onSeeked),this._isSourceReady()?this._onCanPlay():($.addEventListener("canplay",this._onCanPlay),$.addEventListener("canplaythrough",this._onCanPlay),$.addEventListener("error",this._onError,!0)),this._load=new Promise((J,Z)=>{this.valid?J(this):(this._resolve=J,this._reject=Z,$.load())}),this._load}_onError($){this.source.removeEventListener("error",this._onError,!0),this.onError.emit($),this._reject&&(this._reject($),this._reject=null,this._resolve=null)}_isSourcePlaying(){let $=this.source;return!$.paused&&!$.ended}_isSourceReady(){return this.source.readyState>2}_onPlayStart(){this.valid||this._onCanPlay(),this._configureAutoUpdate()}_onPlayStop(){this._configureAutoUpdate()}_onSeeked(){this._autoUpdate&&!this._isSourcePlaying()&&(this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0)}_onCanPlay(){let $=this.source;$.removeEventListener("canplay",this._onCanPlay),$.removeEventListener("canplaythrough",this._onCanPlay);let J=this.valid;this._msToNextUpdate=0,this.update(),this._msToNextUpdate=0,!J&&this._resolve&&(this._resolve(this),this._resolve=null,this._reject=null),this._isSourcePlaying()?this._onPlayStart():this.autoPlay&&$.play()}dispose(){this._configureAutoUpdate();let $=this.source;$&&($.removeEventListener("play",this._onPlayStart),$.removeEventListener("pause",this._onPlayStop),$.removeEventListener("seeked",this._onSeeked),$.removeEventListener("canplay",this._onCanPlay),$.removeEventListener("canplaythrough",this._onCanPlay),$.removeEventListener("error",this._onError,!0),$.pause(),$.src="",$.load()),super.dispose()}get autoUpdate(){return this._autoUpdate}set autoUpdate($){$!==this._autoUpdate&&(this._autoUpdate=$,this._configureAutoUpdate())}get updateFPS(){return this._updateFPS}set updateFPS($){$!==this._updateFPS&&(this._updateFPS=$,this._configureAutoUpdate())}_configureAutoUpdate(){this._autoUpdate&&this._isSourcePlaying()?!this._updateFPS&&this.source.requestVideoFrameCallback?(this._isConnectedToTicker&&(k0.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0),this._videoFrameRequestCallbackHandle===null&&(this._videoFrameRequestCallbackHandle=this.source.requestVideoFrameCallback(this._videoFrameRequestCallback))):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker||(k0.shared.add(this.update,this),this._isConnectedToTicker=!0,this._msToNextUpdate=0)):(this._videoFrameRequestCallbackHandle!==null&&(this.source.cancelVideoFrameCallback(this._videoFrameRequestCallbackHandle),this._videoFrameRequestCallbackHandle=null),this._isConnectedToTicker&&(k0.shared.remove(this.update,this),this._isConnectedToTicker=!1,this._msToNextUpdate=0))}static test($,J){return globalThis.HTMLVideoElement&&$ instanceof HTMLVideoElement||_.TYPES.includes(J)}};h7.TYPES=["mp4","m4v","webm","ogg","ogv","h264","avi","mov"],h7.MIME_TYPES={ogv:"video/ogg",mov:"video/quicktime",m4v:"video/mp4"};var t5=h7;L5.push(l_,p1,h8,t5,w7,n1,k_,V7,w8);class f_{constructor(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,this.rect=null,this.updateID=-1}isEmpty(){return this.minX>this.maxX||this.minY>this.maxY}clear(){this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0}getRectangle(_){return this.minX>this.maxX||this.minY>this.maxY?x.EMPTY:(_=_||new x(0,0,1,1),_.x=this.minX,_.y=this.minY,_.width=this.maxX-this.minX,_.height=this.maxY-this.minY,_)}addPoint(_){this.minX=Math.min(this.minX,_.x),this.maxX=Math.max(this.maxX,_.x),this.minY=Math.min(this.minY,_.y),this.maxY=Math.max(this.maxY,_.y)}addPointMatrix(_,$){let{a:J,b:Z,c:Q,d:q,tx:K,ty:V}=_,H=J*$.x+Q*$.y+K,w=Z*$.x+q*$.y+V;this.minX=Math.min(this.minX,H),this.maxX=Math.max(this.maxX,H),this.minY=Math.min(this.minY,w),this.maxY=Math.max(this.maxY,w)}addQuad(_){let $=this.minX,J=this.minY,Z=this.maxX,Q=this.maxY,q=_[0],K=_[1];$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,q=_[2],K=_[3],$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,q=_[4],K=_[5],$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,q=_[6],K=_[7],$=q<$?q:$,J=K<J?K:J,Z=q>Z?q:Z,Q=K>Q?K:Q,this.minX=$,this.minY=J,this.maxX=Z,this.maxY=Q}addFrame(_,$,J,Z,Q){this.addFrameMatrix(_.worldTransform,$,J,Z,Q)}addFrameMatrix(_,$,J,Z,Q){let{a:q,b:K,c:V,d:H,tx:w,ty:h}=_,z=this.minX,X=this.minY,W=this.maxX,G=this.maxY,k=q*$+V*J+w,C=K*$+H*J+h;z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,k=q*Z+V*J+w,C=K*Z+H*J+h,z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,k=q*$+V*Q+w,C=K*$+H*Q+h,z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,k=q*Z+V*Q+w,C=K*Z+H*Q+h,z=k<z?k:z,X=C<X?C:X,W=k>W?k:W,G=C>G?C:G,this.minX=z,this.minY=X,this.maxX=W,this.maxY=G}addVertexData(_,$,J){let Z=this.minX,Q=this.minY,q=this.maxX,K=this.maxY;for(let V=$;V<J;V+=2){let H=_[V],w=_[V+1];Z=H<Z?H:Z,Q=w<Q?w:Q,q=H>q?H:q,K=w>K?w:K}this.minX=Z,this.minY=Q,this.maxX=q,this.maxY=K}addVertices(_,$,J,Z){this.addVerticesMatrix(_.worldTransform,$,J,Z)}addVerticesMatrix(_,$,J,Z,Q=0,q=Q){let{a:K,b:V,c:H,d:w,tx:h,ty:z}=_,X=this.minX,W=this.minY,G=this.maxX,k=this.maxY;for(let C=J;C<Z;C+=2){let Y=$[C],U=$[C+1],N=K*Y+H*U+h,I=w*U+V*Y+z;X=Math.min(X,N-Q),G=Math.max(G,N+Q),W=Math.min(W,I-q),k=Math.max(k,I+q)}this.minX=X,this.minY=W,this.maxX=G,this.maxY=k}addBounds(_){let $=this.minX,J=this.minY,Z=this.maxX,Q=this.maxY;this.minX=_.minX<$?_.minX:$,this.minY=_.minY<J?_.minY:J,this.maxX=_.maxX>Z?_.maxX:Z,this.maxY=_.maxY>Q?_.maxY:Q}addBoundsMask(_,$){let J=_.minX>$.minX?_.minX:$.minX,Z=_.minY>$.minY?_.minY:$.minY,Q=_.maxX<$.maxX?_.maxX:$.maxX,q=_.maxY<$.maxY?_.maxY:$.maxY;if(J<=Q&&Z<=q){let K=this.minX,V=this.minY,H=this.maxX,w=this.maxY;this.minX=J<K?J:K,this.minY=Z<V?Z:V,this.maxX=Q>H?Q:H,this.maxY=q>w?q:w}}addBoundsMatrix(_,$){this.addFrameMatrix($,_.minX,_.minY,_.maxX,_.maxY)}addBoundsArea(_,$){let J=_.minX>$.x?_.minX:$.x,Z=_.minY>$.y?_.minY:$.y,Q=_.maxX<$.x+$.width?_.maxX:$.x+$.width,q=_.maxY<$.y+$.height?_.maxY:$.y+$.height;if(J<=Q&&Z<=q){let K=this.minX,V=this.minY,H=this.maxX,w=this.maxY;this.minX=J<K?J:K,this.minY=Z<V?Z:V,this.maxX=Q>H?Q:H,this.maxY=q>w?q:w}}pad(_=0,$=_){this.isEmpty()||(this.minX-=_,this.maxX+=_,this.minY-=$,this.maxY+=$)}addFramePad(_,$,J,Z,Q,q){_-=Q,$-=q,J+=Q,Z+=q,this.minX=this.minX<_?this.minX:_,this.maxX=this.maxX>J?this.maxX:J,this.minY=this.minY<$?this.minY:$,this.maxY=this.maxY>Z?this.maxY:Z}}class t extends P.EventEmitter{constructor(){super(),this.tempDisplayObjectParent=null,this.transform=new z1,this.alpha=1,this.visible=!0,this.renderable=!0,this.cullable=!1,this.cullArea=null,this.parent=null,this.worldAlpha=1,this._lastSortedIndex=0,this._zIndex=0,this.filterArea=null,this.filters=null,this._enabledFilters=null,this._bounds=new f_,this._localBounds=null,this._boundsID=0,this._boundsRect=null,this._localBoundsRect=null,this._mask=null,this._maskRefCount=0,this._destroyed=!1,this.isSprite=!1,this.isMask=!1}static mixin(_){let $=Object.keys(_);for(let J=0;J<$.length;++J){let Z=$[J];Object.defineProperty(t.prototype,Z,Object.getOwnPropertyDescriptor(_,Z))}}get destroyed(){return this._destroyed}_recursivePostUpdateTransform(){this.parent?(this.parent._recursivePostUpdateTransform(),this.transform.updateTransform(this.parent.transform)):this.transform.updateTransform(this._tempDisplayObjectParent.transform)}updateTransform(){this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha}getBounds(_,$){return _||(this.parent?(this._recursivePostUpdateTransform(),this.updateTransform()):(this.parent=this._tempDisplayObjectParent,this.updateTransform(),this.parent=null)),this._bounds.updateID!==this._boundsID&&(this.calculateBounds(),this._bounds.updateID=this._boundsID),$||(this._boundsRect||(this._boundsRect=new x),$=this._boundsRect),this._bounds.getRectangle($)}getLocalBounds(_){_||(this._localBoundsRect||(this._localBoundsRect=new x),_=this._localBoundsRect),this._localBounds||(this._localBounds=new f_);let $=this.transform,J=this.parent;this.parent=null,this._tempDisplayObjectParent.worldAlpha=J?.worldAlpha??1,this.transform=this._tempDisplayObjectParent.transform;let Z=this._bounds,Q=this._boundsID;this._bounds=this._localBounds;let q=this.getBounds(!1,_);return this.parent=J,this.transform=$,this._bounds=Z,this._bounds.updateID+=this._boundsID-Q,q}toGlobal(_,$,J=!1){return J||(this._recursivePostUpdateTransform(),this.parent?this.displayObjectUpdateTransform():(this.parent=this._tempDisplayObjectParent,this.displayObjectUpdateTransform(),this.parent=null)),this.worldTransform.apply(_,$)}toLocal(_,$,J,Z){return $&&(_=$.toGlobal(_,J,Z)),Z||(this._recursivePostUpdateTransform(),this.parent?this.displayObjectUpdateTransform():(this.parent=this._tempDisplayObjectParent,this.displayObjectUpdateTransform(),this.parent=null)),this.worldTransform.applyInverse(_,J)}setParent(_){if(!_||!_.addChild)throw Error("setParent: Argument must be a Container");return _.addChild(this),_}removeFromParent(){this.parent?.removeChild(this)}setTransform(_=0,$=0,J=1,Z=1,Q=0,q=0,K=0,V=0,H=0){return this.position.x=_,this.position.y=$,this.scale.x=J||1,this.scale.y=Z||1,this.rotation=Q,this.skew.x=q,this.skew.y=K,this.pivot.x=V,this.pivot.y=H,this}destroy(_){this.removeFromParent(),this._destroyed=!0,this.transform=null,this.parent=null,this._bounds=null,this.mask=null,this.cullArea=null,this.filters=null,this.filterArea=null,this.hitArea=null,this.eventMode="auto",this.interactiveChildren=!1,this.emit("destroyed"),this.removeAllListeners()}get _tempDisplayObjectParent(){return this.tempDisplayObjectParent===null&&(this.tempDisplayObjectParent=new z7),this.tempDisplayObjectParent}enableTempParent(){let _=this.parent;return this.parent=this._tempDisplayObjectParent,_}disableTempParent(_){this.parent=_}get x(){return this.position.x}set x(_){this.transform.position.x=_}get y(){return this.position.y}set y(_){this.transform.position.y=_}get worldTransform(){return this.transform.worldTransform}get localTransform(){return this.transform.localTransform}get position(){return this.transform.position}set position(_){this.transform.position.copyFrom(_)}get scale(){return this.transform.scale}set scale(_){this.transform.scale.copyFrom(_)}get pivot(){return this.transform.pivot}set pivot(_){this.transform.pivot.copyFrom(_)}get skew(){return this.transform.skew}set skew(_){this.transform.skew.copyFrom(_)}get rotation(){return this.transform.rotation}set rotation(_){this.transform.rotation=_}get angle(){return this.transform.rotation*x9}set angle(_){this.transform.rotation=_*m9}get zIndex(){return this._zIndex}set zIndex(_){this._zIndex!==_&&(this._zIndex=_,this.parent&&(this.parent.sortDirty=!0))}get worldVisible(){let _=this;do{if(!_.visible)return!1;_=_.parent}while(_);return!0}get mask(){return this._mask}set mask(_){if(this._mask!==_){if(this._mask){let $=this._mask.isMaskData?this._mask.maskObject:this._mask;$&&($._maskRefCount--,$._maskRefCount===0&&($.renderable=!0,$.isMask=!1))}if(this._mask=_,this._mask){let $=this._mask.isMaskData?this._mask.maskObject:this._mask;$&&($._maskRefCount===0&&($.renderable=!1,$.isMask=!0),$._maskRefCount++)}}}}class z7 extends t{constructor(){super(...arguments),this.sortDirty=null}}t.prototype.displayObjectUpdateTransform=t.prototype.updateTransform;var T2=new o;function d2(_,$){return _.zIndex===$.zIndex?_._lastSortedIndex-$._lastSortedIndex:_.zIndex-$.zIndex}var EJ=class _ extends t{constructor(){super(),this.children=[],this.sortableChildren=_.defaultSortableChildren,this.sortDirty=!1}onChildrenChange($){}addChild(...$){if($.length>1)for(let J=0;J<$.length;J++)this.addChild($[J]);else{let J=$[0];J.parent&&J.parent.removeChild(J),J.parent=this,this.sortDirty=!0,J.transform._parentID=-1,this.children.push(J),this._boundsID++,this.onChildrenChange(this.children.length-1),this.emit("childAdded",J,this,this.children.length-1),J.emit("added",this)}return $[0]}addChildAt($,J){if(J<0||J>this.children.length)throw Error(`${$}addChildAt: The index ${J} supplied is out of bounds ${this.children.length}`);return $.parent&&$.parent.removeChild($),$.parent=this,this.sortDirty=!0,$.transform._parentID=-1,this.children.splice(J,0,$),this._boundsID++,this.onChildrenChange(J),$.emit("added",this),this.emit("childAdded",$,this,J),$}swapChildren($,J){if($===J)return;let Z=this.getChildIndex($),Q=this.getChildIndex(J);this.children[Z]=J,this.children[Q]=$,this.onChildrenChange(Z<Q?Z:Q)}getChildIndex($){let J=this.children.indexOf($);if(J===-1)throw Error("The supplied DisplayObject must be a child of the caller");return J}setChildIndex($,J){if(J<0||J>=this.children.length)throw Error(`The index ${J} supplied is out of bounds ${this.children.length}`);let Z=this.getChildIndex($);P.removeItems(this.children,Z,1),this.children.splice(J,0,$),this.onChildrenChange(J)}getChildAt($){if($<0||$>=this.children.length)throw Error(`getChildAt: Index (${$}) does not exist.`);return this.children[$]}removeChild(...$){if($.length>1)for(let J=0;J<$.length;J++)this.removeChild($[J]);else{let J=$[0],Z=this.children.indexOf(J);if(Z===-1)return null;J.parent=null,J.transform._parentID=-1,P.removeItems(this.children,Z,1),this._boundsID++,this.onChildrenChange(Z),J.emit("removed",this),this.emit("childRemoved",J,this,Z)}return $[0]}removeChildAt($){let J=this.getChildAt($);return J.parent=null,J.transform._parentID=-1,P.removeItems(this.children,$,1),this._boundsID++,this.onChildrenChange($),J.emit("removed",this),this.emit("childRemoved",J,this,$),J}removeChildren($=0,J=this.children.length){let Z=$,Q=J,q=Q-Z,K;if(q>0&&q<=Q){K=this.children.splice(Z,q);for(let V=0;V<K.length;++V)K[V].parent=null,K[V].transform&&(K[V].transform._parentID=-1);this._boundsID++,this.onChildrenChange($);for(let V=0;V<K.length;++V)K[V].emit("removed",this),this.emit("childRemoved",K[V],this,V);return K}else if(q===0&&this.children.length===0)return[];throw RangeError("removeChildren: numeric values are outside the acceptable range.")}sortChildren(){let $=!1;for(let J=0,Z=this.children.length;J<Z;++J){let Q=this.children[J];Q._lastSortedIndex=J,!$&&Q.zIndex!==0&&($=!0)}$&&this.children.length>1&&this.children.sort(d2),this.sortDirty=!1}updateTransform(){this.sortableChildren&&this.sortDirty&&this.sortChildren(),this._boundsID++,this.transform.updateTransform(this.parent.transform),this.worldAlpha=this.alpha*this.parent.worldAlpha;for(let $=0,J=this.children.length;$<J;++$){let Z=this.children[$];Z.visible&&Z.updateTransform()}}calculateBounds(){this._bounds.clear(),this._calculateBounds();for(let $=0;$<this.children.length;$++){let J=this.children[$];if(!(!J.visible||!J.renderable))if(J.calculateBounds(),J._mask){let Z=J._mask.isMaskData?J._mask.maskObject:J._mask;Z?(Z.calculateBounds(),this._bounds.addBoundsMask(J._bounds,Z._bounds)):this._bounds.addBounds(J._bounds)}else J.filterArea?this._bounds.addBoundsArea(J._bounds,J.filterArea):this._bounds.addBounds(J._bounds)}this._bounds.updateID=this._boundsID}getLocalBounds($,J=!1){let Z=super.getLocalBounds($);if(!J)for(let Q=0,q=this.children.length;Q<q;++Q){let K=this.children[Q];K.visible&&K.updateTransform()}return Z}_calculateBounds(){}_renderWithCulling($){let J=$.renderTexture.sourceFrame;if(!(J.width>0&&J.height>0))return;let Z,Q;this.cullArea?(Z=this.cullArea,Q=this.worldTransform):this._render!==_.prototype._render&&(Z=this.getBounds(!0));let q=$.projection.transform;if(q&&(Q?(Q=T2.copyFrom(Q),Q.prepend(q)):Q=q),Z&&J.intersects(Z,Q))this._render($);else if(this.cullArea)return;for(let K=0,V=this.children.length;K<V;++K){let H=this.children[K],w=H.cullable;H.cullable=w||!this.cullArea,H.render($),H.cullable=w}}render($){if(!(!this.visible||this.worldAlpha<=0||!this.renderable))if(this._mask||this.filters?.length)this.renderAdvanced($);else if(this.cullable)this._renderWithCulling($);else{this._render($);for(let J=0,Z=this.children.length;J<Z;++J)this.children[J].render($)}}renderAdvanced($){let J=this.filters,Z=this._mask;if(J){this._enabledFilters||(this._enabledFilters=[]),this._enabledFilters.length=0;for(let q=0;q<J.length;q++)J[q].enabled&&this._enabledFilters.push(J[q])}let Q=J&&this._enabledFilters?.length||Z&&(!Z.isMaskData||Z.enabled&&(Z.autoDetect||Z.type!==z0.NONE));if(Q&&$.batch.flush(),J&&this._enabledFilters?.length&&$.filter.push(this,this._enabledFilters),Z&&$.mask.push(this,this._mask),this.cullable)this._renderWithCulling($);else{this._render($);for(let q=0,K=this.children.length;q<K;++q)this.children[q].render($)}Q&&$.batch.flush(),Z&&$.mask.pop(this),J&&this._enabledFilters?.length&&$.filter.pop()}_render($){}destroy($){super.destroy(),this.sortDirty=!1;let J=typeof $=="boolean"?$:$?.children,Z=this.removeChildren(0,this.children.length);if(J)for(let Q=0;Q<Z.length;++Q)Z[Q].destroy($)}get width(){return this.scale.x*this.getLocalBounds().width}set width($){let J=this.getLocalBounds().width;J!==0?this.scale.x=$/J:this.scale.x=1,this._width=$}get height(){return this.scale.y*this.getLocalBounds().height}set height($){let J=this.getLocalBounds().height;J!==0?this.scale.y=$/J:this.scale.y=1,this._height=$}};EJ.defaultSortableChildren=!1;var q0=EJ;q0.prototype.containerUpdateTransform=q0.prototype.updateTransform;Object.defineProperties(B,{SORTABLE_CHILDREN:{get(){return q0.defaultSortableChildren},set(_){P.deprecation("7.1.0","settings.SORTABLE_CHILDREN is deprecated, use Container.defaultSortableChildren"),q0.defaultSortableChildren=_}}});var e5=new u,g2=new Uint16Array([0,1,2,0,2,3]);class L0 extends q0{constructor(_){super(),this._anchor=new u0(this._onAnchorUpdate,this,_?_.defaultAnchor.x:0,_?_.defaultAnchor.y:0),this._texture=null,this._width=0,this._height=0,this._tintColor=new s(16777215),this._tintRGB=null,this.tint=16777215,this.blendMode=d.NORMAL,this._cachedTint=16777215,this.uvs=null,this.texture=_||E.EMPTY,this.vertexData=new Float32Array(8),this.vertexTrimmedData=null,this._transformID=-1,this._textureID=-1,this._transformTrimmedID=-1,this._textureTrimmedID=-1,this.indices=g2,this.pluginName="batch",this.isSprite=!0,this._roundPixels=B.ROUND_PIXELS}_onTextureUpdate(){this._textureID=-1,this._textureTrimmedID=-1,this._cachedTint=16777215,this._width&&(this.scale.x=P.sign(this.scale.x)*this._width/this._texture.orig.width),this._height&&(this.scale.y=P.sign(this.scale.y)*this._height/this._texture.orig.height)}_onAnchorUpdate(){this._transformID=-1,this._transformTrimmedID=-1}calculateVertices(){let _=this._texture;if(this._transformID===this.transform._worldID&&this._textureID===_._updateID)return;this._textureID!==_._updateID&&(this.uvs=this._texture._uvs.uvsFloat32),this._transformID=this.transform._worldID,this._textureID=_._updateID;let $=this.transform.worldTransform,J=$.a,Z=$.b,Q=$.c,q=$.d,K=$.tx,V=$.ty,H=this.vertexData,w=_.trim,h=_.orig,z=this._anchor,X=0,W=0,G=0,k=0;if(w?(W=w.x-z._x*h.width,X=W+w.width,k=w.y-z._y*h.height,G=k+w.height):(W=-z._x*h.width,X=W+h.width,k=-z._y*h.height,G=k+h.height),H[0]=J*W+Q*k+K,H[1]=q*k+Z*W+V,H[2]=J*X+Q*k+K,H[3]=q*k+Z*X+V,H[4]=J*X+Q*G+K,H[5]=q*G+Z*X+V,H[6]=J*W+Q*G+K,H[7]=q*G+Z*W+V,this._roundPixels){let C=B.RESOLUTION;for(let Y=0;Y<H.length;++Y)H[Y]=Math.round(H[Y]*C)/C}}calculateTrimmedVertices(){if(!this.vertexTrimmedData)this.vertexTrimmedData=new Float32Array(8);else if(this._transformTrimmedID===this.transform._worldID&&this._textureTrimmedID===this._texture._updateID)return;this._transformTrimmedID=this.transform._worldID,this._textureTrimmedID=this._texture._updateID;let _=this._texture,$=this.vertexTrimmedData,J=_.orig,Z=this._anchor,Q=this.transform.worldTransform,q=Q.a,K=Q.b,V=Q.c,H=Q.d,w=Q.tx,h=Q.ty,z=-Z._x*J.width,X=z+J.width,W=-Z._y*J.height,G=W+J.height;if($[0]=q*z+V*W+w,$[1]=H*W+K*z+h,$[2]=q*X+V*W+w,$[3]=H*W+K*X+h,$[4]=q*X+V*G+w,$[5]=H*G+K*X+h,$[6]=q*z+V*G+w,$[7]=H*G+K*z+h,this._roundPixels){let k=B.RESOLUTION;for(let C=0;C<$.length;++C)$[C]=Math.round($[C]*k)/k}}_render(_){this.calculateVertices(),_.batch.setObjectRenderer(_.plugins[this.pluginName]),_.plugins[this.pluginName].render(this)}_calculateBounds(){let _=this._texture.trim,$=this._texture.orig;!_||_.width===$.width&&_.height===$.height?(this.calculateVertices(),this._bounds.addQuad(this.vertexData)):(this.calculateTrimmedVertices(),this._bounds.addQuad(this.vertexTrimmedData))}getLocalBounds(_){return this.children.length===0?(this._localBounds||(this._localBounds=new f_),this._localBounds.minX=this._texture.orig.width*-this._anchor._x,this._localBounds.minY=this._texture.orig.height*-this._anchor._y,this._localBounds.maxX=this._texture.orig.width*(1-this._anchor._x),this._localBounds.maxY=this._texture.orig.height*(1-this._anchor._y),_||(this._localBoundsRect||(this._localBoundsRect=new x),_=this._localBoundsRect),this._localBounds.getRectangle(_)):super.getLocalBounds.call(this,_)}containsPoint(_){this.worldTransform.applyInverse(_,e5);let $=this._texture.orig.width,J=this._texture.orig.height,Z=-$*this.anchor.x,Q=0;return e5.x>=Z&&e5.x<Z+$&&(Q=-J*this.anchor.y,e5.y>=Q&&e5.y<Q+J)}destroy(_){if(super.destroy(_),this._texture.off("update",this._onTextureUpdate,this),this._anchor=null,typeof _=="boolean"?_:_?.texture){let $=typeof _=="boolean"?_:_?.baseTexture;this._texture.destroy(!!$)}this._texture=null}static from(_,$){let J=_ instanceof E?_:E.from(_,$);return new L0(J)}set roundPixels(_){this._roundPixels!==_&&(this._transformID=-1,this._transformTrimmedID=-1),this._roundPixels=_}get roundPixels(){return this._roundPixels}get width(){return Math.abs(this.scale.x)*this._texture.orig.width}set width(_){let $=P.sign(this.scale.x)||1;this.scale.x=$*_/this._texture.orig.width,this._width=_}get height(){return Math.abs(this.scale.y)*this._texture.orig.height}set height(_){let $=P.sign(this.scale.y)||1;this.scale.y=$*_/this._texture.orig.height,this._height=_}get anchor(){return this._anchor}set anchor(_){this._anchor.copyFrom(_)}get tint(){return this._tintColor.value}set tint(_){this._tintColor.setValue(_),this._tintRGB=this._tintColor.toLittleEndianNumber()}get tintValue(){return this._tintColor.toNumber()}get texture(){return this._texture}set texture(_){this._texture!==_&&(this._texture&&this._texture.off("update",this._onTextureUpdate,this),this._texture=_||E.EMPTY,this._cachedTint=16777215,this._textureID=-1,this._textureTrimmedID=-1,_&&(_.baseTexture.valid?this._onTextureUpdate():_.once("update",this._onTextureUpdate,this)))}}var vJ=new o;t.prototype._cacheAsBitmap=!1;t.prototype._cacheData=null;t.prototype._cacheAsBitmapResolution=null;t.prototype._cacheAsBitmapMultisample=null;class cJ{constructor(){this.textureCacheId=null,this.originalRender=null,this.originalRenderCanvas=null,this.originalCalculateBounds=null,this.originalGetLocalBounds=null,this.originalUpdateTransform=null,this.originalDestroy=null,this.originalMask=null,this.originalFilterArea=null,this.originalContainsPoint=null,this.sprite=null}}Object.defineProperties(t.prototype,{cacheAsBitmapResolution:{get(){return this._cacheAsBitmapResolution},set(_){_!==this._cacheAsBitmapResolution&&(this._cacheAsBitmapResolution=_,this.cacheAsBitmap&&(this.cacheAsBitmap=!1,this.cacheAsBitmap=!0))}},cacheAsBitmapMultisample:{get(){return this._cacheAsBitmapMultisample},set(_){_!==this._cacheAsBitmapMultisample&&(this._cacheAsBitmapMultisample=_,this.cacheAsBitmap&&(this.cacheAsBitmap=!1,this.cacheAsBitmap=!0))}},cacheAsBitmap:{get(){return this._cacheAsBitmap},set(_){if(this._cacheAsBitmap===_)return;this._cacheAsBitmap=_;let $;_?(this._cacheData||(this._cacheData=new cJ),$=this._cacheData,$.originalRender=this.render,$.originalRenderCanvas=this.renderCanvas,$.originalUpdateTransform=this.updateTransform,$.originalCalculateBounds=this.calculateBounds,$.originalGetLocalBounds=this.getLocalBounds,$.originalDestroy=this.destroy,$.originalContainsPoint=this.containsPoint,$.originalMask=this._mask,$.originalFilterArea=this.filterArea,this.render=this._renderCached,this.renderCanvas=this._renderCachedCanvas,this.destroy=this._cacheAsBitmapDestroy):($=this._cacheData,$.sprite&&this._destroyCachedDisplayObject(),this.render=$.originalRender,this.renderCanvas=$.originalRenderCanvas,this.calculateBounds=$.originalCalculateBounds,this.getLocalBounds=$.originalGetLocalBounds,this.destroy=$.originalDestroy,this.updateTransform=$.originalUpdateTransform,this.containsPoint=$.originalContainsPoint,this._mask=$.originalMask,this.filterArea=$.originalFilterArea)}}});t.prototype._renderCached=function(_){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObject(_),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._render(_))};t.prototype._initCachedDisplayObject=function(_){if(this._cacheData?.sprite)return;let $=this.alpha;this.alpha=1,_.batch.flush();let J=this.getLocalBounds(new x,!0);if(this.filters?.length){let X=this.filters[0].padding;J.pad(X)}let Z=this.cacheAsBitmapResolution||_.resolution;J.ceil(Z),J.width=Math.max(J.width,1/Z),J.height=Math.max(J.height,1/Z);let Q=_.renderTexture.current,q=_.renderTexture.sourceFrame.clone(),K=_.renderTexture.destinationFrame.clone(),V=_.projection.transform,H=a0.create({width:J.width,height:J.height,resolution:Z,multisample:this.cacheAsBitmapMultisample??_.multisample}),w=`cacheAsBitmap_${P.uid()}`;this._cacheData.textureCacheId=w,p.addToCache(H.baseTexture,w),E.addToCache(H,w);let h=this.transform.localTransform.copyTo(vJ).invert().translate(-J.x,-J.y);this.render=this._cacheData.originalRender,_.render(this,{renderTexture:H,clear:!0,transform:h,skipUpdateTransform:!1}),_.framebuffer.blit(),_.projection.transform=V,_.renderTexture.bind(Q,q,K),this.render=this._renderCached,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null,this.alpha=$;let z=new L0(H);z.transform.worldTransform=this.transform.worldTransform,z.anchor.x=-(J.x/J.width),z.anchor.y=-(J.y/J.height),z.alpha=$,z._bounds=this._bounds,this._cacheData.sprite=z,this.transform._parentID=-1,this.parent?this.updateTransform():(this.enableTempParent(),this.updateTransform(),this.disableTempParent(null)),this.containsPoint=z.containsPoint.bind(z)};t.prototype._renderCachedCanvas=function(_){!this.visible||this.worldAlpha<=0||!this.renderable||(this._initCachedDisplayObjectCanvas(_),this._cacheData.sprite.worldAlpha=this.worldAlpha,this._cacheData.sprite._renderCanvas(_))};t.prototype._initCachedDisplayObjectCanvas=function(_){if(this._cacheData?.sprite)return;let $=this.getLocalBounds(new x,!0),J=this.alpha;this.alpha=1;let Z=_.canvasContext.activeContext,Q=_._projTransform,q=this.cacheAsBitmapResolution||_.resolution;$.ceil(q),$.width=Math.max($.width,1/q),$.height=Math.max($.height,1/q);let K=a0.create({width:$.width,height:$.height,resolution:q}),V=`cacheAsBitmap_${P.uid()}`;this._cacheData.textureCacheId=V,p.addToCache(K.baseTexture,V),E.addToCache(K,V);let H=vJ;this.transform.localTransform.copyTo(H),H.invert(),H.tx-=$.x,H.ty-=$.y,this.renderCanvas=this._cacheData.originalRenderCanvas,_.render(this,{renderTexture:K,clear:!0,transform:H,skipUpdateTransform:!1}),_.canvasContext.activeContext=Z,_._projTransform=Q,this.renderCanvas=this._renderCachedCanvas,this.updateTransform=this.displayObjectUpdateTransform,this.calculateBounds=this._calculateCachedBounds,this.getLocalBounds=this._getCachedLocalBounds,this._mask=null,this.filterArea=null,this.alpha=J;let w=new L0(K);w.transform.worldTransform=this.transform.worldTransform,w.anchor.x=-($.x/$.width),w.anchor.y=-($.y/$.height),w.alpha=J,w._bounds=this._bounds,this._cacheData.sprite=w,this.transform._parentID=-1,this.parent?this.updateTransform():(this.parent=_._tempDisplayObjectParent,this.updateTransform(),this.parent=null),this.containsPoint=w.containsPoint.bind(w)};t.prototype._calculateCachedBounds=function(){this._bounds.clear(),this._cacheData.sprite.transform._worldID=this.transform._worldID,this._cacheData.sprite._calculateBounds(),this._bounds.updateID=this._boundsID};t.prototype._getCachedLocalBounds=function(){return this._cacheData.sprite.getLocalBounds(null)};t.prototype._destroyCachedDisplayObject=function(){this._cacheData.sprite._texture.destroy(!0),this._cacheData.sprite=null,p.removeFromCache(this._cacheData.textureCacheId),E.removeFromCache(this._cacheData.textureCacheId),this._cacheData.textureCacheId=null};t.prototype._cacheAsBitmapDestroy=function(_){this.cacheAsBitmap=!1,this.destroy(_)};t.prototype.name=null;q0.prototype.getChildByName=function(_,$){for(let J=0,Z=this.children.length;J<Z;J++)if(this.children[J].name===_)return this.children[J];if($)for(let J=0,Z=this.children.length;J<Z;J++){let Q=this.children[J];if(!Q.getChildByName)continue;let q=Q.getChildByName(_,!0);if(q)return q}return null};t.prototype.getGlobalPosition=function(_=new u,$=!1){return this.parent?this.parent.toGlobal(this.position,_,$):(_.x=this.position.x,_.y=this.position.y),_};var yJ=`varying vec2 vTextureCoord;
524
524
 
525
525
  uniform sampler2D uSampler;
526
526
  uniform float uAlpha;
@@ -529,9 +529,9 @@ void main(void)
529
529
  {
530
530
  gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;
531
531
  }
532
- `;class z8 extends J0{constructor(_=1){super(Q9,SJ,{uAlpha:1}),this.alpha=_}get alpha(){return this.uniforms.uAlpha}set alpha(_){this.uniforms.uAlpha=_}}var g2={5:[0.153388,0.221461,0.250301],7:[0.071303,0.131514,0.189879,0.214607],9:[0.028532,0.067234,0.124009,0.179044,0.20236],11:[0.0093,0.028002,0.065984,0.121703,0.175713,0.198596],13:[0.002406,0.009255,0.027867,0.065666,0.121117,0.174868,0.197641],15:[0.000489,0.002403,0.009246,0.02784,0.065602,0.120999,0.174697,0.197448]},p2=["varying vec2 vBlurTexCoords[%size%];","uniform sampler2D uSampler;","void main(void)","{"," gl_FragColor = vec4(0.0);"," %blur%","}"].join(`
533
- `);function TJ(_){let $=g2[_],J=$.length,Z=p2,Q="",q="gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;",K;for(let V=0;V<_;V++){let H=q.replace("%index%",V.toString());K=V,V>=J&&(K=_-V-1),H=H.replace("%value%",$[K].toString()),Q+=H,Q+=`
534
- `}return Z=Z.replace("%blur%",Q),Z=Z.replace("%size%",_.toString()),Z}function dJ(_,$){let J=Math.ceil(_/2),Z=`
532
+ `;class z8 extends J0{constructor(_=1){super(q7,yJ,{uAlpha:1}),this.alpha=_}get alpha(){return this.uniforms.uAlpha}set alpha(_){this.uniforms.uAlpha=_}}var p2={5:[0.153388,0.221461,0.250301],7:[0.071303,0.131514,0.189879,0.214607],9:[0.028532,0.067234,0.124009,0.179044,0.20236],11:[0.0093,0.028002,0.065984,0.121703,0.175713,0.198596],13:[0.002406,0.009255,0.027867,0.065666,0.121117,0.174868,0.197641],15:[0.000489,0.002403,0.009246,0.02784,0.065602,0.120999,0.174697,0.197448]},x2=["varying vec2 vBlurTexCoords[%size%];","uniform sampler2D uSampler;","void main(void)","{"," gl_FragColor = vec4(0.0);"," %blur%","}"].join(`
533
+ `);function SJ(_){let $=p2[_],J=$.length,Z=x2,Q="",q="gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;",K;for(let V=0;V<_;V++){let H=q.replace("%index%",V.toString());K=V,V>=J&&(K=_-V-1),H=H.replace("%value%",$[K].toString()),Q+=H,Q+=`
534
+ `}return Z=Z.replace("%blur%",Q),Z=Z.replace("%size%",_.toString()),Z}function TJ(_,$){let J=Math.ceil(_/2),Z=`
535
535
  attribute vec2 aVertexPosition;
536
536
 
537
537
  uniform mat3 projectionMatrix;
@@ -562,7 +562,7 @@ void main(void)
562
562
  vec2 textureCoord = filterTextureCoord();
563
563
  %blur%
564
564
  }`,Q="",q;$?q="vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);":q="vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";for(let K=0;K<_;K++){let V=q.replace("%index%",K.toString());V=V.replace("%sampleIndex%",`${K-(J-1)}.0`),Q+=V,Q+=`
565
- `}return Z=Z.replace("%blur%",Q),Z=Z.replace("%size%",_.toString()),Z}class N1 extends J0{constructor(_,$=8,J=4,Z=J0.defaultResolution,Q=5){let q=dJ(Q,_),K=TJ(Q);super(q,K),this.horizontal=_,this.resolution=Z,this._quality=0,this.quality=J,this.blur=$}apply(_,$,J,Z){if(J?this.horizontal?this.uniforms.strength=1/J.width*(J.width/$.width):this.uniforms.strength=1/J.height*(J.height/$.height):this.horizontal?this.uniforms.strength=1/_.renderer.width*(_.renderer.width/$.width):this.uniforms.strength=1/_.renderer.height*(_.renderer.height/$.height),this.uniforms.strength*=this.strength,this.uniforms.strength/=this.passes,this.passes===1)_.applyFilter(this,$,J,Z);else{let Q=_.getFilterTexture(),q=_.renderer,K=$,V=Q;this.state.blend=!1,_.applyFilter(this,K,V,m0.CLEAR);for(let H=1;H<this.passes-1;H++){_.bindAndClear(K,m0.BLIT),this.uniforms.uSampler=V;let w=V;V=K,K=w,q.shader.bind(this),q.geometry.draw(5)}this.state.blend=!0,_.applyFilter(this,V,J,Z),_.returnFilterTexture(Q)}}get blur(){return this.strength}set blur(_){this.padding=1+Math.abs(_)*2,this.strength=_}get quality(){return this._quality}set quality(_){this._quality=_,this.passes=_}}class X8 extends J0{constructor(_=8,$=4,J=J0.defaultResolution,Z=5){super(),this._repeatEdgePixels=!1,this.blurXFilter=new N1(!0,_,$,J,Z),this.blurYFilter=new N1(!1,_,$,J,Z),this.resolution=J,this.quality=$,this.blur=_,this.repeatEdgePixels=!1}apply(_,$,J,Z){let Q=Math.abs(this.blurXFilter.strength),q=Math.abs(this.blurYFilter.strength);if(Q&&q){let K=_.getFilterTexture();this.blurXFilter.apply(_,$,K,m0.CLEAR),this.blurYFilter.apply(_,K,J,Z),_.returnFilterTexture(K)}else q?this.blurYFilter.apply(_,$,J,Z):this.blurXFilter.apply(_,$,J,Z)}updatePadding(){this._repeatEdgePixels?this.padding=0:this.padding=Math.max(Math.abs(this.blurXFilter.strength),Math.abs(this.blurYFilter.strength))*2}get blur(){return this.blurXFilter.blur}set blur(_){this.blurXFilter.blur=this.blurYFilter.blur=_,this.updatePadding()}get quality(){return this.blurXFilter.quality}set quality(_){this.blurXFilter.quality=this.blurYFilter.quality=_}get blurX(){return this.blurXFilter.blur}set blurX(_){this.blurXFilter.blur=_,this.updatePadding()}get blurY(){return this.blurYFilter.blur}set blurY(_){this.blurYFilter.blur=_,this.updatePadding()}get blendMode(){return this.blurYFilter.blendMode}set blendMode(_){this.blurYFilter.blendMode=_}get repeatEdgePixels(){return this._repeatEdgePixels}set repeatEdgePixels(_){this._repeatEdgePixels=_,this.updatePadding()}}var gJ=`varying vec2 vTextureCoord;
565
+ `}return Z=Z.replace("%blur%",Q),Z=Z.replace("%size%",_.toString()),Z}class N1 extends J0{constructor(_,$=8,J=4,Z=J0.defaultResolution,Q=5){let q=TJ(Q,_),K=SJ(Q);super(q,K),this.horizontal=_,this.resolution=Z,this._quality=0,this.quality=J,this.blur=$}apply(_,$,J,Z){if(J?this.horizontal?this.uniforms.strength=1/J.width*(J.width/$.width):this.uniforms.strength=1/J.height*(J.height/$.height):this.horizontal?this.uniforms.strength=1/_.renderer.width*(_.renderer.width/$.width):this.uniforms.strength=1/_.renderer.height*(_.renderer.height/$.height),this.uniforms.strength*=this.strength,this.uniforms.strength/=this.passes,this.passes===1)_.applyFilter(this,$,J,Z);else{let Q=_.getFilterTexture(),q=_.renderer,K=$,V=Q;this.state.blend=!1,_.applyFilter(this,K,V,m0.CLEAR);for(let H=1;H<this.passes-1;H++){_.bindAndClear(K,m0.BLIT),this.uniforms.uSampler=V;let w=V;V=K,K=w,q.shader.bind(this),q.geometry.draw(5)}this.state.blend=!0,_.applyFilter(this,V,J,Z),_.returnFilterTexture(Q)}}get blur(){return this.strength}set blur(_){this.padding=1+Math.abs(_)*2,this.strength=_}get quality(){return this._quality}set quality(_){this._quality=_,this.passes=_}}class X8 extends J0{constructor(_=8,$=4,J=J0.defaultResolution,Z=5){super(),this._repeatEdgePixels=!1,this.blurXFilter=new N1(!0,_,$,J,Z),this.blurYFilter=new N1(!1,_,$,J,Z),this.resolution=J,this.quality=$,this.blur=_,this.repeatEdgePixels=!1}apply(_,$,J,Z){let Q=Math.abs(this.blurXFilter.strength),q=Math.abs(this.blurYFilter.strength);if(Q&&q){let K=_.getFilterTexture();this.blurXFilter.apply(_,$,K,m0.CLEAR),this.blurYFilter.apply(_,K,J,Z),_.returnFilterTexture(K)}else q?this.blurYFilter.apply(_,$,J,Z):this.blurXFilter.apply(_,$,J,Z)}updatePadding(){this._repeatEdgePixels?this.padding=0:this.padding=Math.max(Math.abs(this.blurXFilter.strength),Math.abs(this.blurYFilter.strength))*2}get blur(){return this.blurXFilter.blur}set blur(_){this.blurXFilter.blur=this.blurYFilter.blur=_,this.updatePadding()}get quality(){return this.blurXFilter.quality}set quality(_){this.blurXFilter.quality=this.blurYFilter.quality=_}get blurX(){return this.blurXFilter.blur}set blurX(_){this.blurXFilter.blur=_,this.updatePadding()}get blurY(){return this.blurYFilter.blur}set blurY(_){this.blurYFilter.blur=_,this.updatePadding()}get blendMode(){return this.blurYFilter.blendMode}set blendMode(_){this.blurYFilter.blendMode=_}get repeatEdgePixels(){return this._repeatEdgePixels}set repeatEdgePixels(_){this._repeatEdgePixels=_,this.updatePadding()}}var dJ=`varying vec2 vTextureCoord;
566
566
  uniform sampler2D uSampler;
567
567
  uniform float m[20];
568
568
  uniform float uAlpha;
@@ -614,7 +614,7 @@ void main(void)
614
614
 
615
615
  gl_FragColor = vec4(rgb, result.a);
616
616
  }
617
- `;class l1 extends J0{constructor(){let _={m:new Float32Array([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]),uAlpha:1};super(r5,gJ,_),this.alpha=1}_loadMatrix(_,$=!1){let J=_;$&&(this._multiply(J,this.uniforms.m,_),J=this._colorMatrix(J)),this.uniforms.m=J}_multiply(_,$,J){return _[0]=$[0]*J[0]+$[1]*J[5]+$[2]*J[10]+$[3]*J[15],_[1]=$[0]*J[1]+$[1]*J[6]+$[2]*J[11]+$[3]*J[16],_[2]=$[0]*J[2]+$[1]*J[7]+$[2]*J[12]+$[3]*J[17],_[3]=$[0]*J[3]+$[1]*J[8]+$[2]*J[13]+$[3]*J[18],_[4]=$[0]*J[4]+$[1]*J[9]+$[2]*J[14]+$[3]*J[19]+$[4],_[5]=$[5]*J[0]+$[6]*J[5]+$[7]*J[10]+$[8]*J[15],_[6]=$[5]*J[1]+$[6]*J[6]+$[7]*J[11]+$[8]*J[16],_[7]=$[5]*J[2]+$[6]*J[7]+$[7]*J[12]+$[8]*J[17],_[8]=$[5]*J[3]+$[6]*J[8]+$[7]*J[13]+$[8]*J[18],_[9]=$[5]*J[4]+$[6]*J[9]+$[7]*J[14]+$[8]*J[19]+$[9],_[10]=$[10]*J[0]+$[11]*J[5]+$[12]*J[10]+$[13]*J[15],_[11]=$[10]*J[1]+$[11]*J[6]+$[12]*J[11]+$[13]*J[16],_[12]=$[10]*J[2]+$[11]*J[7]+$[12]*J[12]+$[13]*J[17],_[13]=$[10]*J[3]+$[11]*J[8]+$[12]*J[13]+$[13]*J[18],_[14]=$[10]*J[4]+$[11]*J[9]+$[12]*J[14]+$[13]*J[19]+$[14],_[15]=$[15]*J[0]+$[16]*J[5]+$[17]*J[10]+$[18]*J[15],_[16]=$[15]*J[1]+$[16]*J[6]+$[17]*J[11]+$[18]*J[16],_[17]=$[15]*J[2]+$[16]*J[7]+$[17]*J[12]+$[18]*J[17],_[18]=$[15]*J[3]+$[16]*J[8]+$[17]*J[13]+$[18]*J[18],_[19]=$[15]*J[4]+$[16]*J[9]+$[17]*J[14]+$[18]*J[19]+$[19],_}_colorMatrix(_){let $=new Float32Array(_);return $[4]/=255,$[9]/=255,$[14]/=255,$[19]/=255,$}brightness(_,$){let J=[_,0,0,0,0,0,_,0,0,0,0,0,_,0,0,0,0,0,1,0];this._loadMatrix(J,$)}tint(_,$){let[J,Z,Q]=s.shared.setValue(_).toArray(),q=[J,0,0,0,0,0,Z,0,0,0,0,0,Q,0,0,0,0,0,1,0];this._loadMatrix(q,$)}greyscale(_,$){let J=[_,_,_,0,0,_,_,_,0,0,_,_,_,0,0,0,0,0,1,0];this._loadMatrix(J,$)}blackAndWhite(_){let $=[0.3,0.6,0.1,0,0,0.3,0.6,0.1,0,0,0.3,0.6,0.1,0,0,0,0,0,1,0];this._loadMatrix($,_)}hue(_,$){_=(_||0)/180*Math.PI;let J=Math.cos(_),Z=Math.sin(_),Q=Math.sqrt,q=0.3333333333333333,K=Q(q),V=J+(1-J)*q,H=q*(1-J)-K*Z,w=q*(1-J)+K*Z,h=q*(1-J)+K*Z,z=J+q*(1-J),X=q*(1-J)-K*Z,W=q*(1-J)-K*Z,G=q*(1-J)+K*Z,k=J+q*(1-J),C=[V,H,w,0,0,h,z,X,0,0,W,G,k,0,0,0,0,0,1,0];this._loadMatrix(C,$)}contrast(_,$){let J=(_||0)+1,Z=-0.5*(J-1),Q=[J,0,0,0,Z,0,J,0,0,Z,0,0,J,0,Z,0,0,0,1,0];this._loadMatrix(Q,$)}saturate(_=0,$){let J=_*2/3+1,Z=(J-1)*-0.5,Q=[J,Z,Z,0,0,Z,J,Z,0,0,Z,Z,J,0,0,0,0,0,1,0];this._loadMatrix(Q,$)}desaturate(){this.saturate(-1)}negative(_){let $=[-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0];this._loadMatrix($,_)}sepia(_){let $=[0.393,0.7689999,0.18899999,0,0,0.349,0.6859999,0.16799999,0,0,0.272,0.5339999,0.13099999,0,0,0,0,0,1,0];this._loadMatrix($,_)}technicolor(_){let $=[1.9125277891456083,-0.8545344976951645,-0.09155508482755585,0,11.793603434377337,-0.3087833385928097,1.7658908555458428,-0.10601743074722245,0,-70.35205161461398,-0.231103377548616,-0.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0];this._loadMatrix($,_)}polaroid(_){let $=[1.438,-0.062,-0.062,0,0,-0.122,1.378,-0.122,0,0,-0.016,-0.016,1.483,0,0,0,0,0,1,0];this._loadMatrix($,_)}toBGR(_){let $=[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0];this._loadMatrix($,_)}kodachrome(_){let $=[1.1285582396593525,-0.3967382283601348,-0.03992559172921793,0,63.72958762196502,-0.16404339962244616,1.0835251566291304,-0.05498805115633132,0,24.732407896706203,-0.16786010706155763,-0.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0];this._loadMatrix($,_)}browni(_){let $=[0.5997023498159715,0.34553243048391263,-0.2708298674538042,0,47.43192855600873,-0.037703249837783157,0.8609577587992641,0.15059552388459913,0,-36.96841498319127,0.24113635128153335,-0.07441037908422492,0.44972182064877153,0,-7.562075277591283,0,0,0,1,0];this._loadMatrix($,_)}vintage(_){let $=[0.6279345635605994,0.3202183420819367,-0.03965408211312453,0,9.651285835294123,0.02578397704808868,0.6441188644374771,0.03259127616149294,0,7.462829176470591,0.0466055556782719,-0.0851232987247891,0.5241648018700465,0,5.159190588235296,0,0,0,1,0];this._loadMatrix($,_)}colorTone(_,$,J,Z,Q){_=_||0.2,$=$||0.15,J=J||16770432,Z=Z||3375104;let q=s.shared,[K,V,H]=q.setValue(J).toArray(),[w,h,z]=q.setValue(Z).toArray(),X=[0.3,0.59,0.11,0,0,K,V,H,_,0,w,h,z,$,0,K-w,V-h,H-z,0,0];this._loadMatrix(X,Q)}night(_,$){_=_||0.1;let J=[_*-2,-_,0,0,0,-_,0,_,0,0,0,_,_*2,0,0,0,0,0,1,0];this._loadMatrix(J,$)}predator(_,$){let J=[11.224130630493164*_,-4.794486999511719*_,-2.8746118545532227*_,0*_,0.40342438220977783*_,-3.6330697536468506*_,9.193157196044922*_,-2.951810836791992*_,0*_,-1.316135048866272*_,-3.2184197902679443*_,-4.2375030517578125*_,7.476448059082031*_,0*_,0.8044459223747253*_,0,0,0,1,0];this._loadMatrix(J,$)}lsd(_){let $=[2,-0.4,0.5,0,0,-0.5,2,-0.4,0,0,-0.4,-0.5,3,0,0,0,0,0,1,0];this._loadMatrix($,_)}reset(){let _=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];this._loadMatrix(_,!1)}get matrix(){return this.uniforms.m}set matrix(_){this.uniforms.m=_}get alpha(){return this.uniforms.uAlpha}set alpha(_){this.uniforms.uAlpha=_}}l1.prototype.grayscale=l1.prototype.greyscale;var pJ=`varying vec2 vFilterCoord;
617
+ `;class l1 extends J0{constructor(){let _={m:new Float32Array([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]),uAlpha:1};super(r5,dJ,_),this.alpha=1}_loadMatrix(_,$=!1){let J=_;$&&(this._multiply(J,this.uniforms.m,_),J=this._colorMatrix(J)),this.uniforms.m=J}_multiply(_,$,J){return _[0]=$[0]*J[0]+$[1]*J[5]+$[2]*J[10]+$[3]*J[15],_[1]=$[0]*J[1]+$[1]*J[6]+$[2]*J[11]+$[3]*J[16],_[2]=$[0]*J[2]+$[1]*J[7]+$[2]*J[12]+$[3]*J[17],_[3]=$[0]*J[3]+$[1]*J[8]+$[2]*J[13]+$[3]*J[18],_[4]=$[0]*J[4]+$[1]*J[9]+$[2]*J[14]+$[3]*J[19]+$[4],_[5]=$[5]*J[0]+$[6]*J[5]+$[7]*J[10]+$[8]*J[15],_[6]=$[5]*J[1]+$[6]*J[6]+$[7]*J[11]+$[8]*J[16],_[7]=$[5]*J[2]+$[6]*J[7]+$[7]*J[12]+$[8]*J[17],_[8]=$[5]*J[3]+$[6]*J[8]+$[7]*J[13]+$[8]*J[18],_[9]=$[5]*J[4]+$[6]*J[9]+$[7]*J[14]+$[8]*J[19]+$[9],_[10]=$[10]*J[0]+$[11]*J[5]+$[12]*J[10]+$[13]*J[15],_[11]=$[10]*J[1]+$[11]*J[6]+$[12]*J[11]+$[13]*J[16],_[12]=$[10]*J[2]+$[11]*J[7]+$[12]*J[12]+$[13]*J[17],_[13]=$[10]*J[3]+$[11]*J[8]+$[12]*J[13]+$[13]*J[18],_[14]=$[10]*J[4]+$[11]*J[9]+$[12]*J[14]+$[13]*J[19]+$[14],_[15]=$[15]*J[0]+$[16]*J[5]+$[17]*J[10]+$[18]*J[15],_[16]=$[15]*J[1]+$[16]*J[6]+$[17]*J[11]+$[18]*J[16],_[17]=$[15]*J[2]+$[16]*J[7]+$[17]*J[12]+$[18]*J[17],_[18]=$[15]*J[3]+$[16]*J[8]+$[17]*J[13]+$[18]*J[18],_[19]=$[15]*J[4]+$[16]*J[9]+$[17]*J[14]+$[18]*J[19]+$[19],_}_colorMatrix(_){let $=new Float32Array(_);return $[4]/=255,$[9]/=255,$[14]/=255,$[19]/=255,$}brightness(_,$){let J=[_,0,0,0,0,0,_,0,0,0,0,0,_,0,0,0,0,0,1,0];this._loadMatrix(J,$)}tint(_,$){let[J,Z,Q]=s.shared.setValue(_).toArray(),q=[J,0,0,0,0,0,Z,0,0,0,0,0,Q,0,0,0,0,0,1,0];this._loadMatrix(q,$)}greyscale(_,$){let J=[_,_,_,0,0,_,_,_,0,0,_,_,_,0,0,0,0,0,1,0];this._loadMatrix(J,$)}blackAndWhite(_){let $=[0.3,0.6,0.1,0,0,0.3,0.6,0.1,0,0,0.3,0.6,0.1,0,0,0,0,0,1,0];this._loadMatrix($,_)}hue(_,$){_=(_||0)/180*Math.PI;let J=Math.cos(_),Z=Math.sin(_),Q=Math.sqrt,q=0.3333333333333333,K=Q(q),V=J+(1-J)*q,H=q*(1-J)-K*Z,w=q*(1-J)+K*Z,h=q*(1-J)+K*Z,z=J+q*(1-J),X=q*(1-J)-K*Z,W=q*(1-J)-K*Z,G=q*(1-J)+K*Z,k=J+q*(1-J),C=[V,H,w,0,0,h,z,X,0,0,W,G,k,0,0,0,0,0,1,0];this._loadMatrix(C,$)}contrast(_,$){let J=(_||0)+1,Z=-0.5*(J-1),Q=[J,0,0,0,Z,0,J,0,0,Z,0,0,J,0,Z,0,0,0,1,0];this._loadMatrix(Q,$)}saturate(_=0,$){let J=_*2/3+1,Z=(J-1)*-0.5,Q=[J,Z,Z,0,0,Z,J,Z,0,0,Z,Z,J,0,0,0,0,0,1,0];this._loadMatrix(Q,$)}desaturate(){this.saturate(-1)}negative(_){let $=[-1,0,0,1,0,0,-1,0,1,0,0,0,-1,1,0,0,0,0,1,0];this._loadMatrix($,_)}sepia(_){let $=[0.393,0.7689999,0.18899999,0,0,0.349,0.6859999,0.16799999,0,0,0.272,0.5339999,0.13099999,0,0,0,0,0,1,0];this._loadMatrix($,_)}technicolor(_){let $=[1.9125277891456083,-0.8545344976951645,-0.09155508482755585,0,11.793603434377337,-0.3087833385928097,1.7658908555458428,-0.10601743074722245,0,-70.35205161461398,-0.231103377548616,-0.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0];this._loadMatrix($,_)}polaroid(_){let $=[1.438,-0.062,-0.062,0,0,-0.122,1.378,-0.122,0,0,-0.016,-0.016,1.483,0,0,0,0,0,1,0];this._loadMatrix($,_)}toBGR(_){let $=[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0];this._loadMatrix($,_)}kodachrome(_){let $=[1.1285582396593525,-0.3967382283601348,-0.03992559172921793,0,63.72958762196502,-0.16404339962244616,1.0835251566291304,-0.05498805115633132,0,24.732407896706203,-0.16786010706155763,-0.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0];this._loadMatrix($,_)}browni(_){let $=[0.5997023498159715,0.34553243048391263,-0.2708298674538042,0,47.43192855600873,-0.037703249837783157,0.8609577587992641,0.15059552388459913,0,-36.96841498319127,0.24113635128153335,-0.07441037908422492,0.44972182064877153,0,-7.562075277591283,0,0,0,1,0];this._loadMatrix($,_)}vintage(_){let $=[0.6279345635605994,0.3202183420819367,-0.03965408211312453,0,9.651285835294123,0.02578397704808868,0.6441188644374771,0.03259127616149294,0,7.462829176470591,0.0466055556782719,-0.0851232987247891,0.5241648018700465,0,5.159190588235296,0,0,0,1,0];this._loadMatrix($,_)}colorTone(_,$,J,Z,Q){_=_||0.2,$=$||0.15,J=J||16770432,Z=Z||3375104;let q=s.shared,[K,V,H]=q.setValue(J).toArray(),[w,h,z]=q.setValue(Z).toArray(),X=[0.3,0.59,0.11,0,0,K,V,H,_,0,w,h,z,$,0,K-w,V-h,H-z,0,0];this._loadMatrix(X,Q)}night(_,$){_=_||0.1;let J=[_*-2,-_,0,0,0,-_,0,_,0,0,0,_,_*2,0,0,0,0,0,1,0];this._loadMatrix(J,$)}predator(_,$){let J=[11.224130630493164*_,-4.794486999511719*_,-2.8746118545532227*_,0*_,0.40342438220977783*_,-3.6330697536468506*_,9.193157196044922*_,-2.951810836791992*_,0*_,-1.316135048866272*_,-3.2184197902679443*_,-4.2375030517578125*_,7.476448059082031*_,0*_,0.8044459223747253*_,0,0,0,1,0];this._loadMatrix(J,$)}lsd(_){let $=[2,-0.4,0.5,0,0,-0.5,2,-0.4,0,0,-0.4,-0.5,3,0,0,0,0,0,1,0];this._loadMatrix($,_)}reset(){let _=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0];this._loadMatrix(_,!1)}get matrix(){return this.uniforms.m}set matrix(_){this.uniforms.m=_}get alpha(){return this.uniforms.uAlpha}set alpha(_){this.uniforms.uAlpha=_}}l1.prototype.grayscale=l1.prototype.greyscale;var gJ=`varying vec2 vFilterCoord;
618
618
  varying vec2 vTextureCoord;
619
619
 
620
620
  uniform vec2 scale;
@@ -634,7 +634,7 @@ void main(void)
634
634
 
635
635
  gl_FragColor = texture2D(uSampler, clamp(vec2(vTextureCoord.x + map.x, vTextureCoord.y + map.y), inputClamp.xy, inputClamp.zw));
636
636
  }
637
- `;var xJ=`attribute vec2 aVertexPosition;
637
+ `;var pJ=`attribute vec2 aVertexPosition;
638
638
 
639
639
  uniform mat3 projectionMatrix;
640
640
  uniform mat3 filterMatrix;
@@ -663,7 +663,7 @@ void main(void)
663
663
  vTextureCoord = filterTextureCoord();
664
664
  vFilterCoord = ( filterMatrix * vec3( vTextureCoord, 1.0) ).xy;
665
665
  }
666
- `;class G8 extends J0{constructor(_,$){let J=new o;_.renderable=!1,super(xJ,pJ,{mapSampler:_._texture,filterMatrix:J,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=_,this.maskMatrix=J,$==null&&($=20),this.scale=new u($,$)}apply(_,$,J,Z){this.uniforms.filterMatrix=_.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;let Q=this.maskSprite.worldTransform,q=Math.sqrt(Q.a*Q.a+Q.b*Q.b),K=Math.sqrt(Q.c*Q.c+Q.d*Q.d);q!==0&&K!==0&&(this.uniforms.rotation[0]=Q.a/q,this.uniforms.rotation[1]=Q.b/q,this.uniforms.rotation[2]=Q.c/K,this.uniforms.rotation[3]=Q.d/K),_.applyFilter(this,$,J,Z)}get map(){return this.uniforms.mapSampler}set map(_){this.uniforms.mapSampler=_}}var mJ=`varying vec2 v_rgbNW;
666
+ `;class G8 extends J0{constructor(_,$){let J=new o;_.renderable=!1,super(pJ,gJ,{mapSampler:_._texture,filterMatrix:J,scale:{x:1,y:1},rotation:new Float32Array([1,0,0,1])}),this.maskSprite=_,this.maskMatrix=J,$==null&&($=20),this.scale=new u($,$)}apply(_,$,J,Z){this.uniforms.filterMatrix=_.calculateSpriteMatrix(this.maskMatrix,this.maskSprite),this.uniforms.scale.x=this.scale.x,this.uniforms.scale.y=this.scale.y;let Q=this.maskSprite.worldTransform,q=Math.sqrt(Q.a*Q.a+Q.b*Q.b),K=Math.sqrt(Q.c*Q.c+Q.d*Q.d);q!==0&&K!==0&&(this.uniforms.rotation[0]=Q.a/q,this.uniforms.rotation[1]=Q.b/q,this.uniforms.rotation[2]=Q.c/K,this.uniforms.rotation[3]=Q.d/K),_.applyFilter(this,$,J,Z)}get map(){return this.uniforms.mapSampler}set map(_){this.uniforms.mapSampler=_}}var xJ=`varying vec2 v_rgbNW;
667
667
  varying vec2 v_rgbNE;
668
668
  varying vec2 v_rgbSW;
669
669
  varying vec2 v_rgbSE;
@@ -784,7 +784,7 @@ void main() {
784
784
 
785
785
  gl_FragColor = color;
786
786
  }
787
- `;var uJ=`
787
+ `;var mJ=`
788
788
  attribute vec2 aVertexPosition;
789
789
 
790
790
  uniform mat3 projectionMatrix;
@@ -826,7 +826,7 @@ void main(void) {
826
826
 
827
827
  texcoords(vFragCoord, inputSize.zw, v_rgbNW, v_rgbNE, v_rgbSW, v_rgbSE, v_rgbM);
828
828
  }
829
- `;class W8 extends J0{constructor(){super(uJ,mJ)}}var nJ=`precision highp float;
829
+ `;class W8 extends J0{constructor(){super(mJ,xJ)}}var uJ=`precision highp float;
830
830
 
831
831
  varying vec2 vTextureCoord;
832
832
  varying vec4 vColor;
@@ -860,8 +860,8 @@ void main()
860
860
 
861
861
  gl_FragColor = color;
862
862
  }
863
- `;class k8 extends J0{constructor(_=0.5,$=Math.random()){super(r5,nJ,{uNoise:0,uSeed:0}),this.noise=_,this.seed=$}get noise(){return this.uniforms.uNoise}set noise(_){this.uniforms.uNoise=_}get seed(){return this.uniforms.uSeed}set seed(_){this.uniforms.uSeed=_}}var z9={AlphaFilter:z8,BlurFilter:X8,BlurFilterPass:N1,ColorMatrixFilter:l1,DisplacementFilter:G8,FXAAFilter:W8,NoiseFilter:k8};Object.entries(z9).forEach(([_,$])=>{Object.defineProperty(z9,_,{get(){return P.deprecation("7.1.0",`filters.${_} has moved to ${_}`),$}})});class lJ{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(_){this.removeTickerListener(),this.events=_,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(_){this._pauseUpdate=_}addTickerListener(){this.tickerAdded||!this.domElement||(k0.system.add(this.tickerUpdate,this,n0.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(k0.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}let _=this.events.rootPointerEvent;this.events.supportsTouchEvents&&_.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:_.clientX,clientY:_.clientY}))}tickerUpdate(_){this._deltaTime+=_,!(this._deltaTime<this.interactionFrequency)&&(this._deltaTime=0,this.update())}}var I_=new lJ;class E_{constructor(_){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=E_.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new u,this.page=new u,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=_}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(_,$,J){throw Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(_,$,J,Z,Q){throw Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class v_ extends E_{constructor(){super(...arguments),this.client=new u,this.movement=new u,this.offset=new u,this.global=new u,this.screen=new u}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(_,$,J){return _.worldTransform.applyInverse(J||this.global,$)}getModifierState(_){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(_)}initMouseEvent(_,$,J,Z,Q,q,K,V,H,w,h,z,X,W,G){throw Error("Method not implemented.")}}class v0 extends v_{constructor(){super(...arguments),this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw Error("getPredictedEvents is not supported!")}}class b_ extends v_{constructor(){super(...arguments),this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}}b_.DOM_DELTA_PIXEL=0,b_.DOM_DELTA_LINE=1,b_.DOM_DELTA_PAGE=2;var x2=2048,m2=new u,X9=new u;class C8{constructor(_){this.dispatch=new P.EventEmitter,this.moveOnAll=!1,this.enableGlobalMoveEvents=!0,this.mappingState={trackingData:{}},this.eventPool=new Map,this._allInteractiveElements=[],this._hitElements=[],this._isPointerMoveEvent=!1,this.rootTarget=_,this.hitPruneFn=this.hitPruneFn.bind(this),this.hitTestFn=this.hitTestFn.bind(this),this.mapPointerDown=this.mapPointerDown.bind(this),this.mapPointerMove=this.mapPointerMove.bind(this),this.mapPointerOut=this.mapPointerOut.bind(this),this.mapPointerOver=this.mapPointerOver.bind(this),this.mapPointerUp=this.mapPointerUp.bind(this),this.mapPointerUpOutside=this.mapPointerUpOutside.bind(this),this.mapWheel=this.mapWheel.bind(this),this.mappingTable={},this.addEventMapping("pointerdown",this.mapPointerDown),this.addEventMapping("pointermove",this.mapPointerMove),this.addEventMapping("pointerout",this.mapPointerOut),this.addEventMapping("pointerleave",this.mapPointerOut),this.addEventMapping("pointerover",this.mapPointerOver),this.addEventMapping("pointerup",this.mapPointerUp),this.addEventMapping("pointerupoutside",this.mapPointerUpOutside),this.addEventMapping("wheel",this.mapWheel)}addEventMapping(_,$){this.mappingTable[_]||(this.mappingTable[_]=[]),this.mappingTable[_].push({fn:$,priority:0}),this.mappingTable[_].sort((J,Z)=>J.priority-Z.priority)}dispatchEvent(_,$){_.propagationStopped=!1,_.propagationImmediatelyStopped=!1,this.propagate(_,$),this.dispatch.emit($||_.type,_)}mapEvent(_){if(!this.rootTarget)return;let $=this.mappingTable[_.type];if($)for(let J=0,Z=$.length;J<Z;J++)$[J].fn(_);else console.warn(`[EventBoundary]: Event mapping not defined for ${_.type}`)}hitTest(_,$){I_.pauseUpdate=!0;let J=this._isPointerMoveEvent&&this.enableGlobalMoveEvents?"hitTestMoveRecursive":"hitTestRecursive",Z=this[J](this.rootTarget,this.rootTarget.eventMode,m2.set(_,$),this.hitTestFn,this.hitPruneFn);return Z&&Z[0]}propagate(_,$){if(!_.target)return;let J=_.composedPath();_.eventPhase=_.CAPTURING_PHASE;for(let Z=0,Q=J.length-1;Z<Q;Z++)if(_.currentTarget=J[Z],this.notifyTarget(_,$),_.propagationStopped||_.propagationImmediatelyStopped)return;if(_.eventPhase=_.AT_TARGET,_.currentTarget=_.target,this.notifyTarget(_,$),!(_.propagationStopped||_.propagationImmediatelyStopped)){_.eventPhase=_.BUBBLING_PHASE;for(let Z=J.length-2;Z>=0;Z--)if(_.currentTarget=J[Z],this.notifyTarget(_,$),_.propagationStopped||_.propagationImmediatelyStopped)return}}all(_,$,J=this._allInteractiveElements){if(J.length===0)return;_.eventPhase=_.BUBBLING_PHASE;let Z=Array.isArray($)?$:[$];for(let Q=J.length-1;Q>=0;Q--)Z.forEach((q)=>{_.currentTarget=J[Q],this.notifyTarget(_,q)})}propagationPath(_){let $=[_];for(let J=0;J<x2&&_!==this.rootTarget;J++){if(!_.parent)throw Error("Cannot find propagation path to disconnected target");$.push(_.parent),_=_.parent}return $.reverse(),$}hitTestMoveRecursive(_,$,J,Z,Q,q=!1){let K=!1;if(this._interactivePrune(_))return null;if((_.eventMode==="dynamic"||$==="dynamic")&&(I_.pauseUpdate=!1),_.interactiveChildren&&_.children){let w=_.children;for(let h=w.length-1;h>=0;h--){let z=w[h],X=this.hitTestMoveRecursive(z,this._isInteractive($)?$:z.eventMode,J,Z,Q,q||Q(_,J));if(X){if(X.length>0&&!X[X.length-1].parent)continue;let W=_.isInteractive();(X.length>0||W)&&(W&&this._allInteractiveElements.push(_),X.push(_)),this._hitElements.length===0&&(this._hitElements=X),K=!0}}}let V=this._isInteractive($),H=_.isInteractive();return V&&H&&this._allInteractiveElements.push(_),q||this._hitElements.length>0?null:K?this._hitElements:V&&!Q(_,J)&&Z(_,J)?H?[_]:[]:null}hitTestRecursive(_,$,J,Z,Q){if(this._interactivePrune(_)||Q(_,J))return null;if((_.eventMode==="dynamic"||$==="dynamic")&&(I_.pauseUpdate=!1),_.interactiveChildren&&_.children){let V=_.children;for(let H=V.length-1;H>=0;H--){let w=V[H],h=this.hitTestRecursive(w,this._isInteractive($)?$:w.eventMode,J,Z,Q);if(h){if(h.length>0&&!h[h.length-1].parent)continue;let z=_.isInteractive();return(h.length>0||z)&&h.push(_),h}}}let q=this._isInteractive($),K=_.isInteractive();return q&&Z(_,J)?K?[_]:[]:null}_isInteractive(_){return _==="static"||_==="dynamic"}_interactivePrune(_){return!!(!_||_.isMask||!_.visible||!_.renderable||_.eventMode==="none"||_.eventMode==="passive"&&!_.interactiveChildren||_.isMask)}hitPruneFn(_,$){if(_.hitArea&&(_.worldTransform.applyInverse($,X9),!_.hitArea.contains(X9.x,X9.y)))return!0;if(_._mask){let J=_._mask.isMaskData?_._mask.maskObject:_._mask;if(J&&!J.containsPoint?.($))return!0}return!1}hitTestFn(_,$){return _.eventMode==="passive"?!1:_.hitArea?!0:_.containsPoint?_.containsPoint($):!1}notifyTarget(_,$){$=$??_.type;let J=`on${$}`;_.currentTarget[J]?.(_);let Z=_.eventPhase===_.CAPTURING_PHASE||_.eventPhase===_.AT_TARGET?`${$}capture`:$;this.notifyListeners(_,Z),_.eventPhase===_.AT_TARGET&&this.notifyListeners(_,$)}mapPointerDown(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.createPointerEvent(_);if(this.dispatchEvent($,"pointerdown"),$.pointerType==="touch")this.dispatchEvent($,"touchstart");else if($.pointerType==="mouse"||$.pointerType==="pen"){let Z=$.button===2;this.dispatchEvent($,Z?"rightdown":"mousedown")}let J=this.trackingData(_.pointerId);J.pressTargetsByButton[_.button]=$.composedPath(),this.freeEvent($)}mapPointerMove(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;let $=this.createPointerEvent(_);this._isPointerMoveEvent=!1;let J=$.pointerType==="mouse"||$.pointerType==="pen",Z=this.trackingData(_.pointerId),Q=this.findMountedTarget(Z.overTargets);if(Z.overTargets?.length>0&&Q!==$.target){let V=_.type==="mousemove"?"mouseout":"pointerout",H=this.createPointerEvent(_,V,Q);if(this.dispatchEvent(H,"pointerout"),J&&this.dispatchEvent(H,"mouseout"),!$.composedPath().includes(Q)){let w=this.createPointerEvent(_,"pointerleave",Q);for(w.eventPhase=w.AT_TARGET;w.target&&!$.composedPath().includes(w.target);)w.currentTarget=w.target,this.notifyTarget(w),J&&this.notifyTarget(w,"mouseleave"),w.target=w.target.parent;this.freeEvent(w)}this.freeEvent(H)}if(Q!==$.target){let V=_.type==="mousemove"?"mouseover":"pointerover",H=this.clonePointerEvent($,V);this.dispatchEvent(H,"pointerover"),J&&this.dispatchEvent(H,"mouseover");let w=Q?.parent;for(;w&&w!==this.rootTarget.parent&&w!==$.target;)w=w.parent;if(!w||w===this.rootTarget.parent){let h=this.clonePointerEvent($,"pointerenter");for(h.eventPhase=h.AT_TARGET;h.target&&h.target!==Q&&h.target!==this.rootTarget.parent;)h.currentTarget=h.target,this.notifyTarget(h),J&&this.notifyTarget(h,"mouseenter"),h.target=h.target.parent;this.freeEvent(h)}this.freeEvent(H)}let q=[],K=this.enableGlobalMoveEvents??!0;this.moveOnAll?q.push("pointermove"):this.dispatchEvent($,"pointermove"),K&&q.push("globalpointermove"),$.pointerType==="touch"&&(this.moveOnAll?q.splice(1,0,"touchmove"):this.dispatchEvent($,"touchmove"),K&&q.push("globaltouchmove")),J&&(this.moveOnAll?q.splice(1,0,"mousemove"):this.dispatchEvent($,"mousemove"),K&&q.push("globalmousemove"),this.cursor=$.target?.cursor),q.length>0&&this.all($,q),this._allInteractiveElements.length=0,this._hitElements.length=0,Z.overTargets=$.composedPath(),this.freeEvent($)}mapPointerOver(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.trackingData(_.pointerId),J=this.createPointerEvent(_),Z=J.pointerType==="mouse"||J.pointerType==="pen";this.dispatchEvent(J,"pointerover"),Z&&this.dispatchEvent(J,"mouseover"),J.pointerType==="mouse"&&(this.cursor=J.target?.cursor);let Q=this.clonePointerEvent(J,"pointerenter");for(Q.eventPhase=Q.AT_TARGET;Q.target&&Q.target!==this.rootTarget.parent;)Q.currentTarget=Q.target,this.notifyTarget(Q),Z&&this.notifyTarget(Q,"mouseenter"),Q.target=Q.target.parent;$.overTargets=J.composedPath(),this.freeEvent(J),this.freeEvent(Q)}mapPointerOut(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.trackingData(_.pointerId);if($.overTargets){let J=_.pointerType==="mouse"||_.pointerType==="pen",Z=this.findMountedTarget($.overTargets),Q=this.createPointerEvent(_,"pointerout",Z);this.dispatchEvent(Q),J&&this.dispatchEvent(Q,"mouseout");let q=this.createPointerEvent(_,"pointerleave",Z);for(q.eventPhase=q.AT_TARGET;q.target&&q.target!==this.rootTarget.parent;)q.currentTarget=q.target,this.notifyTarget(q),J&&this.notifyTarget(q,"mouseleave"),q.target=q.target.parent;$.overTargets=null,this.freeEvent(Q),this.freeEvent(q)}this.cursor=null}mapPointerUp(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=performance.now(),J=this.createPointerEvent(_);if(this.dispatchEvent(J,"pointerup"),J.pointerType==="touch")this.dispatchEvent(J,"touchend");else if(J.pointerType==="mouse"||J.pointerType==="pen"){let K=J.button===2;this.dispatchEvent(J,K?"rightup":"mouseup")}let Z=this.trackingData(_.pointerId),Q=this.findMountedTarget(Z.pressTargetsByButton[_.button]),q=Q;if(Q&&!J.composedPath().includes(Q)){let K=Q;for(;K&&!J.composedPath().includes(K);){if(J.currentTarget=K,this.notifyTarget(J,"pointerupoutside"),J.pointerType==="touch")this.notifyTarget(J,"touchendoutside");else if(J.pointerType==="mouse"||J.pointerType==="pen"){let V=J.button===2;this.notifyTarget(J,V?"rightupoutside":"mouseupoutside")}K=K.parent}delete Z.pressTargetsByButton[_.button],q=K}if(q){let K=this.clonePointerEvent(J,"click");K.target=q,K.path=null,Z.clicksByButton[_.button]||(Z.clicksByButton[_.button]={clickCount:0,target:K.target,timeStamp:$});let V=Z.clicksByButton[_.button];if(V.target===K.target&&$-V.timeStamp<200?++V.clickCount:V.clickCount=1,V.target=K.target,V.timeStamp=$,K.detail=V.clickCount,K.pointerType==="mouse"){let H=K.button===2;this.dispatchEvent(K,H?"rightclick":"click")}else K.pointerType==="touch"&&this.dispatchEvent(K,"tap");this.dispatchEvent(K,"pointertap"),this.freeEvent(K)}this.freeEvent(J)}mapPointerUpOutside(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.trackingData(_.pointerId),J=this.findMountedTarget($.pressTargetsByButton[_.button]),Z=this.createPointerEvent(_);if(J){let Q=J;for(;Q;)Z.currentTarget=Q,this.notifyTarget(Z,"pointerupoutside"),Z.pointerType==="touch"?this.notifyTarget(Z,"touchendoutside"):(Z.pointerType==="mouse"||Z.pointerType==="pen")&&this.notifyTarget(Z,Z.button===2?"rightupoutside":"mouseupoutside"),Q=Q.parent;delete $.pressTargetsByButton[_.button]}this.freeEvent(Z)}mapWheel(_){if(!(_ instanceof b_)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}let $=this.createWheelEvent(_);this.dispatchEvent($),this.freeEvent($)}findMountedTarget(_){if(!_)return null;let $=_[0];for(let J=1;J<_.length&&_[J].parent===$;J++)$=_[J];return $}createPointerEvent(_,$,J){let Z=this.allocateEvent(v0);return this.copyPointerData(_,Z),this.copyMouseData(_,Z),this.copyData(_,Z),Z.nativeEvent=_.nativeEvent,Z.originalEvent=_,Z.target=J??this.hitTest(Z.global.x,Z.global.y)??this._hitElements[0],typeof $=="string"&&(Z.type=$),Z}createWheelEvent(_){let $=this.allocateEvent(b_);return this.copyWheelData(_,$),this.copyMouseData(_,$),this.copyData(_,$),$.nativeEvent=_.nativeEvent,$.originalEvent=_,$.target=this.hitTest($.global.x,$.global.y),$}clonePointerEvent(_,$){let J=this.allocateEvent(v0);return J.nativeEvent=_.nativeEvent,J.originalEvent=_.originalEvent,this.copyPointerData(_,J),this.copyMouseData(_,J),this.copyData(_,J),J.target=_.target,J.path=_.composedPath().slice(),J.type=$??J.type,J}copyWheelData(_,$){$.deltaMode=_.deltaMode,$.deltaX=_.deltaX,$.deltaY=_.deltaY,$.deltaZ=_.deltaZ}copyPointerData(_,$){_ instanceof v0&&$ instanceof v0&&($.pointerId=_.pointerId,$.width=_.width,$.height=_.height,$.isPrimary=_.isPrimary,$.pointerType=_.pointerType,$.pressure=_.pressure,$.tangentialPressure=_.tangentialPressure,$.tiltX=_.tiltX,$.tiltY=_.tiltY,$.twist=_.twist)}copyMouseData(_,$){_ instanceof v_&&$ instanceof v_&&($.altKey=_.altKey,$.button=_.button,$.buttons=_.buttons,$.client.copyFrom(_.client),$.ctrlKey=_.ctrlKey,$.metaKey=_.metaKey,$.movement.copyFrom(_.movement),$.screen.copyFrom(_.screen),$.shiftKey=_.shiftKey,$.global.copyFrom(_.global))}copyData(_,$){$.isTrusted=_.isTrusted,$.srcElement=_.srcElement,$.timeStamp=performance.now(),$.type=_.type,$.detail=_.detail,$.view=_.view,$.which=_.which,$.layer.copyFrom(_.layer),$.page.copyFrom(_.page)}trackingData(_){return this.mappingState.trackingData[_]||(this.mappingState.trackingData[_]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[_]}allocateEvent(_){this.eventPool.has(_)||this.eventPool.set(_,[]);let $=this.eventPool.get(_).pop()||new _(this);return $.eventPhase=$.NONE,$.currentTarget=null,$.path=null,$.target=null,$}freeEvent(_){if(_.manager!==this)throw Error("It is illegal to free an event not managed by this EventBoundary!");let $=_.constructor;this.eventPool.has($)||this.eventPool.set($,[]),this.eventPool.get($).push(_)}notifyListeners(_,$){let J=_.currentTarget._events[$];if(J&&_.currentTarget.isInteractive())if("fn"in J)J.once&&_.currentTarget.removeListener($,J.fn,void 0,!0),J.fn.call(J.context,_);else for(let Z=0,Q=J.length;Z<Q&&!_.propagationImmediatelyStopped;Z++)J[Z].once&&_.currentTarget.removeListener($,J[Z].fn,void 0,!0),J[Z].fn.call(J[Z].context,_)}}var u2=1,n2={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},G9=class _{constructor($){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=$,this.rootBoundary=new C8(null),I_.init(this),this.autoPreventDefault=!0,this.eventsAdded=!1,this.rootPointerEvent=new v0(null),this.rootWheelEvent=new b_(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy({..._.defaultEventFeatures},{set:(J,Z,Q)=>(Z==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=Q),J[Z]=Q,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init($){let{view:J,resolution:Z}=this.renderer;this.setTargetElement(J),this.resolution=Z,_._defaultEventMode=$.eventMode??"auto",Object.assign(this.features,$.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange($){this.resolution=$}destroy(){this.setTargetElement(null),this.renderer=null}setCursor($){$=$||"default";let J=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(J=!1),this.currentCursor===$)return;this.currentCursor=$;let Z=this.cursorStyles[$];if(Z)switch(typeof Z){case"string":J&&(this.domElement.style.cursor=Z);break;case"function":Z($);break;case"object":J&&Object.assign(this.domElement.style,Z);break}else J&&typeof $=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,$)&&(this.domElement.style.cursor=$)}get pointer(){return this.rootPointerEvent}onPointerDown($){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let J=this.normalizeToPointerData($);this.autoPreventDefault&&J[0].isNormalized&&($.cancelable||!("cancelable"in $))&&$.preventDefault();for(let Z=0,Q=J.length;Z<Q;Z++){let q=J[Z],K=this.bootstrapEvent(this.rootPointerEvent,q);this.rootBoundary.mapEvent(K)}this.setCursor(this.rootBoundary.cursor)}onPointerMove($){if(!this.features.move)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,I_.pointerMoved();let J=this.normalizeToPointerData($);for(let Z=0,Q=J.length;Z<Q;Z++){let q=this.bootstrapEvent(this.rootPointerEvent,J[Z]);this.rootBoundary.mapEvent(q)}this.setCursor(this.rootBoundary.cursor)}onPointerUp($){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let J=$.target;$.composedPath&&$.composedPath().length>0&&(J=$.composedPath()[0]);let Z=J!==this.domElement?"outside":"",Q=this.normalizeToPointerData($);for(let q=0,K=Q.length;q<K;q++){let V=this.bootstrapEvent(this.rootPointerEvent,Q[q]);V.type+=Z,this.rootBoundary.mapEvent(V)}this.setCursor(this.rootBoundary.cursor)}onPointerOverOut($){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let J=this.normalizeToPointerData($);for(let Z=0,Q=J.length;Z<Q;Z++){let q=this.bootstrapEvent(this.rootPointerEvent,J[Z]);this.rootBoundary.mapEvent(q)}this.setCursor(this.rootBoundary.cursor)}onWheel($){if(!this.features.wheel)return;let J=this.normalizeWheelEvent($);this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.rootBoundary.mapEvent(J)}setTargetElement($){this.removeEvents(),this.domElement=$,I_.domElement=$,this.addEvents()}addEvents(){if(this.eventsAdded||!this.domElement)return;I_.addTickerListener();let $=this.domElement.style;$&&(globalThis.navigator.msPointerEnabled?($.msContentZooming="none",$.msTouchAction="none"):this.supportsPointerEvents&&($.touchAction="none")),this.supportsPointerEvents?(globalThis.document.addEventListener("pointermove",this.onPointerMove,!0),this.domElement.addEventListener("pointerdown",this.onPointerDown,!0),this.domElement.addEventListener("pointerleave",this.onPointerOverOut,!0),this.domElement.addEventListener("pointerover",this.onPointerOverOut,!0),globalThis.addEventListener("pointerup",this.onPointerUp,!0)):(globalThis.document.addEventListener("mousemove",this.onPointerMove,!0),this.domElement.addEventListener("mousedown",this.onPointerDown,!0),this.domElement.addEventListener("mouseout",this.onPointerOverOut,!0),this.domElement.addEventListener("mouseover",this.onPointerOverOut,!0),globalThis.addEventListener("mouseup",this.onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.addEventListener("touchstart",this.onPointerDown,!0),this.domElement.addEventListener("touchend",this.onPointerUp,!0),this.domElement.addEventListener("touchmove",this.onPointerMove,!0))),this.domElement.addEventListener("wheel",this.onWheel,{passive:!0,capture:!0}),this.eventsAdded=!0}removeEvents(){if(!this.eventsAdded||!this.domElement)return;I_.removeTickerListener();let $=this.domElement.style;globalThis.navigator.msPointerEnabled?($.msContentZooming="",$.msTouchAction=""):this.supportsPointerEvents&&($.touchAction=""),this.supportsPointerEvents?(globalThis.document.removeEventListener("pointermove",this.onPointerMove,!0),this.domElement.removeEventListener("pointerdown",this.onPointerDown,!0),this.domElement.removeEventListener("pointerleave",this.onPointerOverOut,!0),this.domElement.removeEventListener("pointerover",this.onPointerOverOut,!0),globalThis.removeEventListener("pointerup",this.onPointerUp,!0)):(globalThis.document.removeEventListener("mousemove",this.onPointerMove,!0),this.domElement.removeEventListener("mousedown",this.onPointerDown,!0),this.domElement.removeEventListener("mouseout",this.onPointerOverOut,!0),this.domElement.removeEventListener("mouseover",this.onPointerOverOut,!0),globalThis.removeEventListener("mouseup",this.onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.removeEventListener("touchstart",this.onPointerDown,!0),this.domElement.removeEventListener("touchend",this.onPointerUp,!0),this.domElement.removeEventListener("touchmove",this.onPointerMove,!0))),this.domElement.removeEventListener("wheel",this.onWheel,!0),this.domElement=null,this.eventsAdded=!1}mapPositionToPoint($,J,Z){let Q=this.domElement.isConnected?this.domElement.getBoundingClientRect():{x:0,y:0,width:this.domElement.width,height:this.domElement.height,left:0,top:0},q=1/this.resolution;$.x=(J-Q.left)*(this.domElement.width/Q.width)*q,$.y=(Z-Q.top)*(this.domElement.height/Q.height)*q}normalizeToPointerData($){let J=[];if(this.supportsTouchEvents&&$ instanceof TouchEvent)for(let Z=0,Q=$.changedTouches.length;Z<Q;Z++){let q=$.changedTouches[Z];typeof q.button>"u"&&(q.button=0),typeof q.buttons>"u"&&(q.buttons=1),typeof q.isPrimary>"u"&&(q.isPrimary=$.touches.length===1&&$.type==="touchstart"),typeof q.width>"u"&&(q.width=q.radiusX||1),typeof q.height>"u"&&(q.height=q.radiusY||1),typeof q.tiltX>"u"&&(q.tiltX=0),typeof q.tiltY>"u"&&(q.tiltY=0),typeof q.pointerType>"u"&&(q.pointerType="touch"),typeof q.pointerId>"u"&&(q.pointerId=q.identifier||0),typeof q.pressure>"u"&&(q.pressure=q.force||0.5),typeof q.twist>"u"&&(q.twist=0),typeof q.tangentialPressure>"u"&&(q.tangentialPressure=0),typeof q.layerX>"u"&&(q.layerX=q.offsetX=q.clientX),typeof q.layerY>"u"&&(q.layerY=q.offsetY=q.clientY),q.isNormalized=!0,q.type=$.type,J.push(q)}else if(!globalThis.MouseEvent||$ instanceof MouseEvent&&(!this.supportsPointerEvents||!($ instanceof globalThis.PointerEvent))){let Z=$;typeof Z.isPrimary>"u"&&(Z.isPrimary=!0),typeof Z.width>"u"&&(Z.width=1),typeof Z.height>"u"&&(Z.height=1),typeof Z.tiltX>"u"&&(Z.tiltX=0),typeof Z.tiltY>"u"&&(Z.tiltY=0),typeof Z.pointerType>"u"&&(Z.pointerType="mouse"),typeof Z.pointerId>"u"&&(Z.pointerId=u2),typeof Z.pressure>"u"&&(Z.pressure=0.5),typeof Z.twist>"u"&&(Z.twist=0),typeof Z.tangentialPressure>"u"&&(Z.tangentialPressure=0),Z.isNormalized=!0,J.push(Z)}else J.push($);return J}normalizeWheelEvent($){let J=this.rootWheelEvent;return this.transferMouseData(J,$),J.deltaX=$.deltaX,J.deltaY=$.deltaY,J.deltaZ=$.deltaZ,J.deltaMode=$.deltaMode,this.mapPositionToPoint(J.screen,$.clientX,$.clientY),J.global.copyFrom(J.screen),J.offset.copyFrom(J.screen),J.nativeEvent=$,J.type=$.type,J}bootstrapEvent($,J){return $.originalEvent=null,$.nativeEvent=J,$.pointerId=J.pointerId,$.width=J.width,$.height=J.height,$.isPrimary=J.isPrimary,$.pointerType=J.pointerType,$.pressure=J.pressure,$.tangentialPressure=J.tangentialPressure,$.tiltX=J.tiltX,$.tiltY=J.tiltY,$.twist=J.twist,this.transferMouseData($,J),this.mapPositionToPoint($.screen,J.clientX,J.clientY),$.global.copyFrom($.screen),$.offset.copyFrom($.screen),$.isTrusted=J.isTrusted,$.type==="pointerleave"&&($.type="pointerout"),$.type.startsWith("mouse")&&($.type=$.type.replace("mouse","pointer")),$.type.startsWith("touch")&&($.type=n2[$.type]||$.type),$}transferMouseData($,J){$.isTrusted=J.isTrusted,$.srcElement=J.srcElement,$.timeStamp=performance.now(),$.type=J.type,$.altKey=J.altKey,$.button=J.button,$.buttons=J.buttons,$.client.x=J.clientX,$.client.y=J.clientY,$.ctrlKey=J.ctrlKey,$.metaKey=J.metaKey,$.movement.x=J.movementX,$.movement.y=J.movementY,$.page.x=J.pageX,$.page.y=J.pageY,$.relatedTarget=null,$.shiftKey=J.shiftKey}};G9.extension={name:"events",type:[b.RendererSystem,b.CanvasRendererSystem]},G9.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};var _6=G9;O.add(_6);function oJ(_){return _==="dynamic"||_==="static"}var sJ={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??oJ(_6.defaultEventMode)},set interactive(_){P.deprecation("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=_,this.eventMode=_?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??_6.defaultEventMode},set eventMode(_){this._internalInteractive=oJ(_),this._internalEventMode=_},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(_,$,J){let Z=typeof J=="boolean"&&J||typeof J=="object"&&J.capture,Q=typeof J=="object"?J.signal:void 0,q=typeof J=="object"?J.once===!0:!1,K=typeof $=="function"?void 0:$;_=Z?`${_}capture`:_;let V=typeof $=="function"?$:$.handleEvent,H=this;Q&&Q.addEventListener("abort",()=>{H.off(_,V,K)}),q?H.once(_,V,K):H.on(_,V,K)},removeEventListener(_,$,J){let Z=typeof J=="boolean"&&J||typeof J=="object"&&J.capture,Q=typeof $=="function"?void 0:$;_=Z?`${_}capture`:_,$=typeof $=="function"?$:$.handleEvent,this.off(_,$,Q)},dispatchEvent(_){if(!(_ instanceof E_))throw Error("DisplayObject cannot propagate events outside of the Federated Events API");return _.defaultPrevented=!1,_.path=null,_.target=this,_.manager.dispatchEvent(_),!_.defaultPrevented}};t.mixin(sJ);var W9={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};t.mixin(W9);var l2=9,N8=100,o2=0,s2=0,iJ=2,aJ=1,i2=-1000,a2=-1000,r2=2;class Y8{constructor(_){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(P.isMobile.tablet||P.isMobile.phone)&&this.createTouchHook();let $=document.createElement("div");$.style.width=`${N8}px`,$.style.height=`${N8}px`,$.style.position="absolute",$.style.top=`${o2}px`,$.style.left=`${s2}px`,$.style.zIndex=iJ.toString(),this.div=$,this.renderer=_,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){let _=document.createElement("button");_.style.width=`${aJ}px`,_.style.height=`${aJ}px`,_.style.position="absolute",_.style.top=`${i2}px`,_.style.left=`${a2}px`,_.style.zIndex=r2.toString(),_.style.backgroundColor="#FF0000",_.title="select to enable accessibility for this content",_.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(_),this._hookDiv=_}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),this.renderer.view.parentNode?.appendChild(this.div))}deactivate(){!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),this.div.parentNode?.removeChild(this.div))}updateAccessibleObjects(_){if(!_.visible||!_.accessibleChildren)return;_.accessible&&_.isInteractive()&&(_._accessibleActive||this.addChild(_),_.renderId=this.renderId);let $=_.children;if($)for(let J=0;J<$.length;J++)this.updateAccessibleObjects($[J])}update(){let _=performance.now();if(P.isMobile.android.device&&_<this.androidUpdateCount||(this.androidUpdateCount=_+this.androidUpdateFrequency,!this.renderer.renderingToScreen))return;this.renderer.lastObjectRendered&&this.updateAccessibleObjects(this.renderer.lastObjectRendered);let{x:$,y:J,width:Z,height:Q}=this.renderer.view.getBoundingClientRect(),{width:q,height:K,resolution:V}=this.renderer,H=Z/q*V,w=Q/K*V,h=this.div;h.style.left=`${$}px`,h.style.top=`${J}px`,h.style.width=`${q}px`,h.style.height=`${K}px`;for(let z=0;z<this.children.length;z++){let X=this.children[z];if(X.renderId!==this.renderId)X._accessibleActive=!1,P.removeItems(this.children,z,1),this.div.removeChild(X._accessibleDiv),this.pool.push(X._accessibleDiv),X._accessibleDiv=null,z--;else{h=X._accessibleDiv;let{hitArea:W,worldTransform:G}=X;X.hitArea?(h.style.left=`${(G.tx+W.x*G.a)*H}px`,h.style.top=`${(G.ty+W.y*G.d)*w}px`,h.style.width=`${W.width*G.a*H}px`,h.style.height=`${W.height*G.d*w}px`):(W=X.getBounds(),this.capHitArea(W),h.style.left=`${W.x*H}px`,h.style.top=`${W.y*w}px`,h.style.width=`${W.width*H}px`,h.style.height=`${W.height*w}px`,h.title!==X.accessibleTitle&&X.accessibleTitle!==null&&(h.title=X.accessibleTitle),h.getAttribute("aria-label")!==X.accessibleHint&&X.accessibleHint!==null&&h.setAttribute("aria-label",X.accessibleHint)),(X.accessibleTitle!==h.title||X.tabIndex!==h.tabIndex)&&(h.title=X.accessibleTitle,h.tabIndex=X.tabIndex,this.debug&&this.updateDebugHTML(h))}}this.renderId++}updateDebugHTML(_){_.innerHTML=`type: ${_.type}</br> title : ${_.title}</br> tabIndex: ${_.tabIndex}`}capHitArea(_){_.x<0&&(_.width+=_.x,_.x=0),_.y<0&&(_.height+=_.y,_.y=0);let{width:$,height:J}=this.renderer;_.x+_.width>$&&(_.width=$-_.x),_.y+_.height>J&&(_.height=J-_.y)}addChild(_){let $=this.pool.pop();$||($=document.createElement("button"),$.style.width=`${N8}px`,$.style.height=`${N8}px`,$.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",$.style.position="absolute",$.style.zIndex=iJ.toString(),$.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?$.setAttribute("aria-live","off"):$.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?$.setAttribute("aria-relevant","additions"):$.setAttribute("aria-relevant","text"),$.addEventListener("click",this._onClick.bind(this)),$.addEventListener("focus",this._onFocus.bind(this)),$.addEventListener("focusout",this._onFocusOut.bind(this))),$.style.pointerEvents=_.accessiblePointerEvents,$.type=_.accessibleType,_.accessibleTitle&&_.accessibleTitle!==null?$.title=_.accessibleTitle:(!_.accessibleHint||_.accessibleHint===null)&&($.title=`displayObject ${_.tabIndex}`),_.accessibleHint&&_.accessibleHint!==null&&$.setAttribute("aria-label",_.accessibleHint),this.debug&&this.updateDebugHTML($),_._accessibleActive=!0,_._accessibleDiv=$,$.displayObject=_,this.children.push(_),this.div.appendChild(_._accessibleDiv),_._accessibleDiv.tabIndex=_.tabIndex}_dispatchEvent(_,$){let{displayObject:J}=_.target,Z=this.renderer.events.rootBoundary,Q=Object.assign(new E_(Z),{target:J});Z.rootTarget=this.renderer.lastObjectRendered,$.forEach((q)=>Z.dispatchEvent(Q,q))}_onClick(_){this._dispatchEvent(_,["click","pointertap","tap"])}_onFocus(_){_.target.getAttribute("aria-live")||_.target.setAttribute("aria-live","assertive"),this._dispatchEvent(_,["mouseover"])}_onFocusOut(_){_.target.getAttribute("aria-live")||_.target.setAttribute("aria-live","polite"),this._dispatchEvent(_,["mouseout"])}_onKeyDown(_){_.keyCode===l2&&this.activate()}_onMouseMove(_){_.movementX===0&&_.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Y8.extension={name:"accessibility",type:[b.RendererPlugin,b.CanvasRendererPlugin]};O.add(Y8);var rJ=class _{constructor($){this.stage=new q0,$=Object.assign({forceCanvas:!1},$),this.renderer=Z9($),_._plugins.forEach((J)=>{J.init.call(this,$)})}render(){this.renderer.render(this.stage)}get view(){return this.renderer?.view}get screen(){return this.renderer?.screen}destroy($,J){let Z=_._plugins.slice(0);Z.reverse(),Z.forEach((Q)=>{Q.destroy.call(this)}),this.stage.destroy(J),this.stage=null,this.renderer.destroy($),this.renderer=null}};rJ._plugins=[];var U8=rJ;O.handleByList(b.Application,U8._plugins);class I8{static init(_){Object.defineProperty(this,"resizeTo",{set($){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=$,$&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let $,J;if(this._resizeTo===globalThis.window)$=globalThis.innerWidth,J=globalThis.innerHeight;else{let{clientWidth:Z,clientHeight:Q}=this._resizeTo;$=Z,J=Q}this.renderer.resize($,J),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=_.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}I8.extension=b.Application;O.add(I8);var tJ={loader:b.LoadParser,resolver:b.ResolveParser,cache:b.CacheParser,detection:b.DetectionParser};O.handle(b.Asset,(_)=>{let $=_.ref;Object.entries(tJ).filter(([J])=>!!$[J]).forEach(([J,Z])=>O.add(Object.assign($[J],{extension:$[J].extension??Z})))},(_)=>{let $=_.ref;Object.keys(tJ).filter((J)=>!!$[J]).forEach((J)=>O.remove($[J]))});class k9{constructor(_,$=!1){this._loader=_,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=$}add(_){_.forEach(($)=>{this._assetList.push($)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;let _=[],$=Math.min(this._assetList.length,this._maxConcurrent);for(let J=0;J<$;J++)_.push(this._assetList.pop());await this._loader.load(_),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(_){this._isActive!==_&&(this._isActive=_,_&&!this._isLoading&&this._next())}}function d0(_,$){if(Array.isArray($)){for(let J of $)if(_.startsWith(`data:${J}`))return!0;return!1}return _.startsWith(`data:${$}`)}function B0(_,$){let J=_.split("?")[0],Z=P.path.extname(J).toLowerCase();return Array.isArray($)?$.includes(Z):Z===$}var D0=(_,$,J=!1)=>(Array.isArray(_)||(_=[_]),$?_.map((Z)=>typeof Z=="string"||J?$(Z):Z):_);var Y1=(_,$)=>{let J=$.split("?")[1];return J&&(_+=`?${J}`),_};function eJ(_,$,J,Z,Q){let q=$[J];for(let K=0;K<q.length;K++){let V=q[K];J<$.length-1?eJ(_.replace(Z[J],V),$,J+1,Z,Q):Q.push(_.replace(Z[J],V))}}function b8(_){let $=/\{(.*?)\}/g,J=_.match($),Z=[];if(J){let Q=[];J.forEach((q)=>{let K=q.substring(1,q.length-1).split(",");Q.push(K)}),eJ(_,Q,0,J,Z)}else Z.push(_);return Z}var c_=(_)=>!Array.isArray(_);class _Z{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(_){return this._cache.has(_)}get(_){let $=this._cache.get(_);return $||console.warn(`[Assets] Asset id ${_} was not found in the Cache`),$}set(_,$){let J=D0(_),Z;for(let K=0;K<this.parsers.length;K++){let V=this.parsers[K];if(V.test($)){Z=V.getCacheableAssets(J,$);break}}Z||(Z={},J.forEach((K)=>{Z[K]=$}));let Q=Object.keys(Z),q={cacheKeys:Q,keys:J};if(J.forEach((K)=>{this._cacheMap.set(K,q)}),Q.forEach((K)=>{let V=Z?Z[K]:$;this._cache.has(K)&&this._cache.get(K)!==V&&console.warn("[Cache] already has key:",K),this._cache.set(K,Z[K])}),$ instanceof E){let K=$;J.forEach((V)=>{K.baseTexture!==E.EMPTY.baseTexture&&p.addToCache(K.baseTexture,V),E.addToCache(K,V)})}}remove(_){if(!this._cacheMap.has(_)){console.warn(`[Assets] Asset id ${_} was not found in the Cache`);return}let $=this._cacheMap.get(_);$.cacheKeys.forEach((J)=>{this._cache.delete(J)}),$.keys.forEach((J)=>{this._cacheMap.delete(J)})}get parsers(){return this._parsers}}var V_=new _Z;class C9{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(_,$,J)=>(this._parsersValidated=!1,_[$]=J,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(_,$){let J={promise:null,parser:null};return J.promise=(async()=>{let Z=null,Q=null;if($.loadParser&&(Q=this._parserHash[$.loadParser],Q||console.warn(`[Assets] specified load parser "${$.loadParser}" not found while loading ${_}`)),!Q){for(let q=0;q<this.parsers.length;q++){let K=this.parsers[q];if(K.load&&K.test?.(_,$,this)){Q=K;break}}if(!Q)return console.warn(`[Assets] ${_} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}Z=await Q.load(_,$,this),J.parser=Q;for(let q=0;q<this.parsers.length;q++){let K=this.parsers[q];K.parse&&K.parse&&await K.testParse?.(Z,$,this)&&(Z=await K.parse(Z,$,this)||Z,J.parser=K)}return Z})(),J}async load(_,$){this._parsersValidated||this._validateParsers();let J=0,Z={},Q=c_(_),q=D0(_,(H)=>({alias:[H],src:H})),K=q.length,V=q.map(async(H)=>{let w=P.path.toAbsolute(H.src);if(!Z[H.src])try{this.promiseCache[w]||(this.promiseCache[w]=this._getLoadPromiseAndParser(w,H)),Z[H.src]=await this.promiseCache[w].promise,$&&$(++J/K)}catch(h){throw delete this.promiseCache[w],delete Z[H.src],Error(`[Loader.load] Failed to load ${w}.
864
- ${h}`)}});return await Promise.all(V),Q?Z[q[0].src]:Z}async unload(_){let $=D0(_,(J)=>({alias:[J],src:J})).map(async(J)=>{let Z=P.path.toAbsolute(J.src),Q=this.promiseCache[Z];if(Q){let q=await Q.promise;delete this.promiseCache[Z],Q.parser?.unload?.(q,J,this)}});await Promise.all($)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter((_)=>_.name).reduce((_,$)=>(_[$.name]&&console.warn(`[Assets] loadParser name conflict "${$.name}"`),{..._,[$.name]:$}),{})}}var H0=((_)=>(_[_.Low=0]="Low",_[_.Normal=1]="Normal",_[_.High=2]="High",_))(H0||{});var t2=".json",e2="application/json",N9={extension:{type:b.LoadParser,priority:H0.Low},name:"loadJson",test(_){return d0(_,e2)||B0(_,t2)},async load(_){return await(await B.ADAPTER.fetch(_)).json()}};O.add(N9);var _q=".txt",$q="text/plain",Y9={name:"loadTxt",extension:{type:b.LoadParser,priority:H0.Low},test(_){return d0(_,$q)||B0(_,_q)},async load(_){return await(await B.ADAPTER.fetch(_)).text()}};O.add(Y9);var Jq=["normal","bold","100","200","300","400","500","600","700","800","900"],Zq=[".ttf",".otf",".woff",".woff2"],Qq=["font/ttf","font/otf","font/woff","font/woff2"],qq=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function U9(_){let $=P.path.extname(_),J=P.path.basename(_,$).replace(/(-|_)/g," ").toLowerCase().split(" ").map((q)=>q.charAt(0).toUpperCase()+q.slice(1)),Z=J.length>0;for(let q of J)if(!q.match(qq)){Z=!1;break}let Q=J.join(" ");return Z||(Q=`"${Q.replace(/[\\"]/g,"\\$&")}"`),Q}var Kq=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function Vq(_){return Kq.test(_)?_:encodeURI(_)}var I9={extension:{type:b.LoadParser,priority:H0.Low},name:"loadWebFont",test(_){return d0(_,Qq)||B0(_,Zq)},async load(_,$){let J=B.ADAPTER.getFontFaceSet();if(J){let Z=[],Q=$.data?.family??U9(_),q=$.data?.weights?.filter((V)=>Jq.includes(V))??["normal"],K=$.data??{};for(let V=0;V<q.length;V++){let H=q[V],w=new FontFace(Q,`url(${Vq(_)})`,{...K,weight:H});await w.load(),J.add(w),Z.push(w)}return Z.length===1?Z[0]:Z}return console.warn("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(_){(Array.isArray(_)?_:[_]).forEach(($)=>B.ADAPTER.getFontFaceSet().delete($))}};O.add(I9);var o1=null;class $6{constructor(){o1||(o1=URL.createObjectURL(new Blob([`(function() {
863
+ `;class k8 extends J0{constructor(_=0.5,$=Math.random()){super(r5,uJ,{uNoise:0,uSeed:0}),this.noise=_,this.seed=$}get noise(){return this.uniforms.uNoise}set noise(_){this.uniforms.uNoise=_}get seed(){return this.uniforms.uSeed}set seed(_){this.uniforms.uSeed=_}}var X7={AlphaFilter:z8,BlurFilter:X8,BlurFilterPass:N1,ColorMatrixFilter:l1,DisplacementFilter:G8,FXAAFilter:W8,NoiseFilter:k8};Object.entries(X7).forEach(([_,$])=>{Object.defineProperty(X7,_,{get(){return P.deprecation("7.1.0",`filters.${_} has moved to ${_}`),$}})});class nJ{constructor(){this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}init(_){this.removeTickerListener(),this.events=_,this.interactionFrequency=10,this._deltaTime=0,this._didMove=!1,this.tickerAdded=!1,this._pauseUpdate=!0}get pauseUpdate(){return this._pauseUpdate}set pauseUpdate(_){this._pauseUpdate=_}addTickerListener(){this.tickerAdded||!this.domElement||(k0.system.add(this.tickerUpdate,this,n0.INTERACTION),this.tickerAdded=!0)}removeTickerListener(){this.tickerAdded&&(k0.system.remove(this.tickerUpdate,this),this.tickerAdded=!1)}pointerMoved(){this._didMove=!0}update(){if(!this.domElement||this._pauseUpdate)return;if(this._didMove){this._didMove=!1;return}let _=this.events.rootPointerEvent;this.events.supportsTouchEvents&&_.pointerType==="touch"||globalThis.document.dispatchEvent(new PointerEvent("pointermove",{clientX:_.clientX,clientY:_.clientY}))}tickerUpdate(_){this._deltaTime+=_,!(this._deltaTime<this.interactionFrequency)&&(this._deltaTime=0,this.update())}}var I_=new nJ;class E_{constructor(_){this.bubbles=!0,this.cancelBubble=!0,this.cancelable=!1,this.composed=!1,this.defaultPrevented=!1,this.eventPhase=E_.prototype.NONE,this.propagationStopped=!1,this.propagationImmediatelyStopped=!1,this.layer=new u,this.page=new u,this.NONE=0,this.CAPTURING_PHASE=1,this.AT_TARGET=2,this.BUBBLING_PHASE=3,this.manager=_}get layerX(){return this.layer.x}get layerY(){return this.layer.y}get pageX(){return this.page.x}get pageY(){return this.page.y}get data(){return this}composedPath(){return this.manager&&(!this.path||this.path[this.path.length-1]!==this.target)&&(this.path=this.target?this.manager.propagationPath(this.target):[]),this.path}initEvent(_,$,J){throw Error("initEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}initUIEvent(_,$,J,Z,Q){throw Error("initUIEvent() is a legacy DOM API. It is not implemented in the Federated Events API.")}preventDefault(){this.nativeEvent instanceof Event&&this.nativeEvent.cancelable&&this.nativeEvent.preventDefault(),this.defaultPrevented=!0}stopImmediatePropagation(){this.propagationImmediatelyStopped=!0}stopPropagation(){this.propagationStopped=!0}}class v_ extends E_{constructor(){super(...arguments),this.client=new u,this.movement=new u,this.offset=new u,this.global=new u,this.screen=new u}get clientX(){return this.client.x}get clientY(){return this.client.y}get x(){return this.clientX}get y(){return this.clientY}get movementX(){return this.movement.x}get movementY(){return this.movement.y}get offsetX(){return this.offset.x}get offsetY(){return this.offset.y}get globalX(){return this.global.x}get globalY(){return this.global.y}get screenX(){return this.screen.x}get screenY(){return this.screen.y}getLocalPosition(_,$,J){return _.worldTransform.applyInverse(J||this.global,$)}getModifierState(_){return"getModifierState"in this.nativeEvent&&this.nativeEvent.getModifierState(_)}initMouseEvent(_,$,J,Z,Q,q,K,V,H,w,h,z,X,W,G){throw Error("Method not implemented.")}}class v0 extends v_{constructor(){super(...arguments),this.width=0,this.height=0,this.isPrimary=!1}getCoalescedEvents(){return this.type==="pointermove"||this.type==="mousemove"||this.type==="touchmove"?[this]:[]}getPredictedEvents(){throw Error("getPredictedEvents is not supported!")}}class b_ extends v_{constructor(){super(...arguments),this.DOM_DELTA_PIXEL=0,this.DOM_DELTA_LINE=1,this.DOM_DELTA_PAGE=2}}b_.DOM_DELTA_PIXEL=0,b_.DOM_DELTA_LINE=1,b_.DOM_DELTA_PAGE=2;var m2=2048,u2=new u,G7=new u;class C8{constructor(_){this.dispatch=new P.EventEmitter,this.moveOnAll=!1,this.enableGlobalMoveEvents=!0,this.mappingState={trackingData:{}},this.eventPool=new Map,this._allInteractiveElements=[],this._hitElements=[],this._isPointerMoveEvent=!1,this.rootTarget=_,this.hitPruneFn=this.hitPruneFn.bind(this),this.hitTestFn=this.hitTestFn.bind(this),this.mapPointerDown=this.mapPointerDown.bind(this),this.mapPointerMove=this.mapPointerMove.bind(this),this.mapPointerOut=this.mapPointerOut.bind(this),this.mapPointerOver=this.mapPointerOver.bind(this),this.mapPointerUp=this.mapPointerUp.bind(this),this.mapPointerUpOutside=this.mapPointerUpOutside.bind(this),this.mapWheel=this.mapWheel.bind(this),this.mappingTable={},this.addEventMapping("pointerdown",this.mapPointerDown),this.addEventMapping("pointermove",this.mapPointerMove),this.addEventMapping("pointerout",this.mapPointerOut),this.addEventMapping("pointerleave",this.mapPointerOut),this.addEventMapping("pointerover",this.mapPointerOver),this.addEventMapping("pointerup",this.mapPointerUp),this.addEventMapping("pointerupoutside",this.mapPointerUpOutside),this.addEventMapping("wheel",this.mapWheel)}addEventMapping(_,$){this.mappingTable[_]||(this.mappingTable[_]=[]),this.mappingTable[_].push({fn:$,priority:0}),this.mappingTable[_].sort((J,Z)=>J.priority-Z.priority)}dispatchEvent(_,$){_.propagationStopped=!1,_.propagationImmediatelyStopped=!1,this.propagate(_,$),this.dispatch.emit($||_.type,_)}mapEvent(_){if(!this.rootTarget)return;let $=this.mappingTable[_.type];if($)for(let J=0,Z=$.length;J<Z;J++)$[J].fn(_);else console.warn(`[EventBoundary]: Event mapping not defined for ${_.type}`)}hitTest(_,$){I_.pauseUpdate=!0;let J=this._isPointerMoveEvent&&this.enableGlobalMoveEvents?"hitTestMoveRecursive":"hitTestRecursive",Z=this[J](this.rootTarget,this.rootTarget.eventMode,u2.set(_,$),this.hitTestFn,this.hitPruneFn);return Z&&Z[0]}propagate(_,$){if(!_.target)return;let J=_.composedPath();_.eventPhase=_.CAPTURING_PHASE;for(let Z=0,Q=J.length-1;Z<Q;Z++)if(_.currentTarget=J[Z],this.notifyTarget(_,$),_.propagationStopped||_.propagationImmediatelyStopped)return;if(_.eventPhase=_.AT_TARGET,_.currentTarget=_.target,this.notifyTarget(_,$),!(_.propagationStopped||_.propagationImmediatelyStopped)){_.eventPhase=_.BUBBLING_PHASE;for(let Z=J.length-2;Z>=0;Z--)if(_.currentTarget=J[Z],this.notifyTarget(_,$),_.propagationStopped||_.propagationImmediatelyStopped)return}}all(_,$,J=this._allInteractiveElements){if(J.length===0)return;_.eventPhase=_.BUBBLING_PHASE;let Z=Array.isArray($)?$:[$];for(let Q=J.length-1;Q>=0;Q--)Z.forEach((q)=>{_.currentTarget=J[Q],this.notifyTarget(_,q)})}propagationPath(_){let $=[_];for(let J=0;J<m2&&_!==this.rootTarget;J++){if(!_.parent)throw Error("Cannot find propagation path to disconnected target");$.push(_.parent),_=_.parent}return $.reverse(),$}hitTestMoveRecursive(_,$,J,Z,Q,q=!1){let K=!1;if(this._interactivePrune(_))return null;if((_.eventMode==="dynamic"||$==="dynamic")&&(I_.pauseUpdate=!1),_.interactiveChildren&&_.children){let w=_.children;for(let h=w.length-1;h>=0;h--){let z=w[h],X=this.hitTestMoveRecursive(z,this._isInteractive($)?$:z.eventMode,J,Z,Q,q||Q(_,J));if(X){if(X.length>0&&!X[X.length-1].parent)continue;let W=_.isInteractive();(X.length>0||W)&&(W&&this._allInteractiveElements.push(_),X.push(_)),this._hitElements.length===0&&(this._hitElements=X),K=!0}}}let V=this._isInteractive($),H=_.isInteractive();return V&&H&&this._allInteractiveElements.push(_),q||this._hitElements.length>0?null:K?this._hitElements:V&&!Q(_,J)&&Z(_,J)?H?[_]:[]:null}hitTestRecursive(_,$,J,Z,Q){if(this._interactivePrune(_)||Q(_,J))return null;if((_.eventMode==="dynamic"||$==="dynamic")&&(I_.pauseUpdate=!1),_.interactiveChildren&&_.children){let V=_.children;for(let H=V.length-1;H>=0;H--){let w=V[H],h=this.hitTestRecursive(w,this._isInteractive($)?$:w.eventMode,J,Z,Q);if(h){if(h.length>0&&!h[h.length-1].parent)continue;let z=_.isInteractive();return(h.length>0||z)&&h.push(_),h}}}let q=this._isInteractive($),K=_.isInteractive();return q&&Z(_,J)?K?[_]:[]:null}_isInteractive(_){return _==="static"||_==="dynamic"}_interactivePrune(_){return!!(!_||_.isMask||!_.visible||!_.renderable||_.eventMode==="none"||_.eventMode==="passive"&&!_.interactiveChildren||_.isMask)}hitPruneFn(_,$){if(_.hitArea&&(_.worldTransform.applyInverse($,G7),!_.hitArea.contains(G7.x,G7.y)))return!0;if(_._mask){let J=_._mask.isMaskData?_._mask.maskObject:_._mask;if(J&&!J.containsPoint?.($))return!0}return!1}hitTestFn(_,$){return _.eventMode==="passive"?!1:_.hitArea?!0:_.containsPoint?_.containsPoint($):!1}notifyTarget(_,$){$=$??_.type;let J=`on${$}`;_.currentTarget[J]?.(_);let Z=_.eventPhase===_.CAPTURING_PHASE||_.eventPhase===_.AT_TARGET?`${$}capture`:$;this.notifyListeners(_,Z),_.eventPhase===_.AT_TARGET&&this.notifyListeners(_,$)}mapPointerDown(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.createPointerEvent(_);if(this.dispatchEvent($,"pointerdown"),$.pointerType==="touch")this.dispatchEvent($,"touchstart");else if($.pointerType==="mouse"||$.pointerType==="pen"){let Z=$.button===2;this.dispatchEvent($,Z?"rightdown":"mousedown")}let J=this.trackingData(_.pointerId);J.pressTargetsByButton[_.button]=$.composedPath(),this.freeEvent($)}mapPointerMove(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}this._allInteractiveElements.length=0,this._hitElements.length=0,this._isPointerMoveEvent=!0;let $=this.createPointerEvent(_);this._isPointerMoveEvent=!1;let J=$.pointerType==="mouse"||$.pointerType==="pen",Z=this.trackingData(_.pointerId),Q=this.findMountedTarget(Z.overTargets);if(Z.overTargets?.length>0&&Q!==$.target){let V=_.type==="mousemove"?"mouseout":"pointerout",H=this.createPointerEvent(_,V,Q);if(this.dispatchEvent(H,"pointerout"),J&&this.dispatchEvent(H,"mouseout"),!$.composedPath().includes(Q)){let w=this.createPointerEvent(_,"pointerleave",Q);for(w.eventPhase=w.AT_TARGET;w.target&&!$.composedPath().includes(w.target);)w.currentTarget=w.target,this.notifyTarget(w),J&&this.notifyTarget(w,"mouseleave"),w.target=w.target.parent;this.freeEvent(w)}this.freeEvent(H)}if(Q!==$.target){let V=_.type==="mousemove"?"mouseover":"pointerover",H=this.clonePointerEvent($,V);this.dispatchEvent(H,"pointerover"),J&&this.dispatchEvent(H,"mouseover");let w=Q?.parent;for(;w&&w!==this.rootTarget.parent&&w!==$.target;)w=w.parent;if(!w||w===this.rootTarget.parent){let h=this.clonePointerEvent($,"pointerenter");for(h.eventPhase=h.AT_TARGET;h.target&&h.target!==Q&&h.target!==this.rootTarget.parent;)h.currentTarget=h.target,this.notifyTarget(h),J&&this.notifyTarget(h,"mouseenter"),h.target=h.target.parent;this.freeEvent(h)}this.freeEvent(H)}let q=[],K=this.enableGlobalMoveEvents??!0;this.moveOnAll?q.push("pointermove"):this.dispatchEvent($,"pointermove"),K&&q.push("globalpointermove"),$.pointerType==="touch"&&(this.moveOnAll?q.splice(1,0,"touchmove"):this.dispatchEvent($,"touchmove"),K&&q.push("globaltouchmove")),J&&(this.moveOnAll?q.splice(1,0,"mousemove"):this.dispatchEvent($,"mousemove"),K&&q.push("globalmousemove"),this.cursor=$.target?.cursor),q.length>0&&this.all($,q),this._allInteractiveElements.length=0,this._hitElements.length=0,Z.overTargets=$.composedPath(),this.freeEvent($)}mapPointerOver(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.trackingData(_.pointerId),J=this.createPointerEvent(_),Z=J.pointerType==="mouse"||J.pointerType==="pen";this.dispatchEvent(J,"pointerover"),Z&&this.dispatchEvent(J,"mouseover"),J.pointerType==="mouse"&&(this.cursor=J.target?.cursor);let Q=this.clonePointerEvent(J,"pointerenter");for(Q.eventPhase=Q.AT_TARGET;Q.target&&Q.target!==this.rootTarget.parent;)Q.currentTarget=Q.target,this.notifyTarget(Q),Z&&this.notifyTarget(Q,"mouseenter"),Q.target=Q.target.parent;$.overTargets=J.composedPath(),this.freeEvent(J),this.freeEvent(Q)}mapPointerOut(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.trackingData(_.pointerId);if($.overTargets){let J=_.pointerType==="mouse"||_.pointerType==="pen",Z=this.findMountedTarget($.overTargets),Q=this.createPointerEvent(_,"pointerout",Z);this.dispatchEvent(Q),J&&this.dispatchEvent(Q,"mouseout");let q=this.createPointerEvent(_,"pointerleave",Z);for(q.eventPhase=q.AT_TARGET;q.target&&q.target!==this.rootTarget.parent;)q.currentTarget=q.target,this.notifyTarget(q),J&&this.notifyTarget(q,"mouseleave"),q.target=q.target.parent;$.overTargets=null,this.freeEvent(Q),this.freeEvent(q)}this.cursor=null}mapPointerUp(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=performance.now(),J=this.createPointerEvent(_);if(this.dispatchEvent(J,"pointerup"),J.pointerType==="touch")this.dispatchEvent(J,"touchend");else if(J.pointerType==="mouse"||J.pointerType==="pen"){let K=J.button===2;this.dispatchEvent(J,K?"rightup":"mouseup")}let Z=this.trackingData(_.pointerId),Q=this.findMountedTarget(Z.pressTargetsByButton[_.button]),q=Q;if(Q&&!J.composedPath().includes(Q)){let K=Q;for(;K&&!J.composedPath().includes(K);){if(J.currentTarget=K,this.notifyTarget(J,"pointerupoutside"),J.pointerType==="touch")this.notifyTarget(J,"touchendoutside");else if(J.pointerType==="mouse"||J.pointerType==="pen"){let V=J.button===2;this.notifyTarget(J,V?"rightupoutside":"mouseupoutside")}K=K.parent}delete Z.pressTargetsByButton[_.button],q=K}if(q){let K=this.clonePointerEvent(J,"click");K.target=q,K.path=null,Z.clicksByButton[_.button]||(Z.clicksByButton[_.button]={clickCount:0,target:K.target,timeStamp:$});let V=Z.clicksByButton[_.button];if(V.target===K.target&&$-V.timeStamp<200?++V.clickCount:V.clickCount=1,V.target=K.target,V.timeStamp=$,K.detail=V.clickCount,K.pointerType==="mouse"){let H=K.button===2;this.dispatchEvent(K,H?"rightclick":"click")}else K.pointerType==="touch"&&this.dispatchEvent(K,"tap");this.dispatchEvent(K,"pointertap"),this.freeEvent(K)}this.freeEvent(J)}mapPointerUpOutside(_){if(!(_ instanceof v0)){console.warn("EventBoundary cannot map a non-pointer event as a pointer event");return}let $=this.trackingData(_.pointerId),J=this.findMountedTarget($.pressTargetsByButton[_.button]),Z=this.createPointerEvent(_);if(J){let Q=J;for(;Q;)Z.currentTarget=Q,this.notifyTarget(Z,"pointerupoutside"),Z.pointerType==="touch"?this.notifyTarget(Z,"touchendoutside"):(Z.pointerType==="mouse"||Z.pointerType==="pen")&&this.notifyTarget(Z,Z.button===2?"rightupoutside":"mouseupoutside"),Q=Q.parent;delete $.pressTargetsByButton[_.button]}this.freeEvent(Z)}mapWheel(_){if(!(_ instanceof b_)){console.warn("EventBoundary cannot map a non-wheel event as a wheel event");return}let $=this.createWheelEvent(_);this.dispatchEvent($),this.freeEvent($)}findMountedTarget(_){if(!_)return null;let $=_[0];for(let J=1;J<_.length&&_[J].parent===$;J++)$=_[J];return $}createPointerEvent(_,$,J){let Z=this.allocateEvent(v0);return this.copyPointerData(_,Z),this.copyMouseData(_,Z),this.copyData(_,Z),Z.nativeEvent=_.nativeEvent,Z.originalEvent=_,Z.target=J??this.hitTest(Z.global.x,Z.global.y)??this._hitElements[0],typeof $=="string"&&(Z.type=$),Z}createWheelEvent(_){let $=this.allocateEvent(b_);return this.copyWheelData(_,$),this.copyMouseData(_,$),this.copyData(_,$),$.nativeEvent=_.nativeEvent,$.originalEvent=_,$.target=this.hitTest($.global.x,$.global.y),$}clonePointerEvent(_,$){let J=this.allocateEvent(v0);return J.nativeEvent=_.nativeEvent,J.originalEvent=_.originalEvent,this.copyPointerData(_,J),this.copyMouseData(_,J),this.copyData(_,J),J.target=_.target,J.path=_.composedPath().slice(),J.type=$??J.type,J}copyWheelData(_,$){$.deltaMode=_.deltaMode,$.deltaX=_.deltaX,$.deltaY=_.deltaY,$.deltaZ=_.deltaZ}copyPointerData(_,$){_ instanceof v0&&$ instanceof v0&&($.pointerId=_.pointerId,$.width=_.width,$.height=_.height,$.isPrimary=_.isPrimary,$.pointerType=_.pointerType,$.pressure=_.pressure,$.tangentialPressure=_.tangentialPressure,$.tiltX=_.tiltX,$.tiltY=_.tiltY,$.twist=_.twist)}copyMouseData(_,$){_ instanceof v_&&$ instanceof v_&&($.altKey=_.altKey,$.button=_.button,$.buttons=_.buttons,$.client.copyFrom(_.client),$.ctrlKey=_.ctrlKey,$.metaKey=_.metaKey,$.movement.copyFrom(_.movement),$.screen.copyFrom(_.screen),$.shiftKey=_.shiftKey,$.global.copyFrom(_.global))}copyData(_,$){$.isTrusted=_.isTrusted,$.srcElement=_.srcElement,$.timeStamp=performance.now(),$.type=_.type,$.detail=_.detail,$.view=_.view,$.which=_.which,$.layer.copyFrom(_.layer),$.page.copyFrom(_.page)}trackingData(_){return this.mappingState.trackingData[_]||(this.mappingState.trackingData[_]={pressTargetsByButton:{},clicksByButton:{},overTarget:null}),this.mappingState.trackingData[_]}allocateEvent(_){this.eventPool.has(_)||this.eventPool.set(_,[]);let $=this.eventPool.get(_).pop()||new _(this);return $.eventPhase=$.NONE,$.currentTarget=null,$.path=null,$.target=null,$}freeEvent(_){if(_.manager!==this)throw Error("It is illegal to free an event not managed by this EventBoundary!");let $=_.constructor;this.eventPool.has($)||this.eventPool.set($,[]),this.eventPool.get($).push(_)}notifyListeners(_,$){let J=_.currentTarget._events[$];if(J&&_.currentTarget.isInteractive())if("fn"in J)J.once&&_.currentTarget.removeListener($,J.fn,void 0,!0),J.fn.call(J.context,_);else for(let Z=0,Q=J.length;Z<Q&&!_.propagationImmediatelyStopped;Z++)J[Z].once&&_.currentTarget.removeListener($,J[Z].fn,void 0,!0),J[Z].fn.call(J[Z].context,_)}}var n2=1,l2={touchstart:"pointerdown",touchend:"pointerup",touchendoutside:"pointerupoutside",touchmove:"pointermove",touchcancel:"pointercancel"},W7=class _{constructor($){this.supportsTouchEvents="ontouchstart"in globalThis,this.supportsPointerEvents=!!globalThis.PointerEvent,this.domElement=null,this.resolution=1,this.renderer=$,this.rootBoundary=new C8(null),I_.init(this),this.autoPreventDefault=!0,this.eventsAdded=!1,this.rootPointerEvent=new v0(null),this.rootWheelEvent=new b_(null),this.cursorStyles={default:"inherit",pointer:"pointer"},this.features=new Proxy({..._.defaultEventFeatures},{set:(J,Z,Q)=>(Z==="globalMove"&&(this.rootBoundary.enableGlobalMoveEvents=Q),J[Z]=Q,!0)}),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),this.onPointerOverOut=this.onPointerOverOut.bind(this),this.onWheel=this.onWheel.bind(this)}static get defaultEventMode(){return this._defaultEventMode}init($){let{view:J,resolution:Z}=this.renderer;this.setTargetElement(J),this.resolution=Z,_._defaultEventMode=$.eventMode??"auto",Object.assign(this.features,$.eventFeatures??{}),this.rootBoundary.enableGlobalMoveEvents=this.features.globalMove}resolutionChange($){this.resolution=$}destroy(){this.setTargetElement(null),this.renderer=null}setCursor($){$=$||"default";let J=!0;if(globalThis.OffscreenCanvas&&this.domElement instanceof OffscreenCanvas&&(J=!1),this.currentCursor===$)return;this.currentCursor=$;let Z=this.cursorStyles[$];if(Z)switch(typeof Z){case"string":J&&(this.domElement.style.cursor=Z);break;case"function":Z($);break;case"object":J&&Object.assign(this.domElement.style,Z);break}else J&&typeof $=="string"&&!Object.prototype.hasOwnProperty.call(this.cursorStyles,$)&&(this.domElement.style.cursor=$)}get pointer(){return this.rootPointerEvent}onPointerDown($){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let J=this.normalizeToPointerData($);this.autoPreventDefault&&J[0].isNormalized&&($.cancelable||!("cancelable"in $))&&$.preventDefault();for(let Z=0,Q=J.length;Z<Q;Z++){let q=J[Z],K=this.bootstrapEvent(this.rootPointerEvent,q);this.rootBoundary.mapEvent(K)}this.setCursor(this.rootBoundary.cursor)}onPointerMove($){if(!this.features.move)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,I_.pointerMoved();let J=this.normalizeToPointerData($);for(let Z=0,Q=J.length;Z<Q;Z++){let q=this.bootstrapEvent(this.rootPointerEvent,J[Z]);this.rootBoundary.mapEvent(q)}this.setCursor(this.rootBoundary.cursor)}onPointerUp($){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let J=$.target;$.composedPath&&$.composedPath().length>0&&(J=$.composedPath()[0]);let Z=J!==this.domElement?"outside":"",Q=this.normalizeToPointerData($);for(let q=0,K=Q.length;q<K;q++){let V=this.bootstrapEvent(this.rootPointerEvent,Q[q]);V.type+=Z,this.rootBoundary.mapEvent(V)}this.setCursor(this.rootBoundary.cursor)}onPointerOverOut($){if(!this.features.click)return;this.rootBoundary.rootTarget=this.renderer.lastObjectRendered;let J=this.normalizeToPointerData($);for(let Z=0,Q=J.length;Z<Q;Z++){let q=this.bootstrapEvent(this.rootPointerEvent,J[Z]);this.rootBoundary.mapEvent(q)}this.setCursor(this.rootBoundary.cursor)}onWheel($){if(!this.features.wheel)return;let J=this.normalizeWheelEvent($);this.rootBoundary.rootTarget=this.renderer.lastObjectRendered,this.rootBoundary.mapEvent(J)}setTargetElement($){this.removeEvents(),this.domElement=$,I_.domElement=$,this.addEvents()}addEvents(){if(this.eventsAdded||!this.domElement)return;I_.addTickerListener();let $=this.domElement.style;$&&(globalThis.navigator.msPointerEnabled?($.msContentZooming="none",$.msTouchAction="none"):this.supportsPointerEvents&&($.touchAction="none")),this.supportsPointerEvents?(globalThis.document.addEventListener("pointermove",this.onPointerMove,!0),this.domElement.addEventListener("pointerdown",this.onPointerDown,!0),this.domElement.addEventListener("pointerleave",this.onPointerOverOut,!0),this.domElement.addEventListener("pointerover",this.onPointerOverOut,!0),globalThis.addEventListener("pointerup",this.onPointerUp,!0)):(globalThis.document.addEventListener("mousemove",this.onPointerMove,!0),this.domElement.addEventListener("mousedown",this.onPointerDown,!0),this.domElement.addEventListener("mouseout",this.onPointerOverOut,!0),this.domElement.addEventListener("mouseover",this.onPointerOverOut,!0),globalThis.addEventListener("mouseup",this.onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.addEventListener("touchstart",this.onPointerDown,!0),this.domElement.addEventListener("touchend",this.onPointerUp,!0),this.domElement.addEventListener("touchmove",this.onPointerMove,!0))),this.domElement.addEventListener("wheel",this.onWheel,{passive:!0,capture:!0}),this.eventsAdded=!0}removeEvents(){if(!this.eventsAdded||!this.domElement)return;I_.removeTickerListener();let $=this.domElement.style;globalThis.navigator.msPointerEnabled?($.msContentZooming="",$.msTouchAction=""):this.supportsPointerEvents&&($.touchAction=""),this.supportsPointerEvents?(globalThis.document.removeEventListener("pointermove",this.onPointerMove,!0),this.domElement.removeEventListener("pointerdown",this.onPointerDown,!0),this.domElement.removeEventListener("pointerleave",this.onPointerOverOut,!0),this.domElement.removeEventListener("pointerover",this.onPointerOverOut,!0),globalThis.removeEventListener("pointerup",this.onPointerUp,!0)):(globalThis.document.removeEventListener("mousemove",this.onPointerMove,!0),this.domElement.removeEventListener("mousedown",this.onPointerDown,!0),this.domElement.removeEventListener("mouseout",this.onPointerOverOut,!0),this.domElement.removeEventListener("mouseover",this.onPointerOverOut,!0),globalThis.removeEventListener("mouseup",this.onPointerUp,!0),this.supportsTouchEvents&&(this.domElement.removeEventListener("touchstart",this.onPointerDown,!0),this.domElement.removeEventListener("touchend",this.onPointerUp,!0),this.domElement.removeEventListener("touchmove",this.onPointerMove,!0))),this.domElement.removeEventListener("wheel",this.onWheel,!0),this.domElement=null,this.eventsAdded=!1}mapPositionToPoint($,J,Z){let Q=this.domElement.isConnected?this.domElement.getBoundingClientRect():{x:0,y:0,width:this.domElement.width,height:this.domElement.height,left:0,top:0},q=1/this.resolution;$.x=(J-Q.left)*(this.domElement.width/Q.width)*q,$.y=(Z-Q.top)*(this.domElement.height/Q.height)*q}normalizeToPointerData($){let J=[];if(this.supportsTouchEvents&&$ instanceof TouchEvent)for(let Z=0,Q=$.changedTouches.length;Z<Q;Z++){let q=$.changedTouches[Z];typeof q.button>"u"&&(q.button=0),typeof q.buttons>"u"&&(q.buttons=1),typeof q.isPrimary>"u"&&(q.isPrimary=$.touches.length===1&&$.type==="touchstart"),typeof q.width>"u"&&(q.width=q.radiusX||1),typeof q.height>"u"&&(q.height=q.radiusY||1),typeof q.tiltX>"u"&&(q.tiltX=0),typeof q.tiltY>"u"&&(q.tiltY=0),typeof q.pointerType>"u"&&(q.pointerType="touch"),typeof q.pointerId>"u"&&(q.pointerId=q.identifier||0),typeof q.pressure>"u"&&(q.pressure=q.force||0.5),typeof q.twist>"u"&&(q.twist=0),typeof q.tangentialPressure>"u"&&(q.tangentialPressure=0),typeof q.layerX>"u"&&(q.layerX=q.offsetX=q.clientX),typeof q.layerY>"u"&&(q.layerY=q.offsetY=q.clientY),q.isNormalized=!0,q.type=$.type,J.push(q)}else if(!globalThis.MouseEvent||$ instanceof MouseEvent&&(!this.supportsPointerEvents||!($ instanceof globalThis.PointerEvent))){let Z=$;typeof Z.isPrimary>"u"&&(Z.isPrimary=!0),typeof Z.width>"u"&&(Z.width=1),typeof Z.height>"u"&&(Z.height=1),typeof Z.tiltX>"u"&&(Z.tiltX=0),typeof Z.tiltY>"u"&&(Z.tiltY=0),typeof Z.pointerType>"u"&&(Z.pointerType="mouse"),typeof Z.pointerId>"u"&&(Z.pointerId=n2),typeof Z.pressure>"u"&&(Z.pressure=0.5),typeof Z.twist>"u"&&(Z.twist=0),typeof Z.tangentialPressure>"u"&&(Z.tangentialPressure=0),Z.isNormalized=!0,J.push(Z)}else J.push($);return J}normalizeWheelEvent($){let J=this.rootWheelEvent;return this.transferMouseData(J,$),J.deltaX=$.deltaX,J.deltaY=$.deltaY,J.deltaZ=$.deltaZ,J.deltaMode=$.deltaMode,this.mapPositionToPoint(J.screen,$.clientX,$.clientY),J.global.copyFrom(J.screen),J.offset.copyFrom(J.screen),J.nativeEvent=$,J.type=$.type,J}bootstrapEvent($,J){return $.originalEvent=null,$.nativeEvent=J,$.pointerId=J.pointerId,$.width=J.width,$.height=J.height,$.isPrimary=J.isPrimary,$.pointerType=J.pointerType,$.pressure=J.pressure,$.tangentialPressure=J.tangentialPressure,$.tiltX=J.tiltX,$.tiltY=J.tiltY,$.twist=J.twist,this.transferMouseData($,J),this.mapPositionToPoint($.screen,J.clientX,J.clientY),$.global.copyFrom($.screen),$.offset.copyFrom($.screen),$.isTrusted=J.isTrusted,$.type==="pointerleave"&&($.type="pointerout"),$.type.startsWith("mouse")&&($.type=$.type.replace("mouse","pointer")),$.type.startsWith("touch")&&($.type=l2[$.type]||$.type),$}transferMouseData($,J){$.isTrusted=J.isTrusted,$.srcElement=J.srcElement,$.timeStamp=performance.now(),$.type=J.type,$.altKey=J.altKey,$.button=J.button,$.buttons=J.buttons,$.client.x=J.clientX,$.client.y=J.clientY,$.ctrlKey=J.ctrlKey,$.metaKey=J.metaKey,$.movement.x=J.movementX,$.movement.y=J.movementY,$.page.x=J.pageX,$.page.y=J.pageY,$.relatedTarget=null,$.shiftKey=J.shiftKey}};W7.extension={name:"events",type:[b.RendererSystem,b.CanvasRendererSystem]},W7.defaultEventFeatures={move:!0,globalMove:!0,click:!0,wheel:!0};var _6=W7;O.add(_6);function lJ(_){return _==="dynamic"||_==="static"}var oJ={onclick:null,onmousedown:null,onmouseenter:null,onmouseleave:null,onmousemove:null,onglobalmousemove:null,onmouseout:null,onmouseover:null,onmouseup:null,onmouseupoutside:null,onpointercancel:null,onpointerdown:null,onpointerenter:null,onpointerleave:null,onpointermove:null,onglobalpointermove:null,onpointerout:null,onpointerover:null,onpointertap:null,onpointerup:null,onpointerupoutside:null,onrightclick:null,onrightdown:null,onrightup:null,onrightupoutside:null,ontap:null,ontouchcancel:null,ontouchend:null,ontouchendoutside:null,ontouchmove:null,onglobaltouchmove:null,ontouchstart:null,onwheel:null,_internalInteractive:void 0,get interactive(){return this._internalInteractive??lJ(_6.defaultEventMode)},set interactive(_){P.deprecation("7.2.0","Setting interactive is deprecated, use eventMode = 'none'/'passive'/'auto'/'static'/'dynamic' instead."),this._internalInteractive=_,this.eventMode=_?"static":"auto"},_internalEventMode:void 0,get eventMode(){return this._internalEventMode??_6.defaultEventMode},set eventMode(_){this._internalInteractive=lJ(_),this._internalEventMode=_},isInteractive(){return this.eventMode==="static"||this.eventMode==="dynamic"},interactiveChildren:!0,hitArea:null,addEventListener(_,$,J){let Z=typeof J=="boolean"&&J||typeof J=="object"&&J.capture,Q=typeof J=="object"?J.signal:void 0,q=typeof J=="object"?J.once===!0:!1,K=typeof $=="function"?void 0:$;_=Z?`${_}capture`:_;let V=typeof $=="function"?$:$.handleEvent,H=this;Q&&Q.addEventListener("abort",()=>{H.off(_,V,K)}),q?H.once(_,V,K):H.on(_,V,K)},removeEventListener(_,$,J){let Z=typeof J=="boolean"&&J||typeof J=="object"&&J.capture,Q=typeof $=="function"?void 0:$;_=Z?`${_}capture`:_,$=typeof $=="function"?$:$.handleEvent,this.off(_,$,Q)},dispatchEvent(_){if(!(_ instanceof E_))throw Error("DisplayObject cannot propagate events outside of the Federated Events API");return _.defaultPrevented=!1,_.path=null,_.target=this,_.manager.dispatchEvent(_),!_.defaultPrevented}};t.mixin(oJ);var k7={accessible:!1,accessibleTitle:null,accessibleHint:null,tabIndex:0,_accessibleActive:!1,_accessibleDiv:null,accessibleType:"button",accessiblePointerEvents:"auto",accessibleChildren:!0,renderId:-1};t.mixin(k7);var o2=9,N8=100,s2=0,i2=0,sJ=2,iJ=1,a2=-1000,r2=-1000,t2=2;class Y8{constructor(_){this.debug=!1,this._isActive=!1,this._isMobileAccessibility=!1,this.pool=[],this.renderId=0,this.children=[],this.androidUpdateCount=0,this.androidUpdateFrequency=500,this._hookDiv=null,(P.isMobile.tablet||P.isMobile.phone)&&this.createTouchHook();let $=document.createElement("div");$.style.width=`${N8}px`,$.style.height=`${N8}px`,$.style.position="absolute",$.style.top=`${s2}px`,$.style.left=`${i2}px`,$.style.zIndex=sJ.toString(),this.div=$,this.renderer=_,this._onKeyDown=this._onKeyDown.bind(this),this._onMouseMove=this._onMouseMove.bind(this),globalThis.addEventListener("keydown",this._onKeyDown,!1)}get isActive(){return this._isActive}get isMobileAccessibility(){return this._isMobileAccessibility}createTouchHook(){let _=document.createElement("button");_.style.width=`${iJ}px`,_.style.height=`${iJ}px`,_.style.position="absolute",_.style.top=`${a2}px`,_.style.left=`${r2}px`,_.style.zIndex=t2.toString(),_.style.backgroundColor="#FF0000",_.title="select to enable accessibility for this content",_.addEventListener("focus",()=>{this._isMobileAccessibility=!0,this.activate(),this.destroyTouchHook()}),document.body.appendChild(_),this._hookDiv=_}destroyTouchHook(){this._hookDiv&&(document.body.removeChild(this._hookDiv),this._hookDiv=null)}activate(){this._isActive||(this._isActive=!0,globalThis.document.addEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown,!1),this.renderer.on("postrender",this.update,this),this.renderer.view.parentNode?.appendChild(this.div))}deactivate(){!this._isActive||this._isMobileAccessibility||(this._isActive=!1,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.addEventListener("keydown",this._onKeyDown,!1),this.renderer.off("postrender",this.update),this.div.parentNode?.removeChild(this.div))}updateAccessibleObjects(_){if(!_.visible||!_.accessibleChildren)return;_.accessible&&_.isInteractive()&&(_._accessibleActive||this.addChild(_),_.renderId=this.renderId);let $=_.children;if($)for(let J=0;J<$.length;J++)this.updateAccessibleObjects($[J])}update(){let _=performance.now();if(P.isMobile.android.device&&_<this.androidUpdateCount||(this.androidUpdateCount=_+this.androidUpdateFrequency,!this.renderer.renderingToScreen))return;this.renderer.lastObjectRendered&&this.updateAccessibleObjects(this.renderer.lastObjectRendered);let{x:$,y:J,width:Z,height:Q}=this.renderer.view.getBoundingClientRect(),{width:q,height:K,resolution:V}=this.renderer,H=Z/q*V,w=Q/K*V,h=this.div;h.style.left=`${$}px`,h.style.top=`${J}px`,h.style.width=`${q}px`,h.style.height=`${K}px`;for(let z=0;z<this.children.length;z++){let X=this.children[z];if(X.renderId!==this.renderId)X._accessibleActive=!1,P.removeItems(this.children,z,1),this.div.removeChild(X._accessibleDiv),this.pool.push(X._accessibleDiv),X._accessibleDiv=null,z--;else{h=X._accessibleDiv;let{hitArea:W,worldTransform:G}=X;X.hitArea?(h.style.left=`${(G.tx+W.x*G.a)*H}px`,h.style.top=`${(G.ty+W.y*G.d)*w}px`,h.style.width=`${W.width*G.a*H}px`,h.style.height=`${W.height*G.d*w}px`):(W=X.getBounds(),this.capHitArea(W),h.style.left=`${W.x*H}px`,h.style.top=`${W.y*w}px`,h.style.width=`${W.width*H}px`,h.style.height=`${W.height*w}px`,h.title!==X.accessibleTitle&&X.accessibleTitle!==null&&(h.title=X.accessibleTitle),h.getAttribute("aria-label")!==X.accessibleHint&&X.accessibleHint!==null&&h.setAttribute("aria-label",X.accessibleHint)),(X.accessibleTitle!==h.title||X.tabIndex!==h.tabIndex)&&(h.title=X.accessibleTitle,h.tabIndex=X.tabIndex,this.debug&&this.updateDebugHTML(h))}}this.renderId++}updateDebugHTML(_){_.innerHTML=`type: ${_.type}</br> title : ${_.title}</br> tabIndex: ${_.tabIndex}`}capHitArea(_){_.x<0&&(_.width+=_.x,_.x=0),_.y<0&&(_.height+=_.y,_.y=0);let{width:$,height:J}=this.renderer;_.x+_.width>$&&(_.width=$-_.x),_.y+_.height>J&&(_.height=J-_.y)}addChild(_){let $=this.pool.pop();$||($=document.createElement("button"),$.style.width=`${N8}px`,$.style.height=`${N8}px`,$.style.backgroundColor=this.debug?"rgba(255,255,255,0.5)":"transparent",$.style.position="absolute",$.style.zIndex=sJ.toString(),$.style.borderStyle="none",navigator.userAgent.toLowerCase().includes("chrome")?$.setAttribute("aria-live","off"):$.setAttribute("aria-live","polite"),navigator.userAgent.match(/rv:.*Gecko\//)?$.setAttribute("aria-relevant","additions"):$.setAttribute("aria-relevant","text"),$.addEventListener("click",this._onClick.bind(this)),$.addEventListener("focus",this._onFocus.bind(this)),$.addEventListener("focusout",this._onFocusOut.bind(this))),$.style.pointerEvents=_.accessiblePointerEvents,$.type=_.accessibleType,_.accessibleTitle&&_.accessibleTitle!==null?$.title=_.accessibleTitle:(!_.accessibleHint||_.accessibleHint===null)&&($.title=`displayObject ${_.tabIndex}`),_.accessibleHint&&_.accessibleHint!==null&&$.setAttribute("aria-label",_.accessibleHint),this.debug&&this.updateDebugHTML($),_._accessibleActive=!0,_._accessibleDiv=$,$.displayObject=_,this.children.push(_),this.div.appendChild(_._accessibleDiv),_._accessibleDiv.tabIndex=_.tabIndex}_dispatchEvent(_,$){let{displayObject:J}=_.target,Z=this.renderer.events.rootBoundary,Q=Object.assign(new E_(Z),{target:J});Z.rootTarget=this.renderer.lastObjectRendered,$.forEach((q)=>Z.dispatchEvent(Q,q))}_onClick(_){this._dispatchEvent(_,["click","pointertap","tap"])}_onFocus(_){_.target.getAttribute("aria-live")||_.target.setAttribute("aria-live","assertive"),this._dispatchEvent(_,["mouseover"])}_onFocusOut(_){_.target.getAttribute("aria-live")||_.target.setAttribute("aria-live","polite"),this._dispatchEvent(_,["mouseout"])}_onKeyDown(_){_.keyCode===o2&&this.activate()}_onMouseMove(_){_.movementX===0&&_.movementY===0||this.deactivate()}destroy(){this.destroyTouchHook(),this.div=null,globalThis.document.removeEventListener("mousemove",this._onMouseMove,!0),globalThis.removeEventListener("keydown",this._onKeyDown),this.pool=null,this.children=null,this.renderer=null}}Y8.extension={name:"accessibility",type:[b.RendererPlugin,b.CanvasRendererPlugin]};O.add(Y8);var aJ=class _{constructor($){this.stage=new q0,$=Object.assign({forceCanvas:!1},$),this.renderer=Q7($),_._plugins.forEach((J)=>{J.init.call(this,$)})}render(){this.renderer.render(this.stage)}get view(){return this.renderer?.view}get screen(){return this.renderer?.screen}destroy($,J){let Z=_._plugins.slice(0);Z.reverse(),Z.forEach((Q)=>{Q.destroy.call(this)}),this.stage.destroy(J),this.stage=null,this.renderer.destroy($),this.renderer=null}};aJ._plugins=[];var U8=aJ;O.handleByList(b.Application,U8._plugins);class I8{static init(_){Object.defineProperty(this,"resizeTo",{set($){globalThis.removeEventListener("resize",this.queueResize),this._resizeTo=$,$&&(globalThis.addEventListener("resize",this.queueResize),this.resize())},get(){return this._resizeTo}}),this.queueResize=()=>{this._resizeTo&&(this.cancelResize(),this._resizeId=requestAnimationFrame(()=>this.resize()))},this.cancelResize=()=>{this._resizeId&&(cancelAnimationFrame(this._resizeId),this._resizeId=null)},this.resize=()=>{if(!this._resizeTo)return;this.cancelResize();let $,J;if(this._resizeTo===globalThis.window)$=globalThis.innerWidth,J=globalThis.innerHeight;else{let{clientWidth:Z,clientHeight:Q}=this._resizeTo;$=Z,J=Q}this.renderer.resize($,J),this.render()},this._resizeId=null,this._resizeTo=null,this.resizeTo=_.resizeTo||null}static destroy(){globalThis.removeEventListener("resize",this.queueResize),this.cancelResize(),this.cancelResize=null,this.queueResize=null,this.resizeTo=null,this.resize=null}}I8.extension=b.Application;O.add(I8);var rJ={loader:b.LoadParser,resolver:b.ResolveParser,cache:b.CacheParser,detection:b.DetectionParser};O.handle(b.Asset,(_)=>{let $=_.ref;Object.entries(rJ).filter(([J])=>!!$[J]).forEach(([J,Z])=>O.add(Object.assign($[J],{extension:$[J].extension??Z})))},(_)=>{let $=_.ref;Object.keys(rJ).filter((J)=>!!$[J]).forEach((J)=>O.remove($[J]))});class C7{constructor(_,$=!1){this._loader=_,this._assetList=[],this._isLoading=!1,this._maxConcurrent=1,this.verbose=$}add(_){_.forEach(($)=>{this._assetList.push($)}),this.verbose&&console.log("[BackgroundLoader] assets: ",this._assetList),this._isActive&&!this._isLoading&&this._next()}async _next(){if(this._assetList.length&&this._isActive){this._isLoading=!0;let _=[],$=Math.min(this._assetList.length,this._maxConcurrent);for(let J=0;J<$;J++)_.push(this._assetList.pop());await this._loader.load(_),this._isLoading=!1,this._next()}}get active(){return this._isActive}set active(_){this._isActive!==_&&(this._isActive=_,_&&!this._isLoading&&this._next())}}function d0(_,$){if(Array.isArray($)){for(let J of $)if(_.startsWith(`data:${J}`))return!0;return!1}return _.startsWith(`data:${$}`)}function B0(_,$){let J=_.split("?")[0],Z=P.path.extname(J).toLowerCase();return Array.isArray($)?$.includes(Z):Z===$}var D0=(_,$,J=!1)=>(Array.isArray(_)||(_=[_]),$?_.map((Z)=>typeof Z=="string"||J?$(Z):Z):_);var Y1=(_,$)=>{let J=$.split("?")[1];return J&&(_+=`?${J}`),_};function tJ(_,$,J,Z,Q){let q=$[J];for(let K=0;K<q.length;K++){let V=q[K];J<$.length-1?tJ(_.replace(Z[J],V),$,J+1,Z,Q):Q.push(_.replace(Z[J],V))}}function b8(_){let $=/\{(.*?)\}/g,J=_.match($),Z=[];if(J){let Q=[];J.forEach((q)=>{let K=q.substring(1,q.length-1).split(",");Q.push(K)}),tJ(_,Q,0,J,Z)}else Z.push(_);return Z}var c_=(_)=>!Array.isArray(_);class eJ{constructor(){this._parsers=[],this._cache=new Map,this._cacheMap=new Map}reset(){this._cacheMap.clear(),this._cache.clear()}has(_){return this._cache.has(_)}get(_){let $=this._cache.get(_);return $||console.warn(`[Assets] Asset id ${_} was not found in the Cache`),$}set(_,$){let J=D0(_),Z;for(let K=0;K<this.parsers.length;K++){let V=this.parsers[K];if(V.test($)){Z=V.getCacheableAssets(J,$);break}}Z||(Z={},J.forEach((K)=>{Z[K]=$}));let Q=Object.keys(Z),q={cacheKeys:Q,keys:J};if(J.forEach((K)=>{this._cacheMap.set(K,q)}),Q.forEach((K)=>{let V=Z?Z[K]:$;this._cache.has(K)&&this._cache.get(K)!==V&&console.warn("[Cache] already has key:",K),this._cache.set(K,Z[K])}),$ instanceof E){let K=$;J.forEach((V)=>{K.baseTexture!==E.EMPTY.baseTexture&&p.addToCache(K.baseTexture,V),E.addToCache(K,V)})}}remove(_){if(!this._cacheMap.has(_)){console.warn(`[Assets] Asset id ${_} was not found in the Cache`);return}let $=this._cacheMap.get(_);$.cacheKeys.forEach((J)=>{this._cache.delete(J)}),$.keys.forEach((J)=>{this._cacheMap.delete(J)})}get parsers(){return this._parsers}}var V_=new eJ;class N7{constructor(){this._parsers=[],this._parsersValidated=!1,this.parsers=new Proxy(this._parsers,{set:(_,$,J)=>(this._parsersValidated=!1,_[$]=J,!0)}),this.promiseCache={}}reset(){this._parsersValidated=!1,this.promiseCache={}}_getLoadPromiseAndParser(_,$){let J={promise:null,parser:null};return J.promise=(async()=>{let Z=null,Q=null;if($.loadParser&&(Q=this._parserHash[$.loadParser],Q||console.warn(`[Assets] specified load parser "${$.loadParser}" not found while loading ${_}`)),!Q){for(let q=0;q<this.parsers.length;q++){let K=this.parsers[q];if(K.load&&K.test?.(_,$,this)){Q=K;break}}if(!Q)return console.warn(`[Assets] ${_} could not be loaded as we don't know how to parse it, ensure the correct parser has been added`),null}Z=await Q.load(_,$,this),J.parser=Q;for(let q=0;q<this.parsers.length;q++){let K=this.parsers[q];K.parse&&K.parse&&await K.testParse?.(Z,$,this)&&(Z=await K.parse(Z,$,this)||Z,J.parser=K)}return Z})(),J}async load(_,$){this._parsersValidated||this._validateParsers();let J=0,Z={},Q=c_(_),q=D0(_,(H)=>({alias:[H],src:H})),K=q.length,V=q.map(async(H)=>{let w=P.path.toAbsolute(H.src);if(!Z[H.src])try{this.promiseCache[w]||(this.promiseCache[w]=this._getLoadPromiseAndParser(w,H)),Z[H.src]=await this.promiseCache[w].promise,$&&$(++J/K)}catch(h){throw delete this.promiseCache[w],delete Z[H.src],Error(`[Loader.load] Failed to load ${w}.
864
+ ${h}`)}});return await Promise.all(V),Q?Z[q[0].src]:Z}async unload(_){let $=D0(_,(J)=>({alias:[J],src:J})).map(async(J)=>{let Z=P.path.toAbsolute(J.src),Q=this.promiseCache[Z];if(Q){let q=await Q.promise;delete this.promiseCache[Z],Q.parser?.unload?.(q,J,this)}});await Promise.all($)}_validateParsers(){this._parsersValidated=!0,this._parserHash=this._parsers.filter((_)=>_.name).reduce((_,$)=>(_[$.name]&&console.warn(`[Assets] loadParser name conflict "${$.name}"`),{..._,[$.name]:$}),{})}}var H0=((_)=>(_[_.Low=0]="Low",_[_.Normal=1]="Normal",_[_.High=2]="High",_))(H0||{});var e2=".json",_q="application/json",Y7={extension:{type:b.LoadParser,priority:H0.Low},name:"loadJson",test(_){return d0(_,_q)||B0(_,e2)},async load(_){return await(await B.ADAPTER.fetch(_)).json()}};O.add(Y7);var $q=".txt",Jq="text/plain",U7={name:"loadTxt",extension:{type:b.LoadParser,priority:H0.Low},test(_){return d0(_,Jq)||B0(_,$q)},async load(_){return await(await B.ADAPTER.fetch(_)).text()}};O.add(U7);var Zq=["normal","bold","100","200","300","400","500","600","700","800","900"],Qq=[".ttf",".otf",".woff",".woff2"],qq=["font/ttf","font/otf","font/woff","font/woff2"],Kq=/^(--|-?[A-Z_])[0-9A-Z_-]*$/i;function I7(_){let $=P.path.extname(_),J=P.path.basename(_,$).replace(/(-|_)/g," ").toLowerCase().split(" ").map((q)=>q.charAt(0).toUpperCase()+q.slice(1)),Z=J.length>0;for(let q of J)if(!q.match(Kq)){Z=!1;break}let Q=J.join(" ");return Z||(Q=`"${Q.replace(/[\\"]/g,"\\$&")}"`),Q}var Vq=/^[0-9A-Za-z%:/?#\[\]@!\$&'()\*\+,;=\-._~]*$/;function Hq(_){return Vq.test(_)?_:encodeURI(_)}var b7={extension:{type:b.LoadParser,priority:H0.Low},name:"loadWebFont",test(_){return d0(_,qq)||B0(_,Qq)},async load(_,$){let J=B.ADAPTER.getFontFaceSet();if(J){let Z=[],Q=$.data?.family??I7(_),q=$.data?.weights?.filter((V)=>Zq.includes(V))??["normal"],K=$.data??{};for(let V=0;V<q.length;V++){let H=q[V],w=new FontFace(Q,`url(${Hq(_)})`,{...K,weight:H});await w.load(),J.add(w),Z.push(w)}return Z.length===1?Z[0]:Z}return console.warn("[loadWebFont] FontFace API is not supported. Skipping loading font"),null},unload(_){(Array.isArray(_)?_:[_]).forEach(($)=>B.ADAPTER.getFontFaceSet().delete($))}};O.add(b7);var o1=null;class $6{constructor(){o1||(o1=URL.createObjectURL(new Blob([`(function() {
865
865
  "use strict";
866
866
  const WHITE_PNG = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=";
867
867
  async function checkImageBitmap() {
@@ -904,8 +904,8 @@ ${h}`)}});return await Promise.all(V),Q?Z[q[0].src]:Z}async unload(_){let $=D0(_
904
904
  }
905
905
  };
906
906
  })();
907
- `],{type:"application/javascript"}))),this.worker=new Worker(s1)}}B8.revokeObjectURL=function(){s1&&(URL.revokeObjectURL(s1),s1=null)};var $Z=0,b9;class JZ{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise((_)=>{let{worker:$}=new $6;$.addEventListener("message",(J)=>{$.terminate(),$6.revokeObjectURL(),_(J.data)})}),this._isImageBitmapSupported)}loadImageBitmap(_){return this._run("loadImageBitmap",[_])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){b9===void 0&&(b9=navigator.hardwareConcurrency||4);let _=this.workerPool.pop();return!_&&this._createdWorkers<b9&&(this._createdWorkers++,_=new B8().worker,_.addEventListener("message",($)=>{this.complete($.data),this.returnWorker($.target),this.next()})),_}returnWorker(_){this.workerPool.push(_)}complete(_){_.error!==void 0?this.resolveHash[_.uuid].reject(_.error):this.resolveHash[_.uuid].resolve(_.data),this.resolveHash[_.uuid]=null}async _run(_,$){await this._initWorkers();let J=new Promise((Z,Q)=>{this.queue.push({id:_,arguments:$,resolve:Z,reject:Q})});return this.next(),J}next(){if(!this.queue.length)return;let _=this.getWorker();if(!_)return;let $=this.queue.pop(),J=$.id;this.resolveHash[$Z]={resolve:$.resolve,reject:$.reject},_.postMessage({data:$.arguments,uuid:$Z++,id:J})}}var B9=new JZ;function r0(_,$,J){_.resource.internal=!0;let Z=new E(_),Q=()=>{delete $.promiseCache[J],V_.has(J)&&V_.remove(J)};return Z.baseTexture.once("destroyed",()=>{J in $.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),Q())}),Z.once("destroyed",()=>{_.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),Q())}),Z}var Hq=[".jpeg",".jpg",".png",".webp",".avif"],wq=["image/jpeg","image/png","image/webp","image/avif"];async function F9(_){let $=await B.ADAPTER.fetch(_);if(!$.ok)throw Error(`[loadImageBitmap] Failed to fetch ${_}: ${$.status} ${$.statusText}`);let J=await $.blob();return await createImageBitmap(J)}var y_={name:"loadTextures",extension:{type:b.LoadParser,priority:H0.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(_){return d0(_,wq)||B0(_,Hq)},async load(_,$,J){let Z=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap,Q;Z?this.config.preferWorkers&&await B9.isImageBitmapSupported()?Q=await B9.loadImageBitmap(_):Q=await F9(_):Q=await new Promise((V,H)=>{let w=new Image;w.crossOrigin=this.config.crossOrigin,w.src=_,w.complete?V(w):(w.onload=()=>V(w),w.onerror=(h)=>H(h))});let q={...$.data};q.resolution??(q.resolution=P.getResolutionOfUrl(_)),Z&&q.resourceOptions?.ownsImageBitmap===void 0&&(q.resourceOptions={...q.resourceOptions},q.resourceOptions.ownsImageBitmap=!0);let K=new p(Q,q);return K.resource.src=_,r0(K,J,_)},unload(_){_.destroy(!0)}};O.add(y_);var hq=".svg",zq="image/svg+xml",O9={extension:{type:b.LoadParser,priority:H0.High},name:"loadSVG",test(_){return d0(_,zq)||B0(_,hq)},async testParse(_){return n1.test(_)},async parse(_,$,J){let Z=new n1(_,$?.data?.resourceOptions);await Z.load();let Q=new p(Z,{resolution:P.getResolutionOfUrl(_),...$?.data});return Q.resource.src=$.src,r0(Q,J,$.src)},async load(_,$){return(await B.ADAPTER.fetch(_)).text()},unload:y_.unload};O.add(O9);var Xq=[".mp4",".m4v",".webm",".ogv"],Gq=["video/mp4","video/webm","video/ogg"],j9={name:"loadVideo",extension:{type:b.LoadParser,priority:H0.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(_){return d0(_,Gq)||B0(_,Xq)},async load(_,$,J){let Z,Q=await(await B.ADAPTER.fetch(_)).blob(),q=URL.createObjectURL(Q);try{let K={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...$?.data?.resourceOptions,autoLoad:!0},V=new t5(q,K);await V.load();let H=new p(V,{alphaMode:await P.detectVideoAlphaMode(),resolution:P.getResolutionOfUrl(_),...$?.data});H.resource.src=_,Z=r0(H,J,_),Z.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(q)})}catch(K){throw URL.revokeObjectURL(q),K}return Z},unload(_){_.destroy(!0)}};O.add(j9);class L9{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(_,$)=>`${_}${this._bundleIdConnector}${$}`,extractAssetIdFromBundle:(_,$)=>$.replace(`${_}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(_){if(this._bundleIdConnector=_.connector??this._bundleIdConnector,this._createBundleAssetId=_.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=_.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(..._){_.forEach(($)=>{this._preferredOrder.push($),$.priority||($.priority=Object.keys($.params))}),this._resolverHash={}}set basePath(_){this._basePath=_}get basePath(){return this._basePath}set rootPath(_){this._rootPath=_}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(_){if(typeof _=="string")this._defaultSearchParams=_;else{let $=_;this._defaultSearchParams=Object.keys($).map((J)=>`${encodeURIComponent(J)}=${encodeURIComponent($[J])}`).join("&")}}getAlias(_){let{alias:$,name:J,src:Z,srcs:Q}=_;return D0($||J||Z||Q,(q)=>typeof q=="string"?q:Array.isArray(q)?q.map((K)=>K?.src??K?.srcs??K):q?.src||q?.srcs?q.src??q.srcs:q,!0)}addManifest(_){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=_,_.bundles.forEach(($)=>{this.addBundle($.name,$.assets)})}addBundle(_,$){let J=[];Array.isArray($)?$.forEach((Z)=>{let Q=Z.src??Z.srcs,q=Z.alias??Z.name,K;if(typeof q=="string"){let V=this._createBundleAssetId(_,q);J.push(V),K=[q,V]}else{let V=q.map((H)=>this._createBundleAssetId(_,H));J.push(...V),K=[...q,...V]}this.add({...Z,alias:K,src:Q})}):Object.keys($).forEach((Z)=>{let Q=[Z,this._createBundleAssetId(_,Z)];if(typeof $[Z]=="string")this.add({alias:Q,src:$[Z]});else if(Array.isArray($[Z]))this.add({alias:Q,src:$[Z]});else{let q=$[Z],K=q.src??q.srcs;this.add({...q,alias:Q,src:Array.isArray(K)?K:[K]})}J.push(...Q)}),this._bundles[_]=J}add(_,$,J,Z,Q){let q=[];typeof _=="string"||Array.isArray(_)&&typeof _[0]=="string"?(P.deprecation("7.2.0",`Assets.add now uses an object instead of individual parameters.
908
- Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),q.push({alias:_,src:$,data:J,format:Z,loadParser:Q})):Array.isArray(_)?q.push(..._):q.push(_);let K;K=(V)=>{this.hasKey(V)&&console.warn(`[Resolver] already has key: ${V} overwriting`)},D0(q).forEach((V)=>{let{src:H,srcs:w}=V,{data:h,format:z,loadParser:X}=V,W=D0(H||w).map((C)=>typeof C=="string"?b8(C):Array.isArray(C)?C:[C]),G=this.getAlias(V);Array.isArray(G)?G.forEach(K):K(G);let k=[];W.forEach((C)=>{C.forEach((Y)=>{let U={};if(typeof Y!="object"){U.src=Y;for(let N=0;N<this._parsers.length;N++){let I=this._parsers[N];if(I.test(Y)){U=I.parse(Y);break}}}else h=Y.data??h,z=Y.format??z,X=Y.loadParser??X,U={...U,...Y};if(!G)throw Error(`[Resolver] alias is undefined for this asset: ${U.src}`);U=this.buildResolvedAsset(U,{aliases:G,data:h,format:z,loadParser:X}),k.push(U)})}),G.forEach((C)=>{this._assetMap[C]=k})})}resolveBundle(_){let $=c_(_);_=D0(_);let J={};return _.forEach((Z)=>{let Q=this._bundles[Z];if(Q){let q=this.resolve(Q),K={};for(let V in q){let H=q[V];K[this._extractAssetIdFromBundle(Z,V)]=H}J[Z]=K}}),$?J[_[0]]:J}resolveUrl(_){let $=this.resolve(_);if(typeof _!="string"){let J={};for(let Z in $)J[Z]=$[Z].src;return J}return $.src}resolve(_){let $=c_(_);_=D0(_);let J={};return _.forEach((Z)=>{if(!this._resolverHash[Z])if(this._assetMap[Z]){let Q=this._assetMap[Z],q=Q[0],K=this._getPreferredOrder(Q);K?.priority.forEach((V)=>{K.params[V].forEach((H)=>{let w=Q.filter((h)=>h[V]?h[V]===H:!1);w.length&&(Q=w)})}),this._resolverHash[Z]=Q[0]??q}else this._resolverHash[Z]=this.buildResolvedAsset({alias:[Z],src:Z},{});J[Z]=this._resolverHash[Z]}),$?J[_[0]]:J}hasKey(_){return!!this._assetMap[_]}hasBundle(_){return!!this._bundles[_]}_getPreferredOrder(_){for(let $=0;$<_.length;$++){let J=_[0],Z=this._preferredOrder.find((Q)=>Q.params.format.includes(J.format));if(Z)return Z}return this._preferredOrder[0]}_appendDefaultSearchParams(_){if(!this._defaultSearchParams)return _;let $=/\?/.test(_)?"&":"?";return`${_}${$}${this._defaultSearchParams}`}buildResolvedAsset(_,$){let{aliases:J,data:Z,loadParser:Q,format:q}=$;return(this._basePath||this._rootPath)&&(_.src=P.path.toAbsolute(_.src,this._basePath,this._rootPath)),_.alias=J??_.alias??[_.src],_.src=this._appendDefaultSearchParams(_.src),_.data={...Z||{},..._.data},_.loadParser=Q??_.loadParser,_.format=q??_.format??P.path.extname(_.src).slice(1),_.srcs=_.src,_.name=_.alias,_}}class D9{constructor(){this._detections=[],this._initialized=!1,this.resolver=new L9,this.loader=new C9,this.cache=V_,this._backgroundLoader=new k9(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(_={}){if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,_.defaultSearchParams&&this.resolver.setDefaultSearchParams(_.defaultSearchParams),_.basePath&&(this.resolver.basePath=_.basePath),_.bundleIdentifier&&this.resolver.setBundleIdentifier(_.bundleIdentifier),_.manifest){let Q=_.manifest;typeof Q=="string"&&(Q=await this.load(Q)),this.resolver.addManifest(Q)}let $=_.texturePreference?.resolution??1,J=typeof $=="number"?[$]:$,Z=await this._detectFormats({preferredFormats:_.texturePreference?.format,skipDetections:_.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:Z,resolution:J}}),_.preferences&&this.setPreferences(_.preferences)}add(_,$,J,Z,Q){this.resolver.add(_,$,J,Z,Q)}async load(_,$){this._initialized||await this.init();let J=c_(_),Z=D0(_).map((K)=>{if(typeof K!="string"){let V=this.resolver.getAlias(K);return V.some((H)=>!this.resolver.hasKey(H))&&this.add(K),Array.isArray(V)?V[0]:V}return this.resolver.hasKey(K)||this.add({alias:K,src:K}),K}),Q=this.resolver.resolve(Z),q=await this._mapLoadToResolve(Q,$);return J?q[Z[0]]:q}addBundle(_,$){this.resolver.addBundle(_,$)}async loadBundle(_,$){this._initialized||await this.init();let J=!1;typeof _=="string"&&(J=!0,_=[_]);let Z=this.resolver.resolveBundle(_),Q={},q=Object.keys(Z),K=0,V=0,H=()=>{$?.(++K/V)},w=q.map((h)=>{let z=Z[h];return V+=Object.keys(z).length,this._mapLoadToResolve(z,H).then((X)=>{Q[h]=X})});return await Promise.all(w),J?Q[_[0]]:Q}async backgroundLoad(_){this._initialized||await this.init(),typeof _=="string"&&(_=[_]);let $=this.resolver.resolve(_);this._backgroundLoader.add(Object.values($))}async backgroundLoadBundle(_){this._initialized||await this.init(),typeof _=="string"&&(_=[_]);let $=this.resolver.resolveBundle(_);Object.values($).forEach((J)=>{this._backgroundLoader.add(Object.values(J))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(_){if(typeof _=="string")return V_.get(_);let $={};for(let J=0;J<_.length;J++)$[J]=V_.get(_[J]);return $}async _mapLoadToResolve(_,$){let J=Object.values(_),Z=Object.keys(_);this._backgroundLoader.active=!1;let Q=await this.loader.load(J,$);this._backgroundLoader.active=!0;let q={};return J.forEach((K,V)=>{let H=Q[K.src],w=[K.src];K.alias&&w.push(...K.alias),q[Z[V]]=H,V_.set(w,H)}),q}async unload(_){this._initialized||await this.init();let $=D0(_).map((Z)=>typeof Z!="string"?Z.src:Z),J=this.resolver.resolve($);await this._unloadFromResolved(J)}async unloadBundle(_){this._initialized||await this.init(),_=D0(_);let $=this.resolver.resolveBundle(_),J=Object.keys($).map((Z)=>this._unloadFromResolved($[Z]));await Promise.all(J)}async _unloadFromResolved(_){let $=Object.values(_);$.forEach((J)=>{V_.remove(J.src)}),await this.loader.unload($)}async _detectFormats(_){let $=[];_.preferredFormats&&($=Array.isArray(_.preferredFormats)?_.preferredFormats:[_.preferredFormats]);for(let J of _.detections)_.skipDetections||await J.test()?$=await J.add($):_.skipDetections||($=await J.remove($));return $=$.filter((J,Z)=>$.indexOf(J)===Z),$}get detections(){return this._detections}get preferWorkers(){return y_.config.preferWorkers}set preferWorkers(_){P.deprecation("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:_})}setPreferences(_){this.loader.parsers.forEach(($)=>{$.config&&Object.keys($.config).filter((J)=>(J in _)).forEach((J)=>{$.config[J]=_[J]})})}}var J6=new D9;O.handleByList(b.LoadParser,J6.loader.parsers).handleByList(b.ResolveParser,J6.resolver.parsers).handleByList(b.CacheParser,J6.cache.parsers).handleByList(b.DetectionParser,J6.detections);var A9={extension:b.CacheParser,test:(_)=>Array.isArray(_)&&_.every(($)=>$ instanceof E),getCacheableAssets:(_,$)=>{let J={};return _.forEach((Z)=>{$.forEach((Q,q)=>{J[Z+(q===0?"":q+1)]=Q})}),J}};O.add(A9);async function F8(_){if("Image"in globalThis)return new Promise(($)=>{let J=new Image;J.onload=()=>{$(!0)},J.onerror=()=>{$(!1)},J.src=_});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{let $=await(await fetch(_)).blob();await createImageBitmap($)}catch{return!1}return!0}return!1}var P9={extension:{type:b.DetectionParser,priority:1},test:async()=>F8("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async(_)=>[..._,"avif"],remove:async(_)=>_.filter(($)=>$!=="avif")};O.add(P9);var R9={extension:{type:b.DetectionParser,priority:0},test:async()=>F8("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async(_)=>[..._,"webp"],remove:async(_)=>_.filter(($)=>$!=="webp")};O.add(R9);var ZZ=["png","jpg","jpeg"],M9={extension:{type:b.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async(_)=>[..._,...ZZ],remove:async(_)=>_.filter(($)=>!ZZ.includes($))};O.add(M9);var Wq="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function i1(_){return Wq?!1:document.createElement("video").canPlayType(_)!==""}var f9={extension:{type:b.DetectionParser,priority:0},test:async()=>i1("video/webm"),add:async(_)=>[..._,"webm"],remove:async(_)=>_.filter(($)=>$!=="webm")};O.add(f9);var E9={extension:{type:b.DetectionParser,priority:0},test:async()=>i1("video/mp4"),add:async(_)=>[..._,"mp4","m4v"],remove:async(_)=>_.filter(($)=>$!=="mp4"&&$!=="m4v")};O.add(E9);var v9={extension:{type:b.DetectionParser,priority:0},test:async()=>i1("video/ogg"),add:async(_)=>[..._,"ogv"],remove:async(_)=>_.filter(($)=>$!=="ogv")};O.add(v9);var c9={extension:b.ResolveParser,test:y_.test,parse:(_)=>({resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:P.path.extname(_).slice(1),src:_})};O.add(c9);var N0=((_)=>(_[_.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",_[_.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",_[_.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",_[_.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",_[_.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",_[_.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",_[_.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",_[_.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",_[_.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",_[_.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",_[_.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",_[_.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",_[_.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",_[_.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",_[_.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",_[_.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",_[_.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",_[_.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",_[_.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",_[_.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",_[_.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",_[_.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",_[_.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",_[_.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",_[_.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",_[_.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",_[_.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",_[_.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",_[_.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",_[_.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",_[_.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",_))(N0||{}),o_={33776:0.5,33777:0.5,33778:1,33779:1,35916:0.5,35917:0.5,35918:1,35919:1,37488:0.5,37489:0.5,37490:1,37491:1,37492:0.5,37496:1,37493:0.5,37497:1,37494:0.5,37495:0.5,35840:0.5,35842:0.5,35841:0.25,35843:0.25,36196:0.5,35986:0.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};var B_,a1;function QZ(){a1={bptc:B_.getExtension("EXT_texture_compression_bptc"),astc:B_.getExtension("WEBGL_compressed_texture_astc"),etc:B_.getExtension("WEBGL_compressed_texture_etc"),s3tc:B_.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:B_.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:B_.getExtension("WEBGL_compressed_texture_pvrtc")||B_.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:B_.getExtension("WEBGL_compressed_texture_etc1"),atc:B_.getExtension("WEBGL_compressed_texture_atc")}}var y9={extension:{type:b.DetectionParser,priority:2},test:async()=>{let _=B.ADAPTER.createCanvas().getContext("webgl");return _?(B_=_,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async(_)=>{a1||QZ();let $=[];for(let J in a1)a1[J]&&$.push(J);return[...$,..._]},remove:async(_)=>(a1||QZ(),_.filter(($)=>!($ in a1)))};O.add(y9);class Z6 extends k_{constructor(_,$={width:1,height:1,autoLoad:!0}){let J,Z;typeof _=="string"?(J=_,Z=new Uint8Array):(J=null,Z=_),super(Z,$),this.origin=J,this.buffer=Z?new q1(Z):null,this._load=null,this.loaded=!1,this.origin!==null&&$.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(_){}load(){return this._load?this._load:(this._load=fetch(this.origin).then((_)=>_.blob()).then((_)=>_.arrayBuffer()).then((_)=>(this.data=new Uint32Array(_),this.buffer=new q1(_),this.loaded=!0,this.onBlobLoaded(_),this.update(),this)),this._load)}}class H_ extends Z6{constructor(_,$){super(_,$),this.format=$.format,this.levels=$.levels||1,this._width=$.width,this._height=$.height,this._extension=H_._formatToExtension(this.format),($.levelBuffers||this.buffer)&&(this._levelBuffers=$.levelBuffers||H_._createLevelBuffers(_ instanceof Uint8Array?_:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(_,$,J){let Z=_.gl;if(!_.context.extensions[this._extension])throw Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;Z.pixelStorei(Z.UNPACK_ALIGNMENT,4);for(let Q=0,q=this.levels;Q<q;Q++){let{levelID:K,levelWidth:V,levelHeight:H,levelBuffer:w}=this._levelBuffers[Q];Z.compressedTexImage2D(Z.TEXTURE_2D,K,this.format,V,H,0,w)}return!0}onBlobLoaded(){this._levelBuffers=H_._createLevelBuffers(this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height)}static _formatToExtension(_){if(_>=33776&&_<=33779)return"s3tc";if(_>=35916&&_<=35919)return"s3tc_sRGB";if(_>=37488&&_<=37497)return"etc";if(_>=35840&&_<=35843)return"pvrtc";if(_===36196)return"etc1";if(_===35986||_===35987||_===34798)return"atc";if(_>=36492&&_<=36495)return"bptc";if(_===37808)return"astc";throw Error(`Invalid (compressed) texture format given: ${_}`)}static _createLevelBuffers(_,$,J,Z,Q,q,K){let V=Array(J),H=_.byteOffset,w=q,h=K,z=w+Z-1&~(Z-1),X=h+Q-1&~(Q-1),W=z*X*o_[$];for(let G=0;G<J;G++)V[G]={levelID:G,levelWidth:J>1?w:z,levelHeight:J>1?h:X,levelBuffer:new Uint8Array(_.buffer,H,W)},H+=W,w=w>>1||1,h=h>>1||1,z=w+Z-1&~(Z-1),X=h+Q-1&~(Q-1),W=z*X*o_[$];return V}}var S9=4,O8=124,kq=32,qZ=20,Cq=542327876,j8={SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},Nq={SIZE:0,FLAGS:1,FOURCC:2,RGB_BITCOUNT:3,R_BIT_MASK:4,G_BIT_MASK:5,B_BIT_MASK:6,A_BIT_MASK:7},L8={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4},Yq=1,Uq=2,Iq=4,bq=64,Bq=512,Fq=131072,Oq=827611204,jq=861165636,Lq=894720068,Dq=808540228,Aq=4,Pq={[Oq]:N0.COMPRESSED_RGBA_S3TC_DXT1_EXT,[jq]:N0.COMPRESSED_RGBA_S3TC_DXT3_EXT,[Lq]:N0.COMPRESSED_RGBA_S3TC_DXT5_EXT},Rq={70:N0.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:N0.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:N0.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:N0.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:N0.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:N0.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:N0.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:N0.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:N0.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:N0.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:N0.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:N0.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:N0.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function D8(_){let $=new Uint32Array(_);if($[0]!==Cq)throw Error("Invalid DDS file magic word");let J=new Uint32Array(_,0,O8/Uint32Array.BYTES_PER_ELEMENT),Z=J[j8.HEIGHT],Q=J[j8.WIDTH],q=J[j8.MIPMAP_COUNT],K=new Uint32Array(_,j8.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,kq/Uint32Array.BYTES_PER_ELEMENT),V=K[Yq];if(V&Iq){let H=K[Nq.FOURCC];if(H!==Dq){let U=Pq[H],N=S9+O8,I=new Uint8Array(_,N);return[new H_(I,{format:U,width:Q,height:Z,levels:q})]}let w=S9+O8,h=new Uint32Array($.buffer,w,qZ/Uint32Array.BYTES_PER_ELEMENT),z=h[L8.DXGI_FORMAT],X=h[L8.RESOURCE_DIMENSION],W=h[L8.MISC_FLAG],G=h[L8.ARRAY_SIZE],k=Rq[z];if(k===void 0)throw Error(`DDSParser cannot parse texture data with DXGI format ${z}`);if(W===Aq)throw Error("DDSParser does not support cubemap textures");if(X===6)throw Error("DDSParser does not supported 3D texture data");let C=[],Y=S9+O8+qZ;if(G===1)C.push(new Uint8Array(_,Y));else{let U=o_[k],N=0,I=Q,f=Z;for(let D=0;D<q;D++){let L=Math.max(1,I+3&-4),v=Math.max(1,f+3&-4),m=L*v*U;N+=m,I=I>>>1,f=f>>>1}let y=Y;for(let D=0;D<G;D++)C.push(new Uint8Array(_,y,N)),y+=N}return C.map((U)=>new H_(U,{format:k,width:Q,height:Z,levels:q}))}throw V&bq?Error("DDSParser does not support uncompressed texture data."):V&Bq?Error("DDSParser does not supported YUV uncompressed texture data."):V&Fq?Error("DDSParser does not support single-channel (lumninance) texture data!"):V&Uq?Error("DDSParser does not support single-channel (alpha) texture data!"):Error("DDSParser failed to load a texture file due to an unknown reason!")}var KZ=[171,75,84,88,32,49,49,187,13,10,26,10],Mq=67305985,w_={FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},T9=64,A8={[g.UNSIGNED_BYTE]:1,[g.UNSIGNED_SHORT]:2,[g.INT]:4,[g.UNSIGNED_INT]:4,[g.FLOAT]:4,[g.HALF_FLOAT]:8},d9={[R.RGBA]:4,[R.RGB]:3,[R.RG]:2,[R.RED]:1,[R.LUMINANCE]:1,[R.LUMINANCE_ALPHA]:2,[R.ALPHA]:1},g9={[g.UNSIGNED_SHORT_4_4_4_4]:2,[g.UNSIGNED_SHORT_5_5_5_1]:2,[g.UNSIGNED_SHORT_5_6_5]:2};function P8(_,$,J=!1){let Z=new DataView($);if(!fq(_,Z))return null;let Q=Z.getUint32(w_.ENDIANNESS,!0)===Mq,q=Z.getUint32(w_.GL_TYPE,Q),K=Z.getUint32(w_.GL_FORMAT,Q),V=Z.getUint32(w_.GL_INTERNAL_FORMAT,Q),H=Z.getUint32(w_.PIXEL_WIDTH,Q),w=Z.getUint32(w_.PIXEL_HEIGHT,Q)||1,h=Z.getUint32(w_.PIXEL_DEPTH,Q)||1,z=Z.getUint32(w_.NUMBER_OF_ARRAY_ELEMENTS,Q)||1,X=Z.getUint32(w_.NUMBER_OF_FACES,Q),W=Z.getUint32(w_.NUMBER_OF_MIPMAP_LEVELS,Q),G=Z.getUint32(w_.BYTES_OF_KEY_VALUE_DATA,Q);if(w===0||h!==1)throw Error("Only 2D textures are supported");if(X!==1)throw Error("CubeTextures are not supported by KTXLoader yet!");if(z!==1)throw Error("WebGL does not support array textures");let k=4,C=4,Y=H+3&-4,U=w+3&-4,N=Array(z),I=H*w;q===0&&(I=Y*U);let f;if(q!==0?A8[q]?f=A8[q]*d9[K]:f=g9[q]:f=o_[V],f===void 0)throw Error("Unable to resolve the pixel format stored in the *.ktx file!");let y=J?vq(Z,G,Q):null,D=I*f,L=H,v=w,m=Y,F=U,M=T9+G;for(let j=0;j<W;j++){let A=Z.getUint32(M,Q),i=M+4;for(let a=0;a<z;a++){let T=N[a];T||(T=N[a]=Array(W)),T[j]={levelID:j,levelWidth:W>1||q!==0?L:m,levelHeight:W>1||q!==0?v:F,levelBuffer:new Uint8Array($,i,D)},i+=D}M+=A+4,M=M%4!==0?M+4-M%4:M,L=L>>1||1,v=v>>1||1,m=L+k-1&~(k-1),F=v+C-1&~(C-1),D=m*F*f}return q!==0?{uncompressed:N.map((j)=>{let A=j[0].levelBuffer,i=!1;return q===g.FLOAT?A=new Float32Array(j[0].levelBuffer.buffer,j[0].levelBuffer.byteOffset,j[0].levelBuffer.byteLength/4):q===g.UNSIGNED_INT?(i=!0,A=new Uint32Array(j[0].levelBuffer.buffer,j[0].levelBuffer.byteOffset,j[0].levelBuffer.byteLength/4)):q===g.INT&&(i=!0,A=new Int32Array(j[0].levelBuffer.buffer,j[0].levelBuffer.byteOffset,j[0].levelBuffer.byteLength/4)),{resource:new k_(A,{width:j[0].levelWidth,height:j[0].levelHeight}),type:q,format:i?Eq(K):K}}),kvData:y}:{compressed:N.map((j)=>new H_(null,{format:V,width:H,height:w,levels:W,levelBuffers:j})),kvData:y}}function fq(_,$){for(let J=0;J<KZ.length;J++)if($.getUint8(J)!==KZ[J])return console.error(`${_} is not a valid *.ktx file!`),!1;return!0}function Eq(_){switch(_){case R.RGBA:return R.RGBA_INTEGER;case R.RGB:return R.RGB_INTEGER;case R.RG:return R.RG_INTEGER;case R.RED:return R.RED_INTEGER;default:return _}}function vq(_,$,J){let Z=new Map,Q=0;for(;Q<$;){let q=_.getUint32(T9+Q,J),K=T9+Q+4,V=3-(q+3)%4;if(q===0||q>$-Q){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let H=0;for(;H<q&&_.getUint8(K+H)!==0;H++);if(H===-1){console.error("KTXLoader: Failed to find null byte terminating kvData key");break}let w=new TextDecoder().decode(new Uint8Array(_.buffer,K,H)),h=new DataView(_.buffer,K+H+1,q-H-1);Z.set(w,h),Q+=4+q+V}return Z}var p9={extension:{type:b.LoadParser,priority:H0.High},name:"loadDDS",test(_){return B0(_,".dds")},async load(_,$,J){let Z=await(await B.ADAPTER.fetch(_)).arrayBuffer(),Q=D8(Z).map((q)=>{let K=new p(q,{mipmap:F0.OFF,alphaMode:K0.NO_PREMULTIPLIED_ALPHA,resolution:P.getResolutionOfUrl(_),...$.data});return r0(K,J,_)});return Q.length===1?Q[0]:Q},unload(_){Array.isArray(_)?_.forEach(($)=>$.destroy(!0)):_.destroy(!0)}};O.add(p9);var x9={extension:{type:b.LoadParser,priority:H0.High},name:"loadKTX",test(_){return B0(_,".ktx")},async load(_,$,J){let Z=await(await B.ADAPTER.fetch(_)).arrayBuffer(),{compressed:Q,uncompressed:q,kvData:K}=P8(_,Z),V=Q??q,H={mipmap:F0.OFF,alphaMode:K0.NO_PREMULTIPLIED_ALPHA,resolution:P.getResolutionOfUrl(_),...$.data},w=V.map((h)=>{V===q&&Object.assign(H,{type:h.type,format:h.format});let z=h.resource??h,X=new p(z,H);return X.ktxKeyValueData=K,r0(X,J,_)});return w.length===1?w[0]:w},unload(_){Array.isArray(_)?_.forEach(($)=>$.destroy(!0)):_.destroy(!0)}};O.add(x9);var cq=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],m9={extension:b.ResolveParser,test:(_)=>{let $=P.path.extname(_).slice(1);return["basis","ktx","dds"].includes($)},parse:(_)=>{let $=_.split("."),J=$.pop();if(["ktx","dds"].includes(J)){let Z=$.pop();if(cq.includes(Z))return{resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:Z,src:_}}return{resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:J,src:_}}};O.add(m9);var R8=new x,yq=4,VZ=class _{constructor($){this.renderer=$,this._rendererPremultipliedAlpha=!1}contextChange(){let $=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!($&&$.alpha&&$.premultipliedAlpha)}async image($,J,Z,Q){let q=new Image;return q.src=await this.base64($,J,Z,Q),q}async base64($,J,Z,Q){let q=this.canvas($,Q);if(q.toBlob!==void 0)return new Promise((K,V)=>{q.toBlob((H)=>{if(!H){V(Error("ICanvas.toBlob failed!"));return}let w=new FileReader;w.onload=()=>K(w.result),w.onerror=V,w.readAsDataURL(H)},J,Z)});if(q.toDataURL!==void 0)return q.toDataURL(J,Z);if(q.convertToBlob!==void 0){let K=await q.convertToBlob({type:J,quality:Z});return new Promise((V,H)=>{let w=new FileReader;w.onload=()=>V(w.result),w.onerror=H,w.readAsDataURL(K)})}throw Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas($,J){let{pixels:Z,width:Q,height:q,flipY:K,premultipliedAlpha:V}=this._rawPixels($,J);K&&_._flipY(Z,Q,q),V&&_._unpremultiplyAlpha(Z);let H=new P.CanvasRenderTarget(Q,q,1),w=new ImageData(new Uint8ClampedArray(Z.buffer),Q,q);return H.context.putImageData(w,0,0),H.canvas}pixels($,J){let{pixels:Z,width:Q,height:q,flipY:K,premultipliedAlpha:V}=this._rawPixels($,J);return K&&_._flipY(Z,Q,q),V&&_._unpremultiplyAlpha(Z),Z}_rawPixels($,J){let Z=this.renderer;if(!Z)throw Error("The Extract has already been destroyed");let Q,q=!1,K=!1,V,H=!1;$&&($ instanceof a0?V=$:(V=Z.generateTexture($,{region:J,resolution:Z.resolution,multisample:Z.multisample}),H=!0,J&&(R8.width=J.width,R8.height=J.height,J=R8)));let w=Z.gl;if(V){if(Q=V.baseTexture.resolution,J=J??V.frame,q=!1,K=V.baseTexture.alphaMode>0&&V.baseTexture.format===R.RGBA,!H){Z.renderTexture.bind(V);let W=V.framebuffer.glFramebuffers[Z.CONTEXT_UID];W.blitFramebuffer&&Z.framebuffer.bind(W.blitFramebuffer)}}else Q=Z.resolution,J||(J=R8,J.width=Z.width/Q,J.height=Z.height/Q),q=!0,K=this._rendererPremultipliedAlpha,Z.renderTexture.bind();let h=Math.max(Math.round(J.width*Q),1),z=Math.max(Math.round(J.height*Q),1),X=new Uint8Array(yq*h*z);return w.readPixels(Math.round(J.x*Q),Math.round(J.y*Q),h,z,w.RGBA,w.UNSIGNED_BYTE,X),H&&V?.destroy(!0),{pixels:X,width:h,height:z,flipY:q,premultipliedAlpha:K}}destroy(){this.renderer=null}static _flipY($,J,Z){let Q=J<<2,q=Z>>1,K=new Uint8Array(Q);for(let V=0;V<q;V++){let H=V*Q,w=(Z-V-1)*Q;K.set($.subarray(H,H+Q)),$.copyWithin(H,w,w+Q),$.set(K,w)}}static _unpremultiplyAlpha($){$ instanceof Uint8ClampedArray&&($=new Uint8Array($.buffer));let J=$.length;for(let Z=0;Z<J;Z+=4){let Q=$[Z+3];if(Q!==0){let q=255.001/Q;$[Z]=$[Z]*q+0.5,$[Z+1]=$[Z+1]*q+0.5,$[Z+2]=$[Z+2]*q+0.5}}}};VZ.extension={name:"extract",type:b.RendererSystem};var HZ=VZ;O.add(HZ);var U1={build(_){let $=_.points,J,Z,Q,q,K,V;if(_.type===$0.CIRC){let G=_.shape;J=G.x,Z=G.y,K=V=G.radius,Q=q=0}else if(_.type===$0.ELIP){let G=_.shape;J=G.x,Z=G.y,K=G.width,V=G.height,Q=q=0}else{let G=_.shape,k=G.width/2,C=G.height/2;J=G.x+k,Z=G.y+C,K=V=Math.max(0,Math.min(G.radius,Math.min(k,C))),Q=k-K,q=C-V}if(!(K>=0&&V>=0&&Q>=0&&q>=0)){$.length=0;return}let H=Math.ceil(2.3*Math.sqrt(K+V)),w=H*8+(Q?4:0)+(q?4:0);if($.length=w,w===0)return;if(H===0){$.length=8,$[0]=$[6]=J+Q,$[1]=$[3]=Z+q,$[2]=$[4]=J-Q,$[5]=$[7]=Z-q;return}let h=0,z=H*4+(Q?2:0)+2,X=z,W=w;{let G=Q+K,k=q,C=J+G,Y=J-G,U=Z+k;if($[h++]=C,$[h++]=U,$[--z]=U,$[--z]=Y,q){let N=Z-k;$[X++]=Y,$[X++]=N,$[--W]=N,$[--W]=C}}for(let G=1;G<H;G++){let k=Math.PI/2*(G/H),C=Q+Math.cos(k)*K,Y=q+Math.sin(k)*V,U=J+C,N=J-C,I=Z+Y,f=Z-Y;$[h++]=U,$[h++]=I,$[--z]=I,$[--z]=N,$[X++]=N,$[X++]=f,$[--W]=f,$[--W]=U}{let G=Q,k=q+V,C=J+G,Y=J-G,U=Z+k,N=Z-k;$[h++]=C,$[h++]=U,$[--W]=N,$[--W]=C,Q&&($[h++]=Y,$[h++]=U,$[--W]=N,$[--W]=Y)}},triangulate(_,$){let J=_.points,Z=$.points,Q=$.indices;if(J.length===0)return;let q=Z.length/2,K=q,V,H;if(_.type!==$0.RREC){let h=_.shape;V=h.x,H=h.y}else{let h=_.shape;V=h.x+h.width/2,H=h.y+h.height/2}let w=_.matrix;Z.push(_.matrix?w.a*V+w.c*H+w.tx:V,_.matrix?w.b*V+w.d*H+w.ty:H),q++,Z.push(J[0],J[1]);for(let h=2;h<J.length;h+=2)Z.push(J[h],J[h+1]),Q.push(q++,K,q);Q.push(K+1,K,q)}};function wZ(_,$=!1){let J=_.length;if(J<6)return;let Z=0;for(let Q=0,q=_[J-2],K=_[J-1];Q<J;Q+=2){let V=_[Q],H=_[Q+1];Z+=(V-q)*(H+K),q=V,K=H}if(!$&&Z>0||$&&Z<=0){let Q=J/2;for(let q=Q+Q%2;q<J;q+=2){let K=J-q-2,V=J-q-1,H=q,w=q+1;[_[K],_[H]]=[_[H],_[K]],[_[V],_[w]]=[_[w],_[V]]}}}var Q6={build(_){_.points=_.shape.points.slice()},triangulate(_,$){let{points:J,holes:Z}=_,Q=$.points,q=$.indices;if(J.length>=6){wZ(J,!1);let K=[];for(let w=0;w<Z.length;w++){let h=Z[w];wZ(h.points,!0),K.push(J.length/2),J=J.concat(h.points)}let V=P.earcut(J,K,2);if(!V)return;let H=Q.length/2;for(let w=0;w<V.length;w+=3)q.push(V[w]+H),q.push(V[w+1]+H),q.push(V[w+2]+H);for(let w=0;w<J.length;w++)Q.push(J[w])}}};var u9={build(_){let $=_.shape,J=$.x,Z=$.y,Q=$.width,q=$.height,K=_.points;K.length=0,Q>=0&&q>=0&&K.push(J,Z,J+Q,Z,J+Q,Z+q,J,Z+q)},triangulate(_,$){let J=_.points,Z=$.points;if(J.length===0)return;let Q=Z.length/2;Z.push(J[0],J[1],J[2],J[3],J[6],J[7],J[4],J[5]),$.indices.push(Q,Q+1,Q+2,Q+1,Q+2,Q+3)}};var n9={build(_){U1.build(_)},triangulate(_,$){U1.triangulate(_,$)}};var R0=((_)=>(_.MITER="miter",_.BEVEL="bevel",_.ROUND="round",_))(R0||{}),t0=((_)=>(_.BUTT="butt",_.ROUND="round",_.SQUARE="square",_))(t0||{}),e0={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:0.0001,_segmentsCount(_,$=20){if(!this.adaptive||!_||isNaN(_))return $;let J=Math.ceil(_/this.maxLength);return J<this.minSegments?J=this.minSegments:J>this.maxSegments&&(J=this.maxSegments),J}};class r1{static curveTo(_,$,J,Z,Q,q){let K=q[q.length-2],V=q[q.length-1]-$,H=K-_,w=Z-$,h=J-_,z=Math.abs(V*h-H*w);if(z<0.00000001||Q===0)return(q[q.length-2]!==_||q[q.length-1]!==$)&&q.push(_,$),null;let X=V*V+H*H,W=w*w+h*h,G=V*w+H*h,k=Q*Math.sqrt(X)/z,C=Q*Math.sqrt(W)/z,Y=k*G/X,U=C*G/W,N=k*h+C*H,I=k*w+C*V,f=H*(C+Y),y=V*(C+Y),D=h*(k+U),L=w*(k+U),v=Math.atan2(y-I,f-N),m=Math.atan2(L-I,D-N);return{cx:N+_,cy:I+$,radius:Q,startAngle:v,endAngle:m,anticlockwise:H*w>h*V}}static arc(_,$,J,Z,Q,q,K,V,H){let w=K-q,h=e0._segmentsCount(Math.abs(w)*Q,Math.ceil(Math.abs(w)/p_)*40),z=w/(h*2),X=z*2,W=Math.cos(z),G=Math.sin(z),k=h-1,C=k%1/k;for(let Y=0;Y<=k;++Y){let U=Y+C*Y,N=z+q+X*U,I=Math.cos(N),f=-Math.sin(N);H.push((W*I+G*f)*Q+J,(W*-f+G*I)*Q+Z)}}}class q6{constructor(){this.reset()}begin(_,$,J){this.reset(),this.style=_,this.start=$,this.attribStart=J}end(_,$){this.attribSize=$-this.attribStart,this.size=_-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class t1{static curveLength(_,$,J,Z,Q,q,K,V){let H=0,w=0,h=0,z=0,X=0,W=0,G=0,k=0,C=0,Y=0,U=0,N=_,I=$;for(let f=1;f<=10;++f)w=f/10,h=w*w,z=h*w,X=1-w,W=X*X,G=W*X,k=G*_+3*W*w*J+3*X*h*Q+z*K,C=G*$+3*W*w*Z+3*X*h*q+z*V,Y=N-k,U=I-C,N=k,I=C,H+=Math.sqrt(Y*Y+U*U);return H}static curveTo(_,$,J,Z,Q,q,K){let V=K[K.length-2],H=K[K.length-1];K.length-=2;let w=e0._segmentsCount(t1.curveLength(V,H,_,$,J,Z,Q,q)),h=0,z=0,X=0,W=0,G=0;K.push(V,H);for(let k=1,C=0;k<=w;++k)C=k/w,h=1-C,z=h*h,X=z*h,W=C*C,G=W*C,K.push(X*V+3*z*C*_+3*h*W*J+G*Q,X*H+3*z*C*$+3*h*W*Z+G*q)}}function hZ(_,$,J,Z,Q,q,K,V){let H=_-J*Q,w=$-Z*Q,h=_+J*q,z=$+Z*q,X,W;K?(X=Z,W=-J):(X=-Z,W=J);let G=H+X,k=w+W,C=h+X,Y=z+W;return V.push(G,k,C,Y),2}function I1(_,$,J,Z,Q,q,K,V){let H=J-_,w=Z-$,h=Math.atan2(H,w),z=Math.atan2(Q-_,q-$);V&&h<z?h+=Math.PI*2:!V&&h>z&&(z+=Math.PI*2);let X=h,W=z-h,G=Math.abs(W),k=Math.sqrt(H*H+w*w),C=(15*G*Math.sqrt(k)/Math.PI>>0)+1,Y=W/C;if(X+=Y,V){K.push(_,$,J,Z);for(let U=1,N=X;U<C;U++,N+=Y)K.push(_,$,_+Math.sin(N)*k,$+Math.cos(N)*k);K.push(_,$,Q,q)}else{K.push(J,Z,_,$);for(let U=1,N=X;U<C;U++,N+=Y)K.push(_+Math.sin(N)*k,$+Math.cos(N)*k,_,$);K.push(Q,q,_,$)}return C*2}function Sq(_,$){let J=_.shape,Z=_.points||J.points.slice(),Q=$.closePointEps;if(Z.length===0)return;let q=_.lineStyle,K=new u(Z[0],Z[1]),V=new u(Z[Z.length-2],Z[Z.length-1]),H=J.type!==$0.POLY||J.closeStroke,w=Math.abs(K.x-V.x)<Q&&Math.abs(K.y-V.y)<Q;if(H){Z=Z.slice(),w&&(Z.pop(),Z.pop(),V.set(Z[Z.length-2],Z[Z.length-1]));let T=(K.x+V.x)*0.5,h0=(V.y+K.y)*0.5;Z.unshift(T,h0),Z.push(T,h0)}let h=$.points,z=Z.length/2,X=Z.length,W=h.length/2,G=q.width/2,k=G*G,C=q.miterLimit*q.miterLimit,Y=Z[0],U=Z[1],N=Z[2],I=Z[3],f=0,y=0,D=-(U-I),L=Y-N,v=0,m=0,F=Math.sqrt(D*D+L*L);D/=F,L/=F,D*=G,L*=G;let M=q.alignment,j=(1-M)*2,A=M*2;H||(q.cap===t0.ROUND?X+=I1(Y-D*(j-A)*0.5,U-L*(j-A)*0.5,Y-D*j,U-L*j,Y+D*A,U+L*A,h,!0)+2:q.cap===t0.SQUARE&&(X+=hZ(Y,U,D,L,j,A,!0,h))),h.push(Y-D*j,U-L*j,Y+D*A,U+L*A);for(let T=1;T<z-1;++T){Y=Z[(T-1)*2],U=Z[(T-1)*2+1],N=Z[T*2],I=Z[T*2+1],f=Z[(T+1)*2],y=Z[(T+1)*2+1],D=-(U-I),L=Y-N,F=Math.sqrt(D*D+L*L),D/=F,L/=F,D*=G,L*=G,v=-(I-y),m=N-f,F=Math.sqrt(v*v+m*m),v/=F,m/=F,v*=G,m*=G;let h0=N-Y,G0=U-I,r=N-f,h5=y-I,M4=h0*r+G0*h5,C6=G0*r-h5*h0,z5=C6<0;if(Math.abs(C6)<0.001*Math.abs(M4)){h.push(N-D*j,I-L*j,N+D*A,I+L*A),M4>=0&&(q.join===R0.ROUND?X+=I1(N,I,N-D*j,I-L*j,N-v*j,I-m*j,h,!1)+4:X+=2,h.push(N-v*A,I-m*A,N+v*j,I+m*j));continue}let f4=(-D+Y)*(-L+I)-(-D+N)*(-L+U),E4=(-v+f)*(-m+I)-(-v+N)*(-m+y),N6=(h0*E4-r*f4)/C6,Y6=(h5*f4-G0*E4)/C6,v4=(N6-N)*(N6-N)+(Y6-I)*(Y6-I),e_=N+(N6-N)*j,_1=I+(Y6-I)*j,$1=N-(N6-N)*A,J1=I-(Y6-I)*A,hQ=Math.min(h0*h0+G0*G0,r*r+h5*h5),c4=z5?j:A,zQ=hQ+c4*c4*k,XQ=v4<=zQ,U6=q.join;if(U6===R0.MITER&&v4/k>C&&(U6=R0.BEVEL),XQ)switch(U6){case R0.MITER:{h.push(e_,_1,$1,J1);break}case R0.BEVEL:{z5?h.push(e_,_1,N+D*A,I+L*A,e_,_1,N+v*A,I+m*A):h.push(N-D*j,I-L*j,$1,J1,N-v*j,I-m*j,$1,J1),X+=2;break}case R0.ROUND:{z5?(h.push(e_,_1,N+D*A,I+L*A),X+=I1(N,I,N+D*A,I+L*A,N+v*A,I+m*A,h,!0)+4,h.push(e_,_1,N+v*A,I+m*A)):(h.push(N-D*j,I-L*j,$1,J1),X+=I1(N,I,N-D*j,I-L*j,N-v*j,I-m*j,h,!1)+4,h.push(N-v*j,I-m*j,$1,J1));break}}else{switch(h.push(N-D*j,I-L*j,N+D*A,I+L*A),U6){case R0.MITER:{z5?h.push($1,J1,$1,J1):h.push(e_,_1,e_,_1),X+=2;break}case R0.ROUND:{z5?X+=I1(N,I,N+D*A,I+L*A,N+v*A,I+m*A,h,!0)+2:X+=I1(N,I,N-D*j,I-L*j,N-v*j,I-m*j,h,!1)+2;break}}h.push(N-v*j,I-m*j,N+v*A,I+m*A),X+=2}}Y=Z[(z-2)*2],U=Z[(z-2)*2+1],N=Z[(z-1)*2],I=Z[(z-1)*2+1],D=-(U-I),L=Y-N,F=Math.sqrt(D*D+L*L),D/=F,L/=F,D*=G,L*=G,h.push(N-D*j,I-L*j,N+D*A,I+L*A),H||(q.cap===t0.ROUND?X+=I1(N-D*(j-A)*0.5,I-L*(j-A)*0.5,N-D*j,I-L*j,N+D*A,I+L*A,h,!1)+2:q.cap===t0.SQUARE&&(X+=hZ(N,I,D,L,j,A,!1,h)));let i=$.indices,a=e0.epsilon*e0.epsilon;for(let T=W;T<X+W-2;++T)Y=h[T*2],U=h[T*2+1],N=h[(T+1)*2],I=h[(T+1)*2+1],f=h[(T+2)*2],y=h[(T+2)*2+1],!(Math.abs(Y*(I-y)+N*(y-U)+f*(U-I))<a)&&i.push(T,T+1,T+2)}function Tq(_,$){let J=0,Z=_.shape,Q=_.points||Z.points,q=Z.type!==$0.POLY||Z.closeStroke;if(Q.length===0)return;let{points:K,indices:V}=$,H=Q.length/2,w=K.length/2,h=w;for(K.push(Q[0],Q[1]),J=1;J<H;J++)K.push(Q[J*2],Q[J*2+1]),V.push(h,h+1),h++;q&&V.push(h,w)}function K6(_,$){_.lineStyle.native?Tq(_,$):Sq(_,$)}class e1{static curveLength(_,$,J,Z,Q,q){let K=_-2*J+Q,V=$-2*Z+q,H=2*J-2*_,w=2*Z-2*$,h=4*(K*K+V*V),z=4*(K*H+V*w),X=H*H+w*w,W=2*Math.sqrt(h+z+X),G=Math.sqrt(h),k=2*h*G,C=2*Math.sqrt(X),Y=z/G;return(k*W+G*z*(W-C)+(4*X*h-z*z)*Math.log((2*G+Y+W)/(Y+C)))/(4*k)}static curveTo(_,$,J,Z,Q){let q=Q[Q.length-2],K=Q[Q.length-1],V=e0._segmentsCount(e1.curveLength(q,K,_,$,J,Z)),H=0,w=0;for(let h=1;h<=V;++h){let z=h/V;H=q+(_-q)*z,w=K+($-K)*z,Q.push(H+(_+(J-_)*z-H)*z,w+($+(Z-$)*z-w)*z)}}}var V6={[$0.POLY]:Q6,[$0.CIRC]:U1,[$0.ELIP]:U1,[$0.RECT]:u9,[$0.RREC]:n9},M8=[],_5=[];class $5{constructor(_,$=null,J=null,Z=null){this.points=[],this.holes=[],this.shape=_,this.lineStyle=J,this.fillStyle=$,this.matrix=Z,this.type=_.type}clone(){return new $5(this.shape,this.fillStyle,this.lineStyle,this.matrix)}destroy(){this.shape=null,this.holes.length=0,this.holes=null,this.points.length=0,this.points=null,this.lineStyle=null,this.fillStyle=null}}var J5=new u,zZ=class _ extends y1{constructor(){super(),this.closePointEps=0.0001,this.boundsPadding=0,this.uvsFloat32=null,this.indicesUint16=null,this.batchable=!1,this.points=[],this.colors=[],this.uvs=[],this.indices=[],this.textureIds=[],this.graphicsData=[],this.drawCalls=[],this.batchDirty=-1,this.batches=[],this.dirty=0,this.cacheDirty=-1,this.clearDirty=0,this.shapeIndex=0,this._bounds=new f_,this.boundsDirty=-1}get bounds(){return this.updateBatches(),this.boundsDirty!==this.dirty&&(this.boundsDirty=this.dirty,this.calculateBounds()),this._bounds}invalidate(){this.boundsDirty=-1,this.dirty++,this.batchDirty++,this.shapeIndex=0,this.points.length=0,this.colors.length=0,this.uvs.length=0,this.indices.length=0,this.textureIds.length=0;for(let $=0;$<this.drawCalls.length;$++)this.drawCalls[$].texArray.clear(),_5.push(this.drawCalls[$]);this.drawCalls.length=0;for(let $=0;$<this.batches.length;$++){let J=this.batches[$];J.reset(),M8.push(J)}this.batches.length=0}clear(){return this.graphicsData.length>0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape($,J=null,Z=null,Q=null){let q=new $5($,J,Z,Q);return this.graphicsData.push(q),this.dirty++,this}drawHole($,J=null){if(!this.graphicsData.length)return null;let Z=new $5($,null,null,J),Q=this.graphicsData[this.graphicsData.length-1];return Z.lineStyle=Q.lineStyle,Q.holes.push(Z),this.dirty++,this}destroy(){super.destroy();for(let $=0;$<this.graphicsData.length;++$)this.graphicsData[$].destroy();this.points.length=0,this.points=null,this.colors.length=0,this.colors=null,this.uvs.length=0,this.uvs=null,this.indices.length=0,this.indices=null,this.indexBuffer.destroy(),this.indexBuffer=null,this.graphicsData.length=0,this.graphicsData=null,this.drawCalls.length=0,this.drawCalls=null,this.batches.length=0,this.batches=null,this._bounds=null}containsPoint($){let J=this.graphicsData;for(let Z=0;Z<J.length;++Z){let Q=J[Z];if(Q.fillStyle.visible&&Q.shape&&(Q.matrix?Q.matrix.applyInverse($,J5):J5.copyFrom($),Q.shape.contains(J5.x,J5.y))){let q=!1;if(Q.holes){for(let K=0;K<Q.holes.length;K++)if(Q.holes[K].shape.contains(J5.x,J5.y)){q=!0;break}}if(!q)return!0}}return!1}updateBatches(){if(!this.graphicsData.length){this.batchable=!0;return}if(!this.validateBatching())return;this.cacheDirty=this.dirty;let $=this.uvs,J=this.graphicsData,Z=null,Q=null;this.batches.length>0&&(Z=this.batches[this.batches.length-1],Q=Z.style);for(let H=this.shapeIndex;H<J.length;H++){this.shapeIndex++;let w=J[H],h=w.fillStyle,z=w.lineStyle;V6[w.type].build(w),w.matrix&&this.transformPoints(w.points,w.matrix),(h.visible||z.visible)&&this.processHoles(w.holes);for(let X=0;X<2;X++){let W=X===0?h:z;if(!W.visible)continue;let G=W.texture.baseTexture,k=this.indices.length,C=this.points.length/2;G.wrapMode=x0.REPEAT,X===0?this.processFill(w):this.processLine(w);let Y=this.points.length/2-C;Y!==0&&(Z&&!this._compareStyles(Q,W)&&(Z.end(k,C),Z=null),Z||(Z=M8.pop()||new q6,Z.begin(W,k,C),this.batches.push(Z),Q=W),this.addUvs(this.points,$,W.texture,C,Y,W.matrix))}}let q=this.indices.length,K=this.points.length/2;if(Z&&Z.end(q,K),this.batches.length===0){this.batchable=!0;return}let V=K>65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&V===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=V?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles($,J){return!(!$||!J||$.texture.baseTexture!==J.texture.baseTexture||$.color+$.alpha!==J.color+J.alpha||!!$.native!=!!J.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let $=0,J=this.graphicsData.length;$<J;$++){let Z=this.graphicsData[$],Q=Z.fillStyle,q=Z.lineStyle;if(Q&&!Q.texture.baseTexture.valid||q&&!q.texture.baseTexture.valid)return!1}return!0}packBatches(){this.batchDirty++,this.uvsFloat32=new Float32Array(this.uvs);let $=this.batches;for(let J=0,Z=$.length;J<Z;J++){let Q=$[J];for(let q=0;q<Q.size;q++){let K=Q.start+q;this.indicesUint16[K]=this.indicesUint16[K]-Q.attribStart}}}isBatchable(){if(this.points.length>131070)return!1;let $=this.batches;for(let J=0;J<$.length;J++)if($[J].style.native)return!1;return this.points.length<_.BATCHABLE_SIZE*2}buildDrawCalls(){let $=++p._globalBatch;for(let z=0;z<this.drawCalls.length;z++)this.drawCalls[z].texArray.clear(),_5.push(this.drawCalls[z]);this.drawCalls.length=0;let J=this.colors,Z=this.textureIds,Q=_5.pop();Q||(Q=new K1,Q.texArray=new X1),Q.texArray.count=0,Q.start=0,Q.size=0,Q.type=c0.TRIANGLES;let q=0,K=null,V=0,H=!1,w=c0.TRIANGLES,h=0;this.drawCalls.push(Q);for(let z=0;z<this.batches.length;z++){let X=this.batches[z],G=X.style,k=G.texture.baseTexture;H!==!!G.native&&(H=!!G.native,w=H?c0.LINES:c0.TRIANGLES,K=null,q=8,$++),K!==k&&(K=k,k._batchEnabled!==$&&(q===8&&($++,q=0,Q.size>0&&(Q=_5.pop(),Q||(Q=new K1,Q.texArray=new X1),this.drawCalls.push(Q)),Q.start=h,Q.size=0,Q.texArray.count=0,Q.type=w),k.touched=1,k._batchEnabled=$,k._batchLocation=q,k.wrapMode=x0.REPEAT,Q.texArray.elements[Q.texArray.count++]=k,q++)),Q.size+=X.size,h+=X.size,V=k._batchLocation,this.addColors(J,G.color,G.alpha,X.attribSize,X.attribStart),this.addTextureIds(Z,V,X.attribSize,X.attribStart)}p._globalBatch=$,this.packAttributes()}packAttributes(){let $=this.points,J=this.uvs,Z=this.colors,Q=this.textureIds,q=new ArrayBuffer($.length*3*4),K=new Float32Array(q),V=new Uint32Array(q),H=0;for(let w=0;w<$.length/2;w++)K[H++]=$[w*2],K[H++]=$[w*2+1],K[H++]=J[w*2],K[H++]=J[w*2+1],V[H++]=Z[w],K[H++]=Q[w];this._buffer.update(q),this._indexBuffer.update(this.indicesUint16)}processFill($){$.holes.length?Q6.triangulate($,this):V6[$.type].triangulate($,this)}processLine($){K6($,this);for(let J=0;J<$.holes.length;J++)K6($.holes[J],this)}processHoles($){for(let J=0;J<$.length;J++){let Z=$[J];V6[Z.type].build(Z),Z.matrix&&this.transformPoints(Z.points,Z.matrix)}}calculateBounds(){let $=this._bounds;$.clear(),$.addVertexData(this.points,0,this.points.length),$.pad(this.boundsPadding,this.boundsPadding)}transformPoints($,J){for(let Z=0;Z<$.length/2;Z++){let Q=$[Z*2],q=$[Z*2+1];$[Z*2]=J.a*Q+J.c*q+J.tx,$[Z*2+1]=J.b*Q+J.d*q+J.ty}}addColors($,J,Z,Q,q=0){let K=s.shared.setValue(J).toLittleEndianNumber(),V=s.shared.setValue(K).toPremultiplied(Z);$.length=Math.max($.length,q+Q);for(let H=0;H<Q;H++)$[q+H]=V}addTextureIds($,J,Z,Q=0){$.length=Math.max($.length,Q+Z);for(let q=0;q<Z;q++)$[Q+q]=J}addUvs($,J,Z,Q,q,K=null){let V=0,H=J.length,w=Z.frame;for(;V<q;){let z=$[(Q+V)*2],X=$[(Q+V)*2+1];if(K){let W=K.a*z+K.c*X+K.tx;X=K.b*z+K.d*X+K.ty,z=W}V++,J.push(z/w.width,X/w.height)}let h=Z.baseTexture;(w.width<h.width||w.height<h.height)&&this.adjustUvs(J,Z,H,q)}adjustUvs($,J,Z,Q){let q=J.baseTexture,V=Z+Q*2,H=J.frame,w=H.width/q.width,h=H.height/q.height,z=H.x/H.width,X=H.y/H.height,W=Math.floor($[Z]+0.000001),G=Math.floor($[Z+1]+0.000001);for(let k=Z+2;k<V;k+=2)W=Math.min(W,Math.floor($[k]+0.000001)),G=Math.min(G,Math.floor($[k+1]+0.000001));z-=W,X-=G;for(let k=Z;k<V;k+=2)$[k]=($[k]+z)*w,$[k+1]=($[k+1]+X)*h}};zZ.BATCHABLE_SIZE=100;var l9=zZ;class b1{constructor(){this.color=16777215,this.alpha=1,this.texture=E.WHITE,this.matrix=null,this.visible=!1,this.reset()}clone(){let _=new b1;return _.color=this.color,_.alpha=this.alpha,_.texture=this.texture,_.matrix=this.matrix,_.visible=this.visible,_}reset(){this.color=16777215,this.alpha=1,this.texture=E.WHITE,this.matrix=null,this.visible=!1}destroy(){this.texture=null,this.matrix=null}}class H6 extends b1{constructor(){super(...arguments),this.width=0,this.alignment=0.5,this.native=!1,this.cap=t0.BUTT,this.join=R0.MITER,this.miterLimit=10}clone(){let _=new H6;return _.color=this.color,_.alpha=this.alpha,_.texture=this.texture,_.matrix=this.matrix,_.visible=this.visible,_.width=this.width,_.alignment=this.alignment,_.native=this.native,_.cap=this.cap,_.join=this.join,_.miterLimit=this.miterLimit,_}reset(){super.reset(),this.color=0,this.alignment=0.5,this.width=0,this.native=!1,this.cap=t0.BUTT,this.join=R0.MITER,this.miterLimit=10}}var o9={},s9=class _ extends q0{constructor($=null){super(),this.shader=null,this.pluginName="batch",this.currentPath=null,this.batches=[],this.batchTint=-1,this.batchDirty=-1,this.vertexData=null,this._fillStyle=new b1,this._lineStyle=new H6,this._matrix=null,this._holeMode=!1,this.state=I0.for2d(),this._geometry=$||new l9,this._geometry.refCount++,this._transformID=-1,this._tintColor=new s(16777215),this.blendMode=d.NORMAL}get geometry(){return this._geometry}clone(){return this.finishPoly(),new _(this._geometry)}set blendMode($){this.state.blendMode=$}get blendMode(){return this.state.blendMode}get tint(){return this._tintColor.value}set tint($){this._tintColor.setValue($)}get fill(){return this._fillStyle}get line(){return this._lineStyle}lineStyle($=null,J=0,Z,Q=0.5,q=!1){return typeof $=="number"&&($={width:$,color:J,alpha:Z,alignment:Q,native:q}),this.lineTextureStyle($)}lineTextureStyle($){let J={width:0,texture:E.WHITE,color:$?.texture?16777215:0,matrix:null,alignment:0.5,native:!1,cap:t0.BUTT,join:R0.MITER,miterLimit:10};$=Object.assign(J,$),this.normalizeColor($),this.currentPath&&this.startPoly();let Z=$.width>0&&$.alpha>0;return Z?($.matrix&&($.matrix=$.matrix.clone(),$.matrix.invert()),Object.assign(this._lineStyle,{visible:Z},$)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){let $=this.currentPath.points,J=this.currentPath.points.length;J>2&&(this.drawShape(this.currentPath),this.currentPath=new C_,this.currentPath.closeStroke=!1,this.currentPath.points.push($[J-2],$[J-1]))}else this.currentPath=new C_,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo($,J){return this.startPoly(),this.currentPath.points[0]=$,this.currentPath.points[1]=J,this}lineTo($,J){this.currentPath||this.moveTo(0,0);let Z=this.currentPath.points,Q=Z[Z.length-2],q=Z[Z.length-1];return(Q!==$||q!==J)&&Z.push($,J),this}_initCurve($=0,J=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[$,J]):this.moveTo($,J)}quadraticCurveTo($,J,Z,Q){this._initCurve();let q=this.currentPath.points;return q.length===0&&this.moveTo(0,0),e1.curveTo($,J,Z,Q,q),this}bezierCurveTo($,J,Z,Q,q,K){return this._initCurve(),t1.curveTo($,J,Z,Q,q,K,this.currentPath.points),this}arcTo($,J,Z,Q,q){this._initCurve($,J);let K=this.currentPath.points,V=r1.curveTo($,J,Z,Q,q,K);if(V){let{cx:H,cy:w,radius:h,startAngle:z,endAngle:X,anticlockwise:W}=V;this.arc(H,w,h,z,X,W)}return this}arc($,J,Z,Q,q,K=!1){if(Q===q)return this;if(!K&&q<=Q?q+=p_:K&&Q<=q&&(Q+=p_),q-Q===0)return this;let V=$+Math.cos(Q)*Z,H=J+Math.sin(Q)*Z,w=this._geometry.closePointEps,h=this.currentPath?this.currentPath.points:null;if(h){let z=Math.abs(h[h.length-2]-V),X=Math.abs(h[h.length-1]-H);z<w&&X<w||h.push(V,H)}else this.moveTo(V,H),h=this.currentPath.points;return r1.arc(V,H,$,J,Z,Q,q,K,h),this}beginFill($=0,J){return this.beginTextureFill({texture:E.WHITE,color:$,alpha:J})}normalizeColor($){let J=s.shared.setValue($.color??0);$.color=J.toNumber(),$.alpha??($.alpha=J.alpha)}beginTextureFill($){let J={texture:E.WHITE,color:16777215,matrix:null};$=Object.assign(J,$),this.normalizeColor($),this.currentPath&&this.startPoly();let Z=$.alpha>0;return Z?($.matrix&&($.matrix=$.matrix.clone(),$.matrix.invert()),Object.assign(this._fillStyle,{visible:Z},$)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect($,J,Z,Q){return this.drawShape(new x($,J,Z,Q))}drawRoundedRect($,J,Z,Q,q){return this.drawShape(new d1($,J,Z,Q,q))}drawCircle($,J,Z){return this.drawShape(new S1($,J,Z))}drawEllipse($,J,Z,Q){return this.drawShape(new T1($,J,Z,Q))}drawPolygon(...$){let J,Z=!0,Q=$[0];Q.points?(Z=Q.closeStroke,J=Q.points):Array.isArray($[0])?J=$[0]:J=$;let q=new C_(J);return q.closeStroke=Z,this.drawShape(q),this}drawShape($){return this._holeMode?this._geometry.drawHole($,this._matrix):this._geometry.drawShape($,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){let $=this._geometry.graphicsData;return $.length===1&&$[0].shape.type===$0.RECT&&!$[0].matrix&&!$[0].holes.length&&!($[0].lineStyle.visible&&$[0].lineStyle.width)}_render($){this.finishPoly();let J=this._geometry;J.updateBatches(),J.batchable?(this.batchDirty!==J.batchDirty&&this._populateBatches(),this._renderBatched($)):($.batch.flush(),this._renderDirect($))}_populateBatches(){let $=this._geometry,J=this.blendMode,Z=$.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=$.batchDirty,this.batches.length=Z,this.vertexData=new Float32Array($.points);for(let Q=0;Q<Z;Q++){let q=$.batches[Q],K=q.style.color,V=new Float32Array(this.vertexData.buffer,q.attribStart*4*2,q.attribSize*2),H=new Float32Array($.uvsFloat32.buffer,q.attribStart*4*2,q.attribSize*2),w=new Uint16Array($.indicesUint16.buffer,q.start*2,q.size),h={vertexData:V,blendMode:J,indices:w,uvs:H,_batchRGB:s.shared.setValue(K).toRgbArray(),_tintRGB:K,_texture:q.style.texture,alpha:q.style.alpha,worldAlpha:1};this.batches[Q]=h}}_renderBatched($){if(this.batches.length){$.batch.setObjectRenderer($.plugins[this.pluginName]),this.calculateVertices(),this.calculateTints();for(let J=0,Z=this.batches.length;J<Z;J++){let Q=this.batches[J];Q.worldAlpha=this.worldAlpha*Q.alpha,$.plugins[this.pluginName].render(Q)}}}_renderDirect($){let J=this._resolveDirectShader($),Z=this._geometry,Q=this.worldAlpha,q=J.uniforms,K=Z.drawCalls;q.translationMatrix=this.transform.worldTransform,s.shared.setValue(this._tintColor).premultiply(Q).toArray(q.tint),$.shader.bind(J),$.geometry.bind(Z,J),$.state.set(this.state);for(let V=0,H=K.length;V<H;V++)this._renderDrawCallDirect($,Z.drawCalls[V])}_renderDrawCallDirect($,J){let{texArray:Z,type:Q,size:q,start:K}=J,V=Z.count;for(let H=0;H<V;H++)$.texture.bind(Z.elements[H],H);$.geometry.draw(Q,q,K)}_resolveDirectShader($){let J=this.shader,Z=this.pluginName;if(!J){if(!o9[Z]){let{maxTextures:Q}=$.plugins[Z],q=new Int32Array(Q);for(let H=0;H<Q;H++)q[H]=H;let K={tint:new Float32Array([1,1,1,1]),translationMatrix:new o,default:O0.from({uSamplers:q},!0)},V=$.plugins[Z]._shader.program;o9[Z]=new j0(V,K)}J=o9[Z]}return J}_calculateBounds(){this.finishPoly();let $=this._geometry;if(!$.graphicsData.length)return;let{minX:J,minY:Z,maxX:Q,maxY:q}=$.bounds;this._bounds.addFrame(this.transform,J,Z,Q,q)}containsPoint($){return this.worldTransform.applyInverse($,_._TEMP_POINT),this._geometry.containsPoint(_._TEMP_POINT)}calculateTints(){if(this.batchTint!==this.tint){this.batchTint=this._tintColor.toNumber();for(let $=0;$<this.batches.length;$++){let J=this.batches[$];J._tintRGB=s.shared.setValue(this._tintColor).multiply(J._batchRGB).toLittleEndianNumber()}}}calculateVertices(){let $=this.transform._worldID;if(this._transformID===$)return;this._transformID=$;let J=this.transform.worldTransform,Z=J.a,Q=J.b,q=J.c,K=J.d,V=J.tx,H=J.ty,w=this._geometry.points,h=this.vertexData,z=0;for(let X=0;X<w.length;X+=2){let W=w[X],G=w[X+1];h[z++]=Z*W+q*G+V,h[z++]=K*G+Q*W+H}}closePath(){let $=this.currentPath;return $&&($.closeStroke=!0,this.finishPoly()),this}setMatrix($){return this._matrix=$,this}beginHole(){return this.finishPoly(),this._holeMode=!0,this}endHole(){return this.finishPoly(),this._holeMode=!1,this}destroy($){this._geometry.refCount--,this._geometry.refCount===0&&this._geometry.dispose(),this._matrix=null,this.currentPath=null,this._lineStyle.destroy(),this._lineStyle=null,this._fillStyle.destroy(),this._fillStyle=null,this._geometry=null,this.shader=null,this.vertexData=null,this.batches.length=0,this.batches=null,super.destroy($)}};s9.curves=e0,s9._TEMP_POINT=new u;var Z5=s9;class f8{constructor(_,$){this.uvBuffer=_,this.uvMatrix=$,this.data=null,this._bufferUpdateId=-1,this._textureUpdateId=-1,this._updateID=0}update(_){if(!_&&this._bufferUpdateId===this.uvBuffer._updateID&&this._textureUpdateId===this.uvMatrix._updateID)return;this._bufferUpdateId=this.uvBuffer._updateID,this._textureUpdateId=this.uvMatrix._updateID;let $=this.uvBuffer.data;(!this.data||this.data.length!==$.length)&&(this.data=new Float32Array($.length)),this.uvMatrix.multiplyUvs($,this.data),this._updateID++}}var i9=new u,XZ=new C_,GZ=class _ extends q0{constructor($,J,Z,Q=c0.TRIANGLES){super(),this.geometry=$,this.shader=J,this.state=Z||I0.for2d(),this.drawMode=Q,this.start=0,this.size=0,this.uvs=null,this.indices=null,this.vertexData=new Float32Array(1),this.vertexDirty=-1,this._transformID=-1,this._roundPixels=B.ROUND_PIXELS,this.batchUvs=null}get geometry(){return this._geometry}set geometry($){this._geometry!==$&&(this._geometry&&(this._geometry.refCount--,this._geometry.refCount===0&&this._geometry.dispose()),this._geometry=$,this._geometry&&this._geometry.refCount++,this.vertexDirty=-1)}get uvBuffer(){return this.geometry.buffers[1]}get verticesBuffer(){return this.geometry.buffers[0]}set material($){this.shader=$}get material(){return this.shader}set blendMode($){this.state.blendMode=$}get blendMode(){return this.state.blendMode}set roundPixels($){this._roundPixels!==$&&(this._transformID=-1),this._roundPixels=$}get roundPixels(){return this._roundPixels}get tint(){return"tint"in this.shader?this.shader.tint:null}set tint($){this.shader.tint=$}get tintValue(){return this.shader.tintValue}get texture(){return"texture"in this.shader?this.shader.texture:null}set texture($){this.shader.texture=$}_render($){let J=this.geometry.buffers[0].data;this.shader.batchable&&this.drawMode===c0.TRIANGLES&&J.length<_.BATCHABLE_SIZE*2?this._renderToBatch($):this._renderDefault($)}_renderDefault($){let J=this.shader;J.alpha=this.worldAlpha,J.update&&J.update(),$.batch.flush(),J.uniforms.translationMatrix=this.transform.worldTransform.toArray(!0),$.shader.bind(J),$.state.set(this.state),$.geometry.bind(this.geometry,J),$.geometry.draw(this.drawMode,this.size,this.start,this.geometry.instanceCount)}_renderToBatch($){let J=this.geometry,Z=this.shader;Z.uvMatrix&&(Z.uvMatrix.update(),this.calculateUvs()),this.calculateVertices(),this.indices=J.indexBuffer.data,this._tintRGB=Z._tintRGB,this._texture=Z.texture;let Q=this.material.pluginName;$.batch.setObjectRenderer($.plugins[Q]),$.plugins[Q].render(this)}calculateVertices(){let $=this.geometry.buffers[0],J=$.data,Z=$._updateID;if(Z===this.vertexDirty&&this._transformID===this.transform._worldID)return;this._transformID=this.transform._worldID,this.vertexData.length!==J.length&&(this.vertexData=new Float32Array(J.length));let Q=this.transform.worldTransform,q=Q.a,K=Q.b,V=Q.c,H=Q.d,w=Q.tx,h=Q.ty,z=this.vertexData;for(let X=0;X<z.length/2;X++){let W=J[X*2],G=J[X*2+1];z[X*2]=q*W+V*G+w,z[X*2+1]=K*W+H*G+h}if(this._roundPixels){let X=B.RESOLUTION;for(let W=0;W<z.length;++W)z[W]=Math.round(z[W]*X)/X}this.vertexDirty=Z}calculateUvs(){let $=this.geometry.buffers[1],J=this.shader;J.uvMatrix.isSimple?this.uvs=$.data:(this.batchUvs||(this.batchUvs=new f8($,J.uvMatrix)),this.batchUvs.update(),this.uvs=this.batchUvs.data)}_calculateBounds(){this.calculateVertices(),this._bounds.addVertexData(this.vertexData,0,this.vertexData.length)}containsPoint($){if(!this.getBounds().contains($.x,$.y))return!1;this.worldTransform.applyInverse($,i9);let J=this.geometry.getBuffer("aVertexPosition").data,Z=XZ.points,Q=this.geometry.getIndex().data,q=Q.length,K=this.drawMode===4?3:1;for(let V=0;V+2<q;V+=K){let H=Q[V]*2,w=Q[V+1]*2,h=Q[V+2]*2;if(Z[0]=J[H],Z[1]=J[H+1],Z[2]=J[w],Z[3]=J[w+1],Z[4]=J[h],Z[5]=J[h+1],XZ.contains(i9.x,i9.y))return!0}return!1}destroy($){super.destroy($),this._cachedTexture&&(this._cachedTexture.destroy(),this._cachedTexture=null),this.geometry=null,this.shader=null,this.state=null,this.uvs=null,this.indices=null,this.vertexData=null}};GZ.BATCHABLE_SIZE=100;var B1=GZ;class F1 extends T0{constructor(_,$,J){super();let Z=new _0(_),Q=new _0($,!0),q=new _0(J,!0,!0);this.addAttribute("aVertexPosition",Z,2,!1,g.FLOAT).addAttribute("aTextureCoord",Q,2,!1,g.FLOAT).addIndex(q),this._updateId=-1}get vertexDirtyId(){return this.buffers[0]._updateID}}var WZ=`varying vec2 vTextureCoord;
907
+ `],{type:"application/javascript"}))),this.worker=new Worker(s1)}}B8.revokeObjectURL=function(){s1&&(URL.revokeObjectURL(s1),s1=null)};var _Z=0,B7;class $Z{constructor(){this._initialized=!1,this._createdWorkers=0,this.workerPool=[],this.queue=[],this.resolveHash={}}isImageBitmapSupported(){return this._isImageBitmapSupported!==void 0?this._isImageBitmapSupported:(this._isImageBitmapSupported=new Promise((_)=>{let{worker:$}=new $6;$.addEventListener("message",(J)=>{$.terminate(),$6.revokeObjectURL(),_(J.data)})}),this._isImageBitmapSupported)}loadImageBitmap(_){return this._run("loadImageBitmap",[_])}async _initWorkers(){this._initialized||(this._initialized=!0)}getWorker(){B7===void 0&&(B7=navigator.hardwareConcurrency||4);let _=this.workerPool.pop();return!_&&this._createdWorkers<B7&&(this._createdWorkers++,_=new B8().worker,_.addEventListener("message",($)=>{this.complete($.data),this.returnWorker($.target),this.next()})),_}returnWorker(_){this.workerPool.push(_)}complete(_){_.error!==void 0?this.resolveHash[_.uuid].reject(_.error):this.resolveHash[_.uuid].resolve(_.data),this.resolveHash[_.uuid]=null}async _run(_,$){await this._initWorkers();let J=new Promise((Z,Q)=>{this.queue.push({id:_,arguments:$,resolve:Z,reject:Q})});return this.next(),J}next(){if(!this.queue.length)return;let _=this.getWorker();if(!_)return;let $=this.queue.pop(),J=$.id;this.resolveHash[_Z]={resolve:$.resolve,reject:$.reject},_.postMessage({data:$.arguments,uuid:_Z++,id:J})}}var F7=new $Z;function r0(_,$,J){_.resource.internal=!0;let Z=new E(_),Q=()=>{delete $.promiseCache[J],V_.has(J)&&V_.remove(J)};return Z.baseTexture.once("destroyed",()=>{J in $.promiseCache&&(console.warn("[Assets] A BaseTexture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the BaseTexture."),Q())}),Z.once("destroyed",()=>{_.destroyed||(console.warn("[Assets] A Texture managed by Assets was destroyed instead of unloaded! Use Assets.unload() instead of destroying the Texture."),Q())}),Z}var wq=[".jpeg",".jpg",".png",".webp",".avif"],hq=["image/jpeg","image/png","image/webp","image/avif"];async function O7(_){let $=await B.ADAPTER.fetch(_);if(!$.ok)throw Error(`[loadImageBitmap] Failed to fetch ${_}: ${$.status} ${$.statusText}`);let J=await $.blob();return await createImageBitmap(J)}var y_={name:"loadTextures",extension:{type:b.LoadParser,priority:H0.High},config:{preferWorkers:!0,preferCreateImageBitmap:!0,crossOrigin:"anonymous"},test(_){return d0(_,hq)||B0(_,wq)},async load(_,$,J){let Z=globalThis.createImageBitmap&&this.config.preferCreateImageBitmap,Q;Z?this.config.preferWorkers&&await F7.isImageBitmapSupported()?Q=await F7.loadImageBitmap(_):Q=await O7(_):Q=await new Promise((V,H)=>{let w=new Image;w.crossOrigin=this.config.crossOrigin,w.src=_,w.complete?V(w):(w.onload=()=>V(w),w.onerror=(h)=>H(h))});let q={...$.data};q.resolution??(q.resolution=P.getResolutionOfUrl(_)),Z&&q.resourceOptions?.ownsImageBitmap===void 0&&(q.resourceOptions={...q.resourceOptions},q.resourceOptions.ownsImageBitmap=!0);let K=new p(Q,q);return K.resource.src=_,r0(K,J,_)},unload(_){_.destroy(!0)}};O.add(y_);var zq=".svg",Xq="image/svg+xml",j7={extension:{type:b.LoadParser,priority:H0.High},name:"loadSVG",test(_){return d0(_,Xq)||B0(_,zq)},async testParse(_){return n1.test(_)},async parse(_,$,J){let Z=new n1(_,$?.data?.resourceOptions);await Z.load();let Q=new p(Z,{resolution:P.getResolutionOfUrl(_),...$?.data});return Q.resource.src=$.src,r0(Q,J,$.src)},async load(_,$){return(await B.ADAPTER.fetch(_)).text()},unload:y_.unload};O.add(j7);var Gq=[".mp4",".m4v",".webm",".ogv"],Wq=["video/mp4","video/webm","video/ogg"],L7={name:"loadVideo",extension:{type:b.LoadParser,priority:H0.High},config:{defaultAutoPlay:!0,defaultUpdateFPS:0,defaultLoop:!1,defaultMuted:!1,defaultPlaysinline:!0},test(_){return d0(_,Wq)||B0(_,Gq)},async load(_,$,J){let Z,Q=await(await B.ADAPTER.fetch(_)).blob(),q=URL.createObjectURL(Q);try{let K={autoPlay:this.config.defaultAutoPlay,updateFPS:this.config.defaultUpdateFPS,loop:this.config.defaultLoop,muted:this.config.defaultMuted,playsinline:this.config.defaultPlaysinline,...$?.data?.resourceOptions,autoLoad:!0},V=new t5(q,K);await V.load();let H=new p(V,{alphaMode:await P.detectVideoAlphaMode(),resolution:P.getResolutionOfUrl(_),...$?.data});H.resource.src=_,Z=r0(H,J,_),Z.baseTexture.once("destroyed",()=>{URL.revokeObjectURL(q)})}catch(K){throw URL.revokeObjectURL(q),K}return Z},unload(_){_.destroy(!0)}};O.add(L7);class D7{constructor(){this._defaultBundleIdentifierOptions={connector:"-",createBundleAssetId:(_,$)=>`${_}${this._bundleIdConnector}${$}`,extractAssetIdFromBundle:(_,$)=>$.replace(`${_}${this._bundleIdConnector}`,"")},this._bundleIdConnector=this._defaultBundleIdentifierOptions.connector,this._createBundleAssetId=this._defaultBundleIdentifierOptions.createBundleAssetId,this._extractAssetIdFromBundle=this._defaultBundleIdentifierOptions.extractAssetIdFromBundle,this._assetMap={},this._preferredOrder=[],this._parsers=[],this._resolverHash={},this._bundles={}}setBundleIdentifier(_){if(this._bundleIdConnector=_.connector??this._bundleIdConnector,this._createBundleAssetId=_.createBundleAssetId??this._createBundleAssetId,this._extractAssetIdFromBundle=_.extractAssetIdFromBundle??this._extractAssetIdFromBundle,this._extractAssetIdFromBundle("foo",this._createBundleAssetId("foo","bar"))!=="bar")throw Error("[Resolver] GenerateBundleAssetId are not working correctly")}prefer(..._){_.forEach(($)=>{this._preferredOrder.push($),$.priority||($.priority=Object.keys($.params))}),this._resolverHash={}}set basePath(_){this._basePath=_}get basePath(){return this._basePath}set rootPath(_){this._rootPath=_}get rootPath(){return this._rootPath}get parsers(){return this._parsers}reset(){this.setBundleIdentifier(this._defaultBundleIdentifierOptions),this._assetMap={},this._preferredOrder=[],this._resolverHash={},this._rootPath=null,this._basePath=null,this._manifest=null,this._bundles={},this._defaultSearchParams=null}setDefaultSearchParams(_){if(typeof _=="string")this._defaultSearchParams=_;else{let $=_;this._defaultSearchParams=Object.keys($).map((J)=>`${encodeURIComponent(J)}=${encodeURIComponent($[J])}`).join("&")}}getAlias(_){let{alias:$,name:J,src:Z,srcs:Q}=_;return D0($||J||Z||Q,(q)=>typeof q=="string"?q:Array.isArray(q)?q.map((K)=>K?.src??K?.srcs??K):q?.src||q?.srcs?q.src??q.srcs:q,!0)}addManifest(_){this._manifest&&console.warn("[Resolver] Manifest already exists, this will be overwritten"),this._manifest=_,_.bundles.forEach(($)=>{this.addBundle($.name,$.assets)})}addBundle(_,$){let J=[];Array.isArray($)?$.forEach((Z)=>{let Q=Z.src??Z.srcs,q=Z.alias??Z.name,K;if(typeof q=="string"){let V=this._createBundleAssetId(_,q);J.push(V),K=[q,V]}else{let V=q.map((H)=>this._createBundleAssetId(_,H));J.push(...V),K=[...q,...V]}this.add({...Z,alias:K,src:Q})}):Object.keys($).forEach((Z)=>{let Q=[Z,this._createBundleAssetId(_,Z)];if(typeof $[Z]=="string")this.add({alias:Q,src:$[Z]});else if(Array.isArray($[Z]))this.add({alias:Q,src:$[Z]});else{let q=$[Z],K=q.src??q.srcs;this.add({...q,alias:Q,src:Array.isArray(K)?K:[K]})}J.push(...Q)}),this._bundles[_]=J}add(_,$,J,Z,Q){let q=[];typeof _=="string"||Array.isArray(_)&&typeof _[0]=="string"?(P.deprecation("7.2.0",`Assets.add now uses an object instead of individual parameters.
908
+ Please use Assets.add({ alias, src, data, format, loadParser }) instead.`),q.push({alias:_,src:$,data:J,format:Z,loadParser:Q})):Array.isArray(_)?q.push(..._):q.push(_);let K;K=(V)=>{this.hasKey(V)&&console.warn(`[Resolver] already has key: ${V} overwriting`)},D0(q).forEach((V)=>{let{src:H,srcs:w}=V,{data:h,format:z,loadParser:X}=V,W=D0(H||w).map((C)=>typeof C=="string"?b8(C):Array.isArray(C)?C:[C]),G=this.getAlias(V);Array.isArray(G)?G.forEach(K):K(G);let k=[];W.forEach((C)=>{C.forEach((Y)=>{let U={};if(typeof Y!="object"){U.src=Y;for(let N=0;N<this._parsers.length;N++){let I=this._parsers[N];if(I.test(Y)){U=I.parse(Y);break}}}else h=Y.data??h,z=Y.format??z,X=Y.loadParser??X,U={...U,...Y};if(!G)throw Error(`[Resolver] alias is undefined for this asset: ${U.src}`);U=this.buildResolvedAsset(U,{aliases:G,data:h,format:z,loadParser:X}),k.push(U)})}),G.forEach((C)=>{this._assetMap[C]=k})})}resolveBundle(_){let $=c_(_);_=D0(_);let J={};return _.forEach((Z)=>{let Q=this._bundles[Z];if(Q){let q=this.resolve(Q),K={};for(let V in q){let H=q[V];K[this._extractAssetIdFromBundle(Z,V)]=H}J[Z]=K}}),$?J[_[0]]:J}resolveUrl(_){let $=this.resolve(_);if(typeof _!="string"){let J={};for(let Z in $)J[Z]=$[Z].src;return J}return $.src}resolve(_){let $=c_(_);_=D0(_);let J={};return _.forEach((Z)=>{if(!this._resolverHash[Z])if(this._assetMap[Z]){let Q=this._assetMap[Z],q=Q[0],K=this._getPreferredOrder(Q);K?.priority.forEach((V)=>{K.params[V].forEach((H)=>{let w=Q.filter((h)=>h[V]?h[V]===H:!1);w.length&&(Q=w)})}),this._resolverHash[Z]=Q[0]??q}else this._resolverHash[Z]=this.buildResolvedAsset({alias:[Z],src:Z},{});J[Z]=this._resolverHash[Z]}),$?J[_[0]]:J}hasKey(_){return!!this._assetMap[_]}hasBundle(_){return!!this._bundles[_]}_getPreferredOrder(_){for(let $=0;$<_.length;$++){let J=_[0],Z=this._preferredOrder.find((Q)=>Q.params.format.includes(J.format));if(Z)return Z}return this._preferredOrder[0]}_appendDefaultSearchParams(_){if(!this._defaultSearchParams)return _;let $=/\?/.test(_)?"&":"?";return`${_}${$}${this._defaultSearchParams}`}buildResolvedAsset(_,$){let{aliases:J,data:Z,loadParser:Q,format:q}=$;return(this._basePath||this._rootPath)&&(_.src=P.path.toAbsolute(_.src,this._basePath,this._rootPath)),_.alias=J??_.alias??[_.src],_.src=this._appendDefaultSearchParams(_.src),_.data={...Z||{},..._.data},_.loadParser=Q??_.loadParser,_.format=q??_.format??P.path.extname(_.src).slice(1),_.srcs=_.src,_.name=_.alias,_}}class A7{constructor(){this._detections=[],this._initialized=!1,this.resolver=new D7,this.loader=new N7,this.cache=V_,this._backgroundLoader=new C7(this.loader),this._backgroundLoader.active=!0,this.reset()}async init(_={}){if(this._initialized){console.warn("[Assets]AssetManager already initialized, did you load before calling this Assets.init()?");return}if(this._initialized=!0,_.defaultSearchParams&&this.resolver.setDefaultSearchParams(_.defaultSearchParams),_.basePath&&(this.resolver.basePath=_.basePath),_.bundleIdentifier&&this.resolver.setBundleIdentifier(_.bundleIdentifier),_.manifest){let Q=_.manifest;typeof Q=="string"&&(Q=await this.load(Q)),this.resolver.addManifest(Q)}let $=_.texturePreference?.resolution??1,J=typeof $=="number"?[$]:$,Z=await this._detectFormats({preferredFormats:_.texturePreference?.format,skipDetections:_.skipDetections,detections:this._detections});this.resolver.prefer({params:{format:Z,resolution:J}}),_.preferences&&this.setPreferences(_.preferences)}add(_,$,J,Z,Q){this.resolver.add(_,$,J,Z,Q)}async load(_,$){this._initialized||await this.init();let J=c_(_),Z=D0(_).map((K)=>{if(typeof K!="string"){let V=this.resolver.getAlias(K);return V.some((H)=>!this.resolver.hasKey(H))&&this.add(K),Array.isArray(V)?V[0]:V}return this.resolver.hasKey(K)||this.add({alias:K,src:K}),K}),Q=this.resolver.resolve(Z),q=await this._mapLoadToResolve(Q,$);return J?q[Z[0]]:q}addBundle(_,$){this.resolver.addBundle(_,$)}async loadBundle(_,$){this._initialized||await this.init();let J=!1;typeof _=="string"&&(J=!0,_=[_]);let Z=this.resolver.resolveBundle(_),Q={},q=Object.keys(Z),K=0,V=0,H=()=>{$?.(++K/V)},w=q.map((h)=>{let z=Z[h];return V+=Object.keys(z).length,this._mapLoadToResolve(z,H).then((X)=>{Q[h]=X})});return await Promise.all(w),J?Q[_[0]]:Q}async backgroundLoad(_){this._initialized||await this.init(),typeof _=="string"&&(_=[_]);let $=this.resolver.resolve(_);this._backgroundLoader.add(Object.values($))}async backgroundLoadBundle(_){this._initialized||await this.init(),typeof _=="string"&&(_=[_]);let $=this.resolver.resolveBundle(_);Object.values($).forEach((J)=>{this._backgroundLoader.add(Object.values(J))})}reset(){this.resolver.reset(),this.loader.reset(),this.cache.reset(),this._initialized=!1}get(_){if(typeof _=="string")return V_.get(_);let $={};for(let J=0;J<_.length;J++)$[J]=V_.get(_[J]);return $}async _mapLoadToResolve(_,$){let J=Object.values(_),Z=Object.keys(_);this._backgroundLoader.active=!1;let Q=await this.loader.load(J,$);this._backgroundLoader.active=!0;let q={};return J.forEach((K,V)=>{let H=Q[K.src],w=[K.src];K.alias&&w.push(...K.alias),q[Z[V]]=H,V_.set(w,H)}),q}async unload(_){this._initialized||await this.init();let $=D0(_).map((Z)=>typeof Z!="string"?Z.src:Z),J=this.resolver.resolve($);await this._unloadFromResolved(J)}async unloadBundle(_){this._initialized||await this.init(),_=D0(_);let $=this.resolver.resolveBundle(_),J=Object.keys($).map((Z)=>this._unloadFromResolved($[Z]));await Promise.all(J)}async _unloadFromResolved(_){let $=Object.values(_);$.forEach((J)=>{V_.remove(J.src)}),await this.loader.unload($)}async _detectFormats(_){let $=[];_.preferredFormats&&($=Array.isArray(_.preferredFormats)?_.preferredFormats:[_.preferredFormats]);for(let J of _.detections)_.skipDetections||await J.test()?$=await J.add($):_.skipDetections||($=await J.remove($));return $=$.filter((J,Z)=>$.indexOf(J)===Z),$}get detections(){return this._detections}get preferWorkers(){return y_.config.preferWorkers}set preferWorkers(_){P.deprecation("7.2.0","Assets.prefersWorkers is deprecated, use Assets.setPreferences({ preferWorkers: true }) instead."),this.setPreferences({preferWorkers:_})}setPreferences(_){this.loader.parsers.forEach(($)=>{$.config&&Object.keys($.config).filter((J)=>(J in _)).forEach((J)=>{$.config[J]=_[J]})})}}var J6=new A7;O.handleByList(b.LoadParser,J6.loader.parsers).handleByList(b.ResolveParser,J6.resolver.parsers).handleByList(b.CacheParser,J6.cache.parsers).handleByList(b.DetectionParser,J6.detections);var P7={extension:b.CacheParser,test:(_)=>Array.isArray(_)&&_.every(($)=>$ instanceof E),getCacheableAssets:(_,$)=>{let J={};return _.forEach((Z)=>{$.forEach((Q,q)=>{J[Z+(q===0?"":q+1)]=Q})}),J}};O.add(P7);async function F8(_){if("Image"in globalThis)return new Promise(($)=>{let J=new Image;J.onload=()=>{$(!0)},J.onerror=()=>{$(!1)},J.src=_});if("createImageBitmap"in globalThis&&"fetch"in globalThis){try{let $=await(await fetch(_)).blob();await createImageBitmap($)}catch{return!1}return!0}return!1}var R7={extension:{type:b.DetectionParser,priority:1},test:async()=>F8("data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A="),add:async(_)=>[..._,"avif"],remove:async(_)=>_.filter(($)=>$!=="avif")};O.add(R7);var M7={extension:{type:b.DetectionParser,priority:0},test:async()=>F8("data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="),add:async(_)=>[..._,"webp"],remove:async(_)=>_.filter(($)=>$!=="webp")};O.add(M7);var JZ=["png","jpg","jpeg"],f7={extension:{type:b.DetectionParser,priority:-1},test:()=>Promise.resolve(!0),add:async(_)=>[..._,...JZ],remove:async(_)=>_.filter(($)=>!JZ.includes($))};O.add(f7);var kq="WorkerGlobalScope"in globalThis&&globalThis instanceof globalThis.WorkerGlobalScope;function i1(_){return kq?!1:document.createElement("video").canPlayType(_)!==""}var E7={extension:{type:b.DetectionParser,priority:0},test:async()=>i1("video/webm"),add:async(_)=>[..._,"webm"],remove:async(_)=>_.filter(($)=>$!=="webm")};O.add(E7);var v7={extension:{type:b.DetectionParser,priority:0},test:async()=>i1("video/mp4"),add:async(_)=>[..._,"mp4","m4v"],remove:async(_)=>_.filter(($)=>$!=="mp4"&&$!=="m4v")};O.add(v7);var c7={extension:{type:b.DetectionParser,priority:0},test:async()=>i1("video/ogg"),add:async(_)=>[..._,"ogv"],remove:async(_)=>_.filter(($)=>$!=="ogv")};O.add(c7);var y7={extension:b.ResolveParser,test:y_.test,parse:(_)=>({resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:P.path.extname(_).slice(1),src:_})};O.add(y7);var N0=((_)=>(_[_.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",_[_.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",_[_.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",_[_.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",_[_.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",_[_.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",_[_.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",_[_.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",_[_.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",_[_.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",_[_.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",_[_.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",_[_.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",_[_.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",_[_.COMPRESSED_SRGB8_ETC2=37493]="COMPRESSED_SRGB8_ETC2",_[_.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",_[_.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",_[_.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",_[_.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",_[_.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",_[_.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",_[_.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",_[_.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",_[_.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",_[_.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35987]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",_[_.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",_[_.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",_[_.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",_[_.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",_[_.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",_[_.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",_))(N0||{}),o_={33776:0.5,33777:0.5,33778:1,33779:1,35916:0.5,35917:0.5,35918:1,35919:1,37488:0.5,37489:0.5,37490:1,37491:1,37492:0.5,37496:1,37493:0.5,37497:1,37494:0.5,37495:0.5,35840:0.5,35842:0.5,35841:0.25,35843:0.25,36196:0.5,35986:0.5,35987:1,34798:1,37808:1,36492:1,36493:1,36494:1,36495:1};var B_,a1;function ZZ(){a1={bptc:B_.getExtension("EXT_texture_compression_bptc"),astc:B_.getExtension("WEBGL_compressed_texture_astc"),etc:B_.getExtension("WEBGL_compressed_texture_etc"),s3tc:B_.getExtension("WEBGL_compressed_texture_s3tc"),s3tc_sRGB:B_.getExtension("WEBGL_compressed_texture_s3tc_srgb"),pvrtc:B_.getExtension("WEBGL_compressed_texture_pvrtc")||B_.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:B_.getExtension("WEBGL_compressed_texture_etc1"),atc:B_.getExtension("WEBGL_compressed_texture_atc")}}var S7={extension:{type:b.DetectionParser,priority:2},test:async()=>{let _=B.ADAPTER.createCanvas().getContext("webgl");return _?(B_=_,!0):(console.warn("WebGL not available for compressed textures."),!1)},add:async(_)=>{a1||ZZ();let $=[];for(let J in a1)a1[J]&&$.push(J);return[...$,..._]},remove:async(_)=>(a1||ZZ(),_.filter(($)=>!($ in a1)))};O.add(S7);class Z6 extends k_{constructor(_,$={width:1,height:1,autoLoad:!0}){let J,Z;typeof _=="string"?(J=_,Z=new Uint8Array):(J=null,Z=_),super(Z,$),this.origin=J,this.buffer=Z?new q1(Z):null,this._load=null,this.loaded=!1,this.origin!==null&&$.autoLoad!==!1&&this.load(),this.origin===null&&this.buffer&&(this._load=Promise.resolve(this),this.loaded=!0,this.onBlobLoaded(this.buffer.rawBinaryData))}onBlobLoaded(_){}load(){return this._load?this._load:(this._load=fetch(this.origin).then((_)=>_.blob()).then((_)=>_.arrayBuffer()).then((_)=>(this.data=new Uint32Array(_),this.buffer=new q1(_),this.loaded=!0,this.onBlobLoaded(_),this.update(),this)),this._load)}}class H_ extends Z6{constructor(_,$){super(_,$),this.format=$.format,this.levels=$.levels||1,this._width=$.width,this._height=$.height,this._extension=H_._formatToExtension(this.format),($.levelBuffers||this.buffer)&&(this._levelBuffers=$.levelBuffers||H_._createLevelBuffers(_ instanceof Uint8Array?_:this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height))}upload(_,$,J){let Z=_.gl;if(!_.context.extensions[this._extension])throw Error(`${this._extension} textures are not supported on the current machine`);if(!this._levelBuffers)return!1;Z.pixelStorei(Z.UNPACK_ALIGNMENT,4);for(let Q=0,q=this.levels;Q<q;Q++){let{levelID:K,levelWidth:V,levelHeight:H,levelBuffer:w}=this._levelBuffers[Q];Z.compressedTexImage2D(Z.TEXTURE_2D,K,this.format,V,H,0,w)}return!0}onBlobLoaded(){this._levelBuffers=H_._createLevelBuffers(this.buffer.uint8View,this.format,this.levels,4,4,this.width,this.height)}static _formatToExtension(_){if(_>=33776&&_<=33779)return"s3tc";if(_>=35916&&_<=35919)return"s3tc_sRGB";if(_>=37488&&_<=37497)return"etc";if(_>=35840&&_<=35843)return"pvrtc";if(_===36196)return"etc1";if(_===35986||_===35987||_===34798)return"atc";if(_>=36492&&_<=36495)return"bptc";if(_===37808)return"astc";throw Error(`Invalid (compressed) texture format given: ${_}`)}static _createLevelBuffers(_,$,J,Z,Q,q,K){let V=Array(J),H=_.byteOffset,w=q,h=K,z=w+Z-1&~(Z-1),X=h+Q-1&~(Q-1),W=z*X*o_[$];for(let G=0;G<J;G++)V[G]={levelID:G,levelWidth:J>1?w:z,levelHeight:J>1?h:X,levelBuffer:new Uint8Array(_.buffer,H,W)},H+=W,w=w>>1||1,h=h>>1||1,z=w+Z-1&~(Z-1),X=h+Q-1&~(Q-1),W=z*X*o_[$];return V}}var T7=4,O8=124,Cq=32,QZ=20,Nq=542327876,j8={SIZE:1,FLAGS:2,HEIGHT:3,WIDTH:4,MIPMAP_COUNT:7,PIXEL_FORMAT:19},Yq={SIZE:0,FLAGS:1,FOURCC:2,RGB_BITCOUNT:3,R_BIT_MASK:4,G_BIT_MASK:5,B_BIT_MASK:6,A_BIT_MASK:7},L8={DXGI_FORMAT:0,RESOURCE_DIMENSION:1,MISC_FLAG:2,ARRAY_SIZE:3,MISC_FLAGS2:4},Uq=1,Iq=2,bq=4,Bq=64,Fq=512,Oq=131072,jq=827611204,Lq=861165636,Dq=894720068,Aq=808540228,Pq=4,Rq={[jq]:N0.COMPRESSED_RGBA_S3TC_DXT1_EXT,[Lq]:N0.COMPRESSED_RGBA_S3TC_DXT3_EXT,[Dq]:N0.COMPRESSED_RGBA_S3TC_DXT5_EXT},Mq={70:N0.COMPRESSED_RGBA_S3TC_DXT1_EXT,71:N0.COMPRESSED_RGBA_S3TC_DXT1_EXT,73:N0.COMPRESSED_RGBA_S3TC_DXT3_EXT,74:N0.COMPRESSED_RGBA_S3TC_DXT3_EXT,76:N0.COMPRESSED_RGBA_S3TC_DXT5_EXT,77:N0.COMPRESSED_RGBA_S3TC_DXT5_EXT,72:N0.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,75:N0.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,78:N0.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,96:N0.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT,95:N0.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT,98:N0.COMPRESSED_RGBA_BPTC_UNORM_EXT,99:N0.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT};function D8(_){let $=new Uint32Array(_);if($[0]!==Nq)throw Error("Invalid DDS file magic word");let J=new Uint32Array(_,0,O8/Uint32Array.BYTES_PER_ELEMENT),Z=J[j8.HEIGHT],Q=J[j8.WIDTH],q=J[j8.MIPMAP_COUNT],K=new Uint32Array(_,j8.PIXEL_FORMAT*Uint32Array.BYTES_PER_ELEMENT,Cq/Uint32Array.BYTES_PER_ELEMENT),V=K[Uq];if(V&bq){let H=K[Yq.FOURCC];if(H!==Aq){let U=Rq[H],N=T7+O8,I=new Uint8Array(_,N);return[new H_(I,{format:U,width:Q,height:Z,levels:q})]}let w=T7+O8,h=new Uint32Array($.buffer,w,QZ/Uint32Array.BYTES_PER_ELEMENT),z=h[L8.DXGI_FORMAT],X=h[L8.RESOURCE_DIMENSION],W=h[L8.MISC_FLAG],G=h[L8.ARRAY_SIZE],k=Mq[z];if(k===void 0)throw Error(`DDSParser cannot parse texture data with DXGI format ${z}`);if(W===Pq)throw Error("DDSParser does not support cubemap textures");if(X===6)throw Error("DDSParser does not supported 3D texture data");let C=[],Y=T7+O8+QZ;if(G===1)C.push(new Uint8Array(_,Y));else{let U=o_[k],N=0,I=Q,f=Z;for(let D=0;D<q;D++){let L=Math.max(1,I+3&-4),v=Math.max(1,f+3&-4),m=L*v*U;N+=m,I=I>>>1,f=f>>>1}let y=Y;for(let D=0;D<G;D++)C.push(new Uint8Array(_,y,N)),y+=N}return C.map((U)=>new H_(U,{format:k,width:Q,height:Z,levels:q}))}throw V&Bq?Error("DDSParser does not support uncompressed texture data."):V&Fq?Error("DDSParser does not supported YUV uncompressed texture data."):V&Oq?Error("DDSParser does not support single-channel (lumninance) texture data!"):V&Iq?Error("DDSParser does not support single-channel (alpha) texture data!"):Error("DDSParser failed to load a texture file due to an unknown reason!")}var qZ=[171,75,84,88,32,49,49,187,13,10,26,10],fq=67305985,w_={FILE_IDENTIFIER:0,ENDIANNESS:12,GL_TYPE:16,GL_TYPE_SIZE:20,GL_FORMAT:24,GL_INTERNAL_FORMAT:28,GL_BASE_INTERNAL_FORMAT:32,PIXEL_WIDTH:36,PIXEL_HEIGHT:40,PIXEL_DEPTH:44,NUMBER_OF_ARRAY_ELEMENTS:48,NUMBER_OF_FACES:52,NUMBER_OF_MIPMAP_LEVELS:56,BYTES_OF_KEY_VALUE_DATA:60},d7=64,A8={[g.UNSIGNED_BYTE]:1,[g.UNSIGNED_SHORT]:2,[g.INT]:4,[g.UNSIGNED_INT]:4,[g.FLOAT]:4,[g.HALF_FLOAT]:8},g7={[R.RGBA]:4,[R.RGB]:3,[R.RG]:2,[R.RED]:1,[R.LUMINANCE]:1,[R.LUMINANCE_ALPHA]:2,[R.ALPHA]:1},p7={[g.UNSIGNED_SHORT_4_4_4_4]:2,[g.UNSIGNED_SHORT_5_5_5_1]:2,[g.UNSIGNED_SHORT_5_6_5]:2};function P8(_,$,J=!1){let Z=new DataView($);if(!Eq(_,Z))return null;let Q=Z.getUint32(w_.ENDIANNESS,!0)===fq,q=Z.getUint32(w_.GL_TYPE,Q),K=Z.getUint32(w_.GL_FORMAT,Q),V=Z.getUint32(w_.GL_INTERNAL_FORMAT,Q),H=Z.getUint32(w_.PIXEL_WIDTH,Q),w=Z.getUint32(w_.PIXEL_HEIGHT,Q)||1,h=Z.getUint32(w_.PIXEL_DEPTH,Q)||1,z=Z.getUint32(w_.NUMBER_OF_ARRAY_ELEMENTS,Q)||1,X=Z.getUint32(w_.NUMBER_OF_FACES,Q),W=Z.getUint32(w_.NUMBER_OF_MIPMAP_LEVELS,Q),G=Z.getUint32(w_.BYTES_OF_KEY_VALUE_DATA,Q);if(w===0||h!==1)throw Error("Only 2D textures are supported");if(X!==1)throw Error("CubeTextures are not supported by KTXLoader yet!");if(z!==1)throw Error("WebGL does not support array textures");let k=4,C=4,Y=H+3&-4,U=w+3&-4,N=Array(z),I=H*w;q===0&&(I=Y*U);let f;if(q!==0?A8[q]?f=A8[q]*g7[K]:f=p7[q]:f=o_[V],f===void 0)throw Error("Unable to resolve the pixel format stored in the *.ktx file!");let y=J?cq(Z,G,Q):null,D=I*f,L=H,v=w,m=Y,F=U,M=d7+G;for(let j=0;j<W;j++){let A=Z.getUint32(M,Q),i=M+4;for(let a=0;a<z;a++){let T=N[a];T||(T=N[a]=Array(W)),T[j]={levelID:j,levelWidth:W>1||q!==0?L:m,levelHeight:W>1||q!==0?v:F,levelBuffer:new Uint8Array($,i,D)},i+=D}M+=A+4,M=M%4!==0?M+4-M%4:M,L=L>>1||1,v=v>>1||1,m=L+k-1&~(k-1),F=v+C-1&~(C-1),D=m*F*f}return q!==0?{uncompressed:N.map((j)=>{let A=j[0].levelBuffer,i=!1;return q===g.FLOAT?A=new Float32Array(j[0].levelBuffer.buffer,j[0].levelBuffer.byteOffset,j[0].levelBuffer.byteLength/4):q===g.UNSIGNED_INT?(i=!0,A=new Uint32Array(j[0].levelBuffer.buffer,j[0].levelBuffer.byteOffset,j[0].levelBuffer.byteLength/4)):q===g.INT&&(i=!0,A=new Int32Array(j[0].levelBuffer.buffer,j[0].levelBuffer.byteOffset,j[0].levelBuffer.byteLength/4)),{resource:new k_(A,{width:j[0].levelWidth,height:j[0].levelHeight}),type:q,format:i?vq(K):K}}),kvData:y}:{compressed:N.map((j)=>new H_(null,{format:V,width:H,height:w,levels:W,levelBuffers:j})),kvData:y}}function Eq(_,$){for(let J=0;J<qZ.length;J++)if($.getUint8(J)!==qZ[J])return console.error(`${_} is not a valid *.ktx file!`),!1;return!0}function vq(_){switch(_){case R.RGBA:return R.RGBA_INTEGER;case R.RGB:return R.RGB_INTEGER;case R.RG:return R.RG_INTEGER;case R.RED:return R.RED_INTEGER;default:return _}}function cq(_,$,J){let Z=new Map,Q=0;for(;Q<$;){let q=_.getUint32(d7+Q,J),K=d7+Q+4,V=3-(q+3)%4;if(q===0||q>$-Q){console.error("KTXLoader: keyAndValueByteSize out of bounds");break}let H=0;for(;H<q&&_.getUint8(K+H)!==0;H++);if(H===-1){console.error("KTXLoader: Failed to find null byte terminating kvData key");break}let w=new TextDecoder().decode(new Uint8Array(_.buffer,K,H)),h=new DataView(_.buffer,K+H+1,q-H-1);Z.set(w,h),Q+=4+q+V}return Z}var x7={extension:{type:b.LoadParser,priority:H0.High},name:"loadDDS",test(_){return B0(_,".dds")},async load(_,$,J){let Z=await(await B.ADAPTER.fetch(_)).arrayBuffer(),Q=D8(Z).map((q)=>{let K=new p(q,{mipmap:F0.OFF,alphaMode:K0.NO_PREMULTIPLIED_ALPHA,resolution:P.getResolutionOfUrl(_),...$.data});return r0(K,J,_)});return Q.length===1?Q[0]:Q},unload(_){Array.isArray(_)?_.forEach(($)=>$.destroy(!0)):_.destroy(!0)}};O.add(x7);var m7={extension:{type:b.LoadParser,priority:H0.High},name:"loadKTX",test(_){return B0(_,".ktx")},async load(_,$,J){let Z=await(await B.ADAPTER.fetch(_)).arrayBuffer(),{compressed:Q,uncompressed:q,kvData:K}=P8(_,Z),V=Q??q,H={mipmap:F0.OFF,alphaMode:K0.NO_PREMULTIPLIED_ALPHA,resolution:P.getResolutionOfUrl(_),...$.data},w=V.map((h)=>{V===q&&Object.assign(H,{type:h.type,format:h.format});let z=h.resource??h,X=new p(z,H);return X.ktxKeyValueData=K,r0(X,J,_)});return w.length===1?w[0]:w},unload(_){Array.isArray(_)?_.forEach(($)=>$.destroy(!0)):_.destroy(!0)}};O.add(m7);var yq=["s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"],u7={extension:b.ResolveParser,test:(_)=>{let $=P.path.extname(_).slice(1);return["basis","ktx","dds"].includes($)},parse:(_)=>{let $=_.split("."),J=$.pop();if(["ktx","dds"].includes(J)){let Z=$.pop();if(yq.includes(Z))return{resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:Z,src:_}}return{resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:J,src:_}}};O.add(u7);var R8=new x,Sq=4,KZ=class _{constructor($){this.renderer=$,this._rendererPremultipliedAlpha=!1}contextChange(){let $=this.renderer?.gl.getContextAttributes();this._rendererPremultipliedAlpha=!!($&&$.alpha&&$.premultipliedAlpha)}async image($,J,Z,Q){let q=new Image;return q.src=await this.base64($,J,Z,Q),q}async base64($,J,Z,Q){let q=this.canvas($,Q);if(q.toBlob!==void 0)return new Promise((K,V)=>{q.toBlob((H)=>{if(!H){V(Error("ICanvas.toBlob failed!"));return}let w=new FileReader;w.onload=()=>K(w.result),w.onerror=V,w.readAsDataURL(H)},J,Z)});if(q.toDataURL!==void 0)return q.toDataURL(J,Z);if(q.convertToBlob!==void 0){let K=await q.convertToBlob({type:J,quality:Z});return new Promise((V,H)=>{let w=new FileReader;w.onload=()=>V(w.result),w.onerror=H,w.readAsDataURL(K)})}throw Error("Extract.base64() requires ICanvas.toDataURL, ICanvas.toBlob, or ICanvas.convertToBlob to be implemented")}canvas($,J){let{pixels:Z,width:Q,height:q,flipY:K,premultipliedAlpha:V}=this._rawPixels($,J);K&&_._flipY(Z,Q,q),V&&_._unpremultiplyAlpha(Z);let H=new P.CanvasRenderTarget(Q,q,1),w=new ImageData(new Uint8ClampedArray(Z.buffer),Q,q);return H.context.putImageData(w,0,0),H.canvas}pixels($,J){let{pixels:Z,width:Q,height:q,flipY:K,premultipliedAlpha:V}=this._rawPixels($,J);return K&&_._flipY(Z,Q,q),V&&_._unpremultiplyAlpha(Z),Z}_rawPixels($,J){let Z=this.renderer;if(!Z)throw Error("The Extract has already been destroyed");let Q,q=!1,K=!1,V,H=!1;$&&($ instanceof a0?V=$:(V=Z.generateTexture($,{region:J,resolution:Z.resolution,multisample:Z.multisample}),H=!0,J&&(R8.width=J.width,R8.height=J.height,J=R8)));let w=Z.gl;if(V){if(Q=V.baseTexture.resolution,J=J??V.frame,q=!1,K=V.baseTexture.alphaMode>0&&V.baseTexture.format===R.RGBA,!H){Z.renderTexture.bind(V);let W=V.framebuffer.glFramebuffers[Z.CONTEXT_UID];W.blitFramebuffer&&Z.framebuffer.bind(W.blitFramebuffer)}}else Q=Z.resolution,J||(J=R8,J.width=Z.width/Q,J.height=Z.height/Q),q=!0,K=this._rendererPremultipliedAlpha,Z.renderTexture.bind();let h=Math.max(Math.round(J.width*Q),1),z=Math.max(Math.round(J.height*Q),1),X=new Uint8Array(Sq*h*z);return w.readPixels(Math.round(J.x*Q),Math.round(J.y*Q),h,z,w.RGBA,w.UNSIGNED_BYTE,X),H&&V?.destroy(!0),{pixels:X,width:h,height:z,flipY:q,premultipliedAlpha:K}}destroy(){this.renderer=null}static _flipY($,J,Z){let Q=J<<2,q=Z>>1,K=new Uint8Array(Q);for(let V=0;V<q;V++){let H=V*Q,w=(Z-V-1)*Q;K.set($.subarray(H,H+Q)),$.copyWithin(H,w,w+Q),$.set(K,w)}}static _unpremultiplyAlpha($){$ instanceof Uint8ClampedArray&&($=new Uint8Array($.buffer));let J=$.length;for(let Z=0;Z<J;Z+=4){let Q=$[Z+3];if(Q!==0){let q=255.001/Q;$[Z]=$[Z]*q+0.5,$[Z+1]=$[Z+1]*q+0.5,$[Z+2]=$[Z+2]*q+0.5}}}};KZ.extension={name:"extract",type:b.RendererSystem};var VZ=KZ;O.add(VZ);var U1={build(_){let $=_.points,J,Z,Q,q,K,V;if(_.type===$0.CIRC){let G=_.shape;J=G.x,Z=G.y,K=V=G.radius,Q=q=0}else if(_.type===$0.ELIP){let G=_.shape;J=G.x,Z=G.y,K=G.width,V=G.height,Q=q=0}else{let G=_.shape,k=G.width/2,C=G.height/2;J=G.x+k,Z=G.y+C,K=V=Math.max(0,Math.min(G.radius,Math.min(k,C))),Q=k-K,q=C-V}if(!(K>=0&&V>=0&&Q>=0&&q>=0)){$.length=0;return}let H=Math.ceil(2.3*Math.sqrt(K+V)),w=H*8+(Q?4:0)+(q?4:0);if($.length=w,w===0)return;if(H===0){$.length=8,$[0]=$[6]=J+Q,$[1]=$[3]=Z+q,$[2]=$[4]=J-Q,$[5]=$[7]=Z-q;return}let h=0,z=H*4+(Q?2:0)+2,X=z,W=w;{let G=Q+K,k=q,C=J+G,Y=J-G,U=Z+k;if($[h++]=C,$[h++]=U,$[--z]=U,$[--z]=Y,q){let N=Z-k;$[X++]=Y,$[X++]=N,$[--W]=N,$[--W]=C}}for(let G=1;G<H;G++){let k=Math.PI/2*(G/H),C=Q+Math.cos(k)*K,Y=q+Math.sin(k)*V,U=J+C,N=J-C,I=Z+Y,f=Z-Y;$[h++]=U,$[h++]=I,$[--z]=I,$[--z]=N,$[X++]=N,$[X++]=f,$[--W]=f,$[--W]=U}{let G=Q,k=q+V,C=J+G,Y=J-G,U=Z+k,N=Z-k;$[h++]=C,$[h++]=U,$[--W]=N,$[--W]=C,Q&&($[h++]=Y,$[h++]=U,$[--W]=N,$[--W]=Y)}},triangulate(_,$){let J=_.points,Z=$.points,Q=$.indices;if(J.length===0)return;let q=Z.length/2,K=q,V,H;if(_.type!==$0.RREC){let h=_.shape;V=h.x,H=h.y}else{let h=_.shape;V=h.x+h.width/2,H=h.y+h.height/2}let w=_.matrix;Z.push(_.matrix?w.a*V+w.c*H+w.tx:V,_.matrix?w.b*V+w.d*H+w.ty:H),q++,Z.push(J[0],J[1]);for(let h=2;h<J.length;h+=2)Z.push(J[h],J[h+1]),Q.push(q++,K,q);Q.push(K+1,K,q)}};function HZ(_,$=!1){let J=_.length;if(J<6)return;let Z=0;for(let Q=0,q=_[J-2],K=_[J-1];Q<J;Q+=2){let V=_[Q],H=_[Q+1];Z+=(V-q)*(H+K),q=V,K=H}if(!$&&Z>0||$&&Z<=0){let Q=J/2;for(let q=Q+Q%2;q<J;q+=2){let K=J-q-2,V=J-q-1,H=q,w=q+1;[_[K],_[H]]=[_[H],_[K]],[_[V],_[w]]=[_[w],_[V]]}}}var Q6={build(_){_.points=_.shape.points.slice()},triangulate(_,$){let{points:J,holes:Z}=_,Q=$.points,q=$.indices;if(J.length>=6){HZ(J,!1);let K=[];for(let w=0;w<Z.length;w++){let h=Z[w];HZ(h.points,!0),K.push(J.length/2),J=J.concat(h.points)}let V=P.earcut(J,K,2);if(!V)return;let H=Q.length/2;for(let w=0;w<V.length;w+=3)q.push(V[w]+H),q.push(V[w+1]+H),q.push(V[w+2]+H);for(let w=0;w<J.length;w++)Q.push(J[w])}}};var n7={build(_){let $=_.shape,J=$.x,Z=$.y,Q=$.width,q=$.height,K=_.points;K.length=0,Q>=0&&q>=0&&K.push(J,Z,J+Q,Z,J+Q,Z+q,J,Z+q)},triangulate(_,$){let J=_.points,Z=$.points;if(J.length===0)return;let Q=Z.length/2;Z.push(J[0],J[1],J[2],J[3],J[6],J[7],J[4],J[5]),$.indices.push(Q,Q+1,Q+2,Q+1,Q+2,Q+3)}};var l7={build(_){U1.build(_)},triangulate(_,$){U1.triangulate(_,$)}};var R0=((_)=>(_.MITER="miter",_.BEVEL="bevel",_.ROUND="round",_))(R0||{}),t0=((_)=>(_.BUTT="butt",_.ROUND="round",_.SQUARE="square",_))(t0||{}),e0={adaptive:!0,maxLength:10,minSegments:8,maxSegments:2048,epsilon:0.0001,_segmentsCount(_,$=20){if(!this.adaptive||!_||isNaN(_))return $;let J=Math.ceil(_/this.maxLength);return J<this.minSegments?J=this.minSegments:J>this.maxSegments&&(J=this.maxSegments),J}};class r1{static curveTo(_,$,J,Z,Q,q){let K=q[q.length-2],V=q[q.length-1]-$,H=K-_,w=Z-$,h=J-_,z=Math.abs(V*h-H*w);if(z<0.00000001||Q===0)return(q[q.length-2]!==_||q[q.length-1]!==$)&&q.push(_,$),null;let X=V*V+H*H,W=w*w+h*h,G=V*w+H*h,k=Q*Math.sqrt(X)/z,C=Q*Math.sqrt(W)/z,Y=k*G/X,U=C*G/W,N=k*h+C*H,I=k*w+C*V,f=H*(C+Y),y=V*(C+Y),D=h*(k+U),L=w*(k+U),v=Math.atan2(y-I,f-N),m=Math.atan2(L-I,D-N);return{cx:N+_,cy:I+$,radius:Q,startAngle:v,endAngle:m,anticlockwise:H*w>h*V}}static arc(_,$,J,Z,Q,q,K,V,H){let w=K-q,h=e0._segmentsCount(Math.abs(w)*Q,Math.ceil(Math.abs(w)/p_)*40),z=w/(h*2),X=z*2,W=Math.cos(z),G=Math.sin(z),k=h-1,C=k%1/k;for(let Y=0;Y<=k;++Y){let U=Y+C*Y,N=z+q+X*U,I=Math.cos(N),f=-Math.sin(N);H.push((W*I+G*f)*Q+J,(W*-f+G*I)*Q+Z)}}}class q6{constructor(){this.reset()}begin(_,$,J){this.reset(),this.style=_,this.start=$,this.attribStart=J}end(_,$){this.attribSize=$-this.attribStart,this.size=_-this.start}reset(){this.style=null,this.size=0,this.start=0,this.attribStart=0,this.attribSize=0}}class t1{static curveLength(_,$,J,Z,Q,q,K,V){let H=0,w=0,h=0,z=0,X=0,W=0,G=0,k=0,C=0,Y=0,U=0,N=_,I=$;for(let f=1;f<=10;++f)w=f/10,h=w*w,z=h*w,X=1-w,W=X*X,G=W*X,k=G*_+3*W*w*J+3*X*h*Q+z*K,C=G*$+3*W*w*Z+3*X*h*q+z*V,Y=N-k,U=I-C,N=k,I=C,H+=Math.sqrt(Y*Y+U*U);return H}static curveTo(_,$,J,Z,Q,q,K){let V=K[K.length-2],H=K[K.length-1];K.length-=2;let w=e0._segmentsCount(t1.curveLength(V,H,_,$,J,Z,Q,q)),h=0,z=0,X=0,W=0,G=0;K.push(V,H);for(let k=1,C=0;k<=w;++k)C=k/w,h=1-C,z=h*h,X=z*h,W=C*C,G=W*C,K.push(X*V+3*z*C*_+3*h*W*J+G*Q,X*H+3*z*C*$+3*h*W*Z+G*q)}}function wZ(_,$,J,Z,Q,q,K,V){let H=_-J*Q,w=$-Z*Q,h=_+J*q,z=$+Z*q,X,W;K?(X=Z,W=-J):(X=-Z,W=J);let G=H+X,k=w+W,C=h+X,Y=z+W;return V.push(G,k,C,Y),2}function I1(_,$,J,Z,Q,q,K,V){let H=J-_,w=Z-$,h=Math.atan2(H,w),z=Math.atan2(Q-_,q-$);V&&h<z?h+=Math.PI*2:!V&&h>z&&(z+=Math.PI*2);let X=h,W=z-h,G=Math.abs(W),k=Math.sqrt(H*H+w*w),C=(15*G*Math.sqrt(k)/Math.PI>>0)+1,Y=W/C;if(X+=Y,V){K.push(_,$,J,Z);for(let U=1,N=X;U<C;U++,N+=Y)K.push(_,$,_+Math.sin(N)*k,$+Math.cos(N)*k);K.push(_,$,Q,q)}else{K.push(J,Z,_,$);for(let U=1,N=X;U<C;U++,N+=Y)K.push(_+Math.sin(N)*k,$+Math.cos(N)*k,_,$);K.push(Q,q,_,$)}return C*2}function Tq(_,$){let J=_.shape,Z=_.points||J.points.slice(),Q=$.closePointEps;if(Z.length===0)return;let q=_.lineStyle,K=new u(Z[0],Z[1]),V=new u(Z[Z.length-2],Z[Z.length-1]),H=J.type!==$0.POLY||J.closeStroke,w=Math.abs(K.x-V.x)<Q&&Math.abs(K.y-V.y)<Q;if(H){Z=Z.slice(),w&&(Z.pop(),Z.pop(),V.set(Z[Z.length-2],Z[Z.length-1]));let T=(K.x+V.x)*0.5,w0=(V.y+K.y)*0.5;Z.unshift(T,w0),Z.push(T,w0)}let h=$.points,z=Z.length/2,X=Z.length,W=h.length/2,G=q.width/2,k=G*G,C=q.miterLimit*q.miterLimit,Y=Z[0],U=Z[1],N=Z[2],I=Z[3],f=0,y=0,D=-(U-I),L=Y-N,v=0,m=0,F=Math.sqrt(D*D+L*L);D/=F,L/=F,D*=G,L*=G;let M=q.alignment,j=(1-M)*2,A=M*2;H||(q.cap===t0.ROUND?X+=I1(Y-D*(j-A)*0.5,U-L*(j-A)*0.5,Y-D*j,U-L*j,Y+D*A,U+L*A,h,!0)+2:q.cap===t0.SQUARE&&(X+=wZ(Y,U,D,L,j,A,!0,h))),h.push(Y-D*j,U-L*j,Y+D*A,U+L*A);for(let T=1;T<z-1;++T){Y=Z[(T-1)*2],U=Z[(T-1)*2+1],N=Z[T*2],I=Z[T*2+1],f=Z[(T+1)*2],y=Z[(T+1)*2+1],D=-(U-I),L=Y-N,F=Math.sqrt(D*D+L*L),D/=F,L/=F,D*=G,L*=G,v=-(I-y),m=N-f,F=Math.sqrt(v*v+m*m),v/=F,m/=F,v*=G,m*=G;let w0=N-Y,G0=U-I,r=N-f,h5=y-I,R4=w0*r+G0*h5,C6=G0*r-h5*w0,z5=C6<0;if(Math.abs(C6)<0.001*Math.abs(R4)){h.push(N-D*j,I-L*j,N+D*A,I+L*A),R4>=0&&(q.join===R0.ROUND?X+=I1(N,I,N-D*j,I-L*j,N-v*j,I-m*j,h,!1)+4:X+=2,h.push(N-v*A,I-m*A,N+v*j,I+m*j));continue}let M4=(-D+Y)*(-L+I)-(-D+N)*(-L+U),f4=(-v+f)*(-m+I)-(-v+N)*(-m+y),N6=(w0*f4-r*M4)/C6,Y6=(h5*M4-G0*f4)/C6,E4=(N6-N)*(N6-N)+(Y6-I)*(Y6-I),e_=N+(N6-N)*j,_1=I+(Y6-I)*j,$1=N-(N6-N)*A,J1=I-(Y6-I)*A,zQ=Math.min(w0*w0+G0*G0,r*r+h5*h5),v4=z5?j:A,XQ=zQ+v4*v4*k,GQ=E4<=XQ,U6=q.join;if(U6===R0.MITER&&E4/k>C&&(U6=R0.BEVEL),GQ)switch(U6){case R0.MITER:{h.push(e_,_1,$1,J1);break}case R0.BEVEL:{z5?h.push(e_,_1,N+D*A,I+L*A,e_,_1,N+v*A,I+m*A):h.push(N-D*j,I-L*j,$1,J1,N-v*j,I-m*j,$1,J1),X+=2;break}case R0.ROUND:{z5?(h.push(e_,_1,N+D*A,I+L*A),X+=I1(N,I,N+D*A,I+L*A,N+v*A,I+m*A,h,!0)+4,h.push(e_,_1,N+v*A,I+m*A)):(h.push(N-D*j,I-L*j,$1,J1),X+=I1(N,I,N-D*j,I-L*j,N-v*j,I-m*j,h,!1)+4,h.push(N-v*j,I-m*j,$1,J1));break}}else{switch(h.push(N-D*j,I-L*j,N+D*A,I+L*A),U6){case R0.MITER:{z5?h.push($1,J1,$1,J1):h.push(e_,_1,e_,_1),X+=2;break}case R0.ROUND:{z5?X+=I1(N,I,N+D*A,I+L*A,N+v*A,I+m*A,h,!0)+2:X+=I1(N,I,N-D*j,I-L*j,N-v*j,I-m*j,h,!1)+2;break}}h.push(N-v*j,I-m*j,N+v*A,I+m*A),X+=2}}Y=Z[(z-2)*2],U=Z[(z-2)*2+1],N=Z[(z-1)*2],I=Z[(z-1)*2+1],D=-(U-I),L=Y-N,F=Math.sqrt(D*D+L*L),D/=F,L/=F,D*=G,L*=G,h.push(N-D*j,I-L*j,N+D*A,I+L*A),H||(q.cap===t0.ROUND?X+=I1(N-D*(j-A)*0.5,I-L*(j-A)*0.5,N-D*j,I-L*j,N+D*A,I+L*A,h,!1)+2:q.cap===t0.SQUARE&&(X+=wZ(N,I,D,L,j,A,!1,h)));let i=$.indices,a=e0.epsilon*e0.epsilon;for(let T=W;T<X+W-2;++T)Y=h[T*2],U=h[T*2+1],N=h[(T+1)*2],I=h[(T+1)*2+1],f=h[(T+2)*2],y=h[(T+2)*2+1],!(Math.abs(Y*(I-y)+N*(y-U)+f*(U-I))<a)&&i.push(T,T+1,T+2)}function dq(_,$){let J=0,Z=_.shape,Q=_.points||Z.points,q=Z.type!==$0.POLY||Z.closeStroke;if(Q.length===0)return;let{points:K,indices:V}=$,H=Q.length/2,w=K.length/2,h=w;for(K.push(Q[0],Q[1]),J=1;J<H;J++)K.push(Q[J*2],Q[J*2+1]),V.push(h,h+1),h++;q&&V.push(h,w)}function K6(_,$){_.lineStyle.native?dq(_,$):Tq(_,$)}class e1{static curveLength(_,$,J,Z,Q,q){let K=_-2*J+Q,V=$-2*Z+q,H=2*J-2*_,w=2*Z-2*$,h=4*(K*K+V*V),z=4*(K*H+V*w),X=H*H+w*w,W=2*Math.sqrt(h+z+X),G=Math.sqrt(h),k=2*h*G,C=2*Math.sqrt(X),Y=z/G;return(k*W+G*z*(W-C)+(4*X*h-z*z)*Math.log((2*G+Y+W)/(Y+C)))/(4*k)}static curveTo(_,$,J,Z,Q){let q=Q[Q.length-2],K=Q[Q.length-1],V=e0._segmentsCount(e1.curveLength(q,K,_,$,J,Z)),H=0,w=0;for(let h=1;h<=V;++h){let z=h/V;H=q+(_-q)*z,w=K+($-K)*z,Q.push(H+(_+(J-_)*z-H)*z,w+($+(Z-$)*z-w)*z)}}}var V6={[$0.POLY]:Q6,[$0.CIRC]:U1,[$0.ELIP]:U1,[$0.RECT]:n7,[$0.RREC]:l7},M8=[],_5=[];class $5{constructor(_,$=null,J=null,Z=null){this.points=[],this.holes=[],this.shape=_,this.lineStyle=J,this.fillStyle=$,this.matrix=Z,this.type=_.type}clone(){return new $5(this.shape,this.fillStyle,this.lineStyle,this.matrix)}destroy(){this.shape=null,this.holes.length=0,this.holes=null,this.points.length=0,this.points=null,this.lineStyle=null,this.fillStyle=null}}var J5=new u,hZ=class _ extends y1{constructor(){super(),this.closePointEps=0.0001,this.boundsPadding=0,this.uvsFloat32=null,this.indicesUint16=null,this.batchable=!1,this.points=[],this.colors=[],this.uvs=[],this.indices=[],this.textureIds=[],this.graphicsData=[],this.drawCalls=[],this.batchDirty=-1,this.batches=[],this.dirty=0,this.cacheDirty=-1,this.clearDirty=0,this.shapeIndex=0,this._bounds=new f_,this.boundsDirty=-1}get bounds(){return this.updateBatches(),this.boundsDirty!==this.dirty&&(this.boundsDirty=this.dirty,this.calculateBounds()),this._bounds}invalidate(){this.boundsDirty=-1,this.dirty++,this.batchDirty++,this.shapeIndex=0,this.points.length=0,this.colors.length=0,this.uvs.length=0,this.indices.length=0,this.textureIds.length=0;for(let $=0;$<this.drawCalls.length;$++)this.drawCalls[$].texArray.clear(),_5.push(this.drawCalls[$]);this.drawCalls.length=0;for(let $=0;$<this.batches.length;$++){let J=this.batches[$];J.reset(),M8.push(J)}this.batches.length=0}clear(){return this.graphicsData.length>0&&(this.invalidate(),this.clearDirty++,this.graphicsData.length=0),this}drawShape($,J=null,Z=null,Q=null){let q=new $5($,J,Z,Q);return this.graphicsData.push(q),this.dirty++,this}drawHole($,J=null){if(!this.graphicsData.length)return null;let Z=new $5($,null,null,J),Q=this.graphicsData[this.graphicsData.length-1];return Z.lineStyle=Q.lineStyle,Q.holes.push(Z),this.dirty++,this}destroy(){super.destroy();for(let $=0;$<this.graphicsData.length;++$)this.graphicsData[$].destroy();this.points.length=0,this.points=null,this.colors.length=0,this.colors=null,this.uvs.length=0,this.uvs=null,this.indices.length=0,this.indices=null,this.indexBuffer.destroy(),this.indexBuffer=null,this.graphicsData.length=0,this.graphicsData=null,this.drawCalls.length=0,this.drawCalls=null,this.batches.length=0,this.batches=null,this._bounds=null}containsPoint($){let J=this.graphicsData;for(let Z=0;Z<J.length;++Z){let Q=J[Z];if(Q.fillStyle.visible&&Q.shape&&(Q.matrix?Q.matrix.applyInverse($,J5):J5.copyFrom($),Q.shape.contains(J5.x,J5.y))){let q=!1;if(Q.holes){for(let K=0;K<Q.holes.length;K++)if(Q.holes[K].shape.contains(J5.x,J5.y)){q=!0;break}}if(!q)return!0}}return!1}updateBatches(){if(!this.graphicsData.length){this.batchable=!0;return}if(!this.validateBatching())return;this.cacheDirty=this.dirty;let $=this.uvs,J=this.graphicsData,Z=null,Q=null;this.batches.length>0&&(Z=this.batches[this.batches.length-1],Q=Z.style);for(let H=this.shapeIndex;H<J.length;H++){this.shapeIndex++;let w=J[H],h=w.fillStyle,z=w.lineStyle;V6[w.type].build(w),w.matrix&&this.transformPoints(w.points,w.matrix),(h.visible||z.visible)&&this.processHoles(w.holes);for(let X=0;X<2;X++){let W=X===0?h:z;if(!W.visible)continue;let G=W.texture.baseTexture,k=this.indices.length,C=this.points.length/2;G.wrapMode=x0.REPEAT,X===0?this.processFill(w):this.processLine(w);let Y=this.points.length/2-C;Y!==0&&(Z&&!this._compareStyles(Q,W)&&(Z.end(k,C),Z=null),Z||(Z=M8.pop()||new q6,Z.begin(W,k,C),this.batches.push(Z),Q=W),this.addUvs(this.points,$,W.texture,C,Y,W.matrix))}}let q=this.indices.length,K=this.points.length/2;if(Z&&Z.end(q,K),this.batches.length===0){this.batchable=!0;return}let V=K>65535;this.indicesUint16&&this.indices.length===this.indicesUint16.length&&V===this.indicesUint16.BYTES_PER_ELEMENT>2?this.indicesUint16.set(this.indices):this.indicesUint16=V?new Uint32Array(this.indices):new Uint16Array(this.indices),this.batchable=this.isBatchable(),this.batchable?this.packBatches():this.buildDrawCalls()}_compareStyles($,J){return!(!$||!J||$.texture.baseTexture!==J.texture.baseTexture||$.color+$.alpha!==J.color+J.alpha||!!$.native!=!!J.native)}validateBatching(){if(this.dirty===this.cacheDirty||!this.graphicsData.length)return!1;for(let $=0,J=this.graphicsData.length;$<J;$++){let Z=this.graphicsData[$],Q=Z.fillStyle,q=Z.lineStyle;if(Q&&!Q.texture.baseTexture.valid||q&&!q.texture.baseTexture.valid)return!1}return!0}packBatches(){this.batchDirty++,this.uvsFloat32=new Float32Array(this.uvs);let $=this.batches;for(let J=0,Z=$.length;J<Z;J++){let Q=$[J];for(let q=0;q<Q.size;q++){let K=Q.start+q;this.indicesUint16[K]=this.indicesUint16[K]-Q.attribStart}}}isBatchable(){if(this.points.length>131070)return!1;let $=this.batches;for(let J=0;J<$.length;J++)if($[J].style.native)return!1;return this.points.length<_.BATCHABLE_SIZE*2}buildDrawCalls(){let $=++p._globalBatch;for(let z=0;z<this.drawCalls.length;z++)this.drawCalls[z].texArray.clear(),_5.push(this.drawCalls[z]);this.drawCalls.length=0;let J=this.colors,Z=this.textureIds,Q=_5.pop();Q||(Q=new K1,Q.texArray=new X1),Q.texArray.count=0,Q.start=0,Q.size=0,Q.type=c0.TRIANGLES;let q=0,K=null,V=0,H=!1,w=c0.TRIANGLES,h=0;this.drawCalls.push(Q);for(let z=0;z<this.batches.length;z++){let X=this.batches[z],G=X.style,k=G.texture.baseTexture;H!==!!G.native&&(H=!!G.native,w=H?c0.LINES:c0.TRIANGLES,K=null,q=8,$++),K!==k&&(K=k,k._batchEnabled!==$&&(q===8&&($++,q=0,Q.size>0&&(Q=_5.pop(),Q||(Q=new K1,Q.texArray=new X1),this.drawCalls.push(Q)),Q.start=h,Q.size=0,Q.texArray.count=0,Q.type=w),k.touched=1,k._batchEnabled=$,k._batchLocation=q,k.wrapMode=x0.REPEAT,Q.texArray.elements[Q.texArray.count++]=k,q++)),Q.size+=X.size,h+=X.size,V=k._batchLocation,this.addColors(J,G.color,G.alpha,X.attribSize,X.attribStart),this.addTextureIds(Z,V,X.attribSize,X.attribStart)}p._globalBatch=$,this.packAttributes()}packAttributes(){let $=this.points,J=this.uvs,Z=this.colors,Q=this.textureIds,q=new ArrayBuffer($.length*3*4),K=new Float32Array(q),V=new Uint32Array(q),H=0;for(let w=0;w<$.length/2;w++)K[H++]=$[w*2],K[H++]=$[w*2+1],K[H++]=J[w*2],K[H++]=J[w*2+1],V[H++]=Z[w],K[H++]=Q[w];this._buffer.update(q),this._indexBuffer.update(this.indicesUint16)}processFill($){$.holes.length?Q6.triangulate($,this):V6[$.type].triangulate($,this)}processLine($){K6($,this);for(let J=0;J<$.holes.length;J++)K6($.holes[J],this)}processHoles($){for(let J=0;J<$.length;J++){let Z=$[J];V6[Z.type].build(Z),Z.matrix&&this.transformPoints(Z.points,Z.matrix)}}calculateBounds(){let $=this._bounds;$.clear(),$.addVertexData(this.points,0,this.points.length),$.pad(this.boundsPadding,this.boundsPadding)}transformPoints($,J){for(let Z=0;Z<$.length/2;Z++){let Q=$[Z*2],q=$[Z*2+1];$[Z*2]=J.a*Q+J.c*q+J.tx,$[Z*2+1]=J.b*Q+J.d*q+J.ty}}addColors($,J,Z,Q,q=0){let K=s.shared.setValue(J).toLittleEndianNumber(),V=s.shared.setValue(K).toPremultiplied(Z);$.length=Math.max($.length,q+Q);for(let H=0;H<Q;H++)$[q+H]=V}addTextureIds($,J,Z,Q=0){$.length=Math.max($.length,Q+Z);for(let q=0;q<Z;q++)$[Q+q]=J}addUvs($,J,Z,Q,q,K=null){let V=0,H=J.length,w=Z.frame;for(;V<q;){let z=$[(Q+V)*2],X=$[(Q+V)*2+1];if(K){let W=K.a*z+K.c*X+K.tx;X=K.b*z+K.d*X+K.ty,z=W}V++,J.push(z/w.width,X/w.height)}let h=Z.baseTexture;(w.width<h.width||w.height<h.height)&&this.adjustUvs(J,Z,H,q)}adjustUvs($,J,Z,Q){let q=J.baseTexture,V=Z+Q*2,H=J.frame,w=H.width/q.width,h=H.height/q.height,z=H.x/H.width,X=H.y/H.height,W=Math.floor($[Z]+0.000001),G=Math.floor($[Z+1]+0.000001);for(let k=Z+2;k<V;k+=2)W=Math.min(W,Math.floor($[k]+0.000001)),G=Math.min(G,Math.floor($[k+1]+0.000001));z-=W,X-=G;for(let k=Z;k<V;k+=2)$[k]=($[k]+z)*w,$[k+1]=($[k+1]+X)*h}};hZ.BATCHABLE_SIZE=100;var o7=hZ;class b1{constructor(){this.color=16777215,this.alpha=1,this.texture=E.WHITE,this.matrix=null,this.visible=!1,this.reset()}clone(){let _=new b1;return _.color=this.color,_.alpha=this.alpha,_.texture=this.texture,_.matrix=this.matrix,_.visible=this.visible,_}reset(){this.color=16777215,this.alpha=1,this.texture=E.WHITE,this.matrix=null,this.visible=!1}destroy(){this.texture=null,this.matrix=null}}class H6 extends b1{constructor(){super(...arguments),this.width=0,this.alignment=0.5,this.native=!1,this.cap=t0.BUTT,this.join=R0.MITER,this.miterLimit=10}clone(){let _=new H6;return _.color=this.color,_.alpha=this.alpha,_.texture=this.texture,_.matrix=this.matrix,_.visible=this.visible,_.width=this.width,_.alignment=this.alignment,_.native=this.native,_.cap=this.cap,_.join=this.join,_.miterLimit=this.miterLimit,_}reset(){super.reset(),this.color=0,this.alignment=0.5,this.width=0,this.native=!1,this.cap=t0.BUTT,this.join=R0.MITER,this.miterLimit=10}}var s7={},i7=class _ extends q0{constructor($=null){super(),this.shader=null,this.pluginName="batch",this.currentPath=null,this.batches=[],this.batchTint=-1,this.batchDirty=-1,this.vertexData=null,this._fillStyle=new b1,this._lineStyle=new H6,this._matrix=null,this._holeMode=!1,this.state=I0.for2d(),this._geometry=$||new o7,this._geometry.refCount++,this._transformID=-1,this._tintColor=new s(16777215),this.blendMode=d.NORMAL}get geometry(){return this._geometry}clone(){return this.finishPoly(),new _(this._geometry)}set blendMode($){this.state.blendMode=$}get blendMode(){return this.state.blendMode}get tint(){return this._tintColor.value}set tint($){this._tintColor.setValue($)}get fill(){return this._fillStyle}get line(){return this._lineStyle}lineStyle($=null,J=0,Z,Q=0.5,q=!1){return typeof $=="number"&&($={width:$,color:J,alpha:Z,alignment:Q,native:q}),this.lineTextureStyle($)}lineTextureStyle($){let J={width:0,texture:E.WHITE,color:$?.texture?16777215:0,matrix:null,alignment:0.5,native:!1,cap:t0.BUTT,join:R0.MITER,miterLimit:10};$=Object.assign(J,$),this.normalizeColor($),this.currentPath&&this.startPoly();let Z=$.width>0&&$.alpha>0;return Z?($.matrix&&($.matrix=$.matrix.clone(),$.matrix.invert()),Object.assign(this._lineStyle,{visible:Z},$)):this._lineStyle.reset(),this}startPoly(){if(this.currentPath){let $=this.currentPath.points,J=this.currentPath.points.length;J>2&&(this.drawShape(this.currentPath),this.currentPath=new C_,this.currentPath.closeStroke=!1,this.currentPath.points.push($[J-2],$[J-1]))}else this.currentPath=new C_,this.currentPath.closeStroke=!1}finishPoly(){this.currentPath&&(this.currentPath.points.length>2?(this.drawShape(this.currentPath),this.currentPath=null):this.currentPath.points.length=0)}moveTo($,J){return this.startPoly(),this.currentPath.points[0]=$,this.currentPath.points[1]=J,this}lineTo($,J){this.currentPath||this.moveTo(0,0);let Z=this.currentPath.points,Q=Z[Z.length-2],q=Z[Z.length-1];return(Q!==$||q!==J)&&Z.push($,J),this}_initCurve($=0,J=0){this.currentPath?this.currentPath.points.length===0&&(this.currentPath.points=[$,J]):this.moveTo($,J)}quadraticCurveTo($,J,Z,Q){this._initCurve();let q=this.currentPath.points;return q.length===0&&this.moveTo(0,0),e1.curveTo($,J,Z,Q,q),this}bezierCurveTo($,J,Z,Q,q,K){return this._initCurve(),t1.curveTo($,J,Z,Q,q,K,this.currentPath.points),this}arcTo($,J,Z,Q,q){this._initCurve($,J);let K=this.currentPath.points,V=r1.curveTo($,J,Z,Q,q,K);if(V){let{cx:H,cy:w,radius:h,startAngle:z,endAngle:X,anticlockwise:W}=V;this.arc(H,w,h,z,X,W)}return this}arc($,J,Z,Q,q,K=!1){if(Q===q)return this;if(!K&&q<=Q?q+=p_:K&&Q<=q&&(Q+=p_),q-Q===0)return this;let V=$+Math.cos(Q)*Z,H=J+Math.sin(Q)*Z,w=this._geometry.closePointEps,h=this.currentPath?this.currentPath.points:null;if(h){let z=Math.abs(h[h.length-2]-V),X=Math.abs(h[h.length-1]-H);z<w&&X<w||h.push(V,H)}else this.moveTo(V,H),h=this.currentPath.points;return r1.arc(V,H,$,J,Z,Q,q,K,h),this}beginFill($=0,J){return this.beginTextureFill({texture:E.WHITE,color:$,alpha:J})}normalizeColor($){let J=s.shared.setValue($.color??0);$.color=J.toNumber(),$.alpha??($.alpha=J.alpha)}beginTextureFill($){let J={texture:E.WHITE,color:16777215,matrix:null};$=Object.assign(J,$),this.normalizeColor($),this.currentPath&&this.startPoly();let Z=$.alpha>0;return Z?($.matrix&&($.matrix=$.matrix.clone(),$.matrix.invert()),Object.assign(this._fillStyle,{visible:Z},$)):this._fillStyle.reset(),this}endFill(){return this.finishPoly(),this._fillStyle.reset(),this}drawRect($,J,Z,Q){return this.drawShape(new x($,J,Z,Q))}drawRoundedRect($,J,Z,Q,q){return this.drawShape(new d1($,J,Z,Q,q))}drawCircle($,J,Z){return this.drawShape(new S1($,J,Z))}drawEllipse($,J,Z,Q){return this.drawShape(new T1($,J,Z,Q))}drawPolygon(...$){let J,Z=!0,Q=$[0];Q.points?(Z=Q.closeStroke,J=Q.points):Array.isArray($[0])?J=$[0]:J=$;let q=new C_(J);return q.closeStroke=Z,this.drawShape(q),this}drawShape($){return this._holeMode?this._geometry.drawHole($,this._matrix):this._geometry.drawShape($,this._fillStyle.clone(),this._lineStyle.clone(),this._matrix),this}clear(){return this._geometry.clear(),this._lineStyle.reset(),this._fillStyle.reset(),this._boundsID++,this._matrix=null,this._holeMode=!1,this.currentPath=null,this}isFastRect(){let $=this._geometry.graphicsData;return $.length===1&&$[0].shape.type===$0.RECT&&!$[0].matrix&&!$[0].holes.length&&!($[0].lineStyle.visible&&$[0].lineStyle.width)}_render($){this.finishPoly();let J=this._geometry;J.updateBatches(),J.batchable?(this.batchDirty!==J.batchDirty&&this._populateBatches(),this._renderBatched($)):($.batch.flush(),this._renderDirect($))}_populateBatches(){let $=this._geometry,J=this.blendMode,Z=$.batches.length;this.batchTint=-1,this._transformID=-1,this.batchDirty=$.batchDirty,this.batches.length=Z,this.vertexData=new Float32Array($.points);for(let Q=0;Q<Z;Q++){let q=$.batches[Q],K=q.style.color,V=new Float32Array(this.vertexData.buffer,q.attribStart*4*2,q.attribSize*2),H=new Float32Array($.uvsFloat32.buffer,q.attribStart*4*2,q.attribSize*2),w=new Uint16Array($.indicesUint16.buffer,q.start*2,q.size),h={vertexData:V,blendMode:J,indices:w,uvs:H,_batchRGB:s.shared.setValue(K).toRgbArray(),_tintRGB:K,_texture:q.style.texture,alpha:q.style.alpha,worldAlpha:1};this.batches[Q]=h}}_renderBatched($){if(this.batches.length){$.batch.setObjectRenderer($.plugins[this.pluginName]),this.calculateVertices(),this.calculateTints();for(let J=0,Z=this.batches.length;J<Z;J++){let Q=this.batches[J];Q.worldAlpha=this.worldAlpha*Q.alpha,$.plugins[this.pluginName].render(Q)}}}_renderDirect($){let J=this._resolveDirectShader($),Z=this._geometry,Q=this.worldAlpha,q=J.uniforms,K=Z.drawCalls;q.translationMatrix=this.transform.worldTransform,s.shared.setValue(this._tintColor).premultiply(Q).toArray(q.tint),$.shader.bind(J),$.geometry.bind(Z,J),$.state.set(this.state);for(let V=0,H=K.length;V<H;V++)this._renderDrawCallDirect($,Z.drawCalls[V])}_renderDrawCallDirect($,J){let{texArray:Z,type:Q,size:q,start:K}=J,V=Z.count;for(let H=0;H<V;H++)$.texture.bind(Z.elements[H],H);$.geometry.draw(Q,q,K)}_resolveDirectShader($){let J=this.shader,Z=this.pluginName;if(!J){if(!s7[Z]){let{maxTextures:Q}=$.plugins[Z],q=new Int32Array(Q);for(let H=0;H<Q;H++)q[H]=H;let K={tint:new Float32Array([1,1,1,1]),translationMatrix:new o,default:O0.from({uSamplers:q},!0)},V=$.plugins[Z]._shader.program;s7[Z]=new j0(V,K)}J=s7[Z]}return J}_calculateBounds(){this.finishPoly();let $=this._geometry;if(!$.graphicsData.length)return;let{minX:J,minY:Z,maxX:Q,maxY:q}=$.bounds;this._bounds.addFrame(this.transform,J,Z,Q,q)}containsPoint($){return this.worldTransform.applyInverse($,_._TEMP_POINT),this._geometry.containsPoint(_._TEMP_POINT)}calculateTints(){if(this.batchTint!==this.tint){this.batchTint=this._tintColor.toNumber();for(let $=0;$<this.batches.length;$++){let J=this.batches[$];J._tintRGB=s.shared.setValue(this._tintColor).multiply(J._batchRGB).toLittleEndianNumber()}}}calculateVertices(){let $=this.transform._worldID;if(this._transformID===$)return;this._transformID=$;let J=this.transform.worldTransform,Z=J.a,Q=J.b,q=J.c,K=J.d,V=J.tx,H=J.ty,w=this._geometry.points,h=this.vertexData,z=0;for(let X=0;X<w.length;X+=2){let W=w[X],G=w[X+1];h[z++]=Z*W+q*G+V,h[z++]=K*G+Q*W+H}}closePath(){let $=this.currentPath;return $&&($.closeStroke=!0,this.finishPoly()),this}setMatrix($){return this._matrix=$,this}beginHole(){return this.finishPoly(),this._holeMode=!0,this}endHole(){return this.finishPoly(),this._holeMode=!1,this}destroy($){this._geometry.refCount--,this._geometry.refCount===0&&this._geometry.dispose(),this._matrix=null,this.currentPath=null,this._lineStyle.destroy(),this._lineStyle=null,this._fillStyle.destroy(),this._fillStyle=null,this._geometry=null,this.shader=null,this.vertexData=null,this.batches.length=0,this.batches=null,super.destroy($)}};i7.curves=e0,i7._TEMP_POINT=new u;var Z5=i7;class f8{constructor(_,$){this.uvBuffer=_,this.uvMatrix=$,this.data=null,this._bufferUpdateId=-1,this._textureUpdateId=-1,this._updateID=0}update(_){if(!_&&this._bufferUpdateId===this.uvBuffer._updateID&&this._textureUpdateId===this.uvMatrix._updateID)return;this._bufferUpdateId=this.uvBuffer._updateID,this._textureUpdateId=this.uvMatrix._updateID;let $=this.uvBuffer.data;(!this.data||this.data.length!==$.length)&&(this.data=new Float32Array($.length)),this.uvMatrix.multiplyUvs($,this.data),this._updateID++}}var a7=new u,zZ=new C_,XZ=class _ extends q0{constructor($,J,Z,Q=c0.TRIANGLES){super(),this.geometry=$,this.shader=J,this.state=Z||I0.for2d(),this.drawMode=Q,this.start=0,this.size=0,this.uvs=null,this.indices=null,this.vertexData=new Float32Array(1),this.vertexDirty=-1,this._transformID=-1,this._roundPixels=B.ROUND_PIXELS,this.batchUvs=null}get geometry(){return this._geometry}set geometry($){this._geometry!==$&&(this._geometry&&(this._geometry.refCount--,this._geometry.refCount===0&&this._geometry.dispose()),this._geometry=$,this._geometry&&this._geometry.refCount++,this.vertexDirty=-1)}get uvBuffer(){return this.geometry.buffers[1]}get verticesBuffer(){return this.geometry.buffers[0]}set material($){this.shader=$}get material(){return this.shader}set blendMode($){this.state.blendMode=$}get blendMode(){return this.state.blendMode}set roundPixels($){this._roundPixels!==$&&(this._transformID=-1),this._roundPixels=$}get roundPixels(){return this._roundPixels}get tint(){return"tint"in this.shader?this.shader.tint:null}set tint($){this.shader.tint=$}get tintValue(){return this.shader.tintValue}get texture(){return"texture"in this.shader?this.shader.texture:null}set texture($){this.shader.texture=$}_render($){let J=this.geometry.buffers[0].data;this.shader.batchable&&this.drawMode===c0.TRIANGLES&&J.length<_.BATCHABLE_SIZE*2?this._renderToBatch($):this._renderDefault($)}_renderDefault($){let J=this.shader;J.alpha=this.worldAlpha,J.update&&J.update(),$.batch.flush(),J.uniforms.translationMatrix=this.transform.worldTransform.toArray(!0),$.shader.bind(J),$.state.set(this.state),$.geometry.bind(this.geometry,J),$.geometry.draw(this.drawMode,this.size,this.start,this.geometry.instanceCount)}_renderToBatch($){let J=this.geometry,Z=this.shader;Z.uvMatrix&&(Z.uvMatrix.update(),this.calculateUvs()),this.calculateVertices(),this.indices=J.indexBuffer.data,this._tintRGB=Z._tintRGB,this._texture=Z.texture;let Q=this.material.pluginName;$.batch.setObjectRenderer($.plugins[Q]),$.plugins[Q].render(this)}calculateVertices(){let $=this.geometry.buffers[0],J=$.data,Z=$._updateID;if(Z===this.vertexDirty&&this._transformID===this.transform._worldID)return;this._transformID=this.transform._worldID,this.vertexData.length!==J.length&&(this.vertexData=new Float32Array(J.length));let Q=this.transform.worldTransform,q=Q.a,K=Q.b,V=Q.c,H=Q.d,w=Q.tx,h=Q.ty,z=this.vertexData;for(let X=0;X<z.length/2;X++){let W=J[X*2],G=J[X*2+1];z[X*2]=q*W+V*G+w,z[X*2+1]=K*W+H*G+h}if(this._roundPixels){let X=B.RESOLUTION;for(let W=0;W<z.length;++W)z[W]=Math.round(z[W]*X)/X}this.vertexDirty=Z}calculateUvs(){let $=this.geometry.buffers[1],J=this.shader;J.uvMatrix.isSimple?this.uvs=$.data:(this.batchUvs||(this.batchUvs=new f8($,J.uvMatrix)),this.batchUvs.update(),this.uvs=this.batchUvs.data)}_calculateBounds(){this.calculateVertices(),this._bounds.addVertexData(this.vertexData,0,this.vertexData.length)}containsPoint($){if(!this.getBounds().contains($.x,$.y))return!1;this.worldTransform.applyInverse($,a7);let J=this.geometry.getBuffer("aVertexPosition").data,Z=zZ.points,Q=this.geometry.getIndex().data,q=Q.length,K=this.drawMode===4?3:1;for(let V=0;V+2<q;V+=K){let H=Q[V]*2,w=Q[V+1]*2,h=Q[V+2]*2;if(Z[0]=J[H],Z[1]=J[H+1],Z[2]=J[w],Z[3]=J[w+1],Z[4]=J[h],Z[5]=J[h+1],zZ.contains(a7.x,a7.y))return!0}return!1}destroy($){super.destroy($),this._cachedTexture&&(this._cachedTexture.destroy(),this._cachedTexture=null),this.geometry=null,this.shader=null,this.state=null,this.uvs=null,this.indices=null,this.vertexData=null}};XZ.BATCHABLE_SIZE=100;var B1=XZ;class F1 extends T0{constructor(_,$,J){super();let Z=new _0(_),Q=new _0($,!0),q=new _0(J,!0,!0);this.addAttribute("aVertexPosition",Z,2,!1,g.FLOAT).addAttribute("aTextureCoord",Q,2,!1,g.FLOAT).addIndex(q),this._updateId=-1}get vertexDirtyId(){return this.buffers[0]._updateID}}var GZ=`varying vec2 vTextureCoord;
909
909
  uniform vec4 uColor;
910
910
 
911
911
  uniform sampler2D uSampler;
@@ -914,7 +914,7 @@ void main(void)
914
914
  {
915
915
  gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;
916
916
  }
917
- `;var kZ=`attribute vec2 aVertexPosition;
917
+ `;var WZ=`attribute vec2 aVertexPosition;
918
918
  attribute vec2 aTextureCoord;
919
919
 
920
920
  uniform mat3 projectionMatrix;
@@ -929,7 +929,7 @@ void main(void)
929
929
 
930
930
  vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;
931
931
  }
932
- `;class s_ extends j0{constructor(_,$){let J={uSampler:_,alpha:1,uTextureMatrix:o.IDENTITY,uColor:new Float32Array([1,1,1,1])};$=Object.assign({tint:16777215,alpha:1,pluginName:"batch"},$),$.uniforms&&Object.assign(J,$.uniforms),super($.program||P0.from(kZ,WZ),J),this._colorDirty=!1,this.uvMatrix=new W1(_),this.batchable=$.program===void 0,this.pluginName=$.pluginName,this._tintColor=new s($.tint),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0,this.alpha=$.alpha}get texture(){return this.uniforms.uSampler}set texture(_){this.uniforms.uSampler!==_&&(!this.uniforms.uSampler.baseTexture.alphaMode!=!_.baseTexture.alphaMode&&(this._colorDirty=!0),this.uniforms.uSampler=_,this.uvMatrix.texture=_)}set alpha(_){_!==this._alpha&&(this._alpha=_,this._colorDirty=!0)}get alpha(){return this._alpha}set tint(_){_!==this.tint&&(this._tintColor.setValue(_),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0)}get tint(){return this._tintColor.value}get tintValue(){return this._tintColor.toNumber()}update(){if(this._colorDirty){this._colorDirty=!1;let _=this.texture.baseTexture.alphaMode;s.shared.setValue(this._tintColor).premultiply(this._alpha,_).toArray(this.uniforms.uColor)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class E8{constructor(_,$,J){this.geometry=new T0,this.indexBuffer=null,this.size=J,this.dynamicProperties=[],this.staticProperties=[];for(let Z=0;Z<_.length;++Z){let Q=_[Z];Q={attributeName:Q.attributeName,size:Q.size,uploadFunction:Q.uploadFunction,type:Q.type||g.FLOAT,offset:Q.offset},$[Z]?this.dynamicProperties.push(Q):this.staticProperties.push(Q)}this.staticStride=0,this.staticBuffer=null,this.staticData=null,this.staticDataUint32=null,this.dynamicStride=0,this.dynamicBuffer=null,this.dynamicData=null,this.dynamicDataUint32=null,this._updateID=0,this.initBuffers()}initBuffers(){let _=this.geometry,$=0;this.indexBuffer=new _0(P.createIndicesForQuads(this.size),!0,!0),_.addIndex(this.indexBuffer),this.dynamicStride=0;for(let q=0;q<this.dynamicProperties.length;++q){let K=this.dynamicProperties[q];K.offset=$,$+=K.size,this.dynamicStride+=K.size}let J=new ArrayBuffer(this.size*this.dynamicStride*4*4);this.dynamicData=new Float32Array(J),this.dynamicDataUint32=new Uint32Array(J),this.dynamicBuffer=new _0(this.dynamicData,!1,!1);let Z=0;this.staticStride=0;for(let q=0;q<this.staticProperties.length;++q){let K=this.staticProperties[q];K.offset=Z,Z+=K.size,this.staticStride+=K.size}let Q=new ArrayBuffer(this.size*this.staticStride*4*4);this.staticData=new Float32Array(Q),this.staticDataUint32=new Uint32Array(Q),this.staticBuffer=new _0(this.staticData,!0,!1);for(let q=0;q<this.dynamicProperties.length;++q){let K=this.dynamicProperties[q];_.addAttribute(K.attributeName,this.dynamicBuffer,0,K.type===g.UNSIGNED_BYTE,K.type,this.dynamicStride*4,K.offset*4)}for(let q=0;q<this.staticProperties.length;++q){let K=this.staticProperties[q];_.addAttribute(K.attributeName,this.staticBuffer,0,K.type===g.UNSIGNED_BYTE,K.type,this.staticStride*4,K.offset*4)}}uploadDynamic(_,$,J){for(let Z=0;Z<this.dynamicProperties.length;Z++){let Q=this.dynamicProperties[Z];Q.uploadFunction(_,$,J,Q.type===g.UNSIGNED_BYTE?this.dynamicDataUint32:this.dynamicData,this.dynamicStride,Q.offset)}this.dynamicBuffer._updateID++}uploadStatic(_,$,J){for(let Z=0;Z<this.staticProperties.length;Z++){let Q=this.staticProperties[Z];Q.uploadFunction(_,$,J,Q.type===g.UNSIGNED_BYTE?this.staticDataUint32:this.staticData,this.staticStride,Q.offset)}this.staticBuffer._updateID++}destroy(){this.indexBuffer=null,this.dynamicProperties=null,this.dynamicBuffer=null,this.dynamicData=null,this.dynamicDataUint32=null,this.staticProperties=null,this.staticBuffer=null,this.staticData=null,this.staticDataUint32=null,this.geometry.destroy()}}var CZ=`varying vec2 vTextureCoord;
932
+ `;class s_ extends j0{constructor(_,$){let J={uSampler:_,alpha:1,uTextureMatrix:o.IDENTITY,uColor:new Float32Array([1,1,1,1])};$=Object.assign({tint:16777215,alpha:1,pluginName:"batch"},$),$.uniforms&&Object.assign(J,$.uniforms),super($.program||P0.from(WZ,GZ),J),this._colorDirty=!1,this.uvMatrix=new W1(_),this.batchable=$.program===void 0,this.pluginName=$.pluginName,this._tintColor=new s($.tint),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0,this.alpha=$.alpha}get texture(){return this.uniforms.uSampler}set texture(_){this.uniforms.uSampler!==_&&(!this.uniforms.uSampler.baseTexture.alphaMode!=!_.baseTexture.alphaMode&&(this._colorDirty=!0),this.uniforms.uSampler=_,this.uvMatrix.texture=_)}set alpha(_){_!==this._alpha&&(this._alpha=_,this._colorDirty=!0)}get alpha(){return this._alpha}set tint(_){_!==this.tint&&(this._tintColor.setValue(_),this._tintRGB=this._tintColor.toLittleEndianNumber(),this._colorDirty=!0)}get tint(){return this._tintColor.value}get tintValue(){return this._tintColor.toNumber()}update(){if(this._colorDirty){this._colorDirty=!1;let _=this.texture.baseTexture.alphaMode;s.shared.setValue(this._tintColor).premultiply(this._alpha,_).toArray(this.uniforms.uColor)}this.uvMatrix.update()&&(this.uniforms.uTextureMatrix=this.uvMatrix.mapCoord)}}class E8{constructor(_,$,J){this.geometry=new T0,this.indexBuffer=null,this.size=J,this.dynamicProperties=[],this.staticProperties=[];for(let Z=0;Z<_.length;++Z){let Q=_[Z];Q={attributeName:Q.attributeName,size:Q.size,uploadFunction:Q.uploadFunction,type:Q.type||g.FLOAT,offset:Q.offset},$[Z]?this.dynamicProperties.push(Q):this.staticProperties.push(Q)}this.staticStride=0,this.staticBuffer=null,this.staticData=null,this.staticDataUint32=null,this.dynamicStride=0,this.dynamicBuffer=null,this.dynamicData=null,this.dynamicDataUint32=null,this._updateID=0,this.initBuffers()}initBuffers(){let _=this.geometry,$=0;this.indexBuffer=new _0(P.createIndicesForQuads(this.size),!0,!0),_.addIndex(this.indexBuffer),this.dynamicStride=0;for(let q=0;q<this.dynamicProperties.length;++q){let K=this.dynamicProperties[q];K.offset=$,$+=K.size,this.dynamicStride+=K.size}let J=new ArrayBuffer(this.size*this.dynamicStride*4*4);this.dynamicData=new Float32Array(J),this.dynamicDataUint32=new Uint32Array(J),this.dynamicBuffer=new _0(this.dynamicData,!1,!1);let Z=0;this.staticStride=0;for(let q=0;q<this.staticProperties.length;++q){let K=this.staticProperties[q];K.offset=Z,Z+=K.size,this.staticStride+=K.size}let Q=new ArrayBuffer(this.size*this.staticStride*4*4);this.staticData=new Float32Array(Q),this.staticDataUint32=new Uint32Array(Q),this.staticBuffer=new _0(this.staticData,!0,!1);for(let q=0;q<this.dynamicProperties.length;++q){let K=this.dynamicProperties[q];_.addAttribute(K.attributeName,this.dynamicBuffer,0,K.type===g.UNSIGNED_BYTE,K.type,this.dynamicStride*4,K.offset*4)}for(let q=0;q<this.staticProperties.length;++q){let K=this.staticProperties[q];_.addAttribute(K.attributeName,this.staticBuffer,0,K.type===g.UNSIGNED_BYTE,K.type,this.staticStride*4,K.offset*4)}}uploadDynamic(_,$,J){for(let Z=0;Z<this.dynamicProperties.length;Z++){let Q=this.dynamicProperties[Z];Q.uploadFunction(_,$,J,Q.type===g.UNSIGNED_BYTE?this.dynamicDataUint32:this.dynamicData,this.dynamicStride,Q.offset)}this.dynamicBuffer._updateID++}uploadStatic(_,$,J){for(let Z=0;Z<this.staticProperties.length;Z++){let Q=this.staticProperties[Z];Q.uploadFunction(_,$,J,Q.type===g.UNSIGNED_BYTE?this.staticDataUint32:this.staticData,this.staticStride,Q.offset)}this.staticBuffer._updateID++}destroy(){this.indexBuffer=null,this.dynamicProperties=null,this.dynamicBuffer=null,this.dynamicData=null,this.dynamicDataUint32=null,this.staticProperties=null,this.staticBuffer=null,this.staticData=null,this.staticDataUint32=null,this.geometry.destroy()}}var kZ=`varying vec2 vTextureCoord;
933
933
  varying vec4 vColor;
934
934
 
935
935
  uniform sampler2D uSampler;
@@ -937,7 +937,7 @@ uniform sampler2D uSampler;
937
937
  void main(void){
938
938
  vec4 color = texture2D(uSampler, vTextureCoord) * vColor;
939
939
  gl_FragColor = color;
940
- }`;var NZ=`attribute vec2 aVertexPosition;
940
+ }`;var CZ=`attribute vec2 aVertexPosition;
941
941
  attribute vec2 aTextureCoord;
942
942
  attribute vec4 aColor;
943
943
 
@@ -962,8 +962,8 @@ void main(void){
962
962
  vTextureCoord = aTextureCoord;
963
963
  vColor = aColor * uColor;
964
964
  }
965
- `;class v8 extends Y_{constructor(_){super(_),this.shader=null,this.properties=null,this.tempMatrix=new o,this.properties=[{attributeName:"aVertexPosition",size:2,uploadFunction:this.uploadVertices,offset:0},{attributeName:"aPositionCoord",size:2,uploadFunction:this.uploadPosition,offset:0},{attributeName:"aRotation",size:1,uploadFunction:this.uploadRotation,offset:0},{attributeName:"aTextureCoord",size:2,uploadFunction:this.uploadUvs,offset:0},{attributeName:"aColor",size:1,type:g.UNSIGNED_BYTE,uploadFunction:this.uploadTint,offset:0}],this.shader=j0.from(NZ,CZ,{}),this.state=I0.for2d()}render(_){let{children:$,_maxSize:J,_batchSize:Z}=_,Q=this.renderer,q=$.length;if(q===0)return;q>J&&!_.autoResize&&(q=J);let K=_._buffers;K||(K=_._buffers=this.generateBuffers(_));let V=$[0]._texture.baseTexture,H=V.alphaMode>0;this.state.blendMode=P.correctBlendMode(_.blendMode,H),Q.state.set(this.state);let w=Q.gl,h=_.worldTransform.copyTo(this.tempMatrix);h.prepend(Q.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=h.toArray(!0),this.shader.uniforms.uColor=s.shared.setValue(_.tintRgb).premultiply(_.worldAlpha,H).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=V,this.renderer.shader.bind(this.shader);let z=!1;for(let X=0,W=0;X<q;X+=Z,W+=1){let G=q-X;G>Z&&(G=Z),W>=K.length&&K.push(this._generateOneMoreBuffer(_));let k=K[W];k.uploadDynamic($,X,G);let C=_._bufferUpdateIDs[W]||0;z=z||k._updateID<C,z&&(k._updateID=_._updateID,k.uploadStatic($,X,G)),Q.geometry.bind(k.geometry),w.drawElements(w.TRIANGLES,G*6,w.UNSIGNED_SHORT,0)}}generateBuffers(_){let $=[],J=_._maxSize,Z=_._batchSize,Q=_._properties;for(let q=0;q<J;q+=Z)$.push(new E8(this.properties,Q,Z));return $}_generateOneMoreBuffer(_){let{_batchSize:$,_properties:J}=_;return new E8(this.properties,J,$)}uploadVertices(_,$,J,Z,Q,q){let K=0,V=0,H=0,w=0;for(let h=0;h<J;++h){let z=_[$+h],X=z._texture,W=z.scale.x,G=z.scale.y,k=X.trim,C=X.orig;k?(V=k.x-z.anchor.x*C.width,K=V+k.width,w=k.y-z.anchor.y*C.height,H=w+k.height):(K=C.width*(1-z.anchor.x),V=C.width*-z.anchor.x,H=C.height*(1-z.anchor.y),w=C.height*-z.anchor.y),Z[q]=V*W,Z[q+1]=w*G,Z[q+Q]=K*W,Z[q+Q+1]=w*G,Z[q+Q*2]=K*W,Z[q+Q*2+1]=H*G,Z[q+Q*3]=V*W,Z[q+Q*3+1]=H*G,q+=Q*4}}uploadPosition(_,$,J,Z,Q,q){for(let K=0;K<J;K++){let V=_[$+K].position;Z[q]=V.x,Z[q+1]=V.y,Z[q+Q]=V.x,Z[q+Q+1]=V.y,Z[q+Q*2]=V.x,Z[q+Q*2+1]=V.y,Z[q+Q*3]=V.x,Z[q+Q*3+1]=V.y,q+=Q*4}}uploadRotation(_,$,J,Z,Q,q){for(let K=0;K<J;K++){let V=_[$+K].rotation;Z[q]=V,Z[q+Q]=V,Z[q+Q*2]=V,Z[q+Q*3]=V,q+=Q*4}}uploadUvs(_,$,J,Z,Q,q){for(let K=0;K<J;++K){let V=_[$+K]._texture._uvs;V?(Z[q]=V.x0,Z[q+1]=V.y0,Z[q+Q]=V.x1,Z[q+Q+1]=V.y1,Z[q+Q*2]=V.x2,Z[q+Q*2+1]=V.y2,Z[q+Q*3]=V.x3,Z[q+Q*3+1]=V.y3,q+=Q*4):(Z[q]=0,Z[q+1]=0,Z[q+Q]=0,Z[q+Q+1]=0,Z[q+Q*2]=0,Z[q+Q*2+1]=0,Z[q+Q*3]=0,Z[q+Q*3+1]=0,q+=Q*4)}}uploadTint(_,$,J,Z,Q,q){for(let K=0;K<J;++K){let V=_[$+K],H=s.shared.setValue(V._tintRGB).toPremultiplied(V.alpha,V.texture.baseTexture.alphaMode>0);Z[q]=H,Z[q+Q]=H,Z[q+Q*2]=H,Z[q+Q*3]=H,q+=Q*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}v8.extension={name:"particle",type:b.RendererPlugin};O.add(v8);var i_=((_)=>(_[_.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",_[_.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",_))(i_||{});var c8={willReadFrequently:!0},F_=class _{static get experimentalLetterSpacingSupported(){let $=_._experimentalLetterSpacingSupported;if($!==void 0){let J=B.ADAPTER.getCanvasRenderingContext2D().prototype;$=_._experimentalLetterSpacingSupported="letterSpacing"in J||"textLetterSpacing"in J}return $}constructor($,J,Z,Q,q,K,V,H,w){this.text=$,this.style=J,this.width=Z,this.height=Q,this.lines=q,this.lineWidths=K,this.lineHeight=V,this.maxLineWidth=H,this.fontProperties=w}static measureText($,J,Z,Q=_._canvas){Z=Z??J.wordWrap;let q=J.toFontString(),K=_.measureFont(q);K.fontSize===0&&(K.fontSize=J.fontSize,K.ascent=J.fontSize);let V=Q.getContext("2d",c8);V.font=q;let H=(Z?_.wordWrap($,J,Q):$).split(/(?:\r\n|\r|\n)/),w=Array(H.length),h=0;for(let G=0;G<H.length;G++){let k=_._measureText(H[G],J.letterSpacing,V);w[G]=k,h=Math.max(h,k)}let z=h+J.strokeThickness;J.dropShadow&&(z+=J.dropShadowDistance);let X=J.lineHeight||K.fontSize+J.strokeThickness,W=Math.max(X,K.fontSize+J.strokeThickness*2)+J.leading+(H.length-1)*(X+J.leading);return J.dropShadow&&(W+=J.dropShadowDistance),new _($,J,z,W,H,w,X+J.leading,h,K)}static _measureText($,J,Z){let Q=!1;_.experimentalLetterSpacingSupported&&(_.experimentalLetterSpacing?(Z.letterSpacing=`${J}px`,Z.textLetterSpacing=`${J}px`,Q=!0):(Z.letterSpacing="0px",Z.textLetterSpacing="0px"));let q=Z.measureText($).width;return q>0&&(Q?q-=J:q+=(_.graphemeSegmenter($).length-1)*J),q}static wordWrap($,J,Z=_._canvas){let Q=Z.getContext("2d",c8),q=0,K="",V="",H=Object.create(null),{letterSpacing:w,whiteSpace:h}=J,z=_.collapseSpaces(h),X=_.collapseNewlines(h),W=!z,G=J.wordWrapWidth+w,k=_.tokenize($);for(let C=0;C<k.length;C++){let Y=k[C];if(_.isNewline(Y)){if(!X){V+=_.addLine(K),W=!z,K="",q=0;continue}Y=" "}if(z){let N=_.isBreakingSpace(Y),I=_.isBreakingSpace(K[K.length-1]);if(N&&I)continue}let U=_.getFromCache(Y,w,H,Q);if(U>G)if(K!==""&&(V+=_.addLine(K),K="",q=0),_.canBreakWords(Y,J.breakWords)){let N=_.wordWrapSplit(Y);for(let I=0;I<N.length;I++){let f=N[I],y=f,D=1;for(;N[I+D];){let v=N[I+D];if(!_.canBreakChars(y,v,Y,I,J.breakWords))f+=v;else break;y=v,D++}I+=D-1;let L=_.getFromCache(f,w,H,Q);L+q>G&&(V+=_.addLine(K),W=!1,K="",q=0),K+=f,q+=L}}else{K.length>0&&(V+=_.addLine(K),K="",q=0);let N=C===k.length-1;V+=_.addLine(Y,!N),W=!1,K="",q=0}else U+q>G&&(W=!1,V+=_.addLine(K),K="",q=0),(K.length>0||!_.isBreakingSpace(Y)||W)&&(K+=Y,q+=U)}return V+=_.addLine(K,!1),V}static addLine($,J=!0){return $=_.trimRight($),$=J?`${$}
966
- `:$,$}static getFromCache($,J,Z,Q){let q=Z[$];return typeof q!="number"&&(q=_._measureText($,J,Q)+J,Z[$]=q),q}static collapseSpaces($){return $==="normal"||$==="pre-line"}static collapseNewlines($){return $==="normal"}static trimRight($){if(typeof $!="string")return"";for(let J=$.length-1;J>=0;J--){let Z=$[J];if(!_.isBreakingSpace(Z))break;$=$.slice(0,-1)}return $}static isNewline($){return typeof $!="string"?!1:_._newlines.includes($.charCodeAt(0))}static isBreakingSpace($,J){return typeof $!="string"?!1:_._breakingSpaces.includes($.charCodeAt(0))}static tokenize($){let J=[],Z="";if(typeof $!="string")return J;for(let Q=0;Q<$.length;Q++){let q=$[Q],K=$[Q+1];if(_.isBreakingSpace(q,K)||_.isNewline(q)){Z!==""&&(J.push(Z),Z=""),J.push(q);continue}Z+=q}return Z!==""&&J.push(Z),J}static canBreakWords($,J){return J}static canBreakChars($,J,Z,Q,q){return!0}static wordWrapSplit($){return _.graphemeSegmenter($)}static measureFont($){if(_._fonts[$])return _._fonts[$];let J={ascent:0,descent:0,fontSize:0},Z=_._canvas,Q=_._context;Q.font=$;let q=_.METRICS_STRING+_.BASELINE_SYMBOL,K=Math.ceil(Q.measureText(q).width),V=Math.ceil(Q.measureText(_.BASELINE_SYMBOL).width),H=Math.ceil(_.HEIGHT_MULTIPLIER*V);if(V=V*_.BASELINE_MULTIPLIER|0,K===0||H===0)return _._fonts[$]=J,J;Z.width=K,Z.height=H,Q.fillStyle="#f00",Q.fillRect(0,0,K,H),Q.font=$,Q.textBaseline="alphabetic",Q.fillStyle="#000",Q.fillText(q,0,V);let w=Q.getImageData(0,0,K,H).data,h=w.length,z=K*4,X=0,W=0,G=!1;for(X=0;X<V;++X){for(let k=0;k<z;k+=4)if(w[W+k]!==255){G=!0;break}if(!G)W+=z;else break}for(J.ascent=V-X,W=h-z,G=!1,X=H;X>V;--X){for(let k=0;k<z;k+=4)if(w[W+k]!==255){G=!0;break}if(!G)W-=z;else break}return J.descent=X-V,J.fontSize=J.ascent+J.descent,_._fonts[$]=J,J}static clearMetrics($=""){$?delete _._fonts[$]:_._fonts={}}static get _canvas(){if(!_.__canvas){let $;try{let J=new OffscreenCanvas(0,0);if(J.getContext("2d",c8)?.measureText)return _.__canvas=J,J;$=B.ADAPTER.createCanvas()}catch{$=B.ADAPTER.createCanvas()}$.width=$.height=10,_.__canvas=$}return _.__canvas}static get _context(){return _.__context||(_.__context=_._canvas.getContext("2d",c8)),_.__context}};F_.METRICS_STRING="|ÉqÅ",F_.BASELINE_SYMBOL="M",F_.BASELINE_MULTIPLIER=1.4,F_.HEIGHT_MULTIPLIER=2,F_.graphemeSegmenter=(()=>{if(typeof Intl?.Segmenter=="function"){let _=new Intl.Segmenter;return($)=>[..._.segment($)].map((J)=>J.segment)}return(_)=>[..._]})(),F_.experimentalLetterSpacing=!1,F_._fonts={},F_._newlines=[10,13],F_._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];var __=F_;var xq=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],YZ=class _{constructor($){this.styleID=0,this.reset(),r9(this,$,$)}clone(){let $={};return r9($,this,_.defaultStyle),new _($)}reset(){r9(this,_.defaultStyle,_.defaultStyle)}get align(){return this._align}set align($){this._align!==$&&(this._align=$,this.styleID++)}get breakWords(){return this._breakWords}set breakWords($){this._breakWords!==$&&(this._breakWords=$,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow($){this._dropShadow!==$&&(this._dropShadow=$,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha($){this._dropShadowAlpha!==$&&(this._dropShadowAlpha=$,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle($){this._dropShadowAngle!==$&&(this._dropShadowAngle=$,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur($){this._dropShadowBlur!==$&&(this._dropShadowBlur=$,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor($){let J=a9($);this._dropShadowColor!==J&&(this._dropShadowColor=J,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance($){this._dropShadowDistance!==$&&(this._dropShadowDistance=$,this.styleID++)}get fill(){return this._fill}set fill($){let J=a9($);this._fill!==J&&(this._fill=J,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType($){this._fillGradientType!==$&&(this._fillGradientType=$,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops($){mq(this._fillGradientStops,$)||(this._fillGradientStops=$,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily($){this.fontFamily!==$&&(this._fontFamily=$,this.styleID++)}get fontSize(){return this._fontSize}set fontSize($){this._fontSize!==$&&(this._fontSize=$,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle($){this._fontStyle!==$&&(this._fontStyle=$,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant($){this._fontVariant!==$&&(this._fontVariant=$,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight($){this._fontWeight!==$&&(this._fontWeight=$,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing($){this._letterSpacing!==$&&(this._letterSpacing=$,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight($){this._lineHeight!==$&&(this._lineHeight=$,this.styleID++)}get leading(){return this._leading}set leading($){this._leading!==$&&(this._leading=$,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin($){this._lineJoin!==$&&(this._lineJoin=$,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit($){this._miterLimit!==$&&(this._miterLimit=$,this.styleID++)}get padding(){return this._padding}set padding($){this._padding!==$&&(this._padding=$,this.styleID++)}get stroke(){return this._stroke}set stroke($){let J=a9($);this._stroke!==J&&(this._stroke=J,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness($){this._strokeThickness!==$&&(this._strokeThickness=$,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline($){this._textBaseline!==$&&(this._textBaseline=$,this.styleID++)}get trim(){return this._trim}set trim($){this._trim!==$&&(this._trim=$,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace($){this._whiteSpace!==$&&(this._whiteSpace=$,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap($){this._wordWrap!==$&&(this._wordWrap=$,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth($){this._wordWrapWidth!==$&&(this._wordWrapWidth=$,this.styleID++)}toFontString(){let $=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize,J=this.fontFamily;Array.isArray(this.fontFamily)||(J=this.fontFamily.split(","));for(let Z=J.length-1;Z>=0;Z--){let Q=J[Z].trim();!/([\"\'])[^\'\"]+\1/.test(Q)&&!xq.includes(Q)&&(Q=`"${Q}"`),J[Z]=Q}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${$} ${J.join(",")}`}};YZ.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:i_.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};var g0=YZ;function a9(_){let $=s.shared,J=(Z)=>{let Q=$.setValue(Z);return Q.alpha===1?Q.toHex():Q.toRgbaString()};return Array.isArray(_)?_.map(J):J(_)}function mq(_,$){if(!Array.isArray(_)||!Array.isArray($)||_.length!==$.length)return!1;for(let J=0;J<_.length;++J)if(_[J]!==$[J])return!1;return!0}function r9(_,$,J){for(let Z in J)Array.isArray($[Z])?_[Z]=$[Z].slice():_[Z]=$[Z]}var uq={texture:!0,children:!1,baseTexture:!0},UZ=class _ extends L0{constructor($,J,Z){let Q=!1;Z||(Z=B.ADAPTER.createCanvas(),Q=!0),Z.width=3,Z.height=3;let q=E.from(Z);q.orig=new x,q.trim=new x,super(q),this._ownCanvas=Q,this.canvas=Z,this.context=Z.getContext("2d",{willReadFrequently:!0}),this._resolution=_.defaultResolution??B.RESOLUTION,this._autoResolution=_.defaultAutoResolution,this._text=null,this._style=null,this._styleListener=null,this._font="",this.text=$,this.style=J,this.localStyleID=-1}static get experimentalLetterSpacing(){return __.experimentalLetterSpacing}static set experimentalLetterSpacing($){P.deprecation("7.1.0","Text.experimentalLetterSpacing is deprecated, use TextMetrics.experimentalLetterSpacing"),__.experimentalLetterSpacing=$}updateText($){let J=this._style;if(this.localStyleID!==J.styleID&&(this.dirty=!0,this.localStyleID=J.styleID),!this.dirty&&$)return;this._font=this._style.toFontString();let Z=this.context,Q=__.measureText(this._text||" ",this._style,this._style.wordWrap,this.canvas),q=Q.width,K=Q.height,V=Q.lines,H=Q.lineHeight,w=Q.lineWidths,h=Q.maxLineWidth,z=Q.fontProperties;this.canvas.width=Math.ceil(Math.ceil(Math.max(1,q)+J.padding*2)*this._resolution),this.canvas.height=Math.ceil(Math.ceil(Math.max(1,K)+J.padding*2)*this._resolution),Z.scale(this._resolution,this._resolution),Z.clearRect(0,0,this.canvas.width,this.canvas.height),Z.font=this._font,Z.lineWidth=J.strokeThickness,Z.textBaseline=J.textBaseline,Z.lineJoin=J.lineJoin,Z.miterLimit=J.miterLimit;let X,W,G=J.dropShadow?2:1;for(let k=0;k<G;++k){let C=J.dropShadow&&k===0,Y=C?Math.ceil(Math.max(1,K)+J.padding*2):0,U=Y*this._resolution;if(C){Z.fillStyle="black",Z.strokeStyle="black";let I=J.dropShadowColor,f=J.dropShadowBlur*this._resolution,y=J.dropShadowDistance*this._resolution;Z.shadowColor=s.shared.setValue(I).setAlpha(J.dropShadowAlpha).toRgbaString(),Z.shadowBlur=f,Z.shadowOffsetX=Math.cos(J.dropShadowAngle)*y,Z.shadowOffsetY=Math.sin(J.dropShadowAngle)*y+U}else Z.fillStyle=this._generateFillStyle(J,V,Q),Z.strokeStyle=J.stroke,Z.shadowColor="black",Z.shadowBlur=0,Z.shadowOffsetX=0,Z.shadowOffsetY=0;let N=(H-z.fontSize)/2;H-z.fontSize<0&&(N=0);for(let I=0;I<V.length;I++)X=J.strokeThickness/2,W=J.strokeThickness/2+I*H+z.ascent+N,J.align==="right"?X+=h-w[I]:J.align==="center"&&(X+=(h-w[I])/2),J.stroke&&J.strokeThickness&&this.drawLetterSpacing(V[I],X+J.padding,W+J.padding-Y,!0),J.fill&&this.drawLetterSpacing(V[I],X+J.padding,W+J.padding-Y)}this.updateTexture()}drawLetterSpacing($,J,Z,Q=!1){let q=this._style.letterSpacing,K=!1;if(__.experimentalLetterSpacingSupported&&(__.experimentalLetterSpacing?(this.context.letterSpacing=`${q}px`,this.context.textLetterSpacing=`${q}px`,K=!0):(this.context.letterSpacing="0px",this.context.textLetterSpacing="0px")),q===0||K){Q?this.context.strokeText($,J,Z):this.context.fillText($,J,Z);return}let V=J,H=__.graphemeSegmenter($),w=this.context.measureText($).width,h=0;for(let z=0;z<H.length;++z){let X=H[z];Q?this.context.strokeText(X,V,Z):this.context.fillText(X,V,Z);let W="";for(let G=z+1;G<H.length;++G)W+=H[G];h=this.context.measureText(W).width,V+=w-h+q,w=h}}updateTexture(){let $=this.canvas;if(this._style.trim){let K=P.trimCanvas($);K.data&&($.width=K.width,$.height=K.height,this.context.putImageData(K.data,0,0))}let J=this._texture,Z=this._style,Q=Z.trim?0:Z.padding,q=J.baseTexture;J.trim.width=J._frame.width=$.width/this._resolution,J.trim.height=J._frame.height=$.height/this._resolution,J.trim.x=-Q,J.trim.y=-Q,J.orig.width=J._frame.width-Q*2,J.orig.height=J._frame.height-Q*2,this._onTextureUpdate(),q.setRealSize($.width,$.height,this._resolution),J.updateUvs(),this.dirty=!1}_render($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0),this.updateText(!0),super._render($)}updateTransform(){this.updateText(!0),super.updateTransform()}getBounds($,J){return this.updateText(!0),this._textureID===-1&&($=!1),super.getBounds($,J)}getLocalBounds($){return this.updateText(!0),super.getLocalBounds.call(this,$)}_calculateBounds(){this.calculateVertices(),this._bounds.addQuad(this.vertexData)}_generateFillStyle($,J,Z){let Q=$.fill;if(Array.isArray(Q)){if(Q.length===1)return Q[0]}else return Q;let q,K=$.dropShadow?$.dropShadowDistance:0,V=$.padding||0,H=this.canvas.width/this._resolution-K-V*2,w=this.canvas.height/this._resolution-K-V*2,h=Q.slice(),z=$.fillGradientStops.slice();if(!z.length){let X=h.length+1;for(let W=1;W<X;++W)z.push(W/X)}if(h.unshift(Q[0]),z.unshift(0),h.push(Q[Q.length-1]),z.push(1),$.fillGradientType===i_.LINEAR_VERTICAL){q=this.context.createLinearGradient(H/2,V,H/2,w+V);let X=Z.fontProperties.fontSize+$.strokeThickness;for(let W=0;W<J.length;W++){let G=Z.lineHeight*(W-1)+X,k=Z.lineHeight*W,C=k;W>0&&G>k&&(C=(k+G)/2);let Y=k+X,U=Z.lineHeight*(W+1),N=Y;W+1<J.length&&U<Y&&(N=(Y+U)/2);let I=(N-C)/w;for(let f=0;f<h.length;f++){let y=0;typeof z[f]=="number"?y=z[f]:y=f/h.length;let D=Math.min(1,Math.max(0,C/w+y*I));D=Number(D.toFixed(5)),q.addColorStop(D,h[f])}}}else{q=this.context.createLinearGradient(V,w/2,H+V,w/2);let X=h.length+1,W=1;for(let G=0;G<h.length;G++){let k;typeof z[G]=="number"?k=z[G]:k=W/X,q.addColorStop(k,h[G]),W++}}return q}destroy($){typeof $=="boolean"&&($={children:$}),$=Object.assign({},uq,$),super.destroy($),this._ownCanvas&&(this.canvas.height=this.canvas.width=0),this.context=null,this.canvas=null,this._style=null}get width(){return this.updateText(!0),Math.abs(this.scale.x)*this._texture.orig.width}set width($){this.updateText(!0);let J=P.sign(this.scale.x)||1;this.scale.x=J*$/this._texture.orig.width,this._width=$}get height(){return this.updateText(!0),Math.abs(this.scale.y)*this._texture.orig.height}set height($){this.updateText(!0);let J=P.sign(this.scale.y)||1;this.scale.y=J*$/this._texture.orig.height,this._height=$}get style(){return this._style}set style($){$=$||{},$ instanceof g0?this._style=$:this._style=new g0($),this.localStyleID=-1,this.dirty=!0}get text(){return this._text}set text($){$=String($??""),this._text!==$&&(this._text=$,this.dirty=!0)}get resolution(){return this._resolution}set resolution($){this._autoResolution=!1,this._resolution!==$&&(this._resolution=$,this.dirty=!0)}};UZ.defaultAutoResolution=!0;var y8=UZ;class S8{constructor(_){this.maxItemsPerFrame=_,this.itemsLeft=0}beginFrame(){this.itemsLeft=this.maxItemsPerFrame}allowedToUpload(){return this.itemsLeft-- >0}}function nq(_,$){let J=!1;if(_?._textures?.length){for(let Z=0;Z<_._textures.length;Z++)if(_._textures[Z]instanceof E){let Q=_._textures[Z].baseTexture;$.includes(Q)||($.push(Q),J=!0)}}return J}function lq(_,$){if(_.baseTexture instanceof p){let J=_.baseTexture;return $.includes(J)||$.push(J),!0}return!1}function oq(_,$){if(_._texture&&_._texture instanceof E){let J=_._texture.baseTexture;return $.includes(J)||$.push(J),!0}return!1}function sq(_,$){return $ instanceof y8?($.updateText(!0),!0):!1}function iq(_,$){if($ instanceof g0){let J=$.toFontString();return __.measureFont(J),!0}return!1}function aq(_,$){if(_ instanceof y8){$.includes(_.style)||$.push(_.style),$.includes(_)||$.push(_);let J=_._texture.baseTexture;return $.includes(J)||$.push(J),!0}return!1}function rq(_,$){return _ instanceof g0?($.includes(_)||$.push(_),!0):!1}var IZ=class _{constructor($){this.limiter=new S8(_.uploadsPerFrame),this.renderer=$,this.uploadHookHelper=null,this.queue=[],this.addHooks=[],this.uploadHooks=[],this.completes=[],this.ticking=!1,this.delayedTick=()=>{this.queue&&this.prepareItems()},this.registerFindHook(aq),this.registerFindHook(rq),this.registerFindHook(nq),this.registerFindHook(lq),this.registerFindHook(oq),this.registerUploadHook(sq),this.registerUploadHook(iq)}upload($){return new Promise((J)=>{$&&this.add($),this.queue.length?(this.completes.push(J),this.ticking||(this.ticking=!0,k0.system.addOnce(this.tick,this,n0.UTILITY))):J()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){let $=this.queue[0],J=!1;if($&&!$._destroyed){for(let Z=0,Q=this.uploadHooks.length;Z<Q;Z++)if(this.uploadHooks[Z](this.uploadHookHelper,$)){this.queue.shift(),J=!0;break}}J||this.queue.shift()}if(this.queue.length)k0.system.addOnce(this.tick,this,n0.UTILITY);else{this.ticking=!1;let $=this.completes.slice(0);this.completes.length=0;for(let J=0,Z=$.length;J<Z;J++)$[J]()}}registerFindHook($){return $&&this.addHooks.push($),this}registerUploadHook($){return $&&this.uploadHooks.push($),this}add($){for(let J=0,Z=this.addHooks.length;J<Z&&!this.addHooks[J]($,this.queue);J++);if($ instanceof q0)for(let J=$.children.length-1;J>=0;J--)this.add($.children[J]);return this}destroy(){this.ticking&&k0.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};IZ.uploadsPerFrame=4;var Q5=IZ;Object.defineProperties(B,{UPLOADS_PER_FRAME:{get(){return Q5.uploadsPerFrame},set(_){P.deprecation("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),Q5.uploadsPerFrame=_}}});function bZ(_,$){return $ instanceof p?($._glTextures[_.CONTEXT_UID]||_.texture.bind($),!0):!1}function tq(_,$){if(!($ instanceof Z5))return!1;let{geometry:J}=$;$.finishPoly(),J.updateBatches();let{batches:Z}=J;for(let Q=0;Q<Z.length;Q++){let{texture:q}=Z[Q].style;q&&bZ(_,q.baseTexture)}return J.batchable||_.geometry.bind(J,$._resolveDirectShader(_)),!0}function eq(_,$){return _ instanceof Z5?($.push(_),!0):!1}class T8 extends Q5{constructor(_){super(_),this.uploadHookHelper=this.renderer,this.registerFindHook(eq),this.registerUploadHook(bZ),this.registerUploadHook(tq)}}T8.extension={name:"prepare",type:b.RendererSystem};O.add(T8);var Q3=new u;var BZ=`#version 300 es
965
+ `;class v8 extends Y_{constructor(_){super(_),this.shader=null,this.properties=null,this.tempMatrix=new o,this.properties=[{attributeName:"aVertexPosition",size:2,uploadFunction:this.uploadVertices,offset:0},{attributeName:"aPositionCoord",size:2,uploadFunction:this.uploadPosition,offset:0},{attributeName:"aRotation",size:1,uploadFunction:this.uploadRotation,offset:0},{attributeName:"aTextureCoord",size:2,uploadFunction:this.uploadUvs,offset:0},{attributeName:"aColor",size:1,type:g.UNSIGNED_BYTE,uploadFunction:this.uploadTint,offset:0}],this.shader=j0.from(CZ,kZ,{}),this.state=I0.for2d()}render(_){let{children:$,_maxSize:J,_batchSize:Z}=_,Q=this.renderer,q=$.length;if(q===0)return;q>J&&!_.autoResize&&(q=J);let K=_._buffers;K||(K=_._buffers=this.generateBuffers(_));let V=$[0]._texture.baseTexture,H=V.alphaMode>0;this.state.blendMode=P.correctBlendMode(_.blendMode,H),Q.state.set(this.state);let w=Q.gl,h=_.worldTransform.copyTo(this.tempMatrix);h.prepend(Q.globalUniforms.uniforms.projectionMatrix),this.shader.uniforms.translationMatrix=h.toArray(!0),this.shader.uniforms.uColor=s.shared.setValue(_.tintRgb).premultiply(_.worldAlpha,H).toArray(this.shader.uniforms.uColor),this.shader.uniforms.uSampler=V,this.renderer.shader.bind(this.shader);let z=!1;for(let X=0,W=0;X<q;X+=Z,W+=1){let G=q-X;G>Z&&(G=Z),W>=K.length&&K.push(this._generateOneMoreBuffer(_));let k=K[W];k.uploadDynamic($,X,G);let C=_._bufferUpdateIDs[W]||0;z=z||k._updateID<C,z&&(k._updateID=_._updateID,k.uploadStatic($,X,G)),Q.geometry.bind(k.geometry),w.drawElements(w.TRIANGLES,G*6,w.UNSIGNED_SHORT,0)}}generateBuffers(_){let $=[],J=_._maxSize,Z=_._batchSize,Q=_._properties;for(let q=0;q<J;q+=Z)$.push(new E8(this.properties,Q,Z));return $}_generateOneMoreBuffer(_){let{_batchSize:$,_properties:J}=_;return new E8(this.properties,J,$)}uploadVertices(_,$,J,Z,Q,q){let K=0,V=0,H=0,w=0;for(let h=0;h<J;++h){let z=_[$+h],X=z._texture,W=z.scale.x,G=z.scale.y,k=X.trim,C=X.orig;k?(V=k.x-z.anchor.x*C.width,K=V+k.width,w=k.y-z.anchor.y*C.height,H=w+k.height):(K=C.width*(1-z.anchor.x),V=C.width*-z.anchor.x,H=C.height*(1-z.anchor.y),w=C.height*-z.anchor.y),Z[q]=V*W,Z[q+1]=w*G,Z[q+Q]=K*W,Z[q+Q+1]=w*G,Z[q+Q*2]=K*W,Z[q+Q*2+1]=H*G,Z[q+Q*3]=V*W,Z[q+Q*3+1]=H*G,q+=Q*4}}uploadPosition(_,$,J,Z,Q,q){for(let K=0;K<J;K++){let V=_[$+K].position;Z[q]=V.x,Z[q+1]=V.y,Z[q+Q]=V.x,Z[q+Q+1]=V.y,Z[q+Q*2]=V.x,Z[q+Q*2+1]=V.y,Z[q+Q*3]=V.x,Z[q+Q*3+1]=V.y,q+=Q*4}}uploadRotation(_,$,J,Z,Q,q){for(let K=0;K<J;K++){let V=_[$+K].rotation;Z[q]=V,Z[q+Q]=V,Z[q+Q*2]=V,Z[q+Q*3]=V,q+=Q*4}}uploadUvs(_,$,J,Z,Q,q){for(let K=0;K<J;++K){let V=_[$+K]._texture._uvs;V?(Z[q]=V.x0,Z[q+1]=V.y0,Z[q+Q]=V.x1,Z[q+Q+1]=V.y1,Z[q+Q*2]=V.x2,Z[q+Q*2+1]=V.y2,Z[q+Q*3]=V.x3,Z[q+Q*3+1]=V.y3,q+=Q*4):(Z[q]=0,Z[q+1]=0,Z[q+Q]=0,Z[q+Q+1]=0,Z[q+Q*2]=0,Z[q+Q*2+1]=0,Z[q+Q*3]=0,Z[q+Q*3+1]=0,q+=Q*4)}}uploadTint(_,$,J,Z,Q,q){for(let K=0;K<J;++K){let V=_[$+K],H=s.shared.setValue(V._tintRGB).toPremultiplied(V.alpha,V.texture.baseTexture.alphaMode>0);Z[q]=H,Z[q+Q]=H,Z[q+Q*2]=H,Z[q+Q*3]=H,q+=Q*4}}destroy(){super.destroy(),this.shader&&(this.shader.destroy(),this.shader=null),this.tempMatrix=null}}v8.extension={name:"particle",type:b.RendererPlugin};O.add(v8);var i_=((_)=>(_[_.LINEAR_VERTICAL=0]="LINEAR_VERTICAL",_[_.LINEAR_HORIZONTAL=1]="LINEAR_HORIZONTAL",_))(i_||{});var c8={willReadFrequently:!0},F_=class _{static get experimentalLetterSpacingSupported(){let $=_._experimentalLetterSpacingSupported;if($!==void 0){let J=B.ADAPTER.getCanvasRenderingContext2D().prototype;$=_._experimentalLetterSpacingSupported="letterSpacing"in J||"textLetterSpacing"in J}return $}constructor($,J,Z,Q,q,K,V,H,w){this.text=$,this.style=J,this.width=Z,this.height=Q,this.lines=q,this.lineWidths=K,this.lineHeight=V,this.maxLineWidth=H,this.fontProperties=w}static measureText($,J,Z,Q=_._canvas){Z=Z??J.wordWrap;let q=J.toFontString(),K=_.measureFont(q);K.fontSize===0&&(K.fontSize=J.fontSize,K.ascent=J.fontSize);let V=Q.getContext("2d",c8);V.font=q;let H=(Z?_.wordWrap($,J,Q):$).split(/(?:\r\n|\r|\n)/),w=Array(H.length),h=0;for(let G=0;G<H.length;G++){let k=_._measureText(H[G],J.letterSpacing,V);w[G]=k,h=Math.max(h,k)}let z=h+J.strokeThickness;J.dropShadow&&(z+=J.dropShadowDistance);let X=J.lineHeight||K.fontSize+J.strokeThickness,W=Math.max(X,K.fontSize+J.strokeThickness*2)+J.leading+(H.length-1)*(X+J.leading);return J.dropShadow&&(W+=J.dropShadowDistance),new _($,J,z,W,H,w,X+J.leading,h,K)}static _measureText($,J,Z){let Q=!1;_.experimentalLetterSpacingSupported&&(_.experimentalLetterSpacing?(Z.letterSpacing=`${J}px`,Z.textLetterSpacing=`${J}px`,Q=!0):(Z.letterSpacing="0px",Z.textLetterSpacing="0px"));let q=Z.measureText($).width;return q>0&&(Q?q-=J:q+=(_.graphemeSegmenter($).length-1)*J),q}static wordWrap($,J,Z=_._canvas){let Q=Z.getContext("2d",c8),q=0,K="",V="",H=Object.create(null),{letterSpacing:w,whiteSpace:h}=J,z=_.collapseSpaces(h),X=_.collapseNewlines(h),W=!z,G=J.wordWrapWidth+w,k=_.tokenize($);for(let C=0;C<k.length;C++){let Y=k[C];if(_.isNewline(Y)){if(!X){V+=_.addLine(K),W=!z,K="",q=0;continue}Y=" "}if(z){let N=_.isBreakingSpace(Y),I=_.isBreakingSpace(K[K.length-1]);if(N&&I)continue}let U=_.getFromCache(Y,w,H,Q);if(U>G)if(K!==""&&(V+=_.addLine(K),K="",q=0),_.canBreakWords(Y,J.breakWords)){let N=_.wordWrapSplit(Y);for(let I=0;I<N.length;I++){let f=N[I],y=f,D=1;for(;N[I+D];){let v=N[I+D];if(!_.canBreakChars(y,v,Y,I,J.breakWords))f+=v;else break;y=v,D++}I+=D-1;let L=_.getFromCache(f,w,H,Q);L+q>G&&(V+=_.addLine(K),W=!1,K="",q=0),K+=f,q+=L}}else{K.length>0&&(V+=_.addLine(K),K="",q=0);let N=C===k.length-1;V+=_.addLine(Y,!N),W=!1,K="",q=0}else U+q>G&&(W=!1,V+=_.addLine(K),K="",q=0),(K.length>0||!_.isBreakingSpace(Y)||W)&&(K+=Y,q+=U)}return V+=_.addLine(K,!1),V}static addLine($,J=!0){return $=_.trimRight($),$=J?`${$}
966
+ `:$,$}static getFromCache($,J,Z,Q){let q=Z[$];return typeof q!="number"&&(q=_._measureText($,J,Q)+J,Z[$]=q),q}static collapseSpaces($){return $==="normal"||$==="pre-line"}static collapseNewlines($){return $==="normal"}static trimRight($){if(typeof $!="string")return"";for(let J=$.length-1;J>=0;J--){let Z=$[J];if(!_.isBreakingSpace(Z))break;$=$.slice(0,-1)}return $}static isNewline($){return typeof $!="string"?!1:_._newlines.includes($.charCodeAt(0))}static isBreakingSpace($,J){return typeof $!="string"?!1:_._breakingSpaces.includes($.charCodeAt(0))}static tokenize($){let J=[],Z="";if(typeof $!="string")return J;for(let Q=0;Q<$.length;Q++){let q=$[Q],K=$[Q+1];if(_.isBreakingSpace(q,K)||_.isNewline(q)){Z!==""&&(J.push(Z),Z=""),J.push(q);continue}Z+=q}return Z!==""&&J.push(Z),J}static canBreakWords($,J){return J}static canBreakChars($,J,Z,Q,q){return!0}static wordWrapSplit($){return _.graphemeSegmenter($)}static measureFont($){if(_._fonts[$])return _._fonts[$];let J={ascent:0,descent:0,fontSize:0},Z=_._canvas,Q=_._context;Q.font=$;let q=_.METRICS_STRING+_.BASELINE_SYMBOL,K=Math.ceil(Q.measureText(q).width),V=Math.ceil(Q.measureText(_.BASELINE_SYMBOL).width),H=Math.ceil(_.HEIGHT_MULTIPLIER*V);if(V=V*_.BASELINE_MULTIPLIER|0,K===0||H===0)return _._fonts[$]=J,J;Z.width=K,Z.height=H,Q.fillStyle="#f00",Q.fillRect(0,0,K,H),Q.font=$,Q.textBaseline="alphabetic",Q.fillStyle="#000",Q.fillText(q,0,V);let w=Q.getImageData(0,0,K,H).data,h=w.length,z=K*4,X=0,W=0,G=!1;for(X=0;X<V;++X){for(let k=0;k<z;k+=4)if(w[W+k]!==255){G=!0;break}if(!G)W+=z;else break}for(J.ascent=V-X,W=h-z,G=!1,X=H;X>V;--X){for(let k=0;k<z;k+=4)if(w[W+k]!==255){G=!0;break}if(!G)W-=z;else break}return J.descent=X-V,J.fontSize=J.ascent+J.descent,_._fonts[$]=J,J}static clearMetrics($=""){$?delete _._fonts[$]:_._fonts={}}static get _canvas(){if(!_.__canvas){let $;try{let J=new OffscreenCanvas(0,0);if(J.getContext("2d",c8)?.measureText)return _.__canvas=J,J;$=B.ADAPTER.createCanvas()}catch{$=B.ADAPTER.createCanvas()}$.width=$.height=10,_.__canvas=$}return _.__canvas}static get _context(){return _.__context||(_.__context=_._canvas.getContext("2d",c8)),_.__context}};F_.METRICS_STRING="|ÉqÅ",F_.BASELINE_SYMBOL="M",F_.BASELINE_MULTIPLIER=1.4,F_.HEIGHT_MULTIPLIER=2,F_.graphemeSegmenter=(()=>{if(typeof Intl?.Segmenter=="function"){let _=new Intl.Segmenter;return($)=>[..._.segment($)].map((J)=>J.segment)}return(_)=>[..._]})(),F_.experimentalLetterSpacing=!1,F_._fonts={},F_._newlines=[10,13],F_._breakingSpaces=[9,32,8192,8193,8194,8195,8196,8197,8198,8200,8201,8202,8287,12288];var __=F_;var mq=["serif","sans-serif","monospace","cursive","fantasy","system-ui"],NZ=class _{constructor($){this.styleID=0,this.reset(),t7(this,$,$)}clone(){let $={};return t7($,this,_.defaultStyle),new _($)}reset(){t7(this,_.defaultStyle,_.defaultStyle)}get align(){return this._align}set align($){this._align!==$&&(this._align=$,this.styleID++)}get breakWords(){return this._breakWords}set breakWords($){this._breakWords!==$&&(this._breakWords=$,this.styleID++)}get dropShadow(){return this._dropShadow}set dropShadow($){this._dropShadow!==$&&(this._dropShadow=$,this.styleID++)}get dropShadowAlpha(){return this._dropShadowAlpha}set dropShadowAlpha($){this._dropShadowAlpha!==$&&(this._dropShadowAlpha=$,this.styleID++)}get dropShadowAngle(){return this._dropShadowAngle}set dropShadowAngle($){this._dropShadowAngle!==$&&(this._dropShadowAngle=$,this.styleID++)}get dropShadowBlur(){return this._dropShadowBlur}set dropShadowBlur($){this._dropShadowBlur!==$&&(this._dropShadowBlur=$,this.styleID++)}get dropShadowColor(){return this._dropShadowColor}set dropShadowColor($){let J=r7($);this._dropShadowColor!==J&&(this._dropShadowColor=J,this.styleID++)}get dropShadowDistance(){return this._dropShadowDistance}set dropShadowDistance($){this._dropShadowDistance!==$&&(this._dropShadowDistance=$,this.styleID++)}get fill(){return this._fill}set fill($){let J=r7($);this._fill!==J&&(this._fill=J,this.styleID++)}get fillGradientType(){return this._fillGradientType}set fillGradientType($){this._fillGradientType!==$&&(this._fillGradientType=$,this.styleID++)}get fillGradientStops(){return this._fillGradientStops}set fillGradientStops($){uq(this._fillGradientStops,$)||(this._fillGradientStops=$,this.styleID++)}get fontFamily(){return this._fontFamily}set fontFamily($){this.fontFamily!==$&&(this._fontFamily=$,this.styleID++)}get fontSize(){return this._fontSize}set fontSize($){this._fontSize!==$&&(this._fontSize=$,this.styleID++)}get fontStyle(){return this._fontStyle}set fontStyle($){this._fontStyle!==$&&(this._fontStyle=$,this.styleID++)}get fontVariant(){return this._fontVariant}set fontVariant($){this._fontVariant!==$&&(this._fontVariant=$,this.styleID++)}get fontWeight(){return this._fontWeight}set fontWeight($){this._fontWeight!==$&&(this._fontWeight=$,this.styleID++)}get letterSpacing(){return this._letterSpacing}set letterSpacing($){this._letterSpacing!==$&&(this._letterSpacing=$,this.styleID++)}get lineHeight(){return this._lineHeight}set lineHeight($){this._lineHeight!==$&&(this._lineHeight=$,this.styleID++)}get leading(){return this._leading}set leading($){this._leading!==$&&(this._leading=$,this.styleID++)}get lineJoin(){return this._lineJoin}set lineJoin($){this._lineJoin!==$&&(this._lineJoin=$,this.styleID++)}get miterLimit(){return this._miterLimit}set miterLimit($){this._miterLimit!==$&&(this._miterLimit=$,this.styleID++)}get padding(){return this._padding}set padding($){this._padding!==$&&(this._padding=$,this.styleID++)}get stroke(){return this._stroke}set stroke($){let J=r7($);this._stroke!==J&&(this._stroke=J,this.styleID++)}get strokeThickness(){return this._strokeThickness}set strokeThickness($){this._strokeThickness!==$&&(this._strokeThickness=$,this.styleID++)}get textBaseline(){return this._textBaseline}set textBaseline($){this._textBaseline!==$&&(this._textBaseline=$,this.styleID++)}get trim(){return this._trim}set trim($){this._trim!==$&&(this._trim=$,this.styleID++)}get whiteSpace(){return this._whiteSpace}set whiteSpace($){this._whiteSpace!==$&&(this._whiteSpace=$,this.styleID++)}get wordWrap(){return this._wordWrap}set wordWrap($){this._wordWrap!==$&&(this._wordWrap=$,this.styleID++)}get wordWrapWidth(){return this._wordWrapWidth}set wordWrapWidth($){this._wordWrapWidth!==$&&(this._wordWrapWidth=$,this.styleID++)}toFontString(){let $=typeof this.fontSize=="number"?`${this.fontSize}px`:this.fontSize,J=this.fontFamily;Array.isArray(this.fontFamily)||(J=this.fontFamily.split(","));for(let Z=J.length-1;Z>=0;Z--){let Q=J[Z].trim();!/([\"\'])[^\'\"]+\1/.test(Q)&&!mq.includes(Q)&&(Q=`"${Q}"`),J[Z]=Q}return`${this.fontStyle} ${this.fontVariant} ${this.fontWeight} ${$} ${J.join(",")}`}};NZ.defaultStyle={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fillGradientType:i_.LINEAR_VERTICAL,fillGradientStops:[],fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",leading:0,letterSpacing:0,lineHeight:0,lineJoin:"miter",miterLimit:10,padding:0,stroke:"black",strokeThickness:0,textBaseline:"alphabetic",trim:!1,whiteSpace:"pre",wordWrap:!1,wordWrapWidth:100};var g0=NZ;function r7(_){let $=s.shared,J=(Z)=>{let Q=$.setValue(Z);return Q.alpha===1?Q.toHex():Q.toRgbaString()};return Array.isArray(_)?_.map(J):J(_)}function uq(_,$){if(!Array.isArray(_)||!Array.isArray($)||_.length!==$.length)return!1;for(let J=0;J<_.length;++J)if(_[J]!==$[J])return!1;return!0}function t7(_,$,J){for(let Z in J)Array.isArray($[Z])?_[Z]=$[Z].slice():_[Z]=$[Z]}var nq={texture:!0,children:!1,baseTexture:!0},YZ=class _ extends L0{constructor($,J,Z){let Q=!1;Z||(Z=B.ADAPTER.createCanvas(),Q=!0),Z.width=3,Z.height=3;let q=E.from(Z);q.orig=new x,q.trim=new x,super(q),this._ownCanvas=Q,this.canvas=Z,this.context=Z.getContext("2d",{willReadFrequently:!0}),this._resolution=_.defaultResolution??B.RESOLUTION,this._autoResolution=_.defaultAutoResolution,this._text=null,this._style=null,this._styleListener=null,this._font="",this.text=$,this.style=J,this.localStyleID=-1}static get experimentalLetterSpacing(){return __.experimentalLetterSpacing}static set experimentalLetterSpacing($){P.deprecation("7.1.0","Text.experimentalLetterSpacing is deprecated, use TextMetrics.experimentalLetterSpacing"),__.experimentalLetterSpacing=$}updateText($){let J=this._style;if(this.localStyleID!==J.styleID&&(this.dirty=!0,this.localStyleID=J.styleID),!this.dirty&&$)return;this._font=this._style.toFontString();let Z=this.context,Q=__.measureText(this._text||" ",this._style,this._style.wordWrap,this.canvas),q=Q.width,K=Q.height,V=Q.lines,H=Q.lineHeight,w=Q.lineWidths,h=Q.maxLineWidth,z=Q.fontProperties;this.canvas.width=Math.ceil(Math.ceil(Math.max(1,q)+J.padding*2)*this._resolution),this.canvas.height=Math.ceil(Math.ceil(Math.max(1,K)+J.padding*2)*this._resolution),Z.scale(this._resolution,this._resolution),Z.clearRect(0,0,this.canvas.width,this.canvas.height),Z.font=this._font,Z.lineWidth=J.strokeThickness,Z.textBaseline=J.textBaseline,Z.lineJoin=J.lineJoin,Z.miterLimit=J.miterLimit;let X,W,G=J.dropShadow?2:1;for(let k=0;k<G;++k){let C=J.dropShadow&&k===0,Y=C?Math.ceil(Math.max(1,K)+J.padding*2):0,U=Y*this._resolution;if(C){Z.fillStyle="black",Z.strokeStyle="black";let I=J.dropShadowColor,f=J.dropShadowBlur*this._resolution,y=J.dropShadowDistance*this._resolution;Z.shadowColor=s.shared.setValue(I).setAlpha(J.dropShadowAlpha).toRgbaString(),Z.shadowBlur=f,Z.shadowOffsetX=Math.cos(J.dropShadowAngle)*y,Z.shadowOffsetY=Math.sin(J.dropShadowAngle)*y+U}else Z.fillStyle=this._generateFillStyle(J,V,Q),Z.strokeStyle=J.stroke,Z.shadowColor="black",Z.shadowBlur=0,Z.shadowOffsetX=0,Z.shadowOffsetY=0;let N=(H-z.fontSize)/2;H-z.fontSize<0&&(N=0);for(let I=0;I<V.length;I++)X=J.strokeThickness/2,W=J.strokeThickness/2+I*H+z.ascent+N,J.align==="right"?X+=h-w[I]:J.align==="center"&&(X+=(h-w[I])/2),J.stroke&&J.strokeThickness&&this.drawLetterSpacing(V[I],X+J.padding,W+J.padding-Y,!0),J.fill&&this.drawLetterSpacing(V[I],X+J.padding,W+J.padding-Y)}this.updateTexture()}drawLetterSpacing($,J,Z,Q=!1){let q=this._style.letterSpacing,K=!1;if(__.experimentalLetterSpacingSupported&&(__.experimentalLetterSpacing?(this.context.letterSpacing=`${q}px`,this.context.textLetterSpacing=`${q}px`,K=!0):(this.context.letterSpacing="0px",this.context.textLetterSpacing="0px")),q===0||K){Q?this.context.strokeText($,J,Z):this.context.fillText($,J,Z);return}let V=J,H=__.graphemeSegmenter($),w=this.context.measureText($).width,h=0;for(let z=0;z<H.length;++z){let X=H[z];Q?this.context.strokeText(X,V,Z):this.context.fillText(X,V,Z);let W="";for(let G=z+1;G<H.length;++G)W+=H[G];h=this.context.measureText(W).width,V+=w-h+q,w=h}}updateTexture(){let $=this.canvas;if(this._style.trim){let K=P.trimCanvas($);K.data&&($.width=K.width,$.height=K.height,this.context.putImageData(K.data,0,0))}let J=this._texture,Z=this._style,Q=Z.trim?0:Z.padding,q=J.baseTexture;J.trim.width=J._frame.width=$.width/this._resolution,J.trim.height=J._frame.height=$.height/this._resolution,J.trim.x=-Q,J.trim.y=-Q,J.orig.width=J._frame.width-Q*2,J.orig.height=J._frame.height-Q*2,this._onTextureUpdate(),q.setRealSize($.width,$.height,this._resolution),J.updateUvs(),this.dirty=!1}_render($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0),this.updateText(!0),super._render($)}updateTransform(){this.updateText(!0),super.updateTransform()}getBounds($,J){return this.updateText(!0),this._textureID===-1&&($=!1),super.getBounds($,J)}getLocalBounds($){return this.updateText(!0),super.getLocalBounds.call(this,$)}_calculateBounds(){this.calculateVertices(),this._bounds.addQuad(this.vertexData)}_generateFillStyle($,J,Z){let Q=$.fill;if(Array.isArray(Q)){if(Q.length===1)return Q[0]}else return Q;let q,K=$.dropShadow?$.dropShadowDistance:0,V=$.padding||0,H=this.canvas.width/this._resolution-K-V*2,w=this.canvas.height/this._resolution-K-V*2,h=Q.slice(),z=$.fillGradientStops.slice();if(!z.length){let X=h.length+1;for(let W=1;W<X;++W)z.push(W/X)}if(h.unshift(Q[0]),z.unshift(0),h.push(Q[Q.length-1]),z.push(1),$.fillGradientType===i_.LINEAR_VERTICAL){q=this.context.createLinearGradient(H/2,V,H/2,w+V);let X=Z.fontProperties.fontSize+$.strokeThickness;for(let W=0;W<J.length;W++){let G=Z.lineHeight*(W-1)+X,k=Z.lineHeight*W,C=k;W>0&&G>k&&(C=(k+G)/2);let Y=k+X,U=Z.lineHeight*(W+1),N=Y;W+1<J.length&&U<Y&&(N=(Y+U)/2);let I=(N-C)/w;for(let f=0;f<h.length;f++){let y=0;typeof z[f]=="number"?y=z[f]:y=f/h.length;let D=Math.min(1,Math.max(0,C/w+y*I));D=Number(D.toFixed(5)),q.addColorStop(D,h[f])}}}else{q=this.context.createLinearGradient(V,w/2,H+V,w/2);let X=h.length+1,W=1;for(let G=0;G<h.length;G++){let k;typeof z[G]=="number"?k=z[G]:k=W/X,q.addColorStop(k,h[G]),W++}}return q}destroy($){typeof $=="boolean"&&($={children:$}),$=Object.assign({},nq,$),super.destroy($),this._ownCanvas&&(this.canvas.height=this.canvas.width=0),this.context=null,this.canvas=null,this._style=null}get width(){return this.updateText(!0),Math.abs(this.scale.x)*this._texture.orig.width}set width($){this.updateText(!0);let J=P.sign(this.scale.x)||1;this.scale.x=J*$/this._texture.orig.width,this._width=$}get height(){return this.updateText(!0),Math.abs(this.scale.y)*this._texture.orig.height}set height($){this.updateText(!0);let J=P.sign(this.scale.y)||1;this.scale.y=J*$/this._texture.orig.height,this._height=$}get style(){return this._style}set style($){$=$||{},$ instanceof g0?this._style=$:this._style=new g0($),this.localStyleID=-1,this.dirty=!0}get text(){return this._text}set text($){$=String($??""),this._text!==$&&(this._text=$,this.dirty=!0)}get resolution(){return this._resolution}set resolution($){this._autoResolution=!1,this._resolution!==$&&(this._resolution=$,this.dirty=!0)}};YZ.defaultAutoResolution=!0;var y8=YZ;class S8{constructor(_){this.maxItemsPerFrame=_,this.itemsLeft=0}beginFrame(){this.itemsLeft=this.maxItemsPerFrame}allowedToUpload(){return this.itemsLeft-- >0}}function lq(_,$){let J=!1;if(_?._textures?.length){for(let Z=0;Z<_._textures.length;Z++)if(_._textures[Z]instanceof E){let Q=_._textures[Z].baseTexture;$.includes(Q)||($.push(Q),J=!0)}}return J}function oq(_,$){if(_.baseTexture instanceof p){let J=_.baseTexture;return $.includes(J)||$.push(J),!0}return!1}function sq(_,$){if(_._texture&&_._texture instanceof E){let J=_._texture.baseTexture;return $.includes(J)||$.push(J),!0}return!1}function iq(_,$){return $ instanceof y8?($.updateText(!0),!0):!1}function aq(_,$){if($ instanceof g0){let J=$.toFontString();return __.measureFont(J),!0}return!1}function rq(_,$){if(_ instanceof y8){$.includes(_.style)||$.push(_.style),$.includes(_)||$.push(_);let J=_._texture.baseTexture;return $.includes(J)||$.push(J),!0}return!1}function tq(_,$){return _ instanceof g0?($.includes(_)||$.push(_),!0):!1}var UZ=class _{constructor($){this.limiter=new S8(_.uploadsPerFrame),this.renderer=$,this.uploadHookHelper=null,this.queue=[],this.addHooks=[],this.uploadHooks=[],this.completes=[],this.ticking=!1,this.delayedTick=()=>{this.queue&&this.prepareItems()},this.registerFindHook(rq),this.registerFindHook(tq),this.registerFindHook(lq),this.registerFindHook(oq),this.registerFindHook(sq),this.registerUploadHook(iq),this.registerUploadHook(aq)}upload($){return new Promise((J)=>{$&&this.add($),this.queue.length?(this.completes.push(J),this.ticking||(this.ticking=!0,k0.system.addOnce(this.tick,this,n0.UTILITY))):J()})}tick(){setTimeout(this.delayedTick,0)}prepareItems(){for(this.limiter.beginFrame();this.queue.length&&this.limiter.allowedToUpload();){let $=this.queue[0],J=!1;if($&&!$._destroyed){for(let Z=0,Q=this.uploadHooks.length;Z<Q;Z++)if(this.uploadHooks[Z](this.uploadHookHelper,$)){this.queue.shift(),J=!0;break}}J||this.queue.shift()}if(this.queue.length)k0.system.addOnce(this.tick,this,n0.UTILITY);else{this.ticking=!1;let $=this.completes.slice(0);this.completes.length=0;for(let J=0,Z=$.length;J<Z;J++)$[J]()}}registerFindHook($){return $&&this.addHooks.push($),this}registerUploadHook($){return $&&this.uploadHooks.push($),this}add($){for(let J=0,Z=this.addHooks.length;J<Z&&!this.addHooks[J]($,this.queue);J++);if($ instanceof q0)for(let J=$.children.length-1;J>=0;J--)this.add($.children[J]);return this}destroy(){this.ticking&&k0.system.remove(this.tick,this),this.ticking=!1,this.addHooks=null,this.uploadHooks=null,this.renderer=null,this.completes=null,this.queue=null,this.limiter=null,this.uploadHookHelper=null}};UZ.uploadsPerFrame=4;var Q5=UZ;Object.defineProperties(B,{UPLOADS_PER_FRAME:{get(){return Q5.uploadsPerFrame},set(_){P.deprecation("7.1.0","settings.UPLOADS_PER_FRAME is deprecated, use prepare.BasePrepare.uploadsPerFrame"),Q5.uploadsPerFrame=_}}});function IZ(_,$){return $ instanceof p?($._glTextures[_.CONTEXT_UID]||_.texture.bind($),!0):!1}function eq(_,$){if(!($ instanceof Z5))return!1;let{geometry:J}=$;$.finishPoly(),J.updateBatches();let{batches:Z}=J;for(let Q=0;Q<Z.length;Q++){let{texture:q}=Z[Q].style;q&&IZ(_,q.baseTexture)}return J.batchable||_.geometry.bind(J,$._resolveDirectShader(_)),!0}function _K(_,$){return _ instanceof Z5?($.push(_),!0):!1}class T8 extends Q5{constructor(_){super(_),this.uploadHookHelper=this.renderer,this.registerFindHook(_K),this.registerUploadHook(IZ),this.registerUploadHook(eq)}}T8.extension={name:"prepare",type:b.RendererSystem};O.add(T8);var K3=new u;var bZ=`#version 300 es
967
967
  #define SHADER_NAME Tiling-Sprite-100
968
968
 
969
969
  precision lowp float;
@@ -989,7 +989,7 @@ void main(void)
989
989
 
990
990
  fragmentColor = texSample * uColor;
991
991
  }
992
- `;var FZ=`#version 300 es
992
+ `;var BZ=`#version 300 es
993
993
  #define SHADER_NAME Tiling-Sprite-300
994
994
 
995
995
  precision lowp float;
@@ -1009,7 +1009,7 @@ void main(void)
1009
1009
 
1010
1010
  vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;
1011
1011
  }
1012
- `;var OZ=`#version 100
1012
+ `;var FZ=`#version 100
1013
1013
  #ifdef GL_EXT_shader_texture_lod
1014
1014
  #extension GL_EXT_shader_texture_lod : enable
1015
1015
  #endif
@@ -1042,7 +1042,7 @@ void main(void)
1042
1042
 
1043
1043
  gl_FragColor = texSample * uColor;
1044
1044
  }
1045
- `;var t9=`#version 100
1045
+ `;var e7=`#version 100
1046
1046
  #define SHADER_NAME Tiling-Sprite-100
1047
1047
 
1048
1048
  precision lowp float;
@@ -1062,7 +1062,7 @@ void main(void)
1062
1062
 
1063
1063
  vTextureCoord = (uTransform * vec3(aTextureCoord, 1.0)).xy;
1064
1064
  }
1065
- `;var jZ=`#version 100
1065
+ `;var OZ=`#version 100
1066
1066
  #define SHADER_NAME Tiling-Sprite-Simple-100
1067
1067
 
1068
1068
  precision lowp float;
@@ -1077,7 +1077,7 @@ void main(void)
1077
1077
  vec4 texSample = texture2D(uSampler, vTextureCoord);
1078
1078
  gl_FragColor = texSample * uColor;
1079
1079
  }
1080
- `;var d8=new o;class g8 extends Y_{constructor(_){super(_),_.runners.contextChange.add(this),this.quad=new m1,this.state=I0.for2d()}contextChange(){let _=this.renderer,$={globals:_.globalUniforms};this.simpleShader=j0.from(t9,jZ,$),this.shader=_.context.webGLVersion>1?j0.from(FZ,BZ,$):j0.from(t9,OZ,$)}render(_){let $=this.renderer,J=this.quad,Z=J.vertices;Z[0]=Z[6]=_._width*-_.anchor.x,Z[1]=Z[3]=_._height*-_.anchor.y,Z[2]=Z[4]=_._width*(1-_.anchor.x),Z[5]=Z[7]=_._height*(1-_.anchor.y);let Q=_.uvRespectAnchor?_.anchor.x:0,q=_.uvRespectAnchor?_.anchor.y:0;Z=J.uvs,Z[0]=Z[6]=-Q,Z[1]=Z[3]=-q,Z[2]=Z[4]=1-Q,Z[5]=Z[7]=1-q,J.invalidate();let K=_._texture,V=K.baseTexture,H=V.alphaMode>0,w=_.tileTransform.localTransform,h=_.uvMatrix,z=V.isPowerOfTwo&&K.frame.width===V.width&&K.frame.height===V.height;z&&(V._glTextures[$.CONTEXT_UID]?z=V.wrapMode!==x0.CLAMP:V.wrapMode===x0.CLAMP&&(V.wrapMode=x0.REPEAT));let X=z?this.simpleShader:this.shader,W=K.width,G=K.height,k=_._width,C=_._height;d8.set(w.a*W/k,w.b*W/C,w.c*G/k,w.d*G/C,w.tx/k,w.ty/C),d8.invert(),z?d8.prepend(h.mapCoord):(X.uniforms.uMapCoord=h.mapCoord.toArray(!0),X.uniforms.uClampFrame=h.uClampFrame,X.uniforms.uClampOffset=h.uClampOffset),X.uniforms.uTransform=d8.toArray(!0),X.uniforms.uColor=s.shared.setValue(_.tint).premultiply(_.worldAlpha,H).toArray(X.uniforms.uColor),X.uniforms.translationMatrix=_.transform.worldTransform.toArray(!0),X.uniforms.uSampler=K,$.shader.bind(X),$.geometry.bind(J),this.state.blendMode=P.correctBlendMode(_.blendMode,H),$.state.set(this.state),$.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}g8.extension={name:"tilingSprite",type:b.RendererPlugin};O.add(g8);var LZ=class _{constructor($,J,Z){this.linkedSheets=[],($ instanceof p||$ instanceof E)&&($={texture:$,data:J,resolutionFilename:Z});let{texture:Q,data:q,resolutionFilename:K=null,cachePrefix:V=""}=$;this.cachePrefix=V,this._texture=Q instanceof E?Q:null,this.baseTexture=Q instanceof p?Q:this._texture.baseTexture,this.textures={},this.animations={},this.data=q;let H=this.baseTexture.resource;this.resolution=this._updateResolution(K||(H?H.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution($=null){let{scale:J}=this.data.meta,Z=P.getResolutionOfUrl($,null);return Z===null&&(Z=typeof J=="number"?J:parseFloat(J??"1")),Z!==1&&this.baseTexture.setResolution(Z),Z}parse(){return new Promise(($)=>{this._callback=$,this._batchIndex=0,this._frameKeys.length<=_.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames($){let J=$,Z=_.BATCH_SIZE;for(;J-$<Z&&J<this._frameKeys.length;){let Q=this._frameKeys[J],q=this._frames[Q],K=q.frame;if(K){let V=null,H=null,w=q.trimmed!==!1&&q.sourceSize?q.sourceSize:q.frame,h=new x(0,0,Math.floor(w.w)/this.resolution,Math.floor(w.h)/this.resolution);q.rotated?V=new x(Math.floor(K.x)/this.resolution,Math.floor(K.y)/this.resolution,Math.floor(K.h)/this.resolution,Math.floor(K.w)/this.resolution):V=new x(Math.floor(K.x)/this.resolution,Math.floor(K.y)/this.resolution,Math.floor(K.w)/this.resolution,Math.floor(K.h)/this.resolution),q.trimmed!==!1&&q.spriteSourceSize&&(H=new x(Math.floor(q.spriteSourceSize.x)/this.resolution,Math.floor(q.spriteSourceSize.y)/this.resolution,Math.floor(K.w)/this.resolution,Math.floor(K.h)/this.resolution)),this.textures[Q]=new E(this.baseTexture,V,h,H,q.rotated?2:0,q.anchor,q.borders),E.addToCache(this.textures[Q],this.cachePrefix+Q.toString())}J++}}_processAnimations(){let $=this.data.animations||{};for(let J in $){this.animations[J]=[];for(let Z=0;Z<$[J].length;Z++){let Q=$[J][Z];this.animations[J].push(this.textures[Q])}}}_parseComplete(){let $=this._callback;this._callback=null,this._batchIndex=0,$.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*_.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*_.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy($=!1){for(let J in this.textures)this.textures[J].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,$&&(this._texture?.destroy(),this.baseTexture.destroy()),this._texture=null,this.baseTexture=null,this.linkedSheets=[]}};LZ.BATCH_SIZE=1000;var p8=LZ;var _K=["jpg","png","jpeg","avif","webp","s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"];function DZ(_,$,J){let Z={};if(_.forEach((Q)=>{Z[Q]=$}),Object.keys($.textures).forEach((Q)=>{Z[`${$.cachePrefix}${Q}`]=$.textures[Q]}),!J){let Q=P.path.dirname(_[0]);$.linkedSheets.forEach((q,K)=>{Object.assign(Z,DZ([`${Q}/${$.data.meta.related_multi_packs[K]}`],q,!0))})}return Z}var AZ={extension:b.Asset,cache:{test:(_)=>_ instanceof p8,getCacheableAssets:(_,$)=>DZ(_,$,!1)},resolver:{test:(_)=>{let $=_.split("?")[0].split("."),J=$.pop(),Z=$.pop();return J==="json"&&_K.includes(Z)},parse:(_)=>{let $=_.split(".");return{resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:$[$.length-2],src:_}}},loader:{name:"spritesheetLoader",extension:{type:b.LoadParser,priority:H0.Normal},async testParse(_,$){return P.path.extname($.src).toLowerCase()===".json"&&!!_.frames},async parse(_,$,J){let{texture:Z,imageFilename:Q,cachePrefix:q}=$?.data??{},K=P.path.dirname($.src);K&&K.lastIndexOf("/")!==K.length-1&&(K+="/");let V;if(Z&&Z.baseTexture)V=Z;else{let h=Y1(K+(Q??_.meta.image),$.src);V=(await J.load([h]))[h]}let H=new p8({texture:V.baseTexture,data:_,resolutionFilename:$.src,cachePrefix:q});await H.parse();let w=_?.meta?.related_multi_packs;if(Array.isArray(w)){let h=[];for(let X of w){if(typeof X!="string")continue;let W=K+X;$.data?.ignoreMultiPack||(W=Y1(W,$.src),h.push(J.load({src:W,data:{ignoreMultiPack:!0}})))}let z=await Promise.all(h);H.linkedSheets=z,z.forEach((X)=>{X.linkedSheets=[H].concat(H.linkedSheets.filter((W)=>W!==X))})}return H},unload(_){_.destroy(!0)}}};O.add(AZ);class S_{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class a_{static test(_){return typeof _=="string"&&_.startsWith("info face=")}static parse(_){let $=_.match(/^[a-z]+\s+.+$/gm),J={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(let Q in $){let q=$[Q].match(/^[a-z]+/gm)[0],K=$[Q].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),V={};for(let H in K){let w=K[H].split("="),h=w[0],z=w[1].replace(/"/gm,""),X=parseFloat(z),W=isNaN(X)?z:X;V[h]=W}J[q].push(V)}let Z=new S_;return J.info.forEach((Q)=>Z.info.push({face:Q.face,size:parseInt(Q.size,10)})),J.common.forEach((Q)=>Z.common.push({lineHeight:parseInt(Q.lineHeight,10)})),J.page.forEach((Q)=>Z.page.push({id:parseInt(Q.id,10),file:Q.file})),J.char.forEach((Q)=>Z.char.push({id:parseInt(Q.id,10),page:parseInt(Q.page,10),x:parseInt(Q.x,10),y:parseInt(Q.y,10),width:parseInt(Q.width,10),height:parseInt(Q.height,10),xoffset:parseInt(Q.xoffset,10),yoffset:parseInt(Q.yoffset,10),xadvance:parseInt(Q.xadvance,10)})),J.kerning.forEach((Q)=>Z.kerning.push({first:parseInt(Q.first,10),second:parseInt(Q.second,10),amount:parseInt(Q.amount,10)})),J.distanceField.forEach((Q)=>Z.distanceField.push({distanceRange:parseInt(Q.distanceRange,10),fieldType:Q.fieldType})),Z}}class O1{static test(_){let $=_;return typeof _!="string"&&"getElementsByTagName"in _&&$.getElementsByTagName("page").length&&$.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(_){let $=new S_,J=_.getElementsByTagName("info"),Z=_.getElementsByTagName("common"),Q=_.getElementsByTagName("page"),q=_.getElementsByTagName("char"),K=_.getElementsByTagName("kerning"),V=_.getElementsByTagName("distanceField");for(let H=0;H<J.length;H++)$.info.push({face:J[H].getAttribute("face"),size:parseInt(J[H].getAttribute("size"),10)});for(let H=0;H<Z.length;H++)$.common.push({lineHeight:parseInt(Z[H].getAttribute("lineHeight"),10)});for(let H=0;H<Q.length;H++)$.page.push({id:parseInt(Q[H].getAttribute("id"),10)||0,file:Q[H].getAttribute("file")});for(let H=0;H<q.length;H++){let w=q[H];$.char.push({id:parseInt(w.getAttribute("id"),10),page:parseInt(w.getAttribute("page"),10)||0,x:parseInt(w.getAttribute("x"),10),y:parseInt(w.getAttribute("y"),10),width:parseInt(w.getAttribute("width"),10),height:parseInt(w.getAttribute("height"),10),xoffset:parseInt(w.getAttribute("xoffset"),10),yoffset:parseInt(w.getAttribute("yoffset"),10),xadvance:parseInt(w.getAttribute("xadvance"),10)})}for(let H=0;H<K.length;H++)$.kerning.push({first:parseInt(K[H].getAttribute("first"),10),second:parseInt(K[H].getAttribute("second"),10),amount:parseInt(K[H].getAttribute("amount"),10)});for(let H=0;H<V.length;H++)$.distanceField.push({fieldType:V[H].getAttribute("fieldType"),distanceRange:parseInt(V[H].getAttribute("distanceRange"),10)});return $}}class j1{static test(_){return typeof _=="string"&&_.includes("<font>")?O1.test(B.ADAPTER.parseXML(_)):!1}static parse(_){return O1.parse(B.ADAPTER.parseXML(_))}}var e9=[a_,O1,j1];function _4(_){for(let $=0;$<e9.length;$++)if(e9[$].test(_))return e9[$];return null}function $4(_,$,J,Z,Q,q){let K=J.fill;if(Array.isArray(K)){if(K.length===1)return K[0]}else return K;let V,H=J.dropShadow?J.dropShadowDistance:0,w=J.padding||0,h=_.width/Z-H-w*2,z=_.height/Z-H-w*2,X=K.slice(),W=J.fillGradientStops.slice();if(!W.length){let G=X.length+1;for(let k=1;k<G;++k)W.push(k/G)}if(X.unshift(K[0]),W.unshift(0),X.push(K[K.length-1]),W.push(1),J.fillGradientType===i_.LINEAR_VERTICAL){V=$.createLinearGradient(h/2,w,h/2,z+w);let G=0,k=(q.fontProperties.fontSize+J.strokeThickness)/z;for(let C=0;C<Q.length;C++){let Y=q.lineHeight*C;for(let U=0;U<X.length;U++){let N=0;typeof W[U]=="number"?N=W[U]:N=U/X.length;let I=Y/z+N*k,f=Math.max(G,I);f=Math.min(f,1),V.addColorStop(f,X[U]),G=f}}}else{V=$.createLinearGradient(w,z/2,h+w,z/2);let G=X.length+1,k=1;for(let C=0;C<X.length;C++){let Y;typeof W[C]=="number"?Y=W[C]:Y=k/G,V.addColorStop(Y,X[C]),k++}}return V}function J4(_,$,J,Z,Q,q,K){let{text:V,fontProperties:H}=J;$.translate(Z,Q),$.scale(q,q);let w=K.strokeThickness/2,h=-(K.strokeThickness/2);if($.font=K.toFontString(),$.lineWidth=K.strokeThickness,$.textBaseline=K.textBaseline,$.lineJoin=K.lineJoin,$.miterLimit=K.miterLimit,$.fillStyle=$4(_,$,K,q,[V],J),$.strokeStyle=K.stroke,K.dropShadow){let z=K.dropShadowColor,X=K.dropShadowBlur*q,W=K.dropShadowDistance*q;$.shadowColor=s.shared.setValue(z).setAlpha(K.dropShadowAlpha).toRgbaString(),$.shadowBlur=X,$.shadowOffsetX=Math.cos(K.dropShadowAngle)*W,$.shadowOffsetY=Math.sin(K.dropShadowAngle)*W}else $.shadowColor="black",$.shadowBlur=0,$.shadowOffsetX=0,$.shadowOffsetY=0;K.stroke&&K.strokeThickness&&$.strokeText(V,w,h+J.lineHeight-H.descent),K.fill&&$.fillText(V,w,h+J.lineHeight-H.descent),$.setTransform(1,0,0,1,0,0),$.fillStyle="rgba(0, 0, 0, 0)"}function L1(_){return _.codePointAt?_.codePointAt(0):_.charCodeAt(0)}function w6(_){return Array.from?Array.from(_):_.split("")}function Z4(_){typeof _=="string"&&(_=[_]);let $=[];for(let J=0,Z=_.length;J<Z;J++){let Q=_[J];if(Array.isArray(Q)){if(Q.length!==2)throw Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${Q.length}.`);let q=Q[0].charCodeAt(0),K=Q[1].charCodeAt(0);if(K<q)throw Error("[BitmapFont]: Invalid character range.");for(let V=q,H=K;V<=H;V++)$.push(String.fromCharCode(V))}else $.push(...w6(Q))}if($.length===0)throw Error("[BitmapFont]: Empty set when resolving characters.");return $}var r_=class _{constructor($,J,Z){let[Q]=$.info,[q]=$.common,[K]=$.page,[V]=$.distanceField,H=P.getResolutionOfUrl(K.file),w={};this._ownsTextures=Z,this.font=Q.face,this.size=Q.size,this.lineHeight=q.lineHeight/H,this.chars={},this.pageTextures=w;for(let h=0;h<$.page.length;h++){let{id:z,file:X}=$.page[h];w[z]=J instanceof Array?J[h]:J[X],V?.fieldType&&V.fieldType!=="none"&&(w[z].baseTexture.alphaMode=K0.NO_PREMULTIPLIED_ALPHA,w[z].baseTexture.mipmap=F0.OFF)}for(let h=0;h<$.char.length;h++){let{id:z,page:X}=$.char[h],{x:W,y:G,width:k,height:C,xoffset:Y,yoffset:U,xadvance:N}=$.char[h];W/=H,G/=H,k/=H,C/=H,Y/=H,U/=H,N/=H;let I=new x(W+w[X].frame.x/H,G+w[X].frame.y/H,k,C);this.chars[z]={xOffset:Y,yOffset:U,xAdvance:N,kerning:{},texture:new E(w[X].baseTexture,I),page:X}}for(let h=0;h<$.kerning.length;h++){let{first:z,second:X,amount:W}=$.kerning[h];z/=H,X/=H,W/=H,this.chars[X]&&(this.chars[X].kerning[z]=W)}this.distanceFieldRange=V?.distanceRange,this.distanceFieldType=V?.fieldType?.toLowerCase()??"none"}destroy(){for(let $ in this.chars)this.chars[$].texture.destroy(),this.chars[$].texture=null;for(let $ in this.pageTextures)this._ownsTextures&&this.pageTextures[$].destroy(!0),this.pageTextures[$]=null;this.chars=null,this.pageTextures=null}static install($,J,Z){let Q;if($ instanceof S_)Q=$;else{let K=_4($);if(!K)throw Error("Unrecognized data format for font.");Q=K.parse($)}J instanceof E&&(J=[J]);let q=new _(Q,J,Z);return _.available[q.font]=q,q}static uninstall($){let J=_.available[$];if(!J)throw Error(`No font found named '${$}'`);J.destroy(),delete _.available[$]}static from($,J,Z){if(!$)throw Error("[BitmapFont] Property `name` is required.");let{chars:Q,padding:q,resolution:K,textureWidth:V,textureHeight:H,...w}=Object.assign({},_.defaultOptions,Z),h=Z4(Q),z=J instanceof g0?J:new g0(J),X=V,W=new S_;W.info[0]={face:z.fontFamily,size:z.fontSize},W.common[0]={lineHeight:z.fontSize};let G=0,k=0,C,Y,U,N=0,I=[],f=[];for(let D=0;D<h.length;D++){C||(C=B.ADAPTER.createCanvas(),C.width=V,C.height=H,Y=C.getContext("2d"),U=new p(C,{resolution:K,...w}),I.push(U),f.push(new E(U)),W.page.push({id:f.length-1,file:""}));let L=h[D],v=__.measureText(L,z,!1,C),m=v.width,F=Math.ceil(v.height),M=Math.ceil((z.fontStyle==="italic"?2:1)*m);if(k>=H-F*K){if(k===0)throw Error(`[BitmapFont] textureHeight ${H}px is too small (fontFamily: '${z.fontFamily}', fontSize: ${z.fontSize}px, char: '${L}')`);--D,C=null,Y=null,U=null,k=0,G=0,N=0;continue}if(N=Math.max(F+v.fontProperties.descent,N),M*K+G>=X){if(G===0)throw Error(`[BitmapFont] textureWidth ${V}px is too small (fontFamily: '${z.fontFamily}', fontSize: ${z.fontSize}px, char: '${L}')`);--D,k+=N*K,k=Math.ceil(k),G=0,N=0;continue}J4(C,Y,v,G,k,K,z);let j=L1(v.text);W.char.push({id:j,page:f.length-1,x:G/K,y:k/K,width:M,height:F,xoffset:0,yoffset:0,xadvance:m-(z.dropShadow?z.dropShadowDistance:0)-(z.stroke?z.strokeThickness:0)}),G+=(M+2*q)*K,G=Math.ceil(G)}if(!Z?.skipKerning)for(let D=0,L=h.length;D<L;D++){let v=h[D];for(let m=0;m<L;m++){let F=h[m],M=Y.measureText(v).width,j=Y.measureText(F).width,A=Y.measureText(v+F).width-(M+j);A&&W.kerning.push({first:L1(v),second:L1(F),amount:A})}}let y=new _(W,f,!0);return _.available[$]!==void 0&&_.uninstall($),_.available[$]=y,y}};r_.ALPHA=[["a","z"],["A","Z"]," "],r_.NUMERIC=[["0","9"]],r_.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],r_.ASCII=[[" ","~"]],r_.defaultOptions={resolution:1,textureWidth:512,textureHeight:512,padding:4,chars:r_.ALPHANUMERIC},r_.available={};var h_=r_;var PZ=`// Pixi texture info\r
1080
+ `;var d8=new o;class g8 extends Y_{constructor(_){super(_),_.runners.contextChange.add(this),this.quad=new m1,this.state=I0.for2d()}contextChange(){let _=this.renderer,$={globals:_.globalUniforms};this.simpleShader=j0.from(e7,OZ,$),this.shader=_.context.webGLVersion>1?j0.from(BZ,bZ,$):j0.from(e7,FZ,$)}render(_){let $=this.renderer,J=this.quad,Z=J.vertices;Z[0]=Z[6]=_._width*-_.anchor.x,Z[1]=Z[3]=_._height*-_.anchor.y,Z[2]=Z[4]=_._width*(1-_.anchor.x),Z[5]=Z[7]=_._height*(1-_.anchor.y);let Q=_.uvRespectAnchor?_.anchor.x:0,q=_.uvRespectAnchor?_.anchor.y:0;Z=J.uvs,Z[0]=Z[6]=-Q,Z[1]=Z[3]=-q,Z[2]=Z[4]=1-Q,Z[5]=Z[7]=1-q,J.invalidate();let K=_._texture,V=K.baseTexture,H=V.alphaMode>0,w=_.tileTransform.localTransform,h=_.uvMatrix,z=V.isPowerOfTwo&&K.frame.width===V.width&&K.frame.height===V.height;z&&(V._glTextures[$.CONTEXT_UID]?z=V.wrapMode!==x0.CLAMP:V.wrapMode===x0.CLAMP&&(V.wrapMode=x0.REPEAT));let X=z?this.simpleShader:this.shader,W=K.width,G=K.height,k=_._width,C=_._height;d8.set(w.a*W/k,w.b*W/C,w.c*G/k,w.d*G/C,w.tx/k,w.ty/C),d8.invert(),z?d8.prepend(h.mapCoord):(X.uniforms.uMapCoord=h.mapCoord.toArray(!0),X.uniforms.uClampFrame=h.uClampFrame,X.uniforms.uClampOffset=h.uClampOffset),X.uniforms.uTransform=d8.toArray(!0),X.uniforms.uColor=s.shared.setValue(_.tint).premultiply(_.worldAlpha,H).toArray(X.uniforms.uColor),X.uniforms.translationMatrix=_.transform.worldTransform.toArray(!0),X.uniforms.uSampler=K,$.shader.bind(X),$.geometry.bind(J),this.state.blendMode=P.correctBlendMode(_.blendMode,H),$.state.set(this.state),$.geometry.draw(this.renderer.gl.TRIANGLES,6,0)}}g8.extension={name:"tilingSprite",type:b.RendererPlugin};O.add(g8);var jZ=class _{constructor($,J,Z){this.linkedSheets=[],($ instanceof p||$ instanceof E)&&($={texture:$,data:J,resolutionFilename:Z});let{texture:Q,data:q,resolutionFilename:K=null,cachePrefix:V=""}=$;this.cachePrefix=V,this._texture=Q instanceof E?Q:null,this.baseTexture=Q instanceof p?Q:this._texture.baseTexture,this.textures={},this.animations={},this.data=q;let H=this.baseTexture.resource;this.resolution=this._updateResolution(K||(H?H.url:null)),this._frames=this.data.frames,this._frameKeys=Object.keys(this._frames),this._batchIndex=0,this._callback=null}_updateResolution($=null){let{scale:J}=this.data.meta,Z=P.getResolutionOfUrl($,null);return Z===null&&(Z=typeof J=="number"?J:parseFloat(J??"1")),Z!==1&&this.baseTexture.setResolution(Z),Z}parse(){return new Promise(($)=>{this._callback=$,this._batchIndex=0,this._frameKeys.length<=_.BATCH_SIZE?(this._processFrames(0),this._processAnimations(),this._parseComplete()):this._nextBatch()})}_processFrames($){let J=$,Z=_.BATCH_SIZE;for(;J-$<Z&&J<this._frameKeys.length;){let Q=this._frameKeys[J],q=this._frames[Q],K=q.frame;if(K){let V=null,H=null,w=q.trimmed!==!1&&q.sourceSize?q.sourceSize:q.frame,h=new x(0,0,Math.floor(w.w)/this.resolution,Math.floor(w.h)/this.resolution);q.rotated?V=new x(Math.floor(K.x)/this.resolution,Math.floor(K.y)/this.resolution,Math.floor(K.h)/this.resolution,Math.floor(K.w)/this.resolution):V=new x(Math.floor(K.x)/this.resolution,Math.floor(K.y)/this.resolution,Math.floor(K.w)/this.resolution,Math.floor(K.h)/this.resolution),q.trimmed!==!1&&q.spriteSourceSize&&(H=new x(Math.floor(q.spriteSourceSize.x)/this.resolution,Math.floor(q.spriteSourceSize.y)/this.resolution,Math.floor(K.w)/this.resolution,Math.floor(K.h)/this.resolution)),this.textures[Q]=new E(this.baseTexture,V,h,H,q.rotated?2:0,q.anchor,q.borders),E.addToCache(this.textures[Q],this.cachePrefix+Q.toString())}J++}}_processAnimations(){let $=this.data.animations||{};for(let J in $){this.animations[J]=[];for(let Z=0;Z<$[J].length;Z++){let Q=$[J][Z];this.animations[J].push(this.textures[Q])}}}_parseComplete(){let $=this._callback;this._callback=null,this._batchIndex=0,$.call(this,this.textures)}_nextBatch(){this._processFrames(this._batchIndex*_.BATCH_SIZE),this._batchIndex++,setTimeout(()=>{this._batchIndex*_.BATCH_SIZE<this._frameKeys.length?this._nextBatch():(this._processAnimations(),this._parseComplete())},0)}destroy($=!1){for(let J in this.textures)this.textures[J].destroy();this._frames=null,this._frameKeys=null,this.data=null,this.textures=null,$&&(this._texture?.destroy(),this.baseTexture.destroy()),this._texture=null,this.baseTexture=null,this.linkedSheets=[]}};jZ.BATCH_SIZE=1000;var p8=jZ;var $K=["jpg","png","jpeg","avif","webp","s3tc","s3tc_sRGB","etc","etc1","pvrtc","atc","astc","bptc"];function LZ(_,$,J){let Z={};if(_.forEach((Q)=>{Z[Q]=$}),Object.keys($.textures).forEach((Q)=>{Z[`${$.cachePrefix}${Q}`]=$.textures[Q]}),!J){let Q=P.path.dirname(_[0]);$.linkedSheets.forEach((q,K)=>{Object.assign(Z,LZ([`${Q}/${$.data.meta.related_multi_packs[K]}`],q,!0))})}return Z}var DZ={extension:b.Asset,cache:{test:(_)=>_ instanceof p8,getCacheableAssets:(_,$)=>LZ(_,$,!1)},resolver:{test:(_)=>{let $=_.split("?")[0].split("."),J=$.pop(),Z=$.pop();return J==="json"&&$K.includes(Z)},parse:(_)=>{let $=_.split(".");return{resolution:parseFloat(B.RETINA_PREFIX.exec(_)?.[1]??"1"),format:$[$.length-2],src:_}}},loader:{name:"spritesheetLoader",extension:{type:b.LoadParser,priority:H0.Normal},async testParse(_,$){return P.path.extname($.src).toLowerCase()===".json"&&!!_.frames},async parse(_,$,J){let{texture:Z,imageFilename:Q,cachePrefix:q}=$?.data??{},K=P.path.dirname($.src);K&&K.lastIndexOf("/")!==K.length-1&&(K+="/");let V;if(Z&&Z.baseTexture)V=Z;else{let h=Y1(K+(Q??_.meta.image),$.src);V=(await J.load([h]))[h]}let H=new p8({texture:V.baseTexture,data:_,resolutionFilename:$.src,cachePrefix:q});await H.parse();let w=_?.meta?.related_multi_packs;if(Array.isArray(w)){let h=[];for(let X of w){if(typeof X!="string")continue;let W=K+X;$.data?.ignoreMultiPack||(W=Y1(W,$.src),h.push(J.load({src:W,data:{ignoreMultiPack:!0}})))}let z=await Promise.all(h);H.linkedSheets=z,z.forEach((X)=>{X.linkedSheets=[H].concat(H.linkedSheets.filter((W)=>W!==X))})}return H},unload(_){_.destroy(!0)}}};O.add(DZ);class S_{constructor(){this.info=[],this.common=[],this.page=[],this.char=[],this.kerning=[],this.distanceField=[]}}class a_{static test(_){return typeof _=="string"&&_.startsWith("info face=")}static parse(_){let $=_.match(/^[a-z]+\s+.+$/gm),J={info:[],common:[],page:[],char:[],chars:[],kerning:[],kernings:[],distanceField:[]};for(let Q in $){let q=$[Q].match(/^[a-z]+/gm)[0],K=$[Q].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm),V={};for(let H in K){let w=K[H].split("="),h=w[0],z=w[1].replace(/"/gm,""),X=parseFloat(z),W=isNaN(X)?z:X;V[h]=W}J[q].push(V)}let Z=new S_;return J.info.forEach((Q)=>Z.info.push({face:Q.face,size:parseInt(Q.size,10)})),J.common.forEach((Q)=>Z.common.push({lineHeight:parseInt(Q.lineHeight,10)})),J.page.forEach((Q)=>Z.page.push({id:parseInt(Q.id,10),file:Q.file})),J.char.forEach((Q)=>Z.char.push({id:parseInt(Q.id,10),page:parseInt(Q.page,10),x:parseInt(Q.x,10),y:parseInt(Q.y,10),width:parseInt(Q.width,10),height:parseInt(Q.height,10),xoffset:parseInt(Q.xoffset,10),yoffset:parseInt(Q.yoffset,10),xadvance:parseInt(Q.xadvance,10)})),J.kerning.forEach((Q)=>Z.kerning.push({first:parseInt(Q.first,10),second:parseInt(Q.second,10),amount:parseInt(Q.amount,10)})),J.distanceField.forEach((Q)=>Z.distanceField.push({distanceRange:parseInt(Q.distanceRange,10),fieldType:Q.fieldType})),Z}}class O1{static test(_){let $=_;return typeof _!="string"&&"getElementsByTagName"in _&&$.getElementsByTagName("page").length&&$.getElementsByTagName("info")[0].getAttribute("face")!==null}static parse(_){let $=new S_,J=_.getElementsByTagName("info"),Z=_.getElementsByTagName("common"),Q=_.getElementsByTagName("page"),q=_.getElementsByTagName("char"),K=_.getElementsByTagName("kerning"),V=_.getElementsByTagName("distanceField");for(let H=0;H<J.length;H++)$.info.push({face:J[H].getAttribute("face"),size:parseInt(J[H].getAttribute("size"),10)});for(let H=0;H<Z.length;H++)$.common.push({lineHeight:parseInt(Z[H].getAttribute("lineHeight"),10)});for(let H=0;H<Q.length;H++)$.page.push({id:parseInt(Q[H].getAttribute("id"),10)||0,file:Q[H].getAttribute("file")});for(let H=0;H<q.length;H++){let w=q[H];$.char.push({id:parseInt(w.getAttribute("id"),10),page:parseInt(w.getAttribute("page"),10)||0,x:parseInt(w.getAttribute("x"),10),y:parseInt(w.getAttribute("y"),10),width:parseInt(w.getAttribute("width"),10),height:parseInt(w.getAttribute("height"),10),xoffset:parseInt(w.getAttribute("xoffset"),10),yoffset:parseInt(w.getAttribute("yoffset"),10),xadvance:parseInt(w.getAttribute("xadvance"),10)})}for(let H=0;H<K.length;H++)$.kerning.push({first:parseInt(K[H].getAttribute("first"),10),second:parseInt(K[H].getAttribute("second"),10),amount:parseInt(K[H].getAttribute("amount"),10)});for(let H=0;H<V.length;H++)$.distanceField.push({fieldType:V[H].getAttribute("fieldType"),distanceRange:parseInt(V[H].getAttribute("distanceRange"),10)});return $}}class j1{static test(_){return typeof _=="string"&&_.includes("<font>")?O1.test(B.ADAPTER.parseXML(_)):!1}static parse(_){return O1.parse(B.ADAPTER.parseXML(_))}}var _4=[a_,O1,j1];function $4(_){for(let $=0;$<_4.length;$++)if(_4[$].test(_))return _4[$];return null}function J4(_,$,J,Z,Q,q){let K=J.fill;if(Array.isArray(K)){if(K.length===1)return K[0]}else return K;let V,H=J.dropShadow?J.dropShadowDistance:0,w=J.padding||0,h=_.width/Z-H-w*2,z=_.height/Z-H-w*2,X=K.slice(),W=J.fillGradientStops.slice();if(!W.length){let G=X.length+1;for(let k=1;k<G;++k)W.push(k/G)}if(X.unshift(K[0]),W.unshift(0),X.push(K[K.length-1]),W.push(1),J.fillGradientType===i_.LINEAR_VERTICAL){V=$.createLinearGradient(h/2,w,h/2,z+w);let G=0,k=(q.fontProperties.fontSize+J.strokeThickness)/z;for(let C=0;C<Q.length;C++){let Y=q.lineHeight*C;for(let U=0;U<X.length;U++){let N=0;typeof W[U]=="number"?N=W[U]:N=U/X.length;let I=Y/z+N*k,f=Math.max(G,I);f=Math.min(f,1),V.addColorStop(f,X[U]),G=f}}}else{V=$.createLinearGradient(w,z/2,h+w,z/2);let G=X.length+1,k=1;for(let C=0;C<X.length;C++){let Y;typeof W[C]=="number"?Y=W[C]:Y=k/G,V.addColorStop(Y,X[C]),k++}}return V}function Z4(_,$,J,Z,Q,q,K){let{text:V,fontProperties:H}=J;$.translate(Z,Q),$.scale(q,q);let w=K.strokeThickness/2,h=-(K.strokeThickness/2);if($.font=K.toFontString(),$.lineWidth=K.strokeThickness,$.textBaseline=K.textBaseline,$.lineJoin=K.lineJoin,$.miterLimit=K.miterLimit,$.fillStyle=J4(_,$,K,q,[V],J),$.strokeStyle=K.stroke,K.dropShadow){let z=K.dropShadowColor,X=K.dropShadowBlur*q,W=K.dropShadowDistance*q;$.shadowColor=s.shared.setValue(z).setAlpha(K.dropShadowAlpha).toRgbaString(),$.shadowBlur=X,$.shadowOffsetX=Math.cos(K.dropShadowAngle)*W,$.shadowOffsetY=Math.sin(K.dropShadowAngle)*W}else $.shadowColor="black",$.shadowBlur=0,$.shadowOffsetX=0,$.shadowOffsetY=0;K.stroke&&K.strokeThickness&&$.strokeText(V,w,h+J.lineHeight-H.descent),K.fill&&$.fillText(V,w,h+J.lineHeight-H.descent),$.setTransform(1,0,0,1,0,0),$.fillStyle="rgba(0, 0, 0, 0)"}function L1(_){return _.codePointAt?_.codePointAt(0):_.charCodeAt(0)}function w6(_){return Array.from?Array.from(_):_.split("")}function Q4(_){typeof _=="string"&&(_=[_]);let $=[];for(let J=0,Z=_.length;J<Z;J++){let Q=_[J];if(Array.isArray(Q)){if(Q.length!==2)throw Error(`[BitmapFont]: Invalid character range length, expecting 2 got ${Q.length}.`);let q=Q[0].charCodeAt(0),K=Q[1].charCodeAt(0);if(K<q)throw Error("[BitmapFont]: Invalid character range.");for(let V=q,H=K;V<=H;V++)$.push(String.fromCharCode(V))}else $.push(...w6(Q))}if($.length===0)throw Error("[BitmapFont]: Empty set when resolving characters.");return $}var r_=class _{constructor($,J,Z){let[Q]=$.info,[q]=$.common,[K]=$.page,[V]=$.distanceField,H=P.getResolutionOfUrl(K.file),w={};this._ownsTextures=Z,this.font=Q.face,this.size=Q.size,this.lineHeight=q.lineHeight/H,this.chars={},this.pageTextures=w;for(let h=0;h<$.page.length;h++){let{id:z,file:X}=$.page[h];w[z]=J instanceof Array?J[h]:J[X],V?.fieldType&&V.fieldType!=="none"&&(w[z].baseTexture.alphaMode=K0.NO_PREMULTIPLIED_ALPHA,w[z].baseTexture.mipmap=F0.OFF)}for(let h=0;h<$.char.length;h++){let{id:z,page:X}=$.char[h],{x:W,y:G,width:k,height:C,xoffset:Y,yoffset:U,xadvance:N}=$.char[h];W/=H,G/=H,k/=H,C/=H,Y/=H,U/=H,N/=H;let I=new x(W+w[X].frame.x/H,G+w[X].frame.y/H,k,C);this.chars[z]={xOffset:Y,yOffset:U,xAdvance:N,kerning:{},texture:new E(w[X].baseTexture,I),page:X}}for(let h=0;h<$.kerning.length;h++){let{first:z,second:X,amount:W}=$.kerning[h];z/=H,X/=H,W/=H,this.chars[X]&&(this.chars[X].kerning[z]=W)}this.distanceFieldRange=V?.distanceRange,this.distanceFieldType=V?.fieldType?.toLowerCase()??"none"}destroy(){for(let $ in this.chars)this.chars[$].texture.destroy(),this.chars[$].texture=null;for(let $ in this.pageTextures)this._ownsTextures&&this.pageTextures[$].destroy(!0),this.pageTextures[$]=null;this.chars=null,this.pageTextures=null}static install($,J,Z){let Q;if($ instanceof S_)Q=$;else{let K=$4($);if(!K)throw Error("Unrecognized data format for font.");Q=K.parse($)}J instanceof E&&(J=[J]);let q=new _(Q,J,Z);return _.available[q.font]=q,q}static uninstall($){let J=_.available[$];if(!J)throw Error(`No font found named '${$}'`);J.destroy(),delete _.available[$]}static from($,J,Z){if(!$)throw Error("[BitmapFont] Property `name` is required.");let{chars:Q,padding:q,resolution:K,textureWidth:V,textureHeight:H,...w}=Object.assign({},_.defaultOptions,Z),h=Q4(Q),z=J instanceof g0?J:new g0(J),X=V,W=new S_;W.info[0]={face:z.fontFamily,size:z.fontSize},W.common[0]={lineHeight:z.fontSize};let G=0,k=0,C,Y,U,N=0,I=[],f=[];for(let D=0;D<h.length;D++){C||(C=B.ADAPTER.createCanvas(),C.width=V,C.height=H,Y=C.getContext("2d"),U=new p(C,{resolution:K,...w}),I.push(U),f.push(new E(U)),W.page.push({id:f.length-1,file:""}));let L=h[D],v=__.measureText(L,z,!1,C),m=v.width,F=Math.ceil(v.height),M=Math.ceil((z.fontStyle==="italic"?2:1)*m);if(k>=H-F*K){if(k===0)throw Error(`[BitmapFont] textureHeight ${H}px is too small (fontFamily: '${z.fontFamily}', fontSize: ${z.fontSize}px, char: '${L}')`);--D,C=null,Y=null,U=null,k=0,G=0,N=0;continue}if(N=Math.max(F+v.fontProperties.descent,N),M*K+G>=X){if(G===0)throw Error(`[BitmapFont] textureWidth ${V}px is too small (fontFamily: '${z.fontFamily}', fontSize: ${z.fontSize}px, char: '${L}')`);--D,k+=N*K,k=Math.ceil(k),G=0,N=0;continue}Z4(C,Y,v,G,k,K,z);let j=L1(v.text);W.char.push({id:j,page:f.length-1,x:G/K,y:k/K,width:M,height:F,xoffset:0,yoffset:0,xadvance:m-(z.dropShadow?z.dropShadowDistance:0)-(z.stroke?z.strokeThickness:0)}),G+=(M+2*q)*K,G=Math.ceil(G)}if(!Z?.skipKerning)for(let D=0,L=h.length;D<L;D++){let v=h[D];for(let m=0;m<L;m++){let F=h[m],M=Y.measureText(v).width,j=Y.measureText(F).width,A=Y.measureText(v+F).width-(M+j);A&&W.kerning.push({first:L1(v),second:L1(F),amount:A})}}let y=new _(W,f,!0);return _.available[$]!==void 0&&_.uninstall($),_.available[$]=y,y}};r_.ALPHA=[["a","z"],["A","Z"]," "],r_.NUMERIC=[["0","9"]],r_.ALPHANUMERIC=[["a","z"],["A","Z"],["0","9"]," "],r_.ASCII=[[" ","~"]],r_.defaultOptions={resolution:1,textureWidth:512,textureHeight:512,padding:4,chars:r_.ALPHANUMERIC},r_.available={};var h_=r_;var AZ=`// Pixi texture info\r
1081
1081
  varying vec2 vTextureCoord;\r
1082
1082
  uniform sampler2D uSampler;\r
1083
1083
  \r
@@ -1115,7 +1115,7 @@ void main(void) {\r
1115
1115
  // NPM Textures, NPM outputs\r
1116
1116
  gl_FragColor = vec4(uColor.rgb, coverage);\r
1117
1117
  }\r
1118
- `;var RZ=`// Mesh material default fragment\r
1118
+ `;var PZ=`// Mesh material default fragment\r
1119
1119
  attribute vec2 aVertexPosition;\r
1120
1120
  attribute vec2 aTextureCoord;\r
1121
1121
  \r
@@ -1131,16 +1131,16 @@ void main(void)\r
1131
1131
  \r
1132
1132
  vTextureCoord = (uTextureMatrix * vec3(aTextureCoord, 1.0)).xy;\r
1133
1133
  }\r
1134
- `;var MZ=[],fZ=[],EZ=[],$K=class _ extends q0{constructor($,J={}){super();let{align:Z,tint:Q,maxWidth:q,letterSpacing:K,fontName:V,fontSize:H}=Object.assign({},_.styleDefaults,J);if(!h_.available[V])throw Error(`Missing BitmapFont "${V}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=Z,this._tintColor=new s(Q),this._font=void 0,this._fontName=V,this._fontSize=H,this.text=$,this._maxWidth=q,this._maxLineHeight=0,this._letterSpacing=K,this._anchor=new u0(()=>{this.dirty=!0},this,0,0),this._roundPixels=B.ROUND_PIXELS,this.dirty=!0,this._resolution=B.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){let $=h_.available[this._fontName],J=this.fontSize,Z=J/$.size,Q=new u,q=[],K=[],V=[],H=this._text.replace(/(?:\r\n|\r)/g,`
1135
- `)||" ",w=w6(H),h=this._maxWidth*$.size/J,z=$.distanceFieldType==="none"?MZ:fZ,X=null,W=0,G=0,k=0,C=-1,Y=0,U=0,N=0,I=0;for(let F=0;F<w.length;F++){let M=w[F],j=L1(M);if(/(?:\s)/.test(M)&&(C=F,Y=W,I++),M==="\r"||M===`
1136
- `){K.push(W),V.push(-1),G=Math.max(G,W),++k,++U,Q.x=0,Q.y+=$.lineHeight,X=null,I=0;continue}let A=$.chars[j];if(!A)continue;X&&A.kerning[X]&&(Q.x+=A.kerning[X]);let i=EZ.pop()||{texture:E.EMPTY,line:0,charCode:0,prevSpaces:0,position:new u};i.texture=A.texture,i.line=k,i.charCode=j,i.position.x=Math.round(Q.x+A.xOffset+this._letterSpacing/2),i.position.y=Math.round(Q.y+A.yOffset),i.prevSpaces=I,q.push(i),W=i.position.x+Math.max(A.xAdvance-A.xOffset,A.texture.orig.width),Q.x+=A.xAdvance+this._letterSpacing,N=Math.max(N,A.yOffset+A.texture.height),X=j,C!==-1&&h>0&&Q.x>h&&(++U,P.removeItems(q,1+C-U,1+F-C),F=C,C=-1,K.push(Y),V.push(q.length>0?q[q.length-1].prevSpaces:0),G=Math.max(G,Y),k++,Q.x=0,Q.y+=$.lineHeight,X=null,I=0)}let f=w[w.length-1];f!=="\r"&&f!==`
1137
- `&&(/(?:\s)/.test(f)&&(W=Y),K.push(W),G=Math.max(G,W),V.push(-1));let y=[];for(let F=0;F<=k;F++){let M=0;this._align==="right"?M=G-K[F]:this._align==="center"?M=(G-K[F])/2:this._align==="justify"&&(M=V[F]<0?0:(G-K[F])/V[F]),y.push(M)}let D=q.length,L={},v=[],m=this._activePagesMeshData;z.push(...m);for(let F=0;F<D;F++){let M=q[F].texture,j=M.baseTexture.uid;if(!L[j]){let A=z.pop();if(!A){let a=new F1,T,h0;$.distanceFieldType==="none"?(T=new s_(E.EMPTY),h0=d.NORMAL):(T=new s_(E.EMPTY,{program:P0.from(RZ,PZ),uniforms:{uFWidth:0}}),h0=d.NORMAL_NPM);let G0=new B1(a,T);G0.blendMode=h0,A={index:0,indexCount:0,vertexCount:0,uvsCount:0,total:0,mesh:G0,vertices:null,uvs:null,indices:null}}A.index=0,A.indexCount=0,A.vertexCount=0,A.uvsCount=0,A.total=0;let{_textureCache:i}=this;i[j]=i[j]||new E(M.baseTexture),A.mesh.texture=i[j],A.mesh.tint=this._tintColor.value,v.push(A),L[j]=A}L[j].total++}for(let F=0;F<m.length;F++)v.includes(m[F])||this.removeChild(m[F].mesh);for(let F=0;F<v.length;F++)v[F].mesh.parent!==this&&this.addChild(v[F].mesh);this._activePagesMeshData=v;for(let F in L){let M=L[F],j=M.total;if(!(M.indices?.length>6*j)||M.vertices.length<B1.BATCHABLE_SIZE*2)M.vertices=new Float32Array(8*j),M.uvs=new Float32Array(8*j),M.indices=new Uint16Array(6*j);else{let{total:A,vertices:i}=M;for(let a=A*4*2;a<i.length;a++)i[a]=0}M.mesh.size=6*j}for(let F=0;F<D;F++){let M=q[F],j=M.position.x+y[M.line]*(this._align==="justify"?M.prevSpaces:1);this._roundPixels&&(j=Math.round(j));let A=j*Z,i=M.position.y*Z,a=M.texture,T=L[a.baseTexture.uid],h0=a.frame,G0=a._uvs,r=T.index++;T.indices[r*6+0]=0+r*4,T.indices[r*6+1]=1+r*4,T.indices[r*6+2]=2+r*4,T.indices[r*6+3]=0+r*4,T.indices[r*6+4]=2+r*4,T.indices[r*6+5]=3+r*4,T.vertices[r*8+0]=A,T.vertices[r*8+1]=i,T.vertices[r*8+2]=A+h0.width*Z,T.vertices[r*8+3]=i,T.vertices[r*8+4]=A+h0.width*Z,T.vertices[r*8+5]=i+h0.height*Z,T.vertices[r*8+6]=A,T.vertices[r*8+7]=i+h0.height*Z,T.uvs[r*8+0]=G0.x0,T.uvs[r*8+1]=G0.y0,T.uvs[r*8+2]=G0.x1,T.uvs[r*8+3]=G0.y1,T.uvs[r*8+4]=G0.x2,T.uvs[r*8+5]=G0.y2,T.uvs[r*8+6]=G0.x3,T.uvs[r*8+7]=G0.y3}this._textWidth=G*Z,this._textHeight=(Q.y+$.lineHeight)*Z;for(let F in L){let M=L[F];if(this.anchor.x!==0||this.anchor.y!==0){let a=0,T=this._textWidth*this.anchor.x,h0=this._textHeight*this.anchor.y;for(let G0=0;G0<M.total;G0++)M.vertices[a++]-=T,M.vertices[a++]-=h0,M.vertices[a++]-=T,M.vertices[a++]-=h0,M.vertices[a++]-=T,M.vertices[a++]-=h0,M.vertices[a++]-=T,M.vertices[a++]-=h0}this._maxLineHeight=N*Z;let j=M.mesh.geometry.getBuffer("aVertexPosition"),A=M.mesh.geometry.getBuffer("aTextureCoord"),i=M.mesh.geometry.getIndex();j.data=M.vertices,A.data=M.uvs,i.data=M.indices,j.update(),A.update(),i.update()}for(let F=0;F<q.length;F++)EZ.push(q[F]);this._font=$,this.dirty=!1}updateTransform(){this.validate(),this.containerUpdateTransform()}_render($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0);let{distanceFieldRange:J,distanceFieldType:Z,size:Q}=h_.available[this._fontName];if(Z!=="none"){let{a:q,b:K,c:V,d:H}=this.worldTransform,w=Math.sqrt(q*q+K*K),h=Math.sqrt(V*V+H*H),z=(Math.abs(w)+Math.abs(h))/2,X=this.fontSize/Q,W=$._view.resolution;for(let G of this._activePagesMeshData)G.mesh.shader.uniforms.uFWidth=z*J*X*W}super._render($)}getLocalBounds(){return this.validate(),super.getLocalBounds()}validate(){let $=h_.available[this._fontName];if(!$)throw Error(`Missing BitmapFont "${this._fontName}"`);this._font!==$&&(this.dirty=!0),this.dirty&&this.updateText()}get tint(){return this._tintColor.value}set tint($){if(this.tint!==$){this._tintColor.setValue($);for(let J=0;J<this._activePagesMeshData.length;J++)this._activePagesMeshData[J].mesh.tint=$}}get align(){return this._align}set align($){this._align!==$&&(this._align=$,this.dirty=!0)}get fontName(){return this._fontName}set fontName($){if(!h_.available[$])throw Error(`Missing BitmapFont "${$}"`);this._fontName!==$&&(this._fontName=$,this.dirty=!0)}get fontSize(){return this._fontSize??h_.available[this._fontName].size}set fontSize($){this._fontSize!==$&&(this._fontSize=$,this.dirty=!0)}get anchor(){return this._anchor}set anchor($){typeof $=="number"?this._anchor.set($):this._anchor.copyFrom($)}get text(){return this._text}set text($){$=String($??""),this._text!==$&&(this._text=$,this.dirty=!0)}get maxWidth(){return this._maxWidth}set maxWidth($){this._maxWidth!==$&&(this._maxWidth=$,this.dirty=!0)}get maxLineHeight(){return this.validate(),this._maxLineHeight}get textWidth(){return this.validate(),this._textWidth}get letterSpacing(){return this._letterSpacing}set letterSpacing($){this._letterSpacing!==$&&(this._letterSpacing=$,this.dirty=!0)}get roundPixels(){return this._roundPixels}set roundPixels($){$!==this._roundPixels&&(this._roundPixels=$,this.dirty=!0)}get textHeight(){return this.validate(),this._textHeight}get resolution(){return this._resolution}set resolution($){this._autoResolution=!1,this._resolution!==$&&(this._resolution=$,this.dirty=!0)}destroy($){let{_textureCache:J}=this,Z=h_.available[this._fontName].distanceFieldType==="none"?MZ:fZ;Z.push(...this._activePagesMeshData);for(let Q of this._activePagesMeshData)this.removeChild(Q.mesh);this._activePagesMeshData=[],Z.filter((Q)=>J[Q.mesh.texture.baseTexture.uid]).forEach((Q)=>{Q.mesh.texture=E.EMPTY});for(let Q in J)J[Q].destroy(),delete J[Q];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy($)}};$K.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};var JK=[".xml",".fnt"],vZ={extension:{type:b.LoadParser,priority:H0.Normal},name:"loadBitmapFont",test(_){return JK.includes(P.path.extname(_).toLowerCase())},async testParse(_){return a_.test(_)||j1.test(_)},async parse(_,$,J){let Z=a_.test(_)?a_.parse(_):j1.parse(_),{src:Q}=$,{page:q}=Z,K=[];for(let w=0;w<q.length;++w){let h=q[w].file,z=P.path.join(P.path.dirname(Q),h);z=Y1(z,Q),K.push(z)}let V=await J.load(K),H=K.map((w)=>V[w]);return h_.install(Z,H,!0)},async load(_,$){return(await B.ADAPTER.fetch(_)).text()},unload(_){_.destroy()}};O.add(vZ);var Q4=class _ extends g0{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from($){return new _(Object.keys(_.defaultOptions).reduce((J,Z)=>({...J,[Z]:$[Z]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(($)=>{URL.revokeObjectURL($.src),$.refs--,$.refs===0&&($.fontFace&&document.fonts.delete($.fontFace),delete _.availableFonts[$.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont($,J={}){let{availableFonts:Z}=_;if(Z[$]){let Q=Z[$];return this._fonts.push(Q),Q.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return B.ADAPTER.fetch($).then((Q)=>Q.blob()).then(async(Q)=>new Promise((q,K)=>{let V=URL.createObjectURL(Q),H=new FileReader;H.onload=()=>q([V,H.result]),H.onerror=K,H.readAsDataURL(Q)})).then(async([Q,q])=>{let K=Object.assign({family:P.path.basename($,P.path.extname($)),weight:"normal",style:"normal",display:"auto",src:Q,dataSrc:q,refs:1,originalUrl:$,fontFace:null},J);Z[$]=K,this._fonts.push(K),this.styleID++;let V=new FontFace(K.family,`url(${K.src})`,{weight:K.weight,style:K.style,display:K.display});K.fontFace=V,await V.load(),document.fonts.add(V),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...$){let J=$.filter((Z)=>!this._overrides.includes(Z));J.length>0&&(this._overrides.push(...J),this.styleID++)}removeOverride(...$){let J=$.filter((Z)=>this._overrides.includes(Z));J.length>0&&(this._overrides=this._overrides.filter((Z)=>!J.includes(Z)),this.styleID++)}toCSS($){return[`transform: scale(${$})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce(($,J)=>`${$}
1134
+ `;var RZ=[],MZ=[],fZ=[],JK=class _ extends q0{constructor($,J={}){super();let{align:Z,tint:Q,maxWidth:q,letterSpacing:K,fontName:V,fontSize:H}=Object.assign({},_.styleDefaults,J);if(!h_.available[V])throw Error(`Missing BitmapFont "${V}"`);this._activePagesMeshData=[],this._textWidth=0,this._textHeight=0,this._align=Z,this._tintColor=new s(Q),this._font=void 0,this._fontName=V,this._fontSize=H,this.text=$,this._maxWidth=q,this._maxLineHeight=0,this._letterSpacing=K,this._anchor=new u0(()=>{this.dirty=!0},this,0,0),this._roundPixels=B.ROUND_PIXELS,this.dirty=!0,this._resolution=B.RESOLUTION,this._autoResolution=!0,this._textureCache={}}updateText(){let $=h_.available[this._fontName],J=this.fontSize,Z=J/$.size,Q=new u,q=[],K=[],V=[],H=this._text.replace(/(?:\r\n|\r)/g,`
1135
+ `)||" ",w=w6(H),h=this._maxWidth*$.size/J,z=$.distanceFieldType==="none"?RZ:MZ,X=null,W=0,G=0,k=0,C=-1,Y=0,U=0,N=0,I=0;for(let F=0;F<w.length;F++){let M=w[F],j=L1(M);if(/(?:\s)/.test(M)&&(C=F,Y=W,I++),M==="\r"||M===`
1136
+ `){K.push(W),V.push(-1),G=Math.max(G,W),++k,++U,Q.x=0,Q.y+=$.lineHeight,X=null,I=0;continue}let A=$.chars[j];if(!A)continue;X&&A.kerning[X]&&(Q.x+=A.kerning[X]);let i=fZ.pop()||{texture:E.EMPTY,line:0,charCode:0,prevSpaces:0,position:new u};i.texture=A.texture,i.line=k,i.charCode=j,i.position.x=Math.round(Q.x+A.xOffset+this._letterSpacing/2),i.position.y=Math.round(Q.y+A.yOffset),i.prevSpaces=I,q.push(i),W=i.position.x+Math.max(A.xAdvance-A.xOffset,A.texture.orig.width),Q.x+=A.xAdvance+this._letterSpacing,N=Math.max(N,A.yOffset+A.texture.height),X=j,C!==-1&&h>0&&Q.x>h&&(++U,P.removeItems(q,1+C-U,1+F-C),F=C,C=-1,K.push(Y),V.push(q.length>0?q[q.length-1].prevSpaces:0),G=Math.max(G,Y),k++,Q.x=0,Q.y+=$.lineHeight,X=null,I=0)}let f=w[w.length-1];f!=="\r"&&f!==`
1137
+ `&&(/(?:\s)/.test(f)&&(W=Y),K.push(W),G=Math.max(G,W),V.push(-1));let y=[];for(let F=0;F<=k;F++){let M=0;this._align==="right"?M=G-K[F]:this._align==="center"?M=(G-K[F])/2:this._align==="justify"&&(M=V[F]<0?0:(G-K[F])/V[F]),y.push(M)}let D=q.length,L={},v=[],m=this._activePagesMeshData;z.push(...m);for(let F=0;F<D;F++){let M=q[F].texture,j=M.baseTexture.uid;if(!L[j]){let A=z.pop();if(!A){let a=new F1,T,w0;$.distanceFieldType==="none"?(T=new s_(E.EMPTY),w0=d.NORMAL):(T=new s_(E.EMPTY,{program:P0.from(PZ,AZ),uniforms:{uFWidth:0}}),w0=d.NORMAL_NPM);let G0=new B1(a,T);G0.blendMode=w0,A={index:0,indexCount:0,vertexCount:0,uvsCount:0,total:0,mesh:G0,vertices:null,uvs:null,indices:null}}A.index=0,A.indexCount=0,A.vertexCount=0,A.uvsCount=0,A.total=0;let{_textureCache:i}=this;i[j]=i[j]||new E(M.baseTexture),A.mesh.texture=i[j],A.mesh.tint=this._tintColor.value,v.push(A),L[j]=A}L[j].total++}for(let F=0;F<m.length;F++)v.includes(m[F])||this.removeChild(m[F].mesh);for(let F=0;F<v.length;F++)v[F].mesh.parent!==this&&this.addChild(v[F].mesh);this._activePagesMeshData=v;for(let F in L){let M=L[F],j=M.total;if(!(M.indices?.length>6*j)||M.vertices.length<B1.BATCHABLE_SIZE*2)M.vertices=new Float32Array(8*j),M.uvs=new Float32Array(8*j),M.indices=new Uint16Array(6*j);else{let{total:A,vertices:i}=M;for(let a=A*4*2;a<i.length;a++)i[a]=0}M.mesh.size=6*j}for(let F=0;F<D;F++){let M=q[F],j=M.position.x+y[M.line]*(this._align==="justify"?M.prevSpaces:1);this._roundPixels&&(j=Math.round(j));let A=j*Z,i=M.position.y*Z,a=M.texture,T=L[a.baseTexture.uid],w0=a.frame,G0=a._uvs,r=T.index++;T.indices[r*6+0]=0+r*4,T.indices[r*6+1]=1+r*4,T.indices[r*6+2]=2+r*4,T.indices[r*6+3]=0+r*4,T.indices[r*6+4]=2+r*4,T.indices[r*6+5]=3+r*4,T.vertices[r*8+0]=A,T.vertices[r*8+1]=i,T.vertices[r*8+2]=A+w0.width*Z,T.vertices[r*8+3]=i,T.vertices[r*8+4]=A+w0.width*Z,T.vertices[r*8+5]=i+w0.height*Z,T.vertices[r*8+6]=A,T.vertices[r*8+7]=i+w0.height*Z,T.uvs[r*8+0]=G0.x0,T.uvs[r*8+1]=G0.y0,T.uvs[r*8+2]=G0.x1,T.uvs[r*8+3]=G0.y1,T.uvs[r*8+4]=G0.x2,T.uvs[r*8+5]=G0.y2,T.uvs[r*8+6]=G0.x3,T.uvs[r*8+7]=G0.y3}this._textWidth=G*Z,this._textHeight=(Q.y+$.lineHeight)*Z;for(let F in L){let M=L[F];if(this.anchor.x!==0||this.anchor.y!==0){let a=0,T=this._textWidth*this.anchor.x,w0=this._textHeight*this.anchor.y;for(let G0=0;G0<M.total;G0++)M.vertices[a++]-=T,M.vertices[a++]-=w0,M.vertices[a++]-=T,M.vertices[a++]-=w0,M.vertices[a++]-=T,M.vertices[a++]-=w0,M.vertices[a++]-=T,M.vertices[a++]-=w0}this._maxLineHeight=N*Z;let j=M.mesh.geometry.getBuffer("aVertexPosition"),A=M.mesh.geometry.getBuffer("aTextureCoord"),i=M.mesh.geometry.getIndex();j.data=M.vertices,A.data=M.uvs,i.data=M.indices,j.update(),A.update(),i.update()}for(let F=0;F<q.length;F++)fZ.push(q[F]);this._font=$,this.dirty=!1}updateTransform(){this.validate(),this.containerUpdateTransform()}_render($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0);let{distanceFieldRange:J,distanceFieldType:Z,size:Q}=h_.available[this._fontName];if(Z!=="none"){let{a:q,b:K,c:V,d:H}=this.worldTransform,w=Math.sqrt(q*q+K*K),h=Math.sqrt(V*V+H*H),z=(Math.abs(w)+Math.abs(h))/2,X=this.fontSize/Q,W=$._view.resolution;for(let G of this._activePagesMeshData)G.mesh.shader.uniforms.uFWidth=z*J*X*W}super._render($)}getLocalBounds(){return this.validate(),super.getLocalBounds()}validate(){let $=h_.available[this._fontName];if(!$)throw Error(`Missing BitmapFont "${this._fontName}"`);this._font!==$&&(this.dirty=!0),this.dirty&&this.updateText()}get tint(){return this._tintColor.value}set tint($){if(this.tint!==$){this._tintColor.setValue($);for(let J=0;J<this._activePagesMeshData.length;J++)this._activePagesMeshData[J].mesh.tint=$}}get align(){return this._align}set align($){this._align!==$&&(this._align=$,this.dirty=!0)}get fontName(){return this._fontName}set fontName($){if(!h_.available[$])throw Error(`Missing BitmapFont "${$}"`);this._fontName!==$&&(this._fontName=$,this.dirty=!0)}get fontSize(){return this._fontSize??h_.available[this._fontName].size}set fontSize($){this._fontSize!==$&&(this._fontSize=$,this.dirty=!0)}get anchor(){return this._anchor}set anchor($){typeof $=="number"?this._anchor.set($):this._anchor.copyFrom($)}get text(){return this._text}set text($){$=String($??""),this._text!==$&&(this._text=$,this.dirty=!0)}get maxWidth(){return this._maxWidth}set maxWidth($){this._maxWidth!==$&&(this._maxWidth=$,this.dirty=!0)}get maxLineHeight(){return this.validate(),this._maxLineHeight}get textWidth(){return this.validate(),this._textWidth}get letterSpacing(){return this._letterSpacing}set letterSpacing($){this._letterSpacing!==$&&(this._letterSpacing=$,this.dirty=!0)}get roundPixels(){return this._roundPixels}set roundPixels($){$!==this._roundPixels&&(this._roundPixels=$,this.dirty=!0)}get textHeight(){return this.validate(),this._textHeight}get resolution(){return this._resolution}set resolution($){this._autoResolution=!1,this._resolution!==$&&(this._resolution=$,this.dirty=!0)}destroy($){let{_textureCache:J}=this,Z=h_.available[this._fontName].distanceFieldType==="none"?RZ:MZ;Z.push(...this._activePagesMeshData);for(let Q of this._activePagesMeshData)this.removeChild(Q.mesh);this._activePagesMeshData=[],Z.filter((Q)=>J[Q.mesh.texture.baseTexture.uid]).forEach((Q)=>{Q.mesh.texture=E.EMPTY});for(let Q in J)J[Q].destroy(),delete J[Q];this._font=null,this._tintColor=null,this._textureCache=null,super.destroy($)}};JK.styleDefaults={align:"left",tint:16777215,maxWidth:0,letterSpacing:0};var ZK=[".xml",".fnt"],EZ={extension:{type:b.LoadParser,priority:H0.Normal},name:"loadBitmapFont",test(_){return ZK.includes(P.path.extname(_).toLowerCase())},async testParse(_){return a_.test(_)||j1.test(_)},async parse(_,$,J){let Z=a_.test(_)?a_.parse(_):j1.parse(_),{src:Q}=$,{page:q}=Z,K=[];for(let w=0;w<q.length;++w){let h=q[w].file,z=P.path.join(P.path.dirname(Q),h);z=Y1(z,Q),K.push(z)}let V=await J.load(K),H=K.map((w)=>V[w]);return h_.install(Z,H,!0)},async load(_,$){return(await B.ADAPTER.fetch(_)).text()},unload(_){_.destroy()}};O.add(EZ);var q4=class _ extends g0{constructor(){super(...arguments),this._fonts=[],this._overrides=[],this._stylesheet="",this.fontsDirty=!1}static from($){return new _(Object.keys(_.defaultOptions).reduce((J,Z)=>({...J,[Z]:$[Z]}),{}))}cleanFonts(){this._fonts.length>0&&(this._fonts.forEach(($)=>{URL.revokeObjectURL($.src),$.refs--,$.refs===0&&($.fontFace&&document.fonts.delete($.fontFace),delete _.availableFonts[$.originalUrl])}),this.fontFamily="Arial",this._fonts.length=0,this.styleID++,this.fontsDirty=!0)}loadFont($,J={}){let{availableFonts:Z}=_;if(Z[$]){let Q=Z[$];return this._fonts.push(Q),Q.refs++,this.styleID++,this.fontsDirty=!0,Promise.resolve()}return B.ADAPTER.fetch($).then((Q)=>Q.blob()).then(async(Q)=>new Promise((q,K)=>{let V=URL.createObjectURL(Q),H=new FileReader;H.onload=()=>q([V,H.result]),H.onerror=K,H.readAsDataURL(Q)})).then(async([Q,q])=>{let K=Object.assign({family:P.path.basename($,P.path.extname($)),weight:"normal",style:"normal",display:"auto",src:Q,dataSrc:q,refs:1,originalUrl:$,fontFace:null},J);Z[$]=K,this._fonts.push(K),this.styleID++;let V=new FontFace(K.family,`url(${K.src})`,{weight:K.weight,style:K.style,display:K.display});K.fontFace=V,await V.load(),document.fonts.add(V),await document.fonts.ready,this.styleID++,this.fontsDirty=!0})}addOverride(...$){let J=$.filter((Z)=>!this._overrides.includes(Z));J.length>0&&(this._overrides.push(...J),this.styleID++)}removeOverride(...$){let J=$.filter((Z)=>this._overrides.includes(Z));J.length>0&&(this._overrides=this._overrides.filter((Z)=>!J.includes(Z)),this.styleID++)}toCSS($){return[`transform: scale(${$})`,"transform-origin: top left","display: inline-block",`color: ${this.normalizeColor(this.fill)}`,`font-size: ${this.fontSize}px`,`font-family: ${this.fontFamily}`,`font-weight: ${this.fontWeight}`,`font-style: ${this.fontStyle}`,`font-variant: ${this.fontVariant}`,`letter-spacing: ${this.letterSpacing}px`,`text-align: ${this.align}`,`padding: ${this.padding}px`,`white-space: ${this.whiteSpace}`,...this.lineHeight?[`line-height: ${this.lineHeight}px`]:[],...this.wordWrap?[`word-wrap: ${this.breakWords?"break-all":"break-word"}`,`max-width: ${this.wordWrapWidth}px`]:[],...this.strokeThickness?[`-webkit-text-stroke-width: ${this.strokeThickness}px`,`-webkit-text-stroke-color: ${this.normalizeColor(this.stroke)}`,`text-stroke-width: ${this.strokeThickness}px`,`text-stroke-color: ${this.normalizeColor(this.stroke)}`,"paint-order: stroke"]:[],...this.dropShadow?[this.dropShadowToCSS()]:[],...this._overrides].join(";")}toGlobalCSS(){return this._fonts.reduce(($,J)=>`${$}
1138
1138
  @font-face {
1139
1139
  font-family: "${J.family}";
1140
1140
  src: url('${J.dataSrc}');
1141
1141
  font-weight: ${J.weight};
1142
1142
  font-style: ${J.style};
1143
1143
  font-display: ${J.display};
1144
- }`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet($){this._stylesheet!==$&&(this._stylesheet=$,this.styleID++)}normalizeColor($){return Array.isArray($)&&($=P.rgb2hex($)),typeof $=="number"?P.hex2string($):$}dropShadowToCSS(){let $=this.normalizeColor(this.dropShadowColor),J=this.dropShadowAlpha,Z=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),Q=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);$.startsWith("#")&&J<1&&($+=(J*255|0).toString(16).padStart(2,"0"));let q=`${Z}px ${Q}px`;return this.dropShadowBlur>0?`text-shadow: ${q} ${this.dropShadowBlur}px ${$}`:`text-shadow: ${q} ${$}`}reset(){Object.assign(this,_.defaultOptions)}onBeforeDraw(){let{fontsDirty:$}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&$?new Promise((J)=>setTimeout(J,100)):Promise.resolve()}get isSafari(){let{userAgent:$}=B.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test($)}set fillGradientStops($){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType($){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit($){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim($){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline($){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading($){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin($){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};Q4.availableFonts={},Q4.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};var h6=Q4;var x8=class _ extends L0{constructor($="",J={}){super(E.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;let Z=new Image,Q=E.from(Z,{scaleMode:B.SCALE_MODE,resourceOptions:{autoLoad:!1}});Q.orig=new x,Q.trim=new x,this.texture=Q;let q="http://www.w3.org/2000/svg",K="http://www.w3.org/1999/xhtml",V=document.createElementNS(q,"svg"),H=document.createElementNS(q,"foreignObject"),w=document.createElementNS(K,"div"),h=document.createElementNS(K,"style");H.setAttribute("width","10000"),H.setAttribute("height","10000"),H.style.overflow="hidden",V.appendChild(H),this.maxWidth=_.defaultMaxWidth,this.maxHeight=_.defaultMaxHeight,this._domElement=w,this._styleElement=h,this._svgRoot=V,this._foreignObject=H,this._foreignObject.appendChild(h),this._foreignObject.appendChild(w),this._image=Z,this._loadImage=new Image,this._autoResolution=_.defaultAutoResolution,this._resolution=_.defaultResolution??B.RESOLUTION,this.text=$,this.style=J}measureText($){let{text:J,style:Z,resolution:Q}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},$);Object.assign(this._domElement,{innerHTML:J,style:Z.toCSS(Q)}),this._styleElement.textContent=Z.toGlobalCSS(),document.body.appendChild(this._svgRoot);let q=this._domElement.getBoundingClientRect();this._svgRoot.remove();let{width:K,height:V}=q;(K>this.maxWidth||V>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");let H=Math.min(this.maxWidth,Math.ceil(K)),w=Math.min(this.maxHeight,Math.ceil(V));return this._svgRoot.setAttribute("width",H.toString()),this._svgRoot.setAttribute("height",w.toString()),J!==this._text&&(this._domElement.innerHTML=this._text),Z!==this._style&&(Object.assign(this._domElement,{style:this._style?.toCSS(Q)}),this._styleElement.textContent=this._style?.toGlobalCSS()),{width:H+Z.padding*2,height:w+Z.padding*2}}async updateText($=!0){let{style:J,_image:Z,_loadImage:Q}=this;if(this.localStyleID!==J.styleID&&(this.dirty=!0,this.localStyleID=J.styleID),!this.dirty&&$)return;let{width:q,height:K}=this.measureText();Z.width=Q.width=Math.ceil(Math.max(1,q)),Z.height=Q.height=Math.ceil(Math.max(1,K)),this._updateID++;let V=this._updateID;await new Promise((H)=>{Q.onload=async()=>{if(V<this._updateID){H();return}await J.onBeforeDraw(),Z.src=Q.src,Q.onload=null,Q.src="",this.updateTexture(),H()};let w=new XMLSerializer().serializeToString(this._svgRoot);Q.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(w)}`})}get source(){return this._image}updateTexture(){let{style:$,texture:J,_image:Z,resolution:Q}=this,{padding:q}=$,{baseTexture:K}=J;J.trim.width=J._frame.width=Z.width/Q,J.trim.height=J._frame.height=Z.height/Q,J.trim.x=-q,J.trim.y=-q,J.orig.width=J._frame.width-q*2,J.orig.height=J._frame.height-q*2,this._onTextureUpdate(),K.setRealSize(Z.width,Z.height,Q),this.dirty=!1}_render($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0),this.updateText(!0),super._render($)}_renderCanvas($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0),this.updateText(!0),super._renderCanvas($)}getLocalBounds($){return this.updateText(!0),super.getLocalBounds($)}_calculateBounds(){this.updateText(!0),this.calculateVertices(),this._bounds.addQuad(this.vertexData)}_onStyleChange(){this.dirty=!0}destroy($){typeof $=="boolean"&&($={children:$}),$=Object.assign({},_.defaultDestroyOptions,$),super.destroy($);let J=null;this.ownsStyle&&this._style?.cleanFonts(),this._style=J,this._svgRoot?.remove(),this._svgRoot=J,this._domElement?.remove(),this._domElement=J,this._foreignObject?.remove(),this._foreignObject=J,this._styleElement?.remove(),this._styleElement=J,this._loadImage.src="",this._loadImage.onload=null,this._loadImage=J,this._image.src="",this._image=J}get width(){return this.updateText(!0),Math.abs(this.scale.x)*this._image.width/this.resolution}set width($){this.updateText(!0);let J=P.sign(this.scale.x)||1;this.scale.x=J*$/this._image.width/this.resolution,this._width=$}get height(){return this.updateText(!0),Math.abs(this.scale.y)*this._image.height/this.resolution}set height($){this.updateText(!0);let J=P.sign(this.scale.y)||1;this.scale.y=J*$/this._image.height/this.resolution,this._height=$}get style(){return this._style}set style($){this._style!==$&&($=$||{},$ instanceof h6?(this.ownsStyle=!1,this._style=$):$ instanceof g0?(console.warn("[HTMLText] Cloning TextStyle, if this is not what you want, use HTMLTextStyle"),this.ownsStyle=!0,this._style=h6.from($)):(this.ownsStyle=!0,this._style=new h6($)),this.localStyleID=-1,this.dirty=!0)}get text(){return this._text}set text($){$=String($===""||$===null||$===void 0?" ":$),$=this.sanitiseText($),this._text!==$&&(this._text=$,this.dirty=!0)}get resolution(){return this._resolution}set resolution($){this._autoResolution=!1,this._resolution!==$&&(this._resolution=$,this.dirty=!0)}sanitiseText($){return $.replace(/<br>/gi,"<br/>").replace(/<hr>/gi,"<hr/>").replace(/&nbsp;/gi,"&#160;")}};x8.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},x8.defaultMaxWidth=2024,x8.defaultMaxHeight=2024,x8.defaultAutoResolution=!0;var ZK={color:16777215,alpha:1};class m8{app=null;root=null;state;stack=[];texture_cache=new Map;gradient_texture_cache=new Map;text_texture_cache=new Map;_width=0;_height=0;_dpr=1;is_initialized=!1;context_lost_listener=null;context_restored_listener=null;get width(){return this._width}get height(){return this._height}initialize(_,$=!0){this.dispose(),this.ensure_sprite_texture_limit(),this._dpr=$?window.devicePixelRatio||1:1;let J=_.clientWidth||_.width,Z=_.clientHeight||_.height;this.app=new U8({view:_,width:J,height:Z,backgroundAlpha:0,antialias:!0,autoDensity:!0,resolution:this._dpr,clearBeforeRender:!0}),this.app.ticker.stop(),p.defaultOptions.scaleMode=y0.LINEAR;let Q=this.app.view;this.context_lost_listener=(q)=>{q.preventDefault()},this.context_restored_listener=()=>{this.ensure_sprite_texture_limit()},Q.addEventListener("webglcontextlost",this.context_lost_listener,{passive:!1}),Q.addEventListener("webglcontextrestored",this.context_restored_listener),this.root=new q0,this.app.stage.addChild(this.root),this._width=J,this._height=Z,this.reset_state(),this.is_initialized=!0}begin_frame(){this.clear()}end_frame(){if(!this.app)return;this.app.renderer.render(this.app.stage)}clear(){if(!this.root)return;let _=this.root.removeChildren();for(let $=0;$<_.length;$++)_[$].destroy({children:!0});this.reset_state()}resize(_,$){if(!this.app)return;this._width=_,this._height=$,this._dpr=window.devicePixelRatio||1,this.app.renderer.resolution=this._dpr,this.app.renderer.resize(_,$)}dispose(){if(this.clear_texture_caches(),this.app){let _=this.app.view;if(this.context_lost_listener)_.removeEventListener("webglcontextlost",this.context_lost_listener);if(this.context_restored_listener)_.removeEventListener("webglcontextrestored",this.context_restored_listener);this.app.destroy(!1,{children:!0,texture:!0,baseTexture:!0}),this.app=null}this.root=null,this.stack=[],this.is_initialized=!1,this.context_lost_listener=null,this.context_restored_listener=null}draw_circle(_,$,J,Z,Q,q){let K=this.make_graphics(),V=z_(Z),H=z_(Q);if(Z&&Z!=="transparent")K.beginFill(V.color,V.alpha*this.state.alpha);if(Q&&q&&q>0)K.lineStyle(q,H.color,H.alpha*this.state.alpha);if(K.drawCircle(_,$,J),Z&&Z!=="transparent")K.endFill()}draw_arc(_,$,J,Z,Q,q,K,V=!1){let H=this.make_graphics(),w=z_(q);H.lineStyle(K,w.color,w.alpha*this.state.alpha),H.arc(_,$,J,Z,Q,V)}draw_rect(_,$,J,Z,Q){let q=this.make_graphics(),K=z_(Q);q.beginFill(K.color,K.alpha*this.state.alpha),q.drawRect(_,$,J,Z),q.endFill()}draw_rect_gradient(_,$,J,Z,Q){let q=this.get_or_create_gradient_texture(_,$,J,Z,Q),K=new L0(q);K.alpha=this.state.alpha,K.blendMode=this.state.blend_mode,K.transform.setFromMatrix(this.compose_matrix(_,$,J/q.width,Z/q.height)),this.state.container.addChild(K)}create_linear_gradient(_,$,J,Z,Q){return{type:"linear_gradient",x0:_,y0:$,x1:J,y1:Z,stops:Q}}draw_text(_,$,J,Z,Q,q="left",K="alphabetic"){let V=z_(Q),H=this.get_or_create_text_texture(_,Z,V),w=new L0(H.texture);w.alpha=V.alpha*this.state.alpha,w.blendMode=this.state.blend_mode;let h=0;switch(q){case"center":h=0.5;break;case"right":case"end":h=1;break;default:h=0;break}let z=0;switch(K){case"top":case"hanging":z=0;break;case"middle":z=0.5;break;case"bottom":case"ideographic":z=1;break;default:z=H.ascent/Math.max(1,H.height);break}w.anchor.set(h,z),w.transform.setFromMatrix(this.compose_matrix($,J,1/H.resolution,1/H.resolution)),this.state.container.addChild(w)}begin_path(){this.state.path=[]}move_to(_,$){this.state.path.push({type:"move",x:_,y:$})}line_to(_,$){this.state.path.push({type:"line",x:_,y:$})}draw_line(_,$,J,Z,Q,q){let K=this.make_graphics(),V=z_(Q);K.lineStyle(q,V.color,V.alpha*this.state.alpha),K.moveTo(_,$),K.lineTo(J,Z)}bezier_curve_to(_,$,J,Z,Q,q){let V=this.get_last_path_point();if(!V)return;for(let H=1;H<=24;H++){let w=H/24,h=1-w,z=h*h*h*V.x+3*h*h*w*_+3*h*w*w*J+w*w*w*Q,X=h*h*h*V.y+3*h*h*w*$+3*h*w*w*Z+w*w*w*q;this.state.path.push({type:"line",x:z,y:X})}}quadratic_curve_to(_,$,J,Z){let q=this.get_last_path_point();if(!q)return;for(let K=1;K<=20;K++){let V=K/20,H=1-V,w=H*H*q.x+2*H*V*_+V*V*J,h=H*H*q.y+2*H*V*$+V*V*Z;this.state.path.push({type:"line",x:w,y:h})}}arc_to(_,$,J,Z,Q,q=!1){this.state.path.push({type:"arc",x:_,y:$,radius:J,start:Z,end:Q,ccw:q})}rect(_,$,J,Z){this.state.path.push({type:"rect",x:_,y:$,width:J,height:Z})}clip(){if(!this.root||this.state.path.length===0)return;let _=this.make_graphics();this.apply_path(_,this.state.path);let $=new q0;$.mask=_,this.state.container.addChild(_),this.state.container.addChild($),this.state.container=$,this.state.path=[]}stroke_path(_,$,J="butt",Z="miter"){let Q=this.make_graphics(),q=z_(_);Q.lineStyle($,q.color,q.alpha*this.state.alpha),this.apply_path(Q,this.state.path)}fill_path(_){let $=this.make_graphics(),J=z_(_);$.beginFill(J.color,J.alpha*this.state.alpha),this.apply_path($,this.state.path),$.endFill()}close_path(){this.state.path.push({type:"close"})}save(){this.stack.push({matrix:this.state.matrix.clone(),alpha:this.state.alpha,blend_mode:this.state.blend_mode,container:this.state.container,path:this.state.path.slice()})}restore(){let _=this.stack.pop();if(!_)return;this.state=_}translate(_,$){let J=new o;J.translate(_,$),this.state.matrix.append(J)}scale(_,$){let J=new o;J.scale(_,$),this.state.matrix.append(J)}rotate(_){let $=new o;$.rotate(_),this.state.matrix.append($)}set_alpha(_){this.state.alpha=_}set_shadow(_,$){}set_composite_operation(_){this.state.blend_mode=zK(_)}set_blend_mode(_){switch(_){case"lighter":this.state.blend_mode=d.ADD;return;case"multiply":this.state.blend_mode=d.MULTIPLY;return;case"screen":this.state.blend_mode=d.SCREEN;return;default:this.state.blend_mode=d.NORMAL;return}}draw_image(_,$,J,Z,Q,q){let K=this.get_texture(_.source);if(!K)return;let V=new L0(K);if(V.alpha=this.state.alpha,V.blendMode=this.state.blend_mode,q){let X=z_(q);V.tint=X.color,V.alpha*=X.alpha}let H=Z??_.width??K.width,w=Q??_.height??K.height,h=H/Math.max(1,K.width),z=w/Math.max(1,K.height);V.transform.setFromMatrix(this.compose_matrix($,J,h,z)),this.state.container.addChild(V)}draw_image_part(_,$,J,Z,Q,q,K,V,H){let w=this.get_texture(_.source);if(!w)return;let h=new E(w.baseTexture,new x($,J,Z,Q)),z=new L0(h);z.alpha=this.state.alpha,z.blendMode=this.state.blend_mode,z.transform.setFromMatrix(this.compose_matrix(q,K,V/Math.max(1,Z),H/Math.max(1,Q))),this.state.container.addChild(z)}render_slider_to_image(_,$,J,Z,Q,q=1,K=1,V=null){if(!this.app||_.length<2)return null;let H=qK(_);if(H.length<2)return null;let w=KK(H,Math.max(0.02,$*0.001)),h=1/0,z=1/0,X=-1/0,W=-1/0;for(let L=0;L<w.length;L++){let v=w[L];if(v[0]<h)h=v[0];if(v[0]>X)X=v[0];if(v[1]<z)z=v[1];if(v[1]>W)W=v[1]}let G=1,k=$*G+2;h-=k,z-=k,X+=k,W+=k;let C=Math.ceil((X-h)*Q),Y=Math.ceil((W-z)*Q);if(C<=0||Y<=0)return null;let U=-h,N=-z,I=z_(J),f=z_(Z),y=$*0.9;return{source:this.render_slider_canvas_fallback(w,U,N,$*G,y,I,f,Q,q,K,V,C,Y),width:C,height:Y,min_x:h,min_y:z}}render_slider_canvas_fallback(_,$,J,Z,Q,q,K,V,H,w,h,z,X){let W=Math.max(1,z),G=Math.max(1,X),k=document.createElement("canvas");k.width=W,k.height=G;let C=k.getContext("2d");if(!C)return E.WHITE;C.save(),C.imageSmoothingEnabled=!0,C.imageSmoothingQuality="high",C.scale(V,V),C.translate($,J),C.lineCap="round",C.lineJoin="round";let Y=VK(_),U=()=>{if(Y){C.stroke(Y);return}C.beginPath(),C.moveTo(_[0][0],_[0][1]);for(let j=1;j<_.length;j++)C.lineTo(_[j][0],_[j][1]);C.stroke()},N={color:K.color,alpha:0.58*H},I={color:q.color,alpha:q.alpha*w},f={color:0,alpha:0.25*w},y=wK(N,0.1),D=hK(N,0.3),L=0.078125,v=0.1875,m=(j)=>{let A=K4(j);if(A<=L)return yZ({color:0,alpha:0},f,A/Math.max(0.000001,L));if(A<=v)return I;let i=(A-v)/Math.max(0.000001,1-v),a=Math.pow(K4(i),1.25);return yZ(y,D,a)},F=Math.max(1,Math.floor(_.length/120)),M=Math.max(38,Math.min(62,Math.floor(58/F)));C.globalAlpha=1;for(let j=M;j>=1;j--){let A=j/M,i=Z*2*A,a=1-A,T=m(a);C.strokeStyle=cZ(T),C.lineWidth=Math.max(0.5,i),U()}return C.restore(),E.from(k)}reset_state(){if(!this.root)return;this.state={matrix:new o,alpha:1,blend_mode:d.NORMAL,container:this.root,path:[]},this.stack=[]}make_graphics(){let _=new Z5;return _.blendMode=this.state.blend_mode,_.transform.setFromMatrix(this.state.matrix),this.state.container.addChild(_),_}apply_path(_,$){for(let J=0;J<$.length;J++){let Z=$[J];switch(Z.type){case"move":_.moveTo(Z.x,Z.y);break;case"line":_.lineTo(Z.x,Z.y);break;case"arc":_.arc(Z.x,Z.y,Z.radius,Z.start,Z.end,Z.ccw);break;case"rect":_.drawRect(Z.x,Z.y,Z.width,Z.height);break;case"close":_.closePath();break}}}compose_matrix(_,$,J=1,Z=1){let Q=this.state.matrix.clone(),q=new o;if(q.translate(_,$),Q.append(q),J!==1||Z!==1){let K=new o;K.scale(J,Z),Q.append(K)}return Q}get_last_path_point(){for(let _=this.state.path.length-1;_>=0;_--){let $=this.state.path[_];if($.type==="move"||$.type==="line")return{x:$.x,y:$.y}}return null}get_texture(_){if(!_)return null;if(_ instanceof E)return _;let $=this.texture_cache.get(_);if($)return $;let J=E.from(_);return this.texture_cache.set(_,J),J}get_or_create_gradient_texture(_,$,J,Z,Q){let q=JSON.stringify({x:_,y:$,width:J,height:Z,gradient:Q}),K=this.gradient_texture_cache.get(q);if(K)return K;let V=document.createElement("canvas");V.width=Math.max(1,Math.ceil(J)),V.height=Math.max(1,Math.ceil(Z));let H=V.getContext("2d");if(!H)return E.WHITE;let w=H.createLinearGradient(Q.x0-_,Q.y0-$,Q.x1-_,Q.y1-$);for(let z=0;z<Q.stops.length;z++)w.addColorStop(Q.stops[z].offset,Q.stops[z].color);H.fillStyle=w,H.fillRect(0,0,V.width,V.height);let h=E.from(V);return this.gradient_texture_cache.set(q,h),h}get_or_create_text_texture(_,$,J){let Z=`${_}|${$}|${J.color}`,Q=this.text_texture_cache.get(Z);if(Q)return Q;let q=QK($),K=Math.min(6,Math.max(2,this._dpr*3)),V=document.createElement("canvas"),H=V.getContext("2d");if(!H)return{texture:E.WHITE,width:1,height:1,ascent:1,descent:0,resolution:1};H.font=q.css;let w=H.measureText(_),h=Math.max(1,Math.ceil(w.width||q.size)),z=Math.max(1,Math.ceil(w.actualBoundingBoxAscent||q.size*0.8)),X=Math.max(0,Math.ceil(w.actualBoundingBoxDescent||q.size*0.2)),W=Math.max(1,z+X),G=Math.max(2,Math.ceil(q.size*0.25)),k=h+G*2,C=W+G*2;V.width=Math.ceil(k*K),V.height=Math.ceil(C*K),H.setTransform(1,0,0,1,0,0),H.clearRect(0,0,V.width,V.height),H.scale(K,K),H.font=q.css,H.fillStyle=cZ(J),H.textAlign="center",H.textBaseline="middle",H.fillText(_,k/2,C/2);let U={texture:E.from(V),width:k,height:C,ascent:C/2,descent:C/2,resolution:K};return this.text_texture_cache.set(Z,U),U}clear_texture_caches(){for(let _ of this.texture_cache.values()){if(_===E.WHITE)continue;_.destroy(!0)}this.texture_cache.clear();for(let _ of this.gradient_texture_cache.values())_.destroy(!0);this.gradient_texture_cache.clear();for(let _ of this.text_texture_cache.values())if(_.texture!==E.WHITE)_.texture.destroy(!0);this.text_texture_cache.clear()}ensure_sprite_texture_limit(){if(B.SPRITE_MAX_TEXTURES<=0)B.SPRITE_MAX_TEXTURES=16}}var QK=(_)=>{let $=_.trim().split(/\s+/),J=14,Z="normal",Q=-1;for(let V=0;V<$.length;V++)if($[V].endsWith("px")){J=Number.parseFloat($[V].replace("px","")),Q=V;break}if(Q>0)Z=$[Q-1];let q=Q>=0?$.slice(Q+1).join(" "):'"Trebuchet MS", Verdana, Arial, sans-serif';return{css:`${Z} ${Number.isFinite(J)?J:14}px ${q||'"Trebuchet MS", Verdana, Arial, sans-serif'}`,size:Number.isFinite(J)?J:14}},z_=(_)=>{if(!_||_==="transparent")return{color:16777215,alpha:0};let $=_.trim().toLowerCase();if($.startsWith("#")){let Z=$.slice(1);if(Z.length===3){let Q=Number.parseInt(Z[0]+Z[0],16),q=Number.parseInt(Z[1]+Z[1],16),K=Number.parseInt(Z[2]+Z[2],16);return{color:Q<<16|q<<8|K,alpha:1}}if(Z.length===6||Z.length===8){let Q=Number.parseInt(Z.slice(0,6),16);if(Z.length===8){let q=Number.parseInt(Z.slice(6,8),16)/255;return{color:Q,alpha:q}}return{color:Q,alpha:1}}}let J=$.match(/^rgba?\(([^)]+)\)$/);if(J){let Z=J[1].split(",").map((Q)=>Q.trim());if(Z.length>=3){let Q=q4(Number.parseFloat(Z[0])),q=q4(Number.parseFloat(Z[1])),K=q4(Number.parseFloat(Z[2])),V=Z.length>=4?K4(Number.parseFloat(Z[3])):1;return{color:Q<<16|q<<8|K,alpha:V}}}if($==="white")return{color:16777215,alpha:1};if($==="black")return{color:0,alpha:1};return ZK},cZ=(_)=>{let $=_.color>>16&255,J=_.color>>8&255,Z=_.color&255;return`rgba(${$},${J},${Z},${_.alpha})`},qK=(_)=>{if(_.length<=2)return _;let $=[_[0]],J=0.000000000001;for(let Z=1;Z<_.length;Z++){let Q=$[$.length-1],q=_[Z],K=q[0]-Q[0],V=q[1]-Q[1];if(K*K+V*V<=J)continue;$.push(q)}if($.length<2)return[_[0],_[_.length-1]];return $},KK=(_,$)=>{if(_.length<=2)return _;let J=[_[0]],Z=$*$;for(let K=1;K<_.length-1;K++){let V=J[J.length-1],H=_[K],w=_[K+1],h=H[0]-V[0],z=H[1]-V[1],X=h*h+z*z;if(X<Z)continue;let W=H[0]-V[0],G=H[1]-V[1],k=w[0]-H[0],C=w[1]-H[1],Y=Math.hypot(W,G),U=Math.hypot(k,C);if(Y>0&&U>0){if((W*k+G*C)/(Y*U)>0.9985&&X<Z*4)continue}J.push(H)}let Q=_[_.length-1],q=J[J.length-1];if(q[0]!==Q[0]||q[1]!==Q[1])J.push(Q);return J.length>=2?J:[_[0],Q]},VK=(_)=>{if(typeof Path2D>"u"||_.length<2)return null;let $=new Path2D;$.moveTo(_[0][0],_[0][1]);for(let J=1;J<_.length;J++)$.lineTo(_[J][0],_[J][1]);return $},HK=(_,$,J)=>{let Z=Math.max(0,Math.min(1,J)),Q=_.color>>16&255,q=_.color>>8&255,K=_.color&255,V=$>>16&255,H=$>>8&255,w=$&255,h=Math.round(Q+(V-Q)*Z),z=Math.round(q+(H-q)*Z),X=Math.round(K+(w-K)*Z);return{color:h<<16|z<<8|X,alpha:_.alpha}},yZ=(_,$,J)=>{let Z=Math.max(0,Math.min(1,J)),Q=_.color>>16&255,q=_.color>>8&255,K=_.color&255,V=$.color>>16&255,H=$.color>>8&255,w=$.color&255,h=Math.round(Q+(V-Q)*Z),z=Math.round(q+(H-q)*Z),X=Math.round(K+(w-K)*Z);return{color:h<<16|z<<8|X,alpha:_.alpha+($.alpha-_.alpha)*Z}},wK=(_,$)=>HK(_,0,$),hK=(_,$)=>{let J=Math.max(0,$*0.5),Z=_.color>>16&255,Q=_.color>>8&255,q=_.color&255,K=Math.min(255,Math.round(Z*(1+0.5*J)+255*J)),V=Math.min(255,Math.round(Q*(1+0.5*J)+255*J)),H=Math.min(255,Math.round(q*(1+0.5*J)+255*J));return{color:K<<16|V<<8|H,alpha:_.alpha}},K4=(_)=>{if(!Number.isFinite(_))return 1;if(_<0)return 0;if(_>1)return 1;return _},q4=(_)=>{if(!Number.isFinite(_))return 0;if(_<0)return 0;if(_>255)return 255;return Math.round(_)},zK=(_)=>{switch(_){case"lighter":return d.ADD;case"multiply":return d.MULTIPLY;case"screen":return d.SCREEN;default:return d.NORMAL}};var V4=(_)=>{return new m8};var H4={min:1800,mid:1200,max:450};var XK=(_,$)=>{if(_>5)return $.mid+($.max-$.mid)*(_-5)/5;if(_<5)return $.mid+($.mid-$.min)*(_-5)/5;return $.mid},SZ=(_,$)=>{if(Math.sign(_-$.mid)===Math.sign($.max-$.mid))return(_-$.mid)/($.max-$.mid)*5+5;return(_-$.mid)/($.mid-$.min)*5+5},u8=(_)=>XK(_,H4),TZ=(_)=>400*Math.min(1,_/450),GK=(_)=>{return(1-0.7*((_-5)/5))/2*1.00041},dZ=(_)=>GK(_)*64;var w4={name:"Hard Rock",acronym:"HR",apply_to_difficulty(_){_.cs=Math.min(_.cs*1.3,10),_.ar=Math.min(_.ar*1.4,10),_.od=Math.min(_.od*1.4,10),_.hp=Math.min(_.hp*1.4,10)}};var h4={name:"Easy",acronym:"EZ",apply_to_difficulty(_){_.cs*=0.5,_.ar*=0.5,_.od*=0.5,_.hp*=0.5}};var WK={name:"Double Time",acronym:"DT",get_rate_multiplier:()=>1.5},kK={name:"Nightcore",acronym:"NC",get_rate_multiplier:()=>1.5};var CK={name:"Half Time",acronym:"HT",get_rate_multiplier:()=>0.75};var NK=0.4,YK=0.3,UK={name:"Hidden",acronym:"HD"};var IK=(_)=>{if(_&(c.DoubleTime|c.Nightcore))return 1.5;if(_&c.HalfTime)return 0.75;return 1},bK=(_,$)=>{if($&c.Easy)h4.apply_to_difficulty(_);if($&c.HardRock)w4.apply_to_difficulty(_)},BK=(_,$)=>{if($===1)return _;let J=u8(_)/$;return SZ(J,H4)},gZ=(_,$,J,Z,Q)=>{let q={cs:_,ar:$,od:J,hp:Z};bK(q,Q);let K=IK(Q);return q.ar=BK(q.ar,K),q};var t_=(_,$)=>[_[0]+$[0],_[1]+$[1]],$_=(_,$)=>[_[0]-$[0],_[1]-$[1]],pZ=(_,$)=>[_[0]*$,_[1]*$];var X_=(_)=>Math.sqrt(_[0]*_[0]+_[1]*_[1]);var n8=(_,$)=>X_($_(_,$));var D1=(_,$,J)=>_+($-_)*J,O_=(_,$,J)=>[D1(_[0],$[0],J),D1(_[1],$[1],J)],n=(_,$,J)=>Math.min(J,Math.max($,_));var z4={1:["#d5bc00"],2:["#ffffff","#ffffff"],3:["#ffffff","#d5bc00","#ffffff"],4:["#ffffff","#dc8dba","#dc8dba","#ffffff"],5:["#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff"],6:["#ffffff","#dc8dba","#ffffff","#ffffff","#dc8dba","#ffffff"],7:["#ffffff","#dc8dba","#ffffff","#d5bc00","#ffffff","#dc8dba","#ffffff"],8:["#d5bc00","#ffffff","#dc8dba","#ffffff","#d5bc00","#ffffff","#dc8dba","#ffffff"],9:["#ffffff","#dc8dba","#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff","#dc8dba","#ffffff"],10:["#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff","#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff"]},X4={legacy_version:2.7,combo_colors:["0,185,0","7, 105, 227","224, 4, 38","227, 171, 2"],circle_border_width:0.12,hit_circle_opacity:1,hit_circle_overlay_above_number:!0,hit_circle_prefix:"default",hit_circle_overlap:-2,enable_approach_circle:!0,approach_circle_width:0.1,approach_circle_opacity:0.5,approach_circle_use_combo_color:!0,enable_hitburst:!0,hitburst_duration:180,hitburst_scale:1.2,hitburst_glow_enabled:!1,hitburst_glow_use_combo_color:!0,hitburst_glow_opacity:0.3,slider_body_opacity:0.9,slider_border_opacity:1,slider_tick_opacity:0.75,slider_tick_size:0.1,slider_render_scale:2,follow_circle_factor:1.5,follow_circle_width:4,follow_circle_opacity:0.5,follow_circle_color:"#d3d3d3ff",follow_circle_use_combo_color:!1,slider_ball_color:"#ffffff",slider_ball_opacity:1,enable_slider_ball:!0,slider_ball_flip:!1,allow_slider_ball_tint:!0,slider_ball_frames:10,animation_framerate:-1,follow_point_width:2,follow_point_shape:"line",follow_point_mode:"full",follow_point_length:12,follow_point_line_gap:0,spinner_size:180,spinner_center_size:10,spinner_background_color:"rgba(100,100,100,1)",mania_lane_width:30,mania_note_height:15,mania_hit_position:364,mania_lane_spacing:1,mania_lane_colors:z4,default_font:'"Trebuchet MS", Verdana, Arial, sans-serif',hit_animation_duration:240,hit_animation_scale:1.2,enable_hit_animations:!0,enable_follow_circle_animations:!0},G4=(_)=>{if(!_)return{...X4};return{...X4,..._,mania_lane_colors:_.mania_lane_colors?{...z4,..._.mania_lane_colors}:z4}},j_=(_,$,J=1)=>{let Z=_.combo_colors[$%_.combo_colors.length];return FK(Z,J)},q5=(_,$,J)=>{let Z=_.mania_lane_colors[$]??_.mania_lane_colors[4];return Z[J%Z.length]??"#ffffff"},FK=(_,$)=>{let J=_.trim();if(J.includes(",")&&!J.startsWith("rgb"))return`rgba(${J},${$})`;let Z=J.match(/^rgb\(([^)]+)\)$/i);if(Z)return`rgba(${Z[1]},${$})`;let Q=J.match(/^rgba\(([^)]+)\)$/i);if(Q){let q=Q[1].split(",").map((K)=>K.trim());if(q.length>=3)return`rgba(${q[0]},${q[1]},${q[2]},${$})`}if(J.startsWith("#")){let q=J.slice(1);if(q.length===3){let K=Number.parseInt(q[0]+q[0],16),V=Number.parseInt(q[1]+q[1],16),H=Number.parseInt(q[2]+q[2],16);return`rgba(${K},${V},${H},${$})`}if(q.length===6||q.length===8){let K=Number.parseInt(q.slice(0,2),16),V=Number.parseInt(q.slice(2,4),16),H=Number.parseInt(q.slice(4,6),16);return`rgba(${K},${V},${H},${$})`}}return J};var Z0={None:(_)=>_,Out:(_)=>1-Math.pow(1-_,2),In:(_)=>_*_,InOut:(_)=>_<0.5?2*_*_:1-Math.pow(-2*_+2,2)/2,OutCubic:(_)=>1-Math.pow(1-_,3),InCubic:(_)=>_*_*_,OutQuad:(_)=>1-Math.pow(1-_,2),InQuad:(_)=>_*_,OutQuint:(_)=>1-Math.pow(1-_,5),InQuint:(_)=>_*_*_*_*_,OutElastic:(_)=>{let $=2*Math.PI/3;return _===0?0:_===1?1:Math.pow(2,-10*_)*Math.sin((_*10-0.75)*$)+1}};class W4{transforms=[];add(_,$,J,Z,Q,q=Z0.None){return this.transforms.push({property:_,start_value:$,end_value:J,start_time:Z,end_time:Z+Q,easing:q}),this}then(){return this}get_value(_,$,J){let Z=J;for(let Q of this.transforms){if(Q.property!==_)continue;if($<Q.start_time)continue;if($>=Q.end_time)Z=Q.end_value;else{let q=($-Q.start_time)/(Q.end_time-Q.start_time),K=Q.easing(q);Z=Q.start_value+(Q.end_value-Q.start_value)*K}}return Z}clear(){this.transforms=[]}}class K5{backend;skin;hit_object;config;alpha=1;scale=1;rotation=0;x=0;y=0;armed_state=0;transforms=new W4;life_time_start=0;life_time_end=0;constructor(_,$){this.hit_object=_,this.config=$,this.backend=$.backend,this.skin=$.skin;let J=_.data;this.x=J.pos[0],this.y=J.pos[1],this.apply_defaults()}apply_defaults(){let{hit_object:_,config:$}=this,J=_.time-$.preempt;this.life_time_start=J,this.life_time_end=_.end_time+800}is_alive(_){return _>=this.life_time_start&&_<=this.life_time_end}update(_){this.alpha=this.transforms.get_value("alpha",_,1),this.scale=this.transforms.get_value("scale",_,1),this.rotation=this.transforms.get_value("rotation",_,0),this.update_state(_)}update_state(_){if(this.armed_state===0&&_>=this.hit_object.time)this.armed_state=1,this.on_hit(_)}on_hit(_){}render_body_pass(_){}render_head_pass(_){}dispose(){}get start_time(){return this.hit_object.time}get end_time(){return this.hit_object.end_time}get combo_number(){return this.hit_object.combo_number??0}get combo_count(){return this.hit_object.combo_count??1}get position(){return[this.x,this.y]}}var k4=1.04;class z6{state={circle_alpha:0,circle_scale:1,number_alpha:1};update(_,$,J){let Z=$-J.preempt;if(_<Z){this.reset_pre_hit_state();return}if(_<$){this.update_pre_hit(_,Z,$,J);return}let Q=l8($,Z,$,J);this.update_post_hit(_,$,J,Q)}render(_,$,J,Z,Q,q,K,V,H=!0,w=!0){let{circle_alpha:h,circle_scale:z,number_alpha:X}=this.state;if(h<=0.01)return;if(h>0.01){_.set_alpha(h*$.hit_circle_opacity);let W=V?.circle??K?.hitcircle,G=V?.overlay??K?.hitcircleoverlay,k=$.hit_circle_overlay_above_number,C=!!W;if(W){let Y=Z*2*z*k4;_.draw_image(W,J[0]-Y/2,J[1]-Y/2,Y,Y,Q)}else{let Y=Z*$.circle_border_width*z,U=Z*(1-$.circle_border_width/2)*z;_.draw_circle(J[0],J[1],U,Q,"rgba(255,255,255,1)",Y)}if(w&&!k&&G&&C){_.set_alpha(h*$.hit_circle_opacity);let Y=Z*2*z*k4;_.draw_image(G,J[0]-Y/2,J[1]-Y/2,Y,Y)}if(H&&X>0.01){if(_.set_alpha(X*$.hit_circle_opacity),!OK(_,J,Z,z,q,K)){let U=Z*0.7*z,N=$.default_font??'"Trebuchet MS", Verdana, Arial, sans-serif',I=`600 ${U}px ${N}`;_.draw_text(String(q),J[0],J[1],I,"rgba(255,255,255,1)","center","middle")}}if(w&&k&&G&&C){_.set_alpha(h*$.hit_circle_opacity);let Y=Z*2*z*k4;_.draw_image(G,J[0]-Y/2,J[1]-Y/2,Y,Y)}_.set_alpha(1)}_.set_alpha(1)}get circle_alpha(){return this.state.circle_alpha}reset_pre_hit_state(){this.state.circle_alpha=0,this.state.circle_scale=1,this.state.number_alpha=1}update_pre_hit(_,$,J,Z){let Q=l8(_,$,J,Z);this.state.circle_alpha=Q,this.state.circle_scale=1,this.state.number_alpha=Q}update_post_hit(_,$,J,Z){let Q=_-$,{skin:q}=J,K=Math.max(110,q.hit_animation_duration*0.62),V=n(Q/K,0,1),H=z0(J.mods,c.Hidden)?n(Z,0,1):n(Math.max(Z,0.25),0,1);this.state.circle_alpha=H*(1-Z0.OutQuad(V)),this.state.circle_scale=D1(1,Math.max(q.hit_animation_scale,1.34),Z0.OutCubic(V)),this.state.number_alpha=this.state.circle_alpha*(1-0.55*V)}}var l8=(_,$,J,Z)=>{let q=n((_-$)/Z.fade_in,0,1);if(z0(Z.mods,c.Hidden)){let K=J-Z.preempt+Z.fade_in,V=Z.preempt*0.3;if(_>K){let H=n((_-K)/V,0,1);q*=1-H}}return q},OK=(_,$,J,Z,Q,q)=>{let K=q?.combo_digits;if(!K||K.length<10)return!1;let V=String(Q),H=128,w=0.8,h=J*2/H*w*Z,z=(q?.combo_overlap??-2)*h,X=[],W=[],G=0;for(let C=0;C<V.length;C++){let Y=V.charCodeAt(C)-48,U=K[Y];if(!U||U.height<=0)return!1;let N=U.width*h,I=U.height*h;if(X.push(N),W.push(I),G+=N,C<V.length-1)G-=z}let k=$[0]-G/2;for(let C=0;C<V.length;C++){let Y=V.charCodeAt(C)-48,U=K[Y],N=X[C],I=W[C],f=$[1]-I/2;if(_.draw_image(U,k,f,N,I),k+=N,C<V.length-1)k-=z}return!0};var jK=0.8;class C4{state={alpha:0,scale:1};update(_,$,J){if(!J.skin.enable_hitburst){this.state.alpha=0,this.state.scale=1;return}if(_<$){this.state.alpha=0,this.state.scale=1;return}let Z=$-J.preempt,Q=l8($,Z,$,J),q=z0(J.mods,c.Hidden)?n(Q,0,1):n(Math.max(Q,0.25),0,1),K=_-$,V=Math.max(44,J.skin.hitburst_duration*0.52),H=n(K/V,0,1),w=1-Z0.OutQuint(H),h=Math.max(24,V*0.3),z=n(K/h,0,1),X=Z0.OutQuad(z)*w;this.state.alpha=z0(J.mods,c.Hidden)?X*q*0.78:X*0.78;let W=Math.max(1,J.skin.hitburst_scale*jK),G=Math.max(24,V*0.2),k=Math.min(1.06,W);if(K<=G){let C=n(K/G,0,1);this.state.scale=D1(0.96,k,Z0.OutCubic(C))}else{let C=n((K-G)/Math.max(1,V-G),0,1);this.state.scale=D1(k,W,Z0.OutCubic(C))}}render(_,$,J,Z,Q){if(!$.enable_hitburst)return;if(this.state.alpha<=0.01)return;if(_.set_alpha(this.state.alpha),_.draw_circle(J[0],J[1],Z*this.state.scale,"rgba(255,255,255,1)","transparent",0),$.hitburst_glow_enabled){_.save(),_.set_blend_mode("lighter"),_.set_alpha(this.state.alpha*$.hitburst_glow_opacity);let q=$.hitburst_glow_use_combo_color?Q:$.hitburst_glow_color??Q;_.draw_circle(J[0],J[1],Z*this.state.scale*1.08,q,"transparent",0),_.restore()}}}class o8 extends K5{visual=new z6;hitburst=new C4;constructor(_,$){super(_,$)}update(_){super.update(_),this.visual.update(_,this.hit_object.time,this.config),this.hitburst.update(_,this.hit_object.time,this.config)}render(_){let{backend:$,skin:J,config:Z}=this,{radius:Q}=Z,q=this.position,K=j_(J,this.combo_number,1);this.visual.render($,J,q,Q,K,this.combo_count,Z.skin_elements,void 0,!0,!1),this.hitburst.render($,J,q,Q,K)}}var s8=(_)=>{let{start_time:$,span_duration:J,span_count:Z,length:Q,tick_distance:q,min_distance_from_end:K,get_position_at_progress:V}=_,H=[],w=[];if(Q<=0||J<=0||Z<=0)return{ticks:H,repeats:w};let z=Math.min(1e5,Q),X=Math.min(Math.max(q,0),z),W=Math.max(0,Math.min(K,z));for(let G=0;G<Z;G++){let k=$+G*J,C=G%2===1;if(X>0){let Y=LK(G,k,J,C,z,X,W,V);if(C)Y.reverse();H.push(...Y)}if(G<Z-1){let Y=(G+1)%2;w.push({pos:V(Y),time:k+J,repeat_index:G,path_progress:Y})}}return H.sort((G,k)=>G.time-k.time),{ticks:H,repeats:w}},LK=(_,$,J,Z,Q,q,K,V)=>{let H=[];for(let w=q;w<=Q;w+=q){if(w>=Q-K)break;let h=w/Q,z=Z?1-h:h;H.push({pos:V(h),time:$+z*J,span_index:_,path_progress:h})}return H};var N4=240,Y4=1.3,U4=35,DK=250,AK=300,X6=150,PK=X6*4,xZ=1;class G6 extends K5{slider_data;position_path;render_path;path_length;span_duration;body_alpha=0;head_visual=new z6;ball_alpha=0;ball_position;ball_reverse=!1;slider_ball_frame_delay=16.666666666666668;follow_alpha=0;follow_scale=1;ticks=[];repeats=[];tick_distance;min_distance_from_end;cached_texture=null;cached_scale=1;tick_entries=[];tick_entries_by_start=[];constructor(_,$,J,Z,Q,q){super(_,$);this.slider_data=_.data;let K=Math.max(0.2,$.radius*0.01);this.position_path=J,this.render_path=this.resample_path(J,K),this.span_duration=Z,this.tick_distance=Q,this.min_distance_from_end=q;let V=this.calculate_path_length();this.path_length=this.slider_data.distance>0?this.slider_data.distance:V,this.ball_position=this.slider_data.pos,this.slider_ball_frame_delay=this.compute_slider_ball_frame_delay(),this.build_nested_objects(),this.life_time_end=_.end_time+N4}build_nested_objects(){let{slider_data:_,path_length:$,span_duration:J,hit_object:Z}=this,Q=Math.max(1,_.repetitions),q=1e5,K=Math.min(1e5,_.distance>0?_.distance:$),V=n(this.tick_distance,0,K);if(K<=0||J<=0){this.ticks=[],this.repeats=[];return}let H=s8({start_time:Z.time,span_duration:J,span_count:Q,length:K,tick_distance:V,min_distance_from_end:this.min_distance_from_end,get_position_at_progress:(w)=>this.get_position_at_progress(w)});this.ticks=H.ticks,this.repeats=H.repeats,this.build_tick_entries()}calculate_path_length(){let _=0;for(let $=1;$<this.position_path.length;$++)_+=X_($_(this.position_path[$],this.position_path[$-1]));return _}resample_path(_,$){if(_.length<2)return _.slice();let J=[_[0]],Z=0,Q=[];for(let h=1;h<_.length;h++){let z=X_($_(_[h],_[h-1]));Q.push(z),Z+=z}if(Z<=0)return J;let q=$,K=0,V=0;while(q<Z&&V<Q.length){let h=Q[V],z=_[V],X=_[V+1];if(h>0&&K+h>=q){let W=(q-K)/h;J.push(O_(z,X,W)),q+=$}else K+=h,V++}let H=_[_.length-1],w=J[J.length-1];if(w[0]!==H[0]||w[1]!==H[1])J.push(H);return J}update(_){super.update(_),this.calculate_ball_position(_),this.calculate_opacities(_),this.head_visual.update(_,this.hit_object.time,this.config)}calculate_ball_position(_){let{hit_object:$,span_duration:J}=this,Z=300,Q=300,q=2.4;if(_<$.time){this.ball_alpha=0,this.follow_alpha=0,this.follow_scale=1;return}if(_<=$.end_time){let w=_-$.time,h=Math.max(1,this.slider_data.repetitions),z=Math.min(Math.floor(w/J),h-1),X=n((w-z*J)/J,0,1),W=z%2===1?1-X:X;this.ball_reverse=z%2===1,this.ball_position=this.get_position_at_progress(W),this.ball_alpha=1;let G=n(w/300,0,1),k=Z0.OutQuint(G);this.follow_alpha=k,this.follow_scale=1+1.4*k;return}let K=_-$.end_time,V=n(K/300,0,1),H=Z0.OutQuint(V);this.ball_alpha=1-H,this.follow_alpha=1-H,this.follow_scale=2.4-1.4*H}get_position_at_progress(_){let $=_*this.path_length;return this.get_position_at_length($)}get_position_at_length(_){let $=0;for(let J=1;J<this.position_path.length;J++){let Z=X_($_(this.position_path[J],this.position_path[J-1]));if($+Z>=_){let Q=(_-$)/Z;return O_(this.position_path[J-1],this.position_path[J],Q)}$+=Z}return this.position_path[this.position_path.length-1]}calculate_opacities(_){let{hit_object:$,config:J}=this,Z=$.time-J.preempt,Q=$.time;if(z0(J.mods,c.Hidden)){let q=Q-J.preempt+J.fade_in;if(_<Z)this.body_alpha=0;else if(_<q)this.body_alpha=n((_-Z)/J.fade_in,0,1);else if(_<=$.end_time){let K=Math.max(1,$.end_time-q);this.body_alpha=1-n((_-q)/K,0,1)}else this.body_alpha=0}else if(_<Z)this.body_alpha=0;else if(_<Q)this.body_alpha=n((_-Z)/J.fade_in,0,1);else if(_<=$.end_time)this.body_alpha=1;else this.body_alpha=1-n((_-$.end_time)/N4,0,1)}compute_slider_ball_frame_delay(){if(this.skin.animation_framerate>0)return 1000/this.skin.animation_framerate;let _=this.path_length/Math.max(1,this.span_duration),$=16.666666666666668;if(_<=0)return $;return Math.max(0.15/_*$,$)}render(_){if(this.body_alpha<=0&&this.head_visual.circle_alpha<=0&&this.ball_alpha<=0)return;this.render_body(_),this.render_head(),this.render_ball(_)}render_body_pass(_){this.render_body(_)}render_head_pass(_){this.render_head(),this.render_reverse_arrows(_),this.render_ball(_)}render_body(_){if(this.body_alpha<=0.01||this.render_path.length<2)return;let{backend:$}=this;if(this.prepare_body_cache(),this.cached_texture&&this.cached_texture.min_x!==void 0&&this.cached_texture.min_y!==void 0){let J=this.cached_scale;$.set_alpha(this.body_alpha),$.draw_image(this.cached_texture,this.cached_texture.min_x,this.cached_texture.min_y,this.cached_texture.width/J,this.cached_texture.height/J),$.set_alpha(1)}else this.render_live_body_fallback();this.render_ticks(_)}render_live_body_fallback(){if(this.render_path.length<2)return;let{backend:_,config:$,skin:J}=this,Z=J.slider_border_color??"rgba(255,255,255,1)",Q=J.slider_track_override??j_(J,this.combo_number,1),q=$.radius*2,K=$.radius*1.8;this.build_live_body_path(),_.save(),_.set_alpha(this.body_alpha*J.slider_border_opacity),_.stroke_path(Z,q,"round","round"),_.restore(),this.build_live_body_path(),_.save(),_.set_alpha(this.body_alpha*J.slider_body_opacity),_.stroke_path(Q,K,"round","round"),_.restore()}build_live_body_path(){let{backend:_}=this;_.begin_path(),_.move_to(this.render_path[0][0],this.render_path[0][1]);for(let $=1;$<this.render_path.length;$++)_.line_to(this.render_path[$][0],this.render_path[$][1])}prepare_body_cache(){if(this.render_path.length<2)return;let{backend:_,skin:$,config:J}=this,{radius:Z}=J,Q=Math.min(5,(J.scale??1)*($.slider_render_scale||1));if(!this.cached_texture||this.cached_scale!==Q){let q=$.slider_track_override??j_($,this.combo_number,1),K=$.slider_border_color??"rgba(255,255,255,1)",V=Q;this.cached_texture=_.render_slider_to_image(this.render_path,Z,K,q,V,$.slider_body_opacity,$.slider_border_opacity,null),this.cached_scale=Q}}has_body_cache(){return this.cached_texture!=null}get_body_cache_bytes(){if(!this.cached_texture)return 0;return Math.max(0,Math.floor(this.cached_texture.width)*Math.floor(this.cached_texture.height)*4)}release_body_cache(){let _=this.cached_texture?.source;if(_?.destroy)_.destroy(!0);else if(this.cached_texture?.source instanceof HTMLCanvasElement)this.cached_texture.source.width=0,this.cached_texture.source.height=0;this.cached_texture=null}estimate_complexity(){return this.render_path.length+this.ticks.length*8+this.repeats.length*16}dispose(){this.release_body_cache(),this.position_path=[],this.render_path=[],this.ticks=[],this.repeats=[],this.tick_entries=[],this.tick_entries_by_start=[]}render_ticks(_){if(this.tick_entries_by_start.length===0)return;let{backend:$,config:J}=this,{radius:Z}=J,Q=Z*0.12,q=z0(J.mods,c.Hidden);for(let K of this.tick_entries_by_start){let V=K.tick,H=_-K.appear_time;if(H<0)continue;if(K.visible_end<_)continue;let w=n(H/X6,0,1);if(q&&K.preempt>0){let G=Math.min(K.preempt-X6,1000);if(G>0){let k=V.time-G;if(_>=k){let C=n((_-k)/G,0,1);w*=1-C}}}else if(_>V.time){let G=n((_-V.time)/X6,0,1);w*=1-G}w*=this.body_alpha;let h=n(H/PK,0,1),X=0.5+0.5*this.ease_out_elastic_half(h),W=Q*X;if(w>0.01){$.set_alpha(w);let G=this.config.skin_elements?.sliderscorepoint;if(G){let k=W*2;$.draw_image(G,V.pos[0]-W,V.pos[1]-W,k,k)}else $.draw_circle(V.pos[0],V.pos[1],W,"rgba(255,255,255,0.8)","transparent",0)}}$.set_alpha(1)}build_tick_entries(){let{hit_object:_,config:$}=this,J=z0($.mods,c.Hidden);this.tick_entries=this.ticks.map((Z)=>{let Q=_.time+Z.span_index*this.span_duration,q=$.preempt,K=Z.span_index>0?200:q*0.66,V=(Z.time-Q)/2+K,H=Z.time-V,w=J?Z.time:Z.time+X6;return{tick:Z,appear_time:H,visible_end:w,preempt:V}}),this.tick_entries_by_start=[...this.tick_entries].sort((Z,Q)=>Z.appear_time-Q.appear_time)}ease_out_elastic_half(_){if(_<=0)return 0;if(_>=1)return 1;let $=0.3;return Math.pow(2,-10*_)*Math.sin((_-$/4)*(2*Math.PI)/$)+1}render_reverse_arrows(_){if(this.repeats.length===0)return;let{backend:$,config:J,hit_object:Z,span_duration:Q}=this,{radius:q}=J,K=q*0.9;for(let V of this.repeats){let H=J.preempt;if(V.repeat_index>0)H=Q*2;else H+=Z.time-(Z.time-J.preempt);let w=V.time-H,h=V.repeat_index%2===0;if(_<w||_>V.time+N4)continue;let z=this.body_alpha*0.9;if(V.repeat_index===0){let U=n((_-w)/150,0,1);z*=Z0.OutQuint(U)}else if(_<w)z=0;if(_>V.time){let U=Math.min(300,Q);z*=1-n((_-V.time)/U,0,1)}if(z<=0.01)continue;let X=this.get_arrow_target_vector(V.pos,h),W=Math.atan2(X[1]-V.pos[1],X[0]-V.pos[0]),G=1;if(_<V.time){let U=Z.time-J.preempt,N=(_-U)%AK;if(N<U4)G=1+(Y4-1)*Z0.Out(N/U4);else{let I=(N-U4)/DK;G=Y4-(Y4-1)*Z0.Out(n(I,0,1))}}else{let U=Math.min(300,Q),N=n((_-V.time)/U,0,1);G=1+0.5*Z0.Out(N)}let k=K*G;$.save(),$.set_alpha(z),$.translate(V.pos[0],V.pos[1]),$.rotate(W);let C=this.config.skin_elements?.reversearrow_frames,Y=C&&C.length>0?C[Math.floor((_-w)/50)%C.length]:this.config.skin_elements?.reversearrow;if(Y)$.draw_image(Y,-k,-k,k*2,k*2);else $.begin_path(),$.move_to(k*0.8,0),$.line_to(-k*0.4,-k*0.5),$.line_to(-k*0.4,k*0.5),$.close_path(),$.fill_path("rgba(255,255,255,0.9)");$.restore()}}render_head(){if(this.head_visual.circle_alpha<=0.01&&this.body_alpha<=0.01)return;let{backend:_,skin:$,config:J}=this,{radius:Z}=J,Q=this.slider_data.pos,q=this.hit_object.end_pos,K=j_($,this.combo_number,1);if(this.head_visual.render(_,$,Q,Z*xZ,K,this.combo_count,J.skin_elements,J.skin_elements?.sliderstartcircle?{circle:J.skin_elements.sliderstartcircle,overlay:J.skin_elements.sliderstartcircleoverlay}:{circle:J.skin_elements?.hitcircle,overlay:J.skin_elements?.hitcircleoverlay},!0),this.body_alpha>0.01){let V=J.skin_elements?.sliderendcircle;if(!V)return;_.set_alpha(this.body_alpha*$.hit_circle_opacity);let H=J.skin_elements?.sliderendcircleoverlay,w=Z*xZ,h=w*2;if(_.draw_image(V,q[0]-w,q[1]-w,h,h,K),H)_.draw_image(H,q[0]-w,q[1]-w,h,h);_.set_alpha(1)}}render_ball(_){if(this.ball_alpha<=0.01&&this.follow_alpha<=0.01)return;let{backend:$,skin:J,config:Z}=this,{radius:Q}=Z,q=this.ball_position,K=j_(J,this.combo_number,0.9);if(this.follow_alpha>0.01){let V=Q*this.follow_scale;$.set_alpha(this.follow_alpha*J.follow_circle_opacity);let H=this.config.skin_elements?.sliderfollowcircle;if(H)$.draw_image(H,q[0]-V,q[1]-V,V*2,V*2);else $.begin_path(),$.arc_to(q[0],q[1],V,0,Math.PI*2),$.stroke_path(J.follow_circle_color,J.follow_circle_width)}if(J.enable_slider_ball&&this.ball_alpha>0.01){$.set_alpha(this.ball_alpha*J.slider_ball_opacity);let V=this.config.skin_elements?.sliderball_frames,H=this.config.skin_elements?.sliderball;if(V&&V.length>0){let w=Math.max(0,_-this.hit_object.time),h=Math.floor(w/Math.max(1,this.slider_ball_frame_delay))%V.length;H=V[h]}if(H){let w=Q*1.85,h=J.allow_slider_ball_tint?K:J.slider_ball_color;this.draw_slider_ball_layers(q,w,H,h,J.slider_ball_flip&&this.ball_reverse)}else{let w=J.allow_slider_ball_tint?K:J.slider_ball_color;$.draw_circle(q[0],q[1],Q*0.85,w,"rgba(255,255,255,0.9)",Q*0.1)}}$.set_alpha(1)}get_arrow_target_vector(_,$){let J=this.position_path;if(J.length===0)return _;if($){for(let Z=J.length-1;Z>=0;Z--)if(Math.abs(J[Z][0]-_[0])>0.01||Math.abs(J[Z][1]-_[1])>0.01)return J[Z];return J[0]}for(let Z=0;Z<J.length;Z++)if(Math.abs(J[Z][0]-_[0])>0.01||Math.abs(J[Z][1]-_[1])>0.01)return J[Z];return J[J.length-1]}draw_slider_ball_layers(_,$,J,Z,Q){let{backend:q}=this,K=this.config.skin_elements?.sliderball_nd,V=this.config.skin_elements?.sliderball_spec,H=$/2;if(Q){if(q.save(),q.translate(_[0],_[1]),q.scale(-1,1),K)q.draw_image(K,-H,-H,$,$);if(q.draw_image(J,-H,-H,$,$,Z),V)q.set_blend_mode("lighter"),q.draw_image(V,-H,-H,$,$),q.set_blend_mode("normal");q.restore();return}if(K)q.draw_image(K,_[0]-H,_[1]-H,$,$);if(q.draw_image(J,_[0]-H,_[1]-H,$,$,Z),V)q.set_blend_mode("lighter"),q.draw_image(V,_[0]-H,_[1]-H,$,$),q.set_blend_mode("normal")}}class I4{skin;mods;preempt;fade_in;radius;skin_elements=null;points=[];lines=[];sprites=[];constructor(_,$,J,Z,Q,q=null){this.skin=_,this.mods=$,this.preempt=J,this.fade_in=Z,this.radius=Q,this.skin_elements=q}update_settings(_,$,J,Z,Q){if(this.mods=_,this.preempt=$,this.fade_in=J,this.radius=Z,Q!==void 0)this.skin_elements=Q}build(_){this.points.length=0,this.lines.length=0,this.sprites.length=0;let $=32,J=Math.max(450,this.preempt*0.9),Z=z0(this.mods,c.Hidden);for(let Q=0;Q<_.length-1;Q++){let q=_[Q],K=_[Q+1];if(Z_(q)||Z_(K))continue;if(q.combo_number!==K.combo_number)continue;let V=q.end_pos,H=K.data.pos,w=H[0]-V[0],h=H[1]-V[1],z=Math.sqrt(w*w+h*h);if(z<$*1.5)continue;let X=q.end_time,W=K.time-X;if(W<=0)continue;let G=z>0?1/z:0,k=[w*G,h*G],C=X-J,Y=K.time-J,U=X+(Y-X)*0.5,N=K.time;if(Z)U=X+(Y-X)*0.3,N=X+(K.time-X)*0.65;this.lines.push({start_pos:V,end_pos:H,dir:k,start_time:X,end_time:K.time,appear_time:C,grow_end_time:Y,shrink_start_time:U,shrink_end_time:N});let I=z<80?0:Math.floor((z-48)/32),f=Math.max(1,this.fade_in);for(let y=0;y<I;y++){let D=48+32*y,L=D/z,v=X+L*W,m=v-J;this.sprites.push({start_pos:V,dir:k,distance:z,start_time:X,end_time:K.time,preempt:J,time_fade_in:f,d:D,f:L,fade_in_time:m,fade_out_time:v})}for(let y=$*1.5;y<z-$;y+=$){let D=y/z,L=q.end_time+D*W,v=Math.max(q.end_time,L-J);if(Z)L=Math.min(L,X+W*0.65);let m=[V[0]+(D-0.1)*w,V[1]+(D-0.1)*h],F=[V[0]+D*w,V[1]+D*h];this.points.push({start_pos:m,end_pos:F,dir:k,fade_in_time:v,fade_out_time:L})}}}render(_,$,J){let Z=this.skin.follow_point_shape,Q=this.skin.follow_point_mode??"segments",q=this.skin.follow_point_length||this.radius*0.6,K=n(this.skin.follow_point_line_gap??0,0,0.9),V=this.skin_elements?.followpoint_frames,H=this.skin_elements?.followpoint,w=H?"sprites":Q,h=Math.max(this.fade_in*0.15,50),z=H?0.72:0.2;if(w==="sprites"){let X=V&&V.length>0?V:H?[H]:[],W=this.radius/64;for(let G of this.sprites){if(_<G.start_time-G.preempt)continue;if(_>G.fade_out_time+G.time_fade_in)continue;let k=0,C=W,Y=G.f;if(_<G.fade_in_time+G.time_fade_in){let m=Z0.OutQuad(n((_-G.fade_in_time)/G.time_fade_in,0,1));k=m,C=(1.5-0.5*m)*W,Y=G.f-0.1*(1-m)}else if(_<G.fade_out_time)k=1,C=1*W,Y=G.f;else k=1-Z0.OutQuad(n((_-G.fade_out_time)/G.time_fade_in,0,1)),C=1*W,Y=G.f;if(k<=0.01)continue;let U=Math.max(1,(G.fade_out_time-G.fade_in_time)/Math.max(1,X.length)),N=n(Math.floor((_-G.fade_in_time)/U),0,X.length-1),I=X[N],f=G.start_pos[0]+G.dir[0]*(Y*G.distance),y=G.start_pos[1]+G.dir[1]*(Y*G.distance),D=Math.max(1,I.width*C),L=Math.max(1,I.height*C),v=Math.atan2(G.dir[1],G.dir[0]);$.set_alpha(k),$.save(),$.translate(f,y),$.rotate(v),$.draw_image(I,-D/2,-L/2,D,L),$.restore()}}else if(w==="full")for(let X of this.lines){if(_<X.appear_time||_>X.shrink_end_time)continue;let W=0,G=X.start_pos[0],k=X.start_pos[1],C=X.end_pos[0],Y=X.end_pos[1],U=Math.hypot(C-G,Y-k),N=this.get_alpha_gate(_,X.start_time,X.end_time,J);if(N<=0.01)continue;let I=this.radius*1.05,f=Math.min(I,U*0.22);if(G+=X.dir[0]*f,k+=X.dir[1]*f,C-=X.dir[0]*f,Y-=X.dir[1]*f,_<X.grow_end_time){let y=Math.max(1,X.grow_end_time-X.appear_time),D=n((_-X.appear_time)/y,0,1),L=Z0.OutQuint(D);W=L,C=G+(C-G)*L,Y=k+(Y-k)*L}else if(_<X.shrink_start_time)W=1;else{let y=Math.max(1,X.shrink_end_time-X.shrink_start_time),D=n((_-X.shrink_start_time)/y,0,1),L=Z0.InQuint(D);W=1,G=G+(C-G)*L,k=k+(Y-k)*L}if(W<=0)continue;if($.set_alpha(W*z*N),Z==="line")if(K>0){let y=Math.hypot(C-G,Y-k),D=X.dir[0],L=X.dir[1],v=y*K/2,m=(G+C)/2,F=(k+Y)/2,M=m-D*v,j=F-L*v,A=m+D*v,i=F+L*v;$.draw_line(G,k,M,j,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round"),$.draw_line(A,i,C,Y,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round")}else $.draw_line(G,k,C,Y,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round");else{let y=this.radius*0.12,D=(X.start_pos[0]+X.end_pos[0])/2,L=(X.start_pos[1]+X.end_pos[1])/2;$.draw_circle(D,L,y,"rgba(255,255,255,1)","transparent",0)}}else for(let X of this.points){if(_<X.fade_in_time||_>X.fade_out_time+h)continue;let W=0,G=1,k=X.end_pos;if(_<X.fade_in_time+h){let Y=n((_-X.fade_in_time)/h,0,1),U=Z0.OutCubic(Y);W=U,G=1.5-0.5*U,k=O_(X.start_pos,X.end_pos,U)}else if(_<=X.fade_out_time)W=1,G=1,k=X.end_pos;else{let Y=n((_-X.fade_out_time)/h,0,1),U=Z0.OutCubic(Y);W=1-U,G=1,k=O_(X.start_pos,X.end_pos,1-U)}if(W<=0)continue;let C=this.get_alpha_gate(_,X.fade_in_time+this.preempt,X.fade_out_time,J);if(C<=0.01)continue;if($.set_alpha(W*z*C),Z==="line"){let U=q*G/2,N=X.dir[0],I=X.dir[1],f=k[0]-N*U,y=k[1]-I*U,D=k[0]+N*U,L=k[1]+I*U;$.draw_line(f,y,D,L,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round")}else{let Y=this.radius*0.12*G;$.draw_circle(k[0],k[1],Y,"rgba(255,255,255,1)","transparent",0)}}$.set_alpha(1)}get_alpha_gate(_,$,J,Z){let Q=Z(_,$),q=Z(_,J);return n(Math.min(Q,q)/0.7,0,1)}}var B4=(_,$=0.01)=>{if(_.length<2)return[..._];let J=[];return b4(_,J,$),J},b4=(_,$,J)=>{if(RK(_,J)){if($.length===0)$.push(_[0]);$.push(_[_.length-1]);return}let Z=[],Q=[];fK(_,Z,Q),b4(Z,$,J),b4(Q,$,J)},RK=(_,$)=>{if(_.length<=2)return!0;let J=_[0],Z=_[_.length-1];for(let Q=1;Q<_.length-1;Q++)if(MK(_[Q],J,Z)>$)return!1;return!0},MK=(_,$,J)=>{let Z=J[0]-$[0],Q=J[1]-$[1],q=Z*Z+Q*Q;if(q===0){let w=_[0]-$[0],h=_[1]-$[1];return Math.hypot(w,h)}let K=Math.max(0,Math.min(1,((_[0]-$[0])*Z+(_[1]-$[1])*Q)/q)),V=$[0]+K*Z,H=$[1]+K*Q;return Math.hypot(_[0]-V,_[1]-H)},fK=(_,$,J)=>{let Z=_.length,Q=[_];for(let q=1;q<Z;q++){Q[q]=[];for(let K=0;K<Z-q;K++)Q[q][K]=O_(Q[q-1][K],Q[q-1][K+1],0.5)}for(let q=0;q<Z;q++)$.push(Q[q][0]),J.push(Q[Z-1-q][q])},F4=(_,$,J)=>{let Z=$_($,_),Q=X_(Z);if(Q===0)return[_];let q=[Z[0]/Q,Z[1]/Q],K=t_(_,pZ(q,J));return[_,K]},mZ=(_,$)=>{if(_.length!==3)return B4(_);let[J,Z,Q]=_,q=EK(J,Z,Q);if(!q)return F4(J,Q,$);let K=X_($_(J,q)),V=Math.atan2(J[1]-q[1],J[0]-q[0]),H=Math.atan2(Q[1]-q[1],Q[0]-q[0]),h=(Z[0]-J[0])*(Q[1]-J[1])-(Z[1]-J[1])*(Q[0]-J[0])>0,z=H-V;if(h&&z<0)z+=2*Math.PI;if(!h&&z>0)z-=2*Math.PI;let X=2;if(K*2>0.1){let G=Math.abs(z),k=2*Math.acos(1-0.1/K);if(X=Math.max(2,Math.ceil(G/k)),X>=1000)X=1000}let W=[];for(let G=0;G<=X;G++){let k=G/X,C=V+z*k;W.push([q[0]+K*Math.cos(C),q[1]+K*Math.sin(C)])}return W},EK=(_,$,J)=>{let Z=2*(_[0]*($[1]-J[1])+$[0]*(J[1]-_[1])+J[0]*(_[1]-$[1]));if(Math.abs(Z)<0.001)return null;let Q=((_[0]*_[0]+_[1]*_[1])*($[1]-J[1])+($[0]*$[0]+$[1]*$[1])*(J[1]-_[1])+(J[0]*J[0]+J[1]*J[1])*(_[1]-$[1]))/Z,q=((_[0]*_[0]+_[1]*_[1])*(J[0]-$[0])+($[0]*$[0]+$[1]*$[1])*(_[0]-J[0])+(J[0]*J[0]+J[1]*J[1])*($[0]-_[0]))/Z;return[Q,q]},uZ=(_)=>{if(_.length<2)return[..._];let $=[];for(let J=0;J<_.length-1;J++){let Z=_[Math.max(0,J-1)],Q=_[J],q=_[J+1],K=_[Math.min(_.length-1,J+2)],V=X_($_(q,Q)),H=Math.max(8,Math.ceil(V/3));for(let w=0;w<=H;w++){let h=w/H;$.push(vK(Z,Q,q,K,h))}}return $},vK=(_,$,J,Z,Q)=>{let q=Q*Q,K=q*Q;return[0.5*(2*$[0]+(-_[0]+J[0])*Q+(2*_[0]-5*$[0]+4*J[0]-Z[0])*q+(-_[0]+3*$[0]-3*J[0]+Z[0])*K),0.5*(2*$[1]+(-_[1]+J[1])*Q+(2*_[1]-5*$[1]+4*J[1]-Z[1])*q+(-_[1]+3*$[1]-3*J[1]+Z[1])*K)]};var nZ=(_)=>{let $;if(_.path_type==="L")$=F4(_.pos,_.control_points[0],_.distance);else{let J=[_.pos,..._.control_points];switch(_.path_type){case"P":$=mZ(J,_.distance);break;case"C":$=uZ(J);break;default:$=cK(J);break}}return yK($,_.distance)},lZ=(_)=>{if(!_.computed_path||_.computed_path.length===0)return _.pos;return _.repetitions%2===0?_.pos:_.computed_path[_.computed_path.length-1]},cK=(_)=>{let $=[],J=[_[0]];for(let Q=1;Q<_.length;Q++){let[q,K]=[_[Q-1],_[Q]];if(q[0]===K[0]&&q[1]===K[1]){if(J.length>1)$.push(J);J=[K]}else J.push(K)}if(J.length>1)$.push(J);let Z=[];for(let Q=0;Q<$.length;Q++){let q=B4($[Q]);if(q.length===0)continue;if(Z.length>0){let K=Z[Z.length-1],V=q[0];if(K[0]===V[0]&&K[1]===V[1]){for(let H=1;H<q.length;H++)Z.push(q[H]);continue}}for(let K=0;K<q.length;K++)Z.push(q[K])}return Z},yK=(_,$)=>{if(_.length<2)return _;let J=[_[0]],Z=0,Q=null,q=!1;for(let K=1;K<_.length;K++){let V=X_($_(_[K],_[K-1])),H=$_(_[K],_[K-1]);if(V>0)Q=[H[0]/V,H[1]/V];if(V===0)continue;if(Z+V>=$){let w=$-Z;J.push(O_(_[K-1],_[K],w/V)),Z=$,q=!0;break}Z+=V,J.push(_[K])}if(!q&&Z<$&&Q){let K=$-Z,V=J[J.length-1];J.push([V[0]+Q[0]*K,V[1]+Q[1]*K])}return J};var i8=(_,$,J)=>{if(_<=0)return 0;let Z=$.Difficulty.SliderMultiplier;return _*J.base_beat_length/(100*Z*J.sv_multiplier)},a8=(_,$)=>{let J=$.sv_multiplier||1,Z=_.Difficulty.SliderMultiplier,Q=_.Difficulty.SliderTickRate,q=100*Z*J,K=_.version<8?1/J:1,V=q/Q*K,H=q/$.base_beat_length;return{tick_distance:V,min_distance_from_end:H*10}};class W6{points;index=0;last_time=Number.NEGATIVE_INFINITY;base_beat_length=600;sv_multiplier=1;constructor(_){if(this.points=_,_.length>0&&_[0].uninherited===1&&_[0].beatLength>0)this.base_beat_length=_[0].beatLength}reset(){this.index=0,this.last_time=Number.NEGATIVE_INFINITY,this.base_beat_length=600,this.sv_multiplier=1}get_state_at(_){if(this.points.length===0)return{base_beat_length:600,sv_multiplier:1};if(_<this.last_time)this.reset();for(let $=this.index;$<this.points.length;$++){let J=this.points[$];if(J.time>_)break;if(J.uninherited===1&&J.beatLength>0)this.base_beat_length=J.beatLength,this.sv_multiplier=1;else if(J.uninherited===0&&J.beatLength<0){let Z=-100/J.beatLength;if(Z>0)this.sv_multiplier=Z}this.index=$+1}return this.last_time=_,this.sv_multiplier=n(this.sv_multiplier,0.1,10),{base_beat_length:this.base_beat_length,sv_multiplier:this.sv_multiplier}}}var w0={precompute:{lookback_ms:1500,lookahead_ms:8000,frame_budget_ms:0.35,bootstrap_budget_ms:12,bootstrap_total_ms:120},slider_cache:{max_entries:72,max_bytes:100663296,retention_ms:14000,trim_interval_ms:250},stack:{default_leniency:0.7,distance:3,offset_multiplier:6.4}};var r8=(_)=>{if(_.length===0)return _;let $=_.map((J,Z)=>({point:J,index:Z}));$.sort((J,Z)=>{if(J.point.time!==Z.point.time)return J.point.time-Z.point.time;if(J.point.uninherited!==Z.point.uninherited)return J.point.uninherited>Z.point.uninherited?-1:1;return J.index-Z.index});for(let J=0;J<_.length;J++)_[J]=$[J].point;return _};var l0=(_)=>{if(typeof _==="number"&&Number.isFinite(_))return _;if(typeof _==="string"){let $=Number(_);if(Number.isFinite($))return $}return null},SK=(_)=>l0(_.time)??l0(_.startTime)??l0(_.start_time)??0,TK=(_,$)=>{let J=l0(_.endTime)??l0(_.end_time);if(J===null)return $;return Math.max($,J)},dK=(_)=>l0(_.type)??l0(_.objectType)??0,gK=(_,$)=>{let J=l0(_.x);if(J!==null)return J;let Z=l0(_.column);if(Z!==null&&$>0)return(Math.max(0,Math.min($-1,Math.round(Z)))+0.5)/$*512;return 256},pK=(_)=>l0(_.y)??192,t8=(_)=>{let $=[],J=Math.max(1,Math.round(l0(_.Difficulty?.CircleSize)??4));for(let Z of _.HitObjects){let Q=Z,q=SK(Q),K=TK(Q,q),V=gK(Q,J),H=pK(Q),w=dK(Q),h={...Z,time:q,x:V,y:H,type:w,endTime:K,end_time:K,end_pos:[V,H],combo_number:0,combo_count:0,stack_height:0,stack_offset:[0,0],data:{pos:[V,H]}};if((w&J_.Slider)!==0){let z=Q.curvePoints||[],X=[];for(let G=0;G<z.length;G++){let k=z[G];X.push([k.x,k.y])}let W={pos:[V,H],path_type:Q.curveType||"L",control_points:X,repetitions:(l0(Q.slides)??1)|0,distance:l0(Q.length)??0};h.data=W}else if((w&J_.Spinner)!==0)h.data={end_time:K},h.end_time=K,h.end_pos=[256,192];else if((w&J_.Hold)!==0)h.data={pos:[V,H],end_time:K},h.end_time=K;$.push(h)}return $};var O4=(_)=>384-_;class e8 extends P1{radius=32;preempt=1200;fade_in=600;timing_points=[];timing_resolver=null;drawables=[];slider_drawables=[];slider_cache_lru=[];precompute_focus_time=0;precompute_handle=null;precompute_pause_until=0;last_seek_prefetch_at=0;drawable_config;follow_point_renderer;spinner_objects=[];frame_visible_drawables=[];frame_visible_sliders=[];frame_visible_other=[];slider_cache_limit=w0.slider_cache.max_entries;slider_cache_bytes=0;last_cache_trim_at=0;constructor(_,$,J=0,Z=D_,Q=null){super(_,$,J,Z,Q);this.follow_point_renderer=new I4($,J,this.preempt,this.fade_in,this.radius,Q)}initialize(_){this.release_drawables(),this.beatmap=_,this.objects=t8(_).sort((Z,Q)=>Z.time-Q.time),this.timing_points=r8([..._.TimingPoints]),this.timing_resolver=new W6(this.timing_points);let $=_.Difficulty.ApproachRate>=0?_.Difficulty.ApproachRate:_.Difficulty.OverallDifficulty,J=gZ(_.Difficulty.CircleSize,$,0,0,this.mods);if(this.radius=dZ(J.cs),this.preempt=u8(J.ar),this.fade_in=TZ(this.preempt),z0(this.mods,c.Hidden))this.fade_in=this.preempt*0.4;this.follow_point_renderer.update_settings(this.mods,this.preempt,this.fade_in,this.radius,this.skin_elements),this.preprocess_objects(),this.follow_point_renderer.build(this.objects),this.create_drawables()}set_mods(_){if(this.mods=_,this.beatmap)this.initialize(this.beatmap)}preprocess_objects(){let _=0,$=1;if(this.timing_resolver)this.timing_resolver.reset();for(let J of this.objects){if(T4(J))_=(_+1)%this.skin.combo_colors.length,$=1;else $++;if(J.combo_number=_,J.combo_count=$,Z1(J)){let Z=J.data;if(z0(this.mods,c.HardRock))Z.pos=[Z.pos[0],O4(Z.pos[1])],Z.control_points=Z.control_points.map((K)=>[K[0],O4(K[1])]);Z.computed_path=nZ(Z);let Q=this.timing_resolver?.get_state_at(J.time)??{base_beat_length:600,sv_multiplier:1},q=i8(Z.distance,this.beatmap,Q);Z.duration=q,J.end_time=J.time+q*Z.repetitions,J.end_pos=lZ(Z)}else if(Z_(J))J.end_pos=[256,192];else{let Z=J.data;if(z0(this.mods,c.HardRock))Z.pos=[Z.pos[0],O4(Z.pos[1])];J.end_pos=Z.pos}}this.apply_stacking_if_enabled()}apply_stacking_if_enabled(){if(!this.config.enable_stacking||this.objects.length<2)return;let _=this.resolve_stack_leniency(),$=this.preempt*_,J=this.radius/64,Z=-w0.stack.offset_multiplier*J;for(let Q=0;Q<this.objects.length;Q++)this.objects[Q].stack_height=0,this.objects[Q].stack_offset=[0,0];for(let Q=this.objects.length-1;Q>0;Q--){let q=this.objects[Q];if(Z_(q))continue;for(let K=Q-1;K>=0;K--){let V=this.objects[K];if(Z_(V))continue;if(q.time-V.end_time>$)break;let H=this.get_object_start_position(q),w=this.get_object_start_position(V),h=n8(w,H),z=Z1(V)?n8(V.end_pos,H):1/0;if(q7(q)&&Z1(V)&&z<w0.stack.distance){let X=q.stack_height-V.stack_height+1;for(let W=K+1;W<=Q;W++){let G=this.objects[W];if(Z_(G))continue;let k=this.get_object_start_position(G);if(n8(V.end_pos,k)<w0.stack.distance)G.stack_height-=X}break}if(h<w0.stack.distance||z<w0.stack.distance)V.stack_height=q.stack_height+1,q=V}}for(let Q=0;Q<this.objects.length;Q++){let q=this.objects[Q];if(q.stack_height===0)continue;let K=q.stack_height*Z,V=[K,K];if(q.stack_offset=V,q.end_pos=t_(q.end_pos,V),Z1(q)){let H=q.data;H.pos=t_(H.pos,V);let w=[];for(let h=0;h<H.control_points.length;h++)w.push(t_(H.control_points[h],V));if(H.control_points=w,H.computed_path){let h=[];for(let z=0;z<H.computed_path.length;z++)h.push(t_(H.computed_path[z],V));H.computed_path=h}continue}if(!Z_(q)){let H=q.data;H.pos=t_(H.pos,V)}}}resolve_stack_leniency(){let _=this.beatmap,$=_.StackLeniency??_.Difficulty?.StackLeniency??_.General?.StackLeniency??w0.stack.default_leniency;if($<=0)return w0.stack.default_leniency;return $}get_object_start_position(_){if(Z1(_))return _.data.pos;if(Z_(_))return[256,192];return _.data.pos}create_drawables(){this.release_drawables();let _=this.config.use_high_dpi?window.devicePixelRatio||1:1;if(this.drawable_config={backend:this.backend,skin:this.skin,skin_elements:this.skin_elements,preempt:this.preempt,fade_in:this.fade_in,radius:this.radius,scale:this.config.scale*_,mods:this.mods},this.timing_resolver)this.timing_resolver.reset();this.spinner_objects=[];for(let $ of this.objects)if(q7($))this.drawables.push(new o8($,this.drawable_config));else if(Z1($)){let J=$.data,Z=J.computed_path||[],Q=J.duration||0,q=this.timing_resolver?.get_state_at($.time)??{base_beat_length:600,sv_multiplier:1},{tick_distance:K,min_distance_from_end:V}=a8(this.beatmap,q),H=new G6($,this.drawable_config,Z,Q,K,V);this.drawables.push(H),this.slider_drawables.push(H)}else if(Z_($))this.spinner_objects.push($);this.slider_cache_limit=Math.min(w0.slider_cache.max_entries,this.slider_drawables.length),this.slider_cache_bytes=0}render(_){let{backend:$,config:J}=this;this.precompute_focus_time=_,this.render_background(),$.save(),$.translate(J.offset_x,J.offset_y),$.scale(J.scale,J.scale),this.render_playfield(),this.render_grid();let Z=this.frame_visible_drawables,Q=this.frame_visible_sliders,q=this.frame_visible_other;Z.length=0,Q.length=0,q.length=0;for(let V=this.drawables.length-1;V>=0;V--){let H=this.drawables[V];if(!H.is_alive(_))continue;if(H.update(_),Z.push(H),H instanceof G6)Q.push(H);else q.push(H)}this.follow_point_renderer.render(_,$,(V,H)=>this.get_circle_alpha(V,H));for(let V=0;V<this.spinner_objects.length;V++){let H=this.spinner_objects[V],w=H.time-this.preempt;if(_>=w&&_<=H.end_time+200)this.draw_spinner(H,_)}for(let V=0;V<Q.length;V++){let H=Q[V];H.render_body_pass(_),this.touch_slider_cache(H)}let K=performance.now();if(K-this.last_cache_trim_at>=w0.slider_cache.trim_interval_ms)this.last_cache_trim_at=K,this.trim_slider_cache_by_time(_);for(let V=0;V<Q.length;V++)Q[V].render_head_pass(_);for(let V=0;V<q.length;V++)q[V].render(_);if(!z0(this.mods,c.Hidden)&&this.skin.enable_approach_circle){for(let V of Z)if(_<=V.start_time)this.draw_approach_circle(V,_)}$.restore()}precompute(_=0){this.precompute_focus_time=_,this.process_precompute_queue(_,w0.precompute.bootstrap_budget_ms,!0);let $=performance.now()+w0.precompute.bootstrap_total_ms;while(performance.now()<$&&this.has_uncached_sliders())this.process_precompute_queue(_,w0.precompute.bootstrap_budget_ms,!1);this.start_precompute_loop()}on_seek(_){this.precompute_focus_time=_,this.precompute_pause_until=performance.now()+90;let $=performance.now();if($-this.last_seek_prefetch_at<48)return;this.last_seek_prefetch_at=$,this.process_precompute_queue(_,1,!1)}dispose(){this.stop_precompute_loop(),this.release_drawables(),this.timing_points=[],this.timing_resolver=null,super.dispose()}release_drawables(){this.stop_precompute_loop();for(let _ of this.drawables)_.dispose();this.drawables=[],this.slider_drawables=[],this.slider_cache_lru=[],this.slider_cache_bytes=0,this.spinner_objects=[],this.frame_visible_drawables.length=0,this.frame_visible_sliders.length=0,this.frame_visible_other.length=0}start_precompute_loop(){if(this.precompute_handle!==null)return;let _=()=>{if(this.precompute_handle=null,!this.has_uncached_sliders())return;if(performance.now()>=this.precompute_pause_until)this.process_precompute_queue(this.precompute_focus_time,w0.precompute.frame_budget_ms,!1);this.precompute_handle=window.requestAnimationFrame(_)};this.precompute_handle=window.requestAnimationFrame(_)}stop_precompute_loop(){if(this.precompute_handle!==null)window.cancelAnimationFrame(this.precompute_handle),this.precompute_handle=null}has_uncached_sliders(){for(let _=0;_<this.slider_drawables.length;_++)if(!this.slider_drawables[_].has_body_cache())return!0;return!1}process_precompute_queue(_,$,J){if(this.slider_drawables.length===0)return;let Z=performance.now()+$,Q=0,q=J?2:1;while(performance.now()<Z&&Q<q){let K=this.pick_next_slider_for_precompute(_,J);if(!K)break;K.prepare_body_cache(),this.touch_slider_cache(K),Q++}}pick_next_slider_for_precompute(_,$){let J=null,Z=-1/0;for(let Q=0;Q<this.slider_drawables.length;Q++){let q=this.slider_drawables[Q],K=this.score_slider_for_precompute(q,_,$);if(K<=Z)continue;Z=K,J=q}return J??this.pick_nearest_uncached_slider(_)}score_slider_for_precompute(_,$,J){if(_.has_body_cache())return-1/0;let Z=_.start_time-$,Q=_.estimate_complexity();if(Z>=-w0.precompute.lookback_ms&&Z<=w0.precompute.lookahead_ms){let K=Math.abs(Z)*0.025,V=J?0:Q*0.02;return(J?Q*0.2:0)-K-V}if(J)return Q;return-1/0}pick_nearest_uncached_slider(_){let $=null,J=1/0;for(let Z=0;Z<this.slider_drawables.length;Z++){let Q=this.slider_drawables[Z];if(Q.has_body_cache())continue;let q=Math.abs(Q.start_time-_);if(q>=J)continue;J=q,$=Q}return $}touch_slider_cache(_){if(!_.has_body_cache())return;let $=this.slider_cache_lru.indexOf(_);if($>=0){this.slider_cache_lru.splice($,1),this.slider_cache_lru.push(_);return}this.slider_cache_lru.push(_),this.slider_cache_bytes+=_.get_body_cache_bytes(),this.enforce_slider_cache_limit()}enforce_slider_cache_limit(){while(this.slider_cache_lru.length>this.slider_cache_limit||this.slider_cache_bytes>w0.slider_cache.max_bytes){let _=this.slider_cache_lru.shift();if(!_)break;this.slider_cache_bytes-=_.get_body_cache_bytes(),_.release_body_cache()}}trim_slider_cache_by_time(_){if(this.slider_cache_lru.length===0)return;let $=[],J=0;for(let Z=0;Z<this.slider_cache_lru.length;Z++){let Q=this.slider_cache_lru[Z];if(!Q.has_body_cache())continue;if(Math.abs(Q.start_time-_)<=w0.slider_cache.retention_ms||Q.is_alive(_))$.push(Q),J+=Q.get_body_cache_bytes();else Q.release_body_cache()}this.slider_cache_lru=$,this.slider_cache_bytes=J,this.enforce_slider_cache_limit()}draw_approach_circle(_,$){let J=_.position,Z=_.start_time-this.preempt,q=4-3*n(($-Z)/this.preempt,0,1),K=Math.min(this.fade_in*2,this.preempt),V=n(($-Z)/Math.max(1,K),0,1),H=this.skin.approach_circle_opacity*V;if(H<=0.01)return;this.backend.save(),this.backend.set_alpha(H);let w=this.skin_elements?.approachcircle;if(w){let h=this.radius*2*q;this.backend.draw_image(w,J[0]-h/2,J[1]-h/2,h,h)}else{let h=this.skin.approach_circle_use_combo_color?j_(this.skin,_.combo_number,1):this.skin.approach_circle_color??"rgba(255,255,255,1)";this.backend.draw_circle(J[0],J[1],this.radius*q,"transparent",h,this.radius*this.skin.approach_circle_width)}this.backend.restore()}get_circle_alpha(_,$){let J=$-this.preempt;if(_<J)return 0;let Z=n((_-J)/this.fade_in,0,1);if(z0(this.mods,c.Hidden)){let Q=$-this.preempt+this.fade_in,q=this.preempt*0.3;if(_>Q){let K=n((_-Q)/q,0,1);Z*=1-K}}return Z}draw_spinner(_,$){let J=_.time-this.preempt,Z=n(($-J)/this.fade_in,0,1);if($>_.end_time)Z=1-Z0.OutCubic(n(($-_.end_time)/200,0,1));if(Z<=0)return;let Q=256,q=192,K=Math.max(1,_.end_time-_.time),V=n(($-_.time)/K,0,1);this.backend.save(),this.backend.set_alpha(Z);let H=this.skin.spinner_size*(1-V);if(H>5)this.backend.begin_path(),this.backend.arc_to(Q,q,H,0,Math.PI*2),this.backend.stroke_path("rgba(255,255,255,0.6)",4);this.backend.draw_circle(Q,q,this.skin.spinner_size,"rgba(0,0,0,0.2)"),this.backend.draw_circle(Q,q,12,"white"),this.backend.restore()}}var oZ=11485,sZ=8,V5=50,xK=0.4,mK=0.2,uK=0.68,nK=0.18,lK=0.04,oK=0.2,sK=0.5,iK=0.18,aK=0.5;class L_ extends P1{static MIN_KEY_COUNT=1;static MAX_KEY_COUNT=18;static DEFAULT_KEY_COUNT=4;key_count=4;scroll_time=oZ/sZ;hd_coverage=0.25;fi_coverage=0.6;gradient_ratio=0.2;press_start_sorted=[];press_end_sorted=[];press_start_index=0;press_end_index=0;active_press_objects=new Set;active_press_lane_counts=[];lane_impacts=[];last_press_time=Number.NEGATIVE_INFINITY;base_timing_points=[];constructor(_,$,J=0,Z=D_,Q=null){super(_,$,J,Z,Q);this.update_scroll_time()}initialize(_){this.beatmap=_,this.objects=t8(_).sort(($,J)=>$.time-J.time),this.key_count=this.resolve_key_count(_),this.press_start_sorted=this.objects,this.press_end_sorted=this.objects.slice().sort(($,J)=>$.end_time-J.end_time),this.base_timing_points=this.extract_base_timing_points(_),this.reset_pressed_state()}set_mods(_){this.mods=_,this.update_scroll_time()}update_scroll_time(){this.scroll_time=oZ/sZ}get_lane_metrics(){let _=Math.max(1,Number.isFinite(this.skin.mania_lane_width)?this.skin.mania_lane_width:30),$=Math.max(4,Number.isFinite(this.skin.mania_note_height)?this.skin.mania_note_height:15),J=Math.max(0,Number.isFinite(this.skin.mania_lane_spacing)?this.skin.mania_lane_spacing:1),Z=Math.max(8,Math.min(H7,Number.isFinite(this.skin.mania_hit_position)?this.skin.mania_hit_position:364));return{lane_width:_,note_height:$,spacing:J,hit_pos:Z}}time_to_y(_,$){let J=_/this.scroll_time;return $-J*$}get_stage_bottom_height(_,$){let J=this.get_mania_texture("mania-stage-bottom",_);if(!J)return 0;return Math.max(1,Math.round(J.height*($/Math.max(1,J.width))))}draw_clipped_note_with_gradient(_,$,J,Z,Q,q,K){let V=Math.max(q,$),w=Math.min(K,$+Z)-V;if(w<=0||J<=0)return;let h=this.backend;h.draw_rect(_,V,J,w,Q);let z=h.create_linear_gradient(_,V,_,V+w,[{offset:0,color:`rgba(255,255,255,${nK})`},{offset:0.45,color:`rgba(255,255,255,${lK})`},{offset:1,color:`rgba(0,0,0,${oK})`}]);h.draw_rect_gradient(_,V,J,w,z)}get_lane(_){let $=_.data.pos,J=Number.isFinite($?.[0])?$[0]:_.x,Z=Math.floor(J*this.key_count/512);if(!Number.isFinite(Z))Z=0;if(z0(this.mods,c.Mirror))Z=this.key_count-1-Z;return Math.max(0,Math.min(this.key_count-1,Z))}resolve_key_count(_){let $=_?.Difficulty?.CircleSize;if(Number.isFinite($)){let Q=Math.round($);if(Q>=L_.MIN_KEY_COUNT)return Math.max(L_.MIN_KEY_COUNT,Math.min(L_.MAX_KEY_COUNT,Q))}let J=new Set;for(let Q=0;Q<_.HitObjects.length;Q++){let q=_.HitObjects[Q].x;if(Number.isFinite(q))J.add(Math.round(q))}let Z=J.size;if(Z>=L_.MIN_KEY_COUNT&&Z<=L_.MAX_KEY_COUNT)return Z;return L_.DEFAULT_KEY_COUNT}reset_pressed_state(){this.press_start_index=0,this.press_end_index=0,this.active_press_objects.clear(),this.active_press_lane_counts=Array(this.key_count).fill(0),this.lane_impacts=Array(this.key_count).fill(0),this.last_press_time=Number.NEGATIVE_INFINITY}add_pressed_object(_){if(this.active_press_objects.has(_))return;this.active_press_objects.add(_);let $=this.get_lane(_);if($>=0&&$<this.active_press_lane_counts.length)this.active_press_lane_counts[$]++}remove_pressed_object(_){if(!this.active_press_objects.delete(_))return;let $=this.get_lane(_);if($>=0&&$<this.active_press_lane_counts.length&&this.active_press_lane_counts[$]>0)this.active_press_lane_counts[$]--}rebuild_pressed_state(_){this.active_press_objects.clear(),this.active_press_lane_counts.fill(0);for(let $=0;$<this.objects.length;$++){let J=this.objects[$];if(_>=J.time-V5&&_<=J.end_time+V5)this.add_pressed_object(J)}this.press_start_index=0;while(this.press_start_index<this.press_start_sorted.length&&this.press_start_sorted[this.press_start_index].time-V5<=_)this.press_start_index++;this.press_end_index=0;while(this.press_end_index<this.press_end_sorted.length&&this.press_end_sorted[this.press_end_index].end_time+V5<_)this.press_end_index++}update_pressed_state(_){if(!Number.isFinite(this.last_press_time)||_<this.last_press_time||_-this.last_press_time>1000){this.rebuild_pressed_state(_),this.last_press_time=_;return}while(this.press_start_index<this.press_start_sorted.length&&this.press_start_sorted[this.press_start_index].time-V5<=_)this.add_pressed_object(this.press_start_sorted[this.press_start_index]),this.press_start_index++;while(this.press_end_index<this.press_end_sorted.length&&this.press_end_sorted[this.press_end_index].end_time+V5<_)this.remove_pressed_object(this.press_end_sorted[this.press_end_index]),this.press_end_index++;this.last_press_time=_}extract_base_timing_points(_){let $=[];for(let J=0;J<_.TimingPoints.length;J++){let Z=_.TimingPoints[J],Q=Number(Z.time),q=Number(Z.beatLength),K=Math.max(1,Math.round(Number(Z.meter)||4)),V=Number(Z.uninherited);if(!Number.isFinite(Q)||!Number.isFinite(q)||q<=0)continue;if(Number.isFinite(V)&&V===0)continue;$.push({time:Q,beat_length:q,meter:K})}if($.length===0)$.push({time:0,beat_length:600,meter:4});return $.sort((J,Z)=>J.time-Z.time),$}get_mania_texture(_,$){let J=_.toLowerCase(),Z=this.skin_elements?.mania_animations?.[J];if(Z&&Z.length>0){let Q=this.skin.animation_framerate>0?this.skin.animation_framerate:60,q=Math.floor(Math.max(0,$)/1000*Q)%Z.length;return Z[q]}return this.skin_elements?.mania_textures?.[J]??null}draw_column_sprite(_,$,J,Z,Q){this.backend.draw_image(_,$,J,Math.max(1,Z),Math.max(1,Q))}get_column_fallback_index(_){if(this.key_count%2===1&&_===Math.floor(this.key_count/2))return"s";let $=_%this.key_count;return Math.min($,this.key_count-1-$)%2===0?"1":"2"}draw_stage_background(_,$,J,Z,Q){let{backend:q,key_count:K}=this,{lane_width:V,spacing:H}=this.get_lane_metrics(),w=Math.max(1,V-2*H),h=this.get_mania_texture("mania-stage-left",_);if(h&&h.height>0){let W=h.width*(Q/h.height);q.set_alpha(1),q.draw_image(h,$-W,0,W,Q)}let z=this.get_mania_texture("mania-stage-right",_);if(z&&z.height>0){let W=z.width*(Q/z.height);q.set_alpha(1),q.draw_image(z,$+J,0,W,Q)}let X=this.get_mania_texture("mania-stage-light",_);if(X){for(let W=0;W<K;W++){let G=$+W*V+H;q.set_alpha(xK),this.draw_column_sprite(X,G,0,w,Z)}q.set_alpha(1);return}for(let W=0;W<K;W++){let G=$+W*V+H,k=q5(this.skin,K,W);q.set_alpha(mK),q.draw_rect(G,0,w,Z,k)}q.set_alpha(uK);for(let W=1;W<K;W++){let G=$+W*V;q.draw_rect(G-0.75,0,1.5,Z,"#ffffff")}q.set_alpha(1)}draw_bar_lines(_,$,J,Z){let Q=this.backend,q=_+this.scroll_time;for(let K=0;K<this.base_timing_points.length;K++){let V=this.base_timing_points[K],H=K+1<this.base_timing_points.length?this.base_timing_points[K+1].time:Number.POSITIVE_INFINITY,w=Math.max(_,V.time),h=Math.min(q,H);if(h<=w)continue;let z=Math.max(0,Math.ceil((w-V.time)/V.beat_length)),X=Math.floor((h-V.time)/V.beat_length);for(let W=z;W<=X;W++){let G=V.time+W*V.beat_length,k=this.time_to_y(G-_,Z);if(k<0||k>Z)continue;let C=W%V.meter===0;Q.set_alpha(C?0.3:0.16),Q.draw_rect($,k,J,C?1.25:1,"#ffffff")}}Q.set_alpha(1)}draw_note(_,$,J,Z){let{lane_width:Q,note_height:q,spacing:K,hit_pos:V}=Z,H=this.get_lane(_),w=this.time_to_y(_.time-$,V);if(w<-q-64||w>V+q+8)return;let h=J+H*Q,z=Math.max(1,Q-2*K),X=q5(this.skin,this.key_count,H);this.backend.set_alpha(1),this.draw_clipped_note_with_gradient(h+K,w-q,z,q,X,0,V)}draw_hold_note(_,$,J,Z){let{lane_width:Q,note_height:q,spacing:K,hit_pos:V}=Z,H=_.data,w=this.get_lane(_),h=this.time_to_y(_.time-$,V),z=this.time_to_y(H.end_time-$,V);if(z>V+q+8&&h>V+q+8)return;if(z<-64&&h<-64)return;let X=J+w*Q,W=Math.max(1,Q-2*K),G=q5(this.skin,this.key_count,w),k=z,Y=(_.time<=$?V:h)-k;if(Y>0)this.backend.set_alpha(0.92),this.draw_clipped_note_with_gradient(X+K,k,W,Y,G,0,V);if(_.time>=$)this.backend.set_alpha(1),this.draw_clipped_note_with_gradient(X+K,h-q,W,q,G,0,V);if(H.end_time>=$)this.backend.set_alpha(1),this.draw_clipped_note_with_gradient(X+K,z-q,W,q,G,0,V);this.backend.set_alpha(1)}draw_hit_glow(_,$,J){let{lane_width:Z,spacing:Q,hit_pos:q}=J,{backend:K,key_count:V}=this;if(this.active_press_objects.size===0)return;let H=this.lane_impacts;if(H.length!==V)this.lane_impacts=Array(V).fill(0);else H.fill(0);let w=this.lane_impacts;for(let z of this.active_press_objects){let X=0;if(K7(z)){let G=z.data;if(_>=z.time&&_<=G.end_time)X=0.35;else if(_<z.time){let k=z.time-_;if(k<=120)X=(1-k/120)*0.7}else{let k=_-G.end_time;if(k<=120)X=(1-k/120)*0.35}}else{let G=Math.abs(_-z.time);if(G<=120)X=1-G/120}if(X<=0)continue;let W=this.get_lane(z);if(X>w[W])w[W]=X}let h=this.get_mania_texture("mania-stage-light",_);K.set_blend_mode("lighter");for(let z=0;z<V;z++){let X=w[z];if(X<=0)continue;let W=$+z*Z+Q,G=Math.max(1,Z-2*Q),k=W+G*0.5;if(h){let Y=Math.max(16,q*(0.55+X*0.25));K.set_alpha(sK*X),K.draw_image(h,W,q-Y,G,Y),K.set_alpha(iK*X),K.draw_image(h,W,q-Y*0.7,G,Y*0.7)}else{let Y=Math.max(16,72*X),U=Math.max(2,G*0.16);K.set_alpha(0.4*X),K.draw_rect(k-U*0.5,q-Y,U,Y,"#cfe9ff")}let C=Math.max(3,G*0.6);K.set_alpha(aK*X),K.draw_rect(k-C*0.5,q-2,C,4,"#ffffff")}K.set_blend_mode("normal"),K.set_alpha(1)}draw_judgment_line(_,$){let{lane_width:J,hit_pos:Z}=$,Q=J*this.key_count,q=this.get_mania_texture("mania-stage-hint",0);if(q){let K=Math.max(2,Math.round(q.height*(Q/Math.max(1,q.width))));this.backend.set_alpha(1),this.backend.draw_image(q,_,Z-K,Q,K);return}this.backend.draw_rect(_,Z-1,Q,2,"#ffffff")}draw_lane_keys(_,$,J){let{lane_width:Z,hit_pos:Q,spacing:q,note_height:K}=J,V=K+5;this.update_pressed_state(_);for(let w=0;w<this.key_count;w++){let h=(this.active_press_lane_counts[w]??0)>0,z=$+w*Z,X=q5(this.skin,this.key_count,w),W=this.get_column_fallback_index(w),G=this.get_mania_texture(`mania-key${W}`,_),k=this.get_mania_texture(`mania-key${W}d`,_),C=Math.max(1,Z-2*q);if(h&&k){this.backend.set_alpha(1),this.draw_column_sprite(k,z+q,Q,C,V);continue}if(G){this.backend.set_alpha(1),this.draw_column_sprite(G,z+q,Q,C,V);continue}if(this.backend.set_alpha(0.38),this.backend.draw_rect(z+q,Q,C,V,X),h)this.backend.set_alpha(0.72),this.backend.draw_rect(z+q,Q,C,V,"#ff6666")}let H=this.get_mania_texture("mania-stage-bottom",_);if(H){let w=this.key_count*Z,h=Math.max(1,Math.round(H.height*(w/Math.max(1,H.width))));this.backend.set_alpha(1),this.backend.draw_image(H,$,Q,w,h)}this.backend.set_alpha(1)}draw_playfield_frame(_,$,J){let Q=Math.max(1,J-0);this.backend.set_alpha(0.92),this.backend.draw_rect(_,0,$,1.5,"#f0f4ff"),this.backend.draw_rect(_,J-1.5,$,1.5,"#f0f4ff"),this.backend.draw_rect(_,0,1.5,Q,"#f0f4ff"),this.backend.draw_rect(_+$-1.5,0,1.5,Q,"#f0f4ff"),this.backend.set_alpha(1)}render(_){let{backend:$,config:J}=this,Z=this.get_lane_metrics(),Q=Math.max(1,this.key_count*Z.lane_width),q=Math.floor((V7-Q)/2),K=this.get_stage_bottom_height(_,Q),V=Z.hit_pos+Z.note_height+5+K;this.render_background(),$.save(),$.translate(J.offset_x,J.offset_y),$.scale(J.scale,J.scale),this.draw_stage_background(_,q,Q,Z.hit_pos,V),this.draw_bar_lines(_,q,Q,Z.hit_pos),$.set_alpha(0.55),$.draw_rect(q,0,Q,Z.hit_pos,"#000000"),$.set_alpha(1);for(let h=0;h<this.objects.length;h++){let z=this.objects[h];if(K7(z))this.draw_hold_note(z,_,q,Z);else this.draw_note(z,_,q,Z)}this.draw_hit_glow(_,q,Z),this.draw_judgment_line(q,Z),this.draw_lane_keys(_,q,Z),this.draw_playfield_frame(q,Q,V);let H=z0(this.mods,c.Hidden),w=z0(this.mods,c.FadeIn);if(H||w){let h=H?this.hd_coverage:this.fi_coverage,z=Z.hit_pos*h,X=Z.hit_pos*this.gradient_ratio;if(H){let W=Z.hit_pos-z,G=X/z,k=$.create_linear_gradient(q,W,q,Z.hit_pos,[{offset:0,color:"rgba(0,0,0,0)"},{offset:G*0.4,color:"rgba(0,0,0,0.3)"},{offset:G*0.7,color:"rgba(0,0,0,0.75)"},{offset:G*0.9,color:"rgba(0,0,0,0.95)"},{offset:G,color:"rgba(0,0,0,1)"},{offset:1,color:"rgba(0,0,0,1)"}]);$.draw_rect_gradient(q,W,Q,z,k)}else{let W=(z-X)/z,G=$.create_linear_gradient(q,0,q,z,[{offset:0,color:"rgba(0,0,0,1)"},{offset:W,color:"rgba(0,0,0,1)"},{offset:W+(1-W)*0.1,color:"rgba(0,0,0,0.95)"},{offset:W+(1-W)*0.4,color:"rgba(0,0,0,0.75)"},{offset:W+(1-W)*0.7,color:"rgba(0,0,0,0.3)"},{offset:1,color:"rgba(0,0,0,0)"}]);$.draw_rect_gradient(q,0,Q,z,G)}}$.restore()}}class k6{audio_context;gain_node;constructor(_){this.audio_context=_,this.gain_node=this.audio_context.createGain(),this.gain_node.connect(this.audio_context.destination)}set_volume(_){this.gain_node.gain.value=n(_,0,1)}dispose_audio_node(){this.gain_node.disconnect()}}class _7 extends k6{audio_buffer=null;source_node=null;_is_playing=!1;_is_loaded=!1;_duration=0;pause_time=0;speed=1;started_at_context_time=0;started_from_time=0;constructor(_){super(_)}get is_playing(){return this._is_playing}get is_loaded(){return this._is_loaded}get duration(){return this._duration}get speed_multiplier(){return this.speed}get current_time(){if(!this._is_playing)return this.pause_time;let _=(this.audio_context.currentTime-this.started_at_context_time)*1000*this.speed,$=this.started_from_time+_;if($>=this._duration)return this._duration;return Math.max(0,$)}async load(_,$=1){this.stop(),this.release_source(),this.audio_buffer=null;try{this.speed=Math.max(0.1,$),this.audio_buffer=await this.audio_context.decodeAudioData(_.slice(0)),this._duration=Math.max(0,(this.audio_buffer.duration||0)*1000),this._is_loaded=!0,this.pause_time=0,this.started_at_context_time=0,this.started_from_time=0}catch(J){throw console.error("Failed to load audio data",J),this.release_source(),this.audio_buffer=null,J}}async play(_){if(!this.audio_buffer){console.warn("[AudioController] Cannot play: not loaded");return}let $=_!==void 0?_:this.pause_time,J=Math.max(0,Math.min($,this._duration));if(J>=this._duration){this.pause_time=this._duration;return}this.release_source();let Z=this.audio_context.createBufferSource();Z.buffer=this.audio_buffer,Z.playbackRate.value=this.speed,Z.connect(this.gain_node),Z.onended=()=>{if(this.source_node!==Z)return;if(this.source_node=null,this._is_playing)this._is_playing=!1,this.pause_time=this._duration},this.source_node=Z,this.started_from_time=J,this.started_at_context_time=this.audio_context.currentTime,this.pause_time=J,this._is_playing=!0,Z.start(0,J/1000)}pause(){if(!this._is_playing)return;this.pause_time=this.current_time,this.release_source(),this._is_playing=!1}seek(_){let $=Math.max(0,Math.min(_,this._duration));if(this.pause_time=$,!this._is_playing)return;this.restart_from($)}stop(){this.release_source(),this._is_playing=!1,this.pause_time=0,this.started_at_context_time=0,this.started_from_time=0}get_host_time(_){let $=_-this.current_time;return this.audio_context.currentTime+$/1000/this.speed}set_speed(_){let $=Math.max(0.1,_);if(this.speed===$)return;let J=this.current_time;if(this.speed=$,this._is_playing){this.restart_from(J);return}this.pause_time=J}dispose(){this.stop(),this.release_source(),this.audio_buffer=null,this._is_loaded=!1,this._duration=0,this.pause_time=0,this._is_playing=!1,this.started_at_context_time=0,this.started_from_time=0,this.dispose_audio_node()}restart_from(_){if(!this.audio_buffer)return;let $=Math.max(0,Math.min(_,this._duration));this.release_source();let J=this.audio_context.createBufferSource();J.buffer=this.audio_buffer,J.playbackRate.value=this.speed,J.connect(this.gain_node),J.onended=()=>{if(this.source_node!==J)return;if(this.source_node=null,this._is_playing)this._is_playing=!1,this.pause_time=this._duration},this.source_node=J,this.started_from_time=$,this.started_at_context_time=this.audio_context.currentTime,this.pause_time=$,this._is_playing=!0,J.start(0,$/1000)}release_source(){if(!this.source_node)return;this.source_node.onended=null;try{this.source_node.stop()}catch{}this.source_node.disconnect(),this.source_node=null}}class $7{video=null;object_url=null;_offset=0;get element(){return this.video}get offset(){return this._offset}async load(_,$=0){this.dispose(),this._offset=$,this.video=document.createElement("video"),this.video.muted=!0,this.video.loop=!1,this.video.playsInline=!0,this.object_url=URL.createObjectURL(_),this.video.src=this.object_url,await new Promise((J,Z)=>{if(!this.video)return Z(Error("No video element"));this.video.onloadeddata=()=>J(),this.video.onerror=()=>Z(Error("Failed to load video"))})}sync(_){if(!this.video)return;let $=(_-this._offset)/1000;if($<0){if(!this.video.paused)this.video.pause();return}if(Math.abs(this.video.currentTime-$)>0.1)this.video.currentTime=$}play(){if(this.video&&this.video.paused)this.video.play().catch(()=>{console.warn("[VideoController] failed to play video")})}pause(){if(this.video&&!this.video.paused)this.video.pause()}seek(_){if(!this.video)return;let $=Math.max(0,(_-this._offset)/1000);this.video.currentTime=$}dispose(){if(this.video)this.video.pause(),this.video.src="",this.video=null;if(this.object_url)URL.revokeObjectURL(this.object_url),this.object_url=null}}class j4 extends k6{custom_samples=new Map;constructor(_){super(_)}async load_samples(_){this.custom_samples.clear(),await this.load_into_cache(_,this.custom_samples)}async load_samples_from_files(_){this.custom_samples.clear(),await this.load_files_into_cache(_,this.custom_samples)}clear(){this.custom_samples.clear()}play(_,$,J,Z,Q=100,q,K=0){let V=this.get_set_name(_),H=this.get_set_name($);if(q){let w=q.toLowerCase().replace(/\.(wav|mp3|ogg)$/,"");if(this.play_buffer(w,Q,K))return}if(this.play_sound(V,"hitnormal",Z,Q,K),J&I6.Whistle)this.play_sound(H,"hitwhistle",Z,Q,K);if(J&I6.Finish)this.play_sound(H,"hitfinish",Z,Q,K);if(J&I6.Clap)this.play_sound(H,"hitclap",Z,Q,K)}play_sample(_,$,J,Z=100,Q=0){let q=this.get_set_name(_);this.play_sound(q,$,J,Z,Q)}play_sound(_,$,J,Z,Q){let q=!1;if(J>1)q=this.play_buffer(`${_}-${$}${J}`,Z,Q);if(!q)this.play_buffer(`${_}-${$}`,Z,Q)}play_buffer(_,$,J){let Z=this.custom_samples.get(_);if(!Z)return!1;let Q=this.audio_context.createBufferSource();Q.buffer=Z;let q=this.audio_context.createGain();return q.gain.value=$/100,Q.connect(q),q.connect(this.gain_node),Q.start(J),!0}get_set_name(_){switch(_){case 3:return"drum";case 2:return"soft";default:return"normal"}}get_sample_key_from_url(_){let J=_.split("?")[0].split("#")[0].split("/").pop();if(!J)return null;if(!J.endsWith(".wav")&&!J.endsWith(".mp3")&&!J.endsWith(".ogg"))return null;return J.toLowerCase().replace(/\.(wav|mp3|ogg)$/,"")}async load_into_cache(_,$){if(_.length==0)return;let J=[],Z=_.map(async(Q)=>{let q=this.get_sample_key_from_url(Q);if(!q){J.push(Q);return}if($.has(q))return;await this.load_single_sample(Q,q,$,J)});await Promise.all(Z),this.report_failures(J.length,$.size)}async load_single_sample(_,$,J,Z){try{let Q=await fetch(_);if(!Q.ok){Z.push(_);return}let q=await Q.arrayBuffer();if(q.byteLength<128){Z.push(_);return}let K=await this.audio_context.decodeAudioData(q.slice(0));J.set($,K)}catch{Z.push(_)}}async load_files_into_cache(_,$){if(_.size==0)return;let J=[],Z=[];for(let[Q,q]of _)Z.push((async()=>{let K=this.get_sample_key_from_url(Q);if(!K||$.has(K))return;if(q.byteLength<128){J.push(Q);return}try{let V=await this.audio_context.decodeAudioData(q.slice(0));$.set(K,V)}catch{J.push(Q)}})());await Promise.all(Z),this.report_failures(J.length,$.size)}report_failures(_,$){if(_>0&&$===0)console.warn(`[HitsoundController] Failed to load ${_} hitsounds`)}dispose(){this.custom_samples.clear(),this.dispose_audio_node()}}class L4{files;audio_filename;background_filename;video_filename;video_offset;constructor(_){this.files=_.files,this.audio_filename=_.audio_filename,this.background_filename=_.background_filename,this.video_filename=_.video_filename,this.video_offset=_.video_offset}resolve(){let _=this.audio_filename?this.find_file(this.audio_filename):void 0,$=this.background_filename?this.find_file(this.background_filename):void 0,J=this.video_filename?this.find_file(this.video_filename):void 0;return{audio:_,background:$?new Blob([$]):void 0,video:J?new Blob([J]):void 0,video_offset:this.video_offset}}find_file(_){if(this.files.has(_))return this.files.get(_);let $=_.toLowerCase();for(let[J,Z]of this.files)if(J.toLowerCase()===$)return Z;return}}var rK=100,tK=20;class D4{audio;hitsounds;resources=null;timing_points=[];timing_resolver=null;audio_offset=20;next_hit_object_index=0;hitsound_lookahead_ms=rK;constructor(_,$){this.audio=_;this.hitsounds=$}set_context(_,$,J,Z){this.resources=_,this.timing_points=$,this.timing_resolver=J,this.audio_offset=Z,this.next_hit_object_index=0}set_audio_offset(_){this.audio_offset=_}set_hitsound_lookahead(_){this.hitsound_lookahead_ms=Math.max(0,_)}update_hit_index(_){if(!this.resources?.beatmap)return;let $=this.resources.beatmap.HitObjects;if(this.next_hit_object_index>0&&$[this.next_hit_object_index-1].time>_)this.next_hit_object_index=0;while(this.next_hit_object_index<$.length&&$[this.next_hit_object_index].time<_)this.next_hit_object_index++}schedule_hitsounds(_){if(!this.resources?.beatmap||!this.audio.is_playing)return 0;let $=0,J=this.resources.beatmap.HitObjects,Z=_+this.hitsound_lookahead_ms;while(this.next_hit_object_index<J.length&&J[this.next_hit_object_index].time<=Z){let Q=J[this.next_hit_object_index];if(Q.time>=_-tK)this.play_hitsound(Q),$++;this.next_hit_object_index++}return $}play_hitsound(_){let $=this.get_timing_point(_.time),J=this.resolve_sample_settings($,_.hitSample);if((_.type&J_.Slider)===0){this.play_node_hitsound(_.time,_.hitSound,J,J.custom_filename);return}let Z=this.resources?.beatmap;if(!Z)return;let Q=this.timing_resolver?.get_state_at(_.time)??{base_beat_length:600,sv_multiplier:1},q=_.length??0,K=i8(q,Z,Q),V=Math.max(1,_.slides||1);if(K<=0||q<=0){this.play_node_hitsound(_.time,_.hitSound,J,J.custom_filename);return}let H=_.edgeSounds??[],w=_.edgeSets??[];for(let X=0;X<=V;X++){let W=_.time+K*X,G=H.length>0?H[X]??0:X==0?_.hitSound:0,k=w.length>0?w[X]:void 0,C=this.resolve_edge_sets(J,k),Y=X==0?J.custom_filename:void 0;this.play_node_hitsound(W,G,{...J,...C},Y)}let h=a8(Z,Q),z=s8({start_time:_.time,span_duration:K,span_count:V,length:q,tick_distance:h.tick_distance,min_distance_from_end:h.min_distance_from_end,get_position_at_progress:()=>[0,0]});for(let X of z.ticks){let W=this.audio.get_host_time(X.time+this.audio_offset);this.hitsounds.play_sample(J.normal_set,"slidertick",J.index,J.volume,W)}}play_node_hitsound(_,$,J,Z){let Q=this.audio.get_host_time(_+this.audio_offset);this.hitsounds.play(J.normal_set,J.addition_set,$,J.index,J.volume,Z,Q)}resolve_sample_settings(_,$){let{volume:J,sampleSet:Z,sampleSet:Q,sampleIndex:q}=_,K=void 0;if($){if($.normalSet!==0){if(Z=$.normalSet,$.additionSet===0)Q=Z}if($.additionSet!==0)Q=$.additionSet;if($.index!==0)q=$.index;if($.volume!==0)J=$.volume;K=$.filename||void 0}if(Z===0)Z=1;if(Q===0)Q=Z;return{normal_set:Z,addition_set:Q,index:q,volume:J,custom_filename:K}}resolve_edge_sets(_,$){let{normal_set:J,addition_set:Z}=_;if($){let{normalSet:Q,additionSet:q}=$;if(Q!==0)J=Q;if(q!==0)Z=q;else Z=J}if(J===0)J=1;if(Z===0)Z=J;return{normal_set:J,addition_set:Z}}get_timing_point(_){let $=this.timing_points;if($.length==0)return{time:0,beatLength:600,meter:4,sampleSet:1,sampleIndex:1,volume:100,uninherited:1,effects:0};for(let J=$.length-1;J>=0;J--)if($[J].time<=_)return $[J];return $[0]}}var eK=[".wav",".mp3",".ogg"],_V=/^(normal|soft|drum)-(hitnormal|hitwhistle|hitfinish|hitclap|slidertick|sliderslide|sliderwhistle)\d*$/i,iZ=(_,$,J)=>{let Z=new Set;for(let K of _.HitObjects){let V=K.hitSample?.filename?.trim();if(V)Z.add(V.toLowerCase())}let Q=new Map,q=J?.toLowerCase();for(let[K,V]of $){let H=K.toLowerCase();if(!$V(H))continue;if(q&&H==q)continue;let w=JV(H),h=w.replace(/\.(wav|mp3|ogg)$/,""),z=_V.test(h),X=Z.has(w)||Z.has(h)||Z.has(H);if(z||X)Q.set(K,V)}return Q},$V=(_)=>{for(let $ of eK)if(_.endsWith($))return!0;return!1},JV=(_)=>{let $=_.split("?")[0].split("#")[0];return $.split("/").pop()??$};var ZV=["rgb(255, 192, 0)","rgb(0, 202, 0)","rgb(18, 124, 255)","rgb(242, 24, 57)"],A4=(_)=>{let $=_.trim().toLowerCase();if($==="1"||$==="true"||$==="yes")return!0;if($==="0"||$==="false"||$==="no")return!1;return},aZ=(_)=>{let $={general:{},fonts:{},colours:{combo_colors:[]}},J="",Z=_.split(/\r?\n/);for(let Q of Z){let q=Q.trim();if(q.length===0||q.startsWith("//"))continue;if(q.startsWith("[")&&q.endsWith("]")){J=q.slice(1,-1).toLowerCase();continue}let K=q.indexOf(":");if(K===-1)continue;let V=q.slice(0,K).trim().toLowerCase(),H=q.slice(K+1).trim();switch(J){case"general":qV($.general,V,H);break;case"colours":KV($.colours,V,H);break;case"fonts":QV($.fonts,V,H);break}}if($.colours.combo_colors.length===0)$.colours.combo_colors=[...ZV];return $},QV=(_,$,J)=>{switch($){case"hitcircleprefix":if(J.length>0)_.hit_circle_prefix=J.trim();break;case"hitcircleoverlap":{let Z=Number.parseInt(J,10);if(Number.isFinite(Z))_.hit_circle_overlap=Z;break}}},qV=(_,$,J)=>{switch($){case"name":_.name=J;break;case"author":_.author=J;break;case"version":_.version=J;break;case"hitcircleoverlayabovenumber":case"hitcircleoverlayabovenumer":_.hit_circle_overlay_above_number=A4(J);break;case"sliderballflip":_.slider_ball_flip=A4(J);break;case"allowslidertainttint":case"allowsliderballtint":_.allow_slider_ball_tint=A4(J);break;case"sliderballframes":{let Z=Number.parseInt(J,10);if(Number.isFinite(Z)&&Z>0)_.slider_ball_frames=Z;break}case"animationframerate":{let Z=Number.parseInt(J,10);if(Number.isFinite(Z))_.animation_framerate=Z;break}}},KV=(_,$,J)=>{let Z=VV(J);if(!Z)return;let Q=$.match(/^combo(\d+)$/);if(Q){let q=parseInt(Q[1])-1;while(_.combo_colors.length<=q)_.combo_colors.push("");_.combo_colors[q]=Z;return}switch($){case"sliderborder":_.slider_border=Z;break;case"slidertrackoverride":_.slider_track_override=Z;break;case"sliderball":_.slider_ball=Z;break;case"spinnerbackground":_.spinner_background=Z;break}},VV=(_)=>{let $=_.split(",").map((q)=>parseInt(q.trim()));if($.length<3||$.some(isNaN))return null;let[J,Z,Q]=$;if($.length>=4){let q=$[3]/255;return`rgba(${J}, ${Z}, ${Q}, ${q.toFixed(2)})`}return`rgb(${J}, ${Z}, ${Q})`},rZ=(_,$)=>{let J={..._};if($.colours.combo_colors.length>0)J.combo_colors=$.colours.combo_colors.filter((Z)=>Z.length>0);if($.colours.slider_border)J.slider_border_color=$.colours.slider_border;if($.colours.slider_track_override)J.slider_track_override=$.colours.slider_track_override;if($.colours.slider_ball)J.slider_ball_color=$.colours.slider_ball;if($.colours.spinner_background)J.spinner_background_color=$.colours.spinner_background;if($.general.hit_circle_overlay_above_number!==void 0)J.hit_circle_overlay_above_number=$.general.hit_circle_overlay_above_number;if($.general.slider_ball_flip!==void 0)J.slider_ball_flip=$.general.slider_ball_flip;if($.general.allow_slider_ball_tint!==void 0)J.allow_slider_ball_tint=$.general.allow_slider_ball_tint;if($.general.slider_ball_frames!==void 0)J.slider_ball_frames=$.general.slider_ball_frames;if($.general.animation_framerate!==void 0)J.animation_framerate=$.general.animation_framerate;if($.fonts.hit_circle_prefix!==void 0)J.hit_circle_prefix=$.fonts.hit_circle_prefix;if($.fonts.hit_circle_overlap!==void 0)J.hit_circle_overlap=$.fonts.hit_circle_overlap;return J};var tZ=[".png",".jpg",".jpeg",".webp"],_Q=(_,$)=>{if(_.has($))return{name:$,data:_.get($)};let J=$.toLowerCase();for(let[Z,Q]of _)if(Z.toLowerCase()===J)return{name:Z,data:Q};for(let[Z,Q]of _){let q=Z.split("/").pop();if(q&&q.toLowerCase()===J)return{name:Z,data:Q}}return null},HV=(_,$)=>{for(let J=0;J<$.length;J++){let Z=$[J];for(let Q=0;Q<tZ.length;Q++){let q=`${Z}${tZ[Q]}`,K=_Q(_,q);if(K)return{filename:K.name,data:K.data}}}return null},wV=async(_)=>{let $=new Blob([_.data]),J=URL.createObjectURL($);try{let Z=new Image;Z.src=J,await Z.decode();let Q=_.filename.toLowerCase().includes("@2x")?2:1;return{image:{source:Z,width:Z.naturalWidth/Q,height:Z.naturalHeight/Q},url:J}}catch(Z){return URL.revokeObjectURL(J),console.warn(`[Skin] Failed to decode ${_.filename}`,Z),null}},H5=(_,$)=>{if(_.width<=$&&_.height<=$)return _;let J=_.source,Z=Number(J?.width??0),Q=Number(J?.height??0);if(Z<=0||Q<=0||_.width<=0||_.height<=0)return _;let q=Z/_.width,K=Q/_.height,V=Math.min(_.width,$),H=Math.min(_.height,$),w=Math.max(1,Math.round(V*q)),h=Math.max(1,Math.round(H*K)),z=Math.max(0,Math.floor((Z-w)/2)),X=Math.max(0,Math.floor((Q-h)/2)),W=document.createElement("canvas");W.width=w,W.height=h;let G=W.getContext("2d");if(!G)return _;return G.drawImage(_.source,z,X,w,h,0,0,w,h),{source:W,width:V,height:H}},w5=(_,$)=>{if(_.width<$||_.height<$)return null;return _},C0=async(_,$)=>{let J=HV(_,$);if(!J)return null;return wV(J)},hV=async(_,$)=>{let J=[],Z=Math.max(1,Math.min(120,$));for(let Q=0;Q<Z;Q++){let q=await C0(_,[`sliderb${Q}@2x`,`sliderb${Q}`]);if(!q){if(Q===0)continue;break}J.push(q)}return J},zV=async(_,$)=>{let J=[];for(let Z=0;Z<10;Z++){let Q=await C0(_,[`${$}-${Z}@2x`,`${$}-${Z}`]);if(!Q)return[];J.push(Q)}return J},eZ=async(_,$)=>{for(let J=0;J<$.length;J++){let Z=$[J],Q=[];for(let q=0;q<64;q++){let K=await C0(_,[`${Z}${q}@2x`,`${Z}${q}`,`${Z}-${q}@2x`,`${Z}-${q}`]);if(!K)break;Q.push(K)}if(Q.length>0)return Q}return[]},XV=async(_,$)=>{let J=[];for(let Z=0;Z<128;Z++){let Q=await C0(_,[`${$}-${Z}@2x`,`${$}-${Z}`]);if(!Q)break;J.push(Q)}return J},GV=(_)=>{let $=_Q(_,"skin.ini");if(!$)return null;try{return new TextDecoder("utf-8").decode($.data)}catch(J){return console.warn("[Skin] Failed to parse skin.ini",J),null}},$Q=async(_,$)=>{let J=[],Z=_,Q=GV($);if(Q)Z=rZ(Z,aZ(Q));let q={},K=await C0($,["hitcircle@2x","hitcircle"]);if(K){let F=w5(H5(K.image,512),32);if(F)q.hitcircle=F,J.push(K.url)}let V=await C0($,["hitcircleoverlay@2x","hitcircleoverlay"]);if(V){let F=w5(H5(V.image,512),32);if(F)q.hitcircleoverlay=F,J.push(V.url)}let H=await C0($,["sliderstartcircle@2x","sliderstartcircle"]);if(H){let F=w5(H5(H.image,512),32);if(F)q.sliderstartcircle=F,J.push(H.url)}let w=await C0($,["sliderstartcircleoverlay@2x","sliderstartcircleoverlay"]);if(w){let F=w5(H5(w.image,512),32);if(F)q.sliderstartcircleoverlay=F,J.push(w.url)}let h=await C0($,["sliderendcircle@2x","sliderendcircle"]);if(h){let F=w5(H5(h.image,512),32);if(F)q.sliderendcircle=F,J.push(h.url)}let z=await C0($,["sliderendcircleoverlay@2x","sliderendcircleoverlay"]);if(z){let F=w5(H5(z.image,512),32);if(F)q.sliderendcircleoverlay=F,J.push(z.url)}let X=await C0($,["approachcircle@2x","approachcircle"]);if(X)q.approachcircle=X.image,J.push(X.url);let W=await hV($,Z.slider_ball_frames);if(W.length>0){let F=[];for(let M=0;M<W.length;M++)F.push(W[M].image),J.push(W[M].url);q.sliderball_frames=F,q.sliderball=F[0]}else{let F=await C0($,["sliderb@2x","sliderb","sliderball@2x","sliderball"]);if(F)q.sliderball=F.image,J.push(F.url)}let G=await C0($,["sliderb-nd@2x","sliderb-nd"]);if(G)q.sliderball_nd=G.image,J.push(G.url);let k=await C0($,["sliderb-spec@2x","sliderb-spec"]);if(k)q.sliderball_spec=k.image,J.push(k.url);let C=await C0($,["sliderfollowcircle@2x","sliderfollowcircle"]);if(C)q.sliderfollowcircle=C.image,J.push(C.url);let Y=await C0($,["reversearrow@2x","reversearrow"]);if(Y)q.reversearrow=Y.image,J.push(Y.url);let U=await eZ($,["reversearrow"]);if(U.length>0){let F=[];for(let M=0;M<U.length;M++)F.push(U[M].image),J.push(U[M].url);if(q.reversearrow_frames=F,!q.reversearrow)q.reversearrow=F[0]}let N=await C0($,["sliderb0@2x","sliderb0","sliderb@2x","sliderb"]);if(N)q.sliderb=N.image,J.push(N.url);let I=await C0($,["sliderscorepoint@2x","sliderscorepoint","sliderpoint10@2x","sliderpoint10"]);if(I)q.sliderscorepoint=I.image,J.push(I.url);let f=await C0($,["followpoint@2x","followpoint"]);if(f)q.followpoint=f.image,J.push(f.url);let y=await XV($,"followpoint");if(y.length>0){let F=[];for(let M=0;M<y.length;M++)F.push(y[M].image),J.push(y[M].url);if(q.followpoint_frames=F,!q.followpoint)q.followpoint=F[0]}let D=await zV($,Z.hit_circle_prefix||"default");if(D.length>0){let F=[];for(let M=0;M<D.length;M++)F.push(D[M].image),J.push(D[M].url);q.combo_digits=F,q.combo_overlap=Z.hit_circle_overlap}let L=["mania-stage-left","mania-stage-right","mania-stage-bottom","mania-stage-light","mania-stage-hint","mania-key1","mania-key1d","mania-key2","mania-key2d","mania-keys","mania-keysd","mania-note1","mania-note2","mania-notes","mania-note1h","mania-note2h","mania-notesh","mania-note1l","mania-note2l","mania-notesl","mania-note1t","mania-note2t","mania-notest"],v={},m={};for(let F=0;F<L.length;F++){let M=L[F],j=M.toLowerCase(),A=await C0($,[`${M}@2x`,M]);if(A)v[j]=A.image,J.push(A.url);let i=await eZ($,[M]);if(i.length>0){let a=[];for(let T=0;T<i.length;T++)a.push(i[T].image),J.push(i[T].url);if(m[j]=a,!v[j])v[j]=a[0]}}if(Object.keys(v).length>0)q.mania_textures=v;if(Object.keys(m).length>0)q.mania_animations=m;return{config:Z,elements:q,dispose:()=>{for(let F=0;F<J.length;F++)URL.revokeObjectURL(J[F])}}};var P4=(_)=>{return new URL(_,import.meta.url).toString()},R4=()=>{return P4("./default-skin/manifest.json")},JQ=(_)=>{return P4(`./default-skin/${_}`)},WV=(_)=>{return P4(_)};import kV from"jszip";var ZQ=(_)=>{let $=new Map;for(let[J,Z]of _){if(Z instanceof ArrayBuffer){$.set(J,Z);continue}$.set(J,new TextEncoder().encode(Z).buffer)}return $},QQ=async(_)=>{let $=await kV.loadAsync(_),J=new Map,Z=Object.entries($.files);for(let Q=0;Q<Z.length;Q++){let[q,K]=Z[Q];if(K.dir)continue;J.set(q,await K.async("arraybuffer"))}return J},qQ=(_,$)=>{let J=new Map;if(_)for(let[Z,Q]of _)J.set(Z,Q);if($)for(let[Z,Q]of $)J.set(Z,Q);return J},KQ=(_,$,J)=>{let Z=new Map(_);if($){for(let[Q,q]of $)if(!Z.has(Q))Z.set(Q,q)}if(J){for(let[Q,q]of J)if(!Z.has(Q))Z.set(Q,q)}return Z},VQ=async(_,$)=>{try{let J=await fetch(_);if(!J.ok)return null;let Z=await J.json();if(!Array.isArray(Z)||Z.length===0)return null;let Q=new Map,q=Z.filter((V)=>!!V&&!V.endsWith("/")),K=24;for(let V=0;V<q.length;V+=K){let H=q.slice(V,V+K),w=await Promise.all(H.map(async(h)=>{try{let z=await fetch($(h));if(!z.ok)return null;return{name:h,data:await z.arrayBuffer()}}catch{return null}}));for(let h=0;h<w.length;h++){let z=w[h];if(!z)continue;Q.set(z.name,z.data)}}return Q.size>0?Q:null}catch{return null}};var NV=0.42,YV=30,UV=100,IV=100,bV=R4();class wQ{backend;renderer=null;audio_context;audio;hitsounds;video=null;resources=null;animation_frame=null;skin;base_skin;mods;custom_rate=null;renderer_config;start_offset;start_mode;custom_start_time;music_volume;hitsound_volume;audio_offset;beatmap_audio_lead_in=0;background_url=null;loaded_skin_elements=null;loaded_skin_dispose=null;should_load_default_skin=!0;default_skin_folder_manifest_url=bV;default_skin_files=null;default_skin_loading=null;custom_skin_files=null;listeners=new Map;is_loaded_flag=!1;hitsound_scheduler;timing_points=[];timing_resolver=null;resize_observer=null;key_handler=null;options;enable_fps_counter=!1;fps_frame_count=0;fps_last_update=0;current_fps=0;time_smoothing=0.1;smoothed_delta=0;max_frame_delta=100;resync_threshold_ms=YV;debug_sync=!1;debug_sync_last_emit_at=0;last_timestamp=0;smooth_time=0;constructor(_){this.options=_,this.backend=V4(_.backend_type??"auto"),this.skin=G4(),this.base_skin=this.skin,this.mods=_.mods??0,this.renderer_config={...D_,..._.renderer_config},this.calculate_layout(_.canvas.width,_.canvas.height,_.playfield_scale),this.start_mode=_.start_mode??(Number.isFinite(_.start_time)?"custom":"preview"),this.custom_start_time=Number.isFinite(_.start_time)?Math.max(0,_.start_time):null,this.start_offset=0,this.music_volume=_.volume??0.5,this.hitsound_volume=_.hitsound_volume??0.25,this.audio_offset=_.audio_offset??20,this.backend.initialize(_.canvas,this.renderer_config.use_high_dpi);let $=window.AudioContext??window.webkitAudioContext;if(!$)throw Error("Web Audio API is not supported in this environment");if(this.audio_context=new $,this.audio=new _7(this.audio_context),this.hitsounds=new j4(this.audio_context),this.hitsound_scheduler=new D4(this.audio,this.hitsounds),this.hitsound_scheduler.set_hitsound_lookahead(_.hitsound_lookahead_ms??IV),this.audio.set_volume(this.music_volume),this.hitsounds.set_volume(this.hitsound_volume),_.auto_resize)this.setup_auto_resize();this.enable_fps_counter=_.enable_fps_counter??!1,this.fps_last_update=performance.now();let J=_.time_smoothing;if(Number.isFinite(J))this.time_smoothing=Math.max(0,Math.min(1,J));let Z=_.max_frame_delta;if(Number.isFinite(Z))this.max_frame_delta=Math.max(10,Z);let Q=_.audio_resync_threshold_ms;if(Number.isFinite(Q))this.resync_threshold_ms=Math.max(0,Q);this.debug_sync=_.debug_sync??!1}async load_osz(_,$){try{let Z=await new A1().load_osz(_,{difficulty:$});return this.resources=Z,this.setup()}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async load_files(_,$){try{let J=new A1;return this.resources=await J.load_from_files(_,{difficulty:$}),this.setup()}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async load_custom_hitsounds(_){if(_.length==0){console.warn("[BeatmapPlayer] No custom hitsound URLs were provided"),this.hitsounds.clear();return}try{await this.hitsounds.load_samples(_)}catch($){console.error("[BeatmapPlayer] Failed to load custom hitsounds:",$)}}async load_map_custom_hitsounds(){if(!this.resources?.beatmap)return;let _=KQ(this.resources.files,this.custom_skin_files,this.default_skin_files),$=iZ(this.resources.beatmap,_,this.resources.audio_filename);if($.size==0){this.hitsounds.clear();return}try{await this.hitsounds.load_samples_from_files($)}catch(J){console.error("[BeatmapPlayer] Failed to load map custom hitsounds:",J),this.hitsounds.clear()}}async load_beatmap(_,$,J,Z,Q){return this.resources={beatmap:_,available_difficulties:[],files:new Map,audio:$,background:J,video:Z,video_offset:Q},this.setup()}async load_osu_content(_,$){try{await HQ();let J=await this.parse_content(_);return this.load_beatmap(J,$)}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async load_beatmap_files(_,$,J,Z,Q){try{await HQ();let q=typeof _==="string",K=_ instanceof Uint8Array?_:_ instanceof ArrayBuffer?new Uint8Array(_):null,V=await this.parse_content(q?_:K);return this.load_beatmap(V,$,J,Z,Q)}catch(q){let K=q instanceof Error?q.message:String(q);return this.emit("error","INVALID_BEATMAP",K),G_("INVALID_BEATMAP",K)}}async setup(){if(!this.resources)return G_("NOT_LOADED","No resources loaded");let{beatmap:_}=this.resources;this.timing_points=r8([..._.TimingPoints]),this.timing_resolver=new W6(this.timing_points),this.resolve_assets(),await this.load_map_skin();let{audio:$,video:J,video_offset:Z}=this.resources;if($)try{await this.audio.load($,this.resolve_speed_multiplier())}catch(Q){let q=Q instanceof Error?Q.message:String(Q);return this.emit("error","AUDIO_DECODE_ERROR",q),G_("AUDIO_DECODE_ERROR",q)}if(this.beatmap_audio_lead_in=Math.max(0,_.General.AudioLeadIn||0),this.hitsound_scheduler.set_context(this.resources,this.timing_points,this.timing_resolver,this.get_effective_audio_offset()),this.load_map_custom_hitsounds(),J)this.video=new $7,await this.video.load(J,Z??0);try{this.renderer=this.create_renderer(_),this.renderer.initialize(_),this.renderer.precompute()}catch(Q){let q=Q instanceof Error?Q.message:String(Q);return this.emit("error","UNSUPPORTED_MODE",q),G_("UNSUPPORTED_MODE",q)}return this.start_offset=this.resolve_initial_start_offset(),this.hitsound_scheduler.update_hit_index(this.start_offset),this.load_background(),this.is_loaded_flag=!0,this.emit("loaded",_,this.resources),requestAnimationFrame(()=>this.render_frame(this.start_offset)),g4(this.resources)}async load_background(){if(this.resources)this.resolve_assets();if(!this.resources?.background||!this.renderer)return;try{let _=new Image;if(this.background_url)URL.revokeObjectURL(this.background_url);this.background_url=URL.createObjectURL(this.resources.background),_.src=this.background_url,await _.decode(),this.renderer.set_background({source:_,width:_.width,height:_.height});let $=this.audio.is_playing?this.current_time:this.start_offset;requestAnimationFrame(()=>this.render_frame($))}catch(_){console.warn("[BeatmapPlayer] Failed to load background",_)}}resolve_assets(){if(!this.resources)return;let _=new L4(this.resources).resolve();if(!this.resources.audio&&_.audio)this.resources.audio=_.audio;if(!this.resources.background&&_.background)this.resources.background=_.background;if(!this.resources.video&&_.video)this.resources.video=_.video;if(!this.resources.video_offset&&_.video_offset)this.resources.video_offset=_.video_offset}create_renderer(_){switch(_.General.Mode){case 0:return new e8(this.backend,this.skin,this.mods,this.renderer_config,this.loaded_skin_elements);case 3:return new L_(this.backend,this.skin,this.mods,this.renderer_config,this.loaded_skin_elements);case 1:case 2:default:throw Error(`Unsupported game mode: ${Z7[_.General.Mode]??_.General.Mode}`)}}get_last_object_time(){if(!this.resources?.beatmap.HitObjects.length)return 0;let _=this.resources.beatmap.HitObjects,$=0;for(let J of _){let Z=J.endTime||J.time;if(Z>$)$=Z}return $}resolve_preview_start_offset(){if(!this.resources?.beatmap)return 0;let _=this.resources.beatmap.General.PreviewTime;if(_>0)return _;return Math.max(0,this.get_last_object_time()*NV)}resolve_initial_start_offset(){let _=Math.max(0,this.duration),$=this.resources?.beatmap?.General.Mode;if(this.start_mode=="beginning")return 0;if(this.start_mode=="custom"){if(this.custom_start_time!==null)return Math.max(0,Math.min(this.custom_start_time,_));return Math.max(0,Math.min(this.resolve_preview_start_offset(),_))}if($===3)return 0;return Math.max(0,Math.min(this.resolve_preview_start_offset(),_))}async play(){if(!this.renderer||!this.is_loaded_flag){console.warn("[BeatmapPlayer] Cannot play: not loaded");return}if(this.audio.is_playing)return;if(this.audio_context.state==="suspended")await this.audio_context.resume();try{await this.audio.play(this.to_track_time(this.start_offset))}catch(_){console.warn("[BeatmapPlayer] Failed to start audio",_),this.emit("statechange",!1);return}this.video?.play(),this.start_render_loop(),this.emit("play"),this.emit("statechange",!0)}pause(){if(!this.audio.is_playing)return;this.start_offset=this.to_beatmap_time(this.audio.current_time),this.audio.pause(),this.video?.pause(),this.stop_render_loop(),this.emit("pause"),this.emit("statechange",!1)}set_mods(_){this.mods=_;let $=this.resolve_speed_multiplier();if(this.renderer?.set_mods(_),this.audio.set_speed($),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}set_rate(_){if(_===null)this.custom_rate=null;else if(Number.isFinite(_))this.custom_rate=Math.max(0.1,_);if(this.audio.set_speed(this.resolve_speed_multiplier()),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}seek(_){this.start_offset=Math.max(0,Math.min(_,this.duration)),this.hitsound_scheduler.update_hit_index(this.start_offset),this.audio.seek(this.to_track_time(this.start_offset)),this.video?.seek(this.start_offset),this.video?.sync(this.start_offset),this.last_timestamp=performance.now(),this.smooth_time=this.start_offset,this.smoothed_delta=0,this.emit("seek",this.start_offset),this.render_frame(this.start_offset),this.renderer?.on_seek(this.start_offset)}async set_difficulty(_){if(!this.resources)return G_("NOT_LOADED","No beatmap resources loaded");let $=this.is_playing;this.stop();try{let Z=await new A1().load_from_files(this.resources.files,{difficulty:_});this.resources=Z;let Q=await this.setup();if(Q.success&&$)this.play();return Q}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async parse_content(_){let $=typeof _=="string"?new TextEncoder().encode(_):_;return await CV($)}stop(){this.pause(),this.start_offset=0,this.audio.seek(this.to_track_time(0)),this.hitsound_scheduler.update_hit_index(0),this.render_frame(0)}dispose(){if(this.stop(),this.backend.dispose(),this.audio.dispose(),this.hitsounds.dispose(),this.video?.dispose(),this.renderer?.dispose(),this.background_url)URL.revokeObjectURL(this.background_url),this.background_url=null;if(this.resize_observer)this.resize_observer.disconnect(),this.resize_observer=null;if(this.key_handler)window.removeEventListener("keydown",this.key_handler),this.key_handler=null;if(this.audio_context&&this.audio_context.state!=="closed")this.audio_context.close().catch(()=>{});this.renderer=null,this.resources=null,this.is_loaded_flag=!1,this.listeners.clear(),this.release_loaded_skin()}get current_time(){return this.to_beatmap_time(this.audio.current_time)}get duration(){if(this.audio.duration>0)return Math.max(0,this.audio.duration-this.beatmap_audio_lead_in);return this.get_last_object_time()}get is_playing(){return this.audio.is_playing}get is_loaded(){return this.is_loaded_flag}get mode(){if(!this.resources)return"standard";switch(this.resources.beatmap.General.Mode){case 1:return"taiko";case 2:return"catch";case 3:return"mania";default:return"standard"}}get beatmap(){return this.resources?.beatmap??null}get available_difficulties(){return this.resources?.available_difficulties??[]}get background(){return this.resources?.background}get config(){return this.renderer_config}resize(_,$,J){if(this.backend.resize(_,$),this.calculate_layout(_,$,J),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}update_config(_){if(this.renderer_config={...this.renderer_config,..._},this.renderer?.update_config(this.renderer_config),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}async load_skin_files(_){if(!_){this.custom_skin_files=null,await this.reload_skin_runtime();return}this.custom_skin_files=ZQ(_),await this.reload_skin_runtime()}async load_skin_osk(_){await this.load_skin_files(await QQ(_))}clear_loaded_skin(){this.custom_skin_files=null,this.reload_skin_runtime()}async load_map_skin(){if(this.release_loaded_skin(),!this.resources)return;try{await this.ensure_default_skin_loaded();let _=this.merge_skin_sources(),$=await $Q(this.base_skin,_);this.skin=$.config,this.loaded_skin_elements=$.elements,this.loaded_skin_dispose=$.dispose}catch(_){console.warn("[BeatmapPlayer] Failed to load map skin assets",_),this.skin=this.base_skin,this.loaded_skin_elements=null,this.loaded_skin_dispose=null}}release_loaded_skin(){if(this.loaded_skin_dispose)this.loaded_skin_dispose(),this.loaded_skin_dispose=null;this.loaded_skin_elements=null}async ensure_default_skin_loaded(){if(!this.should_load_default_skin){this.default_skin_files=null;return}await this.load_default_skin_files()}async load_default_skin_files(){if(this.default_skin_files)return;if(this.default_skin_loading){await this.default_skin_loading;return}this.default_skin_loading=(async()=>{try{let _=await this.load_default_skin_folder_files();if(_&&_.size>0){this.default_skin_files=_;return}}catch(_){console.warn("[BeatmapPlayer] Failed to load default skin folder",_),this.default_skin_files=null}})(),await this.default_skin_loading,this.default_skin_loading=null}async load_default_skin_folder_files(){try{return VQ(this.default_skin_folder_manifest_url,JQ)}catch{return null}}merge_skin_sources(){return qQ(this.default_skin_files,this.custom_skin_files)}setup_auto_resize(){this.resize_observer=new ResizeObserver(()=>{let $=this.options.canvas.parentElement;if($){let J=$.getBoundingClientRect();this.resize(J.width,J.height,this.options.playfield_scale)}}),this.resize_observer.observe(this.options.canvas.parentElement||this.options.canvas)}toggle_pause(){if(!this.is_loaded_flag)return;if(this.is_playing)this.pause();else this.play()}toggle_grid(){if(this.renderer_config.grid_level===0)this.renderer_config.grid_level=32;else this.renderer_config.grid_level=0;this.render_frame(this.current_time)}calculate_layout(_,$,J){let q=0.9;if(Number.isFinite(J))q=J;let K=_*q/512,V=$*q/384,H=Math.min(K,V);if(this.renderer_config.scale=H,this.renderer_config.offset_x=Math.floor((_-512*H)/2),this.renderer_config.offset_y=Math.floor(($-384*H)/2),this.renderer)this.renderer.update_config(this.renderer_config)}set_volume(_){this.music_volume=_,this.audio.set_volume(_)}set_hitsound_volume(_){this.hitsound_volume=_,this.hitsounds.set_volume(_)}set_offset(_){if(this.audio_offset=_,this.hitsound_scheduler.set_audio_offset(this.get_effective_audio_offset()),this.is_loaded_flag)this.seek(this.current_time)}on(_,$){if(!this.listeners.has(_))this.listeners.set(_,new Set);this.listeners.get(_).add($)}off(_,$){this.listeners.get(_)?.delete($)}emit(_,...$){let J=this.listeners.get(_);if(J)for(let Z of J)Z(...$)}start_render_loop(){if(this.animation_frame!==null)return;this.last_timestamp=performance.now(),this.smooth_time=this.current_time,this.smoothed_delta=0;let _=($)=>{if(!this.audio.is_playing){this.animation_frame=null;return}let J=Math.max(0,$-this.last_timestamp);this.last_timestamp=$;let Z=Math.min(J,this.max_frame_delta);if(this.time_smoothing>0){if(this.smoothed_delta===0)this.smoothed_delta=Z;else this.smoothed_delta+=(Z-this.smoothed_delta)*this.time_smoothing;Z=this.smoothed_delta}this.smooth_time+=Z*this.audio.speed_multiplier;let Q=this.current_time;if(Math.abs(this.smooth_time-Q)>this.resync_threshold_ms)this.smooth_time=Q;else this.smooth_time+=(Q-this.smooth_time)*0.1;let K=this.smooth_time,V=this.hitsound_scheduler.schedule_hitsounds(Q);if(this.debug_sync)this.emit_debug_sync(Q,K,V);if(this.render_frame(K),this.video?.sync(K),this.emit("timeupdate",K,this.duration),K>=this.duration){this.emit("ended"),this.stop_render_loop(),this.emit("statechange",!1);return}this.animation_frame=requestAnimationFrame(_)};this.animation_frame=requestAnimationFrame(_)}stop_render_loop(){if(this.animation_frame!==null)cancelAnimationFrame(this.animation_frame),this.animation_frame=null}render_frame(_){if(this.backend.begin_frame?.(),this.backend.clear(),this.renderer?.render(_),this.enable_fps_counter){this.fps_frame_count++;let $=performance.now(),J=$-this.fps_last_update;if(J>=1000)this.current_fps=Math.round(this.fps_frame_count*1000/J),this.fps_frame_count=0,this.fps_last_update=$;let Z=`14px ${this.skin.default_font??"monospace"}`;this.backend.draw_text(`${this.current_fps} FPS`,10,20,Z,"rgba(255,255,255,0.8)","left","top")}this.backend.end_frame?.()}emit_debug_sync(_,$,J){let Z=performance.now();if(Z-this.debug_sync_last_emit_at<UV)return;this.debug_sync_last_emit_at=Z,this.emit("debugsync",{audio_time_raw:this.audio.current_time,beatmap_time:_,render_time:$,drift_ms:$-_,scheduled_hitsounds:J})}set_fps_counter(_){this.enable_fps_counter=_}get_effective_audio_offset(){return this.audio_offset+this.beatmap_audio_lead_in}to_track_time(_){return Math.max(0,_+this.get_effective_audio_offset())}to_beatmap_time(_){return Math.max(0,_-this.get_effective_audio_offset())}resolve_speed_multiplier(){return this.custom_rate??p4(this.mods)}async reload_skin_runtime(){if(!this.is_loaded_flag||!this.resources?.beatmap)return;let _=this.resources.beatmap,$=this.current_time;await this.load_map_skin(),this.renderer=this.create_renderer(_),this.renderer.initialize(_),requestAnimationFrame(()=>this.render_frame($))}}export{OV as unwrap,MV as toggle_mod,WV as resolve_runtime_asset_url,g4 as ok,RV as mods_to_string,PV as mods_from_string,G4 as merge_skin,Z_ as is_spinner,Z1 as is_slider,jV as is_ok,T4 as is_new_combo,K7 as is_hold,LV as is_err,q7 as is_circle,z0 as has_mod,p4 as get_speed_multiplier,IK as get_rate_multiplier,q5 as get_mania_lane_color,R4 as get_default_skin_folder_manifest_url,j_ as get_combo_color,fV as get_available_mods,gZ as get_adjusted_difficulty,G_ as err,V4 as create_backend,BK as apply_rate_to_ar,bK as apply_mods_to_difficulty,$7 as VideoController,e8 as StandardRenderer,FQ as SpeedChangingMods,Q7 as SampleSet,m8 as PixiBackend,V7 as PLAYFIELD_WIDTH,H7 as PLAYFIELD_HEIGHT,A1 as OszLoader,c as Mods,kK as ModNightcore,UK as ModHidden,w4 as ModHardRock,CK as ModHalfTime,h4 as ModEasy,WK as ModDoubleTime,L_ as ManiaRenderer,I6 as HitSoundType,J_ as HitObjectType,YK as HD_FADE_OUT_MULTIPLIER,NK as HD_FADE_IN_MULTIPLIER,n4 as GridLevel,Z7 as GameMode,d4 as ErrorCode,AV as DifficultyChangingMods,X4 as DEFAULT_SKIN,D_ as DEFAULT_RENDERER_CONFIG,wQ as BeatmapPlayer,P1 as BaseRenderer,_7 as AudioController};
1144
+ }`,this._stylesheet)}get stylesheet(){return this._stylesheet}set stylesheet($){this._stylesheet!==$&&(this._stylesheet=$,this.styleID++)}normalizeColor($){return Array.isArray($)&&($=P.rgb2hex($)),typeof $=="number"?P.hex2string($):$}dropShadowToCSS(){let $=this.normalizeColor(this.dropShadowColor),J=this.dropShadowAlpha,Z=Math.round(Math.cos(this.dropShadowAngle)*this.dropShadowDistance),Q=Math.round(Math.sin(this.dropShadowAngle)*this.dropShadowDistance);$.startsWith("#")&&J<1&&($+=(J*255|0).toString(16).padStart(2,"0"));let q=`${Z}px ${Q}px`;return this.dropShadowBlur>0?`text-shadow: ${q} ${this.dropShadowBlur}px ${$}`:`text-shadow: ${q} ${$}`}reset(){Object.assign(this,_.defaultOptions)}onBeforeDraw(){let{fontsDirty:$}=this;return this.fontsDirty=!1,this.isSafari&&this._fonts.length>0&&$?new Promise((J)=>setTimeout(J,100)):Promise.resolve()}get isSafari(){let{userAgent:$}=B.ADAPTER.getNavigator();return/^((?!chrome|android).)*safari/i.test($)}set fillGradientStops($){console.warn("[HTMLTextStyle] fillGradientStops is not supported by HTMLText")}get fillGradientStops(){return super.fillGradientStops}set fillGradientType($){console.warn("[HTMLTextStyle] fillGradientType is not supported by HTMLText")}get fillGradientType(){return super.fillGradientType}set miterLimit($){console.warn("[HTMLTextStyle] miterLimit is not supported by HTMLText")}get miterLimit(){return super.miterLimit}set trim($){console.warn("[HTMLTextStyle] trim is not supported by HTMLText")}get trim(){return super.trim}set textBaseline($){console.warn("[HTMLTextStyle] textBaseline is not supported by HTMLText")}get textBaseline(){return super.textBaseline}set leading($){console.warn("[HTMLTextStyle] leading is not supported by HTMLText")}get leading(){return super.leading}set lineJoin($){console.warn("[HTMLTextStyle] lineJoin is not supported by HTMLText")}get lineJoin(){return super.lineJoin}};q4.availableFonts={},q4.defaultOptions={align:"left",breakWords:!1,dropShadow:!1,dropShadowAlpha:1,dropShadowAngle:Math.PI/6,dropShadowBlur:0,dropShadowColor:"black",dropShadowDistance:5,fill:"black",fontFamily:"Arial",fontSize:26,fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",letterSpacing:0,lineHeight:0,padding:0,stroke:"black",strokeThickness:0,whiteSpace:"normal",wordWrap:!1,wordWrapWidth:100};var h6=q4;var x8=class _ extends L0{constructor($="",J={}){super(E.EMPTY),this._text=null,this._style=null,this._autoResolution=!0,this.localStyleID=-1,this.dirty=!1,this._updateID=0,this.ownsStyle=!1;let Z=new Image,Q=E.from(Z,{scaleMode:B.SCALE_MODE,resourceOptions:{autoLoad:!1}});Q.orig=new x,Q.trim=new x,this.texture=Q;let q="http://www.w3.org/2000/svg",K="http://www.w3.org/1999/xhtml",V=document.createElementNS(q,"svg"),H=document.createElementNS(q,"foreignObject"),w=document.createElementNS(K,"div"),h=document.createElementNS(K,"style");H.setAttribute("width","10000"),H.setAttribute("height","10000"),H.style.overflow="hidden",V.appendChild(H),this.maxWidth=_.defaultMaxWidth,this.maxHeight=_.defaultMaxHeight,this._domElement=w,this._styleElement=h,this._svgRoot=V,this._foreignObject=H,this._foreignObject.appendChild(h),this._foreignObject.appendChild(w),this._image=Z,this._loadImage=new Image,this._autoResolution=_.defaultAutoResolution,this._resolution=_.defaultResolution??B.RESOLUTION,this.text=$,this.style=J}measureText($){let{text:J,style:Z,resolution:Q}=Object.assign({text:this._text,style:this._style,resolution:this._resolution},$);Object.assign(this._domElement,{innerHTML:J,style:Z.toCSS(Q)}),this._styleElement.textContent=Z.toGlobalCSS(),document.body.appendChild(this._svgRoot);let q=this._domElement.getBoundingClientRect();this._svgRoot.remove();let{width:K,height:V}=q;(K>this.maxWidth||V>this.maxHeight)&&console.warn("[HTMLText] Large expanse of text, increase HTMLText.maxWidth or HTMLText.maxHeight property.");let H=Math.min(this.maxWidth,Math.ceil(K)),w=Math.min(this.maxHeight,Math.ceil(V));return this._svgRoot.setAttribute("width",H.toString()),this._svgRoot.setAttribute("height",w.toString()),J!==this._text&&(this._domElement.innerHTML=this._text),Z!==this._style&&(Object.assign(this._domElement,{style:this._style?.toCSS(Q)}),this._styleElement.textContent=this._style?.toGlobalCSS()),{width:H+Z.padding*2,height:w+Z.padding*2}}async updateText($=!0){let{style:J,_image:Z,_loadImage:Q}=this;if(this.localStyleID!==J.styleID&&(this.dirty=!0,this.localStyleID=J.styleID),!this.dirty&&$)return;let{width:q,height:K}=this.measureText();Z.width=Q.width=Math.ceil(Math.max(1,q)),Z.height=Q.height=Math.ceil(Math.max(1,K)),this._updateID++;let V=this._updateID;await new Promise((H)=>{Q.onload=async()=>{if(V<this._updateID){H();return}await J.onBeforeDraw(),Z.src=Q.src,Q.onload=null,Q.src="",this.updateTexture(),H()};let w=new XMLSerializer().serializeToString(this._svgRoot);Q.src=`data:image/svg+xml;charset=utf8,${encodeURIComponent(w)}`})}get source(){return this._image}updateTexture(){let{style:$,texture:J,_image:Z,resolution:Q}=this,{padding:q}=$,{baseTexture:K}=J;J.trim.width=J._frame.width=Z.width/Q,J.trim.height=J._frame.height=Z.height/Q,J.trim.x=-q,J.trim.y=-q,J.orig.width=J._frame.width-q*2,J.orig.height=J._frame.height-q*2,this._onTextureUpdate(),K.setRealSize(Z.width,Z.height,Q),this.dirty=!1}_render($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0),this.updateText(!0),super._render($)}_renderCanvas($){this._autoResolution&&this._resolution!==$.resolution&&(this._resolution=$.resolution,this.dirty=!0),this.updateText(!0),super._renderCanvas($)}getLocalBounds($){return this.updateText(!0),super.getLocalBounds($)}_calculateBounds(){this.updateText(!0),this.calculateVertices(),this._bounds.addQuad(this.vertexData)}_onStyleChange(){this.dirty=!0}destroy($){typeof $=="boolean"&&($={children:$}),$=Object.assign({},_.defaultDestroyOptions,$),super.destroy($);let J=null;this.ownsStyle&&this._style?.cleanFonts(),this._style=J,this._svgRoot?.remove(),this._svgRoot=J,this._domElement?.remove(),this._domElement=J,this._foreignObject?.remove(),this._foreignObject=J,this._styleElement?.remove(),this._styleElement=J,this._loadImage.src="",this._loadImage.onload=null,this._loadImage=J,this._image.src="",this._image=J}get width(){return this.updateText(!0),Math.abs(this.scale.x)*this._image.width/this.resolution}set width($){this.updateText(!0);let J=P.sign(this.scale.x)||1;this.scale.x=J*$/this._image.width/this.resolution,this._width=$}get height(){return this.updateText(!0),Math.abs(this.scale.y)*this._image.height/this.resolution}set height($){this.updateText(!0);let J=P.sign(this.scale.y)||1;this.scale.y=J*$/this._image.height/this.resolution,this._height=$}get style(){return this._style}set style($){this._style!==$&&($=$||{},$ instanceof h6?(this.ownsStyle=!1,this._style=$):$ instanceof g0?(console.warn("[HTMLText] Cloning TextStyle, if this is not what you want, use HTMLTextStyle"),this.ownsStyle=!0,this._style=h6.from($)):(this.ownsStyle=!0,this._style=new h6($)),this.localStyleID=-1,this.dirty=!0)}get text(){return this._text}set text($){$=String($===""||$===null||$===void 0?" ":$),$=this.sanitiseText($),this._text!==$&&(this._text=$,this.dirty=!0)}get resolution(){return this._resolution}set resolution($){this._autoResolution=!1,this._resolution!==$&&(this._resolution=$,this.dirty=!0)}sanitiseText($){return $.replace(/<br>/gi,"<br/>").replace(/<hr>/gi,"<hr/>").replace(/&nbsp;/gi,"&#160;")}};x8.defaultDestroyOptions={texture:!0,children:!1,baseTexture:!0},x8.defaultMaxWidth=2024,x8.defaultMaxHeight=2024,x8.defaultAutoResolution=!0;var QK={color:16777215,alpha:1};class m8{app=null;root=null;state;stack=[];texture_cache=new Map;gradient_texture_cache=new Map;text_texture_cache=new Map;_width=0;_height=0;_dpr=1;is_initialized=!1;context_lost_listener=null;context_restored_listener=null;get width(){return this._width}get height(){return this._height}initialize(_,$=!0){this.dispose(),this.ensure_sprite_texture_limit(),this._dpr=$?window.devicePixelRatio||1:1;let J=_.clientWidth||_.width,Z=_.clientHeight||_.height;this.app=new U8({view:_,width:J,height:Z,backgroundAlpha:0,antialias:!0,autoDensity:!0,resolution:this._dpr,clearBeforeRender:!0}),this.app.ticker.stop(),p.defaultOptions.scaleMode=y0.LINEAR;let Q=this.app.view;this.context_lost_listener=(q)=>{q.preventDefault()},this.context_restored_listener=()=>{this.ensure_sprite_texture_limit()},Q.addEventListener("webglcontextlost",this.context_lost_listener,{passive:!1}),Q.addEventListener("webglcontextrestored",this.context_restored_listener),this.root=new q0,this.app.stage.addChild(this.root),this._width=J,this._height=Z,this.reset_state(),this.is_initialized=!0}begin_frame(){this.clear()}end_frame(){if(!this.app)return;this.app.renderer.render(this.app.stage)}clear(){if(!this.root)return;let _=this.root.removeChildren();for(let $=0;$<_.length;$++)_[$].destroy({children:!0});this.reset_state()}resize(_,$){if(!this.app)return;this._width=_,this._height=$,this._dpr=window.devicePixelRatio||1,this.app.renderer.resolution=this._dpr,this.app.renderer.resize(_,$)}dispose(){if(this.clear_texture_caches(),this.app){let _=this.app.view;if(this.context_lost_listener)_.removeEventListener("webglcontextlost",this.context_lost_listener);if(this.context_restored_listener)_.removeEventListener("webglcontextrestored",this.context_restored_listener);this.app.destroy(!1,{children:!0,texture:!0,baseTexture:!0}),this.app=null}this.root=null,this.stack=[],this.is_initialized=!1,this.context_lost_listener=null,this.context_restored_listener=null}draw_circle(_,$,J,Z,Q,q){let K=this.make_graphics(),V=z_(Z),H=z_(Q);if(Z&&Z!=="transparent")K.beginFill(V.color,V.alpha*this.state.alpha);if(Q&&q&&q>0)K.lineStyle(q,H.color,H.alpha*this.state.alpha);if(K.drawCircle(_,$,J),Z&&Z!=="transparent")K.endFill()}draw_arc(_,$,J,Z,Q,q,K,V=!1){let H=this.make_graphics(),w=z_(q);H.lineStyle(K,w.color,w.alpha*this.state.alpha),H.arc(_,$,J,Z,Q,V)}draw_rect(_,$,J,Z,Q){let q=this.make_graphics(),K=z_(Q);q.beginFill(K.color,K.alpha*this.state.alpha),q.drawRect(_,$,J,Z),q.endFill()}draw_rect_gradient(_,$,J,Z,Q){let q=this.get_or_create_gradient_texture(_,$,J,Z,Q),K=new L0(q);K.alpha=this.state.alpha,K.blendMode=this.state.blend_mode,K.transform.setFromMatrix(this.compose_matrix(_,$,J/q.width,Z/q.height)),this.state.container.addChild(K)}create_linear_gradient(_,$,J,Z,Q){return{type:"linear_gradient",x0:_,y0:$,x1:J,y1:Z,stops:Q}}draw_text(_,$,J,Z,Q,q="left",K="alphabetic"){let V=z_(Q),H=this.get_or_create_text_texture(_,Z,V),w=new L0(H.texture);w.alpha=V.alpha*this.state.alpha,w.blendMode=this.state.blend_mode;let h=0;switch(q){case"center":h=0.5;break;case"right":case"end":h=1;break;default:h=0;break}let z=0;switch(K){case"top":case"hanging":z=0;break;case"middle":z=0.5;break;case"bottom":case"ideographic":z=1;break;default:z=H.ascent/Math.max(1,H.height);break}w.anchor.set(h,z),w.transform.setFromMatrix(this.compose_matrix($,J,1/H.resolution,1/H.resolution)),this.state.container.addChild(w)}begin_path(){this.state.path=[]}move_to(_,$){this.state.path.push({type:"move",x:_,y:$})}line_to(_,$){this.state.path.push({type:"line",x:_,y:$})}draw_line(_,$,J,Z,Q,q){let K=this.make_graphics(),V=z_(Q);K.lineStyle(q,V.color,V.alpha*this.state.alpha),K.moveTo(_,$),K.lineTo(J,Z)}bezier_curve_to(_,$,J,Z,Q,q){let V=this.get_last_path_point();if(!V)return;for(let H=1;H<=24;H++){let w=H/24,h=1-w,z=h*h*h*V.x+3*h*h*w*_+3*h*w*w*J+w*w*w*Q,X=h*h*h*V.y+3*h*h*w*$+3*h*w*w*Z+w*w*w*q;this.state.path.push({type:"line",x:z,y:X})}}quadratic_curve_to(_,$,J,Z){let q=this.get_last_path_point();if(!q)return;for(let K=1;K<=20;K++){let V=K/20,H=1-V,w=H*H*q.x+2*H*V*_+V*V*J,h=H*H*q.y+2*H*V*$+V*V*Z;this.state.path.push({type:"line",x:w,y:h})}}arc_to(_,$,J,Z,Q,q=!1){this.state.path.push({type:"arc",x:_,y:$,radius:J,start:Z,end:Q,ccw:q})}rect(_,$,J,Z){this.state.path.push({type:"rect",x:_,y:$,width:J,height:Z})}clip(){if(!this.root||this.state.path.length===0)return;let _=this.make_graphics();this.apply_path(_,this.state.path);let $=new q0;$.mask=_,this.state.container.addChild(_),this.state.container.addChild($),this.state.container=$,this.state.path=[]}stroke_path(_,$,J="butt",Z="miter"){let Q=this.make_graphics(),q=z_(_);Q.lineStyle($,q.color,q.alpha*this.state.alpha),this.apply_path(Q,this.state.path)}fill_path(_){let $=this.make_graphics(),J=z_(_);$.beginFill(J.color,J.alpha*this.state.alpha),this.apply_path($,this.state.path),$.endFill()}close_path(){this.state.path.push({type:"close"})}save(){this.stack.push({matrix:this.state.matrix.clone(),alpha:this.state.alpha,blend_mode:this.state.blend_mode,container:this.state.container,path:this.state.path.slice()})}restore(){let _=this.stack.pop();if(!_)return;this.state=_}translate(_,$){let J=new o;J.translate(_,$),this.state.matrix.append(J)}scale(_,$){let J=new o;J.scale(_,$),this.state.matrix.append(J)}rotate(_){let $=new o;$.rotate(_),this.state.matrix.append($)}set_alpha(_){this.state.alpha=_}set_shadow(_,$){}set_composite_operation(_){this.state.blend_mode=XK(_)}set_blend_mode(_){switch(_){case"lighter":this.state.blend_mode=d.ADD;return;case"multiply":this.state.blend_mode=d.MULTIPLY;return;case"screen":this.state.blend_mode=d.SCREEN;return;default:this.state.blend_mode=d.NORMAL;return}}draw_image(_,$,J,Z,Q,q){let K=this.get_texture(_.source);if(!K)return;let V=new L0(K);if(V.alpha=this.state.alpha,V.blendMode=this.state.blend_mode,q){let X=z_(q);V.tint=X.color,V.alpha*=X.alpha}let H=Z??_.width??K.width,w=Q??_.height??K.height,h=H/Math.max(1,K.width),z=w/Math.max(1,K.height);V.transform.setFromMatrix(this.compose_matrix($,J,h,z)),this.state.container.addChild(V)}draw_image_part(_,$,J,Z,Q,q,K,V,H){let w=this.get_texture(_.source);if(!w)return;let h=new E(w.baseTexture,new x($,J,Z,Q)),z=new L0(h);z.alpha=this.state.alpha,z.blendMode=this.state.blend_mode,z.transform.setFromMatrix(this.compose_matrix(q,K,V/Math.max(1,Z),H/Math.max(1,Q))),this.state.container.addChild(z)}render_slider_to_image(_,$,J,Z,Q,q=1,K=1,V=null){if(!this.app||_.length<2)return null;let H=KK(_);if(H.length<2)return null;let w=VK(H,Math.max(0.02,$*0.001)),h=1/0,z=1/0,X=-1/0,W=-1/0;for(let L=0;L<w.length;L++){let v=w[L];if(v[0]<h)h=v[0];if(v[0]>X)X=v[0];if(v[1]<z)z=v[1];if(v[1]>W)W=v[1]}let G=1,k=$*G+2;h-=k,z-=k,X+=k,W+=k;let C=Math.ceil((X-h)*Q),Y=Math.ceil((W-z)*Q);if(C<=0||Y<=0)return null;let U=-h,N=-z,I=z_(J),f=z_(Z),y=$*0.9;return{source:this.render_slider_canvas_fallback(w,U,N,$*G,y,I,f,Q,q,K,V,C,Y),width:C,height:Y,min_x:h,min_y:z}}render_slider_canvas_fallback(_,$,J,Z,Q,q,K,V,H,w,h,z,X){let W=Math.max(1,z),G=Math.max(1,X),k=document.createElement("canvas");k.width=W,k.height=G;let C=k.getContext("2d");if(!C)return E.WHITE;C.save(),C.imageSmoothingEnabled=!0,C.imageSmoothingQuality="high",C.scale(V,V),C.translate($,J),C.lineCap="round",C.lineJoin="round";let Y=HK(_),U=()=>{if(Y){C.stroke(Y);return}C.beginPath(),C.moveTo(_[0][0],_[0][1]);for(let j=1;j<_.length;j++)C.lineTo(_[j][0],_[j][1]);C.stroke()},N={color:K.color,alpha:0.5*H},I={color:q.color,alpha:q.alpha*w},f={color:0,alpha:0.25*w},y=hK(N,0.1),D=zK(N,0.22),L=0.078125,v=0.1875,m=(j)=>{let A=V4(j);if(A<=L)return cZ({color:0,alpha:0},f,A/Math.max(0.000001,L));if(A<=v)return I;let i=(A-v)/Math.max(0.000001,1-v),a=Math.pow(V4(i),1.35);return cZ(y,D,a)},F=Math.max(1,Math.floor(_.length/120)),M=Math.max(38,Math.min(62,Math.floor(58/F)));C.globalAlpha=1;for(let j=M;j>=1;j--){let A=j/M,i=Z*2*A,a=1-A,T=m(a);C.strokeStyle=vZ(T),C.lineWidth=Math.max(0.5,i),U()}return C.restore(),E.from(k)}reset_state(){if(!this.root)return;this.state={matrix:new o,alpha:1,blend_mode:d.NORMAL,container:this.root,path:[]},this.stack=[]}make_graphics(){let _=new Z5;return _.blendMode=this.state.blend_mode,_.transform.setFromMatrix(this.state.matrix),this.state.container.addChild(_),_}apply_path(_,$){for(let J=0;J<$.length;J++){let Z=$[J];switch(Z.type){case"move":_.moveTo(Z.x,Z.y);break;case"line":_.lineTo(Z.x,Z.y);break;case"arc":_.arc(Z.x,Z.y,Z.radius,Z.start,Z.end,Z.ccw);break;case"rect":_.drawRect(Z.x,Z.y,Z.width,Z.height);break;case"close":_.closePath();break}}}compose_matrix(_,$,J=1,Z=1){let Q=this.state.matrix.clone(),q=new o;if(q.translate(_,$),Q.append(q),J!==1||Z!==1){let K=new o;K.scale(J,Z),Q.append(K)}return Q}get_last_path_point(){for(let _=this.state.path.length-1;_>=0;_--){let $=this.state.path[_];if($.type==="move"||$.type==="line")return{x:$.x,y:$.y}}return null}get_texture(_){if(!_)return null;if(_ instanceof E)return _;let $=this.texture_cache.get(_);if($)return $;let J=E.from(_);return this.texture_cache.set(_,J),J}get_or_create_gradient_texture(_,$,J,Z,Q){let q=JSON.stringify({x:_,y:$,width:J,height:Z,gradient:Q}),K=this.gradient_texture_cache.get(q);if(K)return K;let V=document.createElement("canvas");V.width=Math.max(1,Math.ceil(J)),V.height=Math.max(1,Math.ceil(Z));let H=V.getContext("2d");if(!H)return E.WHITE;let w=H.createLinearGradient(Q.x0-_,Q.y0-$,Q.x1-_,Q.y1-$);for(let z=0;z<Q.stops.length;z++)w.addColorStop(Q.stops[z].offset,Q.stops[z].color);H.fillStyle=w,H.fillRect(0,0,V.width,V.height);let h=E.from(V);return this.gradient_texture_cache.set(q,h),h}get_or_create_text_texture(_,$,J){let Z=`${_}|${$}|${J.color}`,Q=this.text_texture_cache.get(Z);if(Q)return Q;let q=qK($),K=Math.min(6,Math.max(2,this._dpr*3)),V=document.createElement("canvas"),H=V.getContext("2d");if(!H)return{texture:E.WHITE,width:1,height:1,ascent:1,descent:0,resolution:1};H.font=q.css;let w=H.measureText(_),h=Math.max(1,Math.ceil(w.width||q.size)),z=Math.max(1,Math.ceil(w.actualBoundingBoxAscent||q.size*0.8)),X=Math.max(0,Math.ceil(w.actualBoundingBoxDescent||q.size*0.2)),W=Math.max(1,z+X),G=Math.max(2,Math.ceil(q.size*0.25)),k=h+G*2,C=W+G*2;V.width=Math.ceil(k*K),V.height=Math.ceil(C*K),H.setTransform(1,0,0,1,0,0),H.clearRect(0,0,V.width,V.height),H.scale(K,K),H.font=q.css,H.fillStyle=vZ(J),H.textAlign="center",H.textBaseline="middle",H.fillText(_,k/2,C/2);let U={texture:E.from(V),width:k,height:C,ascent:C/2,descent:C/2,resolution:K};return this.text_texture_cache.set(Z,U),U}clear_texture_caches(){for(let _ of this.texture_cache.values()){if(_===E.WHITE)continue;_.destroy(!0)}this.texture_cache.clear();for(let _ of this.gradient_texture_cache.values())_.destroy(!0);this.gradient_texture_cache.clear();for(let _ of this.text_texture_cache.values())if(_.texture!==E.WHITE)_.texture.destroy(!0);this.text_texture_cache.clear()}ensure_sprite_texture_limit(){if(B.SPRITE_MAX_TEXTURES<=0)B.SPRITE_MAX_TEXTURES=16}}var qK=(_)=>{let $=_.trim().split(/\s+/),J=14,Z="normal",Q=-1;for(let V=0;V<$.length;V++)if($[V].endsWith("px")){J=Number.parseFloat($[V].replace("px","")),Q=V;break}if(Q>0)Z=$[Q-1];let q=Q>=0?$.slice(Q+1).join(" "):'"Trebuchet MS", Verdana, Arial, sans-serif';return{css:`${Z} ${Number.isFinite(J)?J:14}px ${q||'"Trebuchet MS", Verdana, Arial, sans-serif'}`,size:Number.isFinite(J)?J:14}},z_=(_)=>{if(!_||_==="transparent")return{color:16777215,alpha:0};let $=_.trim().toLowerCase();if($.startsWith("#")){let Z=$.slice(1);if(Z.length===3){let Q=Number.parseInt(Z[0]+Z[0],16),q=Number.parseInt(Z[1]+Z[1],16),K=Number.parseInt(Z[2]+Z[2],16);return{color:Q<<16|q<<8|K,alpha:1}}if(Z.length===6||Z.length===8){let Q=Number.parseInt(Z.slice(0,6),16);if(Z.length===8){let q=Number.parseInt(Z.slice(6,8),16)/255;return{color:Q,alpha:q}}return{color:Q,alpha:1}}}let J=$.match(/^rgba?\(([^)]+)\)$/);if(J){let Z=J[1].split(",").map((Q)=>Q.trim());if(Z.length>=3){let Q=K4(Number.parseFloat(Z[0])),q=K4(Number.parseFloat(Z[1])),K=K4(Number.parseFloat(Z[2])),V=Z.length>=4?V4(Number.parseFloat(Z[3])):1;return{color:Q<<16|q<<8|K,alpha:V}}}if($==="white")return{color:16777215,alpha:1};if($==="black")return{color:0,alpha:1};return QK},vZ=(_)=>{let $=_.color>>16&255,J=_.color>>8&255,Z=_.color&255;return`rgba(${$},${J},${Z},${_.alpha})`},KK=(_)=>{if(_.length<=2)return _;let $=[_[0]],J=0.000000000001;for(let Z=1;Z<_.length;Z++){let Q=$[$.length-1],q=_[Z],K=q[0]-Q[0],V=q[1]-Q[1];if(K*K+V*V<=J)continue;$.push(q)}if($.length<2)return[_[0],_[_.length-1]];return $},VK=(_,$)=>{if(_.length<=2)return _;let J=[_[0]],Z=$*$;for(let K=1;K<_.length-1;K++){let V=J[J.length-1],H=_[K],w=_[K+1],h=H[0]-V[0],z=H[1]-V[1],X=h*h+z*z;if(X<Z)continue;let W=H[0]-V[0],G=H[1]-V[1],k=w[0]-H[0],C=w[1]-H[1],Y=Math.hypot(W,G),U=Math.hypot(k,C);if(Y>0&&U>0){if((W*k+G*C)/(Y*U)>0.9985&&X<Z*4)continue}J.push(H)}let Q=_[_.length-1],q=J[J.length-1];if(q[0]!==Q[0]||q[1]!==Q[1])J.push(Q);return J.length>=2?J:[_[0],Q]},HK=(_)=>{if(typeof Path2D>"u"||_.length<2)return null;let $=new Path2D;$.moveTo(_[0][0],_[0][1]);for(let J=1;J<_.length;J++)$.lineTo(_[J][0],_[J][1]);return $},wK=(_,$,J)=>{let Z=Math.max(0,Math.min(1,J)),Q=_.color>>16&255,q=_.color>>8&255,K=_.color&255,V=$>>16&255,H=$>>8&255,w=$&255,h=Math.round(Q+(V-Q)*Z),z=Math.round(q+(H-q)*Z),X=Math.round(K+(w-K)*Z);return{color:h<<16|z<<8|X,alpha:_.alpha}},cZ=(_,$,J)=>{let Z=Math.max(0,Math.min(1,J)),Q=_.color>>16&255,q=_.color>>8&255,K=_.color&255,V=$.color>>16&255,H=$.color>>8&255,w=$.color&255,h=Math.round(Q+(V-Q)*Z),z=Math.round(q+(H-q)*Z),X=Math.round(K+(w-K)*Z);return{color:h<<16|z<<8|X,alpha:_.alpha+($.alpha-_.alpha)*Z}},hK=(_,$)=>wK(_,0,$),zK=(_,$)=>{let J=Math.max(0,$*0.5),Z=_.color>>16&255,Q=_.color>>8&255,q=_.color&255,K=Math.min(255,Math.round(Z*(1+0.5*J)+255*J)),V=Math.min(255,Math.round(Q*(1+0.5*J)+255*J)),H=Math.min(255,Math.round(q*(1+0.5*J)+255*J));return{color:K<<16|V<<8|H,alpha:_.alpha}},V4=(_)=>{if(!Number.isFinite(_))return 1;if(_<0)return 0;if(_>1)return 1;return _},K4=(_)=>{if(!Number.isFinite(_))return 0;if(_<0)return 0;if(_>255)return 255;return Math.round(_)},XK=(_)=>{switch(_){case"lighter":return d.ADD;case"multiply":return d.MULTIPLY;case"screen":return d.SCREEN;default:return d.NORMAL}};var H4=(_)=>{return new m8};var w4={min:1800,mid:1200,max:450};var GK=(_,$)=>{if(_>5)return $.mid+($.max-$.mid)*(_-5)/5;if(_<5)return $.mid+($.mid-$.min)*(_-5)/5;return $.mid},yZ=(_,$)=>{if(Math.sign(_-$.mid)===Math.sign($.max-$.mid))return(_-$.mid)/($.max-$.mid)*5+5;return(_-$.mid)/($.mid-$.min)*5+5},u8=(_)=>GK(_,w4),SZ=(_)=>400*Math.min(1,_/450),WK=(_)=>{return(1-0.7*((_-5)/5))/2*1.00041},TZ=(_)=>WK(_)*64;var h4={name:"Hard Rock",acronym:"HR",apply_to_difficulty(_){_.cs=Math.min(_.cs*1.3,10),_.ar=Math.min(_.ar*1.4,10),_.od=Math.min(_.od*1.4,10),_.hp=Math.min(_.hp*1.4,10)}};var z4={name:"Easy",acronym:"EZ",apply_to_difficulty(_){_.cs*=0.5,_.ar*=0.5,_.od*=0.5,_.hp*=0.5}};var kK={name:"Double Time",acronym:"DT",get_rate_multiplier:()=>1.5},CK={name:"Nightcore",acronym:"NC",get_rate_multiplier:()=>1.5};var NK={name:"Half Time",acronym:"HT",get_rate_multiplier:()=>0.75};var YK=0.4,UK=0.3,IK={name:"Hidden",acronym:"HD"};var bK=(_)=>{if(_&(c.DoubleTime|c.Nightcore))return 1.5;if(_&c.HalfTime)return 0.75;return 1},BK=(_,$)=>{if($&c.Easy)z4.apply_to_difficulty(_);if($&c.HardRock)h4.apply_to_difficulty(_)},FK=(_,$)=>{if($===1)return _;let J=u8(_)/$;return yZ(J,w4)},dZ=(_,$,J,Z,Q)=>{let q={cs:_,ar:$,od:J,hp:Z};BK(q,Q);let K=bK(Q);return q.ar=FK(q.ar,K),q};var t_=(_,$)=>[_[0]+$[0],_[1]+$[1]],$_=(_,$)=>[_[0]-$[0],_[1]-$[1]],gZ=(_,$)=>[_[0]*$,_[1]*$];var X_=(_)=>Math.sqrt(_[0]*_[0]+_[1]*_[1]);var n8=(_,$)=>X_($_(_,$));var D1=(_,$,J)=>_+($-_)*J,O_=(_,$,J)=>[D1(_[0],$[0],J),D1(_[1],$[1],J)],n=(_,$,J)=>Math.min(J,Math.max($,_));var X4={1:["#d5bc00"],2:["#ffffff","#ffffff"],3:["#ffffff","#d5bc00","#ffffff"],4:["#ffffff","#dc8dba","#dc8dba","#ffffff"],5:["#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff"],6:["#ffffff","#dc8dba","#ffffff","#ffffff","#dc8dba","#ffffff"],7:["#ffffff","#dc8dba","#ffffff","#d5bc00","#ffffff","#dc8dba","#ffffff"],8:["#d5bc00","#ffffff","#dc8dba","#ffffff","#d5bc00","#ffffff","#dc8dba","#ffffff"],9:["#ffffff","#dc8dba","#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff","#dc8dba","#ffffff"],10:["#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff","#ffffff","#dc8dba","#d5bc00","#dc8dba","#ffffff"]},G4={legacy_version:2.7,combo_colors:["0,185,0","7, 105, 227","224, 4, 38","227, 171, 2"],circle_border_width:0.12,hit_circle_opacity:1,hit_circle_overlay_above_number:!0,hit_circle_prefix:"default",hit_circle_overlap:-2,enable_approach_circle:!0,approach_circle_width:0.1,approach_circle_opacity:0.5,approach_circle_use_combo_color:!0,enable_hitburst:!0,hitburst_duration:180,hitburst_scale:1.2,hitburst_glow_enabled:!1,hitburst_glow_use_combo_color:!0,hitburst_glow_opacity:0.3,slider_body_opacity:0.9,slider_border_opacity:1,slider_tick_opacity:0.75,slider_tick_size:0.1,slider_render_scale:2,follow_circle_factor:1.5,follow_circle_width:4,follow_circle_opacity:0.5,follow_circle_color:"#d3d3d3ff",follow_circle_use_combo_color:!1,slider_ball_color:"#ffffff",slider_ball_opacity:1,enable_slider_ball:!0,slider_ball_flip:!1,allow_slider_ball_tint:!0,slider_ball_frames:10,animation_framerate:-1,follow_point_width:2,follow_point_shape:"line",follow_point_mode:"full",follow_point_length:12,follow_point_line_gap:0,spinner_size:180,spinner_center_size:10,spinner_background_color:"rgba(100,100,100,1)",mania_lane_width:30,mania_note_height:15,mania_hit_position:364,mania_lane_spacing:1,mania_lane_colors:X4,default_font:'"Trebuchet MS", Verdana, Arial, sans-serif',hit_animation_duration:240,hit_animation_scale:1.2,enable_hit_animations:!0,enable_follow_circle_animations:!0},W4=(_)=>{if(!_)return{...G4};return{...G4,..._,mania_lane_colors:_.mania_lane_colors?{...X4,..._.mania_lane_colors}:X4}},j_=(_,$,J=1)=>{let Z=_.combo_colors[$%_.combo_colors.length];return OK(Z,J)},q5=(_,$,J)=>{let Z=_.mania_lane_colors[$]??_.mania_lane_colors[4];return Z[J%Z.length]??"#ffffff"},OK=(_,$)=>{let J=_.trim();if(J.includes(",")&&!J.startsWith("rgb"))return`rgba(${J},${$})`;let Z=J.match(/^rgb\(([^)]+)\)$/i);if(Z)return`rgba(${Z[1]},${$})`;let Q=J.match(/^rgba\(([^)]+)\)$/i);if(Q){let q=Q[1].split(",").map((K)=>K.trim());if(q.length>=3)return`rgba(${q[0]},${q[1]},${q[2]},${$})`}if(J.startsWith("#")){let q=J.slice(1);if(q.length===3){let K=Number.parseInt(q[0]+q[0],16),V=Number.parseInt(q[1]+q[1],16),H=Number.parseInt(q[2]+q[2],16);return`rgba(${K},${V},${H},${$})`}if(q.length===6||q.length===8){let K=Number.parseInt(q.slice(0,2),16),V=Number.parseInt(q.slice(2,4),16),H=Number.parseInt(q.slice(4,6),16);return`rgba(${K},${V},${H},${$})`}}return J};var Z0={None:(_)=>_,Out:(_)=>1-Math.pow(1-_,2),In:(_)=>_*_,InOut:(_)=>_<0.5?2*_*_:1-Math.pow(-2*_+2,2)/2,OutCubic:(_)=>1-Math.pow(1-_,3),InCubic:(_)=>_*_*_,OutQuad:(_)=>1-Math.pow(1-_,2),InQuad:(_)=>_*_,OutQuint:(_)=>1-Math.pow(1-_,5),InQuint:(_)=>_*_*_*_*_,OutElastic:(_)=>{let $=2*Math.PI/3;return _===0?0:_===1?1:Math.pow(2,-10*_)*Math.sin((_*10-0.75)*$)+1}};class k4{transforms=[];add(_,$,J,Z,Q,q=Z0.None){return this.transforms.push({property:_,start_value:$,end_value:J,start_time:Z,end_time:Z+Q,easing:q}),this}then(){return this}get_value(_,$,J){let Z=J;for(let Q of this.transforms){if(Q.property!==_)continue;if($<Q.start_time)continue;if($>=Q.end_time)Z=Q.end_value;else{let q=($-Q.start_time)/(Q.end_time-Q.start_time),K=Q.easing(q);Z=Q.start_value+(Q.end_value-Q.start_value)*K}}return Z}clear(){this.transforms=[]}}class K5{backend;skin;hit_object;config;alpha=1;scale=1;rotation=0;x=0;y=0;armed_state=0;transforms=new k4;life_time_start=0;life_time_end=0;constructor(_,$){this.hit_object=_,this.config=$,this.backend=$.backend,this.skin=$.skin;let J=_.data;this.x=J.pos[0],this.y=J.pos[1],this.apply_defaults()}apply_defaults(){let{hit_object:_,config:$}=this,J=_.time-$.preempt;this.life_time_start=J,this.life_time_end=_.end_time+800}is_alive(_){return _>=this.life_time_start&&_<=this.life_time_end}update(_){this.alpha=this.transforms.get_value("alpha",_,1),this.scale=this.transforms.get_value("scale",_,1),this.rotation=this.transforms.get_value("rotation",_,0),this.update_state(_)}update_state(_){if(this.armed_state===0&&_>=this.hit_object.time)this.armed_state=1,this.on_hit(_)}on_hit(_){}render_body_pass(_){}render_head_pass(_){}dispose(){}get start_time(){return this.hit_object.time}get end_time(){return this.hit_object.end_time}get combo_number(){return this.hit_object.combo_number??0}get combo_count(){return this.hit_object.combo_count??1}get position(){return[this.x,this.y]}}var C4=1.04;class z6{state={circle_alpha:0,circle_scale:1,number_alpha:1};update(_,$,J){let Z=$-J.preempt;if(_<Z){this.reset_pre_hit_state();return}if(_<$){this.update_pre_hit(_,Z,$,J);return}let Q=l8($,Z,$,J);this.update_post_hit(_,$,J,Q)}render(_,$,J,Z,Q,q,K,V,H=!0,w=!0){let{circle_alpha:h,circle_scale:z,number_alpha:X}=this.state;if(h<=0.01)return;if(h>0.01){_.set_alpha(h*$.hit_circle_opacity);let W=V?.circle??K?.hitcircle,G=V?.overlay??K?.hitcircleoverlay,k=$.hit_circle_overlay_above_number,C=!!W;if(W){let Y=Z*2*z*C4;_.draw_image(W,J[0]-Y/2,J[1]-Y/2,Y,Y,Q)}else{let Y=Z*$.circle_border_width*z,U=Z*(1-$.circle_border_width/2)*z;_.draw_circle(J[0],J[1],U,Q,"rgba(255,255,255,1)",Y)}if(w&&!k&&G&&C){_.set_alpha(h*$.hit_circle_opacity);let Y=Z*2*z*C4;_.draw_image(G,J[0]-Y/2,J[1]-Y/2,Y,Y)}if(H&&X>0.01){if(_.set_alpha(X*$.hit_circle_opacity),!jK(_,J,Z,z,q,K)){let U=Z*0.7*z,N=$.default_font??'"Trebuchet MS", Verdana, Arial, sans-serif',I=`600 ${U}px ${N}`;_.draw_text(String(q),J[0],J[1],I,"rgba(255,255,255,1)","center","middle")}}if(w&&k&&G&&C){_.set_alpha(h*$.hit_circle_opacity);let Y=Z*2*z*C4;_.draw_image(G,J[0]-Y/2,J[1]-Y/2,Y,Y)}_.set_alpha(1)}_.set_alpha(1)}get circle_alpha(){return this.state.circle_alpha}reset_pre_hit_state(){this.state.circle_alpha=0,this.state.circle_scale=1,this.state.number_alpha=1}update_pre_hit(_,$,J,Z){let Q=l8(_,$,J,Z);this.state.circle_alpha=Q,this.state.circle_scale=1,this.state.number_alpha=Q}update_post_hit(_,$,J,Z){let Q=_-$,{skin:q}=J,K=Math.max(110,q.hit_animation_duration*0.62),V=n(Q/K,0,1),H=h0(J.mods,c.Hidden)?n(Z,0,1):n(Math.max(Z,0.25),0,1);this.state.circle_alpha=H*(1-Z0.OutQuad(V)),this.state.circle_scale=D1(1,Math.max(q.hit_animation_scale,1.34),Z0.OutCubic(V)),this.state.number_alpha=this.state.circle_alpha*(1-0.55*V)}}var l8=(_,$,J,Z)=>{let q=n((_-$)/Z.fade_in,0,1);if(h0(Z.mods,c.Hidden)){let K=J-Z.preempt+Z.fade_in,V=Z.preempt*0.3;if(_>K){let H=n((_-K)/V,0,1);q*=1-H}}return q},jK=(_,$,J,Z,Q,q)=>{let K=q?.combo_digits;if(!K||K.length<10)return!1;let V=String(Q),H=128,w=0.8,h=J*2/H*w*Z,z=(q?.combo_overlap??-2)*h,X=[],W=[],G=0;for(let C=0;C<V.length;C++){let Y=V.charCodeAt(C)-48,U=K[Y];if(!U||U.height<=0)return!1;let N=U.width*h,I=U.height*h;if(X.push(N),W.push(I),G+=N,C<V.length-1)G-=z}let k=$[0]-G/2;for(let C=0;C<V.length;C++){let Y=V.charCodeAt(C)-48,U=K[Y],N=X[C],I=W[C],f=$[1]-I/2;if(_.draw_image(U,k,f,N,I),k+=N,C<V.length-1)k-=z}return!0};var LK=0.8;class N4{state={alpha:0,scale:1};update(_,$,J){if(!J.skin.enable_hitburst){this.state.alpha=0,this.state.scale=1;return}if(_<$){this.state.alpha=0,this.state.scale=1;return}let Z=$-J.preempt,Q=l8($,Z,$,J),q=h0(J.mods,c.Hidden)?n(Q,0,1):n(Math.max(Q,0.25),0,1),K=_-$,V=Math.max(44,J.skin.hitburst_duration*0.52),H=n(K/V,0,1),w=1-Z0.OutQuint(H),h=Math.max(24,V*0.3),z=n(K/h,0,1),X=Z0.OutQuad(z)*w;this.state.alpha=h0(J.mods,c.Hidden)?X*q*0.78:X*0.78;let W=Math.max(1,J.skin.hitburst_scale*LK),G=Math.max(24,V*0.2),k=Math.min(1.06,W);if(K<=G){let C=n(K/G,0,1);this.state.scale=D1(0.96,k,Z0.OutCubic(C))}else{let C=n((K-G)/Math.max(1,V-G),0,1);this.state.scale=D1(k,W,Z0.OutCubic(C))}}render(_,$,J,Z,Q){if(!$.enable_hitburst)return;if(this.state.alpha<=0.01)return;if(_.set_alpha(this.state.alpha),_.draw_circle(J[0],J[1],Z*this.state.scale,"rgba(255,255,255,1)","transparent",0),$.hitburst_glow_enabled){_.save(),_.set_blend_mode("lighter"),_.set_alpha(this.state.alpha*$.hitburst_glow_opacity);let q=$.hitburst_glow_use_combo_color?Q:$.hitburst_glow_color??Q;_.draw_circle(J[0],J[1],Z*this.state.scale*1.08,q,"transparent",0),_.restore()}}}class o8 extends K5{visual=new z6;hitburst=new N4;constructor(_,$){super(_,$)}update(_){super.update(_),this.visual.update(_,this.hit_object.time,this.config),this.hitburst.update(_,this.hit_object.time,this.config)}render(_){let{backend:$,skin:J,config:Z}=this,{radius:Q}=Z,q=this.position,K=j_(J,this.combo_number,1);this.visual.render($,J,q,Q,K,this.combo_count,Z.skin_elements,void 0,!0,!1),this.hitburst.render($,J,q,Q,K)}}var s8=(_)=>{let{start_time:$,span_duration:J,span_count:Z,length:Q,tick_distance:q,min_distance_from_end:K,get_position_at_progress:V}=_,H=[],w=[];if(Q<=0||J<=0||Z<=0)return{ticks:H,repeats:w};let z=Math.min(1e5,Q),X=Math.min(Math.max(q,0),z),W=Math.max(0,Math.min(K,z));for(let G=0;G<Z;G++){let k=$+G*J,C=G%2===1;if(X>0){let Y=DK(G,k,J,C,z,X,W,V);if(C)Y.reverse();H.push(...Y)}if(G<Z-1){let Y=(G+1)%2;w.push({pos:V(Y),time:k+J,repeat_index:G,path_progress:Y})}}return H.sort((G,k)=>G.time-k.time),{ticks:H,repeats:w}},DK=(_,$,J,Z,Q,q,K,V)=>{let H=[];for(let w=q;w<=Q;w+=q){if(w>=Q-K)break;let h=w/Q,z=Z?1-h:h;H.push({pos:V(h),time:$+z*J,span_index:_,path_progress:h})}return H};var Y4=240,U4=1.3,I4=35,AK=250,PK=300,X6=150,RK=X6*4,pZ=0.96;class G6 extends K5{slider_data;position_path;render_path;path_length;span_duration;body_alpha=0;head_visual=new z6;ball_alpha=0;ball_position;ball_reverse=!1;slider_ball_frame_delay=16.666666666666668;follow_alpha=0;follow_scale=1;ticks=[];repeats=[];tick_distance;min_distance_from_end;cached_texture=null;cached_scale=1;tick_entries=[];tick_entries_by_start=[];constructor(_,$,J,Z,Q,q){super(_,$);this.slider_data=_.data;let K=Math.max(0.2,$.radius*0.01);this.position_path=J,this.render_path=this.resample_path(J,K),this.span_duration=Z,this.tick_distance=Q,this.min_distance_from_end=q;let V=this.calculate_path_length();this.path_length=this.slider_data.distance>0?this.slider_data.distance:V,this.ball_position=this.slider_data.pos,this.slider_ball_frame_delay=this.compute_slider_ball_frame_delay(),this.build_nested_objects(),this.life_time_end=_.end_time+Y4}build_nested_objects(){let{slider_data:_,path_length:$,span_duration:J,hit_object:Z}=this,Q=Math.max(1,_.repetitions),q=1e5,K=Math.min(1e5,_.distance>0?_.distance:$),V=n(this.tick_distance,0,K);if(K<=0||J<=0){this.ticks=[],this.repeats=[];return}let H=s8({start_time:Z.time,span_duration:J,span_count:Q,length:K,tick_distance:V,min_distance_from_end:this.min_distance_from_end,get_position_at_progress:(w)=>this.get_position_at_progress(w)});this.ticks=H.ticks,this.repeats=H.repeats,this.build_tick_entries()}calculate_path_length(){let _=0;for(let $=1;$<this.position_path.length;$++)_+=X_($_(this.position_path[$],this.position_path[$-1]));return _}resample_path(_,$){if(_.length<2)return _.slice();let J=[_[0]],Z=0,Q=[];for(let h=1;h<_.length;h++){let z=X_($_(_[h],_[h-1]));Q.push(z),Z+=z}if(Z<=0)return J;let q=$,K=0,V=0;while(q<Z&&V<Q.length){let h=Q[V],z=_[V],X=_[V+1];if(h>0&&K+h>=q){let W=(q-K)/h;J.push(O_(z,X,W)),q+=$}else K+=h,V++}let H=_[_.length-1],w=J[J.length-1];if(w[0]!==H[0]||w[1]!==H[1])J.push(H);return J}update(_){super.update(_),this.calculate_ball_position(_),this.calculate_opacities(_),this.head_visual.update(_,this.hit_object.time,this.config)}calculate_ball_position(_){let{hit_object:$,span_duration:J}=this,Z=300,Q=300,q=2.4;if(_<$.time){this.ball_alpha=0,this.follow_alpha=0,this.follow_scale=1;return}if(_<=$.end_time){let w=_-$.time,h=Math.max(1,this.slider_data.repetitions),z=Math.min(Math.floor(w/J),h-1),X=n((w-z*J)/J,0,1),W=z%2===1?1-X:X;this.ball_reverse=z%2===1,this.ball_position=this.get_position_at_progress(W),this.ball_alpha=1;let G=n(w/300,0,1),k=Z0.OutQuint(G);this.follow_alpha=k,this.follow_scale=1+1.4*k;return}let K=_-$.end_time,V=n(K/300,0,1),H=Z0.OutQuint(V);this.ball_alpha=1-H,this.follow_alpha=1-H,this.follow_scale=2.4-1.4*H}get_position_at_progress(_){let $=_*this.path_length;return this.get_position_at_length($)}get_position_at_length(_){let $=0;for(let J=1;J<this.position_path.length;J++){let Z=X_($_(this.position_path[J],this.position_path[J-1]));if($+Z>=_){let Q=(_-$)/Z;return O_(this.position_path[J-1],this.position_path[J],Q)}$+=Z}return this.position_path[this.position_path.length-1]}calculate_opacities(_){let{hit_object:$,config:J}=this,Z=$.time-J.preempt,Q=$.time;if(h0(J.mods,c.Hidden)){let q=Q-J.preempt+J.fade_in;if(_<Z)this.body_alpha=0;else if(_<q)this.body_alpha=n((_-Z)/J.fade_in,0,1);else if(_<=$.end_time){let K=Math.max(1,$.end_time-q);this.body_alpha=1-n((_-q)/K,0,1)}else this.body_alpha=0}else if(_<Z)this.body_alpha=0;else if(_<Q)this.body_alpha=n((_-Z)/J.fade_in,0,1);else if(_<=$.end_time)this.body_alpha=1;else this.body_alpha=1-n((_-$.end_time)/Y4,0,1)}compute_slider_ball_frame_delay(){if(this.skin.animation_framerate>0)return 1000/this.skin.animation_framerate;let _=this.path_length/Math.max(1,this.span_duration),$=16.666666666666668;if(_<=0)return $;return Math.max(0.15/_*$,$)}render(_){if(this.body_alpha<=0&&this.head_visual.circle_alpha<=0&&this.ball_alpha<=0)return;this.render_body(_),this.render_head(),this.render_ball(_)}render_body_pass(_){this.render_body(_)}render_head_pass(_){this.render_head(),this.render_reverse_arrows(_),this.render_ball(_)}render_body(_){if(this.body_alpha<=0.01||this.render_path.length<2)return;let{backend:$}=this;if(this.prepare_body_cache(),this.cached_texture&&this.cached_texture.min_x!==void 0&&this.cached_texture.min_y!==void 0){let J=this.cached_scale;$.set_alpha(this.body_alpha),$.draw_image(this.cached_texture,this.cached_texture.min_x,this.cached_texture.min_y,this.cached_texture.width/J,this.cached_texture.height/J),$.set_alpha(1)}else this.render_live_body_fallback();this.render_ticks(_)}render_live_body_fallback(){if(this.render_path.length<2)return;let{backend:_,config:$,skin:J}=this,Z=J.slider_border_color??"rgba(255,255,255,1)",Q=J.slider_track_override??j_(J,this.combo_number,1),q=$.radius*2,K=$.radius*1.8;this.build_live_body_path(),_.save(),_.set_alpha(this.body_alpha*J.slider_border_opacity),_.stroke_path(Z,q,"round","round"),_.restore(),this.build_live_body_path(),_.save(),_.set_alpha(this.body_alpha*J.slider_body_opacity),_.stroke_path(Q,K,"round","round"),_.restore()}build_live_body_path(){let{backend:_}=this;_.begin_path(),_.move_to(this.render_path[0][0],this.render_path[0][1]);for(let $=1;$<this.render_path.length;$++)_.line_to(this.render_path[$][0],this.render_path[$][1])}prepare_body_cache(){if(this.render_path.length<2)return;let{backend:_,skin:$,config:J}=this,{radius:Z}=J,Q=Math.min(5,(J.scale??1)*($.slider_render_scale||1));if(!this.cached_texture||this.cached_scale!==Q){let q=$.slider_track_override??j_($,this.combo_number,1),K=$.slider_border_color??"rgba(255,255,255,1)",V=Q;this.cached_texture=_.render_slider_to_image(this.render_path,Z,K,q,V,$.slider_body_opacity,$.slider_border_opacity,null),this.cached_scale=Q}}has_body_cache(){return this.cached_texture!=null}get_body_cache_bytes(){if(!this.cached_texture)return 0;return Math.max(0,Math.floor(this.cached_texture.width)*Math.floor(this.cached_texture.height)*4)}release_body_cache(){let _=this.cached_texture?.source;if(_?.destroy)_.destroy(!0);else if(this.cached_texture?.source instanceof HTMLCanvasElement)this.cached_texture.source.width=0,this.cached_texture.source.height=0;this.cached_texture=null}estimate_complexity(){return this.render_path.length+this.ticks.length*8+this.repeats.length*16}dispose(){this.release_body_cache(),this.position_path=[],this.render_path=[],this.ticks=[],this.repeats=[],this.tick_entries=[],this.tick_entries_by_start=[]}render_ticks(_){if(this.tick_entries_by_start.length===0)return;let{backend:$,config:J}=this,{radius:Z}=J,Q=Z*0.12,q=h0(J.mods,c.Hidden);for(let K of this.tick_entries_by_start){let V=K.tick,H=_-K.appear_time;if(H<0)continue;if(K.visible_end<_)continue;let w=n(H/X6,0,1);if(q&&K.preempt>0){let G=Math.min(K.preempt-X6,1000);if(G>0){let k=V.time-G;if(_>=k){let C=n((_-k)/G,0,1);w*=1-C}}}else if(_>V.time){let G=n((_-V.time)/X6,0,1);w*=1-G}w*=this.body_alpha;let h=n(H/RK,0,1),X=0.5+0.5*this.ease_out_elastic_half(h),W=Q*X;if(w>0.01){$.set_alpha(w);let G=this.config.skin_elements?.sliderscorepoint;if(G){let k=W*2;$.draw_image(G,V.pos[0]-W,V.pos[1]-W,k,k)}else $.draw_circle(V.pos[0],V.pos[1],W,"rgba(255,255,255,0.8)","transparent",0)}}$.set_alpha(1)}build_tick_entries(){let{hit_object:_,config:$}=this,J=h0($.mods,c.Hidden);this.tick_entries=this.ticks.map((Z)=>{let Q=_.time+Z.span_index*this.span_duration,q=$.preempt,K=Z.span_index>0?200:q*0.66,V=(Z.time-Q)/2+K,H=Z.time-V,w=J?Z.time:Z.time+X6;return{tick:Z,appear_time:H,visible_end:w,preempt:V}}),this.tick_entries_by_start=[...this.tick_entries].sort((Z,Q)=>Z.appear_time-Q.appear_time)}ease_out_elastic_half(_){if(_<=0)return 0;if(_>=1)return 1;let $=0.3;return Math.pow(2,-10*_)*Math.sin((_-$/4)*(2*Math.PI)/$)+1}render_reverse_arrows(_){if(this.repeats.length===0)return;let{backend:$,config:J,hit_object:Z,span_duration:Q}=this,{radius:q}=J,K=q*0.9;for(let V of this.repeats){let H=J.preempt;if(V.repeat_index>0)H=Q*2;else H+=Z.time-(Z.time-J.preempt);let w=V.time-H,h=V.repeat_index%2===0;if(_<w||_>V.time+Y4)continue;let z=this.body_alpha*0.9;if(V.repeat_index===0){let U=n((_-w)/150,0,1);z*=Z0.OutQuint(U)}else if(_<w)z=0;if(_>V.time){let U=Math.min(300,Q);z*=1-n((_-V.time)/U,0,1)}if(z<=0.01)continue;let X=this.get_arrow_target_vector(V.pos,h),W=Math.atan2(X[1]-V.pos[1],X[0]-V.pos[0]),G=1;if(_<V.time){let U=Z.time-J.preempt,N=(_-U)%PK;if(N<I4)G=1+(U4-1)*Z0.Out(N/I4);else{let I=(N-I4)/AK;G=U4-(U4-1)*Z0.Out(n(I,0,1))}}else{let U=Math.min(300,Q),N=n((_-V.time)/U,0,1);G=1+0.5*Z0.Out(N)}let k=K*G;$.save(),$.set_alpha(z),$.translate(V.pos[0],V.pos[1]),$.rotate(W);let C=this.config.skin_elements?.reversearrow_frames,Y=C&&C.length>0?C[Math.floor((_-w)/50)%C.length]:this.config.skin_elements?.reversearrow;if(Y)$.draw_image(Y,-k,-k,k*2,k*2);else $.begin_path(),$.move_to(k*0.8,0),$.line_to(-k*0.4,-k*0.5),$.line_to(-k*0.4,k*0.5),$.close_path(),$.fill_path("rgba(255,255,255,0.9)");$.restore()}}render_head(){if(this.head_visual.circle_alpha<=0.01&&this.body_alpha<=0.01)return;let{backend:_,skin:$,config:J}=this,{radius:Z}=J,Q=this.slider_data.pos,q=this.hit_object.end_pos,K=j_($,this.combo_number,1);if(this.head_visual.render(_,$,Q,Z*pZ,K,this.combo_count,J.skin_elements,J.skin_elements?.sliderstartcircle?{circle:J.skin_elements.sliderstartcircle,overlay:J.skin_elements.sliderstartcircleoverlay}:{circle:J.skin_elements?.hitcircle,overlay:J.skin_elements?.hitcircleoverlay},!0),this.body_alpha>0.01){let V=J.skin_elements?.sliderendcircle;if(!V)return;_.set_alpha(this.body_alpha*$.hit_circle_opacity);let H=J.skin_elements?.sliderendcircleoverlay,w=Z*pZ,h=w*2;if(_.draw_image(V,q[0]-w,q[1]-w,h,h,K),H)_.draw_image(H,q[0]-w,q[1]-w,h,h);_.set_alpha(1)}}render_ball(_){if(this.ball_alpha<=0.01&&this.follow_alpha<=0.01)return;let{backend:$,skin:J,config:Z}=this,{radius:Q}=Z,q=this.ball_position,K=j_(J,this.combo_number,0.9);if(this.follow_alpha>0.01){let V=Q*this.follow_scale;$.set_alpha(this.follow_alpha*J.follow_circle_opacity);let H=this.config.skin_elements?.sliderfollowcircle;if(H)$.draw_image(H,q[0]-V,q[1]-V,V*2,V*2);else $.begin_path(),$.arc_to(q[0],q[1],V,0,Math.PI*2),$.stroke_path(J.follow_circle_color,J.follow_circle_width)}if(J.enable_slider_ball&&this.ball_alpha>0.01){$.set_alpha(this.ball_alpha*J.slider_ball_opacity);let V=this.config.skin_elements?.sliderball_frames,H=this.config.skin_elements?.sliderball;if(V&&V.length>0){let w=Math.max(0,_-this.hit_object.time),h=Math.floor(w/Math.max(1,this.slider_ball_frame_delay))%V.length;H=V[h]}if(H){let w=Q*1.85,h=J.allow_slider_ball_tint?K:J.slider_ball_color;this.draw_slider_ball_layers(q,w,H,h,J.slider_ball_flip&&this.ball_reverse)}else{let w=J.allow_slider_ball_tint?K:J.slider_ball_color;$.draw_circle(q[0],q[1],Q*0.85,w,"rgba(255,255,255,0.9)",Q*0.1)}}$.set_alpha(1)}get_arrow_target_vector(_,$){let J=this.position_path;if(J.length===0)return _;if($){for(let Z=J.length-1;Z>=0;Z--)if(Math.abs(J[Z][0]-_[0])>0.01||Math.abs(J[Z][1]-_[1])>0.01)return J[Z];return J[0]}for(let Z=0;Z<J.length;Z++)if(Math.abs(J[Z][0]-_[0])>0.01||Math.abs(J[Z][1]-_[1])>0.01)return J[Z];return J[J.length-1]}draw_slider_ball_layers(_,$,J,Z,Q){let{backend:q}=this,K=this.config.skin_elements?.sliderball_nd,V=this.config.skin_elements?.sliderball_spec,H=$/2;if(Q){if(q.save(),q.translate(_[0],_[1]),q.scale(-1,1),K)q.draw_image(K,-H,-H,$,$);if(q.draw_image(J,-H,-H,$,$,Z),V)q.set_blend_mode("lighter"),q.draw_image(V,-H,-H,$,$),q.set_blend_mode("normal");q.restore();return}if(K)q.draw_image(K,_[0]-H,_[1]-H,$,$);if(q.draw_image(J,_[0]-H,_[1]-H,$,$,Z),V)q.set_blend_mode("lighter"),q.draw_image(V,_[0]-H,_[1]-H,$,$),q.set_blend_mode("normal")}}class b4{skin;mods;preempt;fade_in;radius;skin_elements=null;points=[];lines=[];sprites=[];constructor(_,$,J,Z,Q,q=null){this.skin=_,this.mods=$,this.preempt=J,this.fade_in=Z,this.radius=Q,this.skin_elements=q}update_settings(_,$,J,Z,Q){if(this.mods=_,this.preempt=$,this.fade_in=J,this.radius=Z,Q!==void 0)this.skin_elements=Q}build(_){this.points.length=0,this.lines.length=0,this.sprites.length=0;let $=32,J=Math.max(450,this.preempt*0.9),Z=h0(this.mods,c.Hidden);for(let Q=0;Q<_.length-1;Q++){let q=_[Q],K=_[Q+1];if(Z_(q)||Z_(K))continue;if(q.combo_number!==K.combo_number)continue;let V=q.end_pos,H=K.data.pos,w=H[0]-V[0],h=H[1]-V[1],z=Math.sqrt(w*w+h*h);if(z<$*1.5)continue;let X=q.end_time,W=K.time-X;if(W<=0)continue;let G=z>0?1/z:0,k=[w*G,h*G],C=X-J,Y=K.time-J,U=X+(Y-X)*0.5,N=K.time;if(Z)U=X+(Y-X)*0.3,N=X+(K.time-X)*0.65;this.lines.push({start_pos:V,end_pos:H,dir:k,start_time:X,end_time:K.time,appear_time:C,grow_end_time:Y,shrink_start_time:U,shrink_end_time:N});let I=z<80?0:Math.floor((z-48)/32),f=Math.max(1,this.fade_in);for(let y=0;y<I;y++){let D=48+32*y,L=D/z,v=X+L*W,m=v-J;this.sprites.push({start_pos:V,dir:k,distance:z,start_time:X,end_time:K.time,preempt:J,time_fade_in:f,d:D,f:L,fade_in_time:m,fade_out_time:v})}for(let y=$*1.5;y<z-$;y+=$){let D=y/z,L=q.end_time+D*W,v=Math.max(q.end_time,L-J);if(Z)L=Math.min(L,X+W*0.65);let m=[V[0]+(D-0.1)*w,V[1]+(D-0.1)*h],F=[V[0]+D*w,V[1]+D*h];this.points.push({start_pos:m,end_pos:F,dir:k,fade_in_time:v,fade_out_time:L})}}}render(_,$,J){let Z=this.skin.follow_point_shape,Q=this.skin.follow_point_mode??"segments",q=this.skin.follow_point_length||this.radius*0.6,K=n(this.skin.follow_point_line_gap??0,0,0.9),V=this.skin_elements?.followpoint_frames,H=this.skin_elements?.followpoint,w=H?"sprites":Q,h=Math.max(this.fade_in*0.15,50),z=H?0.72:0.2;if(w==="sprites"){let X=V&&V.length>0?V:H?[H]:[],W=this.radius/64;for(let G of this.sprites){if(_<G.start_time-G.preempt)continue;if(_>G.fade_out_time+G.time_fade_in)continue;let k=0,C=W,Y=G.f;if(_<G.fade_in_time+G.time_fade_in){let m=Z0.OutQuad(n((_-G.fade_in_time)/G.time_fade_in,0,1));k=m,C=(1.5-0.5*m)*W,Y=G.f-0.1*(1-m)}else if(_<G.fade_out_time)k=1,C=1*W,Y=G.f;else k=1-Z0.OutQuad(n((_-G.fade_out_time)/G.time_fade_in,0,1)),C=1*W,Y=G.f;if(k<=0.01)continue;let U=Math.max(1,(G.fade_out_time-G.fade_in_time)/Math.max(1,X.length)),N=n(Math.floor((_-G.fade_in_time)/U),0,X.length-1),I=X[N],f=G.start_pos[0]+G.dir[0]*(Y*G.distance),y=G.start_pos[1]+G.dir[1]*(Y*G.distance),D=Math.max(1,I.width*C),L=Math.max(1,I.height*C),v=Math.atan2(G.dir[1],G.dir[0]);$.set_alpha(k),$.save(),$.translate(f,y),$.rotate(v),$.draw_image(I,-D/2,-L/2,D,L),$.restore()}}else if(w==="full")for(let X of this.lines){if(_<X.appear_time||_>X.shrink_end_time)continue;let W=0,G=X.start_pos[0],k=X.start_pos[1],C=X.end_pos[0],Y=X.end_pos[1],U=Math.hypot(C-G,Y-k),N=this.get_alpha_gate(_,X.start_time,X.end_time,J);if(N<=0.01)continue;let I=this.radius*1.05,f=Math.min(I,U*0.22);if(G+=X.dir[0]*f,k+=X.dir[1]*f,C-=X.dir[0]*f,Y-=X.dir[1]*f,_<X.grow_end_time){let y=Math.max(1,X.grow_end_time-X.appear_time),D=n((_-X.appear_time)/y,0,1),L=Z0.OutQuint(D);W=L,C=G+(C-G)*L,Y=k+(Y-k)*L}else if(_<X.shrink_start_time)W=1;else{let y=Math.max(1,X.shrink_end_time-X.shrink_start_time),D=n((_-X.shrink_start_time)/y,0,1),L=Z0.InQuint(D);W=1,G=G+(C-G)*L,k=k+(Y-k)*L}if(W<=0)continue;if($.set_alpha(W*z*N),Z==="line")if(K>0){let y=Math.hypot(C-G,Y-k),D=X.dir[0],L=X.dir[1],v=y*K/2,m=(G+C)/2,F=(k+Y)/2,M=m-D*v,j=F-L*v,A=m+D*v,i=F+L*v;$.draw_line(G,k,M,j,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round"),$.draw_line(A,i,C,Y,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round")}else $.draw_line(G,k,C,Y,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round");else{let y=this.radius*0.12,D=(X.start_pos[0]+X.end_pos[0])/2,L=(X.start_pos[1]+X.end_pos[1])/2;$.draw_circle(D,L,y,"rgba(255,255,255,1)","transparent",0)}}else for(let X of this.points){if(_<X.fade_in_time||_>X.fade_out_time+h)continue;let W=0,G=1,k=X.end_pos;if(_<X.fade_in_time+h){let Y=n((_-X.fade_in_time)/h,0,1),U=Z0.OutCubic(Y);W=U,G=1.5-0.5*U,k=O_(X.start_pos,X.end_pos,U)}else if(_<=X.fade_out_time)W=1,G=1,k=X.end_pos;else{let Y=n((_-X.fade_out_time)/h,0,1),U=Z0.OutCubic(Y);W=1-U,G=1,k=O_(X.start_pos,X.end_pos,1-U)}if(W<=0)continue;let C=this.get_alpha_gate(_,X.fade_in_time+this.preempt,X.fade_out_time,J);if(C<=0.01)continue;if($.set_alpha(W*z*C),Z==="line"){let U=q*G/2,N=X.dir[0],I=X.dir[1],f=k[0]-N*U,y=k[1]-I*U,D=k[0]+N*U,L=k[1]+I*U;$.draw_line(f,y,D,L,"rgba(255,255,255,1)",this.skin.follow_point_width,"round","round")}else{let Y=this.radius*0.12*G;$.draw_circle(k[0],k[1],Y,"rgba(255,255,255,1)","transparent",0)}}$.set_alpha(1)}get_alpha_gate(_,$,J,Z){let Q=Z(_,$),q=Z(_,J);return n(Math.min(Q,q)/0.7,0,1)}}var F4=(_,$=0.01)=>{if(_.length<2)return[..._];let J=[];return B4(_,J,$),J},B4=(_,$,J)=>{if(MK(_,J)){if($.length===0)$.push(_[0]);$.push(_[_.length-1]);return}let Z=[],Q=[];EK(_,Z,Q),B4(Z,$,J),B4(Q,$,J)},MK=(_,$)=>{if(_.length<=2)return!0;let J=_[0],Z=_[_.length-1];for(let Q=1;Q<_.length-1;Q++)if(fK(_[Q],J,Z)>$)return!1;return!0},fK=(_,$,J)=>{let Z=J[0]-$[0],Q=J[1]-$[1],q=Z*Z+Q*Q;if(q===0){let w=_[0]-$[0],h=_[1]-$[1];return Math.hypot(w,h)}let K=Math.max(0,Math.min(1,((_[0]-$[0])*Z+(_[1]-$[1])*Q)/q)),V=$[0]+K*Z,H=$[1]+K*Q;return Math.hypot(_[0]-V,_[1]-H)},EK=(_,$,J)=>{let Z=_.length,Q=[_];for(let q=1;q<Z;q++){Q[q]=[];for(let K=0;K<Z-q;K++)Q[q][K]=O_(Q[q-1][K],Q[q-1][K+1],0.5)}for(let q=0;q<Z;q++)$.push(Q[q][0]),J.push(Q[Z-1-q][q])},O4=(_,$,J)=>{let Z=$_($,_),Q=X_(Z);if(Q===0)return[_];let q=[Z[0]/Q,Z[1]/Q],K=t_(_,gZ(q,J));return[_,K]},xZ=(_,$)=>{if(_.length!==3)return F4(_);let[J,Z,Q]=_,q=vK(J,Z,Q);if(!q)return O4(J,Q,$);let K=X_($_(J,q)),V=Math.atan2(J[1]-q[1],J[0]-q[0]),H=Math.atan2(Q[1]-q[1],Q[0]-q[0]),h=(Z[0]-J[0])*(Q[1]-J[1])-(Z[1]-J[1])*(Q[0]-J[0])>0,z=H-V;if(h&&z<0)z+=2*Math.PI;if(!h&&z>0)z-=2*Math.PI;let X=2;if(K*2>0.1){let G=Math.abs(z),k=2*Math.acos(1-0.1/K);if(X=Math.max(2,Math.ceil(G/k)),X>=1000)X=1000}let W=[];for(let G=0;G<=X;G++){let k=G/X,C=V+z*k;W.push([q[0]+K*Math.cos(C),q[1]+K*Math.sin(C)])}return W},vK=(_,$,J)=>{let Z=2*(_[0]*($[1]-J[1])+$[0]*(J[1]-_[1])+J[0]*(_[1]-$[1]));if(Math.abs(Z)<0.001)return null;let Q=((_[0]*_[0]+_[1]*_[1])*($[1]-J[1])+($[0]*$[0]+$[1]*$[1])*(J[1]-_[1])+(J[0]*J[0]+J[1]*J[1])*(_[1]-$[1]))/Z,q=((_[0]*_[0]+_[1]*_[1])*(J[0]-$[0])+($[0]*$[0]+$[1]*$[1])*(_[0]-J[0])+(J[0]*J[0]+J[1]*J[1])*($[0]-_[0]))/Z;return[Q,q]},mZ=(_)=>{if(_.length<2)return[..._];let $=[];for(let J=0;J<_.length-1;J++){let Z=_[Math.max(0,J-1)],Q=_[J],q=_[J+1],K=_[Math.min(_.length-1,J+2)],V=X_($_(q,Q)),H=Math.max(8,Math.ceil(V/3));for(let w=0;w<=H;w++){let h=w/H;$.push(cK(Z,Q,q,K,h))}}return $},cK=(_,$,J,Z,Q)=>{let q=Q*Q,K=q*Q;return[0.5*(2*$[0]+(-_[0]+J[0])*Q+(2*_[0]-5*$[0]+4*J[0]-Z[0])*q+(-_[0]+3*$[0]-3*J[0]+Z[0])*K),0.5*(2*$[1]+(-_[1]+J[1])*Q+(2*_[1]-5*$[1]+4*J[1]-Z[1])*q+(-_[1]+3*$[1]-3*J[1]+Z[1])*K)]};var uZ=(_)=>{let $;if(_.path_type==="L")$=O4(_.pos,_.control_points[0],_.distance);else{let J=[_.pos,..._.control_points];switch(_.path_type){case"P":$=xZ(J,_.distance);break;case"C":$=mZ(J);break;default:$=yK(J);break}}return SK($,_.distance)},nZ=(_)=>{if(!_.computed_path||_.computed_path.length===0)return _.pos;return _.repetitions%2===0?_.pos:_.computed_path[_.computed_path.length-1]},yK=(_)=>{let $=[],J=[_[0]];for(let Q=1;Q<_.length;Q++){let[q,K]=[_[Q-1],_[Q]];if(q[0]===K[0]&&q[1]===K[1]){if(J.length>1)$.push(J);J=[K]}else J.push(K)}if(J.length>1)$.push(J);let Z=[];for(let Q=0;Q<$.length;Q++){let q=F4($[Q]);if(q.length===0)continue;if(Z.length>0){let K=Z[Z.length-1],V=q[0];if(K[0]===V[0]&&K[1]===V[1]){for(let H=1;H<q.length;H++)Z.push(q[H]);continue}}for(let K=0;K<q.length;K++)Z.push(q[K])}return Z},SK=(_,$)=>{if(_.length<2)return _;let J=[_[0]],Z=0,Q=null,q=!1;for(let K=1;K<_.length;K++){let V=X_($_(_[K],_[K-1])),H=$_(_[K],_[K-1]);if(V>0)Q=[H[0]/V,H[1]/V];if(V===0)continue;if(Z+V>=$){let w=$-Z;J.push(O_(_[K-1],_[K],w/V)),Z=$,q=!0;break}Z+=V,J.push(_[K])}if(!q&&Z<$&&Q){let K=$-Z,V=J[J.length-1];J.push([V[0]+Q[0]*K,V[1]+Q[1]*K])}return J};var i8=(_,$,J)=>{if(_<=0)return 0;let Z=$.Difficulty.SliderMultiplier;return _*J.base_beat_length/(100*Z*J.sv_multiplier)},a8=(_,$)=>{let J=$.sv_multiplier||1,Z=_.Difficulty.SliderMultiplier,Q=_.Difficulty.SliderTickRate,q=100*Z*J,K=_.version<8?1/J:1,V=q/Q*K,H=q/$.base_beat_length;return{tick_distance:V,min_distance_from_end:H*10}};class W6{points;index=0;last_time=Number.NEGATIVE_INFINITY;base_beat_length=600;sv_multiplier=1;constructor(_){if(this.points=_,_.length>0&&_[0].uninherited===1&&_[0].beatLength>0)this.base_beat_length=_[0].beatLength}reset(){this.index=0,this.last_time=Number.NEGATIVE_INFINITY,this.base_beat_length=600,this.sv_multiplier=1}get_state_at(_){if(this.points.length===0)return{base_beat_length:600,sv_multiplier:1};if(_<this.last_time)this.reset();for(let $=this.index;$<this.points.length;$++){let J=this.points[$];if(J.time>_)break;if(J.uninherited===1&&J.beatLength>0)this.base_beat_length=J.beatLength,this.sv_multiplier=1;else if(J.uninherited===0&&J.beatLength<0){let Z=-100/J.beatLength;if(Z>0)this.sv_multiplier=Z}this.index=$+1}return this.last_time=_,this.sv_multiplier=n(this.sv_multiplier,0.1,10),{base_beat_length:this.base_beat_length,sv_multiplier:this.sv_multiplier}}}var X0={precompute:{lookback_ms:1500,lookahead_ms:8000,frame_budget_ms:0.35,bootstrap_budget_ms:12,bootstrap_total_ms:120},slider_cache:{max_entries:72,max_bytes:100663296,retention_ms:14000,trim_interval_ms:250},stack:{default_leniency:0.7,distance:3,offset_multiplier:6.4}};var r8=(_)=>{if(_.length===0)return _;let $=_.map((J,Z)=>({point:J,index:Z}));$.sort((J,Z)=>{if(J.point.time!==Z.point.time)return J.point.time-Z.point.time;if(J.point.uninherited!==Z.point.uninherited)return J.point.uninherited>Z.point.uninherited?-1:1;return J.index-Z.index});for(let J=0;J<_.length;J++)_[J]=$[J].point;return _};var l0=(_)=>{if(typeof _==="number"&&Number.isFinite(_))return _;if(typeof _==="string"){let $=Number(_);if(Number.isFinite($))return $}return null},TK=(_)=>l0(_.time)??l0(_.startTime)??l0(_.start_time)??0,dK=(_,$)=>{let J=l0(_.endTime)??l0(_.end_time);if(J===null)return $;return Math.max($,J)},gK=(_)=>l0(_.type)??l0(_.objectType)??0,pK=(_,$)=>{let J=l0(_.x);if(J!==null)return J;let Z=l0(_.column);if(Z!==null&&$>0)return(Math.max(0,Math.min($-1,Math.round(Z)))+0.5)/$*512;return 256},xK=(_)=>l0(_.y)??192,t8=(_)=>{let $=[],J=Math.max(1,Math.round(l0(_.Difficulty?.CircleSize)??4));for(let Z of _.HitObjects){let Q=Z,q=TK(Q),K=dK(Q,q),V=pK(Q,J),H=xK(Q),w=gK(Q),h={...Z,time:q,x:V,y:H,type:w,endTime:K,end_time:K,end_pos:[V,H],combo_number:0,combo_count:0,stack_height:0,stack_offset:[0,0],data:{pos:[V,H]}};if((w&J_.Slider)!==0){let z=Q.curvePoints||[],X=[];for(let G=0;G<z.length;G++){let k=z[G];X.push([k.x,k.y])}let W={pos:[V,H],path_type:Q.curveType||"L",control_points:X,repetitions:(l0(Q.slides)??1)|0,distance:l0(Q.length)??0};h.data=W}else if((w&J_.Spinner)!==0)h.data={end_time:K},h.end_time=K,h.end_pos=[256,192];else if((w&J_.Hold)!==0)h.data={pos:[V,H],end_time:K},h.end_time=K;$.push(h)}return $};var j4=(_)=>384-_;class e8 extends P1{radius=32;preempt=1200;fade_in=600;timing_points=[];timing_resolver=null;drawables=[];slider_drawables=[];slider_cache_lru=[];precompute_focus_time=0;precompute_handle=null;precompute_pause_until=0;last_seek_prefetch_at=0;drawable_config;follow_point_renderer;spinner_objects=[];frame_visible_drawables=[];frame_visible_sliders=[];frame_visible_other=[];slider_cache_limit=X0.slider_cache.max_entries;slider_cache_bytes=0;last_cache_trim_at=0;constructor(_,$,J=0,Z=D_,Q=null){super(_,$,J,Z,Q);this.follow_point_renderer=new b4($,J,this.preempt,this.fade_in,this.radius,Q)}initialize(_){this.release_drawables(),this.beatmap=_,this.objects=t8(_).sort((Z,Q)=>Z.time-Q.time),this.timing_points=r8([..._.TimingPoints]),this.timing_resolver=new W6(this.timing_points);let $=_.Difficulty.ApproachRate>=0?_.Difficulty.ApproachRate:_.Difficulty.OverallDifficulty,J=dZ(_.Difficulty.CircleSize,$,0,0,this.mods);if(this.radius=TZ(J.cs),this.preempt=u8(J.ar),this.fade_in=SZ(this.preempt),h0(this.mods,c.Hidden))this.fade_in=this.preempt*0.4;this.follow_point_renderer.update_settings(this.mods,this.preempt,this.fade_in,this.radius,this.skin_elements),this.preprocess_objects(),this.follow_point_renderer.build(this.objects),this.create_drawables()}set_mods(_){if(this.mods=_,this.beatmap)this.initialize(this.beatmap)}preprocess_objects(){let _=0,$=1;if(this.timing_resolver)this.timing_resolver.reset();for(let J of this.objects){if(S4(J))_=(_+1)%this.skin.combo_colors.length,$=1;else $++;if(J.combo_number=_,J.combo_count=$,Z1(J)){let Z=J.data;if(h0(this.mods,c.HardRock))Z.pos=[Z.pos[0],j4(Z.pos[1])],Z.control_points=Z.control_points.map((K)=>[K[0],j4(K[1])]);Z.computed_path=uZ(Z);let Q=this.timing_resolver?.get_state_at(J.time)??{base_beat_length:600,sv_multiplier:1},q=i8(Z.distance,this.beatmap,Q);Z.duration=q,J.end_time=J.time+q*Z.repetitions,J.end_pos=nZ(Z)}else if(Z_(J))J.end_pos=[256,192];else{let Z=J.data;if(h0(this.mods,c.HardRock))Z.pos=[Z.pos[0],j4(Z.pos[1])];J.end_pos=Z.pos}}this.apply_stacking_if_enabled()}apply_stacking_if_enabled(){if(!this.config.enable_stacking||this.objects.length<2)return;let _=this.resolve_stack_leniency(),$=this.preempt*_,J=this.radius/64,Z=-X0.stack.offset_multiplier*J;for(let Q=0;Q<this.objects.length;Q++)this.objects[Q].stack_height=0,this.objects[Q].stack_offset=[0,0];for(let Q=this.objects.length-1;Q>0;Q--){let q=this.objects[Q];if(Z_(q))continue;for(let K=Q-1;K>=0;K--){let V=this.objects[K];if(Z_(V))continue;if(q.time-V.end_time>$)break;let H=this.get_object_start_position(q),w=this.get_object_start_position(V),h=n8(w,H),z=Z1(V)?n8(V.end_pos,H):1/0;if(K9(q)&&Z1(V)&&z<X0.stack.distance){let X=q.stack_height-V.stack_height+1;for(let W=K+1;W<=Q;W++){let G=this.objects[W];if(Z_(G))continue;let k=this.get_object_start_position(G);if(n8(V.end_pos,k)<X0.stack.distance)G.stack_height-=X}break}if(h<X0.stack.distance||z<X0.stack.distance)V.stack_height=q.stack_height+1,q=V}}for(let Q=0;Q<this.objects.length;Q++){let q=this.objects[Q];if(q.stack_height===0)continue;let K=q.stack_height*Z,V=[K,K];if(q.stack_offset=V,q.end_pos=t_(q.end_pos,V),Z1(q)){let H=q.data;H.pos=t_(H.pos,V);let w=[];for(let h=0;h<H.control_points.length;h++)w.push(t_(H.control_points[h],V));if(H.control_points=w,H.computed_path){let h=[];for(let z=0;z<H.computed_path.length;z++)h.push(t_(H.computed_path[z],V));H.computed_path=h}continue}if(!Z_(q)){let H=q.data;H.pos=t_(H.pos,V)}}}resolve_stack_leniency(){let _=this.beatmap,$=_.StackLeniency??_.Difficulty?.StackLeniency??_.General?.StackLeniency??X0.stack.default_leniency;if($<=0)return X0.stack.default_leniency;return $}get_object_start_position(_){if(Z1(_))return _.data.pos;if(Z_(_))return[256,192];return _.data.pos}create_drawables(){this.release_drawables();let _=this.config.use_high_dpi?window.devicePixelRatio||1:1;if(this.drawable_config={backend:this.backend,skin:this.skin,skin_elements:this.skin_elements,preempt:this.preempt,fade_in:this.fade_in,radius:this.radius,scale:this.config.scale*_,mods:this.mods},this.timing_resolver)this.timing_resolver.reset();this.spinner_objects=[];for(let $ of this.objects)if(K9($))this.drawables.push(new o8($,this.drawable_config));else if(Z1($)){let J=$.data,Z=J.computed_path||[],Q=J.duration||0,q=this.timing_resolver?.get_state_at($.time)??{base_beat_length:600,sv_multiplier:1},{tick_distance:K,min_distance_from_end:V}=a8(this.beatmap,q),H=new G6($,this.drawable_config,Z,Q,K,V);this.drawables.push(H),this.slider_drawables.push(H)}else if(Z_($))this.spinner_objects.push($);this.slider_cache_limit=Math.min(X0.slider_cache.max_entries,this.slider_drawables.length),this.slider_cache_bytes=0}render(_){let{backend:$,config:J}=this;this.precompute_focus_time=_,this.render_background(),$.save(),$.translate(J.offset_x,J.offset_y),$.scale(J.scale,J.scale),this.render_playfield(),this.render_grid();let Z=this.frame_visible_drawables,Q=this.frame_visible_sliders,q=this.frame_visible_other;Z.length=0,Q.length=0,q.length=0;for(let V=this.drawables.length-1;V>=0;V--){let H=this.drawables[V];if(!H.is_alive(_))continue;if(H.update(_),Z.push(H),H instanceof G6)Q.push(H);else q.push(H)}this.follow_point_renderer.render(_,$,(V,H)=>this.get_circle_alpha(V,H));for(let V=0;V<this.spinner_objects.length;V++){let H=this.spinner_objects[V],w=H.time-this.preempt;if(_>=w&&_<=H.end_time+200)this.draw_spinner(H,_)}for(let V=0;V<Q.length;V++){let H=Q[V];H.render_body_pass(_),this.touch_slider_cache(H)}let K=performance.now();if(K-this.last_cache_trim_at>=X0.slider_cache.trim_interval_ms)this.last_cache_trim_at=K,this.trim_slider_cache_by_time(_);for(let V=0;V<Q.length;V++)Q[V].render_head_pass(_);for(let V=0;V<q.length;V++)q[V].render(_);if(!h0(this.mods,c.Hidden)&&this.skin.enable_approach_circle){for(let V of Z)if(_<=V.start_time)this.draw_approach_circle(V,_)}$.restore()}precompute(_=0){this.precompute_focus_time=_,this.process_precompute_queue(_,X0.precompute.bootstrap_budget_ms,!0),this.start_precompute_loop()}on_seek(_){this.precompute_focus_time=_,this.precompute_pause_until=performance.now()+90;let $=performance.now();if($-this.last_seek_prefetch_at<48)return;this.last_seek_prefetch_at=$,this.process_precompute_queue(_,1,!1)}dispose(){this.stop_precompute_loop(),this.release_drawables(),this.timing_points=[],this.timing_resolver=null,super.dispose()}release_drawables(){this.stop_precompute_loop();for(let _ of this.drawables)_.dispose();this.drawables=[],this.slider_drawables=[],this.slider_cache_lru=[],this.slider_cache_bytes=0,this.spinner_objects=[],this.frame_visible_drawables.length=0,this.frame_visible_sliders.length=0,this.frame_visible_other.length=0}start_precompute_loop(){if(this.precompute_handle!==null)return;let _=()=>{if(this.precompute_handle=null,!this.has_uncached_sliders())return;if(performance.now()>=this.precompute_pause_until)this.process_precompute_queue(this.precompute_focus_time,X0.precompute.frame_budget_ms,!1);this.precompute_handle=window.requestAnimationFrame(_)};this.precompute_handle=window.requestAnimationFrame(_)}stop_precompute_loop(){if(this.precompute_handle!==null)window.cancelAnimationFrame(this.precompute_handle),this.precompute_handle=null}has_uncached_sliders(){for(let _=0;_<this.slider_drawables.length;_++)if(!this.slider_drawables[_].has_body_cache())return!0;return!1}process_precompute_queue(_,$,J){if(this.slider_drawables.length===0)return;let Z=performance.now()+$,Q=0,q=J?2:1;while(performance.now()<Z&&Q<q){let K=this.pick_next_slider_for_precompute(_,J);if(!K)break;K.prepare_body_cache(),this.touch_slider_cache(K),Q++}}pick_next_slider_for_precompute(_,$){let J=null,Z=-1/0;for(let Q=0;Q<this.slider_drawables.length;Q++){let q=this.slider_drawables[Q],K=this.score_slider_for_precompute(q,_,$);if(K<=Z)continue;Z=K,J=q}return J??this.pick_nearest_uncached_slider(_)}score_slider_for_precompute(_,$,J){if(_.has_body_cache())return-1/0;let Z=_.start_time-$,Q=_.estimate_complexity();if(Z>=-X0.precompute.lookback_ms&&Z<=X0.precompute.lookahead_ms){let K=Math.abs(Z)*0.025,V=J?0:Q*0.02;return(J?Q*0.2:0)-K-V}if(J)return Q;return-1/0}pick_nearest_uncached_slider(_){let $=null,J=1/0;for(let Z=0;Z<this.slider_drawables.length;Z++){let Q=this.slider_drawables[Z];if(Q.has_body_cache())continue;let q=Math.abs(Q.start_time-_);if(q>=J)continue;J=q,$=Q}return $}touch_slider_cache(_){if(!_.has_body_cache())return;let $=this.slider_cache_lru.indexOf(_);if($>=0){this.slider_cache_lru.splice($,1),this.slider_cache_lru.push(_);return}this.slider_cache_lru.push(_),this.slider_cache_bytes+=_.get_body_cache_bytes(),this.enforce_slider_cache_limit()}enforce_slider_cache_limit(){while(this.slider_cache_lru.length>this.slider_cache_limit||this.slider_cache_bytes>X0.slider_cache.max_bytes){let _=this.slider_cache_lru.shift();if(!_)break;this.slider_cache_bytes-=_.get_body_cache_bytes(),_.release_body_cache()}}trim_slider_cache_by_time(_){if(this.slider_cache_lru.length===0)return;let $=[],J=0;for(let Z=0;Z<this.slider_cache_lru.length;Z++){let Q=this.slider_cache_lru[Z];if(!Q.has_body_cache())continue;if(Math.abs(Q.start_time-_)<=X0.slider_cache.retention_ms||Q.is_alive(_))$.push(Q),J+=Q.get_body_cache_bytes();else Q.release_body_cache()}this.slider_cache_lru=$,this.slider_cache_bytes=J,this.enforce_slider_cache_limit()}draw_approach_circle(_,$){let J=_.position,Z=_.start_time-this.preempt,q=4-3*n(($-Z)/this.preempt,0,1),K=Math.min(this.fade_in*2,this.preempt),V=n(($-Z)/Math.max(1,K),0,1),H=this.skin.approach_circle_opacity*V;if(H<=0.01)return;this.backend.save(),this.backend.set_alpha(H);let w=this.skin_elements?.approachcircle;if(w){let h=this.radius*2*q;this.backend.draw_image(w,J[0]-h/2,J[1]-h/2,h,h)}else{let h=this.skin.approach_circle_use_combo_color?j_(this.skin,_.combo_number,1):this.skin.approach_circle_color??"rgba(255,255,255,1)";this.backend.draw_circle(J[0],J[1],this.radius*q,"transparent",h,this.radius*this.skin.approach_circle_width)}this.backend.restore()}get_circle_alpha(_,$){let J=$-this.preempt;if(_<J)return 0;let Z=n((_-J)/this.fade_in,0,1);if(h0(this.mods,c.Hidden)){let Q=$-this.preempt+this.fade_in,q=this.preempt*0.3;if(_>Q){let K=n((_-Q)/q,0,1);Z*=1-K}}return Z}draw_spinner(_,$){let J=_.time-this.preempt,Z=n(($-J)/this.fade_in,0,1);if($>_.end_time)Z=1-Z0.OutCubic(n(($-_.end_time)/200,0,1));if(Z<=0)return;let Q=256,q=192,K=Math.max(1,_.end_time-_.time),V=n(($-_.time)/K,0,1);this.backend.save(),this.backend.set_alpha(Z);let H=this.skin.spinner_size*(1-V);if(H>5)this.backend.begin_path(),this.backend.arc_to(Q,q,H,0,Math.PI*2),this.backend.stroke_path("rgba(255,255,255,0.6)",4);this.backend.draw_circle(Q,q,this.skin.spinner_size,"rgba(0,0,0,0.2)"),this.backend.draw_circle(Q,q,12,"white"),this.backend.restore()}}var lZ=11485,oZ=8,V5=50,mK=0.4,uK=0.2,nK=0.68,lK=0.18,oK=0.04,sK=0.2,iK=0.5,aK=0.18,rK=0.5;class L_ extends P1{static MIN_KEY_COUNT=1;static MAX_KEY_COUNT=18;static DEFAULT_KEY_COUNT=4;key_count=4;scroll_time=lZ/oZ;hd_coverage=0.25;fi_coverage=0.6;gradient_ratio=0.2;press_start_sorted=[];press_end_sorted=[];press_start_index=0;press_end_index=0;active_press_objects=new Set;active_press_lane_counts=[];lane_impacts=[];last_press_time=Number.NEGATIVE_INFINITY;base_timing_points=[];constructor(_,$,J=0,Z=D_,Q=null){super(_,$,J,Z,Q);this.update_scroll_time()}initialize(_){this.beatmap=_,this.objects=t8(_).sort(($,J)=>$.time-J.time),this.key_count=this.resolve_key_count(_),this.press_start_sorted=this.objects,this.press_end_sorted=this.objects.slice().sort(($,J)=>$.end_time-J.end_time),this.base_timing_points=this.extract_base_timing_points(_),this.reset_pressed_state()}set_mods(_){this.mods=_,this.update_scroll_time()}update_scroll_time(){this.scroll_time=lZ/oZ}get_lane_metrics(){let _=Math.max(1,Number.isFinite(this.skin.mania_lane_width)?this.skin.mania_lane_width:30),$=Math.max(4,Number.isFinite(this.skin.mania_note_height)?this.skin.mania_note_height:15),J=Math.max(0,Number.isFinite(this.skin.mania_lane_spacing)?this.skin.mania_lane_spacing:1),Z=Math.max(8,Math.min(w9,Number.isFinite(this.skin.mania_hit_position)?this.skin.mania_hit_position:364));return{lane_width:_,note_height:$,spacing:J,hit_pos:Z}}time_to_y(_,$){let J=_/this.scroll_time;return $-J*$}get_stage_bottom_height(_,$){let J=this.get_mania_texture("mania-stage-bottom",_);if(!J)return 0;return Math.max(1,Math.round(J.height*($/Math.max(1,J.width))))}draw_clipped_note_with_gradient(_,$,J,Z,Q,q,K){let V=Math.max(q,$),w=Math.min(K,$+Z)-V;if(w<=0||J<=0)return;let h=this.backend;h.draw_rect(_,V,J,w,Q);let z=h.create_linear_gradient(_,V,_,V+w,[{offset:0,color:`rgba(255,255,255,${lK})`},{offset:0.45,color:`rgba(255,255,255,${oK})`},{offset:1,color:`rgba(0,0,0,${sK})`}]);h.draw_rect_gradient(_,V,J,w,z)}get_lane(_){let $=_.data.pos,J=Number.isFinite($?.[0])?$[0]:_.x,Z=Math.floor(J*this.key_count/512);if(!Number.isFinite(Z))Z=0;if(h0(this.mods,c.Mirror))Z=this.key_count-1-Z;return Math.max(0,Math.min(this.key_count-1,Z))}resolve_key_count(_){let $=_?.Difficulty?.CircleSize;if(Number.isFinite($)){let Q=Math.round($);if(Q>=L_.MIN_KEY_COUNT)return Math.max(L_.MIN_KEY_COUNT,Math.min(L_.MAX_KEY_COUNT,Q))}let J=new Set;for(let Q=0;Q<_.HitObjects.length;Q++){let q=_.HitObjects[Q].x;if(Number.isFinite(q))J.add(Math.round(q))}let Z=J.size;if(Z>=L_.MIN_KEY_COUNT&&Z<=L_.MAX_KEY_COUNT)return Z;return L_.DEFAULT_KEY_COUNT}reset_pressed_state(){this.press_start_index=0,this.press_end_index=0,this.active_press_objects.clear(),this.active_press_lane_counts=Array(this.key_count).fill(0),this.lane_impacts=Array(this.key_count).fill(0),this.last_press_time=Number.NEGATIVE_INFINITY}add_pressed_object(_){if(this.active_press_objects.has(_))return;this.active_press_objects.add(_);let $=this.get_lane(_);if($>=0&&$<this.active_press_lane_counts.length)this.active_press_lane_counts[$]++}remove_pressed_object(_){if(!this.active_press_objects.delete(_))return;let $=this.get_lane(_);if($>=0&&$<this.active_press_lane_counts.length&&this.active_press_lane_counts[$]>0)this.active_press_lane_counts[$]--}rebuild_pressed_state(_){this.active_press_objects.clear(),this.active_press_lane_counts.fill(0);for(let $=0;$<this.objects.length;$++){let J=this.objects[$];if(_>=J.time-V5&&_<=J.end_time+V5)this.add_pressed_object(J)}this.press_start_index=0;while(this.press_start_index<this.press_start_sorted.length&&this.press_start_sorted[this.press_start_index].time-V5<=_)this.press_start_index++;this.press_end_index=0;while(this.press_end_index<this.press_end_sorted.length&&this.press_end_sorted[this.press_end_index].end_time+V5<_)this.press_end_index++}update_pressed_state(_){if(!Number.isFinite(this.last_press_time)||_<this.last_press_time||_-this.last_press_time>1000){this.rebuild_pressed_state(_),this.last_press_time=_;return}while(this.press_start_index<this.press_start_sorted.length&&this.press_start_sorted[this.press_start_index].time-V5<=_)this.add_pressed_object(this.press_start_sorted[this.press_start_index]),this.press_start_index++;while(this.press_end_index<this.press_end_sorted.length&&this.press_end_sorted[this.press_end_index].end_time+V5<_)this.remove_pressed_object(this.press_end_sorted[this.press_end_index]),this.press_end_index++;this.last_press_time=_}extract_base_timing_points(_){let $=[];for(let J=0;J<_.TimingPoints.length;J++){let Z=_.TimingPoints[J],Q=Number(Z.time),q=Number(Z.beatLength),K=Math.max(1,Math.round(Number(Z.meter)||4)),V=Number(Z.uninherited);if(!Number.isFinite(Q)||!Number.isFinite(q)||q<=0)continue;if(Number.isFinite(V)&&V===0)continue;$.push({time:Q,beat_length:q,meter:K})}if($.length===0)$.push({time:0,beat_length:600,meter:4});return $.sort((J,Z)=>J.time-Z.time),$}get_mania_texture(_,$){let J=_.toLowerCase(),Z=this.skin_elements?.mania_animations?.[J];if(Z&&Z.length>0){let Q=this.skin.animation_framerate>0?this.skin.animation_framerate:60,q=Math.floor(Math.max(0,$)/1000*Q)%Z.length;return Z[q]}return this.skin_elements?.mania_textures?.[J]??null}draw_column_sprite(_,$,J,Z,Q){this.backend.draw_image(_,$,J,Math.max(1,Z),Math.max(1,Q))}get_column_fallback_index(_){if(this.key_count%2===1&&_===Math.floor(this.key_count/2))return"s";let $=_%this.key_count;return Math.min($,this.key_count-1-$)%2===0?"1":"2"}draw_stage_background(_,$,J,Z,Q){let{backend:q,key_count:K}=this,{lane_width:V,spacing:H}=this.get_lane_metrics(),w=Math.max(1,V-2*H),h=this.get_mania_texture("mania-stage-left",_);if(h&&h.height>0){let W=h.width*(Q/h.height);q.set_alpha(1),q.draw_image(h,$-W,0,W,Q)}let z=this.get_mania_texture("mania-stage-right",_);if(z&&z.height>0){let W=z.width*(Q/z.height);q.set_alpha(1),q.draw_image(z,$+J,0,W,Q)}let X=this.get_mania_texture("mania-stage-light",_);if(X){for(let W=0;W<K;W++){let G=$+W*V+H;q.set_alpha(mK),this.draw_column_sprite(X,G,0,w,Z)}q.set_alpha(1);return}for(let W=0;W<K;W++){let G=$+W*V+H,k=q5(this.skin,K,W);q.set_alpha(uK),q.draw_rect(G,0,w,Z,k)}q.set_alpha(nK);for(let W=1;W<K;W++){let G=$+W*V;q.draw_rect(G-0.75,0,1.5,Z,"#ffffff")}q.set_alpha(1)}draw_bar_lines(_,$,J,Z){let Q=this.backend,q=_+this.scroll_time;for(let K=0;K<this.base_timing_points.length;K++){let V=this.base_timing_points[K],H=K+1<this.base_timing_points.length?this.base_timing_points[K+1].time:Number.POSITIVE_INFINITY,w=Math.max(_,V.time),h=Math.min(q,H);if(h<=w)continue;let z=Math.max(0,Math.ceil((w-V.time)/V.beat_length)),X=Math.floor((h-V.time)/V.beat_length);for(let W=z;W<=X;W++){let G=V.time+W*V.beat_length,k=this.time_to_y(G-_,Z);if(k<0||k>Z)continue;let C=W%V.meter===0;Q.set_alpha(C?0.3:0.16),Q.draw_rect($,k,J,C?1.25:1,"#ffffff")}}Q.set_alpha(1)}draw_note(_,$,J,Z){let{lane_width:Q,note_height:q,spacing:K,hit_pos:V}=Z,H=this.get_lane(_),w=this.time_to_y(_.time-$,V);if(w<-q-64||w>V+q+8)return;let h=J+H*Q,z=Math.max(1,Q-2*K),X=q5(this.skin,this.key_count,H);this.backend.set_alpha(1),this.draw_clipped_note_with_gradient(h+K,w-q,z,q,X,0,V)}draw_hold_note(_,$,J,Z){let{lane_width:Q,note_height:q,spacing:K,hit_pos:V}=Z,H=_.data,w=this.get_lane(_),h=this.time_to_y(_.time-$,V),z=this.time_to_y(H.end_time-$,V);if(z>V+q+8&&h>V+q+8)return;if(z<-64&&h<-64)return;let X=J+w*Q,W=Math.max(1,Q-2*K),G=q5(this.skin,this.key_count,w),k=z,Y=(_.time<=$?V:h)-k;if(Y>0)this.backend.set_alpha(0.92),this.draw_clipped_note_with_gradient(X+K,k,W,Y,G,0,V);if(_.time>=$)this.backend.set_alpha(1),this.draw_clipped_note_with_gradient(X+K,h-q,W,q,G,0,V);if(H.end_time>=$)this.backend.set_alpha(1),this.draw_clipped_note_with_gradient(X+K,z-q,W,q,G,0,V);this.backend.set_alpha(1)}draw_hit_glow(_,$,J){let{lane_width:Z,spacing:Q,hit_pos:q}=J,{backend:K,key_count:V}=this;if(this.active_press_objects.size===0)return;let H=this.lane_impacts;if(H.length!==V)this.lane_impacts=Array(V).fill(0);else H.fill(0);let w=this.lane_impacts;for(let z of this.active_press_objects){let X=0;if(V9(z)){let G=z.data;if(_>=z.time&&_<=G.end_time)X=0.35;else if(_<z.time){let k=z.time-_;if(k<=120)X=(1-k/120)*0.7}else{let k=_-G.end_time;if(k<=120)X=(1-k/120)*0.35}}else{let G=Math.abs(_-z.time);if(G<=120)X=1-G/120}if(X<=0)continue;let W=this.get_lane(z);if(X>w[W])w[W]=X}let h=this.get_mania_texture("mania-stage-light",_);K.set_blend_mode("lighter");for(let z=0;z<V;z++){let X=w[z];if(X<=0)continue;let W=$+z*Z+Q,G=Math.max(1,Z-2*Q),k=W+G*0.5;if(h){let Y=Math.max(16,q*(0.55+X*0.25));K.set_alpha(iK*X),K.draw_image(h,W,q-Y,G,Y),K.set_alpha(aK*X),K.draw_image(h,W,q-Y*0.7,G,Y*0.7)}else{let Y=Math.max(16,72*X),U=Math.max(2,G*0.16);K.set_alpha(0.4*X),K.draw_rect(k-U*0.5,q-Y,U,Y,"#cfe9ff")}let C=Math.max(3,G*0.6);K.set_alpha(rK*X),K.draw_rect(k-C*0.5,q-2,C,4,"#ffffff")}K.set_blend_mode("normal"),K.set_alpha(1)}draw_judgment_line(_,$){let{lane_width:J,hit_pos:Z}=$,Q=J*this.key_count,q=this.get_mania_texture("mania-stage-hint",0);if(q){let K=Math.max(2,Math.round(q.height*(Q/Math.max(1,q.width))));this.backend.set_alpha(1),this.backend.draw_image(q,_,Z-K,Q,K);return}this.backend.draw_rect(_,Z-1,Q,2,"#ffffff")}draw_lane_keys(_,$,J){let{lane_width:Z,hit_pos:Q,spacing:q,note_height:K}=J,V=K+5;this.update_pressed_state(_);for(let w=0;w<this.key_count;w++){let h=(this.active_press_lane_counts[w]??0)>0,z=$+w*Z,X=q5(this.skin,this.key_count,w),W=this.get_column_fallback_index(w),G=this.get_mania_texture(`mania-key${W}`,_),k=this.get_mania_texture(`mania-key${W}d`,_),C=Math.max(1,Z-2*q);if(h&&k){this.backend.set_alpha(1),this.draw_column_sprite(k,z+q,Q,C,V);continue}if(G){this.backend.set_alpha(1),this.draw_column_sprite(G,z+q,Q,C,V);continue}if(this.backend.set_alpha(0.38),this.backend.draw_rect(z+q,Q,C,V,X),h)this.backend.set_alpha(0.72),this.backend.draw_rect(z+q,Q,C,V,"#ff6666")}let H=this.get_mania_texture("mania-stage-bottom",_);if(H){let w=this.key_count*Z,h=Math.max(1,Math.round(H.height*(w/Math.max(1,H.width))));this.backend.set_alpha(1),this.backend.draw_image(H,$,Q,w,h)}this.backend.set_alpha(1)}draw_playfield_frame(_,$,J){let Q=Math.max(1,J-0);this.backend.set_alpha(0.92),this.backend.draw_rect(_,0,$,1.5,"#f0f4ff"),this.backend.draw_rect(_,J-1.5,$,1.5,"#f0f4ff"),this.backend.draw_rect(_,0,1.5,Q,"#f0f4ff"),this.backend.draw_rect(_+$-1.5,0,1.5,Q,"#f0f4ff"),this.backend.set_alpha(1)}render(_){let{backend:$,config:J}=this,Z=this.get_lane_metrics(),Q=Math.max(1,this.key_count*Z.lane_width),q=Math.floor((H9-Q)/2),K=this.get_stage_bottom_height(_,Q),V=Z.hit_pos+Z.note_height+5+K;this.render_background(),$.save(),$.translate(J.offset_x,J.offset_y),$.scale(J.scale,J.scale),this.draw_stage_background(_,q,Q,Z.hit_pos,V),this.draw_bar_lines(_,q,Q,Z.hit_pos),$.set_alpha(0.55),$.draw_rect(q,0,Q,Z.hit_pos,"#000000"),$.set_alpha(1);for(let h=0;h<this.objects.length;h++){let z=this.objects[h];if(V9(z))this.draw_hold_note(z,_,q,Z);else this.draw_note(z,_,q,Z)}this.draw_hit_glow(_,q,Z),this.draw_judgment_line(q,Z),this.draw_lane_keys(_,q,Z),this.draw_playfield_frame(q,Q,V);let H=h0(this.mods,c.Hidden),w=h0(this.mods,c.FadeIn);if(H||w){let h=H?this.hd_coverage:this.fi_coverage,z=Z.hit_pos*h,X=Z.hit_pos*this.gradient_ratio;if(H){let W=Z.hit_pos-z,G=X/z,k=$.create_linear_gradient(q,W,q,Z.hit_pos,[{offset:0,color:"rgba(0,0,0,0)"},{offset:G*0.4,color:"rgba(0,0,0,0.3)"},{offset:G*0.7,color:"rgba(0,0,0,0.75)"},{offset:G*0.9,color:"rgba(0,0,0,0.95)"},{offset:G,color:"rgba(0,0,0,1)"},{offset:1,color:"rgba(0,0,0,1)"}]);$.draw_rect_gradient(q,W,Q,z,k)}else{let W=(z-X)/z,G=$.create_linear_gradient(q,0,q,z,[{offset:0,color:"rgba(0,0,0,1)"},{offset:W,color:"rgba(0,0,0,1)"},{offset:W+(1-W)*0.1,color:"rgba(0,0,0,0.95)"},{offset:W+(1-W)*0.4,color:"rgba(0,0,0,0.75)"},{offset:W+(1-W)*0.7,color:"rgba(0,0,0,0.3)"},{offset:1,color:"rgba(0,0,0,0)"}]);$.draw_rect_gradient(q,0,Q,z,G)}}$.restore()}}class k6{audio_context;gain_node;constructor(_){this.audio_context=_,this.gain_node=this.audio_context.createGain(),this.gain_node.connect(this.audio_context.destination)}set_volume(_){this.gain_node.gain.value=n(_,0,1)}dispose_audio_node(){this.gain_node.disconnect()}}class _9 extends k6{audio_buffer=null;source_node=null;_is_playing=!1;_is_loaded=!1;_duration=0;pause_time=0;speed=1;started_at_context_time=0;started_from_time=0;constructor(_){super(_)}get is_playing(){return this._is_playing}get is_loaded(){return this._is_loaded}get duration(){return this._duration}get speed_multiplier(){return this.speed}get current_time(){if(!this._is_playing)return this.pause_time;let _=(this.audio_context.currentTime-this.started_at_context_time)*1000*this.speed,$=this.started_from_time+_;if($>=this._duration)return this._duration;return Math.max(0,$)}async load(_,$=1){this.stop(),this.release_source(),this.audio_buffer=null;try{this.speed=Math.max(0.1,$),this.audio_buffer=await this.audio_context.decodeAudioData(_.slice(0)),this._duration=Math.max(0,(this.audio_buffer.duration||0)*1000),this._is_loaded=!0,this.pause_time=0,this.started_at_context_time=0,this.started_from_time=0}catch(J){throw console.error("Failed to load audio data",J),this.release_source(),this.audio_buffer=null,J}}async play(_){if(!this.audio_buffer){console.warn("[AudioController] Cannot play: not loaded");return}let $=_!==void 0?_:this.pause_time,J=Math.max(0,Math.min($,this._duration));if(J>=this._duration){this.pause_time=this._duration;return}this.release_source();let Z=this.audio_context.createBufferSource();Z.buffer=this.audio_buffer,Z.playbackRate.value=this.speed,Z.connect(this.gain_node),Z.onended=()=>{if(this.source_node!==Z)return;if(this.source_node=null,this._is_playing)this._is_playing=!1,this.pause_time=this._duration},this.source_node=Z,this.started_from_time=J,this.started_at_context_time=this.audio_context.currentTime,this.pause_time=J,this._is_playing=!0,Z.start(0,J/1000)}pause(){if(!this._is_playing)return;this.pause_time=this.current_time,this.release_source(),this._is_playing=!1}seek(_){let $=Math.max(0,Math.min(_,this._duration));if(this.pause_time=$,!this._is_playing)return;this.restart_from($)}stop(){this.release_source(),this._is_playing=!1,this.pause_time=0,this.started_at_context_time=0,this.started_from_time=0}get_host_time(_){let $=_-this.current_time;return this.audio_context.currentTime+$/1000/this.speed}set_speed(_){let $=Math.max(0.1,_);if(this.speed===$)return;let J=this.current_time;if(this.speed=$,this._is_playing){this.restart_from(J);return}this.pause_time=J}dispose(){this.stop(),this.release_source(),this.audio_buffer=null,this._is_loaded=!1,this._duration=0,this.pause_time=0,this._is_playing=!1,this.started_at_context_time=0,this.started_from_time=0,this.dispose_audio_node()}restart_from(_){if(!this.audio_buffer)return;let $=Math.max(0,Math.min(_,this._duration));this.release_source();let J=this.audio_context.createBufferSource();J.buffer=this.audio_buffer,J.playbackRate.value=this.speed,J.connect(this.gain_node),J.onended=()=>{if(this.source_node!==J)return;if(this.source_node=null,this._is_playing)this._is_playing=!1,this.pause_time=this._duration},this.source_node=J,this.started_from_time=$,this.started_at_context_time=this.audio_context.currentTime,this.pause_time=$,this._is_playing=!0,J.start(0,$/1000)}release_source(){if(!this.source_node)return;this.source_node.onended=null;try{this.source_node.stop()}catch{}this.source_node.disconnect(),this.source_node=null}}class $9{video=null;object_url=null;_offset=0;get element(){return this.video}get offset(){return this._offset}async load(_,$=0){this.dispose(),this._offset=$,this.video=document.createElement("video"),this.video.muted=!0,this.video.loop=!1,this.video.playsInline=!0,this.object_url=URL.createObjectURL(_),this.video.src=this.object_url,await new Promise((J,Z)=>{if(!this.video)return Z(Error("No video element"));this.video.onloadeddata=()=>J(),this.video.onerror=()=>Z(Error("Failed to load video"))})}sync(_){if(!this.video)return;let $=(_-this._offset)/1000;if($<0){if(!this.video.paused)this.video.pause();return}if(Math.abs(this.video.currentTime-$)>0.1)this.video.currentTime=$}play(){if(this.video&&this.video.paused)this.video.play().catch(()=>{console.warn("[VideoController] failed to play video")})}pause(){if(this.video&&!this.video.paused)this.video.pause()}seek(_){if(!this.video)return;let $=Math.max(0,(_-this._offset)/1000);this.video.currentTime=$}dispose(){if(this.video)this.video.pause(),this.video.src="",this.video=null;if(this.object_url)URL.revokeObjectURL(this.object_url),this.object_url=null}}class L4 extends k6{custom_samples=new Map;constructor(_){super(_)}async load_samples(_){this.custom_samples.clear(),await this.load_into_cache(_,this.custom_samples)}async load_samples_from_files(_){this.custom_samples.clear(),await this.load_files_into_cache(_,this.custom_samples)}clear(){this.custom_samples.clear()}play(_,$,J,Z,Q=100,q,K=0){let V=this.get_set_name(_),H=this.get_set_name($);if(q){let w=q.toLowerCase().replace(/\.(wav|mp3|ogg)$/,"");if(this.play_buffer(w,Q,K))return}if(this.play_sound(V,"hitnormal",Z,Q,K),J&I6.Whistle)this.play_sound(H,"hitwhistle",Z,Q,K);if(J&I6.Finish)this.play_sound(H,"hitfinish",Z,Q,K);if(J&I6.Clap)this.play_sound(H,"hitclap",Z,Q,K)}play_sample(_,$,J,Z=100,Q=0){let q=this.get_set_name(_);this.play_sound(q,$,J,Z,Q)}play_sound(_,$,J,Z,Q){let q=!1;if(J>1)q=this.play_buffer(`${_}-${$}${J}`,Z,Q);if(!q)this.play_buffer(`${_}-${$}`,Z,Q)}play_buffer(_,$,J){let Z=this.custom_samples.get(_);if(!Z)return!1;let Q=this.audio_context.createBufferSource();Q.buffer=Z;let q=this.audio_context.createGain();return q.gain.value=$/100,Q.connect(q),q.connect(this.gain_node),Q.start(J),!0}get_set_name(_){switch(_){case 3:return"drum";case 2:return"soft";default:return"normal"}}get_sample_key_from_url(_){let J=_.split("?")[0].split("#")[0].split("/").pop();if(!J)return null;if(!J.endsWith(".wav")&&!J.endsWith(".mp3")&&!J.endsWith(".ogg"))return null;return J.toLowerCase().replace(/\.(wav|mp3|ogg)$/,"")}async load_into_cache(_,$){if(_.length==0)return;let J=[],Z=_.map(async(Q)=>{let q=this.get_sample_key_from_url(Q);if(!q){J.push(Q);return}if($.has(q))return;await this.load_single_sample(Q,q,$,J)});await Promise.all(Z),this.report_failures(J.length,$.size)}async load_single_sample(_,$,J,Z){try{let Q=await fetch(_);if(!Q.ok){Z.push(_);return}let q=await Q.arrayBuffer();if(q.byteLength<128){Z.push(_);return}let K=await this.audio_context.decodeAudioData(q.slice(0));J.set($,K)}catch{Z.push(_)}}async load_files_into_cache(_,$){if(_.size==0)return;let J=[],Z=[];for(let[Q,q]of _)Z.push((async()=>{let K=this.get_sample_key_from_url(Q);if(!K||$.has(K))return;if(q.byteLength<128){J.push(Q);return}try{let V=await this.audio_context.decodeAudioData(q.slice(0));$.set(K,V)}catch{J.push(Q)}})());await Promise.all(Z),this.report_failures(J.length,$.size)}report_failures(_,$){if(_>0&&$===0)console.warn(`[HitsoundController] Failed to load ${_} hitsounds`)}dispose(){this.custom_samples.clear(),this.dispose_audio_node()}}class D4{files;audio_filename;background_filename;video_filename;video_offset;constructor(_){this.files=_.files,this.audio_filename=_.audio_filename,this.background_filename=_.background_filename,this.video_filename=_.video_filename,this.video_offset=_.video_offset}resolve(){let _=this.audio_filename?this.find_file(this.audio_filename):void 0,$=this.background_filename?this.find_file(this.background_filename):void 0,J=this.video_filename?this.find_file(this.video_filename):void 0;return{audio:_,background:$?new Blob([$]):void 0,video:J?new Blob([J]):void 0,video_offset:this.video_offset}}find_file(_){if(this.files.has(_))return this.files.get(_);let $=_.toLowerCase();for(let[J,Z]of this.files)if(J.toLowerCase()===$)return Z;return}}var tK=100,eK=20;class A4{audio;hitsounds;resources=null;timing_points=[];timing_resolver=null;audio_offset=20;next_hit_object_index=0;hitsound_lookahead_ms=tK;constructor(_,$){this.audio=_;this.hitsounds=$}set_context(_,$,J,Z){this.resources=_,this.timing_points=$,this.timing_resolver=J,this.audio_offset=Z,this.next_hit_object_index=0}set_audio_offset(_){this.audio_offset=_}set_hitsound_lookahead(_){this.hitsound_lookahead_ms=Math.max(0,_)}update_hit_index(_){if(!this.resources?.beatmap)return;let $=this.resources.beatmap.HitObjects;if(this.next_hit_object_index>0&&$[this.next_hit_object_index-1].time>_)this.next_hit_object_index=0;while(this.next_hit_object_index<$.length&&$[this.next_hit_object_index].time<_)this.next_hit_object_index++}schedule_hitsounds(_){if(!this.resources?.beatmap||!this.audio.is_playing)return 0;let $=0,J=this.resources.beatmap.HitObjects,Z=_+this.hitsound_lookahead_ms;while(this.next_hit_object_index<J.length&&J[this.next_hit_object_index].time<=Z){let Q=J[this.next_hit_object_index];if(Q.time>=_-eK)this.play_hitsound(Q),$++;this.next_hit_object_index++}return $}play_hitsound(_){let $=this.get_timing_point(_.time),J=this.resolve_sample_settings($,_.hitSample);if((_.type&J_.Slider)===0){this.play_node_hitsound(_.time,_.hitSound,J,J.custom_filename);return}let Z=this.resources?.beatmap;if(!Z)return;let Q=this.timing_resolver?.get_state_at(_.time)??{base_beat_length:600,sv_multiplier:1},q=_.length??0,K=i8(q,Z,Q),V=Math.max(1,_.slides||1);if(K<=0||q<=0){this.play_node_hitsound(_.time,_.hitSound,J,J.custom_filename);return}let H=_.edgeSounds??[],w=_.edgeSets??[];for(let X=0;X<=V;X++){let W=_.time+K*X,G=H.length>0?H[X]??0:X==0?_.hitSound:0,k=w.length>0?w[X]:void 0,C=this.resolve_edge_sets(J,k),Y=X==0?J.custom_filename:void 0;this.play_node_hitsound(W,G,{...J,...C},Y)}let h=a8(Z,Q),z=s8({start_time:_.time,span_duration:K,span_count:V,length:q,tick_distance:h.tick_distance,min_distance_from_end:h.min_distance_from_end,get_position_at_progress:()=>[0,0]});for(let X of z.ticks){let W=this.audio.get_host_time(X.time+this.audio_offset);this.hitsounds.play_sample(J.normal_set,"slidertick",J.index,J.volume,W)}}play_node_hitsound(_,$,J,Z){let Q=this.audio.get_host_time(_+this.audio_offset);this.hitsounds.play(J.normal_set,J.addition_set,$,J.index,J.volume,Z,Q)}resolve_sample_settings(_,$){let{volume:J,sampleSet:Z,sampleSet:Q,sampleIndex:q}=_,K=void 0;if($){if($.normalSet!==0){if(Z=$.normalSet,$.additionSet===0)Q=Z}if($.additionSet!==0)Q=$.additionSet;if($.index!==0)q=$.index;if($.volume!==0)J=$.volume;K=$.filename||void 0}if(Z===0)Z=1;if(Q===0)Q=Z;return{normal_set:Z,addition_set:Q,index:q,volume:J,custom_filename:K}}resolve_edge_sets(_,$){let{normal_set:J,addition_set:Z}=_;if($){let{normalSet:Q,additionSet:q}=$;if(Q!==0)J=Q;if(q!==0)Z=q;else Z=J}if(J===0)J=1;if(Z===0)Z=J;return{normal_set:J,addition_set:Z}}get_timing_point(_){let $=this.timing_points;if($.length==0)return{time:0,beatLength:600,meter:4,sampleSet:1,sampleIndex:1,volume:100,uninherited:1,effects:0};for(let J=$.length-1;J>=0;J--)if($[J].time<=_)return $[J];return $[0]}}var _V=[".wav",".mp3",".ogg"],$V=/^(normal|soft|drum)-(hitnormal|hitwhistle|hitfinish|hitclap|slidertick|sliderslide|sliderwhistle)\d*$/i,sZ=(_,$,J)=>{let Z=new Set;for(let K of _.HitObjects){let V=K.hitSample?.filename?.trim();if(V)Z.add(V.toLowerCase())}let Q=new Map,q=J?.toLowerCase();for(let[K,V]of $){let H=K.toLowerCase();if(!JV(H))continue;if(q&&H==q)continue;let w=ZV(H),h=w.replace(/\.(wav|mp3|ogg)$/,""),z=$V.test(h),X=Z.has(w)||Z.has(h)||Z.has(H);if(z||X)Q.set(K,V)}return Q},JV=(_)=>{for(let $ of _V)if(_.endsWith($))return!0;return!1},ZV=(_)=>{let $=_.split("?")[0].split("#")[0];return $.split("/").pop()??$};var QV=["rgb(255, 192, 0)","rgb(0, 202, 0)","rgb(18, 124, 255)","rgb(242, 24, 57)"],P4=(_)=>{let $=_.trim().toLowerCase();if($==="1"||$==="true"||$==="yes")return!0;if($==="0"||$==="false"||$==="no")return!1;return},iZ=(_)=>{let $={general:{},fonts:{},colours:{combo_colors:[]}},J="",Z=_.split(/\r?\n/);for(let Q of Z){let q=Q.trim();if(q.length===0||q.startsWith("//"))continue;if(q.startsWith("[")&&q.endsWith("]")){J=q.slice(1,-1).toLowerCase();continue}let K=q.indexOf(":");if(K===-1)continue;let V=q.slice(0,K).trim().toLowerCase(),H=q.slice(K+1).trim();switch(J){case"general":KV($.general,V,H);break;case"colours":VV($.colours,V,H);break;case"fonts":qV($.fonts,V,H);break}}if($.colours.combo_colors.length===0)$.colours.combo_colors=[...QV];return $},qV=(_,$,J)=>{switch($){case"hitcircleprefix":if(J.length>0)_.hit_circle_prefix=J.trim();break;case"hitcircleoverlap":{let Z=Number.parseInt(J,10);if(Number.isFinite(Z))_.hit_circle_overlap=Z;break}}},KV=(_,$,J)=>{switch($){case"name":_.name=J;break;case"author":_.author=J;break;case"version":_.version=J;break;case"hitcircleoverlayabovenumber":case"hitcircleoverlayabovenumer":_.hit_circle_overlay_above_number=P4(J);break;case"sliderballflip":_.slider_ball_flip=P4(J);break;case"allowslidertainttint":case"allowsliderballtint":_.allow_slider_ball_tint=P4(J);break;case"sliderballframes":{let Z=Number.parseInt(J,10);if(Number.isFinite(Z)&&Z>0)_.slider_ball_frames=Z;break}case"animationframerate":{let Z=Number.parseInt(J,10);if(Number.isFinite(Z))_.animation_framerate=Z;break}}},VV=(_,$,J)=>{let Z=HV(J);if(!Z)return;let Q=$.match(/^combo(\d+)$/);if(Q){let q=parseInt(Q[1])-1;while(_.combo_colors.length<=q)_.combo_colors.push("");_.combo_colors[q]=Z;return}switch($){case"sliderborder":_.slider_border=Z;break;case"slidertrackoverride":_.slider_track_override=Z;break;case"sliderball":_.slider_ball=Z;break;case"spinnerbackground":_.spinner_background=Z;break}},HV=(_)=>{let $=_.split(",").map((q)=>parseInt(q.trim()));if($.length<3||$.some(isNaN))return null;let[J,Z,Q]=$;if($.length>=4){let q=$[3]/255;return`rgba(${J}, ${Z}, ${Q}, ${q.toFixed(2)})`}return`rgb(${J}, ${Z}, ${Q})`},aZ=(_,$)=>{let J={..._};if($.colours.combo_colors.length>0)J.combo_colors=$.colours.combo_colors.filter((Z)=>Z.length>0);if($.colours.slider_border)J.slider_border_color=$.colours.slider_border;if($.colours.slider_track_override)J.slider_track_override=$.colours.slider_track_override;if($.colours.slider_ball)J.slider_ball_color=$.colours.slider_ball;if($.colours.spinner_background)J.spinner_background_color=$.colours.spinner_background;if($.general.hit_circle_overlay_above_number!==void 0)J.hit_circle_overlay_above_number=$.general.hit_circle_overlay_above_number;if($.general.slider_ball_flip!==void 0)J.slider_ball_flip=$.general.slider_ball_flip;if($.general.allow_slider_ball_tint!==void 0)J.allow_slider_ball_tint=$.general.allow_slider_ball_tint;if($.general.slider_ball_frames!==void 0)J.slider_ball_frames=$.general.slider_ball_frames;if($.general.animation_framerate!==void 0)J.animation_framerate=$.general.animation_framerate;if($.fonts.hit_circle_prefix!==void 0)J.hit_circle_prefix=$.fonts.hit_circle_prefix;if($.fonts.hit_circle_overlap!==void 0)J.hit_circle_overlap=$.fonts.hit_circle_overlap;return J};var rZ=[".png",".jpg",".jpeg",".webp"],eZ=(_,$)=>{if(_.has($))return{name:$,data:_.get($)};let J=$.toLowerCase();for(let[Z,Q]of _)if(Z.toLowerCase()===J)return{name:Z,data:Q};for(let[Z,Q]of _){let q=Z.split("/").pop();if(q&&q.toLowerCase()===J)return{name:Z,data:Q}}return null},wV=(_,$)=>{for(let J=0;J<$.length;J++){let Z=$[J];for(let Q=0;Q<rZ.length;Q++){let q=`${Z}${rZ[Q]}`,K=eZ(_,q);if(K)return{filename:K.name,data:K.data}}}return null},hV=async(_)=>{let $=new Blob([_.data]),J=URL.createObjectURL($);try{let Z=new Image;Z.src=J,await Z.decode();let Q=_.filename.toLowerCase().includes("@2x")?2:1;return{image:{source:Z,width:Z.naturalWidth/Q,height:Z.naturalHeight/Q},url:J}}catch(Z){return URL.revokeObjectURL(J),console.warn(`[Skin] Failed to decode ${_.filename}`,Z),null}},H5=(_,$)=>{if(_.width<=$&&_.height<=$)return _;let J=_.source,Z=Number(J?.width??0),Q=Number(J?.height??0);if(Z<=0||Q<=0||_.width<=0||_.height<=0)return _;let q=Z/_.width,K=Q/_.height,V=Math.min(_.width,$),H=Math.min(_.height,$),w=Math.max(1,Math.round(V*q)),h=Math.max(1,Math.round(H*K)),z=Math.max(0,Math.floor((Z-w)/2)),X=Math.max(0,Math.floor((Q-h)/2)),W=document.createElement("canvas");W.width=w,W.height=h;let G=W.getContext("2d");if(!G)return _;return G.drawImage(_.source,z,X,w,h,0,0,w,h),{source:W,width:V,height:H}},w5=(_,$)=>{if(_.width<$||_.height<$)return null;return _},C0=async(_,$)=>{let J=wV(_,$);if(!J)return null;return hV(J)},zV=async(_,$)=>{let J=[],Z=Math.max(1,Math.min(120,$));for(let Q=0;Q<Z;Q++){let q=await C0(_,[`sliderb${Q}@2x`,`sliderb${Q}`]);if(!q){if(Q===0)continue;break}J.push(q)}return J},XV=async(_,$)=>{let J=[];for(let Z=0;Z<10;Z++){let Q=await C0(_,[`${$}-${Z}@2x`,`${$}-${Z}`]);if(!Q)return[];J.push(Q)}return J},tZ=async(_,$)=>{for(let J=0;J<$.length;J++){let Z=$[J],Q=[];for(let q=0;q<64;q++){let K=await C0(_,[`${Z}${q}@2x`,`${Z}${q}`,`${Z}-${q}@2x`,`${Z}-${q}`]);if(!K)break;Q.push(K)}if(Q.length>0)return Q}return[]},GV=async(_,$)=>{let J=[];for(let Z=0;Z<128;Z++){let Q=await C0(_,[`${$}-${Z}@2x`,`${$}-${Z}`]);if(!Q)break;J.push(Q)}return J},WV=(_)=>{let $=eZ(_,"skin.ini");if(!$)return null;try{return new TextDecoder("utf-8").decode($.data)}catch(J){return console.warn("[Skin] Failed to parse skin.ini",J),null}},_Q=async(_,$)=>{let J=[],Z=_,Q=WV($);if(Q)Z=aZ(Z,iZ(Q));let q={},K=await C0($,["hitcircle@2x","hitcircle"]);if(K){let F=w5(H5(K.image,512),32);if(F)q.hitcircle=F,J.push(K.url)}let V=await C0($,["hitcircleoverlay@2x","hitcircleoverlay"]);if(V){let F=w5(H5(V.image,512),32);if(F)q.hitcircleoverlay=F,J.push(V.url)}let H=await C0($,["sliderstartcircle@2x","sliderstartcircle"]);if(H){let F=w5(H5(H.image,512),32);if(F)q.sliderstartcircle=F,J.push(H.url)}let w=await C0($,["sliderstartcircleoverlay@2x","sliderstartcircleoverlay"]);if(w){let F=w5(H5(w.image,512),32);if(F)q.sliderstartcircleoverlay=F,J.push(w.url)}let h=await C0($,["sliderendcircle@2x","sliderendcircle"]);if(h){let F=w5(H5(h.image,512),32);if(F)q.sliderendcircle=F,J.push(h.url)}let z=await C0($,["sliderendcircleoverlay@2x","sliderendcircleoverlay"]);if(z){let F=w5(H5(z.image,512),32);if(F)q.sliderendcircleoverlay=F,J.push(z.url)}let X=await C0($,["approachcircle@2x","approachcircle"]);if(X)q.approachcircle=X.image,J.push(X.url);let W=await zV($,Z.slider_ball_frames);if(W.length>0){let F=[];for(let M=0;M<W.length;M++)F.push(W[M].image),J.push(W[M].url);q.sliderball_frames=F,q.sliderball=F[0]}else{let F=await C0($,["sliderb@2x","sliderb","sliderball@2x","sliderball"]);if(F)q.sliderball=F.image,J.push(F.url)}let G=await C0($,["sliderb-nd@2x","sliderb-nd"]);if(G)q.sliderball_nd=G.image,J.push(G.url);let k=await C0($,["sliderb-spec@2x","sliderb-spec"]);if(k)q.sliderball_spec=k.image,J.push(k.url);let C=await C0($,["sliderfollowcircle@2x","sliderfollowcircle"]);if(C)q.sliderfollowcircle=C.image,J.push(C.url);let Y=await C0($,["reversearrow@2x","reversearrow"]);if(Y)q.reversearrow=Y.image,J.push(Y.url);let U=await tZ($,["reversearrow"]);if(U.length>0){let F=[];for(let M=0;M<U.length;M++)F.push(U[M].image),J.push(U[M].url);if(q.reversearrow_frames=F,!q.reversearrow)q.reversearrow=F[0]}let N=await C0($,["sliderb0@2x","sliderb0","sliderb@2x","sliderb"]);if(N)q.sliderb=N.image,J.push(N.url);let I=await C0($,["sliderscorepoint@2x","sliderscorepoint","sliderpoint10@2x","sliderpoint10"]);if(I)q.sliderscorepoint=I.image,J.push(I.url);let f=await C0($,["followpoint@2x","followpoint"]);if(f)q.followpoint=f.image,J.push(f.url);let y=await GV($,"followpoint");if(y.length>0){let F=[];for(let M=0;M<y.length;M++)F.push(y[M].image),J.push(y[M].url);if(q.followpoint_frames=F,!q.followpoint)q.followpoint=F[0]}let D=await XV($,Z.hit_circle_prefix||"default");if(D.length>0){let F=[];for(let M=0;M<D.length;M++)F.push(D[M].image),J.push(D[M].url);q.combo_digits=F,q.combo_overlap=Z.hit_circle_overlap}let L=["mania-stage-left","mania-stage-right","mania-stage-bottom","mania-stage-light","mania-stage-hint","mania-key1","mania-key1d","mania-key2","mania-key2d","mania-keys","mania-keysd","mania-note1","mania-note2","mania-notes","mania-note1h","mania-note2h","mania-notesh","mania-note1l","mania-note2l","mania-notesl","mania-note1t","mania-note2t","mania-notest"],v={},m={};for(let F=0;F<L.length;F++){let M=L[F],j=M.toLowerCase(),A=await C0($,[`${M}@2x`,M]);if(A)v[j]=A.image,J.push(A.url);let i=await tZ($,[M]);if(i.length>0){let a=[];for(let T=0;T<i.length;T++)a.push(i[T].image),J.push(i[T].url);if(m[j]=a,!v[j])v[j]=a[0]}}if(Object.keys(v).length>0)q.mania_textures=v;if(Object.keys(m).length>0)q.mania_animations=m;return{config:Z,elements:q,dispose:()=>{for(let F=0;F<J.length;F++)URL.revokeObjectURL(J[F])}}};var JQ=(_)=>{return new URL(_,import.meta.url).toString()},$Q=["./default-skin/","./assets/default-skin/"],J9=()=>{let _=[];for(let $=0;$<$Q.length;$++)_.push(JQ($Q[$]));return _},kV=()=>{return new URL("manifest.json",J9()[0]).toString()},ZQ=(_,$)=>{let J=$??J9()[0];return new URL(_,J).toString()},CV=(_)=>{return JQ(_)};import NV from"jszip";var QQ=(_)=>{let $=new Map;for(let[J,Z]of _){if(Z instanceof ArrayBuffer){$.set(J,Z);continue}$.set(J,new TextEncoder().encode(Z).buffer)}return $},qQ=async(_)=>{let $=await NV.loadAsync(_),J=new Map,Z=Object.entries($.files);for(let Q=0;Q<Z.length;Q++){let[q,K]=Z[Q];if(K.dir)continue;J.set(q,await K.async("arraybuffer"))}return J},KQ=(_,$)=>{let J=new Map;if(_)for(let[Z,Q]of _)J.set(Z,Q);if($)for(let[Z,Q]of $)J.set(Z,Q);return J},VQ=(_,$,J)=>{let Z=new Map(_);if($){for(let[Q,q]of $)if(!Z.has(Q))Z.set(Q,q)}if(J){for(let[Q,q]of J)if(!Z.has(Q))Z.set(Q,q)}return Z},HQ=async(_,$)=>{for(let J=0;J<_.length;J++){let Z=_[J];try{let Q=await fetch($("manifest.json",Z));if(!Q.ok)continue;let q=await Q.json();if(!Array.isArray(q)||q.length===0)continue;let K=new Map,V=q.filter((w)=>!!w&&!w.endsWith("/")),H=24;for(let w=0;w<V.length;w+=H){let h=V.slice(w,w+H),z=await Promise.all(h.map(async(X)=>{try{let W=await fetch($(X,Z));if(!W.ok)return null;return{name:X,data:await W.arrayBuffer()}}catch{return null}}));for(let X=0;X<z.length;X++){let W=z[X];if(!W)continue;K.set(W.name,W.data)}}if(K.size>0)return K}catch{continue}}return null};var UV=0.42,IV=30,bV=100,BV=100,FV=J9();class hQ{backend;renderer=null;audio_context;audio;hitsounds;video=null;resources=null;animation_frame=null;skin;base_skin;mods;custom_rate=null;renderer_config;start_offset;start_mode;custom_start_time;music_volume;hitsound_volume;audio_offset;beatmap_audio_lead_in=0;background_url=null;loaded_skin_elements=null;loaded_skin_dispose=null;should_load_default_skin=!0;default_skin_folder_base_urls=FV;default_skin_files=null;default_skin_loading=null;custom_skin_files=null;listeners=new Map;is_loaded_flag=!1;hitsound_scheduler;timing_points=[];timing_resolver=null;resize_observer=null;key_handler=null;options;enable_fps_counter=!1;fps_frame_count=0;fps_last_update=0;current_fps=0;time_smoothing=0.1;smoothed_delta=0;max_frame_delta=100;resync_threshold_ms=IV;debug_sync=!1;debug_sync_last_emit_at=0;last_timestamp=0;smooth_time=0;constructor(_){this.options=_,this.backend=H4(_.backend_type??"auto"),this.skin=W4(),this.base_skin=this.skin,this.mods=_.mods??0,this.renderer_config={...D_,..._.renderer_config},this.calculate_layout(_.canvas.width,_.canvas.height,_.playfield_scale),this.start_mode=_.start_mode??(Number.isFinite(_.start_time)?"custom":"preview"),this.custom_start_time=Number.isFinite(_.start_time)?Math.max(0,_.start_time):null,this.start_offset=0,this.music_volume=_.volume??0.5,this.hitsound_volume=_.hitsound_volume??0.25,this.audio_offset=_.audio_offset??20,this.backend.initialize(_.canvas,this.renderer_config.use_high_dpi);let $=window.AudioContext??window.webkitAudioContext;if(!$)throw Error("Web Audio API is not supported in this environment");if(this.audio_context=new $,this.audio=new _9(this.audio_context),this.hitsounds=new L4(this.audio_context),this.hitsound_scheduler=new A4(this.audio,this.hitsounds),this.hitsound_scheduler.set_hitsound_lookahead(_.hitsound_lookahead_ms??BV),this.audio.set_volume(this.music_volume),this.hitsounds.set_volume(this.hitsound_volume),_.auto_resize)this.setup_auto_resize();this.enable_fps_counter=_.enable_fps_counter??!1,this.fps_last_update=performance.now();let J=_.time_smoothing;if(Number.isFinite(J))this.time_smoothing=Math.max(0,Math.min(1,J));let Z=_.max_frame_delta;if(Number.isFinite(Z))this.max_frame_delta=Math.max(10,Z);let Q=_.audio_resync_threshold_ms;if(Number.isFinite(Q))this.resync_threshold_ms=Math.max(0,Q);this.debug_sync=_.debug_sync??!1}async load_osz(_,$){try{let Z=await new A1().load_osz(_,{difficulty:$});return this.resources=Z,this.setup()}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async load_files(_,$){try{let J=new A1;return this.resources=await J.load_from_files(_,{difficulty:$}),this.setup()}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async load_custom_hitsounds(_){if(_.length==0){console.warn("[BeatmapPlayer] No custom hitsound URLs were provided"),this.hitsounds.clear();return}try{await this.hitsounds.load_samples(_)}catch($){console.error("[BeatmapPlayer] Failed to load custom hitsounds:",$)}}async load_map_custom_hitsounds(){if(!this.resources?.beatmap)return;let _=VQ(this.resources.files,this.custom_skin_files,this.default_skin_files),$=sZ(this.resources.beatmap,_,this.resources.audio_filename);if($.size==0){this.hitsounds.clear();return}try{await this.hitsounds.load_samples_from_files($)}catch(J){console.error("[BeatmapPlayer] Failed to load map custom hitsounds:",J),this.hitsounds.clear()}}async load_beatmap(_,$,J,Z,Q){return this.resources={beatmap:_,available_difficulties:[],files:new Map,audio:$,background:J,video:Z,video_offset:Q},this.setup()}async load_osu_content(_,$){try{await wQ();let J=await this.parse_content(_);return this.load_beatmap(J,$)}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async load_beatmap_files(_,$,J,Z,Q){try{await wQ();let q=typeof _==="string",K=_ instanceof Uint8Array?_:_ instanceof ArrayBuffer?new Uint8Array(_):null,V=await this.parse_content(q?_:K);return this.load_beatmap(V,$,J,Z,Q)}catch(q){let K=q instanceof Error?q.message:String(q);return this.emit("error","INVALID_BEATMAP",K),G_("INVALID_BEATMAP",K)}}async setup(){if(!this.resources)return G_("NOT_LOADED","No resources loaded");let{beatmap:_}=this.resources;this.timing_points=r8([..._.TimingPoints]),this.timing_resolver=new W6(this.timing_points),this.resolve_assets(),await this.load_map_skin();let{audio:$,video:J,video_offset:Z}=this.resources;if($)try{await this.audio.load($,this.resolve_speed_multiplier())}catch(Q){let q=Q instanceof Error?Q.message:String(Q);return this.emit("error","AUDIO_DECODE_ERROR",q),G_("AUDIO_DECODE_ERROR",q)}if(this.beatmap_audio_lead_in=Math.max(0,_.General.AudioLeadIn||0),this.hitsound_scheduler.set_context(this.resources,this.timing_points,this.timing_resolver,this.get_effective_audio_offset()),this.load_map_custom_hitsounds(),J)this.video=new $9,await this.video.load(J,Z??0);try{this.renderer=this.create_renderer(_),this.renderer.initialize(_),this.renderer.precompute()}catch(Q){let q=Q instanceof Error?Q.message:String(Q);return this.emit("error","UNSUPPORTED_MODE",q),G_("UNSUPPORTED_MODE",q)}return this.start_offset=this.resolve_initial_start_offset(),this.hitsound_scheduler.update_hit_index(this.start_offset),this.load_background(),this.is_loaded_flag=!0,this.emit("loaded",_,this.resources),requestAnimationFrame(()=>this.render_frame(this.start_offset)),d4(this.resources)}async load_background(){if(this.resources)this.resolve_assets();if(!this.resources?.background||!this.renderer)return;try{let _=new Image;if(this.background_url)URL.revokeObjectURL(this.background_url);this.background_url=URL.createObjectURL(this.resources.background),_.src=this.background_url,await _.decode(),this.renderer.set_background({source:_,width:_.width,height:_.height});let $=this.audio.is_playing?this.current_time:this.start_offset;requestAnimationFrame(()=>this.render_frame($))}catch(_){console.warn("[BeatmapPlayer] Failed to load background",_)}}resolve_assets(){if(!this.resources)return;let _=new D4(this.resources).resolve();if(!this.resources.audio&&_.audio)this.resources.audio=_.audio;if(!this.resources.background&&_.background)this.resources.background=_.background;if(!this.resources.video&&_.video)this.resources.video=_.video;if(!this.resources.video_offset&&_.video_offset)this.resources.video_offset=_.video_offset}create_renderer(_){switch(_.General.Mode){case 0:return new e8(this.backend,this.skin,this.mods,this.renderer_config,this.loaded_skin_elements);case 3:return new L_(this.backend,this.skin,this.mods,this.renderer_config,this.loaded_skin_elements);case 1:case 2:default:throw Error(`Unsupported game mode: ${Q9[_.General.Mode]??_.General.Mode}`)}}get_last_object_time(){if(!this.resources?.beatmap.HitObjects.length)return 0;let _=this.resources.beatmap.HitObjects,$=0;for(let J of _){let Z=J.endTime||J.time;if(Z>$)$=Z}return $}resolve_preview_start_offset(){if(!this.resources?.beatmap)return 0;let _=this.resources.beatmap.General.PreviewTime;if(_>0)return _;return Math.max(0,this.get_last_object_time()*UV)}resolve_initial_start_offset(){let _=Math.max(0,this.duration),$=this.resources?.beatmap?.General.Mode;if(this.start_mode=="beginning")return 0;if(this.start_mode=="custom"){if(this.custom_start_time!==null)return Math.max(0,Math.min(this.custom_start_time,_));return Math.max(0,Math.min(this.resolve_preview_start_offset(),_))}if($===3)return 0;return Math.max(0,Math.min(this.resolve_preview_start_offset(),_))}async play(){if(!this.renderer||!this.is_loaded_flag){console.warn("[BeatmapPlayer] Cannot play: not loaded");return}if(this.audio.is_playing)return;if(this.audio_context.state==="suspended")await this.audio_context.resume();try{await this.audio.play(this.to_track_time(this.start_offset))}catch(_){console.warn("[BeatmapPlayer] Failed to start audio",_),this.emit("statechange",!1);return}this.video?.play(),this.start_render_loop(),this.emit("play"),this.emit("statechange",!0)}pause(){if(!this.audio.is_playing)return;this.start_offset=this.to_beatmap_time(this.audio.current_time),this.audio.pause(),this.video?.pause(),this.stop_render_loop(),this.emit("pause"),this.emit("statechange",!1)}set_mods(_){this.mods=_;let $=this.resolve_speed_multiplier();if(this.renderer?.set_mods(_),this.audio.set_speed($),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}set_rate(_){if(_===null)this.custom_rate=null;else if(Number.isFinite(_))this.custom_rate=Math.max(0.1,_);if(this.audio.set_speed(this.resolve_speed_multiplier()),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}seek(_){this.start_offset=Math.max(0,Math.min(_,this.duration)),this.hitsound_scheduler.update_hit_index(this.start_offset),this.audio.seek(this.to_track_time(this.start_offset)),this.video?.seek(this.start_offset),this.video?.sync(this.start_offset),this.last_timestamp=performance.now(),this.smooth_time=this.start_offset,this.smoothed_delta=0,this.emit("seek",this.start_offset),this.render_frame(this.start_offset),this.renderer?.on_seek(this.start_offset)}async set_difficulty(_){if(!this.resources)return G_("NOT_LOADED","No beatmap resources loaded");let $=this.is_playing;this.stop();try{let Z=await new A1().load_from_files(this.resources.files,{difficulty:_});this.resources=Z;let Q=await this.setup();if(Q.success&&$)this.play();return Q}catch(J){let Z=J instanceof Error?J.message:String(J);return this.emit("error","INVALID_BEATMAP",Z),G_("INVALID_BEATMAP",Z)}}async parse_content(_){let $=typeof _=="string"?new TextEncoder().encode(_):_;return await YV($)}stop(){this.pause(),this.start_offset=0,this.audio.seek(this.to_track_time(0)),this.hitsound_scheduler.update_hit_index(0),this.render_frame(0)}dispose(){if(this.stop(),this.backend.dispose(),this.audio.dispose(),this.hitsounds.dispose(),this.video?.dispose(),this.renderer?.dispose(),this.background_url)URL.revokeObjectURL(this.background_url),this.background_url=null;if(this.resize_observer)this.resize_observer.disconnect(),this.resize_observer=null;if(this.key_handler)window.removeEventListener("keydown",this.key_handler),this.key_handler=null;if(this.audio_context&&this.audio_context.state!=="closed")this.audio_context.close().catch(()=>{});this.renderer=null,this.resources=null,this.is_loaded_flag=!1,this.listeners.clear(),this.release_loaded_skin()}get current_time(){return this.to_beatmap_time(this.audio.current_time)}get duration(){if(this.audio.duration>0)return Math.max(0,this.audio.duration-this.beatmap_audio_lead_in);return this.get_last_object_time()}get is_playing(){return this.audio.is_playing}get is_loaded(){return this.is_loaded_flag}get mode(){if(!this.resources)return"standard";switch(this.resources.beatmap.General.Mode){case 1:return"taiko";case 2:return"catch";case 3:return"mania";default:return"standard"}}get beatmap(){return this.resources?.beatmap??null}get available_difficulties(){return this.resources?.available_difficulties??[]}get background(){return this.resources?.background}get config(){return this.renderer_config}resize(_,$,J){if(this.backend.resize(_,$),this.calculate_layout(_,$,J),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}update_config(_){if(this.renderer_config={...this.renderer_config,..._},this.renderer?.update_config(this.renderer_config),this.is_loaded_flag)requestAnimationFrame(()=>this.render_frame(this.current_time))}async load_skin_files(_){if(!_){this.custom_skin_files=null,await this.reload_skin_runtime();return}this.custom_skin_files=QQ(_),await this.reload_skin_runtime()}async load_skin_osk(_){await this.load_skin_files(await qQ(_))}clear_loaded_skin(){this.custom_skin_files=null,this.reload_skin_runtime()}async load_map_skin(){if(this.release_loaded_skin(),!this.resources)return;try{await this.ensure_default_skin_loaded();let _=this.merge_skin_sources(),$=await _Q(this.base_skin,_);this.skin=$.config,this.loaded_skin_elements=$.elements,this.loaded_skin_dispose=$.dispose}catch(_){console.warn("[BeatmapPlayer] Failed to load map skin assets",_),this.skin=this.base_skin,this.loaded_skin_elements=null,this.loaded_skin_dispose=null}}release_loaded_skin(){if(this.loaded_skin_dispose)this.loaded_skin_dispose(),this.loaded_skin_dispose=null;this.loaded_skin_elements=null}async ensure_default_skin_loaded(){if(!this.should_load_default_skin){this.default_skin_files=null;return}await this.load_default_skin_files()}async load_default_skin_files(){if(this.default_skin_files)return;if(this.default_skin_loading){await this.default_skin_loading;return}this.default_skin_loading=(async()=>{try{let _=await this.load_default_skin_folder_files();if(_&&_.size>0){this.default_skin_files=_;return}}catch(_){console.warn("[BeatmapPlayer] Failed to load default skin folder",_),this.default_skin_files=null}})(),await this.default_skin_loading,this.default_skin_loading=null}async load_default_skin_folder_files(){try{return HQ(this.default_skin_folder_base_urls,ZQ)}catch{return null}}merge_skin_sources(){return KQ(this.default_skin_files,this.custom_skin_files)}setup_auto_resize(){this.resize_observer=new ResizeObserver(()=>{let $=this.options.canvas.parentElement;if($){let J=$.getBoundingClientRect();this.resize(J.width,J.height,this.options.playfield_scale)}}),this.resize_observer.observe(this.options.canvas.parentElement||this.options.canvas)}toggle_pause(){if(!this.is_loaded_flag)return;if(this.is_playing)this.pause();else this.play()}toggle_grid(){if(this.renderer_config.grid_level===0)this.renderer_config.grid_level=32;else this.renderer_config.grid_level=0;this.render_frame(this.current_time)}calculate_layout(_,$,J){let q=0.9;if(Number.isFinite(J))q=J;let K=_*q/512,V=$*q/384,H=Math.min(K,V);if(this.renderer_config.scale=H,this.renderer_config.offset_x=Math.floor((_-512*H)/2),this.renderer_config.offset_y=Math.floor(($-384*H)/2),this.renderer)this.renderer.update_config(this.renderer_config)}set_volume(_){this.music_volume=_,this.audio.set_volume(_)}set_hitsound_volume(_){this.hitsound_volume=_,this.hitsounds.set_volume(_)}set_offset(_){if(this.audio_offset=_,this.hitsound_scheduler.set_audio_offset(this.get_effective_audio_offset()),this.is_loaded_flag)this.seek(this.current_time)}on(_,$){if(!this.listeners.has(_))this.listeners.set(_,new Set);this.listeners.get(_).add($)}off(_,$){this.listeners.get(_)?.delete($)}emit(_,...$){let J=this.listeners.get(_);if(J)for(let Z of J)Z(...$)}start_render_loop(){if(this.animation_frame!==null)return;this.last_timestamp=performance.now(),this.smooth_time=this.current_time,this.smoothed_delta=0;let _=($)=>{if(!this.audio.is_playing){this.animation_frame=null;return}let J=Math.max(0,$-this.last_timestamp);this.last_timestamp=$;let Z=Math.min(J,this.max_frame_delta);if(this.time_smoothing>0){if(this.smoothed_delta===0)this.smoothed_delta=Z;else this.smoothed_delta+=(Z-this.smoothed_delta)*this.time_smoothing;Z=this.smoothed_delta}this.smooth_time+=Z*this.audio.speed_multiplier;let Q=this.current_time;if(Math.abs(this.smooth_time-Q)>this.resync_threshold_ms)this.smooth_time=Q;else this.smooth_time+=(Q-this.smooth_time)*0.1;let K=this.smooth_time,V=this.hitsound_scheduler.schedule_hitsounds(Q);if(this.debug_sync)this.emit_debug_sync(Q,K,V);if(this.render_frame(K),this.video?.sync(K),this.emit("timeupdate",K,this.duration),K>=this.duration){this.emit("ended"),this.stop_render_loop(),this.emit("statechange",!1);return}this.animation_frame=requestAnimationFrame(_)};this.animation_frame=requestAnimationFrame(_)}stop_render_loop(){if(this.animation_frame!==null)cancelAnimationFrame(this.animation_frame),this.animation_frame=null}render_frame(_){if(this.backend.begin_frame?.(),this.backend.clear(),this.renderer?.render(_),this.enable_fps_counter){this.fps_frame_count++;let $=performance.now(),J=$-this.fps_last_update;if(J>=1000)this.current_fps=Math.round(this.fps_frame_count*1000/J),this.fps_frame_count=0,this.fps_last_update=$;let Z=`14px ${this.skin.default_font??"monospace"}`;this.backend.draw_text(`${this.current_fps} FPS`,10,20,Z,"rgba(255,255,255,0.8)","left","top")}this.backend.end_frame?.()}emit_debug_sync(_,$,J){let Z=performance.now();if(Z-this.debug_sync_last_emit_at<bV)return;this.debug_sync_last_emit_at=Z,this.emit("debugsync",{audio_time_raw:this.audio.current_time,beatmap_time:_,render_time:$,drift_ms:$-_,scheduled_hitsounds:J})}set_fps_counter(_){this.enable_fps_counter=_}get_effective_audio_offset(){return this.audio_offset+this.beatmap_audio_lead_in}to_track_time(_){return Math.max(0,_+this.get_effective_audio_offset())}to_beatmap_time(_){return Math.max(0,_-this.get_effective_audio_offset())}resolve_speed_multiplier(){return this.custom_rate??g4(this.mods)}async reload_skin_runtime(){if(!this.is_loaded_flag||!this.resources?.beatmap)return;let _=this.resources.beatmap,$=this.current_time;await this.load_map_skin(),this.renderer=this.create_renderer(_),this.renderer.initialize(_),requestAnimationFrame(()=>this.render_frame($))}}export{LV as unwrap,EV as toggle_mod,CV as resolve_runtime_asset_url,d4 as ok,fV as mods_to_string,MV as mods_from_string,W4 as merge_skin,Z_ as is_spinner,Z1 as is_slider,DV as is_ok,S4 as is_new_combo,V9 as is_hold,AV as is_err,K9 as is_circle,h0 as has_mod,g4 as get_speed_multiplier,bK as get_rate_multiplier,q5 as get_mania_lane_color,kV as get_default_skin_folder_manifest_url,j_ as get_combo_color,vV as get_available_mods,dZ as get_adjusted_difficulty,G_ as err,H4 as create_backend,FK as apply_rate_to_ar,BK as apply_mods_to_difficulty,$9 as VideoController,e8 as StandardRenderer,OQ as SpeedChangingMods,q9 as SampleSet,m8 as PixiBackend,H9 as PLAYFIELD_WIDTH,w9 as PLAYFIELD_HEIGHT,A1 as OszLoader,c as Mods,CK as ModNightcore,IK as ModHidden,h4 as ModHardRock,NK as ModHalfTime,z4 as ModEasy,kK as ModDoubleTime,L_ as ManiaRenderer,I6 as HitSoundType,J_ as HitObjectType,UK as HD_FADE_OUT_MULTIPLIER,YK as HD_FADE_IN_MULTIPLIER,u4 as GridLevel,Q9 as GameMode,T4 as ErrorCode,RV as DifficultyChangingMods,G4 as DEFAULT_SKIN,D_ as DEFAULT_RENDERER_CONFIG,hQ as BeatmapPlayer,P1 as BaseRenderer,_9 as AudioController};
1145
1145
 
1146
- //# debugId=ACC72FF240F89C4B64756E2164756E21
1146
+ //# debugId=50103F21F855786464756E2164756E21