@netless/appliance-plugin 1.1.43-beta.2 → 1.1.43-beta.4

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.
@@ -0,0 +1,570 @@
1
+ "use strict";var vM=Object.defineProperty;var MM=(s,r,e)=>r in s?vM(s,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[r]=e;var x=(s,r,e)=>MM(s,typeof r!="symbol"?r+"":r,e);const cm=require("./bridge-DhHfew_I.js"),It=require("clipper-lib"),lm=require("lz-string"),th=require("lineclip"),eu=require("xss"),ye=require("lodash"),wM=require("rbush"),tu=require("eventemitter2"),SM=require("spark-md5"),H=require("react"),Ga=require("react-dom"),Qi=require("react-draggable"),TM=require("re-resizable");var De=(s=>(s.selector="selector",s.clicker="clicker",s.laserPointer="laserPointer",s.pencil="pencil",s.rectangle="rectangle",s.ellipse="ellipse",s.shape="shape",s.eraser="eraser",s.pencilEraser="pencilEraser",s.text="text",s.straight="straight",s.arrow="arrow",s.hand="hand",s.laserPen="laserPen",s))(De||{}),Ar=(s=>(s[s.OffscreenTransfer=1]="OffscreenTransfer",s[s.ImageBitmap=2]="ImageBitmap",s[s.MainThread=3]="MainThread",s))(Ar||{}),Ha=(s=>(s[s.WebGL=1]="WebGL",s))(Ha||{}),rh=(s=>(s[s.SingleChannelTexture=1]="SingleChannelTexture",s))(rh||{}),nh=(s=>(s[s.TextureSubImage2D=1]="TextureSubImage2D",s))(nh||{}),Js=(s=>(s[s.RefreshTextRender=1]="RefreshTextRender",s))(Js||{}),Be=(s=>(s.Normal="Normal",s.Stroke="Stroke",s.Dotted="Dotted",s.LongDotted="LongDotted",s))(Be||{}),Zt=(s=>(s.Triangle="triangle",s.Rhombus="rhombus",s.Pentagram="pentagram",s.SpeechBalloon="speechBalloon",s.Star="star",s.Polygon="polygon",s))(Zt||{});const or={star:"star",polygon:"polygon",speechBalloon:"speechBalloon",bitMapEraser:"bitMapEraser"};var Te=(s=>(s.None="None",s.ShowFloatBar="ShowFloatBar",s.ZIndexFloatBar="ZIndexFloatBar",s.DeleteNode="DeleteNode",s.CopyNode="CopyNode",s.ZIndexNode="ZIndexNode",s.ZIndexBackgroundSVG="ZIndexBackgroundSVG",s.RotateNode="RotateNode",s.SetColorNode="SetColorNode",s.TranslateNode="TranslateNode",s.ScaleNode="ScaleNode",s.OriginalEvent="OriginalEvent",s.CreateScene="CreateScene",s.ActiveCursor="ActiveCursor",s.MoveCursor="MoveCursor",s.CommandEditor="CommandEditor",s.SetEditorData="SetEditorData",s.SetFontStyle="SetFontStyle",s.SetPoint="SetPoint",s.SetLock="SetLock",s.SetShapeOpt="SetShapeOpt",s.CameraChange="CameraChange",s.ActiveMethod="ActiveMethod",s.HidFloatBarBtn="HidFloatBarBtn",s.SelectMethod="SelectMethod",s))(Te||{}),We=(s=>(s.MainEngine="MainEngine",s.Cursor="Cursor",s.BindMainView="BindMainView",s))(We||{}),um=(s=>(s[s.MainView=0]="MainView",s[s.Plugin=1]="Plugin",s[s.Both=2]="Both",s))(um||{}),Ds=(s=>(s.longPencil="longPencil",s.longBitmapEraser="longBitmapEraser",s))(Ds||{}),q=(s=>(s[s.Pencil=1]="Pencil",s[s.Eraser=2]="Eraser",s[s.PencilEraser=3]="PencilEraser",s[s.BitMapEraser=4]="BitMapEraser",s[s.Selector=5]="Selector",s[s.Clicker=6]="Clicker",s[s.Arrow=7]="Arrow",s[s.Hand=8]="Hand",s[s.LaserPen=9]="LaserPen",s[s.Text=10]="Text",s[s.Straight=11]="Straight",s[s.Rectangle=12]="Rectangle",s[s.Ellipse=13]="Ellipse",s[s.Star=14]="Star",s[s.Triangle=15]="Triangle",s[s.Rhombus=16]="Rhombus",s[s.Polygon=17]="Polygon",s[s.SpeechBalloon=18]="SpeechBalloon",s[s.Image=19]="Image",s[s.BackgroundSVG=20]="BackgroundSVG",s))(q||{}),xe=(s=>(s[s.Local=1]="Local",s[s.Service=2]="Service",s[s.Worker=3]="Worker",s))(xe||{}),de=(s=>(s[s.Pending=0]="Pending",s[s.Start=1]="Start",s[s.Doing=2]="Doing",s[s.Done=3]="Done",s[s.Unwritable=4]="Unwritable",s))(de||{}),le=(s=>(s[s.None=0]="None",s[s.Init=1]="Init",s[s.UpdateCamera=2]="UpdateCamera",s[s.UpdateTools=3]="UpdateTools",s[s.CreateWork=4]="CreateWork",s[s.DrawWork=5]="DrawWork",s[s.FullWork=6]="FullWork",s[s.UpdateNode=7]="UpdateNode",s[s.RemoveNode=8]="RemoveNode",s[s.Clear=9]="Clear",s[s.Select=10]="Select",s[s.Destroy=11]="Destroy",s[s.Snapshot=12]="Snapshot",s[s.BoundingBox=13]="BoundingBox",s[s.Cursor=14]="Cursor",s[s.TextUpdate=15]="TextUpdate",s[s.GetTextActive=16]="GetTextActive",s[s.TasksQueue=17]="TasksQueue",s[s.CursorHover=18]="CursorHover",s[s.CursorBlur=19]="CursorBlur",s[s.Console=20]="Console",s[s.GetImageBitMap=23]="GetImageBitMap",s[s.AuthWriter=24]="AuthWriter",s[s.AuthReader=25]="AuthReader",s[s.AuthClear=26]="AuthClear",s[s.AuthPage=27]="AuthPage",s[s.GetVNodeInfo=28]="GetVNodeInfo",s[s.UpdateDpr=29]="UpdateDpr",s[s.SetFontFace=30]="SetFontFace",s[s.ReportError=31]="ReportError",s[s.ReportLog=32]="ReportLog",s[s.BackgroundSVGUpdate=33]="BackgroundSVGUpdate",s[s.BackgroundSVGDelete=34]="BackgroundSVGDelete",s[s.SelectorTransform=35]="SelectorTransform",s[s.CheckFontFace=36]="CheckFontFace",s[s.RefreshTextRender=37]="RefreshTextRender",s[s.ProbeRenderCapabilities=38]="ProbeRenderCapabilities",s[s.ServiceSyncCommit=39]="ServiceSyncCommit",s[s.CancelFontFace=40]="CancelFontFace",s[s.CancelBitmapEraser=41]="CancelBitmapEraser",s))(le||{}),_e=(s=>(s[s.None=0]="None",s[s.Bg=1]="Bg",s[s.ServiceFloat=2]="ServiceFloat",s[s.Float=3]="Float",s[s.TopFloat=4]="TopFloat",s))(_e||{}),Ls=(s=>(s[s.Cursor=1]="Cursor",s[s.TextCreate=2]="TextCreate",s))(Ls||{}),In=(s=>(s[s.Top=1]="Top",s[s.Bottom=2]="Bottom",s))(In||{}),Ye=(s=>(s[s.none=1]="none",s[s.all=2]="all",s[s.both=3]="both",s[s.proportional=4]="proportional",s))(Ye||{}),sn=(s=>(s[s.inside=0]="inside",s[s.outside=1]="outside",s[s.intersect=2]="intersect",s))(sn||{}),wt=(s=>(s.renderPage="renderPage",s.addPage="addPage",s.deletePage="deletePage",s.addElement="addElement",s.deleteElement="deleteElement",s.clearPage="clearPage",s.clearViewScenePath="clearViewScenePath",s.clearView="clearView",s.syncUndoStack="syncUndoStack",s.syncRedoStack="syncRedoStack",s))(wt||{}),Mr=(s=>(s.setAuth="setAuth",s.setShow="addShow",s.setHide="setHide",s.setClear="setClear",s))(Mr||{}),on=(s=>(s.Image="image",s.Iconify="iconify",s))(on||{}),Wi=(s=>(s.url="url",s.markmap="markmap",s))(Wi||{});const hm="cursorhover",Qa=20,Fe="mainView",qa=500,dm=qa,ru=500,sa=1e3,CM=cm.getWhiteWebSdkBridgeRuntime(),{toJS:oa,autorun:Vc,isRoom:ze,isPlayer:ih,InvisiblePlugin:fm,RoomPhase:Pi}=CM,va=new WeakMap,$c=(s,r)=>{try{s.error(r)}catch{}};function gm(s,r,e){const t=Symbol("appliance-room-lifecycle-owner"),n=va.get(s);if(n)return n.owner=t,n.getManager=r,n.logger=e,n.active=!0,()=>Wd(s,n,t);const i=s.setWritable,o=s.disconnect,a={},c=d=>{const f=a.transitionQueue.then(d,d);return a.transitionQueue=f.then(()=>{},()=>{}),f},l=async d=>{try{const f=a.getManager();if(d==="set-readonly"){const g=await(f==null?void 0:f.setWritable(!1));(g==null?void 0:g.status)==="failed"&&$c(a.logger,`[Appliance]: force-Done before ${d} failed ACK: ${g.failureReasons.join("; ")}`)}else{const g=await(f==null?void 0:f.forceDoneLocalWorks(d));(g==null?void 0:g.status)==="failed"&&$c(a.logger,`[Appliance]: force-Done before ${d} failed ACK: ${g.failureReasons.join("; ")}`)}}catch(f){$c(a.logger,`[Appliance]: force-Done before ${d} failed: ${(f==null?void 0:f.message)||f}`)}},u=function(d){var y;if(a.disconnectPromise)return a.disconnectPromise;if(!a.active||a.phase==="terminal")return Promise.reject(new Error("room lifecycle disposed"));const f=this,g=d||(y=a.getManager())==null?void 0:y.acquireLocalMutationFence();return c(async()=>{try{return d&&a.disconnectRequested?void 0:(d?a.phase==="readonly"&&(a.phase="active"):(a.phase="preparing-readonly",await l("set-readonly"),a.phase="readonly"),await i.call(f,d))}finally{g==null||g()}})},h=function(d){if(a.disconnectPromise)return a.disconnectPromise;if(!a.active||a.phase==="terminal")return Promise.reject(new Error("room lifecycle disposed"));a.disconnectRequested=!0;const f=this,g=a.getManager(),y=g==null?void 0:g.acquireLocalMutationFence();a.disconnectFenceRelease=y;const S=c(async()=>{var E;try{return a.phase="disconnecting",await l("disconnect"),await o.call(f,d)}finally{a.phase="terminal",a.active=!1,(E=g==null?void 0:g.markRoomLifecycleTerminal)==null||E.call(g)}});return a.disconnectPromise=S,S};return Object.assign(a,{owner:t,getManager:r,logger:e,transitionQueue:Promise.resolve(),disconnectRequested:!1,originalSetWritable:i,originalDisconnect:o,setWritableWrapper:u,disconnectWrapper:h,phase:"active",active:!0}),va.set(s,a),s.setWritable=u,s.disconnect=h,()=>Wd(s,a,t)}function Wd(s,r,e){var t;e&&r.owner!==e||(r.active=!1,r.phase="terminal",(t=r.disconnectFenceRelease)==null||t.call(r),r.disconnectFenceRelease=void 0,s.setWritable===r.setWritableWrapper&&(s.setWritable=r.originalSetWritable),s.disconnect===r.disconnectWrapper&&(s.disconnect=r.originalDisconnect),va.get(s)===r&&va.delete(s))}const IM={linear:s=>s,easeInQuad:s=>s*s,easeOutQuad:s=>s*(2-s),easeInOutQuad:s=>s<.5?2*s*s:-1+(4-2*s)*s,easeInCubic:s=>s*s*s,easeOutCubic:s=>--s*s*s+1,easeInOutCubic:s=>s<.5?4*s*s*s:(s-1)*(2*s-2)*(2*s-2)+1,easeInQuart:s=>s*s*s*s,easeOutQuart:s=>1- --s*s*s*s,easeInOutQuart:s=>s<.5?8*s*s*s*s:1-8*--s*s*s*s,easeInQuint:s=>s*s*s*s*s,easeOutQuint:s=>1+--s*s*s*s*s,easeInOutQuint:s=>s<.5?16*s*s*s*s*s:1+16*--s*s*s*s*s,easeInSine:s=>1-Math.cos(s*Math.PI/2),easeOutSine:s=>Math.sin(s*Math.PI/2),easeInOutSine:s=>-(Math.cos(Math.PI*s)-1)/2,easeInExpo:s=>s<=0?0:Math.pow(2,10*s-10),easeOutExpo:s=>s>=1?1:1-Math.pow(2,-10*s),easeInOutExpo:s=>s<=0?0:s>=1?1:s<.5?Math.pow(2,20*s-10)/2:(2-Math.pow(2,-20*s+10))/2};class fe{constructor(r=0,e=0,t=1){this.x=r,this.y=e,this.z=t}get XY(){return[this.x,this.y]}setz(r){return this.z=r,this}setXY(r=this.x,e=this.y){return this.x=r,this.y=e,this}set(r=this.x,e=this.y,t=this.z){return this.x=r,this.y=e,this.z=t,this}setTo({x:r=0,y:e=0,z:t=1}){return this.x=r,this.y=e,this.z=t,this}rot(r){if(r===0)return this;const{x:e,y:t}=this,n=Math.sin(r),i=Math.cos(r);return this.x=e*i-t*n,this.y=e*n+t*i,this}rotWith(r,e){if(e===0)return this;const t=this.x-r.x,n=this.y-r.y,i=Math.sin(e),o=Math.cos(e);return this.x=r.x+(t*o-n*i),this.y=r.y+(t*i+n*o),this}clone(){const{x:r,y:e,z:t}=this;return new fe(r,e,t)}sub(r){return this.x-=r.x,this.y-=r.y,this}subXY(r,e){return this.x-=r,this.y-=e,this}subScalar(r){return this.x-=r,this.y-=r,this}add(r){return this.x+=r.x,this.y+=r.y,this}addXY(r,e){return this.x+=r,this.y+=e,this}addScalar(r){return this.x+=r,this.y+=r,this}clamp(r,e){return this.x=Math.max(this.x,r),this.y=Math.max(this.y,r),e!==void 0&&(this.x=Math.min(this.x,e),this.y=Math.min(this.y,e)),this}div(r){return this.x/=r,this.y/=r,this}divV(r){return this.x/=r.x,this.y/=r.y,this}mul(r){return this.x*=r,this.y*=r,this}mulV(r){return this.x*=r.x,this.y*=r.y,this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this}nudge(r,e){const t=fe.Tan(r,this);return this.add(t.mul(e))}neg(){return this.x*=-1,this.y*=-1,this}cross(r){return this.x=this.y*r.z-this.z*r.y,this.y=this.z*r.x-this.x*r.z,this}dpr(r){return fe.Dpr(this,r)}cpr(r){return fe.Cpr(this,r)}len2(){return fe.Len2(this)}len(){return fe.Len(this)}pry(r){return fe.Pry(this,r)}per(){const{x:r,y:e}=this;return this.x=e,this.y=-r,this}uni(){return fe.Uni(this)}tan(r){return fe.Tan(this,r)}dist(r){return fe.Dist(this,r)}distanceToLineSegment(r,e){return fe.DistanceToLineSegment(r,e,this)}slope(r){return fe.Slope(this,r)}snapToGrid(r){return this.x=Math.round(this.x/r)*r,this.y=Math.round(this.y/r)*r,this}angle(r){return fe.Angle(this,r)}toAngle(){return fe.ToAngle(this)}lrp(r,e){return this.x=this.x+(r.x-this.x)*e,this.y=this.y+(r.y-this.y)*e,this}equals(r,e){return fe.Equals(this,r,e)}equalsXY(r,e){return fe.EqualsXY(this,r,e)}norm(){const r=this.len();return this.x=r===0?0:this.x/r,this.y=r===0?0:this.y/r,this}toFixed(){return fe.ToFixed(this)}toString(){return fe.ToString(fe.ToFixed(this))}toJson(){return fe.ToJson(this)}toArray(){return fe.ToArray(this)}static Add(r,e){return new fe(r.x+e.x,r.y+e.y)}static AddXY(r,e,t){return new fe(r.x+e,r.y+t)}static Sub(r,e){return new fe(r.x-e.x,r.y-e.y)}static SubXY(r,e,t){return new fe(r.x-e,r.y-t)}static AddScalar(r,e){return new fe(r.x+e,r.y+e)}static SubScalar(r,e){return new fe(r.x-e,r.y-e)}static Div(r,e){return new fe(r.x/e,r.y/e)}static Mul(r,e){return new fe(r.x*e,r.y*e)}static DivV(r,e){return new fe(r.x/e.x,r.y/e.y)}static MulV(r,e){return new fe(r.x*e.x,r.y*e.y)}static Neg(r){return new fe(-r.x,-r.y)}static Per(r){return new fe(r.y,-r.x)}static Dist2(r,e){return fe.Sub(r,e).len2()}static Abs(r){return new fe(Math.abs(r.x),Math.abs(r.y))}static Dist(r,e){return Math.hypot(r.y-e.y,r.x-e.x)}static Dpr(r,e){return r.x*e.x+r.y*e.y}static Cross(r,e){return new fe(r.y*e.z-r.z*e.y,r.z*e.x-r.x*e.z)}static Cpr(r,e){return r.x*e.y-e.x*r.y}static Len2(r){return r.x*r.x+r.y*r.y}static Len(r){return Math.hypot(r.x,r.y)}static Pry(r,e){return fe.Dpr(r,e)/fe.Len(e)}static Uni(r){return fe.Div(r,fe.Len(r))}static Tan(r,e){return fe.Uni(fe.Sub(r,e))}static Min(r,e){return new fe(Math.min(r.x,e.x),Math.min(r.y,e.y))}static Max(r,e){return new fe(Math.max(r.x,e.x),Math.max(r.y,e.y))}static From(r){return new fe().add(r)}static FromArray(r){return new fe(r[0],r[1])}static Rot(r,e=0){const t=Math.sin(e),n=Math.cos(e);return new fe(r.x*n-r.y*t,r.x*t+r.y*n)}static RotWith(r,e,t){const n=r.x-e.x,i=r.y-e.y,o=Math.sin(t),a=Math.cos(t);return new fe(e.x+(n*a-i*o),e.y+(n*o+i*a))}static NearestPointOnLineThroughPoint(r,e,t){return fe.Mul(e,fe.Sub(t,r).pry(e)).add(r)}static NearestPointOnLineSegment(r,e,t,n=!0){const i=fe.Tan(e,r),o=fe.Add(r,fe.Mul(i,fe.Sub(t,r).pry(i)));if(n){if(o.x<Math.min(r.x,e.x))return fe.Cast(r.x<e.x?r:e);if(o.x>Math.max(r.x,e.x))return fe.Cast(r.x>e.x?r:e);if(o.y<Math.min(r.y,e.y))return fe.Cast(r.y<e.y?r:e);if(o.y>Math.max(r.y,e.y))return fe.Cast(r.y>e.y?r:e)}return o}static DistanceToLineThroughPoint(r,e,t){return fe.Dist(t,fe.NearestPointOnLineThroughPoint(r,e,t))}static DistanceToLineSegment(r,e,t,n=!0){return fe.Dist(t,fe.NearestPointOnLineSegment(r,e,t,n))}static Snap(r,e=1){return new fe(Math.round(r.x/e)*e,Math.round(r.y/e)*e)}static Cast(r){return r instanceof fe?r:fe.From(r)}static Slope(r,e){return r.x===e.y?NaN:(r.y-e.y)/(r.x-e.x)}static Angle(r,e){return Math.atan2(e.y-r.y,e.x-r.x)}static Lrp(r,e,t){return fe.Sub(e,r).mul(t).add(r)}static Med(r,e){return new fe((r.x+e.x)/2,(r.y+e.y)/2)}static Equals(r,e,t=1e-4){return Math.abs(r.x-e.x)<t&&Math.abs(r.y-e.y)<t}static EqualsXY(r,e,t){return r.x===e&&r.y===t}static EqualsXYZ(r,e,t=1e-4){return fe.Equals(r,e,t)&&Math.abs((r.z||0)-(e.z||0))<t}static Clockwise(r,e,t){return(t.x-r.x)*(e.y-r.y)-(e.x-r.x)*(t.y-r.y)<0}static Rescale(r,e){const t=fe.Len(r);return new fe(e*r.x/t,e*r.y/t)}static ScaleWithOrigin(r,e,t){return fe.Sub(r,t).mul(e).add(t)}static ScaleWOrigin(r,e,t){return fe.Sub(r,t).mulV(e).add(t)}static ToFixed(r,e=2){return new fe(+r.x.toFixed(e),+r.y.toFixed(e),+r.z.toFixed(e))}static Nudge(r,e,t){return fe.Add(r,fe.Tan(e,r).mul(t))}static ToString(r){return`${r.x}, ${r.y}`}static ToAngle(r){let e=Math.atan2(r.y,r.x);return e<0&&(e+=Math.PI*2),e}static FromAngle(r,e=1){return new fe(Math.cos(r)*e,Math.sin(r)*e)}static ToArray(r){return[r.x,r.y,r.z]}static ToJson(r){const{x:e,y:t,z:n}=r;return{x:e,y:t,z:n}}static Average(r){const e=r.length,t=new fe(0,0);for(let n=0;n<e;n++)t.add(r[n]);return t.div(e)}static Clamp(r,e,t){return t===void 0?new fe(Math.min(Math.max(r.x,e)),Math.min(Math.max(r.y,e))):new fe(Math.min(Math.max(r.x,e),t),Math.min(Math.max(r.y,e),t))}static PointsBetween(r,e,t=6){const n=[];for(let i=0;i<t;i++){const o=IM.easeInQuad(i/(t-1)),a=fe.Lrp(r,e,o);a.z=Math.min(1,.5+Math.abs(.5-bM(o))*.65),n.push(a)}return n}static SnapToGrid(r,e=8){return new fe(Math.round(r.x/e)*e,Math.round(r.y/e)*e)}}const bM=s=>s<.5?2*s*s:-1+(4-2*s)*s;class Pe extends fe{constructor(r=0,e=0,t=0,n={x:0,y:0},i=0,o=0){super(r,e,t),this.x=r,this.y=e,this.z=t,this.v=n,this.t=i,this.a=o}get timestamp(){return this.t}get pressure(){return this.z}get angleNum(){return this.a}get XY(){return[this.x,this.y]}setA(r){this.a=r}setT(r){this.t=r}setv(r){return this.v={x:r.x,y:r.y},this}set(r=this.x,e=this.y,t=this.z,n=this.v,i=this.t,o=this.a){return this.x=r,this.y=e,this.z=t,this.v=n,this.t=i,this.a=o,this}clone(){const{x:r,y:e,z:t,v:n,t:i,a:o}=this,a={x:n.x,y:n.y};return new Pe(r,e,t,a,i,o)}distance(r){return Pe.GetDistance(this,r)}isNear(r,e){return Pe.IsNear(this,r,e)}getAngleByPoints(r,e){return Pe.GetAngleByPoints(r,this,e)}static Sub(r,e){return new Pe(r.x-e.x,r.y-e.y)}static Add(r,e){return new Pe(r.x+e.x,r.y+e.y)}static GetDistance(r,e){return Pe.Len(r.clone().sub(e))}static GetAngleByPoints(r,e,t){const n=e.x-r.x,i=t.x-e.x,o=e.y-r.y,a=t.y-e.y;let c=0;const l=Math.sqrt(n*n+o*o),u=Math.sqrt(i*i+a*a);if(l&&u){const h=n*i+o*a;c=Math.acos(h/(l*u)),c=c/Math.PI*180;let d=n*a-o*i;d=d>0?1:-1,c=180+d*c}return c}static IsNear(r,e,t){return Pe.Len(r.clone().sub(e))<t}static RotWith(r,e,t,n=2){const i=r.x-e.x,o=r.y-e.y,a=Math.sin(t),c=Math.cos(t),l=Math.pow(10,n),u=Math.floor((e.x+(i*c-o*a))*l)/l,h=Math.floor((e.y+(i*a+o*c))*l)/l;return new Pe(u,h)}static GetDotStroke(r,e,t=16){const n=new fe(1,1),i=Math.PI+.001,o=Pe.Add(r,Pe.Sub(r,n).uni().per().mul(-e)),a=[];for(let c=1/t,l=c;l<=1;l+=c)a.push(Pe.RotWith(o,r,i*2*l));return a}static GetSemicircleStroke(r,e,t=-1,n=8){const i=t*(Math.PI+.001),o=[];for(let a=1/n,c=a;c<=1;c+=a)o.push(Pe.RotWith(e,r,i*c));return o}}var Mi=1e-6,Us=typeof Float32Array<"u"?Float32Array:Array;function Ze(s){Us=s}function EM(){var s=new Us(6);return Us!=Float32Array&&(s[1]=0,s[2]=0,s[4]=0,s[5]=0),s[0]=1,s[3]=1,s}function xM(s){var r=new Us(6);return r[0]=s[0],r[1]=s[1],r[2]=s[2],r[3]=s[3],r[4]=s[4],r[5]=s[5],r}function RM(s,r){return s[0]=r[0],s[1]=r[1],s[2]=r[2],s[3]=r[3],s[4]=r[4],s[5]=r[5],s}function kM(s){return s[0]=1,s[1]=0,s[2]=0,s[3]=1,s[4]=0,s[5]=0,s}function ei(s,r,e,t,n,i){var o=new Us(6);return o[0]=s,o[1]=r,o[2]=e,o[3]=t,o[4]=n,o[5]=i,o}function AM(s,r,e,t,n,i,o){return s[0]=r,s[1]=e,s[2]=t,s[3]=n,s[4]=i,s[5]=o,s}function Ma(s,r){var e=r[0],t=r[1],n=r[2],i=r[3],o=r[4],a=r[5],c=e*i-t*n;return c?(c=1/c,s[0]=i*c,s[1]=-t*c,s[2]=-n*c,s[3]=e*c,s[4]=(n*a-i*o)*c,s[5]=(t*o-e*a)*c,s):null}function PM(s){return s[0]*s[3]-s[1]*s[2]}function Nr(s,r,e){var t=r[0],n=r[1],i=r[2],o=r[3],a=r[4],c=r[5],l=e[0],u=e[1],h=e[2],d=e[3],f=e[4],g=e[5];return s[0]=t*l+i*u,s[1]=n*l+o*u,s[2]=t*h+i*d,s[3]=n*h+o*d,s[4]=t*f+i*g+a,s[5]=n*f+o*g+c,s}function pm(s,r,e){var t=r[0],n=r[1],i=r[2],o=r[3],a=r[4],c=r[5],l=Math.sin(e),u=Math.cos(e);return s[0]=t*u+i*l,s[1]=n*u+o*l,s[2]=t*-l+i*u,s[3]=n*-l+o*u,s[4]=a,s[5]=c,s}function DM(s,r,e){var t=r[0],n=r[1],i=r[2],o=r[3],a=r[4],c=r[5],l=e[0],u=e[1];return s[0]=t*l,s[1]=n*l,s[2]=i*u,s[3]=o*u,s[4]=a,s[5]=c,s}function nu(s,r,e){var t=r[0],n=r[1],i=r[2],o=r[3],a=r[4],c=r[5],l=e[0],u=e[1];return s[0]=t,s[1]=n,s[2]=i,s[3]=o,s[4]=t*l+i*u+a,s[5]=n*l+o*u+c,s}function LM(s,r){var e=Math.sin(r),t=Math.cos(r);return s[0]=t,s[1]=e,s[2]=-e,s[3]=t,s[4]=0,s[5]=0,s}function NM(s,r){return s[0]=r[0],s[1]=0,s[2]=0,s[3]=r[1],s[4]=0,s[5]=0,s}function OM(s,r){return s[0]=1,s[1]=0,s[2]=0,s[3]=1,s[4]=r[0],s[5]=r[1],s}function zM(s){return"mat2d("+s[0]+", "+s[1]+", "+s[2]+", "+s[3]+", "+s[4]+", "+s[5]+")"}function BM(s){return Math.sqrt(s[0]*s[0]+s[1]*s[1]+s[2]*s[2]+s[3]*s[3]+s[4]*s[4]+s[5]*s[5]+1)}function jM(s,r,e){return s[0]=r[0]+e[0],s[1]=r[1]+e[1],s[2]=r[2]+e[2],s[3]=r[3]+e[3],s[4]=r[4]+e[4],s[5]=r[5]+e[5],s}function mm(s,r,e){return s[0]=r[0]-e[0],s[1]=r[1]-e[1],s[2]=r[2]-e[2],s[3]=r[3]-e[3],s[4]=r[4]-e[4],s[5]=r[5]-e[5],s}function FM(s,r,e){return s[0]=r[0]*e,s[1]=r[1]*e,s[2]=r[2]*e,s[3]=r[3]*e,s[4]=r[4]*e,s[5]=r[5]*e,s}function UM(s,r,e,t){return s[0]=r[0]+e[0]*t,s[1]=r[1]+e[1]*t,s[2]=r[2]+e[2]*t,s[3]=r[3]+e[3]*t,s[4]=r[4]+e[4]*t,s[5]=r[5]+e[5]*t,s}function WM(s,r){return s[0]===r[0]&&s[1]===r[1]&&s[2]===r[2]&&s[3]===r[3]&&s[4]===r[4]&&s[5]===r[5]}function VM(s,r){var e=s[0],t=s[1],n=s[2],i=s[3],o=s[4],a=s[5],c=r[0],l=r[1],u=r[2],h=r[3],d=r[4],f=r[5];return Math.abs(e-c)<=Mi*Math.max(1,Math.abs(e),Math.abs(c))&&Math.abs(t-l)<=Mi*Math.max(1,Math.abs(t),Math.abs(l))&&Math.abs(n-u)<=Mi*Math.max(1,Math.abs(n),Math.abs(u))&&Math.abs(i-h)<=Mi*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-d)<=Mi*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(a-f)<=Mi*Math.max(1,Math.abs(a),Math.abs(f))}var $M=Nr,YM=mm;const ym=Object.freeze(Object.defineProperty({__proto__:null,add:jM,clone:xM,copy:RM,create:EM,determinant:PM,equals:VM,exactEquals:WM,frob:BM,fromRotation:LM,fromScaling:NM,fromTranslation:OM,fromValues:ei,identity:kM,invert:Ma,mul:$M,multiply:Nr,multiplyScalar:FM,multiplyScalarAndAdd:UM,rotate:pm,scale:DM,set:AM,str:zM,sub:YM,subtract:mm,translate:nu},Symbol.toStringTag,{value:"Module"}));var St=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ln(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var vm={exports:{}};(function(s,r){(function(t,n){s.exports=n()})(St,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(i,o,a){n.o(i,o)||Object.defineProperty(i,o,{enumerable:!0,get:a})},n.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,o){if(o&1&&(i=n(i)),o&8||o&4&&typeof i=="object"&&i&&i.__esModule)return i;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:i}),o&2&&typeof i!="string")for(var c in i)n.d(a,c,(function(l){return i[l]}).bind(null,c));return a},n.n=function(i){var o=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(o,"a",o),o},n.o=function(i,o){return Object.prototype.hasOwnProperty.call(i,o)},n.p="/js/",n(n.s=0)}([function(e,t,n){n.r(t);var i=n(12);n.d(t,"Renderer",function(){return i.default});var o=n(56);n.d(t,"Figure2D",function(){return o.default});var a=n(73);n.d(t,"Mesh2D",function(){return a.default});var c=n(45);n.d(t,"MeshCloud",function(){return c.default});var l=n(39);n.d(t,"parseFont",function(){return l.default});var u=n(47);n.d(t,"parseColor",function(){return u.default});var h=n(37);n.d(t,"ENV",function(){return h.default}),n(1).glMatrix.setMatrixArrayType(Array)},function(e,t,n){n.r(t);var i=n(2);n.d(t,"glMatrix",function(){return i});var o=n(3);n.d(t,"mat2",function(){return o});var a=n(4);n.d(t,"mat2d",function(){return a});var c=n(5);n.d(t,"mat3",function(){return c});var l=n(6);n.d(t,"mat4",function(){return l});var u=n(7);n.d(t,"quat",function(){return u});var h=n(10);n.d(t,"quat2",function(){return h});var d=n(11);n.d(t,"vec2",function(){return d});var f=n(8);n.d(t,"vec3",function(){return f});var g=n(9);n.d(t,"vec4",function(){return g})},function(e,t,n){n.r(t),n.d(t,"EPSILON",function(){return i}),n.d(t,"ARRAY_TYPE",function(){return o}),n.d(t,"RANDOM",function(){return a}),n.d(t,"setMatrixArrayType",function(){return c}),n.d(t,"toRadian",function(){return u}),n.d(t,"equals",function(){return h});var i=1e-6,o=typeof Float32Array<"u"?Float32Array:Array,a=Math.random;function c(d){o=d}var l=Math.PI/180;function u(d){return d*l}function h(d,f){return Math.abs(d-f)<=i*Math.max(1,Math.abs(d),Math.abs(f))}Math.hypot||(Math.hypot=function(){for(var d=0,f=arguments.length;f--;)d+=arguments[f]*arguments[f];return Math.sqrt(d)})},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"clone",function(){return a}),n.d(t,"copy",function(){return c}),n.d(t,"identity",function(){return l}),n.d(t,"fromValues",function(){return u}),n.d(t,"set",function(){return h}),n.d(t,"transpose",function(){return d}),n.d(t,"invert",function(){return f}),n.d(t,"adjoint",function(){return g}),n.d(t,"determinant",function(){return y}),n.d(t,"multiply",function(){return S}),n.d(t,"rotate",function(){return E}),n.d(t,"scale",function(){return C}),n.d(t,"fromRotation",function(){return L}),n.d(t,"fromScaling",function(){return T}),n.d(t,"str",function(){return p}),n.d(t,"frob",function(){return m}),n.d(t,"LDU",function(){return M}),n.d(t,"add",function(){return v}),n.d(t,"subtract",function(){return R}),n.d(t,"exactEquals",function(){return b}),n.d(t,"equals",function(){return P}),n.d(t,"multiplyScalar",function(){return D}),n.d(t,"multiplyScalarAndAdd",function(){return z}),n.d(t,"mul",function(){return j}),n.d(t,"sub",function(){return A});var i=n(2);function o(){var k=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(k[1]=0,k[2]=0),k[0]=1,k[3]=1,k}function a(k){var N=new i.ARRAY_TYPE(4);return N[0]=k[0],N[1]=k[1],N[2]=k[2],N[3]=k[3],N}function c(k,N){return k[0]=N[0],k[1]=N[1],k[2]=N[2],k[3]=N[3],k}function l(k){return k[0]=1,k[1]=0,k[2]=0,k[3]=1,k}function u(k,N,W,Y){var Q=new i.ARRAY_TYPE(4);return Q[0]=k,Q[1]=N,Q[2]=W,Q[3]=Y,Q}function h(k,N,W,Y,Q){return k[0]=N,k[1]=W,k[2]=Y,k[3]=Q,k}function d(k,N){if(k===N){var W=N[1];k[1]=N[2],k[2]=W}else k[0]=N[0],k[1]=N[2],k[2]=N[1],k[3]=N[3];return k}function f(k,N){var W=N[0],Y=N[1],Q=N[2],ie=N[3],O=W*ie-Q*Y;return O?(O=1/O,k[0]=ie*O,k[1]=-Y*O,k[2]=-Q*O,k[3]=W*O,k):null}function g(k,N){var W=N[0];return k[0]=N[3],k[1]=-N[1],k[2]=-N[2],k[3]=W,k}function y(k){return k[0]*k[3]-k[2]*k[1]}function S(k,N,W){var Y=N[0],Q=N[1],ie=N[2],O=N[3],V=W[0],Z=W[1],$=W[2],ee=W[3];return k[0]=Y*V+ie*Z,k[1]=Q*V+O*Z,k[2]=Y*$+ie*ee,k[3]=Q*$+O*ee,k}function E(k,N,W){var Y=N[0],Q=N[1],ie=N[2],O=N[3],V=Math.sin(W),Z=Math.cos(W);return k[0]=Y*Z+ie*V,k[1]=Q*Z+O*V,k[2]=Y*-V+ie*Z,k[3]=Q*-V+O*Z,k}function C(k,N,W){var Y=N[0],Q=N[1],ie=N[2],O=N[3],V=W[0],Z=W[1];return k[0]=Y*V,k[1]=Q*V,k[2]=ie*Z,k[3]=O*Z,k}function L(k,N){var W=Math.sin(N),Y=Math.cos(N);return k[0]=Y,k[1]=W,k[2]=-W,k[3]=Y,k}function T(k,N){return k[0]=N[0],k[1]=0,k[2]=0,k[3]=N[1],k}function p(k){return"mat2("+k[0]+", "+k[1]+", "+k[2]+", "+k[3]+")"}function m(k){return Math.hypot(k[0],k[1],k[2],k[3])}function M(k,N,W,Y){return k[2]=Y[2]/Y[0],W[0]=Y[0],W[1]=Y[1],W[3]=Y[3]-k[2]*W[1],[k,N,W]}function v(k,N,W){return k[0]=N[0]+W[0],k[1]=N[1]+W[1],k[2]=N[2]+W[2],k[3]=N[3]+W[3],k}function R(k,N,W){return k[0]=N[0]-W[0],k[1]=N[1]-W[1],k[2]=N[2]-W[2],k[3]=N[3]-W[3],k}function b(k,N){return k[0]===N[0]&&k[1]===N[1]&&k[2]===N[2]&&k[3]===N[3]}function P(k,N){var W=k[0],Y=k[1],Q=k[2],ie=k[3],O=N[0],V=N[1],Z=N[2],$=N[3];return Math.abs(W-O)<=i.EPSILON*Math.max(1,Math.abs(W),Math.abs(O))&&Math.abs(Y-V)<=i.EPSILON*Math.max(1,Math.abs(Y),Math.abs(V))&&Math.abs(Q-Z)<=i.EPSILON*Math.max(1,Math.abs(Q),Math.abs(Z))&&Math.abs(ie-$)<=i.EPSILON*Math.max(1,Math.abs(ie),Math.abs($))}function D(k,N,W){return k[0]=N[0]*W,k[1]=N[1]*W,k[2]=N[2]*W,k[3]=N[3]*W,k}function z(k,N,W,Y){return k[0]=N[0]+W[0]*Y,k[1]=N[1]+W[1]*Y,k[2]=N[2]+W[2]*Y,k[3]=N[3]+W[3]*Y,k}var j=S,A=R},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"clone",function(){return a}),n.d(t,"copy",function(){return c}),n.d(t,"identity",function(){return l}),n.d(t,"fromValues",function(){return u}),n.d(t,"set",function(){return h}),n.d(t,"invert",function(){return d}),n.d(t,"determinant",function(){return f}),n.d(t,"multiply",function(){return g}),n.d(t,"rotate",function(){return y}),n.d(t,"scale",function(){return S}),n.d(t,"translate",function(){return E}),n.d(t,"fromRotation",function(){return C}),n.d(t,"fromScaling",function(){return L}),n.d(t,"fromTranslation",function(){return T}),n.d(t,"str",function(){return p}),n.d(t,"frob",function(){return m}),n.d(t,"add",function(){return M}),n.d(t,"subtract",function(){return v}),n.d(t,"multiplyScalar",function(){return R}),n.d(t,"multiplyScalarAndAdd",function(){return b}),n.d(t,"exactEquals",function(){return P}),n.d(t,"equals",function(){return D}),n.d(t,"mul",function(){return z}),n.d(t,"sub",function(){return j});var i=n(2);function o(){var A=new i.ARRAY_TYPE(6);return i.ARRAY_TYPE!=Float32Array&&(A[1]=0,A[2]=0,A[4]=0,A[5]=0),A[0]=1,A[3]=1,A}function a(A){var k=new i.ARRAY_TYPE(6);return k[0]=A[0],k[1]=A[1],k[2]=A[2],k[3]=A[3],k[4]=A[4],k[5]=A[5],k}function c(A,k){return A[0]=k[0],A[1]=k[1],A[2]=k[2],A[3]=k[3],A[4]=k[4],A[5]=k[5],A}function l(A){return A[0]=1,A[1]=0,A[2]=0,A[3]=1,A[4]=0,A[5]=0,A}function u(A,k,N,W,Y,Q){var ie=new i.ARRAY_TYPE(6);return ie[0]=A,ie[1]=k,ie[2]=N,ie[3]=W,ie[4]=Y,ie[5]=Q,ie}function h(A,k,N,W,Y,Q,ie){return A[0]=k,A[1]=N,A[2]=W,A[3]=Y,A[4]=Q,A[5]=ie,A}function d(A,k){var N=k[0],W=k[1],Y=k[2],Q=k[3],ie=k[4],O=k[5],V=N*Q-W*Y;return V?(V=1/V,A[0]=Q*V,A[1]=-W*V,A[2]=-Y*V,A[3]=N*V,A[4]=(Y*O-Q*ie)*V,A[5]=(W*ie-N*O)*V,A):null}function f(A){return A[0]*A[3]-A[1]*A[2]}function g(A,k,N){var W=k[0],Y=k[1],Q=k[2],ie=k[3],O=k[4],V=k[5],Z=N[0],$=N[1],ee=N[2],se=N[3],ce=N[4],me=N[5];return A[0]=W*Z+Q*$,A[1]=Y*Z+ie*$,A[2]=W*ee+Q*se,A[3]=Y*ee+ie*se,A[4]=W*ce+Q*me+O,A[5]=Y*ce+ie*me+V,A}function y(A,k,N){var W=k[0],Y=k[1],Q=k[2],ie=k[3],O=k[4],V=k[5],Z=Math.sin(N),$=Math.cos(N);return A[0]=W*$+Q*Z,A[1]=Y*$+ie*Z,A[2]=W*-Z+Q*$,A[3]=Y*-Z+ie*$,A[4]=O,A[5]=V,A}function S(A,k,N){var W=k[0],Y=k[1],Q=k[2],ie=k[3],O=k[4],V=k[5],Z=N[0],$=N[1];return A[0]=W*Z,A[1]=Y*Z,A[2]=Q*$,A[3]=ie*$,A[4]=O,A[5]=V,A}function E(A,k,N){var W=k[0],Y=k[1],Q=k[2],ie=k[3],O=k[4],V=k[5],Z=N[0],$=N[1];return A[0]=W,A[1]=Y,A[2]=Q,A[3]=ie,A[4]=W*Z+Q*$+O,A[5]=Y*Z+ie*$+V,A}function C(A,k){var N=Math.sin(k),W=Math.cos(k);return A[0]=W,A[1]=N,A[2]=-N,A[3]=W,A[4]=0,A[5]=0,A}function L(A,k){return A[0]=k[0],A[1]=0,A[2]=0,A[3]=k[1],A[4]=0,A[5]=0,A}function T(A,k){return A[0]=1,A[1]=0,A[2]=0,A[3]=1,A[4]=k[0],A[5]=k[1],A}function p(A){return"mat2d("+A[0]+", "+A[1]+", "+A[2]+", "+A[3]+", "+A[4]+", "+A[5]+")"}function m(A){return Math.hypot(A[0],A[1],A[2],A[3],A[4],A[5],1)}function M(A,k,N){return A[0]=k[0]+N[0],A[1]=k[1]+N[1],A[2]=k[2]+N[2],A[3]=k[3]+N[3],A[4]=k[4]+N[4],A[5]=k[5]+N[5],A}function v(A,k,N){return A[0]=k[0]-N[0],A[1]=k[1]-N[1],A[2]=k[2]-N[2],A[3]=k[3]-N[3],A[4]=k[4]-N[4],A[5]=k[5]-N[5],A}function R(A,k,N){return A[0]=k[0]*N,A[1]=k[1]*N,A[2]=k[2]*N,A[3]=k[3]*N,A[4]=k[4]*N,A[5]=k[5]*N,A}function b(A,k,N,W){return A[0]=k[0]+N[0]*W,A[1]=k[1]+N[1]*W,A[2]=k[2]+N[2]*W,A[3]=k[3]+N[3]*W,A[4]=k[4]+N[4]*W,A[5]=k[5]+N[5]*W,A}function P(A,k){return A[0]===k[0]&&A[1]===k[1]&&A[2]===k[2]&&A[3]===k[3]&&A[4]===k[4]&&A[5]===k[5]}function D(A,k){var N=A[0],W=A[1],Y=A[2],Q=A[3],ie=A[4],O=A[5],V=k[0],Z=k[1],$=k[2],ee=k[3],se=k[4],ce=k[5];return Math.abs(N-V)<=i.EPSILON*Math.max(1,Math.abs(N),Math.abs(V))&&Math.abs(W-Z)<=i.EPSILON*Math.max(1,Math.abs(W),Math.abs(Z))&&Math.abs(Y-$)<=i.EPSILON*Math.max(1,Math.abs(Y),Math.abs($))&&Math.abs(Q-ee)<=i.EPSILON*Math.max(1,Math.abs(Q),Math.abs(ee))&&Math.abs(ie-se)<=i.EPSILON*Math.max(1,Math.abs(ie),Math.abs(se))&&Math.abs(O-ce)<=i.EPSILON*Math.max(1,Math.abs(O),Math.abs(ce))}var z=g,j=v},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"fromMat4",function(){return a}),n.d(t,"clone",function(){return c}),n.d(t,"copy",function(){return l}),n.d(t,"fromValues",function(){return u}),n.d(t,"set",function(){return h}),n.d(t,"identity",function(){return d}),n.d(t,"transpose",function(){return f}),n.d(t,"invert",function(){return g}),n.d(t,"adjoint",function(){return y}),n.d(t,"determinant",function(){return S}),n.d(t,"multiply",function(){return E}),n.d(t,"translate",function(){return C}),n.d(t,"rotate",function(){return L}),n.d(t,"scale",function(){return T}),n.d(t,"fromTranslation",function(){return p}),n.d(t,"fromRotation",function(){return m}),n.d(t,"fromScaling",function(){return M}),n.d(t,"fromMat2d",function(){return v}),n.d(t,"fromQuat",function(){return R}),n.d(t,"normalFromMat4",function(){return b}),n.d(t,"projection",function(){return P}),n.d(t,"str",function(){return D}),n.d(t,"frob",function(){return z}),n.d(t,"add",function(){return j}),n.d(t,"subtract",function(){return A}),n.d(t,"multiplyScalar",function(){return k}),n.d(t,"multiplyScalarAndAdd",function(){return N}),n.d(t,"exactEquals",function(){return W}),n.d(t,"equals",function(){return Y}),n.d(t,"mul",function(){return Q}),n.d(t,"sub",function(){return ie});var i=n(2);function o(){var O=new i.ARRAY_TYPE(9);return i.ARRAY_TYPE!=Float32Array&&(O[1]=0,O[2]=0,O[3]=0,O[5]=0,O[6]=0,O[7]=0),O[0]=1,O[4]=1,O[8]=1,O}function a(O,V){return O[0]=V[0],O[1]=V[1],O[2]=V[2],O[3]=V[4],O[4]=V[5],O[5]=V[6],O[6]=V[8],O[7]=V[9],O[8]=V[10],O}function c(O){var V=new i.ARRAY_TYPE(9);return V[0]=O[0],V[1]=O[1],V[2]=O[2],V[3]=O[3],V[4]=O[4],V[5]=O[5],V[6]=O[6],V[7]=O[7],V[8]=O[8],V}function l(O,V){return O[0]=V[0],O[1]=V[1],O[2]=V[2],O[3]=V[3],O[4]=V[4],O[5]=V[5],O[6]=V[6],O[7]=V[7],O[8]=V[8],O}function u(O,V,Z,$,ee,se,ce,me,pe){var B=new i.ARRAY_TYPE(9);return B[0]=O,B[1]=V,B[2]=Z,B[3]=$,B[4]=ee,B[5]=se,B[6]=ce,B[7]=me,B[8]=pe,B}function h(O,V,Z,$,ee,se,ce,me,pe,B){return O[0]=V,O[1]=Z,O[2]=$,O[3]=ee,O[4]=se,O[5]=ce,O[6]=me,O[7]=pe,O[8]=B,O}function d(O){return O[0]=1,O[1]=0,O[2]=0,O[3]=0,O[4]=1,O[5]=0,O[6]=0,O[7]=0,O[8]=1,O}function f(O,V){if(O===V){var Z=V[1],$=V[2],ee=V[5];O[1]=V[3],O[2]=V[6],O[3]=Z,O[5]=V[7],O[6]=$,O[7]=ee}else O[0]=V[0],O[1]=V[3],O[2]=V[6],O[3]=V[1],O[4]=V[4],O[5]=V[7],O[6]=V[2],O[7]=V[5],O[8]=V[8];return O}function g(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=V[4],me=V[5],pe=V[6],B=V[7],F=V[8],J=F*ce-me*B,oe=-F*se+me*pe,K=B*se-ce*pe,te=Z*J+$*oe+ee*K;return te?(te=1/te,O[0]=J*te,O[1]=(-F*$+ee*B)*te,O[2]=(me*$-ee*ce)*te,O[3]=oe*te,O[4]=(F*Z-ee*pe)*te,O[5]=(-me*Z+ee*se)*te,O[6]=K*te,O[7]=(-B*Z+$*pe)*te,O[8]=(ce*Z-$*se)*te,O):null}function y(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=V[4],me=V[5],pe=V[6],B=V[7],F=V[8];return O[0]=ce*F-me*B,O[1]=ee*B-$*F,O[2]=$*me-ee*ce,O[3]=me*pe-se*F,O[4]=Z*F-ee*pe,O[5]=ee*se-Z*me,O[6]=se*B-ce*pe,O[7]=$*pe-Z*B,O[8]=Z*ce-$*se,O}function S(O){var V=O[0],Z=O[1],$=O[2],ee=O[3],se=O[4],ce=O[5],me=O[6],pe=O[7],B=O[8];return V*(B*se-ce*pe)+Z*(-B*ee+ce*me)+$*(pe*ee-se*me)}function E(O,V,Z){var $=V[0],ee=V[1],se=V[2],ce=V[3],me=V[4],pe=V[5],B=V[6],F=V[7],J=V[8],oe=Z[0],K=Z[1],te=Z[2],w=Z[3],I=Z[4],U=Z[5],G=Z[6],_=Z[7],re=Z[8];return O[0]=oe*$+K*ce+te*B,O[1]=oe*ee+K*me+te*F,O[2]=oe*se+K*pe+te*J,O[3]=w*$+I*ce+U*B,O[4]=w*ee+I*me+U*F,O[5]=w*se+I*pe+U*J,O[6]=G*$+_*ce+re*B,O[7]=G*ee+_*me+re*F,O[8]=G*se+_*pe+re*J,O}function C(O,V,Z){var $=V[0],ee=V[1],se=V[2],ce=V[3],me=V[4],pe=V[5],B=V[6],F=V[7],J=V[8],oe=Z[0],K=Z[1];return O[0]=$,O[1]=ee,O[2]=se,O[3]=ce,O[4]=me,O[5]=pe,O[6]=oe*$+K*ce+B,O[7]=oe*ee+K*me+F,O[8]=oe*se+K*pe+J,O}function L(O,V,Z){var $=V[0],ee=V[1],se=V[2],ce=V[3],me=V[4],pe=V[5],B=V[6],F=V[7],J=V[8],oe=Math.sin(Z),K=Math.cos(Z);return O[0]=K*$+oe*ce,O[1]=K*ee+oe*me,O[2]=K*se+oe*pe,O[3]=K*ce-oe*$,O[4]=K*me-oe*ee,O[5]=K*pe-oe*se,O[6]=B,O[7]=F,O[8]=J,O}function T(O,V,Z){var $=Z[0],ee=Z[1];return O[0]=$*V[0],O[1]=$*V[1],O[2]=$*V[2],O[3]=ee*V[3],O[4]=ee*V[4],O[5]=ee*V[5],O[6]=V[6],O[7]=V[7],O[8]=V[8],O}function p(O,V){return O[0]=1,O[1]=0,O[2]=0,O[3]=0,O[4]=1,O[5]=0,O[6]=V[0],O[7]=V[1],O[8]=1,O}function m(O,V){var Z=Math.sin(V),$=Math.cos(V);return O[0]=$,O[1]=Z,O[2]=0,O[3]=-Z,O[4]=$,O[5]=0,O[6]=0,O[7]=0,O[8]=1,O}function M(O,V){return O[0]=V[0],O[1]=0,O[2]=0,O[3]=0,O[4]=V[1],O[5]=0,O[6]=0,O[7]=0,O[8]=1,O}function v(O,V){return O[0]=V[0],O[1]=V[1],O[2]=0,O[3]=V[2],O[4]=V[3],O[5]=0,O[6]=V[4],O[7]=V[5],O[8]=1,O}function R(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=Z+Z,me=$+$,pe=ee+ee,B=Z*ce,F=$*ce,J=$*me,oe=ee*ce,K=ee*me,te=ee*pe,w=se*ce,I=se*me,U=se*pe;return O[0]=1-J-te,O[3]=F-U,O[6]=oe+I,O[1]=F+U,O[4]=1-B-te,O[7]=K-w,O[2]=oe-I,O[5]=K+w,O[8]=1-B-J,O}function b(O,V){var Z=V[0],$=V[1],ee=V[2],se=V[3],ce=V[4],me=V[5],pe=V[6],B=V[7],F=V[8],J=V[9],oe=V[10],K=V[11],te=V[12],w=V[13],I=V[14],U=V[15],G=Z*me-$*ce,_=Z*pe-ee*ce,re=Z*B-se*ce,ne=$*pe-ee*me,X=$*B-se*me,ae=ee*B-se*pe,ue=F*w-J*te,he=F*I-oe*te,ge=F*U-K*te,Me=J*I-oe*w,we=J*U-K*w,be=oe*U-K*I,Ie=G*be-_*we+re*Me+ne*ge-X*he+ae*ue;return Ie?(Ie=1/Ie,O[0]=(me*be-pe*we+B*Me)*Ie,O[1]=(pe*ge-ce*be-B*he)*Ie,O[2]=(ce*we-me*ge+B*ue)*Ie,O[3]=(ee*we-$*be-se*Me)*Ie,O[4]=(Z*be-ee*ge+se*he)*Ie,O[5]=($*ge-Z*we-se*ue)*Ie,O[6]=(w*ae-I*X+U*ne)*Ie,O[7]=(I*re-te*ae-U*_)*Ie,O[8]=(te*X-w*re+U*G)*Ie,O):null}function P(O,V,Z){return O[0]=2/V,O[1]=0,O[2]=0,O[3]=0,O[4]=-2/Z,O[5]=0,O[6]=-1,O[7]=1,O[8]=1,O}function D(O){return"mat3("+O[0]+", "+O[1]+", "+O[2]+", "+O[3]+", "+O[4]+", "+O[5]+", "+O[6]+", "+O[7]+", "+O[8]+")"}function z(O){return Math.hypot(O[0],O[1],O[2],O[3],O[4],O[5],O[6],O[7],O[8])}function j(O,V,Z){return O[0]=V[0]+Z[0],O[1]=V[1]+Z[1],O[2]=V[2]+Z[2],O[3]=V[3]+Z[3],O[4]=V[4]+Z[4],O[5]=V[5]+Z[5],O[6]=V[6]+Z[6],O[7]=V[7]+Z[7],O[8]=V[8]+Z[8],O}function A(O,V,Z){return O[0]=V[0]-Z[0],O[1]=V[1]-Z[1],O[2]=V[2]-Z[2],O[3]=V[3]-Z[3],O[4]=V[4]-Z[4],O[5]=V[5]-Z[5],O[6]=V[6]-Z[6],O[7]=V[7]-Z[7],O[8]=V[8]-Z[8],O}function k(O,V,Z){return O[0]=V[0]*Z,O[1]=V[1]*Z,O[2]=V[2]*Z,O[3]=V[3]*Z,O[4]=V[4]*Z,O[5]=V[5]*Z,O[6]=V[6]*Z,O[7]=V[7]*Z,O[8]=V[8]*Z,O}function N(O,V,Z,$){return O[0]=V[0]+Z[0]*$,O[1]=V[1]+Z[1]*$,O[2]=V[2]+Z[2]*$,O[3]=V[3]+Z[3]*$,O[4]=V[4]+Z[4]*$,O[5]=V[5]+Z[5]*$,O[6]=V[6]+Z[6]*$,O[7]=V[7]+Z[7]*$,O[8]=V[8]+Z[8]*$,O}function W(O,V){return O[0]===V[0]&&O[1]===V[1]&&O[2]===V[2]&&O[3]===V[3]&&O[4]===V[4]&&O[5]===V[5]&&O[6]===V[6]&&O[7]===V[7]&&O[8]===V[8]}function Y(O,V){var Z=O[0],$=O[1],ee=O[2],se=O[3],ce=O[4],me=O[5],pe=O[6],B=O[7],F=O[8],J=V[0],oe=V[1],K=V[2],te=V[3],w=V[4],I=V[5],U=V[6],G=V[7],_=V[8];return Math.abs(Z-J)<=i.EPSILON*Math.max(1,Math.abs(Z),Math.abs(J))&&Math.abs($-oe)<=i.EPSILON*Math.max(1,Math.abs($),Math.abs(oe))&&Math.abs(ee-K)<=i.EPSILON*Math.max(1,Math.abs(ee),Math.abs(K))&&Math.abs(se-te)<=i.EPSILON*Math.max(1,Math.abs(se),Math.abs(te))&&Math.abs(ce-w)<=i.EPSILON*Math.max(1,Math.abs(ce),Math.abs(w))&&Math.abs(me-I)<=i.EPSILON*Math.max(1,Math.abs(me),Math.abs(I))&&Math.abs(pe-U)<=i.EPSILON*Math.max(1,Math.abs(pe),Math.abs(U))&&Math.abs(B-G)<=i.EPSILON*Math.max(1,Math.abs(B),Math.abs(G))&&Math.abs(F-_)<=i.EPSILON*Math.max(1,Math.abs(F),Math.abs(_))}var Q=E,ie=A},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"clone",function(){return a}),n.d(t,"copy",function(){return c}),n.d(t,"fromValues",function(){return l}),n.d(t,"set",function(){return u}),n.d(t,"identity",function(){return h}),n.d(t,"transpose",function(){return d}),n.d(t,"invert",function(){return f}),n.d(t,"adjoint",function(){return g}),n.d(t,"determinant",function(){return y}),n.d(t,"multiply",function(){return S}),n.d(t,"translate",function(){return E}),n.d(t,"scale",function(){return C}),n.d(t,"rotate",function(){return L}),n.d(t,"rotateX",function(){return T}),n.d(t,"rotateY",function(){return p}),n.d(t,"rotateZ",function(){return m}),n.d(t,"fromTranslation",function(){return M}),n.d(t,"fromScaling",function(){return v}),n.d(t,"fromRotation",function(){return R}),n.d(t,"fromXRotation",function(){return b}),n.d(t,"fromYRotation",function(){return P}),n.d(t,"fromZRotation",function(){return D}),n.d(t,"fromRotationTranslation",function(){return z}),n.d(t,"fromQuat2",function(){return j}),n.d(t,"getTranslation",function(){return A}),n.d(t,"getScaling",function(){return k}),n.d(t,"getRotation",function(){return N}),n.d(t,"fromRotationTranslationScale",function(){return W}),n.d(t,"fromRotationTranslationScaleOrigin",function(){return Y}),n.d(t,"fromQuat",function(){return Q}),n.d(t,"frustum",function(){return ie}),n.d(t,"perspective",function(){return O}),n.d(t,"perspectiveFromFieldOfView",function(){return V}),n.d(t,"ortho",function(){return Z}),n.d(t,"lookAt",function(){return $}),n.d(t,"targetTo",function(){return ee}),n.d(t,"str",function(){return se}),n.d(t,"frob",function(){return ce}),n.d(t,"add",function(){return me}),n.d(t,"subtract",function(){return pe}),n.d(t,"multiplyScalar",function(){return B}),n.d(t,"multiplyScalarAndAdd",function(){return F}),n.d(t,"exactEquals",function(){return J}),n.d(t,"equals",function(){return oe}),n.d(t,"mul",function(){return K}),n.d(t,"sub",function(){return te});var i=n(2);function o(){var w=new i.ARRAY_TYPE(16);return i.ARRAY_TYPE!=Float32Array&&(w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[11]=0,w[12]=0,w[13]=0,w[14]=0),w[0]=1,w[5]=1,w[10]=1,w[15]=1,w}function a(w){var I=new i.ARRAY_TYPE(16);return I[0]=w[0],I[1]=w[1],I[2]=w[2],I[3]=w[3],I[4]=w[4],I[5]=w[5],I[6]=w[6],I[7]=w[7],I[8]=w[8],I[9]=w[9],I[10]=w[10],I[11]=w[11],I[12]=w[12],I[13]=w[13],I[14]=w[14],I[15]=w[15],I}function c(w,I){return w[0]=I[0],w[1]=I[1],w[2]=I[2],w[3]=I[3],w[4]=I[4],w[5]=I[5],w[6]=I[6],w[7]=I[7],w[8]=I[8],w[9]=I[9],w[10]=I[10],w[11]=I[11],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15],w}function l(w,I,U,G,_,re,ne,X,ae,ue,he,ge,Me,we,be,Ie){var Ce=new i.ARRAY_TYPE(16);return Ce[0]=w,Ce[1]=I,Ce[2]=U,Ce[3]=G,Ce[4]=_,Ce[5]=re,Ce[6]=ne,Ce[7]=X,Ce[8]=ae,Ce[9]=ue,Ce[10]=he,Ce[11]=ge,Ce[12]=Me,Ce[13]=we,Ce[14]=be,Ce[15]=Ie,Ce}function u(w,I,U,G,_,re,ne,X,ae,ue,he,ge,Me,we,be,Ie,Ce){return w[0]=I,w[1]=U,w[2]=G,w[3]=_,w[4]=re,w[5]=ne,w[6]=X,w[7]=ae,w[8]=ue,w[9]=he,w[10]=ge,w[11]=Me,w[12]=we,w[13]=be,w[14]=Ie,w[15]=Ce,w}function h(w){return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function d(w,I){if(w===I){var U=I[1],G=I[2],_=I[3],re=I[6],ne=I[7],X=I[11];w[1]=I[4],w[2]=I[8],w[3]=I[12],w[4]=U,w[6]=I[9],w[7]=I[13],w[8]=G,w[9]=re,w[11]=I[14],w[12]=_,w[13]=ne,w[14]=X}else w[0]=I[0],w[1]=I[4],w[2]=I[8],w[3]=I[12],w[4]=I[1],w[5]=I[5],w[6]=I[9],w[7]=I[13],w[8]=I[2],w[9]=I[6],w[10]=I[10],w[11]=I[14],w[12]=I[3],w[13]=I[7],w[14]=I[11],w[15]=I[15];return w}function f(w,I){var U=I[0],G=I[1],_=I[2],re=I[3],ne=I[4],X=I[5],ae=I[6],ue=I[7],he=I[8],ge=I[9],Me=I[10],we=I[11],be=I[12],Ie=I[13],Ce=I[14],Ae=I[15],Ee=U*X-G*ne,ke=U*ae-_*ne,Ne=U*ue-re*ne,Oe=G*ae-_*X,je=G*ue-re*X,Je=_*ue-re*ae,rt=he*Ie-ge*be,et=he*Ce-Me*be,nt=he*Ae-we*be,Qe=ge*Ce-Me*Ie,st=ge*Ae-we*Ie,ut=Me*Ae-we*Ce,Ke=Ee*ut-ke*st+Ne*Qe+Oe*nt-je*et+Je*rt;return Ke?(Ke=1/Ke,w[0]=(X*ut-ae*st+ue*Qe)*Ke,w[1]=(_*st-G*ut-re*Qe)*Ke,w[2]=(Ie*Je-Ce*je+Ae*Oe)*Ke,w[3]=(Me*je-ge*Je-we*Oe)*Ke,w[4]=(ae*nt-ne*ut-ue*et)*Ke,w[5]=(U*ut-_*nt+re*et)*Ke,w[6]=(Ce*Ne-be*Je-Ae*ke)*Ke,w[7]=(he*Je-Me*Ne+we*ke)*Ke,w[8]=(ne*st-X*nt+ue*rt)*Ke,w[9]=(G*nt-U*st-re*rt)*Ke,w[10]=(be*je-Ie*Ne+Ae*Ee)*Ke,w[11]=(ge*Ne-he*je-we*Ee)*Ke,w[12]=(X*et-ne*Qe-ae*rt)*Ke,w[13]=(U*Qe-G*et+_*rt)*Ke,w[14]=(Ie*ke-be*Oe-Ce*Ee)*Ke,w[15]=(he*Oe-ge*ke+Me*Ee)*Ke,w):null}function g(w,I){var U=I[0],G=I[1],_=I[2],re=I[3],ne=I[4],X=I[5],ae=I[6],ue=I[7],he=I[8],ge=I[9],Me=I[10],we=I[11],be=I[12],Ie=I[13],Ce=I[14],Ae=I[15];return w[0]=X*(Me*Ae-we*Ce)-ge*(ae*Ae-ue*Ce)+Ie*(ae*we-ue*Me),w[1]=-(G*(Me*Ae-we*Ce)-ge*(_*Ae-re*Ce)+Ie*(_*we-re*Me)),w[2]=G*(ae*Ae-ue*Ce)-X*(_*Ae-re*Ce)+Ie*(_*ue-re*ae),w[3]=-(G*(ae*we-ue*Me)-X*(_*we-re*Me)+ge*(_*ue-re*ae)),w[4]=-(ne*(Me*Ae-we*Ce)-he*(ae*Ae-ue*Ce)+be*(ae*we-ue*Me)),w[5]=U*(Me*Ae-we*Ce)-he*(_*Ae-re*Ce)+be*(_*we-re*Me),w[6]=-(U*(ae*Ae-ue*Ce)-ne*(_*Ae-re*Ce)+be*(_*ue-re*ae)),w[7]=U*(ae*we-ue*Me)-ne*(_*we-re*Me)+he*(_*ue-re*ae),w[8]=ne*(ge*Ae-we*Ie)-he*(X*Ae-ue*Ie)+be*(X*we-ue*ge),w[9]=-(U*(ge*Ae-we*Ie)-he*(G*Ae-re*Ie)+be*(G*we-re*ge)),w[10]=U*(X*Ae-ue*Ie)-ne*(G*Ae-re*Ie)+be*(G*ue-re*X),w[11]=-(U*(X*we-ue*ge)-ne*(G*we-re*ge)+he*(G*ue-re*X)),w[12]=-(ne*(ge*Ce-Me*Ie)-he*(X*Ce-ae*Ie)+be*(X*Me-ae*ge)),w[13]=U*(ge*Ce-Me*Ie)-he*(G*Ce-_*Ie)+be*(G*Me-_*ge),w[14]=-(U*(X*Ce-ae*Ie)-ne*(G*Ce-_*Ie)+be*(G*ae-_*X)),w[15]=U*(X*Me-ae*ge)-ne*(G*Me-_*ge)+he*(G*ae-_*X),w}function y(w){var I=w[0],U=w[1],G=w[2],_=w[3],re=w[4],ne=w[5],X=w[6],ae=w[7],ue=w[8],he=w[9],ge=w[10],Me=w[11],we=w[12],be=w[13],Ie=w[14],Ce=w[15],Ae=I*ne-U*re,Ee=I*X-G*re,ke=I*ae-_*re,Ne=U*X-G*ne,Oe=U*ae-_*ne,je=G*ae-_*X,Je=ue*be-he*we,rt=ue*Ie-ge*we,et=ue*Ce-Me*we,nt=he*Ie-ge*be,Qe=he*Ce-Me*be,st=ge*Ce-Me*Ie;return Ae*st-Ee*Qe+ke*nt+Ne*et-Oe*rt+je*Je}function S(w,I,U){var G=I[0],_=I[1],re=I[2],ne=I[3],X=I[4],ae=I[5],ue=I[6],he=I[7],ge=I[8],Me=I[9],we=I[10],be=I[11],Ie=I[12],Ce=I[13],Ae=I[14],Ee=I[15],ke=U[0],Ne=U[1],Oe=U[2],je=U[3];return w[0]=ke*G+Ne*X+Oe*ge+je*Ie,w[1]=ke*_+Ne*ae+Oe*Me+je*Ce,w[2]=ke*re+Ne*ue+Oe*we+je*Ae,w[3]=ke*ne+Ne*he+Oe*be+je*Ee,ke=U[4],Ne=U[5],Oe=U[6],je=U[7],w[4]=ke*G+Ne*X+Oe*ge+je*Ie,w[5]=ke*_+Ne*ae+Oe*Me+je*Ce,w[6]=ke*re+Ne*ue+Oe*we+je*Ae,w[7]=ke*ne+Ne*he+Oe*be+je*Ee,ke=U[8],Ne=U[9],Oe=U[10],je=U[11],w[8]=ke*G+Ne*X+Oe*ge+je*Ie,w[9]=ke*_+Ne*ae+Oe*Me+je*Ce,w[10]=ke*re+Ne*ue+Oe*we+je*Ae,w[11]=ke*ne+Ne*he+Oe*be+je*Ee,ke=U[12],Ne=U[13],Oe=U[14],je=U[15],w[12]=ke*G+Ne*X+Oe*ge+je*Ie,w[13]=ke*_+Ne*ae+Oe*Me+je*Ce,w[14]=ke*re+Ne*ue+Oe*we+je*Ae,w[15]=ke*ne+Ne*he+Oe*be+je*Ee,w}function E(w,I,U){var G=U[0],_=U[1],re=U[2],ne,X,ae,ue,he,ge,Me,we,be,Ie,Ce,Ae;return I===w?(w[12]=I[0]*G+I[4]*_+I[8]*re+I[12],w[13]=I[1]*G+I[5]*_+I[9]*re+I[13],w[14]=I[2]*G+I[6]*_+I[10]*re+I[14],w[15]=I[3]*G+I[7]*_+I[11]*re+I[15]):(ne=I[0],X=I[1],ae=I[2],ue=I[3],he=I[4],ge=I[5],Me=I[6],we=I[7],be=I[8],Ie=I[9],Ce=I[10],Ae=I[11],w[0]=ne,w[1]=X,w[2]=ae,w[3]=ue,w[4]=he,w[5]=ge,w[6]=Me,w[7]=we,w[8]=be,w[9]=Ie,w[10]=Ce,w[11]=Ae,w[12]=ne*G+he*_+be*re+I[12],w[13]=X*G+ge*_+Ie*re+I[13],w[14]=ae*G+Me*_+Ce*re+I[14],w[15]=ue*G+we*_+Ae*re+I[15]),w}function C(w,I,U){var G=U[0],_=U[1],re=U[2];return w[0]=I[0]*G,w[1]=I[1]*G,w[2]=I[2]*G,w[3]=I[3]*G,w[4]=I[4]*_,w[5]=I[5]*_,w[6]=I[6]*_,w[7]=I[7]*_,w[8]=I[8]*re,w[9]=I[9]*re,w[10]=I[10]*re,w[11]=I[11]*re,w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15],w}function L(w,I,U,G){var _=G[0],re=G[1],ne=G[2],X=Math.hypot(_,re,ne),ae,ue,he,ge,Me,we,be,Ie,Ce,Ae,Ee,ke,Ne,Oe,je,Je,rt,et,nt,Qe,st,ut,Ke,Wt;return X<i.EPSILON?null:(X=1/X,_*=X,re*=X,ne*=X,ae=Math.sin(U),ue=Math.cos(U),he=1-ue,ge=I[0],Me=I[1],we=I[2],be=I[3],Ie=I[4],Ce=I[5],Ae=I[6],Ee=I[7],ke=I[8],Ne=I[9],Oe=I[10],je=I[11],Je=_*_*he+ue,rt=re*_*he+ne*ae,et=ne*_*he-re*ae,nt=_*re*he-ne*ae,Qe=re*re*he+ue,st=ne*re*he+_*ae,ut=_*ne*he+re*ae,Ke=re*ne*he-_*ae,Wt=ne*ne*he+ue,w[0]=ge*Je+Ie*rt+ke*et,w[1]=Me*Je+Ce*rt+Ne*et,w[2]=we*Je+Ae*rt+Oe*et,w[3]=be*Je+Ee*rt+je*et,w[4]=ge*nt+Ie*Qe+ke*st,w[5]=Me*nt+Ce*Qe+Ne*st,w[6]=we*nt+Ae*Qe+Oe*st,w[7]=be*nt+Ee*Qe+je*st,w[8]=ge*ut+Ie*Ke+ke*Wt,w[9]=Me*ut+Ce*Ke+Ne*Wt,w[10]=we*ut+Ae*Ke+Oe*Wt,w[11]=be*ut+Ee*Ke+je*Wt,I!==w&&(w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w)}function T(w,I,U){var G=Math.sin(U),_=Math.cos(U),re=I[4],ne=I[5],X=I[6],ae=I[7],ue=I[8],he=I[9],ge=I[10],Me=I[11];return I!==w&&(w[0]=I[0],w[1]=I[1],w[2]=I[2],w[3]=I[3],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[4]=re*_+ue*G,w[5]=ne*_+he*G,w[6]=X*_+ge*G,w[7]=ae*_+Me*G,w[8]=ue*_-re*G,w[9]=he*_-ne*G,w[10]=ge*_-X*G,w[11]=Me*_-ae*G,w}function p(w,I,U){var G=Math.sin(U),_=Math.cos(U),re=I[0],ne=I[1],X=I[2],ae=I[3],ue=I[8],he=I[9],ge=I[10],Me=I[11];return I!==w&&(w[4]=I[4],w[5]=I[5],w[6]=I[6],w[7]=I[7],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[0]=re*_-ue*G,w[1]=ne*_-he*G,w[2]=X*_-ge*G,w[3]=ae*_-Me*G,w[8]=re*G+ue*_,w[9]=ne*G+he*_,w[10]=X*G+ge*_,w[11]=ae*G+Me*_,w}function m(w,I,U){var G=Math.sin(U),_=Math.cos(U),re=I[0],ne=I[1],X=I[2],ae=I[3],ue=I[4],he=I[5],ge=I[6],Me=I[7];return I!==w&&(w[8]=I[8],w[9]=I[9],w[10]=I[10],w[11]=I[11],w[12]=I[12],w[13]=I[13],w[14]=I[14],w[15]=I[15]),w[0]=re*_+ue*G,w[1]=ne*_+he*G,w[2]=X*_+ge*G,w[3]=ae*_+Me*G,w[4]=ue*_-re*G,w[5]=he*_-ne*G,w[6]=ge*_-X*G,w[7]=Me*_-ae*G,w}function M(w,I){return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=I[0],w[13]=I[1],w[14]=I[2],w[15]=1,w}function v(w,I){return w[0]=I[0],w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=I[1],w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=I[2],w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function R(w,I,U){var G=U[0],_=U[1],re=U[2],ne=Math.hypot(G,_,re),X,ae,ue;return ne<i.EPSILON?null:(ne=1/ne,G*=ne,_*=ne,re*=ne,X=Math.sin(I),ae=Math.cos(I),ue=1-ae,w[0]=G*G*ue+ae,w[1]=_*G*ue+re*X,w[2]=re*G*ue-_*X,w[3]=0,w[4]=G*_*ue-re*X,w[5]=_*_*ue+ae,w[6]=re*_*ue+G*X,w[7]=0,w[8]=G*re*ue+_*X,w[9]=_*re*ue-G*X,w[10]=re*re*ue+ae,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w)}function b(w,I){var U=Math.sin(I),G=Math.cos(I);return w[0]=1,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=G,w[6]=U,w[7]=0,w[8]=0,w[9]=-U,w[10]=G,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function P(w,I){var U=Math.sin(I),G=Math.cos(I);return w[0]=G,w[1]=0,w[2]=-U,w[3]=0,w[4]=0,w[5]=1,w[6]=0,w[7]=0,w[8]=U,w[9]=0,w[10]=G,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function D(w,I){var U=Math.sin(I),G=Math.cos(I);return w[0]=G,w[1]=U,w[2]=0,w[3]=0,w[4]=-U,w[5]=G,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=1,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function z(w,I,U){var G=I[0],_=I[1],re=I[2],ne=I[3],X=G+G,ae=_+_,ue=re+re,he=G*X,ge=G*ae,Me=G*ue,we=_*ae,be=_*ue,Ie=re*ue,Ce=ne*X,Ae=ne*ae,Ee=ne*ue;return w[0]=1-(we+Ie),w[1]=ge+Ee,w[2]=Me-Ae,w[3]=0,w[4]=ge-Ee,w[5]=1-(he+Ie),w[6]=be+Ce,w[7]=0,w[8]=Me+Ae,w[9]=be-Ce,w[10]=1-(he+we),w[11]=0,w[12]=U[0],w[13]=U[1],w[14]=U[2],w[15]=1,w}function j(w,I){var U=new i.ARRAY_TYPE(3),G=-I[0],_=-I[1],re=-I[2],ne=I[3],X=I[4],ae=I[5],ue=I[6],he=I[7],ge=G*G+_*_+re*re+ne*ne;return ge>0?(U[0]=(X*ne+he*G+ae*re-ue*_)*2/ge,U[1]=(ae*ne+he*_+ue*G-X*re)*2/ge,U[2]=(ue*ne+he*re+X*_-ae*G)*2/ge):(U[0]=(X*ne+he*G+ae*re-ue*_)*2,U[1]=(ae*ne+he*_+ue*G-X*re)*2,U[2]=(ue*ne+he*re+X*_-ae*G)*2),z(w,I,U),w}function A(w,I){return w[0]=I[12],w[1]=I[13],w[2]=I[14],w}function k(w,I){var U=I[0],G=I[1],_=I[2],re=I[4],ne=I[5],X=I[6],ae=I[8],ue=I[9],he=I[10];return w[0]=Math.hypot(U,G,_),w[1]=Math.hypot(re,ne,X),w[2]=Math.hypot(ae,ue,he),w}function N(w,I){var U=new i.ARRAY_TYPE(3);k(U,I);var G=1/U[0],_=1/U[1],re=1/U[2],ne=I[0]*G,X=I[1]*_,ae=I[2]*re,ue=I[4]*G,he=I[5]*_,ge=I[6]*re,Me=I[8]*G,we=I[9]*_,be=I[10]*re,Ie=ne+he+be,Ce=0;return Ie>0?(Ce=Math.sqrt(Ie+1)*2,w[3]=.25*Ce,w[0]=(ge-we)/Ce,w[1]=(Me-ae)/Ce,w[2]=(X-ue)/Ce):ne>he&&ne>be?(Ce=Math.sqrt(1+ne-he-be)*2,w[3]=(ge-we)/Ce,w[0]=.25*Ce,w[1]=(X+ue)/Ce,w[2]=(Me+ae)/Ce):he>be?(Ce=Math.sqrt(1+he-ne-be)*2,w[3]=(Me-ae)/Ce,w[0]=(X+ue)/Ce,w[1]=.25*Ce,w[2]=(ge+we)/Ce):(Ce=Math.sqrt(1+be-ne-he)*2,w[3]=(X-ue)/Ce,w[0]=(Me+ae)/Ce,w[1]=(ge+we)/Ce,w[2]=.25*Ce),w}function W(w,I,U,G){var _=I[0],re=I[1],ne=I[2],X=I[3],ae=_+_,ue=re+re,he=ne+ne,ge=_*ae,Me=_*ue,we=_*he,be=re*ue,Ie=re*he,Ce=ne*he,Ae=X*ae,Ee=X*ue,ke=X*he,Ne=G[0],Oe=G[1],je=G[2];return w[0]=(1-(be+Ce))*Ne,w[1]=(Me+ke)*Ne,w[2]=(we-Ee)*Ne,w[3]=0,w[4]=(Me-ke)*Oe,w[5]=(1-(ge+Ce))*Oe,w[6]=(Ie+Ae)*Oe,w[7]=0,w[8]=(we+Ee)*je,w[9]=(Ie-Ae)*je,w[10]=(1-(ge+be))*je,w[11]=0,w[12]=U[0],w[13]=U[1],w[14]=U[2],w[15]=1,w}function Y(w,I,U,G,_){var re=I[0],ne=I[1],X=I[2],ae=I[3],ue=re+re,he=ne+ne,ge=X+X,Me=re*ue,we=re*he,be=re*ge,Ie=ne*he,Ce=ne*ge,Ae=X*ge,Ee=ae*ue,ke=ae*he,Ne=ae*ge,Oe=G[0],je=G[1],Je=G[2],rt=_[0],et=_[1],nt=_[2],Qe=(1-(Ie+Ae))*Oe,st=(we+Ne)*Oe,ut=(be-ke)*Oe,Ke=(we-Ne)*je,Wt=(1-(Me+Ae))*je,Br=(Ce+Ee)*je,jr=(be+ke)*Je,vi=(Ce-Ee)*Je,yo=(1-(Me+Ie))*Je;return w[0]=Qe,w[1]=st,w[2]=ut,w[3]=0,w[4]=Ke,w[5]=Wt,w[6]=Br,w[7]=0,w[8]=jr,w[9]=vi,w[10]=yo,w[11]=0,w[12]=U[0]+rt-(Qe*rt+Ke*et+jr*nt),w[13]=U[1]+et-(st*rt+Wt*et+vi*nt),w[14]=U[2]+nt-(ut*rt+Br*et+yo*nt),w[15]=1,w}function Q(w,I){var U=I[0],G=I[1],_=I[2],re=I[3],ne=U+U,X=G+G,ae=_+_,ue=U*ne,he=G*ne,ge=G*X,Me=_*ne,we=_*X,be=_*ae,Ie=re*ne,Ce=re*X,Ae=re*ae;return w[0]=1-ge-be,w[1]=he+Ae,w[2]=Me-Ce,w[3]=0,w[4]=he-Ae,w[5]=1-ue-be,w[6]=we+Ie,w[7]=0,w[8]=Me+Ce,w[9]=we-Ie,w[10]=1-ue-ge,w[11]=0,w[12]=0,w[13]=0,w[14]=0,w[15]=1,w}function ie(w,I,U,G,_,re,ne){var X=1/(U-I),ae=1/(_-G),ue=1/(re-ne);return w[0]=re*2*X,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=re*2*ae,w[6]=0,w[7]=0,w[8]=(U+I)*X,w[9]=(_+G)*ae,w[10]=(ne+re)*ue,w[11]=-1,w[12]=0,w[13]=0,w[14]=ne*re*2*ue,w[15]=0,w}function O(w,I,U,G,_){var re=1/Math.tan(I/2),ne;return w[0]=re/U,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=re,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[11]=-1,w[12]=0,w[13]=0,w[15]=0,_!=null&&_!==1/0?(ne=1/(G-_),w[10]=(_+G)*ne,w[14]=2*_*G*ne):(w[10]=-1,w[14]=-2*G),w}function V(w,I,U,G){var _=Math.tan(I.upDegrees*Math.PI/180),re=Math.tan(I.downDegrees*Math.PI/180),ne=Math.tan(I.leftDegrees*Math.PI/180),X=Math.tan(I.rightDegrees*Math.PI/180),ae=2/(ne+X),ue=2/(_+re);return w[0]=ae,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=ue,w[6]=0,w[7]=0,w[8]=-((ne-X)*ae*.5),w[9]=(_-re)*ue*.5,w[10]=G/(U-G),w[11]=-1,w[12]=0,w[13]=0,w[14]=G*U/(U-G),w[15]=0,w}function Z(w,I,U,G,_,re,ne){var X=1/(I-U),ae=1/(G-_),ue=1/(re-ne);return w[0]=-2*X,w[1]=0,w[2]=0,w[3]=0,w[4]=0,w[5]=-2*ae,w[6]=0,w[7]=0,w[8]=0,w[9]=0,w[10]=2*ue,w[11]=0,w[12]=(I+U)*X,w[13]=(_+G)*ae,w[14]=(ne+re)*ue,w[15]=1,w}function $(w,I,U,G){var _,re,ne,X,ae,ue,he,ge,Me,we,be=I[0],Ie=I[1],Ce=I[2],Ae=G[0],Ee=G[1],ke=G[2],Ne=U[0],Oe=U[1],je=U[2];return Math.abs(be-Ne)<i.EPSILON&&Math.abs(Ie-Oe)<i.EPSILON&&Math.abs(Ce-je)<i.EPSILON?h(w):(he=be-Ne,ge=Ie-Oe,Me=Ce-je,we=1/Math.hypot(he,ge,Me),he*=we,ge*=we,Me*=we,_=Ee*Me-ke*ge,re=ke*he-Ae*Me,ne=Ae*ge-Ee*he,we=Math.hypot(_,re,ne),we?(we=1/we,_*=we,re*=we,ne*=we):(_=0,re=0,ne=0),X=ge*ne-Me*re,ae=Me*_-he*ne,ue=he*re-ge*_,we=Math.hypot(X,ae,ue),we?(we=1/we,X*=we,ae*=we,ue*=we):(X=0,ae=0,ue=0),w[0]=_,w[1]=X,w[2]=he,w[3]=0,w[4]=re,w[5]=ae,w[6]=ge,w[7]=0,w[8]=ne,w[9]=ue,w[10]=Me,w[11]=0,w[12]=-(_*be+re*Ie+ne*Ce),w[13]=-(X*be+ae*Ie+ue*Ce),w[14]=-(he*be+ge*Ie+Me*Ce),w[15]=1,w)}function ee(w,I,U,G){var _=I[0],re=I[1],ne=I[2],X=G[0],ae=G[1],ue=G[2],he=_-U[0],ge=re-U[1],Me=ne-U[2],we=he*he+ge*ge+Me*Me;we>0&&(we=1/Math.sqrt(we),he*=we,ge*=we,Me*=we);var be=ae*Me-ue*ge,Ie=ue*he-X*Me,Ce=X*ge-ae*he;return we=be*be+Ie*Ie+Ce*Ce,we>0&&(we=1/Math.sqrt(we),be*=we,Ie*=we,Ce*=we),w[0]=be,w[1]=Ie,w[2]=Ce,w[3]=0,w[4]=ge*Ce-Me*Ie,w[5]=Me*be-he*Ce,w[6]=he*Ie-ge*be,w[7]=0,w[8]=he,w[9]=ge,w[10]=Me,w[11]=0,w[12]=_,w[13]=re,w[14]=ne,w[15]=1,w}function se(w){return"mat4("+w[0]+", "+w[1]+", "+w[2]+", "+w[3]+", "+w[4]+", "+w[5]+", "+w[6]+", "+w[7]+", "+w[8]+", "+w[9]+", "+w[10]+", "+w[11]+", "+w[12]+", "+w[13]+", "+w[14]+", "+w[15]+")"}function ce(w){return Math.hypot(w[0],w[1],w[2],w[3],w[4],w[5],w[6],w[7],w[8],w[9],w[10],w[11],w[12],w[13],w[14],w[15])}function me(w,I,U){return w[0]=I[0]+U[0],w[1]=I[1]+U[1],w[2]=I[2]+U[2],w[3]=I[3]+U[3],w[4]=I[4]+U[4],w[5]=I[5]+U[5],w[6]=I[6]+U[6],w[7]=I[7]+U[7],w[8]=I[8]+U[8],w[9]=I[9]+U[9],w[10]=I[10]+U[10],w[11]=I[11]+U[11],w[12]=I[12]+U[12],w[13]=I[13]+U[13],w[14]=I[14]+U[14],w[15]=I[15]+U[15],w}function pe(w,I,U){return w[0]=I[0]-U[0],w[1]=I[1]-U[1],w[2]=I[2]-U[2],w[3]=I[3]-U[3],w[4]=I[4]-U[4],w[5]=I[5]-U[5],w[6]=I[6]-U[6],w[7]=I[7]-U[7],w[8]=I[8]-U[8],w[9]=I[9]-U[9],w[10]=I[10]-U[10],w[11]=I[11]-U[11],w[12]=I[12]-U[12],w[13]=I[13]-U[13],w[14]=I[14]-U[14],w[15]=I[15]-U[15],w}function B(w,I,U){return w[0]=I[0]*U,w[1]=I[1]*U,w[2]=I[2]*U,w[3]=I[3]*U,w[4]=I[4]*U,w[5]=I[5]*U,w[6]=I[6]*U,w[7]=I[7]*U,w[8]=I[8]*U,w[9]=I[9]*U,w[10]=I[10]*U,w[11]=I[11]*U,w[12]=I[12]*U,w[13]=I[13]*U,w[14]=I[14]*U,w[15]=I[15]*U,w}function F(w,I,U,G){return w[0]=I[0]+U[0]*G,w[1]=I[1]+U[1]*G,w[2]=I[2]+U[2]*G,w[3]=I[3]+U[3]*G,w[4]=I[4]+U[4]*G,w[5]=I[5]+U[5]*G,w[6]=I[6]+U[6]*G,w[7]=I[7]+U[7]*G,w[8]=I[8]+U[8]*G,w[9]=I[9]+U[9]*G,w[10]=I[10]+U[10]*G,w[11]=I[11]+U[11]*G,w[12]=I[12]+U[12]*G,w[13]=I[13]+U[13]*G,w[14]=I[14]+U[14]*G,w[15]=I[15]+U[15]*G,w}function J(w,I){return w[0]===I[0]&&w[1]===I[1]&&w[2]===I[2]&&w[3]===I[3]&&w[4]===I[4]&&w[5]===I[5]&&w[6]===I[6]&&w[7]===I[7]&&w[8]===I[8]&&w[9]===I[9]&&w[10]===I[10]&&w[11]===I[11]&&w[12]===I[12]&&w[13]===I[13]&&w[14]===I[14]&&w[15]===I[15]}function oe(w,I){var U=w[0],G=w[1],_=w[2],re=w[3],ne=w[4],X=w[5],ae=w[6],ue=w[7],he=w[8],ge=w[9],Me=w[10],we=w[11],be=w[12],Ie=w[13],Ce=w[14],Ae=w[15],Ee=I[0],ke=I[1],Ne=I[2],Oe=I[3],je=I[4],Je=I[5],rt=I[6],et=I[7],nt=I[8],Qe=I[9],st=I[10],ut=I[11],Ke=I[12],Wt=I[13],Br=I[14],jr=I[15];return Math.abs(U-Ee)<=i.EPSILON*Math.max(1,Math.abs(U),Math.abs(Ee))&&Math.abs(G-ke)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ke))&&Math.abs(_-Ne)<=i.EPSILON*Math.max(1,Math.abs(_),Math.abs(Ne))&&Math.abs(re-Oe)<=i.EPSILON*Math.max(1,Math.abs(re),Math.abs(Oe))&&Math.abs(ne-je)<=i.EPSILON*Math.max(1,Math.abs(ne),Math.abs(je))&&Math.abs(X-Je)<=i.EPSILON*Math.max(1,Math.abs(X),Math.abs(Je))&&Math.abs(ae-rt)<=i.EPSILON*Math.max(1,Math.abs(ae),Math.abs(rt))&&Math.abs(ue-et)<=i.EPSILON*Math.max(1,Math.abs(ue),Math.abs(et))&&Math.abs(he-nt)<=i.EPSILON*Math.max(1,Math.abs(he),Math.abs(nt))&&Math.abs(ge-Qe)<=i.EPSILON*Math.max(1,Math.abs(ge),Math.abs(Qe))&&Math.abs(Me-st)<=i.EPSILON*Math.max(1,Math.abs(Me),Math.abs(st))&&Math.abs(we-ut)<=i.EPSILON*Math.max(1,Math.abs(we),Math.abs(ut))&&Math.abs(be-Ke)<=i.EPSILON*Math.max(1,Math.abs(be),Math.abs(Ke))&&Math.abs(Ie-Wt)<=i.EPSILON*Math.max(1,Math.abs(Ie),Math.abs(Wt))&&Math.abs(Ce-Br)<=i.EPSILON*Math.max(1,Math.abs(Ce),Math.abs(Br))&&Math.abs(Ae-jr)<=i.EPSILON*Math.max(1,Math.abs(Ae),Math.abs(jr))}var K=S,te=pe},function(e,t,n){n.r(t),n.d(t,"create",function(){return l}),n.d(t,"identity",function(){return u}),n.d(t,"setAxisAngle",function(){return h}),n.d(t,"getAxisAngle",function(){return d}),n.d(t,"getAngle",function(){return f}),n.d(t,"multiply",function(){return g}),n.d(t,"rotateX",function(){return y}),n.d(t,"rotateY",function(){return S}),n.d(t,"rotateZ",function(){return E}),n.d(t,"calculateW",function(){return C}),n.d(t,"exp",function(){return L}),n.d(t,"ln",function(){return T}),n.d(t,"pow",function(){return p}),n.d(t,"slerp",function(){return m}),n.d(t,"random",function(){return M}),n.d(t,"invert",function(){return v}),n.d(t,"conjugate",function(){return R}),n.d(t,"fromMat3",function(){return b}),n.d(t,"fromEuler",function(){return P}),n.d(t,"str",function(){return D}),n.d(t,"clone",function(){return z}),n.d(t,"fromValues",function(){return j}),n.d(t,"copy",function(){return A}),n.d(t,"set",function(){return k}),n.d(t,"add",function(){return N}),n.d(t,"mul",function(){return W}),n.d(t,"scale",function(){return Y}),n.d(t,"dot",function(){return Q}),n.d(t,"lerp",function(){return ie}),n.d(t,"length",function(){return O}),n.d(t,"len",function(){return V}),n.d(t,"squaredLength",function(){return Z}),n.d(t,"sqrLen",function(){return $}),n.d(t,"normalize",function(){return ee}),n.d(t,"exactEquals",function(){return se}),n.d(t,"equals",function(){return ce}),n.d(t,"rotationTo",function(){return me}),n.d(t,"sqlerp",function(){return pe}),n.d(t,"setAxes",function(){return B});var i=n(2),o=n(5),a=n(8),c=n(9);function l(){var F=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(F[0]=0,F[1]=0,F[2]=0),F[3]=1,F}function u(F){return F[0]=0,F[1]=0,F[2]=0,F[3]=1,F}function h(F,J,oe){oe=oe*.5;var K=Math.sin(oe);return F[0]=K*J[0],F[1]=K*J[1],F[2]=K*J[2],F[3]=Math.cos(oe),F}function d(F,J){var oe=Math.acos(J[3])*2,K=Math.sin(oe/2);return K>i.EPSILON?(F[0]=J[0]/K,F[1]=J[1]/K,F[2]=J[2]/K):(F[0]=1,F[1]=0,F[2]=0),oe}function f(F,J){var oe=Q(F,J);return Math.acos(2*oe*oe-1)}function g(F,J,oe){var K=J[0],te=J[1],w=J[2],I=J[3],U=oe[0],G=oe[1],_=oe[2],re=oe[3];return F[0]=K*re+I*U+te*_-w*G,F[1]=te*re+I*G+w*U-K*_,F[2]=w*re+I*_+K*G-te*U,F[3]=I*re-K*U-te*G-w*_,F}function y(F,J,oe){oe*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],U=Math.sin(oe),G=Math.cos(oe);return F[0]=K*G+I*U,F[1]=te*G+w*U,F[2]=w*G-te*U,F[3]=I*G-K*U,F}function S(F,J,oe){oe*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],U=Math.sin(oe),G=Math.cos(oe);return F[0]=K*G-w*U,F[1]=te*G+I*U,F[2]=w*G+K*U,F[3]=I*G-te*U,F}function E(F,J,oe){oe*=.5;var K=J[0],te=J[1],w=J[2],I=J[3],U=Math.sin(oe),G=Math.cos(oe);return F[0]=K*G+te*U,F[1]=te*G-K*U,F[2]=w*G+I*U,F[3]=I*G-w*U,F}function C(F,J){var oe=J[0],K=J[1],te=J[2];return F[0]=oe,F[1]=K,F[2]=te,F[3]=Math.sqrt(Math.abs(1-oe*oe-K*K-te*te)),F}function L(F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=Math.sqrt(oe*oe+K*K+te*te),U=Math.exp(w),G=I>0?U*Math.sin(I)/I:0;return F[0]=oe*G,F[1]=K*G,F[2]=te*G,F[3]=U*Math.cos(I),F}function T(F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=Math.sqrt(oe*oe+K*K+te*te),U=I>0?Math.atan2(I,w)/I:0;return F[0]=oe*U,F[1]=K*U,F[2]=te*U,F[3]=.5*Math.log(oe*oe+K*K+te*te+w*w),F}function p(F,J,oe){return T(F,J),Y(F,F,oe),L(F,F),F}function m(F,J,oe,K){var te=J[0],w=J[1],I=J[2],U=J[3],G=oe[0],_=oe[1],re=oe[2],ne=oe[3],X,ae,ue,he,ge;return ae=te*G+w*_+I*re+U*ne,ae<0&&(ae=-ae,G=-G,_=-_,re=-re,ne=-ne),1-ae>i.EPSILON?(X=Math.acos(ae),ue=Math.sin(X),he=Math.sin((1-K)*X)/ue,ge=Math.sin(K*X)/ue):(he=1-K,ge=K),F[0]=he*te+ge*G,F[1]=he*w+ge*_,F[2]=he*I+ge*re,F[3]=he*U+ge*ne,F}function M(F){var J=i.RANDOM(),oe=i.RANDOM(),K=i.RANDOM(),te=Math.sqrt(1-J),w=Math.sqrt(J);return F[0]=te*Math.sin(2*Math.PI*oe),F[1]=te*Math.cos(2*Math.PI*oe),F[2]=w*Math.sin(2*Math.PI*K),F[3]=w*Math.cos(2*Math.PI*K),F}function v(F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=oe*oe+K*K+te*te+w*w,U=I?1/I:0;return F[0]=-oe*U,F[1]=-K*U,F[2]=-te*U,F[3]=w*U,F}function R(F,J){return F[0]=-J[0],F[1]=-J[1],F[2]=-J[2],F[3]=J[3],F}function b(F,J){var oe=J[0]+J[4]+J[8],K;if(oe>0)K=Math.sqrt(oe+1),F[3]=.5*K,K=.5/K,F[0]=(J[5]-J[7])*K,F[1]=(J[6]-J[2])*K,F[2]=(J[1]-J[3])*K;else{var te=0;J[4]>J[0]&&(te=1),J[8]>J[te*3+te]&&(te=2);var w=(te+1)%3,I=(te+2)%3;K=Math.sqrt(J[te*3+te]-J[w*3+w]-J[I*3+I]+1),F[te]=.5*K,K=.5/K,F[3]=(J[w*3+I]-J[I*3+w])*K,F[w]=(J[w*3+te]+J[te*3+w])*K,F[I]=(J[I*3+te]+J[te*3+I])*K}return F}function P(F,J,oe,K){var te=.5*Math.PI/180;J*=te,oe*=te,K*=te;var w=Math.sin(J),I=Math.cos(J),U=Math.sin(oe),G=Math.cos(oe),_=Math.sin(K),re=Math.cos(K);return F[0]=w*G*re-I*U*_,F[1]=I*U*re+w*G*_,F[2]=I*G*_-w*U*re,F[3]=I*G*re+w*U*_,F}function D(F){return"quat("+F[0]+", "+F[1]+", "+F[2]+", "+F[3]+")"}var z=c.clone,j=c.fromValues,A=c.copy,k=c.set,N=c.add,W=g,Y=c.scale,Q=c.dot,ie=c.lerp,O=c.length,V=O,Z=c.squaredLength,$=Z,ee=c.normalize,se=c.exactEquals,ce=c.equals,me=function(){var F=a.create(),J=a.fromValues(1,0,0),oe=a.fromValues(0,1,0);return function(K,te,w){var I=a.dot(te,w);return I<-.999999?(a.cross(F,J,te),a.len(F)<1e-6&&a.cross(F,oe,te),a.normalize(F,F),h(K,F,Math.PI),K):I>.999999?(K[0]=0,K[1]=0,K[2]=0,K[3]=1,K):(a.cross(F,te,w),K[0]=F[0],K[1]=F[1],K[2]=F[2],K[3]=1+I,ee(K,K))}}(),pe=function(){var F=l(),J=l();return function(oe,K,te,w,I,U){return m(F,K,I,U),m(J,te,w,U),m(oe,F,J,2*U*(1-U)),oe}}(),B=function(){var F=o.create();return function(J,oe,K,te){return F[0]=K[0],F[3]=K[1],F[6]=K[2],F[1]=te[0],F[4]=te[1],F[7]=te[2],F[2]=-oe[0],F[5]=-oe[1],F[8]=-oe[2],ee(J,b(J,F))}}()},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"clone",function(){return a}),n.d(t,"length",function(){return c}),n.d(t,"fromValues",function(){return l}),n.d(t,"copy",function(){return u}),n.d(t,"set",function(){return h}),n.d(t,"add",function(){return d}),n.d(t,"subtract",function(){return f}),n.d(t,"multiply",function(){return g}),n.d(t,"divide",function(){return y}),n.d(t,"ceil",function(){return S}),n.d(t,"floor",function(){return E}),n.d(t,"min",function(){return C}),n.d(t,"max",function(){return L}),n.d(t,"round",function(){return T}),n.d(t,"scale",function(){return p}),n.d(t,"scaleAndAdd",function(){return m}),n.d(t,"distance",function(){return M}),n.d(t,"squaredDistance",function(){return v}),n.d(t,"squaredLength",function(){return R}),n.d(t,"negate",function(){return b}),n.d(t,"inverse",function(){return P}),n.d(t,"normalize",function(){return D}),n.d(t,"dot",function(){return z}),n.d(t,"cross",function(){return j}),n.d(t,"lerp",function(){return A}),n.d(t,"hermite",function(){return k}),n.d(t,"bezier",function(){return N}),n.d(t,"random",function(){return W}),n.d(t,"transformMat4",function(){return Y}),n.d(t,"transformMat3",function(){return Q}),n.d(t,"transformQuat",function(){return ie}),n.d(t,"rotateX",function(){return O}),n.d(t,"rotateY",function(){return V}),n.d(t,"rotateZ",function(){return Z}),n.d(t,"angle",function(){return $}),n.d(t,"zero",function(){return ee}),n.d(t,"str",function(){return se}),n.d(t,"exactEquals",function(){return ce}),n.d(t,"equals",function(){return me}),n.d(t,"sub",function(){return pe}),n.d(t,"mul",function(){return B}),n.d(t,"div",function(){return F}),n.d(t,"dist",function(){return J}),n.d(t,"sqrDist",function(){return oe}),n.d(t,"len",function(){return K}),n.d(t,"sqrLen",function(){return te}),n.d(t,"forEach",function(){return w});var i=n(2);function o(){var I=new i.ARRAY_TYPE(3);return i.ARRAY_TYPE!=Float32Array&&(I[0]=0,I[1]=0,I[2]=0),I}function a(I){var U=new i.ARRAY_TYPE(3);return U[0]=I[0],U[1]=I[1],U[2]=I[2],U}function c(I){var U=I[0],G=I[1],_=I[2];return Math.hypot(U,G,_)}function l(I,U,G){var _=new i.ARRAY_TYPE(3);return _[0]=I,_[1]=U,_[2]=G,_}function u(I,U){return I[0]=U[0],I[1]=U[1],I[2]=U[2],I}function h(I,U,G,_){return I[0]=U,I[1]=G,I[2]=_,I}function d(I,U,G){return I[0]=U[0]+G[0],I[1]=U[1]+G[1],I[2]=U[2]+G[2],I}function f(I,U,G){return I[0]=U[0]-G[0],I[1]=U[1]-G[1],I[2]=U[2]-G[2],I}function g(I,U,G){return I[0]=U[0]*G[0],I[1]=U[1]*G[1],I[2]=U[2]*G[2],I}function y(I,U,G){return I[0]=U[0]/G[0],I[1]=U[1]/G[1],I[2]=U[2]/G[2],I}function S(I,U){return I[0]=Math.ceil(U[0]),I[1]=Math.ceil(U[1]),I[2]=Math.ceil(U[2]),I}function E(I,U){return I[0]=Math.floor(U[0]),I[1]=Math.floor(U[1]),I[2]=Math.floor(U[2]),I}function C(I,U,G){return I[0]=Math.min(U[0],G[0]),I[1]=Math.min(U[1],G[1]),I[2]=Math.min(U[2],G[2]),I}function L(I,U,G){return I[0]=Math.max(U[0],G[0]),I[1]=Math.max(U[1],G[1]),I[2]=Math.max(U[2],G[2]),I}function T(I,U){return I[0]=Math.round(U[0]),I[1]=Math.round(U[1]),I[2]=Math.round(U[2]),I}function p(I,U,G){return I[0]=U[0]*G,I[1]=U[1]*G,I[2]=U[2]*G,I}function m(I,U,G,_){return I[0]=U[0]+G[0]*_,I[1]=U[1]+G[1]*_,I[2]=U[2]+G[2]*_,I}function M(I,U){var G=U[0]-I[0],_=U[1]-I[1],re=U[2]-I[2];return Math.hypot(G,_,re)}function v(I,U){var G=U[0]-I[0],_=U[1]-I[1],re=U[2]-I[2];return G*G+_*_+re*re}function R(I){var U=I[0],G=I[1],_=I[2];return U*U+G*G+_*_}function b(I,U){return I[0]=-U[0],I[1]=-U[1],I[2]=-U[2],I}function P(I,U){return I[0]=1/U[0],I[1]=1/U[1],I[2]=1/U[2],I}function D(I,U){var G=U[0],_=U[1],re=U[2],ne=G*G+_*_+re*re;return ne>0&&(ne=1/Math.sqrt(ne)),I[0]=U[0]*ne,I[1]=U[1]*ne,I[2]=U[2]*ne,I}function z(I,U){return I[0]*U[0]+I[1]*U[1]+I[2]*U[2]}function j(I,U,G){var _=U[0],re=U[1],ne=U[2],X=G[0],ae=G[1],ue=G[2];return I[0]=re*ue-ne*ae,I[1]=ne*X-_*ue,I[2]=_*ae-re*X,I}function A(I,U,G,_){var re=U[0],ne=U[1],X=U[2];return I[0]=re+_*(G[0]-re),I[1]=ne+_*(G[1]-ne),I[2]=X+_*(G[2]-X),I}function k(I,U,G,_,re,ne){var X=ne*ne,ae=X*(2*ne-3)+1,ue=X*(ne-2)+ne,he=X*(ne-1),ge=X*(3-2*ne);return I[0]=U[0]*ae+G[0]*ue+_[0]*he+re[0]*ge,I[1]=U[1]*ae+G[1]*ue+_[1]*he+re[1]*ge,I[2]=U[2]*ae+G[2]*ue+_[2]*he+re[2]*ge,I}function N(I,U,G,_,re,ne){var X=1-ne,ae=X*X,ue=ne*ne,he=ae*X,ge=3*ne*ae,Me=3*ue*X,we=ue*ne;return I[0]=U[0]*he+G[0]*ge+_[0]*Me+re[0]*we,I[1]=U[1]*he+G[1]*ge+_[1]*Me+re[1]*we,I[2]=U[2]*he+G[2]*ge+_[2]*Me+re[2]*we,I}function W(I,U){U=U||1;var G=i.RANDOM()*2*Math.PI,_=i.RANDOM()*2-1,re=Math.sqrt(1-_*_)*U;return I[0]=Math.cos(G)*re,I[1]=Math.sin(G)*re,I[2]=_*U,I}function Y(I,U,G){var _=U[0],re=U[1],ne=U[2],X=G[3]*_+G[7]*re+G[11]*ne+G[15];return X=X||1,I[0]=(G[0]*_+G[4]*re+G[8]*ne+G[12])/X,I[1]=(G[1]*_+G[5]*re+G[9]*ne+G[13])/X,I[2]=(G[2]*_+G[6]*re+G[10]*ne+G[14])/X,I}function Q(I,U,G){var _=U[0],re=U[1],ne=U[2];return I[0]=_*G[0]+re*G[3]+ne*G[6],I[1]=_*G[1]+re*G[4]+ne*G[7],I[2]=_*G[2]+re*G[5]+ne*G[8],I}function ie(I,U,G){var _=G[0],re=G[1],ne=G[2],X=G[3],ae=U[0],ue=U[1],he=U[2],ge=re*he-ne*ue,Me=ne*ae-_*he,we=_*ue-re*ae,be=re*we-ne*Me,Ie=ne*ge-_*we,Ce=_*Me-re*ge,Ae=X*2;return ge*=Ae,Me*=Ae,we*=Ae,be*=2,Ie*=2,Ce*=2,I[0]=ae+ge+be,I[1]=ue+Me+Ie,I[2]=he+we+Ce,I}function O(I,U,G,_){var re=[],ne=[];return re[0]=U[0]-G[0],re[1]=U[1]-G[1],re[2]=U[2]-G[2],ne[0]=re[0],ne[1]=re[1]*Math.cos(_)-re[2]*Math.sin(_),ne[2]=re[1]*Math.sin(_)+re[2]*Math.cos(_),I[0]=ne[0]+G[0],I[1]=ne[1]+G[1],I[2]=ne[2]+G[2],I}function V(I,U,G,_){var re=[],ne=[];return re[0]=U[0]-G[0],re[1]=U[1]-G[1],re[2]=U[2]-G[2],ne[0]=re[2]*Math.sin(_)+re[0]*Math.cos(_),ne[1]=re[1],ne[2]=re[2]*Math.cos(_)-re[0]*Math.sin(_),I[0]=ne[0]+G[0],I[1]=ne[1]+G[1],I[2]=ne[2]+G[2],I}function Z(I,U,G,_){var re=[],ne=[];return re[0]=U[0]-G[0],re[1]=U[1]-G[1],re[2]=U[2]-G[2],ne[0]=re[0]*Math.cos(_)-re[1]*Math.sin(_),ne[1]=re[0]*Math.sin(_)+re[1]*Math.cos(_),ne[2]=re[2],I[0]=ne[0]+G[0],I[1]=ne[1]+G[1],I[2]=ne[2]+G[2],I}function $(I,U){var G=I[0],_=I[1],re=I[2],ne=U[0],X=U[1],ae=U[2],ue=Math.sqrt(G*G+_*_+re*re),he=Math.sqrt(ne*ne+X*X+ae*ae),ge=ue*he,Me=ge&&z(I,U)/ge;return Math.acos(Math.min(Math.max(Me,-1),1))}function ee(I){return I[0]=0,I[1]=0,I[2]=0,I}function se(I){return"vec3("+I[0]+", "+I[1]+", "+I[2]+")"}function ce(I,U){return I[0]===U[0]&&I[1]===U[1]&&I[2]===U[2]}function me(I,U){var G=I[0],_=I[1],re=I[2],ne=U[0],X=U[1],ae=U[2];return Math.abs(G-ne)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ne))&&Math.abs(_-X)<=i.EPSILON*Math.max(1,Math.abs(_),Math.abs(X))&&Math.abs(re-ae)<=i.EPSILON*Math.max(1,Math.abs(re),Math.abs(ae))}var pe=f,B=g,F=y,J=M,oe=v,K=c,te=R,w=function(){var I=o();return function(U,G,_,re,ne,X){var ae,ue;for(G||(G=3),_||(_=0),re?ue=Math.min(re*G+_,U.length):ue=U.length,ae=_;ae<ue;ae+=G)I[0]=U[ae],I[1]=U[ae+1],I[2]=U[ae+2],ne(I,I,X),U[ae]=I[0],U[ae+1]=I[1],U[ae+2]=I[2];return U}}()},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"clone",function(){return a}),n.d(t,"fromValues",function(){return c}),n.d(t,"copy",function(){return l}),n.d(t,"set",function(){return u}),n.d(t,"add",function(){return h}),n.d(t,"subtract",function(){return d}),n.d(t,"multiply",function(){return f}),n.d(t,"divide",function(){return g}),n.d(t,"ceil",function(){return y}),n.d(t,"floor",function(){return S}),n.d(t,"min",function(){return E}),n.d(t,"max",function(){return C}),n.d(t,"round",function(){return L}),n.d(t,"scale",function(){return T}),n.d(t,"scaleAndAdd",function(){return p}),n.d(t,"distance",function(){return m}),n.d(t,"squaredDistance",function(){return M}),n.d(t,"length",function(){return v}),n.d(t,"squaredLength",function(){return R}),n.d(t,"negate",function(){return b}),n.d(t,"inverse",function(){return P}),n.d(t,"normalize",function(){return D}),n.d(t,"dot",function(){return z}),n.d(t,"cross",function(){return j}),n.d(t,"lerp",function(){return A}),n.d(t,"random",function(){return k}),n.d(t,"transformMat4",function(){return N}),n.d(t,"transformQuat",function(){return W}),n.d(t,"zero",function(){return Y}),n.d(t,"str",function(){return Q}),n.d(t,"exactEquals",function(){return ie}),n.d(t,"equals",function(){return O}),n.d(t,"sub",function(){return V}),n.d(t,"mul",function(){return Z}),n.d(t,"div",function(){return $}),n.d(t,"dist",function(){return ee}),n.d(t,"sqrDist",function(){return se}),n.d(t,"len",function(){return ce}),n.d(t,"sqrLen",function(){return me}),n.d(t,"forEach",function(){return pe});var i=n(2);function o(){var B=new i.ARRAY_TYPE(4);return i.ARRAY_TYPE!=Float32Array&&(B[0]=0,B[1]=0,B[2]=0,B[3]=0),B}function a(B){var F=new i.ARRAY_TYPE(4);return F[0]=B[0],F[1]=B[1],F[2]=B[2],F[3]=B[3],F}function c(B,F,J,oe){var K=new i.ARRAY_TYPE(4);return K[0]=B,K[1]=F,K[2]=J,K[3]=oe,K}function l(B,F){return B[0]=F[0],B[1]=F[1],B[2]=F[2],B[3]=F[3],B}function u(B,F,J,oe,K){return B[0]=F,B[1]=J,B[2]=oe,B[3]=K,B}function h(B,F,J){return B[0]=F[0]+J[0],B[1]=F[1]+J[1],B[2]=F[2]+J[2],B[3]=F[3]+J[3],B}function d(B,F,J){return B[0]=F[0]-J[0],B[1]=F[1]-J[1],B[2]=F[2]-J[2],B[3]=F[3]-J[3],B}function f(B,F,J){return B[0]=F[0]*J[0],B[1]=F[1]*J[1],B[2]=F[2]*J[2],B[3]=F[3]*J[3],B}function g(B,F,J){return B[0]=F[0]/J[0],B[1]=F[1]/J[1],B[2]=F[2]/J[2],B[3]=F[3]/J[3],B}function y(B,F){return B[0]=Math.ceil(F[0]),B[1]=Math.ceil(F[1]),B[2]=Math.ceil(F[2]),B[3]=Math.ceil(F[3]),B}function S(B,F){return B[0]=Math.floor(F[0]),B[1]=Math.floor(F[1]),B[2]=Math.floor(F[2]),B[3]=Math.floor(F[3]),B}function E(B,F,J){return B[0]=Math.min(F[0],J[0]),B[1]=Math.min(F[1],J[1]),B[2]=Math.min(F[2],J[2]),B[3]=Math.min(F[3],J[3]),B}function C(B,F,J){return B[0]=Math.max(F[0],J[0]),B[1]=Math.max(F[1],J[1]),B[2]=Math.max(F[2],J[2]),B[3]=Math.max(F[3],J[3]),B}function L(B,F){return B[0]=Math.round(F[0]),B[1]=Math.round(F[1]),B[2]=Math.round(F[2]),B[3]=Math.round(F[3]),B}function T(B,F,J){return B[0]=F[0]*J,B[1]=F[1]*J,B[2]=F[2]*J,B[3]=F[3]*J,B}function p(B,F,J,oe){return B[0]=F[0]+J[0]*oe,B[1]=F[1]+J[1]*oe,B[2]=F[2]+J[2]*oe,B[3]=F[3]+J[3]*oe,B}function m(B,F){var J=F[0]-B[0],oe=F[1]-B[1],K=F[2]-B[2],te=F[3]-B[3];return Math.hypot(J,oe,K,te)}function M(B,F){var J=F[0]-B[0],oe=F[1]-B[1],K=F[2]-B[2],te=F[3]-B[3];return J*J+oe*oe+K*K+te*te}function v(B){var F=B[0],J=B[1],oe=B[2],K=B[3];return Math.hypot(F,J,oe,K)}function R(B){var F=B[0],J=B[1],oe=B[2],K=B[3];return F*F+J*J+oe*oe+K*K}function b(B,F){return B[0]=-F[0],B[1]=-F[1],B[2]=-F[2],B[3]=-F[3],B}function P(B,F){return B[0]=1/F[0],B[1]=1/F[1],B[2]=1/F[2],B[3]=1/F[3],B}function D(B,F){var J=F[0],oe=F[1],K=F[2],te=F[3],w=J*J+oe*oe+K*K+te*te;return w>0&&(w=1/Math.sqrt(w)),B[0]=J*w,B[1]=oe*w,B[2]=K*w,B[3]=te*w,B}function z(B,F){return B[0]*F[0]+B[1]*F[1]+B[2]*F[2]+B[3]*F[3]}function j(B,F,J,oe){var K=J[0]*oe[1]-J[1]*oe[0],te=J[0]*oe[2]-J[2]*oe[0],w=J[0]*oe[3]-J[3]*oe[0],I=J[1]*oe[2]-J[2]*oe[1],U=J[1]*oe[3]-J[3]*oe[1],G=J[2]*oe[3]-J[3]*oe[2],_=F[0],re=F[1],ne=F[2],X=F[3];return B[0]=re*G-ne*U+X*I,B[1]=-(_*G)+ne*w-X*te,B[2]=_*U-re*w+X*K,B[3]=-(_*I)+re*te-ne*K,B}function A(B,F,J,oe){var K=F[0],te=F[1],w=F[2],I=F[3];return B[0]=K+oe*(J[0]-K),B[1]=te+oe*(J[1]-te),B[2]=w+oe*(J[2]-w),B[3]=I+oe*(J[3]-I),B}function k(B,F){F=F||1;var J,oe,K,te,w,I;do J=i.RANDOM()*2-1,oe=i.RANDOM()*2-1,w=J*J+oe*oe;while(w>=1);do K=i.RANDOM()*2-1,te=i.RANDOM()*2-1,I=K*K+te*te;while(I>=1);var U=Math.sqrt((1-w)/I);return B[0]=F*J,B[1]=F*oe,B[2]=F*K*U,B[3]=F*te*U,B}function N(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3];return B[0]=J[0]*oe+J[4]*K+J[8]*te+J[12]*w,B[1]=J[1]*oe+J[5]*K+J[9]*te+J[13]*w,B[2]=J[2]*oe+J[6]*K+J[10]*te+J[14]*w,B[3]=J[3]*oe+J[7]*K+J[11]*te+J[15]*w,B}function W(B,F,J){var oe=F[0],K=F[1],te=F[2],w=J[0],I=J[1],U=J[2],G=J[3],_=G*oe+I*te-U*K,re=G*K+U*oe-w*te,ne=G*te+w*K-I*oe,X=-w*oe-I*K-U*te;return B[0]=_*G+X*-w+re*-U-ne*-I,B[1]=re*G+X*-I+ne*-w-_*-U,B[2]=ne*G+X*-U+_*-I-re*-w,B[3]=F[3],B}function Y(B){return B[0]=0,B[1]=0,B[2]=0,B[3]=0,B}function Q(B){return"vec4("+B[0]+", "+B[1]+", "+B[2]+", "+B[3]+")"}function ie(B,F){return B[0]===F[0]&&B[1]===F[1]&&B[2]===F[2]&&B[3]===F[3]}function O(B,F){var J=B[0],oe=B[1],K=B[2],te=B[3],w=F[0],I=F[1],U=F[2],G=F[3];return Math.abs(J-w)<=i.EPSILON*Math.max(1,Math.abs(J),Math.abs(w))&&Math.abs(oe-I)<=i.EPSILON*Math.max(1,Math.abs(oe),Math.abs(I))&&Math.abs(K-U)<=i.EPSILON*Math.max(1,Math.abs(K),Math.abs(U))&&Math.abs(te-G)<=i.EPSILON*Math.max(1,Math.abs(te),Math.abs(G))}var V=d,Z=f,$=g,ee=m,se=M,ce=v,me=R,pe=function(){var B=o();return function(F,J,oe,K,te,w){var I,U;for(J||(J=4),oe||(oe=0),K?U=Math.min(K*J+oe,F.length):U=F.length,I=oe;I<U;I+=J)B[0]=F[I],B[1]=F[I+1],B[2]=F[I+2],B[3]=F[I+3],te(B,B,w),F[I]=B[0],F[I+1]=B[1],F[I+2]=B[2],F[I+3]=B[3];return F}}()},function(e,t,n){n.r(t),n.d(t,"create",function(){return c}),n.d(t,"clone",function(){return l}),n.d(t,"fromValues",function(){return u}),n.d(t,"fromRotationTranslationValues",function(){return h}),n.d(t,"fromRotationTranslation",function(){return d}),n.d(t,"fromTranslation",function(){return f}),n.d(t,"fromRotation",function(){return g}),n.d(t,"fromMat4",function(){return y}),n.d(t,"copy",function(){return S}),n.d(t,"identity",function(){return E}),n.d(t,"set",function(){return C}),n.d(t,"getReal",function(){return L}),n.d(t,"getDual",function(){return T}),n.d(t,"setReal",function(){return p}),n.d(t,"setDual",function(){return m}),n.d(t,"getTranslation",function(){return M}),n.d(t,"translate",function(){return v}),n.d(t,"rotateX",function(){return R}),n.d(t,"rotateY",function(){return b}),n.d(t,"rotateZ",function(){return P}),n.d(t,"rotateByQuatAppend",function(){return D}),n.d(t,"rotateByQuatPrepend",function(){return z}),n.d(t,"rotateAroundAxis",function(){return j}),n.d(t,"add",function(){return A}),n.d(t,"multiply",function(){return k}),n.d(t,"mul",function(){return N}),n.d(t,"scale",function(){return W}),n.d(t,"dot",function(){return Y}),n.d(t,"lerp",function(){return Q}),n.d(t,"invert",function(){return ie}),n.d(t,"conjugate",function(){return O}),n.d(t,"length",function(){return V}),n.d(t,"len",function(){return Z}),n.d(t,"squaredLength",function(){return $}),n.d(t,"sqrLen",function(){return ee}),n.d(t,"normalize",function(){return se}),n.d(t,"str",function(){return ce}),n.d(t,"exactEquals",function(){return me}),n.d(t,"equals",function(){return pe});var i=n(2),o=n(7),a=n(6);function c(){var B=new i.ARRAY_TYPE(8);return i.ARRAY_TYPE!=Float32Array&&(B[0]=0,B[1]=0,B[2]=0,B[4]=0,B[5]=0,B[6]=0,B[7]=0),B[3]=1,B}function l(B){var F=new i.ARRAY_TYPE(8);return F[0]=B[0],F[1]=B[1],F[2]=B[2],F[3]=B[3],F[4]=B[4],F[5]=B[5],F[6]=B[6],F[7]=B[7],F}function u(B,F,J,oe,K,te,w,I){var U=new i.ARRAY_TYPE(8);return U[0]=B,U[1]=F,U[2]=J,U[3]=oe,U[4]=K,U[5]=te,U[6]=w,U[7]=I,U}function h(B,F,J,oe,K,te,w){var I=new i.ARRAY_TYPE(8);I[0]=B,I[1]=F,I[2]=J,I[3]=oe;var U=K*.5,G=te*.5,_=w*.5;return I[4]=U*oe+G*J-_*F,I[5]=G*oe+_*B-U*J,I[6]=_*oe+U*F-G*B,I[7]=-U*B-G*F-_*J,I}function d(B,F,J){var oe=J[0]*.5,K=J[1]*.5,te=J[2]*.5,w=F[0],I=F[1],U=F[2],G=F[3];return B[0]=w,B[1]=I,B[2]=U,B[3]=G,B[4]=oe*G+K*U-te*I,B[5]=K*G+te*w-oe*U,B[6]=te*G+oe*I-K*w,B[7]=-oe*w-K*I-te*U,B}function f(B,F){return B[0]=0,B[1]=0,B[2]=0,B[3]=1,B[4]=F[0]*.5,B[5]=F[1]*.5,B[6]=F[2]*.5,B[7]=0,B}function g(B,F){return B[0]=F[0],B[1]=F[1],B[2]=F[2],B[3]=F[3],B[4]=0,B[5]=0,B[6]=0,B[7]=0,B}function y(B,F){var J=o.create();a.getRotation(J,F);var oe=new i.ARRAY_TYPE(3);return a.getTranslation(oe,F),d(B,J,oe),B}function S(B,F){return B[0]=F[0],B[1]=F[1],B[2]=F[2],B[3]=F[3],B[4]=F[4],B[5]=F[5],B[6]=F[6],B[7]=F[7],B}function E(B){return B[0]=0,B[1]=0,B[2]=0,B[3]=1,B[4]=0,B[5]=0,B[6]=0,B[7]=0,B}function C(B,F,J,oe,K,te,w,I,U){return B[0]=F,B[1]=J,B[2]=oe,B[3]=K,B[4]=te,B[5]=w,B[6]=I,B[7]=U,B}var L=o.copy;function T(B,F){return B[0]=F[4],B[1]=F[5],B[2]=F[6],B[3]=F[7],B}var p=o.copy;function m(B,F){return B[4]=F[0],B[5]=F[1],B[6]=F[2],B[7]=F[3],B}function M(B,F){var J=F[4],oe=F[5],K=F[6],te=F[7],w=-F[0],I=-F[1],U=-F[2],G=F[3];return B[0]=(J*G+te*w+oe*U-K*I)*2,B[1]=(oe*G+te*I+K*w-J*U)*2,B[2]=(K*G+te*U+J*I-oe*w)*2,B}function v(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3],I=J[0]*.5,U=J[1]*.5,G=J[2]*.5,_=F[4],re=F[5],ne=F[6],X=F[7];return B[0]=oe,B[1]=K,B[2]=te,B[3]=w,B[4]=w*I+K*G-te*U+_,B[5]=w*U+te*I-oe*G+re,B[6]=w*G+oe*U-K*I+ne,B[7]=-oe*I-K*U-te*G+X,B}function R(B,F,J){var oe=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],U=F[5],G=F[6],_=F[7],re=I*w+_*oe+U*te-G*K,ne=U*w+_*K+G*oe-I*te,X=G*w+_*te+I*K-U*oe,ae=_*w-I*oe-U*K-G*te;return o.rotateX(B,F,J),oe=B[0],K=B[1],te=B[2],w=B[3],B[4]=re*w+ae*oe+ne*te-X*K,B[5]=ne*w+ae*K+X*oe-re*te,B[6]=X*w+ae*te+re*K-ne*oe,B[7]=ae*w-re*oe-ne*K-X*te,B}function b(B,F,J){var oe=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],U=F[5],G=F[6],_=F[7],re=I*w+_*oe+U*te-G*K,ne=U*w+_*K+G*oe-I*te,X=G*w+_*te+I*K-U*oe,ae=_*w-I*oe-U*K-G*te;return o.rotateY(B,F,J),oe=B[0],K=B[1],te=B[2],w=B[3],B[4]=re*w+ae*oe+ne*te-X*K,B[5]=ne*w+ae*K+X*oe-re*te,B[6]=X*w+ae*te+re*K-ne*oe,B[7]=ae*w-re*oe-ne*K-X*te,B}function P(B,F,J){var oe=-F[0],K=-F[1],te=-F[2],w=F[3],I=F[4],U=F[5],G=F[6],_=F[7],re=I*w+_*oe+U*te-G*K,ne=U*w+_*K+G*oe-I*te,X=G*w+_*te+I*K-U*oe,ae=_*w-I*oe-U*K-G*te;return o.rotateZ(B,F,J),oe=B[0],K=B[1],te=B[2],w=B[3],B[4]=re*w+ae*oe+ne*te-X*K,B[5]=ne*w+ae*K+X*oe-re*te,B[6]=X*w+ae*te+re*K-ne*oe,B[7]=ae*w-re*oe-ne*K-X*te,B}function D(B,F,J){var oe=J[0],K=J[1],te=J[2],w=J[3],I=F[0],U=F[1],G=F[2],_=F[3];return B[0]=I*w+_*oe+U*te-G*K,B[1]=U*w+_*K+G*oe-I*te,B[2]=G*w+_*te+I*K-U*oe,B[3]=_*w-I*oe-U*K-G*te,I=F[4],U=F[5],G=F[6],_=F[7],B[4]=I*w+_*oe+U*te-G*K,B[5]=U*w+_*K+G*oe-I*te,B[6]=G*w+_*te+I*K-U*oe,B[7]=_*w-I*oe-U*K-G*te,B}function z(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3],I=J[0],U=J[1],G=J[2],_=J[3];return B[0]=oe*_+w*I+K*G-te*U,B[1]=K*_+w*U+te*I-oe*G,B[2]=te*_+w*G+oe*U-K*I,B[3]=w*_-oe*I-K*U-te*G,I=J[4],U=J[5],G=J[6],_=J[7],B[4]=oe*_+w*I+K*G-te*U,B[5]=K*_+w*U+te*I-oe*G,B[6]=te*_+w*G+oe*U-K*I,B[7]=w*_-oe*I-K*U-te*G,B}function j(B,F,J,oe){if(Math.abs(oe)<i.EPSILON)return S(B,F);var K=Math.hypot(J[0],J[1],J[2]);oe=oe*.5;var te=Math.sin(oe),w=te*J[0]/K,I=te*J[1]/K,U=te*J[2]/K,G=Math.cos(oe),_=F[0],re=F[1],ne=F[2],X=F[3];B[0]=_*G+X*w+re*U-ne*I,B[1]=re*G+X*I+ne*w-_*U,B[2]=ne*G+X*U+_*I-re*w,B[3]=X*G-_*w-re*I-ne*U;var ae=F[4],ue=F[5],he=F[6],ge=F[7];return B[4]=ae*G+ge*w+ue*U-he*I,B[5]=ue*G+ge*I+he*w-ae*U,B[6]=he*G+ge*U+ae*I-ue*w,B[7]=ge*G-ae*w-ue*I-he*U,B}function A(B,F,J){return B[0]=F[0]+J[0],B[1]=F[1]+J[1],B[2]=F[2]+J[2],B[3]=F[3]+J[3],B[4]=F[4]+J[4],B[5]=F[5]+J[5],B[6]=F[6]+J[6],B[7]=F[7]+J[7],B}function k(B,F,J){var oe=F[0],K=F[1],te=F[2],w=F[3],I=J[4],U=J[5],G=J[6],_=J[7],re=F[4],ne=F[5],X=F[6],ae=F[7],ue=J[0],he=J[1],ge=J[2],Me=J[3];return B[0]=oe*Me+w*ue+K*ge-te*he,B[1]=K*Me+w*he+te*ue-oe*ge,B[2]=te*Me+w*ge+oe*he-K*ue,B[3]=w*Me-oe*ue-K*he-te*ge,B[4]=oe*_+w*I+K*G-te*U+re*Me+ae*ue+ne*ge-X*he,B[5]=K*_+w*U+te*I-oe*G+ne*Me+ae*he+X*ue-re*ge,B[6]=te*_+w*G+oe*U-K*I+X*Me+ae*ge+re*he-ne*ue,B[7]=w*_-oe*I-K*U-te*G+ae*Me-re*ue-ne*he-X*ge,B}var N=k;function W(B,F,J){return B[0]=F[0]*J,B[1]=F[1]*J,B[2]=F[2]*J,B[3]=F[3]*J,B[4]=F[4]*J,B[5]=F[5]*J,B[6]=F[6]*J,B[7]=F[7]*J,B}var Y=o.dot;function Q(B,F,J,oe){var K=1-oe;return Y(F,J)<0&&(oe=-oe),B[0]=F[0]*K+J[0]*oe,B[1]=F[1]*K+J[1]*oe,B[2]=F[2]*K+J[2]*oe,B[3]=F[3]*K+J[3]*oe,B[4]=F[4]*K+J[4]*oe,B[5]=F[5]*K+J[5]*oe,B[6]=F[6]*K+J[6]*oe,B[7]=F[7]*K+J[7]*oe,B}function ie(B,F){var J=$(F);return B[0]=-F[0]/J,B[1]=-F[1]/J,B[2]=-F[2]/J,B[3]=F[3]/J,B[4]=-F[4]/J,B[5]=-F[5]/J,B[6]=-F[6]/J,B[7]=F[7]/J,B}function O(B,F){return B[0]=-F[0],B[1]=-F[1],B[2]=-F[2],B[3]=F[3],B[4]=-F[4],B[5]=-F[5],B[6]=-F[6],B[7]=F[7],B}var V=o.length,Z=V,$=o.squaredLength,ee=$;function se(B,F){var J=$(F);if(J>0){J=Math.sqrt(J);var oe=F[0]/J,K=F[1]/J,te=F[2]/J,w=F[3]/J,I=F[4],U=F[5],G=F[6],_=F[7],re=oe*I+K*U+te*G+w*_;B[0]=oe,B[1]=K,B[2]=te,B[3]=w,B[4]=(I-oe*re)/J,B[5]=(U-K*re)/J,B[6]=(G-te*re)/J,B[7]=(_-w*re)/J}return B}function ce(B){return"quat2("+B[0]+", "+B[1]+", "+B[2]+", "+B[3]+", "+B[4]+", "+B[5]+", "+B[6]+", "+B[7]+")"}function me(B,F){return B[0]===F[0]&&B[1]===F[1]&&B[2]===F[2]&&B[3]===F[3]&&B[4]===F[4]&&B[5]===F[5]&&B[6]===F[6]&&B[7]===F[7]}function pe(B,F){var J=B[0],oe=B[1],K=B[2],te=B[3],w=B[4],I=B[5],U=B[6],G=B[7],_=F[0],re=F[1],ne=F[2],X=F[3],ae=F[4],ue=F[5],he=F[6],ge=F[7];return Math.abs(J-_)<=i.EPSILON*Math.max(1,Math.abs(J),Math.abs(_))&&Math.abs(oe-re)<=i.EPSILON*Math.max(1,Math.abs(oe),Math.abs(re))&&Math.abs(K-ne)<=i.EPSILON*Math.max(1,Math.abs(K),Math.abs(ne))&&Math.abs(te-X)<=i.EPSILON*Math.max(1,Math.abs(te),Math.abs(X))&&Math.abs(w-ae)<=i.EPSILON*Math.max(1,Math.abs(w),Math.abs(ae))&&Math.abs(I-ue)<=i.EPSILON*Math.max(1,Math.abs(I),Math.abs(ue))&&Math.abs(U-he)<=i.EPSILON*Math.max(1,Math.abs(U),Math.abs(he))&&Math.abs(G-ge)<=i.EPSILON*Math.max(1,Math.abs(G),Math.abs(ge))}},function(e,t,n){n.r(t),n.d(t,"create",function(){return o}),n.d(t,"clone",function(){return a}),n.d(t,"fromValues",function(){return c}),n.d(t,"copy",function(){return l}),n.d(t,"set",function(){return u}),n.d(t,"add",function(){return h}),n.d(t,"subtract",function(){return d}),n.d(t,"multiply",function(){return f}),n.d(t,"divide",function(){return g}),n.d(t,"ceil",function(){return y}),n.d(t,"floor",function(){return S}),n.d(t,"min",function(){return E}),n.d(t,"max",function(){return C}),n.d(t,"round",function(){return L}),n.d(t,"scale",function(){return T}),n.d(t,"scaleAndAdd",function(){return p}),n.d(t,"distance",function(){return m}),n.d(t,"squaredDistance",function(){return M}),n.d(t,"length",function(){return v}),n.d(t,"squaredLength",function(){return R}),n.d(t,"negate",function(){return b}),n.d(t,"inverse",function(){return P}),n.d(t,"normalize",function(){return D}),n.d(t,"dot",function(){return z}),n.d(t,"cross",function(){return j}),n.d(t,"lerp",function(){return A}),n.d(t,"random",function(){return k}),n.d(t,"transformMat2",function(){return N}),n.d(t,"transformMat2d",function(){return W}),n.d(t,"transformMat3",function(){return Y}),n.d(t,"transformMat4",function(){return Q}),n.d(t,"rotate",function(){return ie}),n.d(t,"angle",function(){return O}),n.d(t,"zero",function(){return V}),n.d(t,"str",function(){return Z}),n.d(t,"exactEquals",function(){return $}),n.d(t,"equals",function(){return ee}),n.d(t,"len",function(){return se}),n.d(t,"sub",function(){return ce}),n.d(t,"mul",function(){return me}),n.d(t,"div",function(){return pe}),n.d(t,"dist",function(){return B}),n.d(t,"sqrDist",function(){return F}),n.d(t,"sqrLen",function(){return J}),n.d(t,"forEach",function(){return oe});var i=n(2);function o(){var K=new i.ARRAY_TYPE(2);return i.ARRAY_TYPE!=Float32Array&&(K[0]=0,K[1]=0),K}function a(K){var te=new i.ARRAY_TYPE(2);return te[0]=K[0],te[1]=K[1],te}function c(K,te){var w=new i.ARRAY_TYPE(2);return w[0]=K,w[1]=te,w}function l(K,te){return K[0]=te[0],K[1]=te[1],K}function u(K,te,w){return K[0]=te,K[1]=w,K}function h(K,te,w){return K[0]=te[0]+w[0],K[1]=te[1]+w[1],K}function d(K,te,w){return K[0]=te[0]-w[0],K[1]=te[1]-w[1],K}function f(K,te,w){return K[0]=te[0]*w[0],K[1]=te[1]*w[1],K}function g(K,te,w){return K[0]=te[0]/w[0],K[1]=te[1]/w[1],K}function y(K,te){return K[0]=Math.ceil(te[0]),K[1]=Math.ceil(te[1]),K}function S(K,te){return K[0]=Math.floor(te[0]),K[1]=Math.floor(te[1]),K}function E(K,te,w){return K[0]=Math.min(te[0],w[0]),K[1]=Math.min(te[1],w[1]),K}function C(K,te,w){return K[0]=Math.max(te[0],w[0]),K[1]=Math.max(te[1],w[1]),K}function L(K,te){return K[0]=Math.round(te[0]),K[1]=Math.round(te[1]),K}function T(K,te,w){return K[0]=te[0]*w,K[1]=te[1]*w,K}function p(K,te,w,I){return K[0]=te[0]+w[0]*I,K[1]=te[1]+w[1]*I,K}function m(K,te){var w=te[0]-K[0],I=te[1]-K[1];return Math.hypot(w,I)}function M(K,te){var w=te[0]-K[0],I=te[1]-K[1];return w*w+I*I}function v(K){var te=K[0],w=K[1];return Math.hypot(te,w)}function R(K){var te=K[0],w=K[1];return te*te+w*w}function b(K,te){return K[0]=-te[0],K[1]=-te[1],K}function P(K,te){return K[0]=1/te[0],K[1]=1/te[1],K}function D(K,te){var w=te[0],I=te[1],U=w*w+I*I;return U>0&&(U=1/Math.sqrt(U)),K[0]=te[0]*U,K[1]=te[1]*U,K}function z(K,te){return K[0]*te[0]+K[1]*te[1]}function j(K,te,w){var I=te[0]*w[1]-te[1]*w[0];return K[0]=K[1]=0,K[2]=I,K}function A(K,te,w,I){var U=te[0],G=te[1];return K[0]=U+I*(w[0]-U),K[1]=G+I*(w[1]-G),K}function k(K,te){te=te||1;var w=i.RANDOM()*2*Math.PI;return K[0]=Math.cos(w)*te,K[1]=Math.sin(w)*te,K}function N(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[2]*U,K[1]=w[1]*I+w[3]*U,K}function W(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[2]*U+w[4],K[1]=w[1]*I+w[3]*U+w[5],K}function Y(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[3]*U+w[6],K[1]=w[1]*I+w[4]*U+w[7],K}function Q(K,te,w){var I=te[0],U=te[1];return K[0]=w[0]*I+w[4]*U+w[12],K[1]=w[1]*I+w[5]*U+w[13],K}function ie(K,te,w,I){var U=te[0]-w[0],G=te[1]-w[1],_=Math.sin(I),re=Math.cos(I);return K[0]=U*re-G*_+w[0],K[1]=U*_+G*re+w[1],K}function O(K,te){var w=K[0],I=K[1],U=te[0],G=te[1],_=Math.sqrt(w*w+I*I)*Math.sqrt(U*U+G*G),re=_&&(w*U+I*G)/_;return Math.acos(Math.min(Math.max(re,-1),1))}function V(K){return K[0]=0,K[1]=0,K}function Z(K){return"vec2("+K[0]+", "+K[1]+")"}function $(K,te){return K[0]===te[0]&&K[1]===te[1]}function ee(K,te){var w=K[0],I=K[1],U=te[0],G=te[1];return Math.abs(w-U)<=i.EPSILON*Math.max(1,Math.abs(w),Math.abs(U))&&Math.abs(I-G)<=i.EPSILON*Math.max(1,Math.abs(I),Math.abs(G))}var se=v,ce=d,me=f,pe=g,B=m,F=M,J=R,oe=function(){var K=o();return function(te,w,I,U,G,_){var re,ne;for(w||(w=2),I||(I=0),U?ne=Math.min(U*w+I,te.length):ne=te.length,re=I;re<ne;re+=w)K[0]=te[re],K[1]=te[re+1],G(K,K,_),te[re]=K[0],te[re+1]=K[1];return te}}()},function(e,t,n){n.r(t),n.d(t,"default",function(){return O});var i=n(13),o=n.n(i),a=n(19),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(25),g=n(1),y=n(36),S=n(43),E=n(41),C=n(56),L=n(73),T=n(45),p=n(78),m=n(37),M=n(82);n(1).glMatrix.setMatrixArrayType(Array);function v(V,Z){var $;if(typeof Symbol>"u"||V[Symbol.iterator]==null){if(Array.isArray(V)||($=R(V))||Z){$&&(V=$);var ee=0,se=function(){};return{s:se,n:function(){return ee>=V.length?{done:!0}:{done:!1,value:V[ee++]}},e:function(F){throw F},f:se}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var ce=!0,me=!1,pe;return{s:function(){$=V[Symbol.iterator]()},n:function(){var F=$.next();return ce=F.done,F},e:function(F){me=!0,pe=F},f:function(){try{!ce&&$.return!=null&&$.return()}finally{if(me)throw pe}}}}function R(V,Z){if(V){if(typeof V=="string")return b(V,Z);var $=Object.prototype.toString.call(V).slice(8,-1);if($==="Object"&&V.constructor&&($=V.constructor.name),$==="Map"||$==="Set")return Array.from(V);if($==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test($))return b(V,Z)}}function b(V,Z){(Z==null||Z>V.length)&&(Z=V.length);for(var $=0,ee=new Array(Z);$<Z;$++)ee[$]=V[$];return ee}var P={autoUpdate:!1,preserveDrawingBuffer:!1,bufferSize:1500},D=`attribute vec3 a_vertexPosition;
3
+ attribute vec3 a_vertexTextureCoord;
4
+ varying vec3 vTextureCoord;
5
+ uniform mat3 viewMatrix;
6
+ uniform mat3 projectionMatrix;
7
+
8
+ void main() {
9
+ gl_PointSize = 1.0;
10
+ vec3 pos = projectionMatrix * viewMatrix * vec3(a_vertexPosition.xy, 1.0);
11
+ gl_Position = vec4(pos.xy, 1.0, 1.0);
12
+ vTextureCoord = a_vertexTextureCoord;
13
+ }
14
+ `,z=`precision mediump float;
15
+ varying vec3 vTextureCoord;
16
+ uniform sampler2D u_texSampler;
17
+ void main() {
18
+ gl_FragColor = texture2D(u_texSampler, vTextureCoord.xy);
19
+ }
20
+ `,j=Symbol("glRenderer"),A=Symbol("canvasRenderer"),k=Symbol("options"),N=Symbol("globalTransform"),W=Symbol("applyGlobalTransform"),Y=Symbol("canvas");function Q(V){var Z=V.gl,$=V.fbo;$&&Z.bindFramebuffer(Z.FRAMEBUFFER,$),V._draw(),$&&Z.bindFramebuffer(Z.FRAMEBUFFER,null)}function ie(V,Z,$,ee){var se=V.createTexture(Z.canvas),ce=[[[0,0],[$,0],[$,ee],[0,ee],[0,0]]];ce.closed=!0;var me=new L.default({contours:ce});me.setTexture(se),V.setMeshData([me.meshData]),Q(V),se.delete(),Z.clearRect(0,0,$,ee),delete Z._filter}var O=function(){function V(Z){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};u()(this,V);var ee=$.contextType;if(ee||(typeof WebGL2RenderingContext=="function"?ee="webgl2":typeof WebGLRenderingContext=="function"?ee="webgl":ee="2d"),!Z.getContext){var se=Z;Z={getContext:function(){return se},width:$.width,height:$.height},se.canvas=Z,ee="2d"}if(this[Y]=Z,ee!=="webgl"&&ee!=="webgl2"&&ee!=="2d")throw new Error("Unknown context type ".concat(ee));if($.contextType=ee,this[k]=Object.assign({},P,$),ee==="webgl"||ee==="webgl2"){ee==="webgl2"&&(this[k].webgl2=!0);var ce=new f.default(Z,this[k]);ee==="webgl2"&&!ce.isWebGL2&&($.contextType="webgl"),Object(M.createShaders)(ce),Object(M.applyShader)(ce),Object(M.createCloudShaders)(ce);var me=ce.gl;me.clearColor(0,0,0,0),me.blendFuncSeparate(me.SRC_ALPHA,me.ONE_MINUS_SRC_ALPHA,me.ONE,me.ONE_MINUS_SRC_ALPHA),this[j]=ce}else this[A]=new y.default(Z,this[k]);this[N]=[1,0,0,0,1,0,0,0,1],this.updateResolution()}return d()(V,[{key:W,value:function(){var $=this[j]||this[A];if(this[j]){var ee=this.canvas,se=ee.width,ce=ee.height;$.uniforms.viewMatrix=this.viewMatrix,$.uniforms.projectionMatrix=this.projectionMatrix,$.uniforms.u_resolution=[se,ce]}}},{key:"updateResolution",value:function(){var $=this.canvas,ee=$.width,se=$.height,ce=[1,0,0,0,1,0,-ee/2,-se/2,1],me=[2/ee,0,0,0,-2/se,0,0,0,1],pe=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),me,ce);this.projectionMatrix=pe,this[j]&&this[j].gl.viewport(0,0,ee,se)}},{key:"createTexture",value:function($,ee){var se=this[j]||this[A];return se.createTexture($,ee)}},{key:"loadTexture",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},se=ee.useImageBitmap,ce=se===void 0?!1:se,me=this[j]||this[A];return me.loadTexture($,{useImageBitmap:ce})}},{key:"createText",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},se=ee.font,ce=se===void 0?"16px arial":se,me=ee.fillColor,pe=me===void 0?null:me,B=ee.strokeColor,F=B===void 0?null:B,J=ee.strokeWidth,oe=J===void 0?1:J;if(this[j]){var K=m.default.createText($,{font:ce,fillColor:pe,strokeColor:F,strokeWidth:oe});return{image:this.createTexture(K.image),rect:K.rect}}return{_img:{font:ce,fillColor:pe,strokeColor:F,strokeWidth:oe,text:$}}}},{key:"createProgram",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ee=$.vertex,se=$.fragment,ce=$.options;if(this[j]){var me=this[j].compileSync(se,ee);return me._attribOpts=ce,me}throw new Error("Context 2D cannot create webgl program.")}},{key:"createPassProgram",value:function(){var $=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ee=$.vertex,se=ee===void 0?D:ee,ce=$.fragment,me=ce===void 0?z:ce,pe=$.options;return this.createProgram({vertex:se,fragment:me,options:pe})}},{key:"useProgram",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this[j]){var se=Object.assign({},$._attribOpts,ee);return this[j].useProgram($,se)}throw new Error("Context 2D cannot use webgl program.")}},{key:"deleteTexture",value:function($){var ee=this[j]||this[A];return ee.deleteTexture($)}},{key:"clear",value:function(){if(this[j]){var $=this[j].gl;$.clear($.COLOR_BUFFER_BIT)}else{var ee;(ee=this[A]).clear.apply(ee,arguments)}}},{key:"drawMeshCloud",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},se=ee.clear,ce=se===void 0?!1:se,me=ee.program,pe=me===void 0?null:me,B=this[j]||this[A],F=pe||$.program;if(this[j]){var J=B.gl;if(ce&&J.clear(J.COLOR_BUFFER_BIT),F)B.program!==F&&this.useProgram(F,{a_color:{type:"UNSIGNED_BYTE",normalize:!0},a_fillCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_strokeCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_frameIndex:{type:"UNSIGNED_BYTE",normalize:!1}});else{var oe=$.mesh.meshData,K=!!oe.uniforms.u_texSampler,te=!!oe.uniforms.u_filterFlag,w=!!oe.uniforms.u_radialGradientVector,I=$.hasCloudColor,U=$.hasCloudFilter,G=!!oe.uniforms.u_clipSampler;Object(M.applyCloudShader)(B,{hasTexture:K,hasFilter:te,hasGradient:w,hasCloudColor:I,hasCloudFilter:U,hasClipPath:G})}this[W](),B.setMeshData([$.meshData]),$.beforeRender&&$.beforeRender(J,$),Q(B),$.afterRender&&$.afterRender(J,$)}else B.setTransform(this.globalTransformMatrix),B.drawMeshCloud($,{clear:ce,hook:!1})}},{key:"drawMeshes",value:function($){var ee=this,se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ce=se.clear,me=ce===void 0?!1:ce,pe=se.program,B=pe===void 0?null:pe,F=this[j]||this[A];this[j]?function(){var J=F.fbo,oe=Object(S.default)(ee,$,B==null),K=F.gl;me&&K.clear(K.COLOR_BUFFER_BIT);var te=!Object(p.isUnitTransform)(ee.globalTransformMatrix);ee._drawCalls=0;var w=v(oe),I;try{var U=function(){var _=I.value;ee._drawCalls++;var re=B||_.program;if(_ instanceof T.default)ee.drawMeshCloud(_,{clear:me,program:re});else{var ne=ee.canvas,X=ne.width,ae=ne.height;if(_.beforeRender&&_.beforeRender(K,_),_.pass.length&&((!ee.fbo||ee.fbo.width!==X||ee.fbo.height!==ae)&&(ee.fbo={width:X,height:ae,target:F.createFBO(),buffer:F.createFBO(),swap:function(){var Oe=[this.buffer,this.target];this.target=Oe[0],this.buffer=Oe[1]}}),F.bindFBO(ee.fbo.target)),!re&&_.filterCanvas){Object(M.applyShader)(F,{hasTexture:!0});var ue=ee.filterContext;if(!ue){var he=m.default.createCanvas(X,ae);ue=he.getContext("2d"),ee.filterContext=ue}var ge=$[_.packIndex],Me=ge.filter,we=$[_.packIndex+1],be=$[_.packIndex-1];(!be||!be.filterCanvas||be.filter!==Me)&&(!we||!we.filterCanvas||we.filter!==Me)?(te?(ue.save(),Object(E.drawMesh2D)(ge,ue,!1),ue.restore(),Object(E.applyFilter)(ue,Me)):Object(E.drawMesh2D)(ge,ue,!0),ee[W](),ie(F,ue,X,ae)):(te&&ue.save(),Object(E.drawMesh2D)(ge,ue,!1),te&&ue.restore(),(!we||!we.filterCanvas||ge.filter!==we.filter)&&(Object(E.applyFilter)(ue,Me),ee[W](),ie(F,ue,X,ae)))}else{if(re)F.program!==re&&ee.useProgram(re,{a_color:{type:"UNSIGNED_BYTE",normalize:!0}});else{var Ie=!!_.uniforms.u_texSampler,Ce=!!_.uniforms.u_filterFlag,Ae=!!_.uniforms.u_radialGradientVector,Ee=!!_.uniforms.u_clipSampler;Object(M.applyShader)(F,{hasTexture:Ie,hasFilter:Ce,hasGradient:Ae,hasClipPath:Ee})}_.filterCanvas&&console.warn("User program ignored some filter effects."),ee[W](),F.setMeshData([_]),Q(F)}if(_.pass.length){var ke=_.pass.length;_.pass.forEach(function(Ne,Oe){Ne.blend=_.enableBlend,Ne.setTexture(F.fbo.texture),Oe===ke-1?F.bindFBO(J):(ee.fbo.swap(),F.bindFBO(ee.fbo.target)),Ne.program?F.useProgram(Ne.program):(ee.defaultPassProgram=ee.defaultPassProgram||ee.createPassProgram(),F.useProgram(ee.defaultPassProgram)),F.setMeshData([Ne.meshData]),K.clear(K.COLOR_BUFFER_BIT),Q(F)})}_.afterRender&&_.afterRender(K,_)}};for(w.s();!(I=w.n()).done;)U()}catch(G){w.e(G)}finally{w.f()}}():(F.setTransform(this.globalTransformMatrix),F.drawMeshes($,{clear:me}))}},{key:"drawImage",value:function($){for(var ee=arguments.length,se=new Array(ee>1?ee-1:0),ce=1;ce<ee;ce++)se[ce-1]=arguments[ce];var me=se.length;if(me<2)throw new TypeError("Failed to execute 'drawImage' on 'Renderer': 3 arguments required, but only ".concat(se.length+1," present."));if(me!==2&&me!==4&&me!==8)throw new TypeError("Failed to execute 'drawImage' on 'Renderer': Valid arities are: [3, 5, 9], but ".concat(se.length+1," arguments provided."));var pe=null,B=null;me===2?pe=[se[0],se[1],$.width,$.height]:me===4?pe=se:me===8&&(B=se.slice(0,4),pe=se.slice(4));var F=this.createTexture($),J=this.canvas,oe=J.width,K=J.height,te=new C.default;te.rect(pe[0],pe[1],oe,K);var w=new L.default(te,{width:oe,height:K});w.setTexture(F,{rect:pe,srcRect:B}),this.drawMeshes([w]),this.deleteTexture(F)}},{key:"setGlobalTransform",value:function(){return this[N]=[arguments.length<=0?void 0:arguments[0],arguments.length<=1?void 0:arguments[1],0,arguments.length<=2?void 0:arguments[2],arguments.length<=3?void 0:arguments[3],0,arguments.length<=4?void 0:arguments[4],arguments.length<=5?void 0:arguments[5],1],this}},{key:"globalTransform",value:function(){for(var $=this[N],ee=arguments.length,se=new Array(ee),ce=0;ce<ee;ce++)se[ce]=arguments[ce];return this[N]=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),$,se),this}},{key:"globalTranslate",value:function($,ee){var se=g.mat3.create();return se=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),se,[$,ee]),this.globalTransform.apply(this,c()(se))}},{key:"globalRotate",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0],se=o()(ee,2),ce=se[0],me=se[1],pe=g.mat3.create();return pe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),pe,[ce,me]),pe=g.mat3.rotate(Array.of(0,0,0,0,0,0,0,0,0),pe,$),pe=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),pe,[-ce,-me]),this.globalTransform.apply(this,c()(pe))}},{key:"globalScale",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$,se=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ce=o()(se,2),me=ce[0],pe=ce[1],B=g.mat3.create();return B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[me,pe]),B=g.mat3.scale(Array.of(0,0,0,0,0,0,0,0,0),B,[$,ee]),B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[-me,-pe]),this.globalTransform.apply(this,c()(B))}},{key:"globalSkew",value:function($){var ee=arguments.length>1&&arguments[1]!==void 0?arguments[1]:$,se=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ce=o()(se,2),me=ce[0],pe=ce[1],B=g.mat3.create();return B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[me,pe]),B=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),B,g.mat3.fromValues(1,Math.tan(ee),Math.tan($),1,0,0)),B=g.mat3.translate(Array.of(0,0,0,0,0,0,0,0,0),B,[-me,-pe]),this.globalTransform.apply(this,c()(B))}},{key:"transformPoint",value:function($,ee,se){var ce=this.globalTransformMatrix;se&&(ce=g.mat3.multiply(Array.of(0,0,0,0,0,0,0,0,0),ce,se));var me=$*ce[0]+ee*ce[2]+ce[4],pe=$*ce[1]+ee*ce[3]+ce[5];return[me,pe]}},{key:"canvas",get:function(){return this[Y]}},{key:"canvasRenderer",get:function(){return this[A]}},{key:"glRenderer",get:function(){return this[j]}},{key:"isWebGL2",get:function(){return this[j]&&this[j].isWebGL2}},{key:"options",get:function(){return this[k]}},{key:"globalTransformMatrix",get:function(){var $=this[N];return[$[0],$[1],$[3],$[4],$[6],$[7]]}},{key:"viewMatrix",get:function(){return this[N]}}]),V}()},function(e,t,n){var i=n(14),o=n(15),a=n(16),c=n(18);function l(u,h){return i(u)||o(u,h)||a(u,h)||c()}e.exports=l},function(e,t){function n(i){if(Array.isArray(i))return i}e.exports=n},function(e,t){function n(i,o){if(!(typeof Symbol>"u"||!(Symbol.iterator in Object(i)))){var a=[],c=!0,l=!1,u=void 0;try{for(var h=i[Symbol.iterator](),d;!(c=(d=h.next()).done)&&(a.push(d.value),!(o&&a.length===o));c=!0);}catch(f){l=!0,u=f}finally{try{!c&&h.return!=null&&h.return()}finally{if(l)throw u}}return a}}e.exports=n},function(e,t,n){var i=n(17);function o(a,c){if(a){if(typeof a=="string")return i(a,c);var l=Object.prototype.toString.call(a).slice(8,-1);if(l==="Object"&&a.constructor&&(l=a.constructor.name),l==="Map"||l==="Set")return Array.from(a);if(l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))return i(a,c)}}e.exports=o},function(e,t){function n(i,o){(o==null||o>i.length)&&(o=i.length);for(var a=0,c=new Array(o);a<o;a++)c[a]=i[a];return c}e.exports=n},function(e,t){function n(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
21
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}e.exports=n},function(e,t,n){var i=n(20),o=n(21),a=n(16),c=n(22);function l(u){return i(u)||o(u)||a(u)||c()}e.exports=l},function(e,t,n){var i=n(17);function o(a){if(Array.isArray(a))return i(a)}e.exports=o},function(e,t){function n(i){if(typeof Symbol<"u"&&Symbol.iterator in Object(i))return Array.from(i)}e.exports=n},function(e,t){function n(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
22
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}e.exports=n},function(e,t){function n(i,o){if(!(i instanceof o))throw new TypeError("Cannot call a class as a function")}e.exports=n},function(e,t){function n(o,a){for(var c=0;c<a.length;c++){var l=a[c];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(o,l.key,l)}}function i(o,a,c){return a&&n(o.prototype,a),c&&n(o,c),o}e.exports=i},function(e,t,n){n.r(t);var i=n(26);n(1).glMatrix.setMatrixArrayType(Array),t.default=i.default},function(e,t,n){n.r(t),n.d(t,"default",function(){return D});var i=n(27),o=n.n(i),a=n(29),c=n.n(a),l=n(13),u=n.n(l),h=n(19),d=n.n(h),f=n(23),g=n.n(f),y=n(24),S=n.n(y),E=n(30),C=n.n(E),L=n(31),T=n(33),p=n(34),m=n(35);n(1).glMatrix.setMatrixArrayType(Array);var M={};function v(z){for(var j=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3,A=[],k=z.length,N=0;N<k;N++)N%j<2&&A.push(.5*(z[N]+1));return A}function R(z,j){var A=j._buffers;Object.values(A).forEach(function(k){z.deleteBuffer(k)}),j._buffers={}}function b(z,j,A){return z.activeTexture(z.TEXTURE0+A),Array.isArray(j._img)?z.bindTexture(z.TEXTURE_CUBE_MAP,j):z.bindTexture(z.TEXTURE_2D,j),j}var P={int:"1i",ivec2:"2i",ivec3:"3i",ivec4:"4i",float:"1f",vec2:"2f",vec3:"3f",vec4:"4f",mat2:"Matrix2fv",mat3:"Matrix3fv",mat4:"Matrix4fv",sampler1D:"sampler1D",sampler2D:"sampler2D",sampler3D:"sampler3D",samplerCube:"samplerCube",sampler1DShadow:"sampler1DShadow",sampler2DShadow:"sampler2DShadow",sampler2DRect:"sampler2DRect",sampler2DRectShadow:"sampler2DRectShadow"},D=function(){S()(z,null,[{key:"addLibs",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(M,A)}},{key:"FLOAT",value:function(A,k){return Object(L.pointsToBuffer)(A,Float32Array,k)}},{key:"UNSIGNED_BYTE",value:function(A,k){return Object(L.pointsToBuffer)(A,Uint8Array,k)}},{key:"UNSIGNED_SHORT",value:function(A,k){return Object(L.pointsToBuffer)(A,Uint16Array,k)}},{key:"BYTE",value:function(A,k){return Object(L.pointsToBuffer)(A,Int8Array,k)}},{key:"SHORT",value:function(A,k){return Object(L.pointsToBuffer)(A,Int16Array,k)}}]);function z(j){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};g()(this,z),this.options=Object.assign({},z.defaultOptions,A),this.canvas=j;var k;this.options.webgl2&&(k=j.getContext("webgl2",this.options)),k==null&&(k=Object(L.setupWebGL)(j,this.options),this.aia_ext=k.getExtension("ANGLE_instanced_arrays")),this.gl=k,k.viewport(0,0,j.width,j.height),k.clearColor(0,0,0,0),k.blendFuncSeparate(k.SRC_ALPHA,k.ONE_MINUS_SRC_ALPHA,k.ONE,k.ONE_MINUS_SRC_ALPHA),this.programs=[],this._events={}}return S()(z,[{key:"_declareUniform",value:function(A,k){var N=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"1f",W=this.gl,Y=W.getUniformLocation(A,k),Q,ie=this;if(/^sampler/.test(N)){var O=A._samplerMap,V=A._bindTextures;Object.defineProperty(A.uniforms,k,{get:function(){return Q},set:function(ce){Q=ce;var me=O[k]!=null?O[k]:V.length;V[me]=ce,b(W,ce,me),O[k]||(O[k]=me,W.uniform1i(Y,me)),ie.options.autoUpdate&&ie.update()},configurable:!1,enumerable:!0})}else{var Z=N.indexOf("Matrix")===0,$=!Z&&/v$/.test(N),ee=W["uniform".concat(N)].bind(W);Object.defineProperty(A.uniforms,k,{get:function(){return Q},set:function(ce){Q=ce,typeof ce=="number"&&(ce=[ce]),Z?ee(Y,!1,ce):$?ee(Y,ce):ee.apply(void 0,[Y].concat(d()(ce))),ie.options.autoUpdate&&ie.update()},configurable:!1,enumerable:!0})}}},{key:"_draw",value:function(){var A=this,k=this.program;k.meshData.forEach(function(N,W){var Y=N.positions,Q=N.cells,ie=N.instanceCount,O=N.cellsCount,V=N.attributes,Z=N.uniforms,$=N.textureCoord,ee=N.enableBlend,se=A.gl,ce=N.mode!=null?N.mode:se.TRIANGLES;typeof ce=="string"&&(ce=se[ce]),ee?se.enable(se.BLEND):se.disable(se.BLEND),se.bindBuffer(se.ARRAY_BUFFER,k._buffers.verticesBuffer),se.bufferData(se.ARRAY_BUFFER,Y,se.STATIC_DRAW),Q&&(se.bindBuffer(se.ELEMENT_ARRAY_BUFFER,k._buffers.cellsBuffer),se.bufferData(se.ELEMENT_ARRAY_BUFFER,Q,se.STATIC_DRAW));var me=[];V&&Object.values(V).forEach(function(J){var oe=J.name,K=J.data,te=J.divisor;if(se.bindBuffer(se.ARRAY_BUFFER,k._buffers[oe]),se.bufferData(se.ARRAY_BUFFER,K,se.STATIC_DRAW),te!=null){var w=se.getAttribLocation(k,oe);w>=0&&(se.enableVertexAttribArray(w),me.push(w),se.vertexAttribDivisor?se.vertexAttribDivisor(w,te):A.aia_ext&&A.aia_ext.vertexAttribDivisorANGLE(w,te))}}),Z&&Object.entries(Z).forEach(function(J){var oe=u()(J,2),K=oe[0],te=oe[1];A.uniforms[K]=te});var pe;if(!Q){var B=k._dimension;pe=Y.length/B}if(k._enableTextures&&k._buffers.texCoordBuffer){var F=$||v(Y,k._dimension);se.bindBuffer(se.ARRAY_BUFFER,k._buffers.texCoordBuffer),se.bufferData(se.ARRAY_BUFFER,z.FLOAT(F),se.STATIC_DRAW)}ie!=null?(Q?se.drawElementsInstanced?se.drawElementsInstanced(ce,O,se.UNSIGNED_SHORT,0,ie):A.aia_ext&&A.aia_ext.drawElementsInstancedANGLE(ce,O,se.UNSIGNED_SHORT,0,ie):se.drawArraysInstanced?se.drawArraysInstanced(ce,0,pe,ie):A.aia_ext.drawArraysInstancedANGLE(ce,0,pe,ie),me.forEach(function(J){se.vertexAttribDivisor?se.vertexAttribDivisor(J,null):A.aia_ext&&A.aia_ext.vertexAttribDivisorANGLE(J,null)})):Q?se.drawElements(ce,O,se.UNSIGNED_SHORT,0):se.drawArrays(ce,0,pe)})}},{key:"deleteProgram",value:function(A){var k=this.gl;this.program===A&&(this.startRender=!1,this._renderFrameID&&(cancelAnimationFrame(this._renderFrameID),delete this._renderFrameID),k.useProgram(null));var N=this.programs.indexOf(A);N>=0&&this.programs.splice(N,1),R(k,A),k.deleteProgram(A)}},{key:"setMeshData",value:function(A){var k=this;Array.isArray(A)||(A=[A]);var N=this.program;N.meshData=A.map(function(W){var Y=W.mode,Q=W.positions,ie=W.instanceCount,O=W.cells,V=W.cellsCount,Z=W.attributes,$=W.uniforms,ee=W.textureCoord,se=W.enableBlend,ce={positions:z.FLOAT(Q),uniforms:$,enableBlend:!!se,textureCoord:z.FLOAT(ee)};if(O&&(ce.cells=z.USHORT(O),ce.cellsCount=V||ce.cells.length),Y!=null&&(ce.mode=Y),ie!=null){if(!k.isWebGL2&&!k.aia_ext)throw new Error("Cannot use instanceCount in this rendering context, use webgl2 context instead.");ce.instanceCount=ie}if(Z){var me={};Object.entries(Z).forEach(function(pe){var B=u()(pe,2),F=B[0],J=B[1];if(!N._attribute[F])N._attribute[F]="ignored";else if(N._attribute[F]!=="ignored"){var oe=N._attribute[F],K=oe.name,te=oe.type,w=J.data||J;if(Array.isArray(w)&&(w=z[te](w)),me[F]={name:K,data:w},J.divisor!=null){if(!k.isWebGL2&&!k.aia_ext)throw new Error("Cannot use divisor in this rendering context, use webgl2 context instead.");me[F].divisor=J.divisor}}}),ce.attributes=me}return ce}),this.options.autoUpdate&&this.update()}},{key:"createProgram",value:function(A,k){var N=this,W=/^\s*uniform\s+sampler/mg.test(A);A==null&&(A=p.default),k==null&&(k=W?m.default:T.default);var Y=this.gl,Q=Object(L.createProgram)(Y,k,A);Q.shaderText={vertexShader:k,fragmentShader:A},Q._buffers={},Q._attribute={},Q.uniforms={},Q._samplerMap={},Q._bindTextures=[];var ie=new RegExp("(?:attribute|in) vec(\\d) ".concat(this.options.vertexPosition),"im"),O=k.match(ie);O&&(Q._dimension=Number(O[1]));var V=new RegExp("(?:attribute|in) vec(\\d) ".concat(this.options.vertexTextureCoord),"im");O=k.match(V),O&&(Q._texCoordSize=Number(O[1]));var Z=/^\s*(?:attribute|in) (\w+?)(\d*) (\w+)/gim;if(O=k.match(Z),O)for(var $=0;$<O.length;$++){var ee=/^\s*(?:attribute|in) (\w+?)(\d*) (\w+)/im,se=O[$].match(ee);if(se&&se[3]!==this.options.vertexPosition&&se[3]!==this.options.vertexTextureCoord){var ce=u()(se,4),me=ce[1],pe=ce[2],B=ce[3];me==="mat"&&(pe=Math.pow(pe,2)),Q._buffers[B]=Y.createBuffer(),Q._attribute[B]={name:B,type:me,size:Number(pe)||1}}}var F=/^\s*uniform\s+(\w+)\s+(\w+)(\[\d+\])?/mg;O=k.match(F)||[],O=O.concat(A.match(F)||[]),O.forEach(function(oe){var K=oe.match(/^\s*uniform\s+(\w+)\s+(\w+)(\[\d+\])?/),te=K.slice(1),w=u()(te,3),I=w[0],U=w[1],G=w[2];I=P[I],G=!!G,I.indexOf("Matrix")!==0&&G&&(I+="v"),N._declareUniform(Q,U,I)}),Q._buffers.verticesBuffer=Y.createBuffer(),Q._buffers.cellsBuffer=Y.createBuffer();var J=Y.getAttribLocation(Q,this.options.vertexTextureCoord);return Q._enableTextures=J>=0,Q._enableTextures&&(Q._buffers.texCoordBuffer=Y.createBuffer()),this.programs.push(Q),Q}},{key:"useProgram",value:function(A){var k=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.startRender=!1,this._renderFrameID&&(cancelAnimationFrame(this._renderFrameID),delete this._renderFrameID);var N=this.gl;N.useProgram(A);var W=A._dimension;N.bindBuffer(N.ARRAY_BUFFER,A._buffers.verticesBuffer);var Y=N.getAttribLocation(A,this.options.vertexPosition);if(N.vertexAttribPointer(Y,W,N.FLOAT,!1,0,0),N.enableVertexAttribArray(Y),A._enableTextures){N.bindBuffer(N.ARRAY_BUFFER,A._buffers.texCoordBuffer);var Q=N.getAttribLocation(A,this.options.vertexTextureCoord);N.vertexAttribPointer(Q,A._texCoordSize||2,N.FLOAT,!1,0,0),N.enableVertexAttribArray(Q)}if(Object.entries(A._attribute).forEach(function(V){var Z=u()(V,2),$=Z[0],ee=Z[1];if(ee!=="ignored"){var se=ee.size,ce=k[$]||{},me=!!ce.normalize,pe=ce.type||"FLOAT",B=ce.key||$;pe==="UBYTE"&&(pe="UNSIGNED_BYTE"),pe==="USHORT"&&(pe="UNSIGNED_SHORT"),ee.type=pe,B&&B!==$&&(A._attribute[B]=ee),N.bindBuffer(N.ARRAY_BUFFER,A._buffers[$]);var F=N.getAttribLocation(A,$);F>=0&&(N.vertexAttribPointer(F,se,N[pe],me,0,0),N.enableVertexAttribArray(F))}}),!A.meshData){var ie=[[-1,-1,0,1].slice(0,W),[1,-1,0,1].slice(0,W),[1,1,0,1].slice(0,W),[-1,1,0,1].slice(0,W)],O=[[0,1,3],[3,1,2]];this.setMeshData({positions:ie,cells:O})}return A}},{key:"compileSync",value:function(A,k){A=A||p.default;var N={};function W(O){O=O.replace(/^\s*/mg,"");var V=[],Z=O.match(/^#pragma\s+include\s+.*/mg);if(Z){for(var $=0;$<Z.length;$++){var ee=Z[$],se=ee.match(/(?:<|")(.*)(?:>|")/);if(se){var ce=se[0].indexOf("<")===0?"lib":"link",me=se[1];if(me==="graph"&&(me="graphics"),N[me])V.push("/* included ".concat(me," */"));else if(N[me]=!0,ce==="lib"){var pe=W(M[me]);V.push(pe)}else if(ce==="link")throw new Error("Cannot load external links synchronously. Use compile instead of compileSync.")}}V.forEach(function(B){O=O.replace(/^#pragma\s+include\s+.*/m,B)})}return O}var Y=W(A),Q=k?W(k):null,ie=this.createProgram(Y,Q);return ie}},{key:"compile",value:function(){var j=c()(o.a.mark(function k(N,W){var Y,Q,ie,O,V,Z;return o.a.wrap(function(ee){for(;;)switch(ee.prev=ee.next){case 0:return ie=function(){return ie=c()(o.a.mark(function ce(me){var pe,B,F,J,oe,K,te,w,I;return o.a.wrap(function(G){for(;;)switch(G.prev=G.next){case 0:if(me=me.replace(/^\s*/mg,""),pe=[],B=me.match(/^#pragma\s+include\s+.*/mg),!B){G.next=36;break}F=0;case 5:if(!(F<B.length)){G.next=35;break}if(J=B[F],oe=J.match(/(?:<|")(.*)(?:>|")/),!oe){G.next=32;break}if(K=oe[0].indexOf("<")===0?"lib":"link",te=oe[1],te==="graph"&&(te="graphics"),Y[te]){G.next=31;break}if(Y[te]=!0,K!=="lib"){G.next=21;break}return G.next=17,Q(M[te]);case 17:w=G.sent,pe.push(w),G.next=29;break;case 21:if(K!=="link"){G.next=29;break}return G.next=24,z.fetchShader(te);case 24:return I=G.sent,G.next=27,Q(I);case 27:I=G.sent,pe.push(I);case 29:G.next=32;break;case 31:pe.push("/* included ".concat(te," */"));case 32:F++,G.next=5;break;case 35:pe.forEach(function(_){me=me.replace(/^#pragma\s+include\s+.*/m,_)});case 36:return G.abrupt("return",me);case 37:case"end":return G.stop()}},ce)})),ie.apply(this,arguments)},Q=function(ce){return ie.apply(this,arguments)},N=N||p.default,Y={},ee.next=6,Q(N);case 6:if(O=ee.sent,!W){ee.next=13;break}return ee.next=10,Q(W);case 10:ee.t0=ee.sent,ee.next=14;break;case 13:ee.t0=null;case 14:return V=ee.t0,Z=this.createProgram(O,V),ee.abrupt("return",Z);case 17:case"end":return ee.stop()}},k,this)}));function A(k,N){return j.apply(this,arguments)}return A}()},{key:"load",value:function(){var j=c()(o.a.mark(function k(N){var W,Y=arguments;return o.a.wrap(function(ie){for(;;)switch(ie.prev=ie.next){case 0:return W=Y.length>1&&Y[1]!==void 0?Y[1]:null,ie.next=3,z.fetchShader(N);case 3:if(N=ie.sent,!W){ie.next=8;break}return ie.next=7,z.fetchShader(W);case 7:W=ie.sent;case 8:return ie.abrupt("return",this.compile(N,W));case 9:case"end":return ie.stop()}},k,this)}));function A(k){return j.apply(this,arguments)}return A}()},{key:"createTexture",value:function(){var A=this,k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},W=N.wrapS,Y=W===void 0?this.gl.CLAMP_TO_EDGE:W,Q=N.wrapT,ie=Q===void 0?this.gl.CLAMP_TO_EDGE:Q,O=N.minFilter,V=O===void 0?this.gl.LINEAR:O,Z=N.magFilter,$=Z===void 0?this.gl.LINEAR:Z,ee=this.gl,se=Array.isArray(k)?ee.TEXTURE_CUBE_MAP:ee.TEXTURE_2D;this._max_texture_image_units=this._max_texture_image_units||ee.getParameter(ee.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee.activeTexture(ee.TEXTURE0+this._max_texture_image_units-1);var ce=ee.createTexture();ee.bindTexture(se,ce),ee.pixelStorei(ee.UNPACK_FLIP_Y_WEBGL,!0);var me=this.canvas,pe=me.width,B=me.height;if(k)if(se===ee.TEXTURE_CUBE_MAP)for(var F=0;F<6;F++)ee.texImage2D(ee.TEXTURE_CUBE_MAP_POSITIVE_X+F,0,ee.RGBA,ee.RGBA,ee.UNSIGNED_BYTE,k[F]);else ee.texImage2D(se,0,ee.RGBA,ee.RGBA,ee.UNSIGNED_BYTE,k);else if(se===ee.TEXTURE_CUBE_MAP)for(var J=0;J<6;J++)this.gl.texImage2D(this.gl.TEXTURE_CUBE_MAP_POSITIVE_X+J,0,ee.RGBA,pe,B,0,ee.RGBA,ee.UNSIGNED_BYTE,null);else ee.texImage2D(se,0,ee.RGBA,pe,B,0,ee.RGBA,ee.UNSIGNED_BYTE,null);return ee.texParameteri(se,ee.TEXTURE_MIN_FILTER,V),ee.texParameteri(se,ee.TEXTURE_MAG_FILTER,$),ee.texParameteri(se,ee.TEXTURE_WRAP_S,Y),ee.texParameteri(se,ee.TEXTURE_WRAP_T,ie),se===ee.TEXTURE_CUBE_MAP&&(k.width=k[0].width,k.height=k[0].height),ee.bindTexture(se,null),ce._img=k||{width:pe,height:B},ce.delete=function(){A.deleteTexture(ce)},ce}},{key:"deleteTexture",value:function(A){var k=A._img;this.gl.deleteTexture(A),typeof k.close=="function"&&k.close()}},{key:"loadTexture",value:function(){var j=c()(o.a.mark(function k(N){var W,Y,Q,ie,O=arguments;return o.a.wrap(function(Z){for(;;)switch(Z.prev=Z.next){case 0:return W=O.length>1&&O[1]!==void 0?O[1]:{},Y=W.useImageBitmap,Q=Y===void 0?!0:Y,Z.next=3,z.loadImage(N,{useImageBitmap:Q});case 3:return ie=Z.sent,Z.abrupt("return",this.createTexture(ie));case 5:case"end":return Z.stop()}},k,this)}));function A(k){return j.apply(this,arguments)}return A}()},{key:"createFBO",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},k=A.color,N=k===void 0?1:k,W=A.blend,Y=W===void 0?!1:W,Q=A.depth,ie=Q===void 0?this.options.depth!==!1:Q,O=A.stencil,V=O===void 0?!!this.options.stencil:O,Z=this.gl,$=Z.createFramebuffer();Z.bindFramebuffer(Z.FRAMEBUFFER,$);for(var ee=[],se=0;se<N;se++){var ce=this.createTexture();Z.framebufferTexture2D(Z.FRAMEBUFFER,Z.COLOR_ATTACHMENT0+se,Z.TEXTURE_2D,ce,0),ee.push(ce)}$.textures=ee,$.texture=ee[0],$.blend=Y;var me=this.canvas,pe=me.width,B=me.height;return ie&&!V&&($.depthBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.depthBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.DEPTH_COMPONENT16,pe,B),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.DEPTH_ATTACHMENT,Z.RENDERBUFFER,$.depthBuffer)),V&&!ie&&($.stencilBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.stencilBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.STENCIL_INDEX8,pe,B),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.STENCIL_ATTACHMENT,Z.RENDERBUFFER,$.stencilBuffer)),ie&&V&&($.depthStencilBuffer=Z.createRenderbuffer(),Z.bindRenderbuffer(Z.RENDERBUFFER,$.depthStencilBuffer),Z.renderbufferStorage(Z.RENDERBUFFER,Z.DEPTH_STENCIL,pe,B),Z.framebufferRenderbuffer(Z.FRAMEBUFFER,Z.DEPTH_STENCIL_ATTACHMENT,Z.RENDERBUFFER,$.depthStencilBuffer)),Z.bindFramebuffer(Z.FRAMEBUFFER,null),$}},{key:"bindFBO",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;this.fbo=A}},{key:"render",value:function(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};A.clearBuffer,this.startRender=!0;var k=this.gl,N=this.program;N||(N=this.createProgram(),this.useProgram(N)),this.fbo&&k.bindFramebuffer(k.FRAMEBUFFER,this.fbo);var W=this.options.depth;W&&k.enable(k.DEPTH_TEST),this.gl.clear(this.gl.COLOR_BUFFER_BIT|(W?this.gl.DEPTH_BUFFER_BIT:0)|(this.options.stencil?this.gl.STENCIL_BUFFER_BIT:0));var Y=this._renderFrameID;this._draw(),this.fbo&&k.bindFramebuffer(k.FRAMEBUFFER,null),this._renderFrameID===Y&&(this._renderFrameID=null)}},{key:"update",value:function(){this.startRender&&this._renderFrameID==null&&(this._renderFrameID=requestAnimationFrame(this.render.bind(this)))}},{key:"program",get:function(){var A=this.gl;return A.getParameter(A.CURRENT_PROGRAM)}},{key:"isWebGL2",get:function(){return typeof WebGL2RenderingContext<"u"&&this.gl instanceof WebGL2RenderingContext}},{key:"enableTextures",get:function(){return this.program&&this.program._enableTextures}},{key:"uniforms",get:function(){var A=this.program;if(!A||!A.uniforms)throw Error("No avaliable program.");return A.uniforms}}]),z}();C()(D,"defaultOptions",{preserveDrawingBuffer:!0,autoUpdate:!0,vertexPosition:"a_vertexPosition",vertexTextureCoord:"a_vertexTextureCoord",webgl2:!1}),C()(D,"UBYTE",D.UNSIGNED_BYTE),C()(D,"USHORT",D.UNSIGNED_SHORT),C()(D,"fetchShader",L.fetchShader),C()(D,"loadImage",L.loadImage)},function(e,t,n){e.exports=n(28)},function(e,t,n){var i=function(o){var a=Object.prototype,c=a.hasOwnProperty,l,u=typeof Symbol=="function"?Symbol:{},h=u.iterator||"@@iterator",d=u.asyncIterator||"@@asyncIterator",f=u.toStringTag||"@@toStringTag";function g(O,V,Z){return Object.defineProperty(O,V,{value:Z,enumerable:!0,configurable:!0,writable:!0}),O[V]}try{g({},"")}catch{g=function(V,Z,$){return V[Z]=$}}function y(O,V,Z,$){var ee=V&&V.prototype instanceof m?V:m,se=Object.create(ee.prototype),ce=new Y($||[]);return se._invoke=A(O,Z,ce),se}o.wrap=y;function S(O,V,Z){try{return{type:"normal",arg:O.call(V,Z)}}catch($){return{type:"throw",arg:$}}}var E="suspendedStart",C="suspendedYield",L="executing",T="completed",p={};function m(){}function M(){}function v(){}var R={};R[h]=function(){return this};var b=Object.getPrototypeOf,P=b&&b(b(Q([])));P&&P!==a&&c.call(P,h)&&(R=P);var D=v.prototype=m.prototype=Object.create(R);M.prototype=D.constructor=v,v.constructor=M,M.displayName=g(v,f,"GeneratorFunction");function z(O){["next","throw","return"].forEach(function(V){g(O,V,function(Z){return this._invoke(V,Z)})})}o.isGeneratorFunction=function(O){var V=typeof O=="function"&&O.constructor;return V?V===M||(V.displayName||V.name)==="GeneratorFunction":!1},o.mark=function(O){return Object.setPrototypeOf?Object.setPrototypeOf(O,v):(O.__proto__=v,g(O,f,"GeneratorFunction")),O.prototype=Object.create(D),O},o.awrap=function(O){return{__await:O}};function j(O,V){function Z(se,ce,me,pe){var B=S(O[se],O,ce);if(B.type==="throw")pe(B.arg);else{var F=B.arg,J=F.value;return J&&typeof J=="object"&&c.call(J,"__await")?V.resolve(J.__await).then(function(oe){Z("next",oe,me,pe)},function(oe){Z("throw",oe,me,pe)}):V.resolve(J).then(function(oe){F.value=oe,me(F)},function(oe){return Z("throw",oe,me,pe)})}}var $;function ee(se,ce){function me(){return new V(function(pe,B){Z(se,ce,pe,B)})}return $=$?$.then(me,me):me()}this._invoke=ee}z(j.prototype),j.prototype[d]=function(){return this},o.AsyncIterator=j,o.async=function(O,V,Z,$,ee){ee===void 0&&(ee=Promise);var se=new j(y(O,V,Z,$),ee);return o.isGeneratorFunction(V)?se:se.next().then(function(ce){return ce.done?ce.value:se.next()})};function A(O,V,Z){var $=E;return function(se,ce){if($===L)throw new Error("Generator is already running");if($===T){if(se==="throw")throw ce;return ie()}for(Z.method=se,Z.arg=ce;;){var me=Z.delegate;if(me){var pe=k(me,Z);if(pe){if(pe===p)continue;return pe}}if(Z.method==="next")Z.sent=Z._sent=Z.arg;else if(Z.method==="throw"){if($===E)throw $=T,Z.arg;Z.dispatchException(Z.arg)}else Z.method==="return"&&Z.abrupt("return",Z.arg);$=L;var B=S(O,V,Z);if(B.type==="normal"){if($=Z.done?T:C,B.arg===p)continue;return{value:B.arg,done:Z.done}}else B.type==="throw"&&($=T,Z.method="throw",Z.arg=B.arg)}}}function k(O,V){var Z=O.iterator[V.method];if(Z===l){if(V.delegate=null,V.method==="throw"){if(O.iterator.return&&(V.method="return",V.arg=l,k(O,V),V.method==="throw"))return p;V.method="throw",V.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var $=S(Z,O.iterator,V.arg);if($.type==="throw")return V.method="throw",V.arg=$.arg,V.delegate=null,p;var ee=$.arg;if(!ee)return V.method="throw",V.arg=new TypeError("iterator result is not an object"),V.delegate=null,p;if(ee.done)V[O.resultName]=ee.value,V.next=O.nextLoc,V.method!=="return"&&(V.method="next",V.arg=l);else return ee;return V.delegate=null,p}z(D),g(D,f,"Generator"),D[h]=function(){return this},D.toString=function(){return"[object Generator]"};function N(O){var V={tryLoc:O[0]};1 in O&&(V.catchLoc=O[1]),2 in O&&(V.finallyLoc=O[2],V.afterLoc=O[3]),this.tryEntries.push(V)}function W(O){var V=O.completion||{};V.type="normal",delete V.arg,O.completion=V}function Y(O){this.tryEntries=[{tryLoc:"root"}],O.forEach(N,this),this.reset(!0)}o.keys=function(O){var V=[];for(var Z in O)V.push(Z);return V.reverse(),function $(){for(;V.length;){var ee=V.pop();if(ee in O)return $.value=ee,$.done=!1,$}return $.done=!0,$}};function Q(O){if(O){var V=O[h];if(V)return V.call(O);if(typeof O.next=="function")return O;if(!isNaN(O.length)){var Z=-1,$=function ee(){for(;++Z<O.length;)if(c.call(O,Z))return ee.value=O[Z],ee.done=!1,ee;return ee.value=l,ee.done=!0,ee};return $.next=$}}return{next:ie}}o.values=Q;function ie(){return{value:l,done:!0}}return Y.prototype={constructor:Y,reset:function(O){if(this.prev=0,this.next=0,this.sent=this._sent=l,this.done=!1,this.delegate=null,this.method="next",this.arg=l,this.tryEntries.forEach(W),!O)for(var V in this)V.charAt(0)==="t"&&c.call(this,V)&&!isNaN(+V.slice(1))&&(this[V]=l)},stop:function(){this.done=!0;var O=this.tryEntries[0],V=O.completion;if(V.type==="throw")throw V.arg;return this.rval},dispatchException:function(O){if(this.done)throw O;var V=this;function Z(pe,B){return se.type="throw",se.arg=O,V.next=pe,B&&(V.method="next",V.arg=l),!!B}for(var $=this.tryEntries.length-1;$>=0;--$){var ee=this.tryEntries[$],se=ee.completion;if(ee.tryLoc==="root")return Z("end");if(ee.tryLoc<=this.prev){var ce=c.call(ee,"catchLoc"),me=c.call(ee,"finallyLoc");if(ce&&me){if(this.prev<ee.catchLoc)return Z(ee.catchLoc,!0);if(this.prev<ee.finallyLoc)return Z(ee.finallyLoc)}else if(ce){if(this.prev<ee.catchLoc)return Z(ee.catchLoc,!0)}else if(me){if(this.prev<ee.finallyLoc)return Z(ee.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(O,V){for(var Z=this.tryEntries.length-1;Z>=0;--Z){var $=this.tryEntries[Z];if($.tryLoc<=this.prev&&c.call($,"finallyLoc")&&this.prev<$.finallyLoc){var ee=$;break}}ee&&(O==="break"||O==="continue")&&ee.tryLoc<=V&&V<=ee.finallyLoc&&(ee=null);var se=ee?ee.completion:{};return se.type=O,se.arg=V,ee?(this.method="next",this.next=ee.finallyLoc,p):this.complete(se)},complete:function(O,V){if(O.type==="throw")throw O.arg;return O.type==="break"||O.type==="continue"?this.next=O.arg:O.type==="return"?(this.rval=this.arg=O.arg,this.method="return",this.next="end"):O.type==="normal"&&V&&(this.next=V),p},finish:function(O){for(var V=this.tryEntries.length-1;V>=0;--V){var Z=this.tryEntries[V];if(Z.finallyLoc===O)return this.complete(Z.completion,Z.afterLoc),W(Z),p}},catch:function(O){for(var V=this.tryEntries.length-1;V>=0;--V){var Z=this.tryEntries[V];if(Z.tryLoc===O){var $=Z.completion;if($.type==="throw"){var ee=$.arg;W(Z)}return ee}}throw new Error("illegal catch attempt")},delegateYield:function(O,V,Z){return this.delegate={iterator:Q(O),resultName:V,nextLoc:Z},this.method==="next"&&(this.arg=l),p}},o}(e.exports);try{regeneratorRuntime=i}catch{Function("r","regeneratorRuntime = r")(i)}},function(e,t){function n(o,a,c,l,u,h,d){try{var f=o[h](d),g=f.value}catch(y){c(y);return}f.done?a(g):Promise.resolve(g).then(l,u)}function i(o){return function(){var a=this,c=arguments;return new Promise(function(l,u){var h=o.apply(a,c);function d(g){n(h,l,u,d,f,"next",g)}function f(g){n(h,l,u,d,f,"throw",g)}d(void 0)})}}e.exports=i},function(e,t){function n(i,o,a){return o in i?Object.defineProperty(i,o,{value:a,enumerable:!0,configurable:!0,writable:!0}):i[o]=a,i}e.exports=n},function(e,t,n){n.r(t),n.d(t,"setupWebGL",function(){return d}),n.d(t,"createProgram",function(){return f}),n.d(t,"pointsToBuffer",function(){return g}),n.d(t,"loadImage",function(){return S}),n.d(t,"fetchShader",function(){return C});var i=n(27),o=n.n(i),a=n(29),c=n.n(a),l=n(32),u=n.n(l);n(1).glMatrix.setMatrixArrayType(Array);function h(T,p){for(var m=["webgl","experimental-webgl","webkit-3d","moz-webgl"],M=null,v=0;v<m.length;++v){try{M=T.getContext(m[v],p)}catch{}if(M)break}return M}function d(T,p){var m=h(T,p);if(!m)throw new Error("Sorry, your browser doesn't support WebGL.");return m}function f(T,p,m){var M=T.createShader(T.VERTEX_SHADER);if(T.shaderSource(M,p),T.compileShader(M),!T.getShaderParameter(M,T.COMPILE_STATUS)){var v="Vertex shader failed to compile. The error log is:".concat(T.getShaderInfoLog(M));throw new Error(v)}var R=T.createShader(T.FRAGMENT_SHADER);if(T.shaderSource(R,m),T.compileShader(R),!T.getShaderParameter(R,T.COMPILE_STATUS)){var b="Fragment shader failed to compile. The error log is:".concat(T.getShaderInfoLog(R));throw new Error(b)}var P=T.createProgram();if(T.attachShader(P,M),T.attachShader(P,R),T.linkProgram(P),!T.getProgramParameter(P,T.LINK_STATUS)){var D="Shader program failed to link. The error log is:".concat(T.getProgramInfoLog(P));throw new Error(D)}return T.deleteShader(M),T.deleteShader(R),P}function g(T){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Float32Array,m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(m&&!(m instanceof p))throw new TypeError("Wrong buffer type.");if(T==null||T instanceof p)return T;if(T[0]==null||T[0].length==null)return m?(m.set(T,0),m):new p(T);var M=T[0].length,v=T.length;m||(m=new p(M*v));for(var R=0,b=0;b<v;b++)for(var P=0;P<M;P++)m[R++]=T[b][P];return m}var y={};function S(T){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},m=p.useImageBitmap,M=m===void 0?!0:m,v=p.alias,R=v===void 0?null:v;if(!y[T]){if(typeof Image=="function"){var b=new Image;typeof T=="string"&&!((typeof location>"u"?"undefined":u()(location))==="object"&&/^file:/.test(location.href))&&!/^data:/.test(T)&&(b.crossOrigin="anonymous"),y[T]=new Promise(function(P){b.onload=function(){M&&typeof createImageBitmap=="function"?createImageBitmap(b,{imageOrientation:"flipY"}).then(function(D){y[T]=D,R&&(y[R]=D),P(D)}):(y[T]=b,R&&(y[R]=b),P(b))},b.src=T}),R&&(y[R]=y[T])}else if(typeof fetch=="function")return fetch(T,{method:"GET",mode:"cors",cache:"default"}).then(function(P){return P.blob()}).then(function(P){return createImageBitmap(P,{imageOrientation:"flipY"}).then(function(D){return y[T]=D,R&&(y[R]=D),D})})}return y[T]}var E={};function C(T){return L.apply(this,arguments)}function L(){return L=c()(o.a.mark(function T(p){var m,M;return o.a.wrap(function(R){for(;;)switch(R.prev=R.next){case 0:if(!E[p]){R.next=2;break}return R.abrupt("return",E[p]);case 2:return R.next=4,fetch(p);case 4:if(m=R.sent,!(m.status>=200&&m.status<300)){R.next=11;break}return R.next=8,m.text();case 8:return M=R.sent,E[p]=M,R.abrupt("return",M);case 11:throw new Error("Shader loaded error.");case 12:case"end":return R.stop()}},T)})),L.apply(this,arguments)}},function(e,t){function n(i){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?e.exports=n=function(a){return typeof a}:e.exports=n=function(a){return a&&typeof Symbol=="function"&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},n(i)}e.exports=n},function(e,t,n){n.r(t),t.default=`attribute vec3 a_vertexPosition;
23
+
24
+ void main() {
25
+ gl_PointSize = 1.0;
26
+ gl_Position = vec4(a_vertexPosition, 1);
27
+ }`},function(e,t,n){n.r(t),t.default=`#ifdef GL_ES
28
+ precision mediump float;
29
+ #endif
30
+
31
+ void main() {
32
+ gl_FragColor = vec4(0.0, 0.0, 0.0, 0.1);
33
+ }`},function(e,t,n){n.r(t),t.default=`attribute vec4 a_vertexPosition;
34
+ attribute vec2 a_vertexTextureCoord;
35
+ varying vec2 vTextureCoord;
36
+
37
+ void main() {
38
+ gl_PointSize = 1.0;
39
+ gl_Position = a_vertexPosition;
40
+ vTextureCoord = a_vertexTextureCoord;
41
+ }`},function(e,t,n){n.r(t),n.d(t,"default",function(){return T});var i=n(19),o=n.n(i),a=n(13),c=n.n(a),l=n(27),u=n.n(l),h=n(29),d=n.n(h),f=n(23),g=n.n(f),y=n(24),S=n.n(y),E=n(37),C=n(41);n(1).glMatrix.setMatrixArrayType(Array);var L=Symbol("transform"),T=function(){function p(m,M){g()(this,p),this.context=m.getContext("2d"),this.options=M,this[L]=[1,0,0,1,0,0]}return S()(p,[{key:"createTexture",value:function(M){var v={_img:M};return v}},{key:"loadTexture",value:function(){var m=d()(u.a.mark(function v(R){var b;return u.a.wrap(function(D){for(;;)switch(D.prev=D.next){case 0:return D.next=2,E.default.loadImage(R,{useImageBitmap:!1});case 2:return b=D.sent,D.abrupt("return",this.createTexture(b));case 4:case"end":return D.stop()}},v,this)}));function M(v){return m.apply(this,arguments)}return M}()},{key:"deleteTexture",value:function(M){return M}},{key:"clear",value:function(M,v,R,b){var P=this.context;M=M||0,v=v||0,R=R||P.canvas.width-M,b=b||P.canvas.height-v,P.clearRect(M,v,R,b)}},{key:"drawMeshCloud",value:function(M){for(var v=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},R=v.clear,b=R===void 0?!1:R,P=[],D=0;D<M.amount;D++){var z=M.getTransform(D),j=M.getTextureFrame(D);j&&(j=j._img);var A=M.getFilter(D),k=M.getCloudRGBA(D),N=k.fill,W=k.stroke;P.push({mesh:M.mesh,_cloudOptions:[N,W,j,z,A]})}M.beforeRender&&M.beforeRender(this.context,M),this.drawMeshes(P,{clear:b,hook:!1}),M.afterRender&&M.afterRender(this.context,M)}},{key:"drawMeshes",value:function(M){var v=this,R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=R.clear,P=b===void 0?!1:b,D=R.hook,z=D===void 0?!0:D,j=this.context;P&&j.clearRect(0,0,j.canvas.width,j.canvas.height);var A=null,k=j.canvas,N=k.width,W=k.height,Y=M.length;M.forEach(function(Q,ie){var O,V,Z,$,ee;if(z&&Q.beforeRender&&Q.beforeRender(j,Q),Q._cloudOptions){var se=c()(Q._cloudOptions,5);O=se[0],V=se[1],Z=se[2],$=se[3],ee=se[4],Q=Q.mesh}var ce=Q.filter;if(ee&&(ce=ce?"".concat(ce," ").concat(ee):ee),ce&&!v.filterBuffer&&v.filterBuffer!==!1){var me=E.default.createCanvas(N,W);me?v.filterBuffer=me.getContext("2d"):v.filterBuffer=!1}if(A&&A!==ce&&(Object(C.applyFilter)(v.filterBuffer,A),j.drawImage(v.filterBuffer.canvas,0,0,N,W),v.filterBuffer.clearRect(0,0,N,W),A=null),ce&&v.filterBuffer){var pe;v.filterBuffer.save(),(pe=v.filterBuffer).transform.apply(pe,o()(v[L])),Object(C.drawMesh2D)(Q,v.filterBuffer,!1,O,V,Z,$),v.filterBuffer.restore(),ie===Y-1?(Object(C.applyFilter)(v.filterBuffer,ce),j.drawImage(v.filterBuffer.canvas,0,0,N,W),v.filterBuffer.clearRect(0,0,N,W)):A=ce}else j.save(),j.transform.apply(j,o()(v[L])),Object(C.drawMesh2D)(Q,j,!1,O,V,Z,$),j.restore();z&&Q.afterRender&&Q.afterRender(j,Q)})}},{key:"setTransform",value:function(M){this[L]=M}}]),p}()},function(e,t,n){n.r(t),(function(i){var o=n(32),a=n.n(o),c=n(19),l=n.n(c),u=n(25),h=n(39),d=n(40);n(1).glMatrix.setMatrixArrayType(Array);var f={};function g(T,p){var m=T.style,M=T.variant,v=T.weight,R=T.stretch,b=T.size,P=T.pxLineHeight,D=T.family;return R==="normal"?"".concat(m," ").concat(M," ").concat(v," ").concat(b*p,"px/").concat(P*p,"px ").concat(D):"".concat(m," ").concat(M," ").concat(v," ").concat(R," ").concat(b*p,"px/").concat(P*p,"px ").concat(D)}function y(T,p){var m=p.font,M=p.fillColor,v=p.strokeColor,R=p.strokeWidth,b=p.ratio,P=b===void 0?1:b,D=p.textCanvas,z=p.cachable,j=z===void 0?!1:z,A;if(j){A=[T,m,String(M),String(v),String(R)].join("###");var k=f[A];if(k)return k}D||(D=C(1,1));var N=D.getContext("2d");N.save(),N.font=m;var W=N.measureText(T),Y=W.width;N.restore();var Q=Object(h.default)(m),ie=Math.max(Q.pxLineHeight,Q.pxHeight*1.13);/italic|oblique/.test(m)&&(Y+=ie*Math.tan(15*Math.PI/180)),!M&&!v&&(M="#000");var O=N.canvas,V=Math.ceil(Y),Z=Math.ceil(ie);O.width=Math.round(V*P),O.height=Math.round(Z*P),N.save(),N.font=g(Q,P),N.textAlign="center",N.textBaseline="middle";var $=O.height*.5+Q.pxHeight*.05*P,ee=O.width*.5;if(M){if(Array.isArray(M))M=Object(d.default)(M);else if(M.vector){var se,ce=M,me=ce.vector,pe=ce.colors;me.length===6?se=N.createRadialGradient.apply(N,l()(me)):se=N.createLinearGradient.apply(N,l()(me)),pe.forEach(function(te){var w=te.offset,I=te.color;se.addColorStop(w,I)}),M=se}N.fillStyle=M,N.fillText(T,ee,$)}if(v){if(N.lineWidth=R*P,Array.isArray(v))v=Object(d.default)(v);else if(v.vector){var B,F=v,J=F.vector,oe=F.colors;J.length===6?B=N.createRadialGradient.apply(N,l()(J)):B=N.createLinearGradient.apply(N,l()(J)),oe.forEach(function(te){var w=te.offset,I=te.color;B.addColorStop(w,I)}),v=B}N.strokeStyle=v,N.strokeText(T,ee,$)}N.restore();var K={image:D,rect:[0,0,V,Z]};return j&&(f[A]=K),K}var S=!1;if((typeof navigator>"u"?"undefined":a()(navigator))==="object"&&typeof navigator.userAgent=="string"){var E=navigator.userAgent.toLowerCase().match(/chrome\/(\d+)/);E&&(S=Number(E[1])<70)}function C(T,p){var m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},M=m.offscreen||!S&&m.offscreen!==!1,v;return typeof i<"u"&&typeof i.createCanvas=="function"?v=i.createCanvas(T,p,m):M&&typeof OffscreenCanvas=="function"?v=new OffscreenCanvas(T,p):(v=document.createElement("canvas"),v.width=T,v.height=p),v}var L={createCanvas:C,createText:y,loadImage:u.default.loadImage};t.default=L}).call(this,n(38))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch{typeof window=="object"&&(n=window)}e.exports=n},function(e,t,n){n.r(t),n.d(t,"default",function(){return E}),n(1).glMatrix.setMatrixArrayType(Array);function i(C,L){if(typeof C=="string"){var T=C.trim().match(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin|%)$/);T?C={size:parseFloat(T[1]),unit:T[2]}:C={size:parseInt(C,10),unit:"px"}}var p=C,m=p.size,M=p.unit;if(M==="pt")m/=.75;else if(M==="pc")m*=16;else if(M==="in")m*=96;else if(M==="cm")m*=96/2.54;else if(M==="mm")m*=96/25.4;else if(M==="em"||M==="rem"||M==="ex"){if(!L&&typeof getComputedStyle=="function"&&typeof document<"u"){var v=getComputedStyle(document.documentElement).fontSize;L=i(v,16)}m*=L,M==="ex"&&(m/=2)}else if(M==="q")m*=96/25.4/4;else if(M==="vw"||M==="vh"){if(typeof document<"u"){var R=M==="vw"?document.documentElement.clientWidth:document.documentElement.clientHeight;m*=R/100}}else if((M==="vmax"||M==="vmin")&&typeof document<"u"){var b=document.documentElement.clientWidth,P=document.documentElement.clientHeight;M==="vmax"?m*=Math.max(b,P)/100:m*=Math.min(b,P)/100}return m}var o="bold|bolder|lighter|[1-9]00",a="italic|oblique",c="small-caps",l="ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded",u="px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin|%",h=`'([^']+)'|"([^"]+)"|([\\w-]|[一-龥])+`,d=new RegExp("(".concat(o,") +"),"i"),f=new RegExp("(".concat(a,") +"),"i"),g=new RegExp("(".concat(c,") +"),"i"),y=new RegExp("(".concat(l,") +"),"i"),S=new RegExp("([\\d\\.]+)("+u+")(?:\\/([\\d\\.]+)("+u+"))? *((?:"+h+")( *, *(?:"+h+"))*)");function E(C,L){var T=S.exec(C);if(T){var p=parseFloat(T[3]),m={weight:"normal",style:"normal",stretch:"normal",variant:"normal",size:parseFloat(T[1]),unit:T[2],lineHeight:Number.isFinite(p)?p:void 0,lineHeightUnit:T[4],family:T[5].replace(/ *, */g,",")},M=C.substring(0,T.index),v=d.exec(M),R=f.exec(M),b=g.exec(M),P=y.exec(M);return v&&(m.weight=v[1]),R&&(m.style=R[1]),b&&(m.variant=b[1]),P&&(m.stretch=P[1]),m.pxHeight=i({size:m.size,unit:m.unit},L),m.pxLineHeight=i({size:m.lineHeight||m.size,unit:m.lineHeightUnit||m.unit},L),m}}},function(e,t,n){n.r(t),n.d(t,"default",function(){return i}),n(1).glMatrix.setMatrixArrayType(Array);function i(o){return"rgba(".concat(o.map(function(a,c){return c<3?Math.round(a*255):a}).join(),")")}},function(e,t,n){n.r(t),n.d(t,"applyFilter",function(){return h}),n.d(t,"drawMesh2D",function(){return f});var i=n(19),o=n.n(i),a=n(1),c=n(40),l=n(39),u=n(42);n(1).glMatrix.setMatrixArrayType(Array);function h(g,y){var S=g.canvas;g.save(),g.filter=y,g.drawImage(S,0,0,S.width,S.height),g.restore()}function d(g,y){var S=/rgba\((\d+),(\d+),(\d+),(\d+)\)/;g=g.match(S).slice(1,5).map(Number),y=y.match(S).slice(1,5).map(Number);for(var E=[],C=y[3],L=0;L<4;L++)E[L]=Object(u.mix)(g[L],y[L],C);return"rgba(".concat(E.join(),")")}function f(g,y){var S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,E=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,C=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null,L=arguments.length>5&&arguments[5]!==void 0?arguments[5]:null,T=arguments.length>6&&arguments[6]!==void 0?arguments[6]:null;y.save();var p=!1,m=!1;if(y.globalAlpha=g.getOpacity(),g._updateMatrix){var M=g.transformScale/g.contours.scale;M>1.5&&g.accurate(g.transformScale)}if(g.lineWidth){var v=g.gradient&&g.gradient.stroke;if(v){var R=v,b=R.vector,P=R.colors;if(b.length===6)v=y.createRadialGradient.apply(y,o()(b));else if(b.length===4)v=y.createLinearGradient.apply(y,o()(b));else if(b.length===3)v=y.createCircularGradient.apply(y,o()(b));else throw new TypeError("Invalid vector dimension.");P.forEach(function(Q){var ie=Q.offset,O=Q.color,V=Object(c.default)(O);C&&(V=d(V,C)),v.addColorStop(ie,V)}),y.strokeStyle=v,p=!0}else g.strokeStyle&&(C?y.strokeStyle=d(g.strokeStyle,C):y.strokeStyle=g.strokeStyle,p=!0)}p&&(y.lineWidth=g.lineWidth,y.lineJoin=g.lineJoin,y.lineCap=g.lineCap,y.miterLimit=g.miterLimit,g.lineDash&&(y.setLineDash(g.lineDash),g.lineDashOffset&&(y.lineDashOffset=g.lineDashOffset)));var D=g.gradient&&g.gradient.fill;if(D){var z=D,j=z.vector,A=z.colors;if(j.length===6)D=y.createRadialGradient.apply(y,o()(j));else if(j.length===4)D=y.createLinearGradient.apply(y,o()(j));else if(j.length===3)D=y.createCircularGradient.apply(y,o()(j));else throw new TypeError("Invalid vector dimension.");A.forEach(function(Q){var ie=Q.offset,O=Q.color,V=Object(c.default)(O);C&&(V=d(V,C)),D.addColorStop(ie,V)}),y.fillStyle=D,m=!0}else g.fillStyle&&(E?y.fillStyle=d(g.fillStyle,E):y.fillStyle=g.fillStyle,m=!0);if(T&&y.transform.apply(y,o()(T)),y.transform.apply(y,o()(g.transformMatrix)),g.clipPath){var k=g.clipPath,N=new Path2D(k);y.clip(N)}var W=g.contours.length;if(g.contours.forEach(function(Q,ie){var O=Q.length,V=O>1&&a.vec2.equals(Q[0],Q[O-1]),Z=ie===W-1&&g.texture;if(Q&&O>0){if(m||p||Z){y.beginPath(),y.moveTo.apply(y,o()(Q[0]));for(var $=1;$<O;$++)$===O-1&&V?y.closePath():y.lineTo.apply(y,o()(Q[$]))}if(m&&y.fill(g.fillRule),Z){y.save(),y.clip();var ee=g.texture,se=ee.image,ce=ee.options;if(L&&(se=L),ce.repeat&&console.warn("Context 2D not supported image repeat yet."),se.font){ce.scale&&console.warn("Context 2D not supported text scale yet."),ce.srcRect&&console.warn("Context 2D not supported text srcRect yet.");var me=se,pe=me.font,B=me.fillColor,F=me.strokeColor,J=me.strokeWidth,oe=me.text;!B&&!F&&(B="#000"),Array.isArray(B)&&(B=Object(c.default)(B)),Array.isArray(F)&&(F=Object(c.default)(F)),y.font=pe;var K=y.measureText(oe),te=K.width,w=Object(l.default)(pe),I=Math.max(w.pxLineHeight,w.pxHeight*1.13);y.textAlign="center",y.textBaseline="middle";var U=ce.rect,G=U[0]+I*.5+w.pxHeight*.06,_=U[1]+te*.5;U[2]!=null&&y.scale(U[2]/te,U[3]/I),B&&(y.fillStyle=B,y.fillText(oe,_,G)),F&&(y.lineWidth=J,y.strokeStyle=F,y.strokeText(oe,_,G))}else{var re=ce.rect,ne=ce.srcRect;ce.scale&&(re=[0,0,y.canvas.width,y.canvas.height]),ce.rotated&&re&&(re=[-re[1],re[0],re[3],re[2]]),ne&&(re=re||[0,0,ne[2],ne[3]]),ce.rotated&&(y.translate(0,re?re[2]:se.width),y.rotate(-.5*Math.PI)),ne?y.drawImage.apply(y,[se].concat(o()(ne),o()(re))):re?y.drawImage.apply(y,[se].concat(o()(re))):y.drawImage(se,0,0)}y.restore()}p&&y.stroke()}}),y.restore(),S){var Y=g.filter;Y&&h(y,Y)}}},function(e,t,n){n.r(t),n.d(t,"clamp",function(){return a}),n.d(t,"mix",function(){return c}),n.d(t,"transformPoint",function(){return l});var i=n(13),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(u,h,d){if(h>d){var f=[d,h];h=f[0],d=f[1]}return u<h?h:u>d?d:u}function c(u,h,d){return u*(1-d)+h*d}function l(u,h){var d=o()(u,2),f=d[0],g=d[1];return[f*h[0]+g*h[2]+h[4],f*h[1]+g*h[3]+h[5]]}},function(e,t,n){n.r(t),n.d(t,"default",function(){return f});var i=n(27),o=n.n(i),a=n(44),c=n(45);n(1).glMatrix.setMatrixArrayType(Array);var l=o.a.mark(f);function u(g,y,S){var E=g.uniforms||{},C=y.uniforms||{};if(E.u_texSampler&&C.u_texSampler&&E.u_texSampler!==C.u_texSampler)return!1;var L=Object.keys(E),T=Object.keys(C),p=L.indexOf("u_texSampler"),m=T.indexOf("u_texSampler");if(p>=0&&L.splice(p,1),m>=0&&T.splice(m,1),L.length!==T.length)return!1;var M=L.every(function(R){var b=E[R],P=C[R];if(b===P)return!0;if(b.length&&P.length&&b.length===P.length){for(var D=0;D<b.length;D++)if(b[D]!==P[D])return!1;return!0}return!1});if(M){if(E.u_texSampler&&!C.u_texSampler)y.setTexture(E.u_texSampler,{hidden:!0});else if(!E.u_texSampler&&C.u_texSampler)for(var v=0;v<S.length;v++)S[v].setTexture(C.u_texSampler,{hidden:!0})}return M}var h={};function d(g,y){if(g.length){var S=Object(a.default)(g,h);return S.enableBlend=y,g[0].filterCanvas&&(S.filterCanvas=!0),S.packIndex=g[0].packIndex,S.packLength=g.length,S.beforeRender=g[0].beforeRender,S.pass=g[0].pass,S.afterRender=g[g.length-1].afterRender,g.length=0,S}}function f(g,y){var S,E,C,L,T,p,m,M,v,R,b,P,D=arguments;return o.a.wrap(function(j){for(;;)switch(j.prev=j.next){case 0:S=D.length>2&&D[2]!==void 0?D[2]:!1,E=[],C=g.options.bufferSize,L=0,T=!1,p=0;case 6:if(!(p<y.length)){j.next=50;break}if(m=y[p],!(m instanceof c.default)){j.next=18;break}if(!E.length){j.next=12;break}return j.next=12,d(E,T);case 12:return L=0,T=!1,j.next=16,m;case 16:j.next=47;break;case 18:if(M=m.meshData,M.clipPath&&!M.uniforms.u_clipSampler&&(v=g.createTexture(M.clipPath),M.uniforms.u_clipSampler=v),R=0,!((!S||!m.canIgnore())&&M&&M.positions.length)){j.next=43;break}if(m.packIndex=p,b=m.filterCanvas,R=M.positions.length,!(b||L+R>C)){j.next=33;break}if(!E.length){j.next=29;break}return j.next=29,d(E,T);case 29:L=0,T=!1,j.next=40;break;case 33:if(!L){j.next=40;break}if(P=E[E.length-1],!(P&&(P.filterCanvas||P.afterRender||m.beforeRender||P.pass.length||m.pass.length||P.program!==m.program||!u(P,m,E)))){j.next=40;break}return j.next=38,d(E,T);case 38:L=0,T=!1;case 40:E.push(m),T=T||m.enableBlend,L+=R;case 43:if(p!==y.length-1){j.next=47;break}if(!E.length){j.next=47;break}return j.next=47,d(E,T);case 47:p++,j.next=6;break;case 50:case"end":return j.stop()}},l)}},function(e,t,n){n.r(t),n.d(t,"default",function(){return h});var i=n(19),o=n.n(i),a=n(13),c=n.n(a);n(1).glMatrix.setMatrixArrayType(Array);var l={UNSIGNED_BYTE:Uint8Array,UNSIGNED_SHORT:Uint16Array,BYTE:Int8Array,SHORT:Int16Array,FLOAT:Float32Array};function u(d,f){for(var g=0,y=0,S=0,E=0,C=0,L=0,T=0,p=d[0].program,m=0;m<d.length;m++){var M=d[m].meshData;if(M){T+=M.positions.length;var v=M.positions[0].length;g+=M.positions.length*v,y+=M.cells.length*3,L+=M.attributes.a_color.length*4;var R=M.textureCoord;R&&(S+=R.length*R[0].length);var b=M.attributes.a_sourceRect;b&&(E+=b.length*4);var P=M.attributes.a_clipUV;P&&(C+=P.length*2)}}if((!f.positions||f.positions.length<g)&&(f.positions=new Float32Array(g)),(!f.cells||f.cells.length<y)&&(f.cells=new Uint16Array(y)),S&&(!f.textureCoord||f.textureCoord.length<S)&&(f.textureCoord=new Float32Array(S)),(!f.a_color||f.a_color.length<L)&&(f.a_color=new Uint8Array(L)),E&&(!f.a_sourceRect||f.a_sourceRect.length<E)&&(f.a_sourceRect=new Float32Array(E)),C&&(!f.a_clipUV||f.a_clipUV.length<C)&&(f.a_clipUV=new Float32Array(C)),p)for(var D=Object.entries(p._attribute),z=p._attribOpts||{},j=0;j<D.length;j++){var A=c()(D[j],2),k=A[0],N=A[1];if(k!=="a_color"&&k!=="a_sourceRect"&&N!=="ignored"){var W=z[k]?z[k].type:"FLOAT",Y=l[W],Q=N.size*T;(!f[k]||f[k].length<Q)&&(f[k]=new Y(Q))}}return f}function h(d,f){var g=[],y=[],S=[],E=[],C=[],L=[],T=0,p=0,m=d[0]?d[0].uniforms||{}:{},M=d[0]?d[0].program:null;f&&(u(d,f),y=f.cells,g=f.positions,S=f.textureCoord,E=f.a_color,C=f.a_sourceRect,L=f.a_clipUV);for(var v=!1,R=!1,b={},P=0;P<d.length;P++){var D=d[P];if(D){if(D.meshData&&(D=D.meshData),f)for(var z=D.positions,j=0;j<z.length;j++)for(var A=z[j],k=3*(T+j),N=0;N<A.length;N++)g[k+N]=A[N];else{var W;(W=g).push.apply(W,o()(D.positions))}for(var Y=D.cells,Q=0;Q<Y.length;Q++){var ie=Y[Q];if(f){var O=3*(p+Q);y[O]=ie[0]+T,y[O+1]=ie[1]+T,y[O+2]=ie[2]+T}else y.push([ie[0]+T,ie[1]+T,ie[2]+T])}if(f)for(var V=D.attributes.a_color,Z=0;Z<V.length;Z++){var $=V[Z],ee=4*(T+Z);E[ee]=$[0],E[ee+1]=$[1],E[ee+2]=$[2],E[ee+3]=$[3]}else{var se;(se=E).push.apply(se,o()(D.attributes.a_color))}if(D.attributes.a_sourceRect)if(v=!0,f)for(var ce=D.attributes.a_sourceRect,me=0;me<ce.length;me++){var pe=ce[me],B=4*(T+me);C[B]=pe[0],C[B+1]=pe[1],C[B+2]=pe[2],C[B+3]=pe[3]}else{var F;(F=C).push.apply(F,o()(D.attributes.a_sourceRect))}if(D.attributes.a_clipUV)if(R=!0,f)for(var J=D.attributes.a_clipUV,oe=0;oe<J.length;oe++){var K=J[oe],te=2*(T+oe);L[te]=K[0],L[te+1]=K[1]}else{var w;(w=L).push.apply(w,o()(D.attributes.a_clipUV))}if(D.textureCoord)if(f)for(var I=D.textureCoord,U=0;U<I.length;U++)for(var G=I[U],_=3*(T+U),re=0;re<G.length;re++)S[_+re]=G[re];else{var ne;(ne=S).push.apply(ne,o()(D.textureCoord))}if(M)for(var X=Object.entries(M._attribute),ae=0;ae<X.length;ae++){var ue=c()(X[ae],2),he=ue[0],ge=ue[1];if(he!=="a_color"&&he!=="a_sourceRect"&&ge!=="ignored")if(b[he]=[],f){b[he]=f[he];for(var Me=D.attributes[he],we=Me[0].length,be=0;be<Me.length;be++)for(var Ie=Me[be],Ce=we*(T+be),Ae=0;Ae<Ie.length;Ae++)b[he][Ce+Ae]=Ie[Ae]}else{var Ee;(Ee=b[he]).push.apply(Ee,o()(D.attributes[he]))}}T+=D.positions.length,p+=D.cells.length}}b.a_color=E,v&&C&&C.length>0&&(b.a_sourceRect=C);var ke={positions:g,cells:y,attributes:b,uniforms:m,cellsCount:p*3,program:M};return S&&S.length&&(ke.textureCoord=S),R&&L.length>0&&(b.a_clipUV=L),ke}},function(e,t,n){n.r(t),n.d(t,"default",function(){return A});var i=n(30),o=n.n(i),a=n(19),c=n.n(a),l=n(13),u=n.n(l),h=n(23),d=n.n(h),f=n(24),g=n.n(f),y=n(1),S=n(46),E=n(42),C=n(47);n(1).glMatrix.setMatrixArrayType(Array);function L(k,N){var W=Object.keys(k);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(k);N&&(Y=Y.filter(function(Q){return Object.getOwnPropertyDescriptor(k,Q).enumerable})),W.push.apply(W,Y)}return W}function T(k){for(var N=1;N<arguments.length;N++){var W=arguments[N]!=null?arguments[N]:{};N%2?L(Object(W),!0).forEach(function(Y){o()(k,Y,W[Y])}):Object.getOwnPropertyDescriptors?Object.defineProperties(k,Object.getOwnPropertyDescriptors(W)):L(Object(W)).forEach(function(Y){Object.defineProperty(k,Y,Object.getOwnPropertyDescriptor(W,Y))})}return k}var p=Symbol("mesh"),m=Symbol("count"),M=Symbol("blend"),v=Symbol("filter"),R=Symbol("textures"),b=Symbol("textureOptions"),P=Symbol("cloudColor"),D=Symbol("cloudFilter"),z=Symbol("buffer");function j(k){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,W=new Float32Array(3*k),Y=new Float32Array(3*k),Q=new Float32Array(4*k),ie=new Float32Array(4*k),O=new Float32Array(4*k),V=new Float32Array(4*k),Z=new Float32Array(4*k),$=new Uint8Array(k),ee=new Uint8Array(4*k),se=new Uint8Array(4*k);return N&&(W.set(N.transform0,0),Y.set(N.transform1,0),Q.set(N.color0,0),ie.set(N.color1,0),O.set(N.color2,0),V.set(N.color3,0),Z.set(N.color4,0),$.set(N.frameIndex,0),ee.set(N.fillColor,0),se.set(N.strokeColor,0)),{bufferSize:k,transform0:W,transform1:Y,color0:Q,color1:ie,color2:O,color3:V,color4:Z,frameIndex:$,fillColor:ee,strokeColor:se}}var A=function(){function k(N){var W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,Y=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},Q=Y.buffer,ie=Q===void 0?1e3:Q;d()(this,k),ie=Math.max(ie,W),this[m]=W,this[p]=N,this[z]=j(ie),this[R]=[],this[v]=[],this[P]=!1,this[D]=!1,this[M]=!1,this.initBuffer()}return g()(k,[{key:"initBuffer",value:function(){for(var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,Y=this[m],Q=W;Q<Y;Q++)this[z].transform0.set([1,0,0],Q*3),this[z].transform1.set([0,1,0],Q*3),this[z].frameIndex.set([-1],Q),this[z].fillColor.set([0,0,0,0],Q*4),this[z].strokeColor.set([0,0,0,0],Q*4),this.setColorTransform(Q,null)}},{key:"_getFilter",value:function(W){return this[v][W]=this[v][W]||[],this[v][W]}},{key:"getFilter",value:function(W){return this._getFilter(W).join(" ")}},{key:"canIgnore",value:function(){return this[p].canIgnore()}},{key:"delete",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");var Y=this[z],Q=Y.transform0,ie=Y.transform1,O=Y.color0,V=Y.color1,Z=Y.color2,$=Y.color3,ee=Y.color4,se=Y.frameIndex,ce=Y.fillColor,me=Y.strokeColor;Q.set(Q.subarray(3*(W+1)),3*W),ie.set(ie.subarray(3*(W+1)),3*W),O.set(O.subarray(4*(W+1)),4*W),V.set(V.subarray(4*(W+1)),4*W),Z.set(Z.subarray(4*(W+1)),4*W),$.set($.subarray(4*(W+1)),4*W),ee.set(ee.subarray(4*(W+1)),4*W),se.set(se.subarray(W+1),W),ce.set(ce.subarray(4*(W+1)),4*W),me.set(me.subarray(4*(W+1)),4*W);for(var pe in this[v])pe===W?delete this[v][pe]:pe>W&&(this[v][pe-1]=this[v][pe],delete this[v][pe]);this[m]--}},{key:"setColorTransform",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=4;var Q=this[z],ie=Q.color0,O=Q.color1,V=Q.color2,Z=Q.color3,$=Q.color4;return Y!=null?(ie.set([Y[0],Y[5],Y[10],Y[15]],W),O.set([Y[1],Y[6],Y[11],Y[16]],W),V.set([Y[2],Y[7],Y[12],Y[17]],W),Z.set([Y[3],Y[8],Y[13],Y[18]],W),$.set([Y[4],Y[9],Y[14],Y[19]],W),this[M]=this[M]||Y[18]<1,this[D]=!0):(ie.set([1,0,0,0],W),O.set([0,1,0,0],W),V.set([0,0,1,0],W),Z.set([0,0,0,1],W),$.set([0,0,0,0],W)),this}},{key:"getColorTransform",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=4;var Y=this[z],Q=Y.color0,ie=Y.color1,O=Y.color2,V=Y.color3,Z=Y.color4;return[Q[W],ie[W],O[W],V[W],Z[W],Q[W+1],ie[W+1],O[W+1],V[W+1],Z[W+1],Q[W+2],ie[W+2],O[W+2],V[W+2],Z[W+2],Q[W+3],ie[W+3],O[W+3],V[W+3],Z[W+3]]}},{key:"transformColor",value:function(W,Y){var Q=this.getColorTransform(W);return Q=Object(S.multiply)(Q,Y),this.setColorTransform(W,Q),this}},{key:"setFillColor",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");typeof Y=="string"&&(Y=Object(C.default)(Y)),Y[3]>0&&(this[P]=!0),this[z].fillColor.set(Y.map(function(Q){return Math.round(255*Q)}),4*W)}},{key:"setStrokeColor",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");typeof Y=="string"&&(Y=Object(C.default)(Y)),Y[3]>0&&(this[P]=!0),this[z].strokeColor.set(Y.map(function(Q){return Math.round(255*Q)}),4*W)}},{key:"getCloudRGBA",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=4;var Y=this[z],Q=Y.fillColor,ie=Y.strokeColor,O=[Q[W],Q[W+1],Q[W+2],Q[W+3]],V=[ie[W],ie[W+1],ie[W+2],ie[W+3]];return O[3]/=255,V[3]/=255,{fill:"rgba(".concat(O.join(),")"),stroke:"rgba(".concat(V.join(),")")}}},{key:"grayscale",value:function(W,Y){this.transformColor(W,Object(S.grayscale)(Y)),this._getFilter(W).push("grayscale(".concat(100*Y,"%)"))}},{key:"brightness",value:function(W,Y){this.transformColor(W,Object(S.brightness)(Y)),this._getFilter(W).push("brightness(".concat(100*Y,"%)"))}},{key:"saturate",value:function(W,Y){this.transformColor(W,Object(S.saturate)(Y)),this._getFilter(W).push("saturate(".concat(100*Y,"%)"))}},{key:"contrast",value:function(W,Y){this.transformColor(W,Object(S.contrast)(Y)),this._getFilter(W).push("contrast(".concat(100*Y,"%)"))}},{key:"invert",value:function(W,Y){this.transformColor(W,Object(S.invert)(Y)),this._getFilter(W).push("invert(".concat(100*Y,"%)"))}},{key:"sepia",value:function(W,Y){this.transformColor(W,Object(S.sepia)(Y)),this._getFilter(W).push("sepia(".concat(100*Y,"%)"))}},{key:"opacity",value:function(W,Y){this.transformColor(W,Object(S.opacity)(Y)),this._getFilter(W).push("opacity(".concat(100*Y,"%)"))}},{key:"hueRotate",value:function(W,Y){this.transformColor(W,Object(S.hueRotate)(Y)),this._getFilter(W).push("hue-rotate(".concat(Y,"deg)"))}},{key:"setTransform",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=3,Y==null&&(Y=[1,0,0,1,0,0]);var Q=this[z],ie=Q.transform0,O=Q.transform1;return ie.set([Y[0],Y[2],Y[4]],W),O.set([Y[1],Y[3],Y[5]],W),this}},{key:"getTransform",value:function(W){if(W>=this[m]||W<0)throw new Error("Out of range.");W*=3;var Y=this[z],Q=Y.transform0,ie=Y.transform1,O=[Q[W],ie[W],Q[W+1],ie[W+1],Q[W+2],ie[W+2]];return O}},{key:"getTextureFrame",value:function(W){return this[R][this[z].frameIndex[W]]}},{key:"setTextureFrames",value:function(){var W=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],Y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(W.length>12)throw new Error("Max frames exceed. Allow 12 frames.");if(W.length){var Q=this[p];Q.setTexture(W[0],Y)}this[R]=W,this[b]=Y}},{key:"setFrameIndex",value:function(W,Y){if(W>=this[m]||W<0)throw new Error("Out of range.");var Q=this[R].length;if(Q<=0)throw new Error("No frames");this[z].frameIndex[W]=Y%Q}},{key:"setProgram",value:function(W){this[p].setProgram(W)}},{key:"transform",value:function(W,Y){var Q=this.getTransform(W);return Y=y.mat2d.multiply(Array.of(0,0,0,0,0,0),Q,Y),this.setTransform(W,Y),this}},{key:"translate",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1],V=y.mat2d.create();return V=y.mat2d.translate(Array.of(0,0,0,0,0,0),V,[ie,O]),this.transform(W,V)}},{key:"rotate",value:function(W,Y){var Q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],ie=u()(Q,2),O=ie[0],V=ie[1],Z=y.mat2d.create();return Z=y.mat2d.translate(Array.of(0,0,0,0,0,0),Z,[O,V]),Z=y.mat2d.rotate(Array.of(0,0,0,0,0,0),Z,Y),Z=y.mat2d.translate(Array.of(0,0,0,0,0,0),Z,[-O,-V]),this.transform(W,Z)}},{key:"scale",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1],V=O===void 0?ie:O,Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],$=u()(Z,2),ee=$[0],se=$[1],ce=y.mat2d.create();return ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[ee,se]),ce=y.mat2d.scale(Array.of(0,0,0,0,0,0),ce,[ie,V]),ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[-ee,-se]),this.transform(W,ce)}},{key:"skew",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1],V=O===void 0?ie:O,Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],$=u()(Z,2),ee=$[0],se=$[1],ce=y.mat2d.create();return ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[ee,se]),ce=y.mat2d.multiply(Array.of(0,0,0,0,0,0),ce,y.mat2d.fromValues(1,Math.tan(V),Math.tan(ie),1,0,0)),ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),ce,[-ee,-se]),this.transform(W,ce)}},{key:"isPointCollision",value:function(W,Y){var Q,ie=u()(Y,2),O=ie[0],V=ie[1],Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"both",$=this.getTransform(W),ee=Object(E.transformPoint)([O,V],y.mat2d.invert(Array.of(0,0,0,0,0,0),$));return(Q=this[p]).isPointCollision.apply(Q,c()(ee).concat([Z]))}},{key:"isPointInFill",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1];return this.isPointCollision(W,[ie,O],"fill")}},{key:"isPointInStroke",value:function(W,Y){var Q=u()(Y,2),ie=Q[0],O=Q[1];return this.isPointCollision(W,[ie,O],"stroke")}},{key:"bufferSize",get:function(){return this[z].bufferSize}},{key:"mesh",get:function(){return this[p]},set:function(W){this[p]=W,this[R]&&this.setTextureFrames(this[R],this[b])}},{key:"hasCloudColor",get:function(){return this[P]}},{key:"hasCloudFilter",get:function(){return this[D]}},{key:"enableBlend",get:function(){return this[p].enableBlend||this[M]}},{key:"amount",get:function(){return this[m]},set:function(W){var Y=this[m];W!==Y&&(W>this[z].bufferSize&&(this[z]=j(Math.max(W,this[z].bufferSize+1e3),this[z])),this[m]=W,W>Y&&this.initBuffer(Y))}},{key:"meshData",get:function(){var W=this[p].meshData,Y=W.attributes,Q=W.cells,ie=W.positions,O=W.textureCoord,V=W.uniforms,Z=this[R],$={attributes:T({},Y),cells:Q,positions:ie,textureCoord:O,uniforms:T({},V),instanceCount:this[m],enableBlend:this.enableBlend};Z.length&&Z.forEach(function(w,I){$.uniforms["u_texFrame".concat(I)]=w});var ee=this[z],se=ee.transform0,ce=ee.transform1,me=ee.color0,pe=ee.color1,B=ee.color2,F=ee.color3,J=ee.color4,oe=ee.fillColor,K=ee.strokeColor,te=ee.frameIndex;return this[p].uniforms.u_texSampler&&($.attributes.a_frameIndex={data:te,divisor:1}),$.attributes.a_transform0={data:se,divisor:1},$.attributes.a_transform1={data:ce,divisor:1},$.attributes.a_colorCloud0={data:me,divisor:1},$.attributes.a_colorCloud1={data:pe,divisor:1},$.attributes.a_colorCloud2={data:B,divisor:1},$.attributes.a_colorCloud3={data:F,divisor:1},$.attributes.a_colorCloud4={data:J,divisor:1},this.hasCloudColor&&($.attributes.a_fillCloudColor={data:oe,divisor:1},$.attributes.a_strokeCloudColor={data:K,divisor:1}),$}},{key:"program",get:function(){return this[p].program}}]),k}()},function(e,t,n){n.r(t),n.d(t,"multiply",function(){return o}),n.d(t,"grayscale",function(){return a}),n.d(t,"brightness",function(){return c}),n.d(t,"saturate",function(){return l}),n.d(t,"contrast",function(){return u}),n.d(t,"invert",function(){return h}),n.d(t,"sepia",function(){return d}),n.d(t,"opacity",function(){return f}),n.d(t,"hueRotate",function(){return g});var i=n(42);n(1).glMatrix.setMatrixArrayType(Array);function o(y,S){var E=[],C=y[0],L=y[1],T=y[2],p=y[3],m=y[4],M=y[5],v=y[6],R=y[7],b=y[8],P=y[9],D=y[10],z=y[11],j=y[12],A=y[13],k=y[14],N=y[15],W=y[16],Y=y[17],Q=y[18],ie=y[19],O=S[0],V=S[1],Z=S[2],$=S[3],ee=S[4];return E[0]=O*C+V*M+Z*D+$*N,E[1]=O*L+V*v+Z*z+$*W,E[2]=O*T+V*R+Z*j+$*Y,E[3]=O*p+V*b+Z*A+$*Q,E[4]=O*m+V*P+Z*k+$*ie+ee,O=S[5],V=S[6],Z=S[7],$=S[8],ee=S[9],E[5]=O*C+V*M+Z*D+$*N,E[6]=O*L+V*v+Z*z+$*W,E[7]=O*T+V*R+Z*j+$*Y,E[8]=O*p+V*b+Z*A+$*Q,E[9]=O*m+V*P+Z*k+$*ie+ee,O=S[10],V=S[11],Z=S[12],$=S[13],ee=S[14],E[10]=O*C+V*M+Z*D+$*N,E[11]=O*L+V*v+Z*z+$*W,E[12]=O*T+V*R+Z*j+$*Y,E[13]=O*p+V*b+Z*A+$*Q,E[14]=O*m+V*P+Z*k+$*ie+ee,O=S[15],V=S[16],Z=S[17],$=S[18],ee=S[19],E[15]=O*C+V*M+Z*D+$*N,E[16]=O*L+V*v+Z*z+$*W,E[17]=O*T+V*R+Z*j+$*Y,E[18]=O*p+V*b+Z*A+$*Q,E[19]=O*m+V*P+Z*k+$*ie+ee,E}function a(y){y=Object(i.clamp)(0,1,y);var S=.2126*y,E=.7152*y,C=.0722*y;return[S+1-y,E,C,0,0,S,E+1-y,C,0,0,S,E,C+1-y,0,0,0,0,0,1,0]}function c(y){return[y,0,0,0,0,0,y,0,0,0,0,0,y,0,0,0,0,0,1,0]}function l(y){var S=.2126*(1-y),E=.7152*(1-y),C=.0722*(1-y);return[S+y,E,C,0,0,S,E+y,C,0,0,S,E,C+y,0,0,0,0,0,1,0]}function u(y){var S=.5*(1-y);return[y,0,0,0,S,0,y,0,0,S,0,0,y,0,S,0,0,0,1,0]}function h(y){var S=1-2*y;return[S,0,0,0,y,0,S,0,0,y,0,0,S,0,y,0,0,0,1,0]}function d(y){return[1-.607*y,.769*y,.189*y,0,0,.349*y,1-.314*y,.168*y,0,0,.272*y,.534*y,1-.869*y,0,0,0,0,0,1,0]}function f(y){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,y,0]}function g(y){var S=y/180*Math.PI,E=Math.cos(S),C=Math.sin(S),L=.2126,T=.7152,p=.0722;return[L+E*(1-L)+C*-L,T+E*-T+C*-T,p+E*-p+C*(1-p),0,0,L+E*-L+C*.143,T+E*(1-T)+C*.14,p+E*-p+C*-.283,0,0,L+E*-L+C*-.7874,T+E*-T+C*T,p+E*(1-p)+C*p,0,0,0,0,0,1,0]}},function(e,t,n){n.r(t),n.d(t,"default",function(){return a});var i=n(48),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(c){var l=o()(c);if(!l||!l.length)throw new TypeError("Invalid color value.");return[l[0]/255,l[1]/255,l[2]/255,l[3]]}},function(e,t,n){var i=n(49),o=n(53),a=n(55);e.exports=function(l){var u,h=i(l);return h.space?(u=Array(3),u[0]=a(h.values[0],0,255),u[1]=a(h.values[1],0,255),u[2]=a(h.values[2],0,255),h.space[0]==="h"&&(u=o.rgb(u)),u.push(a(h.alpha,0,1)),u):[]}},function(e,t,n){(function(i){var o=n(50),a=n(51),c=n(52);e.exports=u;var l={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function u(h){var d,f=[],g=1,y;if(typeof h=="string")if(o[h])f=o[h].slice(),y="rgb";else if(h==="transparent")g=0,y="rgb",f=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(h)){var S=h.slice(1),E=S.length,C=E<=4;g=1,C?(f=[parseInt(S[0]+S[0],16),parseInt(S[1]+S[1],16),parseInt(S[2]+S[2],16)],E===4&&(g=parseInt(S[3]+S[3],16)/255)):(f=[parseInt(S[0]+S[1],16),parseInt(S[2]+S[3],16),parseInt(S[4]+S[5],16)],E===8&&(g=parseInt(S[6]+S[7],16)/255)),f[0]||(f[0]=0),f[1]||(f[1]=0),f[2]||(f[2]=0),y="rgb"}else if(d=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(h)){var L=d[1],T=L==="rgb",S=L.replace(/a$/,"");y=S;var E=S==="cmyk"?4:S==="gray"?1:3;f=d[2].trim().split(/\s*,\s*/).map(function(v,R){if(/%$/.test(v))return R===E?parseFloat(v)/100:S==="rgb"?parseFloat(v)*255/100:parseFloat(v);if(S[R]==="h"){if(/deg$/.test(v))return parseFloat(v);if(l[v]!==void 0)return l[v]}return parseFloat(v)}),L===S&&f.push(1),g=T||f[E]===void 0?1:f[E],f=f.slice(0,E)}else h.length>10&&/[0-9](?:\s|\/)/.test(h)&&(f=h.match(/([0-9]+)/g).map(function(m){return parseFloat(m)}),y=h.match(/([a-z])/ig).join("").toLowerCase());else if(!isNaN(h))y="rgb",f=[h>>>16,(h&65280)>>>8,h&255];else if(a(h)){var p=c(h.r,h.red,h.R,null);p!==null?(y="rgb",f=[p,c(h.g,h.green,h.G),c(h.b,h.blue,h.B)]):(y="hsl",f=[c(h.h,h.hue,h.H),c(h.s,h.saturation,h.S),c(h.l,h.lightness,h.L,h.b,h.brightness)]),g=c(h.a,h.alpha,h.opacity,1),h.opacity!=null&&(g/=100)}else(Array.isArray(h)||i.ArrayBuffer&&ArrayBuffer.isView&&ArrayBuffer.isView(h))&&(f=[h[0],h[1],h[2]],y="rgb",g=h.length===4?h[3]:1);return{space:y,values:f,alpha:g}}}).call(this,n(38))},function(e,t,n){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,n){var i=Object.prototype.toString;e.exports=function(o){var a;return i.call(o)==="[object Object]"&&(a=Object.getPrototypeOf(o),a===null||a===Object.getPrototypeOf({}))}},function(e,t){e.exports=function(){for(var n=0;n<arguments.length;n++)if(arguments[n]!==void 0)return arguments[n]}},function(e,t,n){var i=n(54);e.exports={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(o){var a=o[0]/360,c=o[1]/100,l=o[2]/100,u,h,d,f,g;if(c===0)return g=l*255,[g,g,g];l<.5?h=l*(1+c):h=l+c-l*c,u=2*l-h,f=[0,0,0];for(var y=0;y<3;y++)d=a+1/3*-(y-1),d<0?d++:d>1&&d--,6*d<1?g=u+(h-u)*6*d:2*d<1?g=h:3*d<2?g=u+(h-u)*(2/3-d)*6:g=u,f[y]=g*255;return f}},i.hsl=function(o){var a=o[0]/255,c=o[1]/255,l=o[2]/255,u=Math.min(a,c,l),h=Math.max(a,c,l),d=h-u,f,g,y;return h===u?f=0:a===h?f=(c-l)/d:c===h?f=2+(l-a)/d:l===h&&(f=4+(a-c)/d),f=Math.min(f*60,360),f<0&&(f+=360),y=(u+h)/2,h===u?g=0:y<=.5?g=d/(h+u):g=d/(2-h-u),[f,g*100,y*100]}},function(e,t,n){e.exports={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}},function(e,t){e.exports=n;function n(i,o,a){return o<a?i<o?o:i>a?a:i:i<a?a:i>o?o:i}},function(e,t,n){n.r(t),n.d(t,"default",function(){return z});var i=n(19),o=n.n(i),a=n(57),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(58),g=n.n(f),y=n(59),S=n.n(y),E=n(60),C=n.n(E),L=n(61),T=n(63),p=n.n(T),m=n(70),M=n(72);n(1).glMatrix.setMatrixArrayType(Array);var v=Symbol("contours"),R=Symbol("path"),b=Symbol("simplify"),P=Symbol("scale"),D=2*Math.PI,z=function(){function j(){var A=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};u()(this,j),typeof A=="string"&&(A={path:A}),A.path?this[R]=g()(A.path):this[R]=[],this[v]=null,this[b]=A.simplify!=null?A.simplify:0,this[P]=A.scale!=null?A.scale:2}return d()(j,[{key:"normalize",value:function(){var k,N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,Y=Object(L.default)(C()(this[R])).map(function(Q){for(var ie=c()(Q),O=ie[0],V=ie.slice(1),Z=[O],$=0;$<V.length;$+=2){var ee=V[$]-N,se=V[$+1]-W;Z.push(ee,se)}return Z});return this.beginPath(),(k=this[R]).push.apply(k,o()(Y)),this}},{key:"getPointAtLength",value:function(k){return this.contours?Object(m.getPointAtLength)(this[v],k):null}},{key:"getTotalLength",value:function(){return this.contours?Object(m.getTotalLength)(this[v]):0}},{key:"addPath",value:function(k){var N;this[v]=null,typeof k=="string"&&(k=g()(k)),(N=this[R]).push.apply(N,o()(k))}},{key:"beginPath",value:function(){this[R]=[],this[v]=null}},{key:"clear",value:function(){this.beginPath()}},{key:"ellipse",value:function(k,N,W,Y,Q,ie,O){var V=arguments.length>7&&arguments[7]!==void 0?arguments[7]:0;if(ie+=Q,O+=Q,!(W<=0||Y<=0||O===ie)){O<ie&&(O=ie+D+(O-ie)%D),O-ie>D&&(O=ie+D);var Z=O-ie;Z>=D&&(O-=.001);var $=this[R].length>0&&Z<D?"L":"M",ee=Object(M.getPoint)(k,N,W,Y,ie),se=Object(M.getPoint)(k,N,W,Y,O),ce=+!V,me=Z>Math.PI?1:0;V&&(me=1-me),$+=ee.join(" "),$+="A".concat(W," ").concat(Y," 0 ").concat(me," ").concat(ce," ").concat(se.join(" ")),Z>=D&&($+="Z"),this.addPath($)}}},{key:"arc",value:function(k,N,W,Y,Q){var ie=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;return this.ellipse(k,N,W,W,0,Y,Q,ie)}},{key:"arcTo",value:function(k,N,W,Y,Q,ie,O){this[v]=null,this[R].push(["A",k,N,W,Y,Q,ie,O])}},{key:"moveTo",value:function(k,N){this[v]=null,this[R].push(["M",k,N])}},{key:"lineTo",value:function(k,N){this[v]=null,this[R].push(["L",k,N])}},{key:"bezierCurveTo",value:function(k,N,W,Y,Q,ie){this[v]=null,this[R].push(["C",k,N,W,Y,Q,ie])}},{key:"quadraticCurveTo",value:function(k,N,W,Y){this[v]=null,this[R].push(["Q",k,N,W,Y])}},{key:"rect",value:function(k,N,W,Y){var Q="M".concat(k," ").concat(N,"L").concat(k+W," ").concat(N,"L").concat(k+W," ").concat(N+Y,"L").concat(k," ").concat(N+Y,"Z");this.addPath(Q)}},{key:"closePath",value:function(){this[v]=null;var k=[],N=this[R].length;N>0&&(k=this[R][N-1]),k[0]!=="Z"&&k[0]!=="z"&&this[R].push(["Z"])}},{key:"contours",get:function(){var k=null;if(!this[v]&&this[R]){var N=Object(L.default)(C()(this[R]));this[v]=p()(N,this[P],this[b]),this[v].path=N,this[v].simplify=this[b],this[v].scale=this[P]}return this[v]&&(k=this[v].map(function(W){return o()(W)}),k.path=this[v].path,k.simplify=this[v].simplify,k.scale=this[v].scale),k}},{key:"path",get:function(){return this[R]}},{key:"simplify",get:function(){return this[b]}},{key:"boundingBox",get:function(){var k=this.contours;if(k&&k.length){var N=k.reduce(function(W,Y){return[].concat(o()(W),o()(Y))});return S()(N)}return[[0,0],[0,0]]}},{key:"boundingCenter",get:function(){var k=this.boundingBox;return k?[.5*(k[0][0]+k[1][0]),.5*(k[0][1]+k[1][1])]:[0,0]}}]),j}()},function(e,t,n){var i=n(14),o=n(21),a=n(16),c=n(18);function l(u){return i(u)||o(u)||a(u)||c()}e.exports=l},function(e,t){e.exports=o;var n={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},i=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function o(l){var u=[];return l.replace(i,function(h,d,f){var g=d.toLowerCase();for(f=c(f),g=="m"&&f.length>2&&(u.push([d].concat(f.splice(0,2))),g="l",d=d=="m"?"l":"L");;){if(f.length==n[g])return f.unshift(d),u.push(f);if(f.length<n[g])throw new Error("malformed path data");u.push([d].concat(f.splice(0,n[g])))}}),u}var a=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function c(l){var u=l.match(a);return u?u.map(Number):[]}},function(e,t,n){e.exports=i;function i(o){var a=o.length;if(a===0)return[[],[]];for(var c=o[0].length,l=o[0].slice(),u=o[0].slice(),h=1;h<a;++h)for(var d=o[h],f=0;f<c;++f){var g=d[f];l[f]=Math.min(l[f],g),u[f]=Math.max(u[f],g)}return[l,u]}},function(e,t){e.exports=n;function n(i){var o=0,a=0,c=0,l=0;return i.map(function(u){u=u.slice();var h=u[0],d=h.toUpperCase();if(h!=d)switch(u[0]=d,h){case"a":u[6]+=c,u[7]+=l;break;case"v":u[1]+=l;break;case"h":u[1]+=c;break;default:for(var f=1;f<u.length;)u[f++]+=c,u[f++]+=l}switch(d){case"Z":c=o,l=a;break;case"H":c=u[1];break;case"V":l=u[1];break;case"M":c=o=u[1],l=a=u[2];break;default:c=u[u.length-2],l=u[u.length-1]}return u})}},function(e,t,n){n.r(t),n.d(t,"default",function(){return c});var i=n(13),o=n.n(i),a=n(62);n(1).glMatrix.setMatrixArrayType(Array);function c(h){for(var d,f=[],g=0,y=0,S=0,E=0,C=null,L=null,T=0,p=0,m=0,M=h.length;m<M;m++){var v=h[m],R=v[0];switch(R){case"M":S=v[1],E=v[2];break;case"A":var b=Object(a.default)(T,p,v[6],v[7],v[4],v[5],v[1],v[2],v[3]);if(!b.length)continue;b=b.map(function(A){var k=o()(A,8);k[0],k[1];var N=k[2],W=k[3],Y=k[4],Q=k[5],ie=k[6],O=k[7];return{x1:N,y1:W,x2:Y,y2:Q,x:ie,y:O}});for(var P=0,D;P<b.length;P++)D=b[P],v=["C",D.x1,D.y1,D.x2,D.y2,D.x,D.y],P<b.length-1&&f.push(v);break;case"S":var z=T,j=p;(d=="C"||d=="S")&&(z+=z-g,j+=j-y),v=["C",z,j,v[1],v[2],v[3],v[4]];break;case"T":d=="Q"||d=="T"?(C=T*2-C,L=p*2-L):(C=T,L=p),v=u(T,p,C,L,v[1],v[2]);break;case"Q":C=v[1],L=v[2],v=u(T,p,v[1],v[2],v[3],v[4]);break;case"L":v=l(T,p,v[1],v[2]);break;case"H":v=l(T,p,v[1],p);break;case"V":v=l(T,p,T,v[1]);break;case"Z":v=l(T,p,S,E);break}d=R,T=v[v.length-2],p=v[v.length-1],v.length>4?(g=v[v.length-4],y=v[v.length-3]):(g=T,y=p),f.push(v)}return f}function l(h,d,f,g){return["C",h,d,f,g,f,g]}function u(h,d,f,g,y,S){return["C",h/3+2/3*f,d/3+2/3*g,y/3+2/3*f,S/3+2/3*g,y,S]}},function(e,t,n){n.r(t),n.d(t,"default",function(){return l}),n(1).glMatrix.setMatrixArrayType(Array);var i=Math.PI*2;function o(u,h,d,f){var g=u*f-h*d<0?-1:1,y=u*d+h*f;return y>1&&(y=1),y<-1&&(y=-1),g*Math.acos(y)}function a(u,h,d,f,g,y,S,E,C,L){var T=L*(u-d)/2+C*(h-f)/2,p=-C*(u-d)/2+L*(h-f)/2,m=S*S,M=E*E,v=T*T,R=p*p,b=m*M-m*R-M*v;b<0&&(b=0),b/=m*R+M*v,b=Math.sqrt(b)*(g===y?-1:1);var P=b*S/E*p,D=b*-E/S*T,z=L*P-C*D+(u+d)/2,j=C*P+L*D+(h+f)/2,A=(T-P)/S,k=(p-D)/E,N=(-T-P)/S,W=(-p-D)/E,Y=o(1,0,A,k),Q=o(A,k,N,W);return y===0&&Q>0&&(Q-=i),y===1&&Q<0&&(Q+=i),[z,j,Y,Q]}function c(u,h){var d=1.3333333333333333*Math.tan(h/4),f=Math.cos(u),g=Math.sin(u),y=Math.cos(u+h),S=Math.sin(u+h);return[f,g,f-g*d,g+f*d,y+S*d,S-y*d,y,S]}function l(u,h,d,f,g,y,S,E,C){var L=Math.sin(C*i/360),T=Math.cos(C*i/360),p=T*(u-d)/2+L*(h-f)/2,m=-L*(u-d)/2+T*(h-f)/2;if(p===0&&m===0)return[];if(S===0||E===0)return[];S=Math.abs(S),E=Math.abs(E);var M=p*p/(S*S)+m*m/(E*E);M>1&&(S*=Math.sqrt(M),E*=Math.sqrt(M));var v=a(u,h,d,f,g,y,S,E,L,T),R=[],b=v[2],P=v[3],D=Math.max(Math.ceil(Math.abs(P)/(i/4)),1);P/=D;for(var z=0;z<D;z++)R.push(c(b,P)),b+=P;return R.map(function(j){for(var A=0;A<j.length;A+=2){var k=j[A+0],N=j[A+1];k*=S,N*=E;var W=T*k-L*N,Y=L*k+T*N;j[A+0]=W+v[0],j[A+1]=Y+v[1]}return j})}},function(e,t,n){n(1).glMatrix.setMatrixArrayType(Array);var i=n(64),o=n(66),a=o.copy,c=n(67);function l(g,y,S){return g[0]=y,g[1]=S,g}var u=[0,0],h=[0,0],d=[0,0];function f(g,y,S,E){i(S,l(u,E[1],E[2]),l(h,E[3],E[4]),l(d,E[5],E[6]),y,g)}e.exports=function(y,S,E){var C=[],L=[],T=[0,0];return y.forEach(function(p,m,M){if(p[0]==="M")a(T,p.slice(1)),L.length>0&&(C.push(L),L=[]);else if(p[0]==="C")f(L,S,T,p),l(T,p[5],p[6]);else throw new Error("illegal type in SVG: "+p[0])}),L.length>0&&C.push(L),C.map(function(p){return c(p,E||0)})}},function(e,t,n){e.exports=n(65)()},function(e,t){function n(o){return[o[0],o[1]]}function i(o,a){return[o,a]}e.exports=function(a){a=a||{};var c=typeof a.recursion=="number"?a.recursion:8,l=typeof a.epsilon=="number"?a.epsilon:11920929e-14,u=typeof a.pathEpsilon=="number"?a.pathEpsilon:1,h=typeof a.angleEpsilon=="number"?a.angleEpsilon:.01,d=a.angleTolerance||0,f=a.cuspLimit||0;return function(E,C,L,T,p,m){m||(m=[]),p=typeof p=="number"?p:1;var M=u/p;return M*=M,g(E,C,L,T,m,M),m};function g(S,E,C,L,T,p){T.push(n(S));var m=S[0],M=S[1],v=E[0],R=E[1],b=C[0],P=C[1],D=L[0],z=L[1];y(m,M,v,R,b,P,D,z,T,p,0),T.push(n(L))}function y(S,E,C,L,T,p,m,M,v,R,b){if(!(b>c)){var P=Math.PI,D=(S+C)/2,z=(E+L)/2,j=(C+T)/2,A=(L+p)/2,k=(T+m)/2,N=(p+M)/2,W=(D+j)/2,Y=(z+A)/2,Q=(j+k)/2,ie=(A+N)/2,O=(W+Q)/2,V=(Y+ie)/2;if(b>0){var Z=m-S,$=M-E,ee=Math.abs((C-m)*$-(L-M)*Z),se=Math.abs((T-m)*$-(p-M)*Z),ce,me;if(ee>l&&se>l){if((ee+se)*(ee+se)<=R*(Z*Z+$*$)){if(d<h){v.push(i(O,V));return}var pe=Math.atan2(p-L,T-C);if(ce=Math.abs(pe-Math.atan2(L-E,C-S)),me=Math.abs(Math.atan2(M-p,m-T)-pe),ce>=P&&(ce=2*P-ce),me>=P&&(me=2*P-me),ce+me<d){v.push(i(O,V));return}if(f!==0){if(ce>f){v.push(i(C,L));return}if(me>f){v.push(i(T,p));return}}}}else if(ee>l){if(ee*ee<=R*(Z*Z+$*$)){if(d<h){v.push(i(O,V));return}if(ce=Math.abs(Math.atan2(p-L,T-C)-Math.atan2(L-E,C-S)),ce>=P&&(ce=2*P-ce),ce<d){v.push(i(C,L)),v.push(i(T,p));return}if(f!==0&&ce>f){v.push(i(C,L));return}}}else if(se>l){if(se*se<=R*(Z*Z+$*$)){if(d<h){v.push(i(O,V));return}if(ce=Math.abs(Math.atan2(M-p,m-T)-Math.atan2(p-L,T-C)),ce>=P&&(ce=2*P-ce),ce<d){v.push(i(C,L)),v.push(i(T,p));return}if(f!==0&&ce>f){v.push(i(T,p));return}}}else if(Z=O-(S+m)/2,$=V-(E+M)/2,Z*Z+$*$<=R){v.push(i(O,V));return}}y(S,E,D,z,W,Y,O,V,v,R,b+1),y(O,V,Q,ie,k,N,m,M,v,R,b+1)}}}},function(e,t,n){n.r(t),n.d(t,"create",function(){return a}),n.d(t,"clone",function(){return o}),n.d(t,"copy",function(){return c}),n.d(t,"scaleAndAdd",function(){return l}),n.d(t,"dot",function(){return u}),n.d(t,"rotate",function(){return h}),n.d(t,"cross",function(){return d}),n.d(t,"sub",function(){return f}),n.d(t,"add",function(){return g}),n.d(t,"computeMiter",function(){return C}),n.d(t,"normal",function(){return L}),n.d(t,"direction",function(){return T});var i=n(1);n(1).glMatrix.setMatrixArrayType(Array);function o(p){return[p[0],p[1]]}function a(){return[0,0]}var c=i.vec2.copy,l=i.vec2.scaleAndAdd,u=i.vec2.dot,h=i.vec2.rotate,d=i.vec2.cross,f=i.vec2.sub,g=i.vec2.add,y=i.vec2.normalize,S=i.vec2.set,E=a();function C(p,m,M,v,R){g(p,M,v),y(p,p),S(m,-p[1],p[0]),S(E,-M[1],M[0]);var b=R/u(m,E);return Math.abs(b)}function L(p,m){return S(p,-m[1],m[0]),p}function T(p,m,M){return f(p,m,M),y(p,p),p}},function(e,t,n){var i=n(68),o=n(69);e.exports=function(c,l){return c=i(c,l),c=o(c,l),c},e.exports.radialDistance=i,e.exports.douglasPeucker=o},function(e,t){function n(i,o){var a=i[0]-o[0],c=i[1]-o[1];return a*a+c*c}e.exports=function(o,a){if(o.length<=1)return o;a=typeof a=="number"?a:1;for(var c=a*a,l=o[0],u=[l],h,d=1,f=o.length;d<f;d++)h=o[d],n(h,l)>c&&(u.push(h),l=h);return l!==h&&u.push(h),u}},function(e,t){function n(o,a,c){var l=a[0],u=a[1],h=c[0]-l,d=c[1]-u;if(h!==0||d!==0){var f=((o[0]-l)*h+(o[1]-u)*d)/(h*h+d*d);f>1?(l=c[0],u=c[1]):f>0&&(l+=h*f,u+=d*f)}return h=o[0]-l,d=o[1]-u,h*h+d*d}function i(o,a,c,l,u){for(var h=l,d,f=a+1;f<c;f++){var g=n(o[f],o[a],o[c]);g>h&&(d=f,h=g)}h>l&&(d-a>1&&i(o,a,d,l,u),u.push(o[d]),c-d>1&&i(o,d,c,l,u))}e.exports=function(a,c){if(a.length<=1)return a;c=typeof c=="number"?c:1;var l=c*c,u=a.length-1,h=[a[0]];return i(a,0,u,l,h),h.push(a[u]),h}},function(e,t,n){n.r(t),n.d(t,"getTotalLength",function(){return c}),n.d(t,"getPointAtLength",function(){return u}),n.d(t,"getDashContours",function(){return h});var i=n(19),o=n.n(i),a=n(71);n(1).glMatrix.setMatrixArrayType(Array);function c(d){if(d.totalLength!=null)return d.totalLength;var f=0;return d.forEach(function(g){for(var y=g[0],S=1;S<g.length;S++){var E=g[S];f+=Object(a.distance)(y,E),y=E}}),d.totalLength=f,f}function l(d,f){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(f=Number(f),!Number.isFinite(f))throw new TypeError("Failed to execute 'getPointAtLength' on figure: The provided float value is non-finite.");if(f<=0)throw new TypeError("Length must > 0");var y=c(d);if(f>=y){var S=d[d.length-1],E=S[S.length-2],C=S[S.length-1],L=Math.atan2(C[1]-E[1],C[0]-E[0]);return{current:d.map(function(k){return o()(k)}),point:{x:C[0],y:C[1],angle:L}}}for(var T=[],p=0;p<d.length;p++){T[p]=[];for(var m=d[p],M=m[0],v=1;v<m.length;v++){var R=m[v],b=Object(a.distance)(M,R);if(f<b){var P=f/b,D=Math.atan2(R[1]-M[1],R[0]-M[0]),z={x:M[0]*(1-P)+R[0]*P,y:M[1]*(1-P)+R[1]*P,angle:D};if(T[p].push(M),f>0&&T[p].push([z.x,z.y]),!g)return{current:T,point:z};for(var j=[],A=p;p<d.length;p++){for(j[p-A]=[],p===A&&j[0].push([z.x,z.y]);v<m.length;v++)j[p-A].push(m[v]);v=0}return{current:T,point:z,rest:j}}f-=b,T[p].push(M),M=R}}}function u(d,f){if(f=Number(f),!Number.isFinite(f))throw new TypeError("Failed to execute 'getPointAtLength' on figure: The provided float value is non-finite.");if(d.length<=0)return{x:0,y:0,angle:0};if(f<=0){var g=d[0][0],y=d[0][1],S=Math.atan2(y[1]-g[1],y[0]-g[0]);return{x:g[0],y:g[1],angle:S}}return l(d,f,!1).point}function h(d,f,g){var y=0,S=f[0],E=d,C=[],L=f.length;if(g>0){do g-=f[y%L],y++;while(g>0);g<0&&(S=-g,y--)}else if(g<0){y=-1;do g+=f[y%L+L-1],y--;while(g<0);g>=0&&(y++,S=f[y%L+L-1]-g)}do{var T=l(E,S);E=T.rest,++y%2&&C.push.apply(C,o()(T.current));var p=y%L;p<0&&(p+=L),S=f[p]}while(E);return C}},function(e,t,n){n.r(t),n.d(t,"normalize",function(){return a}),n.d(t,"distance",function(){return c});var i=n(13),o=n.n(i);n(1).glMatrix.setMatrixArrayType(Array);function a(l,u,h,d){var f=o()(l,3),g=f[0],y=f[1],S=f[2];return g=g*2/u-1,y=1-y*2/h,Number.isFinite(d)?(S=S*2/d-1,[g,y,S]):[g,y]}function c(l,u){var h=o()(l,3),d=h[0],f=h[1],g=h[2],y=g===void 0?0:g,S=o()(u,3),E=S[0],C=S[1],L=S[2],T=L===void 0?0:L;return Math.hypot(E-d,C-f,T-y)}},function(e,t,n){n.r(t),n.d(t,"getPoint",function(){return o}),n(1).glMatrix.setMatrixArrayType(Array);var i=Math.PI*2;function o(a,c,l,u,h){h%=i,h<0&&(h+=i);var d=Math.tan(h);if(Math.abs(d)<1e5){var f=c-d*a,g=1/Math.pow(l,2)+Math.pow(d,2)/Math.pow(u,2),y=-1;(h<=Math.PI/2||h>3*Math.PI/2)&&(y=1);var S=y*Math.sqrt(1/g)+a,E=d*S+f;return[S,E]}return h<Math.PI?[a,c+u]:[a,c-u]}},function(e,t,n){n.r(t),n.d(t,"default",function(){return _});var i=n(74),o=n.n(i),a=n(19),c=n.n(a),l=n(23),u=n.n(l),h=n(24),d=n.n(h),f=n(13),g=n.n(f),y=n(1),S=n(59),E=n.n(S),C=n(76),L=n(44),T=n(40),p=n(46),m=n(78),M=n(70),v=n(79),R=n.n(v),b=n(63),P=n.n(b),D=n(47),z=n(56),j=n(37);n(1).glMatrix.setMatrixArrayType(Array);var A=Symbol("mesh"),k=Symbol("contours"),N=Symbol("stroke"),W=Symbol("fill"),Y=Symbol("strokeColor"),Q=Symbol("fillColor"),ie=Symbol("transform"),O=Symbol("invertTransform"),V=Symbol("uniforms"),Z=Symbol("texOptions"),$=Symbol("blend"),ee=Symbol("applyTexture"),se=Symbol("applyTransform"),ce=Symbol("applyGradientTransform"),me=Symbol("applyProgram"),pe=Symbol("gradient"),B=Symbol("filter"),F=Symbol("opacity"),J=Symbol("program"),oe=Symbol("attributes"),K=Symbol("pass"),te=Symbol("clipContext"),w=Symbol("applyClipPath");function I(re,ne){for(var X=re[1][0]-re[0][0],ae=re[1][1]-re[0][1],ue=[],he=0;he<ne.length;he++){var ge=ne[he],Me=[(ge[0]-re[0][0])/X,1-(ge[1]-re[0][1])/ae];ue.push(Me)}return ue}function U(re,ne,X){var ae=g()(re,2),ue=ae[0],he=ae[1],ge=g()(ne,4),Me=ge[0],we=ge[1],be=ge[2],Ie=ge[3],Ce=X.scale;return Ce||(ue/=be,he=1-he/Ie,ue-=Me,he+=we),[ue,he,0]}function G(re,ne,X){var ae=P()(re,ne,X);return ae.path=re,ae.simplify=X,ae.scale=ne,ae}var _=function(){function re(ne){u()(this,re),this[N]=null,this[W]=null,this[ie]=[1,0,0,1,0,0],this[F]=1,this[V]={},this[B]=[],this[$]=null,this[Z]={},this.contours=ne.contours,this[J]=null,this[oe]={},this[K]=[]}return d()(re,[{key:"setProgram",value:function(X){this[J]=X,this[A]&&this[me](X)}},{key:"setAttribute",value:function(X,ae){ae==null?delete this[oe][X]:this[oe][X]=ae}},{key:"getOpacity",value:function(){return this[F]}},{key:"setOpacity",value:function(X){if(X<0||X>1)throw new TypeError("Invalid opacity value.");this[A]&&this[A].positions.forEach(function(ae){ae[2]=1/ae[2]>0?X:-X}),this[F]=X}},{key:"setClipPath",value:function(X){this.clipPath=X,this[V].u_clipSampler&&this[V].u_clipSampler.delete(),this.setUniforms({u_clipSampler:null}),this[A]&&delete this[A].attributes.a_clipUV,X&&this[A]&&this[w]()}},{key:w,value:function(){if(this.clipPath){this[te]||(this[te]=j.default.createCanvas(1,1));var X=g()(this.boundingBox,2),ae=g()(X[0],2),ue=ae[0],he=ae[1],ge=g()(X[1],2),Me=ge[0],we=ge[1];Me&&we&&(this[te].width=Me-ue,this[te].height=we-he);var be=this[te].getContext("2d"),Ie=new Path2D(this.clipPath);be.clearRect(0,0,this[te].width,this[te].height),be.save(),be.translate(-ue,-he),be.fillStyle="white",be.fill(Ie),be.restore(),this[A].clipPath=this[te];var Ce=I(this.boundingBox,this[A].position0);this[A].attributes.a_clipUV=Ce}}},{key:"getPointAtLength",value:function(X){return Object(M.getPointAtLength)(this[k],X)}},{key:"getTotalLength",value:function(){return Object(M.getTotalLength)(this[k])}},{key:me,value:function(X){for(var ae=this[oe],ue=this[A].position0,he=Object.entries(X._attribute),ge=0;ge<he.length;ge++){var Me=g()(he[ge],2),we=Me[0],be=Me[1];if(we!=="a_color"&&we!=="a_sourceRect"&&be!=="ignored"){var Ie=ae[we];if(we==="uv"&&!Ie){var Ce=this[A].boundingBox||E()(ue);this[A].attributes[we]=I(Ce,ue)}else{this[A].attributes[we]=[];for(var Ae=0;Ae<ue.length;Ae++){var Ee=ue[Ae];this[A].attributes[we].push(Ie?Ie(Ee,ge,ue):Array(be.size).fill(0))}}}}}},{key:se,value:function(X,ae){for(var ue=X.positions,he=X.position0,ge=0;ge<ue.length;ge++){var Me=g()(he[ge],2),we=Me[0],be=Me[1],Ie=ue[ge];Ie[0]=we*ae[0]+be*ae[2]+ae[4],Ie[1]=we*ae[1]+be*ae[3]+ae[5]}this._updateMatrix=!1}},{key:ce,value:function(){var X=this[ie],ae=c()(this._radialGradientVector);if(ae){var ue=g()(ae,5),he=ue[0],ge=ue[1],Me=ue[3],we=ue[4];ae[0]=he*X[0]+ge*X[2]+X[4],ae[1]=he*X[1]+ge*X[3]+X[5],ae[3]=Me*X[0]+we*X[2]+X[4],ae[4]=Me*X[1]+we*X[3]+X[5],this[V].u_radialGradientVector=ae}}},{key:ee,value:function(X,ae){function ue(Ee,ke){return Ee==null&&ke==null?!0:Ee==null||ke==null?!1:Ee[0]===ke[0]&&Ee[1]===ke[1]&&Ee[2]===ke[2]&&Ee[3]===ke[3]}var he=this[V].u_texSampler;if(he){var ge=he._img,Me=ge.width,we=ge.height,be=ae.srcRect,Ie=ae.rect||[0,0];if(ae.rotated&&(Ie=[-Ie[1],Ie[0],Ie[3],Ie[2]]),Ie[2]==null&&(Ie[2]=be?be[2]:Me),Ie[3]==null&&(Ie[3]=be?be[3]:we),ae.hidden)X.textureCoord=X.positions.map(function(){return[-1,-1,-1]});else if(!X.textureCoord||!ue(this[Z].rect,ae.rect)||this[Z].hidden!==ae.hidden||this[Z].rotated!==ae.rotated){var Ce=null;ae.rotated&&(Ce=y.mat2d.rotate(Array.of(0,0,0,0,0,0),y.mat2d.fromValues(1,0,0,1,0,0),.5*Math.PI),Ce=y.mat2d.translate(Array.of(0,0,0,0,0,0),Ce,[0,-Ie[2]])),X.textureCoord=X.position0.map(function(Ee){var ke=g()(Ee,3),Ne=ke[0],Oe=ke[1],je=ke[2];if(1/je>0){if(ae.rotated){var Je=Ne*Ce[0]+Oe*Ce[2]+Ce[4],rt=Ne*Ce[1]+Oe*Ce[3]+Ce[5];Ne=Je,Oe=rt}var et=U([Ne,Oe],[Ie[0]/Ie[2],Ie[1]/Ie[3],Ie[2],Ie[3]],ae);return ae.repeat&&(et[2]=1),et}return[-1,-1,-1]})}if(be){var Ae=[be[0]/Me,be[1]/we,be[2]/Me,be[3]/we];X.attributes.a_sourceRect=X.positions.map(function(){return[].concat(Ae)})}else X.attributes.a_sourceRect=X.positions.map(function(){return[0,0,0,0]})}}},{key:"accurate",value:function(X){if(this.contours){var ae=this.contours.path;if(ae){var ue=this.contours.simplify,he=G(this.contours.path,2*X,ue);this[A]=null,this[k]=he}}}},{key:"canIgnore",value:function(){var X=this[N]==null||this[N].lineWidth===0||this[Y][3]===0,ae=this[W]==null||this[Q][3]===0,ue=this[V].u_radialGradientVector==null,he=this[V].u_texSampler==null;return this[F]===0||this[J]==null&&X&&ae&&ue&&he&&!this.beforeRender&&!this.afterRender}},{key:"setStroke",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.thickness,ue=ae===void 0?1:ae,he=X.cap,ge=he===void 0?"butt":he,Me=X.join,we=Me===void 0?"miter":Me,be=X.miterLimit,Ie=be===void 0?10:be,Ce=X.color,Ae=Ce===void 0?[0,0,0,0]:Ce,Ee=X.lineDash,ke=Ee===void 0?null:Ee,Ne=X.lineDashOffset,Oe=Ne===void 0?0:Ne,je=X.roundSegments,Je=je===void 0?20:je;return this[A]=null,this[N]=new C.default({lineWidth:ue,lineCap:ge,lineJoin:we,miterLimit:Ie,roundSegments:Je}),typeof Ae=="string"&&(Ae=Object(D.default)(Ae)),this[Y]=Ae,this[N].lineDash=ke,this[N].lineDashOffset=Oe,this}},{key:"setFill",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.rule,ue=ae===void 0?this.fillRule:ae,he=X.color,ge=he===void 0?[0,0,0,0]:he;return this[A]=null,this[W]={rule:ue},typeof ge=="string"&&(ge=Object(D.default)(ge)),this[Q]=ge,this}},{key:"setTexture",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(X&&X.image){var ue=X,he=ue.image,ge=ue.rect;if(X=he,ae.rect)for(var Me=0;Me<ae.rect.length;Me++)ge[Me]=ae.rect[Me];ae.rect=ge}return this[W]||this.setFill(),this.setUniforms({u_texSampler:X}),this[A]&&this[ee](this[A],ae),this[Z]=ae,this}},{key:"setCircularGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;if(ae.length!==3)throw new TypeError("Invalid linearGradient.");this.setGradient({vector:ae,colors:ue,type:ge})}},{key:"setLinearGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;if(ae.length!==4)throw new TypeError("Invalid linearGradient.");this.setGradient({vector:ae,colors:ue,type:ge})}},{key:"setRadialGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;if(ae.length!==6)throw new TypeError("Invalid radialGradient.");this.setGradient({vector:ae,colors:ue,type:ge})}},{key:"setGradient",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},ae=X.vector,ue=X.colors,he=X.type,ge=he===void 0?"fill":he;ue=ue.map(function(be){var Ie=be.offset,Ce=be.color;return typeof Ce=="string"&&(Ce=Object(D.default)(Ce)),{offset:Ie,color:Ce}}),this[pe]=this[pe]||{},this[pe][ge]={vector:ae,colors:ue},ue.sort(function(be,Ie){return be.offset-Ie.offset});var Me=[];ue.forEach(function(be){var Ie=be.offset,Ce=be.color;Me.push.apply(Me,[Ie].concat(c()(Ce)))});var we;if(ae.length===4?we=[ae[0],ae[1],0,ae[2],ae[3],0]:we=c()(ae),Me.length<40&&Me.push(-1),Me.length>40)throw new Error("Too many colors, should be less than 8 colors");return this._radialGradientVector=we,this[V].u_colorSteps=Me,ge==="fill"?this[V].u_gradientType=1:this[V].u_gradientType=0,this[ce](),this}},{key:"setUniforms",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return Object.assign(this[V],X),this}},{key:"setTransform",value:function(){for(var X=this[ie],ae=arguments.length,ue=new Array(ae),he=0;he<ae;he++)ue[he]=arguments[he];return y.mat2d.equals(ue,X)||(this[ie]=ue,delete this[O],this._updateMatrix=!0),this}},{key:"transform",value:function(){for(var X=this[ie],ae=arguments.length,ue=new Array(ae),he=0;he<ae;he++)ue[he]=arguments[he];return this[ie]=y.mat2d.multiply(Array.of(0,0,0,0,0,0),X,ue),delete this[O],this._updateMatrix=!0,this}},{key:"translate",value:function(X,ae){var ue=y.mat2d.create();return ue=y.mat2d.translate(Array.of(0,0,0,0,0,0),ue,[X,ae]),this.transform.apply(this,c()(ue))}},{key:"rotate",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0],ue=g()(ae,2),he=ue[0],ge=ue[1],Me=y.mat2d.create();return Me=y.mat2d.translate(Array.of(0,0,0,0,0,0),Me,[he,ge]),Me=y.mat2d.rotate(Array.of(0,0,0,0,0,0),Me,X),Me=y.mat2d.translate(Array.of(0,0,0,0,0,0),Me,[-he,-ge]),this.transform.apply(this,c()(Me))}},{key:"scale",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],he=g()(ue,2),ge=he[0],Me=he[1],we=y.mat2d.create();return we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[ge,Me]),we=y.mat2d.scale(Array.of(0,0,0,0,0,0),we,[X,ae]),we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[-ge,-Me]),this.transform.apply(this,c()(we))}},{key:"skew",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:X,ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[0,0],he=g()(ue,2),ge=he[0],Me=he[1],we=y.mat2d.create();return we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[ge,Me]),we=y.mat2d.multiply(Array.of(0,0,0,0,0,0),we,y.mat2d.fromValues(1,Math.tan(ae),Math.tan(X),1,0,0)),we=y.mat2d.translate(Array.of(0,0,0,0,0,0),we,[-ge,-Me]),this.transform.apply(this,c()(we))}},{key:"clearFilter",value:function(){return this.setColorTransform(null),this[B].length=0,this}},{key:"setColorTransform",value:function(){for(var X=arguments.length,ae=new Array(X),ue=0;ue<X;ue++)ae[ue]=arguments[ue];return ae[0]===null?this.setUniforms({u_filterFlag:0,u_colorMatrix:0}):this.setUniforms({u_filterFlag:1,u_colorMatrix:ae}),this}},{key:"transformColor",value:function(){for(var X=this.uniforms.u_colorMatrix,ae=arguments.length,ue=new Array(ae),he=0;he<ae;he++)ue[he]=arguments[he];return X?X=Object(p.multiply)(X,ue):X=ue,this.setColorTransform.apply(this,c()(X)),this}},{key:"blur",value:function(X){return this[B].push("blur(".concat(X,"px)")),this}},{key:"brightness",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("brightness(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.brightness)(X)))}},{key:"contrast",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("contrast(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.contrast)(X)))}},{key:"dropShadow",value:function(X,ae){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,he=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0,1];return Array.isArray(he)&&(he=Object(T.default)(he)),this[B].push("drop-shadow(".concat(X,"px ").concat(ae,"px ").concat(ue,"px ").concat(he,")")),this}},{key:"grayscale",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("grayscale(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.grayscale)(X)))}},{key:"hueRotate",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this[B].push("hue-rotate(".concat(X,"deg)")),this.transformColor.apply(this,c()(Object(p.hueRotate)(X)))}},{key:"invert",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("invert(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.invert)(X)))}},{key:"opacity",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("opacity(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.opacity)(X)))}},{key:"saturate",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("saturate(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.saturate)(X)))}},{key:"sepia",value:function(){var X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1;return this[B].push("sepia(".concat(100*X,"%)")),this.transformColor.apply(this,c()(Object(p.sepia)(X)))}},{key:"url",value:function(X){return this[B].push("url(".concat(X,")")),this}},{key:"isPointCollision",value:function(X,ae){var ue=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"both",he=this.meshData,ge=he.positions,Me=he.cells,we=this.invertMatrix,be=we[0]*X+we[2]*ae+we[4],Ie=we[1]*X+we[3]*ae+we[5],Ce=this.boundingBox;if(be<Ce[0][0]||be>Ce[1][0]||Ie<Ce[0][1]||Ie>Ce[1][1])return!1;function Ae(vi,yo,fM){var Ld=g()(vi,2),gM=Ld[0],pM=Ld[1],Nd=g()(yo,2),Od=Nd[0],zd=Nd[1],Bd=g()(fM,2),mM=Bd[0],yM=Bd[1],jd=mM-Od,Fd=yM-zd,Ud=((gM-Od)*jd+(pM-zd)*Fd)/(Math.pow(jd,2)+Math.pow(Fd,2));return Ud>=0&&Ud<=1}for(var Ee=0;Ee<Me.length;Ee++){var ke=Me[Ee];if(ue==="fill"&&ke[0]>=he.fillPointCount)break;if(!(ue==="stroke"&&ke[0]<he.fillPointCount)){var Ne=ke.map(function(vi){return ge[vi]}),Oe=g()(Ne,3),je=g()(Oe[0],2),Je=je[0],rt=je[1],et=g()(Oe[1],2),nt=et[0],Qe=et[1],st=g()(Oe[2],2),ut=st[0],Ke=st[1],Wt=Math.sign((X-Je)*(Qe-rt)-(nt-Je)*(ae-rt));if(Wt===0&&Ae([X,ae],[Je,rt],[nt,Qe]))return!0;var Br=Math.sign((X-nt)*(Ke-Qe)-(ut-nt)*(ae-Qe));if(Br===0&&Ae([X,ae],[nt,Qe],[ut,Ke]))return!0;var jr=Math.sign((X-ut)*(rt-Ke)-(Je-ut)*(ae-Ke));if(jr===0&&Ae([X,ae],[ut,Ke],[Je,rt])||Wt===1&&Br===1&&jr===1||Wt===-1&&Br===-1&&jr===-1)return!0}}return!1}},{key:"isPointInFill",value:function(X,ae){return this.isPointCollision(X,ae,"fill")}},{key:"isPointInStroke",value:function(X,ae){return this.isPointCollision(X,ae,"stroke")}},{key:"addPass",value:function(X){var ae=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},ue=ae.width,he=ae.height,ge=o()(ae,["width","height"]),Me=new z.default;Me.rect(0,0,ue,he);var we=new re(Me);we.setUniforms(ge),we.setProgram(X),this[K].push(we)}},{key:"contours",get:function(){return this[k]},set:function(X){this[A]=null,this[k]=X;var ae=X.scale,ue=this.transformScale/ae;ue>1.5&&this.accurate(this.transformScale)}},{key:"program",get:function(){return this[J]}},{key:"blend",get:function(){return this[$]==null?"auto":this[$]},set:function(X){this[$]=X,this[A]&&(this[A].enableBlend=this.enableBlend)}},{key:"boundingBox",get:function(){if(this[A]&&this[A].boundingBox)return this[A].boundingBox;var X=this.meshData;if(X){var ae=X.position0;if(ae.length)X.boundingBox=E()(ae);else return[[0,0],[0,0]];return X.boundingBox}return[[0,0],[0,0]]}},{key:"boundingCenter",get:function(){var X=this.boundingBox;return X?[.5*(X[0][0]+X[1][0]),.5*(X[0][1]+X[1][1])]:[0,0]}},{key:"fillRule",get:function(){return this[W]?this[W].rule:"nonzero"}},{key:"lineWidth",get:function(){return this[N]?this[N].lineWidth:0}},{key:"lineCap",get:function(){return this[N]?this[N].lineCap:""}},{key:"lineJoin",get:function(){return this[N]?this[N].lineJoin:""}},{key:"miterLimit",get:function(){return this[N]?this[N].miterLimit:0}},{key:"strokeStyle",get:function(){return this[Y]&&this[Y][3]!==0?Object(T.default)(this[Y]):""}},{key:"lineDash",get:function(){return this[N]?this[N].lineDash:null}},{key:"lineDashOffset",get:function(){return this[N]?this[N].lineDashOffset:0}},{key:"fillStyle",get:function(){return this[Q]&&this[Q][3]!==0?Object(T.default)(this[Q]):""}},{key:"gradient",get:function(){return this[pe]}},{key:"texture",get:function(){return this[V].u_texSampler?{image:this[V].u_texSampler._img,options:this[Z]}:null}},{key:"enableBlend",get:function(){return this[$]===!0||this[$]===!1?this[$]:this[F]<1||this[Y]!=null&&this[Y][3]<1||this[Q]!=null&&this[Q][3]<1||this[V].u_colorMatrix!=null&&this[V].u_colorMatrix[18]<1||this[V].u_radialGradientVector!=null||this.beforeRender||this.afterRender}},{key:"filterCanvas",get:function(){return/blur|drop-shadow|url/.test(this.filter)}},{key:"filter",get:function(){return this[B].join(" ")}},{key:"transformMatrix",get:function(){return this[ie]}},{key:"invertMatrix",get:function(){if(!this[O]){var X=y.mat2d.invert(Array.of(0,0,0,0,0,0),this[ie]);this[O]=X}return this[O]}},{key:"transformScale",get:function(){var X=this[ie];return Math.max(Math.hypot(X[0],X[1]),Math.hypot(X[2],X[3]))}},{key:"uniforms",get:function(){return this[V]}},{key:"pass",get:function(){return this[K]}},{key:"meshData",get:function(){var X=this;if(this._updateMatrix){var ae=this.transformScale/this.contours.scale;ae>1.5&&this.accurate(this.transformScale)}if(!this[A]){!this[W]&&!this[N]&&this.setFill();var ue=this[k],he={};if(ue&&ue.length){if(this[W])try{var ge=R()(ue,this[W]);ge.positions=ge.positions.map(function(Ee){return Ee.push(X[F]),Ee}),ge.attributes={a_color:Array.from({length:ge.positions.length}).map(function(){return X[Q].map(function(Ee){return Math.round(255*Ee)})})},he.fill=ge}catch{}if(this[N]){var Me=this[N].lineDash,we=ue;if(Me){var be=this[N].lineDashOffset;we=Object(M.getDashContours)(ue,Me,be)}var Ie=we.map(function(Ee,ke){var Ne=Ee.length>1&&y.vec2.equals(Ee[0],Ee[Ee.length-1]),Oe=X[N].build(Ee,Ne);return R()([Oe])});Ie.forEach(function(Ee){Ee.positions=Ee.positions.map(function(ke){return ke.push(-X[F]),ke}),Ee.attributes={a_color:Array.from({length:Ee.positions.length}).map(function(){return X[Y].map(function(ke){return Math.round(255*ke)})})}}),he.stroke=Object(L.default)(Ie)}}var Ce=Object(L.default)([he.fill,he.stroke]);Ce.fillPointCount=he.fill?he.fill.positions.length:0,Ce.enableBlend=this.enableBlend,Ce.position0=Ce.positions.map(function(Ee){var ke=g()(Ee,3),Ne=ke[0],Oe=ke[1],je=ke[2];return[Ne,Oe,je]}),Ce.uniforms=this[V],this[A]=Ce,this[V].u_texSampler&&this[ee](Ce,this[Z]);var Ae=this[ie];Object(m.isUnitTransform)(Ae)||(this[se](Ce,Ae),this[V].u_radialGradientVector&&this[ce]()),this.clipPath&&this[w](),this[J]&&this[me](this[J])}return this._updateMatrix&&(this[A].matrix=this[ie],this[se](this[A],this[ie]),this[V].u_radialGradientVector&&this[ce]()),this[A]}}]),re}()},function(e,t,n){var i=n(75);function o(a,c){if(a==null)return{};var l=i(a,c),u,h;if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);for(h=0;h<d.length;h++)u=d[h],!(c.indexOf(u)>=0)&&Object.prototype.propertyIsEnumerable.call(a,u)&&(l[u]=a[u])}return l}e.exports=o},function(e,t){function n(i,o){if(i==null)return{};var a={},c=Object.keys(i),l,u;for(u=0;u<c.length;u++)l=c[u],!(o.indexOf(l)>=0)&&(a[l]=i[l]);return a}e.exports=n},function(e,t,n){n.r(t);var i=n(77);n(1).glMatrix.setMatrixArrayType(Array),t.default=i.Stroke},function(e,t,n){n.r(t),n.d(t,"Stroke",function(){return C});var i=n(19),o=n.n(i),a=n(23),c=n.n(a),l=n(24),u=n.n(l),h=n(66);n(1).glMatrix.setMatrixArrayType(Array);var d=Object(h.create)(),f=Object(h.create)(),g=Object(h.create)(),y=Object(h.create)(),S=Object(h.create)(),E=1e20,C=function(){function m(){var M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},v=M.lineWidth,R=v===void 0?1:v,b=M.lineJoin,P=b===void 0?"miter":b,D=M.miterLimit,z=D===void 0?10:D,j=M.lineCap,A=j===void 0?"butt":j,k=M.roundSegments,N=k===void 0?20:k;c()(this,m),this.lineWidth=R,this.lineJoin=P,this.miterLimit=z,this.lineCap=A,this.roundSegments=N,this._normal=null}return u()(m,[{key:"build",value:function(v){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,b=v.length;if(v=o()(v),b<2)return v;R&&((v[0][0]!==v[b-1][0]||v[0][1]!==v[b-1][1])&&v.push(o()(v[0])),v.push(o()(v[1]))),b=v.length,this._normal=null;var P={left:[],right:[]},D=this.lineWidth/2,z=this.lineCap;if(!R&&z==="square"){Object(h.direction)(f,v[0],v[1]),Object(h.scaleAndAdd)(v[0],v[0],f,D);var j=v.length-1;Object(h.direction)(f,v[j],v[j-1]),Object(h.scaleAndAdd)(v[j],v[j],f,D)}for(var A=1;A<b;A++){var k=v[A-1],N=v[A],W=v[A+1];this._seg(P,k,N,W,D,R)}!R&&z==="round"&&p(P,this.roundSegments);var Y=[].concat(o()(P.left),o()(P.right.reverse()));return Y}},{key:"_seg",value:function(v,R,b,P,D,z){var j=this.lineJoin==="bevel",A=this.lineJoin==="round";if(Object(h.direction)(f,b,R),this._normal||(this._normal=Object(h.create)(),Object(h.normal)(this._normal,f)),v.left.length||T(v,R,this._normal,D),!P)Object(h.normal)(this._normal,f),z?T(v,R,this._normal,D):T(v,b,this._normal,D);else{Object(h.direction)(g,P,b);var k=Object(h.computeMiter)(y,S,f,g,D);k=Math.min(k,E);var N=Object(h.dot)(y,this._normal)<0?-1:1,W=j||A;if(!W&&this.lineJoin==="miter"){var Y=k/D;Y>this.miterLimit&&(W=!0)}if(W){Object(h.scaleAndAdd)(d,b,this._normal,-D*N),L(v,d,N);var Q=1/0;R&&(Q=Math.min(Q,Math.hypot(b[0]-R[0],b[1]-R[1]))),P&&(Q=Math.min(Q,Math.hypot(P[0]-b[0],P[1]-b[1])));var ie=Math.max(D,Math.min(k,Q));if(Object(h.scaleAndAdd)(d,b,S,ie*N),L(v,d,-N),P)if(Object(h.normal)(d,g),Object(h.copy)(this._normal,d),Object(h.scaleAndAdd)(d,b,d,-D*N),A){for(var O=Object(h.clone)(d),V=N>0?v.left[v.left.length-1]:v.right[v.right.length-1],Z=Object(h.clone)(b),$=Object(h.sub)(Object(h.create)(),V,Z),ee=Object(h.sub)(Object(h.create)(),O,Z),se=Math.PI/this.roundSegments,ce=0;ce<this.roundSegments&&(Object(h.rotate)($,$,[0,0],N*se),Math.sign(Object(h.cross)(d,$,ee)[2])===N);ce++)Object(h.add)(d,$,Z),L(v,d,N);L(v,O,N)}else L(v,d,N)}else T(v,b,S,k),Object(h.copy)(this._normal,S)}}}]),m}();function L(m,M,v){v>0?m.left.push(Object(h.clone)(M)):m.right.push(Object(h.clone)(M))}function T(m,M,v,R){var b=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;Object(h.scaleAndAdd)(d,M,v,-R),L(m,d,-b),Object(h.scaleAndAdd)(d,M,v,R),L(m,d,b)}function p(m,M){var v=m.left,R=m.right,b=Object(h.create)(),P=Object(h.create)(),D=v[0],z=R[0],j=[.5*(D[0]+z[0]),.5*(D[1]+z[1])];Object(h.sub)(P,D,j);for(var A=1;A<=M;A++){var k=-1*Math.PI*A/M;Object(h.rotate)(b,P,[0,0],k),Object(h.add)(d,j,b),v.unshift(Object(h.clone)(d))}D=R[R.length-1],z=v[v.length-1],j=[.5*(D[0]+z[0]),.5*(D[1]+z[1])],Object(h.sub)(P,D,j);for(var N=1;N<=M;N++){var W=-1*Math.PI*N/M;Object(h.rotate)(b,P,[0,0],W),Object(h.add)(d,j,b),R.push(Object(h.clone)(d))}}},function(e,t,n){n.r(t),n.d(t,"isUnitTransform",function(){return i}),n(1).glMatrix.setMatrixArrayType(Array);function i(o){return o[0]===1&&o[1]===0&&o[2]===0&&o[3]===1&&o[4]===0&&o[5]===0}},function(e,t,n){n(1).glMatrix.setMatrixArrayType(Array);var i=n(80),o=n(81);e.exports=function(a,c){if(c=c||{},a=a.filter(function(C){return C.length>2}),a.length===0)return{positions:[],cells:[]};typeof c.vertexSize!="number"&&(c.vertexSize=a[0][0].length),a=a.map(function(C){return C.reduce(function(L,T){return L.concat(T)})});for(var l=c.rule==="evenodd"?i.WINDING_ODD:i.WINDING_NONZERO,u=i.tesselate(o({contours:a,windingRule:l,elementType:i.POLYGONS,polySize:3,vertexSize:2},c)),h=[],d=0;d<u.vertices.length;d+=c.vertexSize){var f=u.vertices.slice(d,d+c.vertexSize);h.push(f)}var g=[];for(d=0;d<u.elements.length;d+=3){var y=u.elements[d],S=u.elements[d+1],E=u.elements[d+2];g.push([y,S,E])}return{positions:h,cells:g}}},function(e,t,n){n(1).glMatrix.setMatrixArrayType(Array);var i={},o={};e.exports=i,i.WINDING_ODD=0,i.WINDING_NONZERO=1,i.WINDING_POSITIVE=2,i.WINDING_NEGATIVE=3,i.WINDING_ABS_GEQ_TWO=4,i.POLYGONS=0,i.CONNECTED_POLYGONS=1,i.BOUNDARY_CONTOURS=2,i.tesselate=function(T){for(var p=T.debug||!1,m=new L,M=0;M<T.contours.length;M++)m.addContour(T.vertexSize||2,T.contours[M]);return m.tesselate(T.windingRule||i.WINDING_ODD,T.elementType||i.POLYGONS,T.polySize||3,T.vertexSize||2,T.normal||[0,0,1]),{vertices:m.vertices,vertexIndices:m.vertexIndices,vertexCount:m.vertexCount,elements:m.elements,elementCount:m.elementCount,mesh:p?m.mesh:void 0}};var a=function(p){if(!p)throw"Assertion Failed!"};function c(){this.next=null,this.prev=null,this.anEdge=null,this.coords=[0,0,0],this.s=0,this.t=0,this.pqHandle=0,this.n=0,this.idx=0}function l(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}function u(T){this.next=null,this.Sym=null,this.Onext=null,this.Lnext=null,this.Org=null,this.Lface=null,this.activeRegion=null,this.winding=0,this.side=T}u.prototype={get Rface(){return this.Sym.Lface},set Rface(T){this.Sym.Lface=T},get Dst(){return this.Sym.Org},set Dst(T){this.Sym.Org=T},get Oprev(){return this.Sym.Lnext},set Oprev(T){this.Sym.Lnext=T},get Lprev(){return this.Onext.Sym},set Lprev(T){this.Onext.Sym=T},get Dprev(){return this.Lnext.Sym},set Dprev(T){this.Lnext.Sym=T},get Rprev(){return this.Sym.Onext},set Rprev(T){this.Sym.Onext=T},get Dnext(){return this.Sym.Onext.Sym},set Dnext(T){this.Sym.Onext.Sym=T},get Rnext(){return this.Sym.Lnext.Sym},set Rnext(T){this.Sym.Lnext.Sym=T}};function h(){var T=new c,p=new l,m=new u(0),M=new u(1);T.next=T.prev=T,T.anEdge=null,p.next=p.prev=p,p.anEdge=null,p.trail=null,p.marked=!1,p.inside=!1,m.next=m,m.Sym=M,m.Onext=null,m.Lnext=null,m.Org=null,m.Lface=null,m.winding=0,m.activeRegion=null,M.next=M,M.Sym=m,M.Onext=null,M.Lnext=null,M.Org=null,M.Lface=null,M.winding=0,M.activeRegion=null,this.vHead=T,this.fHead=p,this.eHead=m,this.eHeadSym=M}h.prototype={makeEdge_:function(p){var m=new u(0),M=new u(1);p.Sym.side<p.side&&(p=p.Sym);var v=p.Sym.next;return M.next=v,v.Sym.next=m,m.next=p,p.Sym.next=M,m.Sym=M,m.Onext=m,m.Lnext=M,m.Org=null,m.Lface=null,m.winding=0,m.activeRegion=null,M.Sym=m,M.Onext=M,M.Lnext=m,M.Org=null,M.Lface=null,M.winding=0,M.activeRegion=null,m},splice_:function(p,m){var M=p.Onext,v=m.Onext;M.Sym.Lnext=m,v.Sym.Lnext=p,p.Onext=v,m.Onext=M},makeVertex_:function(p,m,M){var v=p;a(v!==null);var R=M.prev;v.prev=R,R.next=v,v.next=M,M.prev=v,v.anEdge=m;var b=m;do b.Org=v,b=b.Onext;while(b!==m)},makeFace_:function(p,m,M){var v=p;a(v!==null);var R=M.prev;v.prev=R,R.next=v,v.next=M,M.prev=v,v.anEdge=m,v.trail=null,v.marked=!1,v.inside=M.inside;var b=m;do b.Lface=v,b=b.Lnext;while(b!==m)},killEdge_:function(p){p.Sym.side<p.side&&(p=p.Sym);var m=p.next,M=p.Sym.next;m.Sym.next=M,M.Sym.next=m},killVertex_:function(p,m){var M=p.anEdge,v=M;do v.Org=m,v=v.Onext;while(v!==M);var R=p.prev,b=p.next;b.prev=R,R.next=b},killFace_:function(p,m){var M=p.anEdge,v=M;do v.Lface=m,v=v.Lnext;while(v!==M);var R=p.prev,b=p.next;b.prev=R,R.next=b},makeEdge:function(){var p=new c,m=new c,M=new l,v=this.makeEdge_(this.eHead);return this.makeVertex_(p,v,this.vHead),this.makeVertex_(m,v.Sym,this.vHead),this.makeFace_(M,v,this.fHead),v},splice:function(p,m){var M=!1,v=!1;if(p!==m){if(m.Org!==p.Org&&(v=!0,this.killVertex_(m.Org,p.Org)),m.Lface!==p.Lface&&(M=!0,this.killFace_(m.Lface,p.Lface)),this.splice_(m,p),!v){var R=new c;this.makeVertex_(R,m,p.Org),p.Org.anEdge=p}if(!M){var b=new l;this.makeFace_(b,m,p.Lface),p.Lface.anEdge=p}}},delete:function(p){var m=p.Sym,M=!1;if(p.Lface!==p.Rface&&(M=!0,this.killFace_(p.Lface,p.Rface)),p.Onext===p)this.killVertex_(p.Org,null);else if(p.Rface.anEdge=p.Oprev,p.Org.anEdge=p.Onext,this.splice_(p,p.Oprev),!M){var v=new l;this.makeFace_(v,p,p.Lface)}m.Onext===m?(this.killVertex_(m.Org,null),this.killFace_(m.Lface,null)):(p.Lface.anEdge=m.Oprev,m.Org.anEdge=m.Onext,this.splice_(m,m.Oprev)),this.killEdge_(p)},addEdgeVertex:function(p){var m=this.makeEdge_(p),M=m.Sym;this.splice_(m,p.Lnext),m.Org=p.Dst;var v=new c;return this.makeVertex_(v,M,m.Org),m.Lface=M.Lface=p.Lface,m},splitEdge:function(p,m){var M=this.addEdgeVertex(p),v=M.Sym;return this.splice_(p.Sym,p.Sym.Oprev),this.splice_(p.Sym,v),p.Dst=v.Org,v.Dst.anEdge=v.Sym,v.Rface=p.Rface,v.winding=p.winding,v.Sym.winding=p.Sym.winding,v},connect:function(p,m){var M=!1,v=this.makeEdge_(p),R=v.Sym;if(m.Lface!==p.Lface&&(M=!0,this.killFace_(m.Lface,p.Lface)),this.splice_(v,p.Lnext),this.splice_(R,m),v.Org=p.Dst,R.Org=m.Org,v.Lface=R.Lface=p.Lface,p.Lface.anEdge=R,!M){var b=new l;this.makeFace_(b,v,p.Lface)}return v},zapFace:function(p){var m=p.anEdge,M,v,R,b,P;v=m.Lnext;do M=v,v=M.Lnext,M.Lface=null,M.Rface===null&&(M.Onext===M?this.killVertex_(M.Org,null):(M.Org.anEdge=M.Onext,this.splice_(M,M.Oprev)),R=M.Sym,R.Onext===R?this.killVertex_(R.Org,null):(R.Org.anEdge=R.Onext,this.splice_(R,R.Oprev)),this.killEdge_(M));while(M!=m);b=p.prev,P=p.next,P.prev=b,b.next=P},countFaceVerts_:function(p){var m=p.anEdge,M=0;do M++,m=m.Lnext;while(m!==p.anEdge);return M},mergeConvexFaces:function(p){var m,M,v,R,b,P,D;for(m=this.fHead.next;m!==this.fHead;m=m.next)if(m.inside)for(M=m.anEdge,b=M.Org;v=M.Lnext,R=M.Sym,R&&R.Lface&&R.Lface.inside&&(P=this.countFaceVerts_(m),D=this.countFaceVerts_(R.Lface),P+D-2<=p&&o.vertCCW(M.Lprev.Org,M.Org,R.Lnext.Lnext.Org)&&o.vertCCW(R.Lprev.Org,R.Org,M.Lnext.Lnext.Org)&&(v=R.Lnext,this.delete(R),M=null,R=null)),!(M&&M.Lnext.Org===b);)M=v;return!0},check:function(){var p=this.fHead,m=this.vHead,M=this.eHead,v,R,b,P,D,z;for(R=p,R=p;(v=R.next)!==p;R=v){a(v.prev===R),D=v.anEdge;do a(D.Sym!==D),a(D.Sym.Sym===D),a(D.Lnext.Onext.Sym===D),a(D.Onext.Sym.Lnext===D),a(D.Lface===v),D=D.Lnext;while(D!==v.anEdge)}for(a(v.prev===R&&v.anEdge===null),P=m,P=m;(b=P.next)!==m;P=b){a(b.prev===P),D=b.anEdge;do a(D.Sym!==D),a(D.Sym.Sym===D),a(D.Lnext.Onext.Sym===D),a(D.Onext.Sym.Lnext===D),a(D.Org===b),D=D.Onext;while(D!==b.anEdge)}for(a(b.prev===P&&b.anEdge===null),z=M,z=M;(D=z.next)!==M;z=D)a(D.Sym.next===z.Sym),a(D.Sym!==D),a(D.Sym.Sym===D),a(D.Org!==null),a(D.Dst!==null),a(D.Lnext.Onext.Sym===D),a(D.Onext.Sym.Lnext===D);a(D.Sym.next===z.Sym&&D.Sym===this.eHeadSym&&D.Sym.Sym===D&&D.Org===null&&D.Dst===null&&D.Lface===null&&D.Rface===null)}},o.vertEq=function(T,p){return T.s===p.s&&T.t===p.t},o.vertLeq=function(T,p){return T.s<p.s||T.s===p.s&&T.t<=p.t},o.transLeq=function(T,p){return T.t<p.t||T.t===p.t&&T.s<=p.s},o.edgeGoesLeft=function(T){return o.vertLeq(T.Dst,T.Org)},o.edgeGoesRight=function(T){return o.vertLeq(T.Org,T.Dst)},o.vertL1dist=function(T,p){return Math.abs(T.s-p.s)+Math.abs(T.t-p.t)},o.edgeEval=function(T,p,m){a(o.vertLeq(T,p)&&o.vertLeq(p,m));var M=p.s-T.s,v=m.s-p.s;return M+v>0?M<v?p.t-T.t+(T.t-m.t)*(M/(M+v)):p.t-m.t+(m.t-T.t)*(v/(M+v)):0},o.edgeSign=function(T,p,m){a(o.vertLeq(T,p)&&o.vertLeq(p,m));var M=p.s-T.s,v=m.s-p.s;return M+v>0?(p.t-m.t)*M+(p.t-T.t)*v:0},o.transEval=function(T,p,m){a(o.transLeq(T,p)&&o.transLeq(p,m));var M=p.t-T.t,v=m.t-p.t;return M+v>0?M<v?p.s-T.s+(T.s-m.s)*(M/(M+v)):p.s-m.s+(m.s-T.s)*(v/(M+v)):0},o.transSign=function(T,p,m){a(o.transLeq(T,p)&&o.transLeq(p,m));var M=p.t-T.t,v=m.t-p.t;return M+v>0?(p.s-m.s)*M+(p.s-T.s)*v:0},o.vertCCW=function(T,p,m){return T.s*(p.t-m.t)+p.s*(m.t-T.t)+m.s*(T.t-p.t)>=0},o.interpolate=function(T,p,m,M){return T=T<0?0:T,m=m<0?0:m,T<=m?m===0?(p+M)/2:p+(M-p)*(T/(T+m)):M+(p-M)*(m/(T+m))},o.intersect=function(T,p,m,M,v){var R,b,P;o.vertLeq(T,p)||(P=T,T=p,p=P),o.vertLeq(m,M)||(P=m,m=M,M=P),o.vertLeq(T,m)||(P=T,T=m,m=P,P=p,p=M,M=P),o.vertLeq(m,p)?o.vertLeq(p,M)?(R=o.edgeEval(T,m,p),b=o.edgeEval(m,p,M),R+b<0&&(R=-R,b=-b),v.s=o.interpolate(R,m.s,b,p.s)):(R=o.edgeSign(T,m,p),b=-o.edgeSign(T,M,p),R+b<0&&(R=-R,b=-b),v.s=o.interpolate(R,m.s,b,M.s)):v.s=(m.s+p.s)/2,o.transLeq(T,p)||(P=T,T=p,p=P),o.transLeq(m,M)||(P=m,m=M,M=P),o.transLeq(T,m)||(P=T,T=m,m=P,P=p,p=M,M=P),o.transLeq(m,p)?o.transLeq(p,M)?(R=o.transEval(T,m,p),b=o.transEval(m,p,M),R+b<0&&(R=-R,b=-b),v.t=o.interpolate(R,m.t,b,p.t)):(R=o.transSign(T,m,p),b=-o.transSign(T,M,p),R+b<0&&(R=-R,b=-b),v.t=o.interpolate(R,m.t,b,M.t)):v.t=(m.t+p.t)/2};function d(){this.key=null,this.next=null,this.prev=null}function f(T,p){this.head=new d,this.head.next=this.head,this.head.prev=this.head,this.frame=T,this.leq=p}f.prototype={min:function(){return this.head.next},max:function(){return this.head.prev},insert:function(p){return this.insertBefore(this.head,p)},search:function(p){var m=this.head;do m=m.next;while(m.key!==null&&!this.leq(this.frame,p,m.key));return m},insertBefore:function(p,m){do p=p.prev;while(p.key!==null&&!this.leq(this.frame,p.key,m));var M=new d;return M.key=m,M.next=p.next,p.next.prev=M,M.prev=p,p.next=M,M},delete:function(p){p.next.prev=p.prev,p.prev.next=p.next}};function g(){this.handle=null}function y(){this.key=null,this.node=null}function S(T,p){this.size=0,this.max=T,this.nodes=[],this.nodes.length=T+1;var m;for(m=0;m<this.nodes.length;m++)this.nodes[m]=new g;for(this.handles=[],this.handles.length=T+1,m=0;m<this.handles.length;m++)this.handles[m]=new y;this.initialized=!1,this.freeList=0,this.leq=p,this.nodes[1].handle=1,this.handles[1].key=null}S.prototype={floatDown_:function(p){var m=this.nodes,M=this.handles,v,R,b;for(v=m[p].handle;;){if(b=p<<1,b<this.size&&this.leq(M[m[b+1].handle].key,M[m[b].handle].key)&&++b,a(b<=this.max),R=m[b].handle,b>this.size||this.leq(M[v].key,M[R].key)){m[p].handle=v,M[v].node=p;break}m[p].handle=R,M[R].node=p,p=b}},floatUp_:function(p){var m=this.nodes,M=this.handles,v,R,b;for(v=m[p].handle;;){if(b=p>>1,R=m[b].handle,b===0||this.leq(M[R].key,M[v].key)){m[p].handle=v,M[v].node=p;break}m[p].handle=R,M[R].node=p,p=b}},init:function(){for(var p=this.size;p>=1;--p)this.floatDown_(p);this.initialized=!0},min:function(){return this.handles[this.nodes[1].handle].key},insert:function(p){var m,M;if(m=++this.size,m*2>this.max){this.max*=2;var v,R;for(R=this.nodes.length,this.nodes.length=this.max+1,v=R;v<this.nodes.length;v++)this.nodes[v]=new g;for(R=this.handles.length,this.handles.length=this.max+1,v=R;v<this.handles.length;v++)this.handles[v]=new y}return this.freeList===0?M=m:(M=this.freeList,this.freeList=this.handles[M].node),this.nodes[m].handle=M,this.handles[M].node=m,this.handles[M].key=p,this.initialized&&this.floatUp_(m),M},extractMin:function(){var p=this.nodes,m=this.handles,M=p[1].handle,v=m[M].key;return this.size>0&&(p[1].handle=p[this.size].handle,m[p[1].handle].node=1,m[M].key=null,m[M].node=this.freeList,this.freeList=M,--this.size,this.size>0&&this.floatDown_(1)),v},delete:function(p){var m=this.nodes,M=this.handles,v;a(p>=1&&p<=this.max&&M[p].key!==null),v=M[p].node,m[v].handle=m[this.size].handle,M[m[v].handle].node=v,--this.size,v<=this.size&&(v<=1||this.leq(M[m[v>>1].handle].key,M[m[v].handle].key)?this.floatDown_(v):this.floatUp_(v)),M[p].key=null,M[p].node=this.freeList,this.freeList=p}};function E(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}var C={};C.regionBelow=function(T){return T.nodeUp.prev.key},C.regionAbove=function(T){return T.nodeUp.next.key},C.debugEvent=function(T){},C.addWinding=function(T,p){T.winding+=p.winding,T.Sym.winding+=p.Sym.winding},C.edgeLeq=function(T,p,m){var M=T.event,b,P,v=p.eUp,R=m.eUp;if(v.Dst===M)return R.Dst===M?o.vertLeq(v.Org,R.Org)?o.edgeSign(R.Dst,v.Org,R.Org)<=0:o.edgeSign(v.Dst,R.Org,v.Org)>=0:o.edgeSign(R.Dst,M,R.Org)<=0;if(R.Dst===M)return o.edgeSign(v.Dst,M,v.Org)>=0;var b=o.edgeEval(v.Dst,M,v.Org),P=o.edgeEval(R.Dst,M,R.Org);return b>=P},C.deleteRegion=function(T,p){p.fixUpperEdge&&a(p.eUp.winding===0),p.eUp.activeRegion=null,T.dict.delete(p.nodeUp)},C.fixUpperEdge=function(T,p,m){a(p.fixUpperEdge),T.mesh.delete(p.eUp),p.fixUpperEdge=!1,p.eUp=m,m.activeRegion=p},C.topLeftRegion=function(T,p){var m=p.eUp.Org,M;do p=C.regionAbove(p);while(p.eUp.Org===m);if(p.fixUpperEdge){if(M=T.mesh.connect(C.regionBelow(p).eUp.Sym,p.eUp.Lnext),M===null)return null;C.fixUpperEdge(T,p,M),p=C.regionAbove(p)}return p},C.topRightRegion=function(T){var p=T.eUp.Dst;do T=C.regionAbove(T);while(T.eUp.Dst===p);return T},C.addRegionBelow=function(T,p,m){var M=new E;return M.eUp=m,M.nodeUp=T.dict.insertBefore(p.nodeUp,M),M.fixUpperEdge=!1,M.sentinel=!1,M.dirty=!1,m.activeRegion=M,M},C.isWindingInside=function(T,p){switch(T.windingRule){case i.WINDING_ODD:return(p&1)!==0;case i.WINDING_NONZERO:return p!==0;case i.WINDING_POSITIVE:return p>0;case i.WINDING_NEGATIVE:return p<0;case i.WINDING_ABS_GEQ_TWO:return p>=2||p<=-2}return a(!1),!1},C.computeWinding=function(T,p){p.windingNumber=C.regionAbove(p).windingNumber+p.eUp.winding,p.inside=C.isWindingInside(T,p.windingNumber)},C.finishRegion=function(T,p){var m=p.eUp,M=m.Lface;M.inside=p.inside,M.anEdge=m,C.deleteRegion(T,p)},C.finishLeftRegions=function(T,p,m){for(var M,b,v=null,R=p,b=p.eUp;R!==m;){if(R.fixUpperEdge=!1,v=C.regionBelow(R),M=v.eUp,M.Org!=b.Org){if(!v.fixUpperEdge){C.finishRegion(T,R);break}M=T.mesh.connect(b.Lprev,M.Sym),C.fixUpperEdge(T,v,M)}b.Onext!==M&&(T.mesh.splice(M.Oprev,M),T.mesh.splice(b,M)),C.finishRegion(T,R),b=v.eUp,R=v}return b},C.addRightEdges=function(T,p,m,M,v,R){var b,P,D,z,j=!0;D=m;do a(o.vertLeq(D.Org,D.Dst)),C.addRegionBelow(T,p,D.Sym),D=D.Onext;while(D!==M);for(v===null&&(v=C.regionBelow(p).eUp.Rprev),P=p,z=v;b=C.regionBelow(P),D=b.eUp.Sym,D.Org===z.Org;)D.Onext!==z&&(T.mesh.splice(D.Oprev,D),T.mesh.splice(z.Oprev,D)),b.windingNumber=P.windingNumber-D.winding,b.inside=C.isWindingInside(T,b.windingNumber),P.dirty=!0,!j&&C.checkForRightSplice(T,P)&&(C.addWinding(D,z),C.deleteRegion(T,P),T.mesh.delete(z)),j=!1,P=b,z=D;P.dirty=!0,a(P.windingNumber-D.winding===b.windingNumber),R&&C.walkDirtyRegions(T,P)},C.spliceMergeVertices=function(T,p,m){T.mesh.splice(p,m)},C.vertexWeights=function(T,p,m){var M=o.vertL1dist(p,T),v=o.vertL1dist(m,T),R=.5*v/(M+v),b=.5*M/(M+v);T.coords[0]+=R*p.coords[0]+b*m.coords[0],T.coords[1]+=R*p.coords[1]+b*m.coords[1],T.coords[2]+=R*p.coords[2]+b*m.coords[2]},C.getIntersectData=function(T,p,m,M,v,R){p.coords[0]=p.coords[1]=p.coords[2]=0,p.idx=-1,C.vertexWeights(p,m,M),C.vertexWeights(p,v,R)},C.checkForRightSplice=function(T,p){var m=C.regionBelow(p),M=p.eUp,v=m.eUp;if(o.vertLeq(M.Org,v.Org)){if(o.edgeSign(v.Dst,M.Org,v.Org)>0)return!1;o.vertEq(M.Org,v.Org)?M.Org!==v.Org&&(T.pq.delete(M.Org.pqHandle),C.spliceMergeVertices(T,v.Oprev,M)):(T.mesh.splitEdge(v.Sym),T.mesh.splice(M,v.Oprev),p.dirty=m.dirty=!0)}else{if(o.edgeSign(M.Dst,v.Org,M.Org)<0)return!1;C.regionAbove(p).dirty=p.dirty=!0,T.mesh.splitEdge(M.Sym),T.mesh.splice(v.Oprev,M)}return!0},C.checkForLeftSplice=function(T,p){var m=C.regionBelow(p),M=p.eUp,v=m.eUp,R;if(a(!o.vertEq(M.Dst,v.Dst)),o.vertLeq(M.Dst,v.Dst)){if(o.edgeSign(M.Dst,v.Dst,M.Org)<0)return!1;C.regionAbove(p).dirty=p.dirty=!0,R=T.mesh.splitEdge(M),T.mesh.splice(v.Sym,R),R.Lface.inside=p.inside}else{if(o.edgeSign(v.Dst,M.Dst,v.Org)>0)return!1;p.dirty=m.dirty=!0,R=T.mesh.splitEdge(v),T.mesh.splice(M.Lnext,v.Sym),R.Rface.inside=p.inside}return!0},C.checkForIntersect=function(T,p){var m=C.regionBelow(p),M=p.eUp,v=m.eUp,R=M.Org,b=v.Org,P=M.Dst,D=v.Dst,z,j,A=new c,k,N;if(a(!o.vertEq(D,P)),a(o.edgeSign(P,T.event,R)<=0),a(o.edgeSign(D,T.event,b)>=0),a(R!==T.event&&b!==T.event),a(!p.fixUpperEdge&&!m.fixUpperEdge),R===b||(z=Math.min(R.t,P.t),j=Math.max(b.t,D.t),z>j))return!1;if(o.vertLeq(R,b)){if(o.edgeSign(D,R,b)>0)return!1}else if(o.edgeSign(P,b,R)<0)return!1;return C.debugEvent(T),o.intersect(P,R,D,b,A),a(Math.min(R.t,P.t)<=A.t),a(A.t<=Math.max(b.t,D.t)),a(Math.min(D.s,P.s)<=A.s),a(A.s<=Math.max(b.s,R.s)),o.vertLeq(A,T.event)&&(A.s=T.event.s,A.t=T.event.t),k=o.vertLeq(R,b)?R:b,o.vertLeq(k,A)&&(A.s=k.s,A.t=k.t),o.vertEq(A,R)||o.vertEq(A,b)?(C.checkForRightSplice(T,p),!1):!o.vertEq(P,T.event)&&o.edgeSign(P,T.event,A)>=0||!o.vertEq(D,T.event)&&o.edgeSign(D,T.event,A)<=0?D===T.event?(T.mesh.splitEdge(M.Sym),T.mesh.splice(v.Sym,M),p=C.topLeftRegion(T,p),M=C.regionBelow(p).eUp,C.finishLeftRegions(T,C.regionBelow(p),m),C.addRightEdges(T,p,M.Oprev,M,M,!0),!0):P===T.event?(T.mesh.splitEdge(v.Sym),T.mesh.splice(M.Lnext,v.Oprev),m=p,p=C.topRightRegion(p),N=C.regionBelow(p).eUp.Rprev,m.eUp=v.Oprev,v=C.finishLeftRegions(T,m,null),C.addRightEdges(T,p,v.Onext,M.Rprev,N,!0),!0):(o.edgeSign(P,T.event,A)>=0&&(C.regionAbove(p).dirty=p.dirty=!0,T.mesh.splitEdge(M.Sym),M.Org.s=T.event.s,M.Org.t=T.event.t),o.edgeSign(D,T.event,A)<=0&&(p.dirty=m.dirty=!0,T.mesh.splitEdge(v.Sym),v.Org.s=T.event.s,v.Org.t=T.event.t),!1):(T.mesh.splitEdge(M.Sym),T.mesh.splitEdge(v.Sym),T.mesh.splice(v.Oprev,M),M.Org.s=A.s,M.Org.t=A.t,M.Org.pqHandle=T.pq.insert(M.Org),C.getIntersectData(T,M.Org,R,P,b,D),C.regionAbove(p).dirty=p.dirty=m.dirty=!0,!1)},C.walkDirtyRegions=function(T,p){for(var m=C.regionBelow(p),M,v;;){for(;m.dirty;)p=m,m=C.regionBelow(m);if(!p.dirty&&(m=p,p=C.regionAbove(p),p===null||!p.dirty))return;if(p.dirty=!1,M=p.eUp,v=m.eUp,M.Dst!==v.Dst&&C.checkForLeftSplice(T,p)&&(m.fixUpperEdge?(C.deleteRegion(T,m),T.mesh.delete(v),m=C.regionBelow(p),v=m.eUp):p.fixUpperEdge&&(C.deleteRegion(T,p),T.mesh.delete(M),p=C.regionAbove(m),M=p.eUp)),M.Org!==v.Org)if(M.Dst!==v.Dst&&!p.fixUpperEdge&&!m.fixUpperEdge&&(M.Dst===T.event||v.Dst===T.event)){if(C.checkForIntersect(T,p))return}else C.checkForRightSplice(T,p);M.Org===v.Org&&M.Dst===v.Dst&&(C.addWinding(v,M),C.deleteRegion(T,p),T.mesh.delete(M),p=C.regionAbove(m))}},C.connectRightVertex=function(T,p,m){var M,v=m.Onext,R=C.regionBelow(p),b=p.eUp,P=R.eUp,D=!1;if(b.Dst!==P.Dst&&C.checkForIntersect(T,p),o.vertEq(b.Org,T.event)&&(T.mesh.splice(v.Oprev,b),p=C.topLeftRegion(T,p),v=C.regionBelow(p).eUp,C.finishLeftRegions(T,C.regionBelow(p),R),D=!0),o.vertEq(P.Org,T.event)&&(T.mesh.splice(m,P.Oprev),m=C.finishLeftRegions(T,R,null),D=!0),D){C.addRightEdges(T,p,m.Onext,v,v,!0);return}o.vertLeq(P.Org,b.Org)?M=P.Oprev:M=b,M=T.mesh.connect(m.Lprev,M),C.addRightEdges(T,p,M,M.Onext,M.Onext,!1),M.Sym.activeRegion.fixUpperEdge=!0,C.walkDirtyRegions(T,p)},C.connectLeftDegenerate=function(T,p,m){var M,v,R,b,P;if(M=p.eUp,o.vertEq(M.Org,m)){a(!1),C.spliceMergeVertices(T,M,m.anEdge);return}if(!o.vertEq(M.Dst,m)){T.mesh.splitEdge(M.Sym),p.fixUpperEdge&&(T.mesh.delete(M.Onext),p.fixUpperEdge=!1),T.mesh.splice(m.anEdge,M),C.sweepEvent(T,m);return}a(!1),p=C.topRightRegion(p),P=C.regionBelow(p),R=P.eUp.Sym,v=b=R.Onext,P.fixUpperEdge&&(a(v!==R),C.deleteRegion(T,P),T.mesh.delete(R),R=v.Oprev),T.mesh.splice(m.anEdge,R),o.edgeGoesLeft(v)||(v=null),C.addRightEdges(T,p,R.Onext,b,v,!0)},C.connectLeftVertex=function(T,p){var m,M,v,R,b,P,D=new E;if(D.eUp=p.anEdge.Sym,m=T.dict.search(D).key,M=C.regionBelow(m),!!M){if(R=m.eUp,b=M.eUp,o.edgeSign(R.Dst,p,R.Org)===0){C.connectLeftDegenerate(T,m,p);return}if(v=o.vertLeq(b.Dst,R.Dst)?m:M,m.inside||v.fixUpperEdge){if(v===m)P=T.mesh.connect(p.anEdge.Sym,R.Lnext);else{var z=T.mesh.connect(b.Dnext,p.anEdge);P=z.Sym}v.fixUpperEdge?C.fixUpperEdge(T,v,P):C.computeWinding(T,C.addRegionBelow(T,m,P)),C.sweepEvent(T,p)}else C.addRightEdges(T,m,p.anEdge,p.anEdge,null,!0)}},C.sweepEvent=function(T,p){T.event=p,C.debugEvent(T);for(var m=p.anEdge;m.activeRegion===null;)if(m=m.Onext,m===p.anEdge){C.connectLeftVertex(T,p);return}var M=C.topLeftRegion(T,m.activeRegion);a(M!==null);var v=C.regionBelow(M),R=v.eUp,b=C.finishLeftRegions(T,v,null);b.Onext===R?C.connectRightVertex(T,M,b):C.addRightEdges(T,M,b.Onext,R,R,!0)},C.addSentinel=function(T,p,m,M){var v=new E,R=T.mesh.makeEdge();R.Org.s=m,R.Org.t=M,R.Dst.s=p,R.Dst.t=M,T.event=R.Dst,v.eUp=R,v.windingNumber=0,v.inside=!1,v.fixUpperEdge=!1,v.sentinel=!0,v.dirty=!1,v.nodeUp=T.dict.insert(v)},C.initEdgeDict=function(T){T.dict=new f(T,C.edgeLeq);var p=T.bmax[0]-T.bmin[0],m=T.bmax[1]-T.bmin[1],M=T.bmin[0]-p,v=T.bmax[0]+p,R=T.bmin[1]-m,b=T.bmax[1]+m;C.addSentinel(T,M,v,R),C.addSentinel(T,M,v,b)},C.doneEdgeDict=function(T){for(var p,m=0;(p=T.dict.min().key)!==null;)p.sentinel||(a(p.fixUpperEdge),a(++m===1)),a(p.windingNumber===0),C.deleteRegion(T,p)},C.removeDegenerateEdges=function(T){var p,m,M,v=T.mesh.eHead;for(p=v.next;p!==v;p=m)m=p.next,M=p.Lnext,o.vertEq(p.Org,p.Dst)&&p.Lnext.Lnext!==p&&(C.spliceMergeVertices(T,M,p),T.mesh.delete(p),p=M,M=p.Lnext),M.Lnext===p&&(M!==p&&((M===m||M===m.Sym)&&(m=m.next),T.mesh.delete(M)),(p===m||p===m.Sym)&&(m=m.next),T.mesh.delete(p))},C.initPriorityQ=function(T){var p,m,M,v=0;for(M=T.mesh.vHead,m=M.next;m!==M;m=m.next)v++;for(v+=8,p=T.pq=new S(v,o.vertLeq),M=T.mesh.vHead,m=M.next;m!==M;m=m.next)m.pqHandle=p.insert(m);return m!==M?!1:(p.init(),!0)},C.donePriorityQ=function(T){T.pq=null},C.removeDegenerateFaces=function(T,p){var m,M,v;for(m=p.fHead.next;m!==p.fHead;m=M)M=m.next,v=m.anEdge,a(v.Lnext!==v),v.Lnext.Lnext===v&&(C.addWinding(v.Onext,v),T.mesh.delete(v));return!0},C.computeInterior=function(T){var p,m;if(C.removeDegenerateEdges(T),!C.initPriorityQ(T))return!1;for(C.initEdgeDict(T);(p=T.pq.extractMin())!==null;){for(;m=T.pq.min(),!(m===null||!o.vertEq(m,p));)m=T.pq.extractMin(),C.spliceMergeVertices(T,p.anEdge,m.anEdge);C.sweepEvent(T,p)}return T.event=T.dict.min().key.eUp.Org,C.debugEvent(T),C.doneEdgeDict(T),C.donePriorityQ(T),C.removeDegenerateFaces(T,T.mesh)?(T.mesh.check(),!0):!1};function L(){this.mesh=null,this.normal=[0,0,0],this.sUnit=[0,0,0],this.tUnit=[0,0,0],this.bmin=[0,0],this.bmax=[0,0],this.windingRule=i.WINDING_ODD,this.dict=null,this.pq=null,this.event=null,this.vertexIndexCounter=0,this.vertices=[],this.vertexIndices=[],this.vertexCount=0,this.elements=[],this.elementCount=0}L.prototype={dot_:function(p,m){return p[0]*m[0]+p[1]*m[1]+p[2]*m[2]},normalize_:function(p){var m=p[0]*p[0]+p[1]*p[1]+p[2]*p[2];a(m>0),m=Math.sqrt(m),p[0]/=m,p[1]/=m,p[2]/=m},longAxis_:function(p){var m=0;return Math.abs(p[1])>Math.abs(p[0])&&(m=1),Math.abs(p[2])>Math.abs(p[m])&&(m=2),m},computeNormal_:function(p){var m,M,v,R,b,P,D=[0,0,0],z=[0,0,0],j=[0,0,0],A=[0,0,0],k=[0,0,0],N=[null,null,null],W=[null,null,null],Y=this.mesh.vHead,Q;for(m=Y.next,Q=0;Q<3;++Q)R=m.coords[Q],z[Q]=R,W[Q]=m,D[Q]=R,N[Q]=m;for(m=Y.next;m!==Y;m=m.next)for(Q=0;Q<3;++Q)R=m.coords[Q],R<z[Q]&&(z[Q]=R,W[Q]=m),R>D[Q]&&(D[Q]=R,N[Q]=m);if(Q=0,D[1]-z[1]>D[0]-z[0]&&(Q=1),D[2]-z[2]>D[Q]-z[Q]&&(Q=2),z[Q]>=D[Q]){p[0]=0,p[1]=0,p[2]=1;return}for(P=0,M=W[Q],v=N[Q],j[0]=M.coords[0]-v.coords[0],j[1]=M.coords[1]-v.coords[1],j[2]=M.coords[2]-v.coords[2],m=Y.next;m!==Y;m=m.next)A[0]=m.coords[0]-v.coords[0],A[1]=m.coords[1]-v.coords[1],A[2]=m.coords[2]-v.coords[2],k[0]=j[1]*A[2]-j[2]*A[1],k[1]=j[2]*A[0]-j[0]*A[2],k[2]=j[0]*A[1]-j[1]*A[0],b=k[0]*k[0]+k[1]*k[1]+k[2]*k[2],b>P&&(P=b,p[0]=k[0],p[1]=k[1],p[2]=k[2]);P<=0&&(p[0]=p[1]=p[2]=0,p[this.longAxis_(j)]=1)},checkOrientation_:function(){var p,m,M=this.mesh.fHead,v,R=this.mesh.vHead,b;for(p=0,m=M.next;m!==M;m=m.next)if(b=m.anEdge,!(b.winding<=0))do p+=(b.Org.s-b.Dst.s)*(b.Org.t+b.Dst.t),b=b.Lnext;while(b!==m.anEdge);if(p<0){for(v=R.next;v!==R;v=v.next)v.t=-v.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},projectPolygon_:function(){var p,m=this.mesh.vHead,M=[0,0,0],v,R,b,P,D=!1;for(M[0]=this.normal[0],M[1]=this.normal[1],M[2]=this.normal[2],M[0]===0&&M[1]===0&&M[2]===0&&(this.computeNormal_(M),D=!0),v=this.sUnit,R=this.tUnit,b=this.longAxis_(M),v[b]=0,v[(b+1)%3]=1,v[(b+2)%3]=0,R[b]=0,R[(b+1)%3]=0,R[(b+2)%3]=M[b]>0?1:-1,p=m.next;p!==m;p=p.next)p.s=this.dot_(p.coords,v),p.t=this.dot_(p.coords,R);for(D&&this.checkOrientation_(),P=!0,p=m.next;p!==m;p=p.next)P?(this.bmin[0]=this.bmax[0]=p.s,this.bmin[1]=this.bmax[1]=p.t,P=!1):(p.s<this.bmin[0]&&(this.bmin[0]=p.s),p.s>this.bmax[0]&&(this.bmax[0]=p.s),p.t<this.bmin[1]&&(this.bmin[1]=p.t),p.t>this.bmax[1]&&(this.bmax[1]=p.t))},addWinding_:function(p,m){p.winding+=m.winding,p.Sym.winding+=m.Sym.winding},tessellateMonoRegion_:function(p,m){var M,v;for(M=m.anEdge,a(M.Lnext!==M&&M.Lnext.Lnext!==M);o.vertLeq(M.Dst,M.Org);M=M.Lprev);for(;o.vertLeq(M.Org,M.Dst);M=M.Lnext);for(v=M.Lprev;M.Lnext!==v;)if(o.vertLeq(M.Dst,v.Org)){for(;v.Lnext!==M&&(o.edgeGoesLeft(v.Lnext)||o.edgeSign(v.Org,v.Dst,v.Lnext.Dst)<=0);){var R=p.connect(v.Lnext,v);v=R.Sym}v=v.Lprev}else{for(;v.Lnext!==M&&(o.edgeGoesRight(M.Lprev)||o.edgeSign(M.Dst,M.Org,M.Lprev.Org)>=0);){var R=p.connect(M,M.Lprev);M=R.Sym}M=M.Lnext}for(a(v.Lnext!==M);v.Lnext.Lnext!==M;){var R=p.connect(v.Lnext,v);v=R.Sym}return!0},tessellateInterior_:function(p){var m,M;for(m=p.fHead.next;m!==p.fHead;m=M)if(M=m.next,m.inside&&!this.tessellateMonoRegion_(p,m))return!1;return!0},discardExterior_:function(p){var m,M;for(m=p.fHead.next;m!==p.fHead;m=M)M=m.next,m.inside||p.zapFace(m)},setWindingNumber_:function(p,m,M){var v,R;for(v=p.eHead.next;v!==p.eHead;v=R)R=v.next,v.Rface.inside!==v.Lface.inside?v.winding=v.Lface.inside?m:-m:M?p.delete(v):v.winding=0},getNeighbourFace_:function(p){return!p.Rface||!p.Rface.inside?-1:p.Rface.n},outputPolymesh_:function(p,m,M,v){var R,b,P,D=0,z=0,j,A;for(M>3&&p.mergeConvexFaces(M),R=p.vHead.next;R!==p.vHead;R=R.next)R.n=-1;for(b=p.fHead.next;b!==p.fHead;b=b.next)if(b.n=-1,!!b.inside){P=b.anEdge,j=0;do R=P.Org,R.n===-1&&(R.n=z,z++),j++,P=P.Lnext;while(P!==b.anEdge);a(j<=M),b.n=D,++D}for(this.elementCount=D,m===i.CONNECTED_POLYGONS&&(D*=2),this.elements=[],this.elements.length=D*M,this.vertexCount=z,this.vertices=[],this.vertices.length=z*v,this.vertexIndices=[],this.vertexIndices.length=z,R=p.vHead.next;R!==p.vHead;R=R.next)if(R.n!==-1){var k=R.n*v;this.vertices[k+0]=R.coords[0],this.vertices[k+1]=R.coords[1],v>2&&(this.vertices[k+2]=R.coords[2]),this.vertexIndices[R.n]=R.idx}var N=0;for(b=p.fHead.next;b!==p.fHead;b=b.next)if(b.inside){P=b.anEdge,j=0;do R=P.Org,this.elements[N++]=R.n,j++,P=P.Lnext;while(P!==b.anEdge);for(A=j;A<M;++A)this.elements[N++]=-1;if(m===i.CONNECTED_POLYGONS){P=b.anEdge;do this.elements[N++]=this.getNeighbourFace_(P),P=P.Lnext;while(P!==b.anEdge);for(A=j;A<M;++A)this.elements[N++]=-1}}},outputContours_:function(p,m){var M,v,R,b=0,P=0;for(this.vertexCount=0,this.elementCount=0,M=p.fHead.next;M!==p.fHead;M=M.next)if(M.inside){R=v=M.anEdge;do this.vertexCount++,v=v.Lnext;while(v!==R);this.elementCount++}this.elements=[],this.elements.length=this.elementCount*2,this.vertices=[],this.vertices.length=this.vertexCount*m,this.vertexIndices=[],this.vertexIndices.length=this.vertexCount;var D=0,z=0,j=0;for(b=0,M=p.fHead.next;M!==p.fHead;M=M.next)if(M.inside){P=0,R=v=M.anEdge;do this.vertices[D++]=v.Org.coords[0],this.vertices[D++]=v.Org.coords[1],m>2&&(this.vertices[D++]=v.Org.coords[2]),this.vertexIndices[z++]=v.Org.idx,P++,v=v.Lnext;while(v!==R);this.elements[j++]=b,this.elements[j++]=P,b+=P}},addContour:function(p,m){var M,v;for(this.mesh===null&&(this.mesh=new h),p<2&&(p=2),p>3&&(p=3),M=null,v=0;v<m.length;v+=p)M===null?(M=this.mesh.makeEdge(),this.mesh.splice(M,M.Sym)):(this.mesh.splitEdge(M),M=M.Lnext),M.Org.coords[0]=m[v+0],M.Org.coords[1]=m[v+1],p>2?M.Org.coords[2]=m[v+2]:M.Org.coords[2]=0,M.Org.idx=this.vertexIndexCounter++,M.winding=1,M.Sym.winding=-1},tesselate:function(p,m,M,v,R){if(this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,R&&(this.normal[0]=R[0],this.normal[1]=R[1],this.normal[2]=R[2]),this.windingRule=p,v<2&&(v=2),v>3&&(v=3),!this.mesh)return!1;this.projectPolygon_(),C.computeInterior(this);var b=this.mesh;return m===i.BOUNDARY_CONTOURS?this.setWindingNumber_(b,1,!0):this.tessellateInterior_(b),b.check(),m===i.BOUNDARY_CONTOURS?this.outputContours_(b,v):this.outputPolymesh_(b,m,M,v),!0}}},function(e,t){e.exports=i;var n=Object.prototype.hasOwnProperty;function i(){for(var o={},a=0;a<arguments.length;a++){var c=arguments[a];for(var l in c)n.call(c,l)&&(o[l]=c[l])}return o}},function(e,t,n){n.r(t),n.d(t,"createShaders",function(){return d}),n.d(t,"applyShader",function(){return f}),n.d(t,"createCloudShaders",function(){return y}),n.d(t,"applyCloudShader",function(){return S});var i=n(19),o=n.n(i),a=n(83),c=n(84),l=n(85),u=n(86);n(1).glMatrix.setMatrixArrayType(Array);var h=Symbol("shaders");function d(E){E[h]=[];for(var C=0;C<16;C++){var L=[],T=!!(C&1),p=!!(C&2),m=!!(C&4),M=!!(C&8);T&&L.push("#define TEXTURE 1"),p&&L.push("#define FILTER 1"),m&&L.push("#define GRADIENT 1"),M&&L.push("#define CLIPPATH 1");var v="".concat(L.join(`
42
+ `),`
43
+ `),R=[];T&&R.push("uniform sampler2D u_texSampler;"),M&&R.push("uniform sampler2D u_clipSampler;"),E[h][C]=[v+R.join(`
44
+ `)+c.default,v+a.default]}}function f(E){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},L=C.hasTexture,T=L===void 0?!1:L,p=C.hasFilter,m=p===void 0?!1:p,M=C.hasGradient,v=M===void 0?!1:M,R=C.hasClipPath,b=R===void 0?!1:R,P=T|m<<1|v<<2|b<<3,D=E[h][P];Array.isArray(D)&&(D=E.createProgram.apply(E,o()(D)),E[h][P]=D),E.program!==D&&E.useProgram(D,{a_color:{type:"UNSIGNED_BYTE",normalize:!0}})}var g=[];function y(E){for(var C=0;C<64;C++){var L=[],T=!!(C&1),p=!!(C&2),m=!!(C&4),M=!!(C&8),v=!!(C&16),R=!!(C&32);T&&L.push("#define TEXTURE 1"),p&&L.push("#define FILTER 1"),m&&L.push("#define GRADIENT 1"),M&&L.push("#define CLOUDCOLOR 1"),v&&L.push("#define CLOUDFILTER 1"),R&&L.push("#define CLIPPATH 1");var b="".concat(L.join(`
45
+ `),`
46
+ `),P=[];if(T){P.push("uniform sampler2D u_texSampler;");for(var D=0;D<12;D++)P.push("uniform sampler2D u_texFrame".concat(D,";"))}R&&P.push("uniform sampler2D u_clipSampler;"),g[C]=[b+P.join(`
47
+ `)+u.default,b+l.default]}}function S(E){var C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},L=C.hasTexture,T=L===void 0?!1:L,p=C.hasFilter,m=p===void 0?!1:p,M=C.hasGradient,v=M===void 0?!1:M,R=C.hasCloudColor,b=R===void 0?!1:R,P=C.hasCloudFilter,D=P===void 0?!1:P,z=C.hasClipPath,j=z===void 0?!1:z,A=T|m<<1|v<<2|b<<3|D<<4|j<<5,k=g[A];Array.isArray(k)&&(k=E.createProgram.apply(E,o()(k)),g[A]=k),E.program!==k&&E.useProgram(k,{a_color:{type:"UNSIGNED_BYTE",normalize:!0},a_fillCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_strokeCloudColor:{type:"UNSIGNED_BYTE",normalize:!0},a_frameIndex:{type:"UNSIGNED_BYTE",normalize:!1}})}},function(e,t,n){n.r(t),t.default=`attribute vec3 a_vertexPosition;
48
+ attribute vec4 a_color;
49
+ varying vec4 vColor;
50
+ varying float flagBackground;
51
+ uniform vec2 u_resolution;
52
+ uniform mat3 viewMatrix;
53
+ uniform mat3 projectionMatrix;
54
+
55
+ #ifdef TEXTURE
56
+ attribute vec3 a_vertexTextureCoord;
57
+ varying vec3 vTextureCoord;
58
+ attribute vec4 a_sourceRect;
59
+ varying vec4 vSourceRect;
60
+ #endif
61
+
62
+ #ifdef CLIPPATH
63
+ attribute vec2 a_clipUV;
64
+ varying vec2 vClipUV;
65
+ #endif
66
+
67
+ #ifdef GRADIENT
68
+ uniform float u_radialGradientVector[6];
69
+ varying vec3 vGradientVector1;
70
+ varying vec3 vGradientVector2;
71
+ #endif
72
+
73
+ void main() {
74
+ gl_PointSize = 1.0;
75
+
76
+ vec3 pos = projectionMatrix * viewMatrix * vec3(a_vertexPosition.xy, 1.0);
77
+ gl_Position = vec4(pos.xy, 1.0, 1.0);
78
+
79
+ #ifdef GRADIENT
80
+ vec3 vg1 = viewMatrix * vec3(u_radialGradientVector[0], u_radialGradientVector[1], 1.0);
81
+ vec3 vg2 = viewMatrix * vec3(u_radialGradientVector[3], u_radialGradientVector[4], 1.0);
82
+ float h = u_resolution.y;
83
+ vg1.y = h - vg1.y;
84
+ vg2.y = h - vg2.y;
85
+ vGradientVector1 = vec3(vg1.xy, u_radialGradientVector[2]);
86
+ vGradientVector2 = vec3(vg2.xy, u_radialGradientVector[5]);
87
+ #endif
88
+
89
+ flagBackground = a_vertexPosition.z;
90
+ vColor = a_color;
91
+
92
+ #ifdef TEXTURE
93
+ vTextureCoord = a_vertexTextureCoord;
94
+ vSourceRect = a_sourceRect;
95
+ #endif
96
+
97
+ #ifdef CLIPPATH
98
+ vClipUV = a_clipUV;
99
+ #endif
100
+ }`},function(e,t,n){n.r(t),t.default=`precision mediump float;
101
+
102
+ varying vec4 vColor;
103
+ varying float flagBackground;
104
+
105
+ #ifdef TEXTURE
106
+ varying vec3 vTextureCoord;
107
+ varying vec4 vSourceRect;
108
+ #endif
109
+
110
+ #ifdef CLIPPATH
111
+ varying vec2 vClipUV;
112
+ #endif
113
+
114
+ #ifdef FILTER
115
+ uniform int u_filterFlag;
116
+ uniform float u_colorMatrix[20];
117
+ #endif
118
+
119
+ #ifdef GRADIENT
120
+ varying vec3 vGradientVector1;
121
+ varying vec3 vGradientVector2;
122
+ uniform float u_colorSteps[40];
123
+ uniform int u_gradientType;
124
+ // uniform float u_radialGradientVector[6];
125
+
126
+ void gradient(inout vec4 color, vec3 gv1, vec3 gv2, float colorSteps[40]) {
127
+ float t;
128
+ // center circle radius
129
+ float cr = gv1.z;
130
+ // focal circle radius
131
+ float fr = gv2.z;
132
+
133
+ if(cr > 0.0 || fr > 0.0) {
134
+ // radial gradient
135
+ vec2 center = gv1.xy;
136
+ vec2 focal = gv2.xy;
137
+ float x = focal.x - gl_FragCoord.x;
138
+ float y = focal.y - gl_FragCoord.y;
139
+ float dx = focal.x - center.x;
140
+ float dy = focal.y - center.y;
141
+ float dr = cr - fr;
142
+ float a = dx * dx + dy * dy - dr * dr;
143
+ float b = -2.0 * (y * dy + x * dx + fr * dr);
144
+ float c = x * x + y * y - fr * fr;
145
+ t = 1.0 - 0.5 * (1.0 / a) * (-b + sqrt(b * b - 4.0 * a * c));
146
+ } else {
147
+ // linear gradient
148
+ vec2 v1 = gl_FragCoord.xy - gv1.xy;
149
+ vec2 v2 = gv2.xy - gv1.xy;
150
+ t = (v1.x * v2.x + v1.y * v2.y) / (v2.x * v2.x + v2.y * v2.y);
151
+ }
152
+
153
+ vec4 colors[8];
154
+ colors[0] = vec4(colorSteps[1], colorSteps[2], colorSteps[3], colorSteps[4]);
155
+ colors[1] = vec4(colorSteps[6], colorSteps[7], colorSteps[8], colorSteps[9]);
156
+ colors[2] = vec4(colorSteps[11], colorSteps[12], colorSteps[13], colorSteps[14]);
157
+ colors[3] = vec4(colorSteps[16], colorSteps[17], colorSteps[18], colorSteps[19]);
158
+ colors[4] = vec4(colorSteps[21], colorSteps[22], colorSteps[23], colorSteps[24]);
159
+ colors[5] = vec4(colorSteps[26], colorSteps[27], colorSteps[28], colorSteps[29]);
160
+ colors[6] = vec4(colorSteps[31], colorSteps[32], colorSteps[33], colorSteps[34]);
161
+ colors[7] = vec4(colorSteps[36], colorSteps[37], colorSteps[38], colorSteps[39]);
162
+
163
+ float steps[8];
164
+ steps[0] = colorSteps[0];
165
+ steps[1] = colorSteps[5];
166
+ steps[2] = colorSteps[10];
167
+ steps[3] = colorSteps[15];
168
+ steps[4] = colorSteps[20];
169
+ steps[5] = colorSteps[25];
170
+ steps[6] = colorSteps[30];
171
+ steps[7] = colorSteps[35];
172
+
173
+ color = colors[0];
174
+ for (int i = 1; i < 8; i++) {
175
+ if (steps[i] < 0.0 || steps[i] > 1.0) {
176
+ break;
177
+ }
178
+ if(steps[i] == steps[i - 1]) {
179
+ color = colors[i];
180
+ } else {
181
+ color = mix(color, colors[i], clamp((t - steps[i - 1]) / (steps[i] - steps[i - 1]), 0.0, 1.0));
182
+ }
183
+ if (steps[i] >= t) {
184
+ break;
185
+ }
186
+ }
187
+ }
188
+ #endif
189
+
190
+ #ifdef FILTER
191
+ void transformColor(inout vec4 color, in float colorMatrix[20]) {
192
+ float r = color.r, g = color.g, b = color.b, a = color.a;
193
+ color[0] = colorMatrix[0] * r + colorMatrix[1] * g + colorMatrix[2] * b + colorMatrix[3] * a + colorMatrix[4];
194
+ color[1] = colorMatrix[5] * r + colorMatrix[6] * g + colorMatrix[7] * b + colorMatrix[8] * a + colorMatrix[9];
195
+ color[2] = colorMatrix[10] * r + colorMatrix[11] * g + colorMatrix[12] * b + colorMatrix[13] * a + colorMatrix[14];
196
+ color[3] = colorMatrix[15] * r + colorMatrix[16] * g + colorMatrix[17] * b + colorMatrix[18] * a + colorMatrix[19];
197
+ }
198
+ #endif
199
+
200
+ void main() {
201
+ vec4 color = vColor;
202
+ float opacity = abs(flagBackground);
203
+
204
+ #ifdef GRADIENT
205
+ if(u_gradientType > 0 && flagBackground > 0.0 || u_gradientType == 0 && flagBackground <= 0.0) {
206
+ gradient(color, vGradientVector1, vGradientVector2, u_colorSteps);
207
+ }
208
+ #endif
209
+
210
+ if(opacity < 1.0) {
211
+ color.a *= opacity;
212
+ }
213
+
214
+ #ifdef TEXTURE
215
+ if(flagBackground > 0.0) {
216
+ vec3 texCoord = vTextureCoord;
217
+
218
+ if(texCoord.z == 1.0) {
219
+ texCoord = fract(texCoord);
220
+ }
221
+
222
+ if(texCoord.x <= 1.0 && texCoord.x >= 0.0
223
+ && texCoord.y <= 1.0 && texCoord.y >= 0.0) {
224
+ if(vSourceRect.z > 0.0) {
225
+ texCoord.x = vSourceRect.x + texCoord.x * vSourceRect.z;
226
+ texCoord.y = 1.0 - (vSourceRect.y + (1.0 - texCoord.y) * vSourceRect.w);
227
+ }
228
+ vec4 texColor = texture2D(u_texSampler, texCoord.xy);
229
+ float alpha = texColor.a;
230
+ if(opacity < 1.0) {
231
+ texColor.a *= opacity;
232
+ alpha *= mix(0.465, 1.0, opacity);
233
+ }
234
+ // color = mix(color, texColor, texColor.a);
235
+ color.rgb = mix(color.rgb, texColor.rgb, alpha);
236
+ // color.rgb = mix(texColor.rgb, color.rgb, color.a);
237
+ color.rgb = mix(texColor.rgb, color.rgb, clamp(color.a / max(0.0001, texColor.a), 0.0, 1.0));
238
+ color.a = texColor.a + (1.0 - texColor.a) * color.a;
239
+ }
240
+ }
241
+ #endif
242
+
243
+ #ifdef FILTER
244
+ if(u_filterFlag > 0) {
245
+ transformColor(color, u_colorMatrix);
246
+ }
247
+ #endif
248
+
249
+ #ifdef CLIPPATH
250
+ float clip = texture2D(u_clipSampler, vClipUV).r;
251
+ color *= clip;
252
+ #endif
253
+
254
+ gl_FragColor = color;
255
+ }`},function(e,t,n){n.r(t),t.default=`attribute vec3 a_vertexPosition;
256
+ attribute vec4 a_color;
257
+ varying vec4 vColor;
258
+ varying float flagBackground;
259
+ attribute vec3 a_transform0;
260
+ attribute vec3 a_transform1;
261
+ uniform vec2 u_resolution;
262
+ uniform mat3 viewMatrix;
263
+ uniform mat3 projectionMatrix;
264
+
265
+ #ifdef TEXTURE
266
+ attribute vec3 a_vertexTextureCoord;
267
+ varying vec3 vTextureCoord;
268
+ attribute float a_frameIndex;
269
+ varying float frameIndex;
270
+ attribute vec4 a_sourceRect;
271
+ varying vec4 vSourceRect;
272
+ #endif
273
+
274
+ #ifdef CLIPPATH
275
+ attribute vec2 a_clipUV;
276
+ varying vec2 vClipUV;
277
+ #endif
278
+
279
+ #ifdef CLOUDFILTER
280
+ attribute vec4 a_colorCloud0;
281
+ attribute vec4 a_colorCloud1;
282
+ attribute vec4 a_colorCloud2;
283
+ attribute vec4 a_colorCloud3;
284
+ attribute vec4 a_colorCloud4;
285
+ varying vec4 colorCloud0;
286
+ varying vec4 colorCloud1;
287
+ varying vec4 colorCloud2;
288
+ varying vec4 colorCloud3;
289
+ varying vec4 colorCloud4;
290
+ #endif
291
+
292
+ #ifdef CLOUDCOLOR
293
+ attribute vec4 a_fillCloudColor;
294
+ attribute vec4 a_strokeCloudColor;
295
+ #endif
296
+
297
+ #ifdef GRADIENT
298
+ uniform float u_radialGradientVector[6];
299
+ varying vec3 vGradientVector1;
300
+ varying vec3 vGradientVector2;
301
+ #endif
302
+
303
+ void main() {
304
+ gl_PointSize = 1.0;
305
+
306
+ mat3 modelMatrix = mat3(
307
+ a_transform0.x, a_transform1.x, 0,
308
+ a_transform0.y, a_transform1.y, 0,
309
+ a_transform0.z, a_transform1.z, 1
310
+ );
311
+
312
+ vec3 pos = projectionMatrix * viewMatrix * modelMatrix * vec3(a_vertexPosition.xy, 1.0);
313
+ gl_Position = vec4(pos.xy, 1.0, 1.0);
314
+
315
+ #ifdef GRADIENT
316
+ vec3 vg1 = viewMatrix * vec3(u_radialGradientVector[0], u_radialGradientVector[1], 1.0);
317
+ vec3 vg2 = viewMatrix * vec3(u_radialGradientVector[3], u_radialGradientVector[4], 1.0);
318
+ float h = u_resolution.y;
319
+ vg1.y = h - vg1.y;
320
+ vg2.y = h - vg2.y;
321
+ vGradientVector1 = vec3(vg1.xy, u_radialGradientVector[2]);
322
+ vGradientVector2 = vec3(vg2.xy, u_radialGradientVector[5]);
323
+ #endif
324
+
325
+ flagBackground = a_vertexPosition.z;
326
+
327
+ #ifdef CLOUDCOLOR
328
+ if(flagBackground > 0.0) {
329
+ vColor = mix(a_color, a_fillCloudColor, a_fillCloudColor.a);
330
+ } else {
331
+ vColor = mix(a_color, a_strokeCloudColor, a_strokeCloudColor.a);
332
+ }
333
+ #else
334
+ vColor = a_color;
335
+ #endif
336
+
337
+ #ifdef TEXTURE
338
+ vTextureCoord = a_vertexTextureCoord;
339
+ frameIndex = a_frameIndex;
340
+ vSourceRect = a_sourceRect;
341
+ #endif
342
+
343
+ #ifdef CLIPPATH
344
+ vClipUV = a_clipUV;
345
+ #endif
346
+
347
+ #ifdef CLOUDFILTER
348
+ colorCloud0 = a_colorCloud0;
349
+ colorCloud1 = a_colorCloud1;
350
+ colorCloud2 = a_colorCloud2;
351
+ colorCloud3 = a_colorCloud3;
352
+ colorCloud4 = a_colorCloud4;
353
+ #endif
354
+ }`},function(e,t,n){n.r(t),t.default=`precision mediump float;
355
+
356
+ varying vec4 vColor;
357
+ varying float flagBackground;
358
+
359
+ #ifdef TEXTURE
360
+ varying float frameIndex;
361
+ varying vec3 vTextureCoord;
362
+ varying vec4 vSourceRect;
363
+ #endif
364
+
365
+ #ifdef CLIPPATH
366
+ varying vec2 vClipUV;
367
+ #endif
368
+
369
+ #ifdef FILTER
370
+ uniform int u_filterFlag;
371
+ uniform float u_colorMatrix[20];
372
+ #endif
373
+
374
+ #ifdef CLOUDFILTER
375
+ varying vec4 colorCloud0;
376
+ varying vec4 colorCloud1;
377
+ varying vec4 colorCloud2;
378
+ varying vec4 colorCloud3;
379
+ varying vec4 colorCloud4;
380
+ #endif
381
+
382
+ #ifdef GRADIENT
383
+ varying vec3 vGradientVector1;
384
+ varying vec3 vGradientVector2;
385
+ uniform float u_colorSteps[40];
386
+ uniform int u_gradientType;
387
+
388
+ void gradient(inout vec4 color, vec3 gv1, vec3 gv2, float colorSteps[40]) {
389
+ float t;
390
+ // center circle radius
391
+ float cr = gv1.z;
392
+ // focal circle radius
393
+ float fr = gv2.z;
394
+
395
+ if(cr > 0.0 || fr > 0.0) {
396
+ // radial gradient
397
+ vec2 center = gv1.xy;
398
+ vec2 focal = gv2.xy;
399
+ float x = focal.x - gl_FragCoord.x;
400
+ float y = focal.y - gl_FragCoord.y;
401
+ float dx = focal.x - center.x;
402
+ float dy = focal.y - center.y;
403
+ float dr = cr - fr;
404
+ float a = dx * dx + dy * dy - dr * dr;
405
+ float b = -2.0 * (y * dy + x * dx + fr * dr);
406
+ float c = x * x + y * y - fr * fr;
407
+ t = 1.0 - 0.5 * (1.0 / a) * (-b + sqrt(b * b - 4.0 * a * c));
408
+ } else {
409
+ // linear gradient
410
+ vec2 v1 = gl_FragCoord.xy - gv1.xy;
411
+ vec2 v2 = gv2.xy - gv1.xy;
412
+ t = (v1.x * v2.x + v1.y * v2.y) / (v2.x * v2.x + v2.y * v2.y);
413
+ }
414
+
415
+ vec4 colors[8];
416
+ colors[0] = vec4(colorSteps[1], colorSteps[2], colorSteps[3], colorSteps[4]);
417
+ colors[1] = vec4(colorSteps[6], colorSteps[7], colorSteps[8], colorSteps[9]);
418
+ colors[2] = vec4(colorSteps[11], colorSteps[12], colorSteps[13], colorSteps[14]);
419
+ colors[3] = vec4(colorSteps[16], colorSteps[17], colorSteps[18], colorSteps[19]);
420
+ colors[4] = vec4(colorSteps[21], colorSteps[22], colorSteps[23], colorSteps[24]);
421
+ colors[5] = vec4(colorSteps[26], colorSteps[27], colorSteps[28], colorSteps[29]);
422
+ colors[6] = vec4(colorSteps[31], colorSteps[32], colorSteps[33], colorSteps[34]);
423
+ colors[7] = vec4(colorSteps[36], colorSteps[37], colorSteps[38], colorSteps[39]);
424
+
425
+ float steps[8];
426
+ steps[0] = colorSteps[0];
427
+ steps[1] = colorSteps[5];
428
+ steps[2] = colorSteps[10];
429
+ steps[3] = colorSteps[15];
430
+ steps[4] = colorSteps[20];
431
+ steps[5] = colorSteps[25];
432
+ steps[6] = colorSteps[30];
433
+ steps[7] = colorSteps[35];
434
+
435
+ color = colors[0];
436
+ for (int i = 1; i < 8; i++) {
437
+ if (steps[i] < 0.0 || steps[i] > 1.0) {
438
+ break;
439
+ }
440
+ if(steps[i] == steps[i - 1]) {
441
+ color = colors[i];
442
+ } else {
443
+ color = mix(color, colors[i], clamp((t - steps[i - 1]) / (steps[i] - steps[i - 1]), 0.0, 1.0));
444
+ }
445
+ if (steps[i] >= t) {
446
+ break;
447
+ }
448
+ }
449
+ }
450
+ #endif
451
+
452
+ void transformColor(inout vec4 color, in float colorMatrix[20]) {
453
+ float r = color.r, g = color.g, b = color.b, a = color.a;
454
+ color[0] = colorMatrix[0] * r + colorMatrix[1] * g + colorMatrix[2] * b + colorMatrix[3] * a + colorMatrix[4];
455
+ color[1] = colorMatrix[5] * r + colorMatrix[6] * g + colorMatrix[7] * b + colorMatrix[8] * a + colorMatrix[9];
456
+ color[2] = colorMatrix[10] * r + colorMatrix[11] * g + colorMatrix[12] * b + colorMatrix[13] * a + colorMatrix[14];
457
+ color[3] = colorMatrix[15] * r + colorMatrix[16] * g + colorMatrix[17] * b + colorMatrix[18] * a + colorMatrix[19];
458
+ }
459
+
460
+ #ifdef CLOUDFILTER
461
+ void buildCloudColor(inout float colorCloudMatrix[20]) {
462
+ colorCloudMatrix[0] = colorCloud0[0];
463
+ colorCloudMatrix[1] = colorCloud1[0];
464
+ colorCloudMatrix[2] = colorCloud2[0];
465
+ colorCloudMatrix[3] = colorCloud3[0];
466
+ colorCloudMatrix[4] = colorCloud4[0];
467
+
468
+ colorCloudMatrix[5] = colorCloud0[1];
469
+ colorCloudMatrix[6] = colorCloud1[1];
470
+ colorCloudMatrix[7] = colorCloud2[1];
471
+ colorCloudMatrix[8] = colorCloud3[1];
472
+ colorCloudMatrix[9] = colorCloud4[1];
473
+
474
+ colorCloudMatrix[10] = colorCloud0[2];
475
+ colorCloudMatrix[11] = colorCloud1[2];
476
+ colorCloudMatrix[12] = colorCloud2[2];
477
+ colorCloudMatrix[13] = colorCloud3[2];
478
+ colorCloudMatrix[14] = colorCloud4[2];
479
+
480
+ colorCloudMatrix[15] = colorCloud0[3];
481
+ colorCloudMatrix[16] = colorCloud1[3];
482
+ colorCloudMatrix[17] = colorCloud2[3];
483
+ colorCloudMatrix[18] = colorCloud3[3];
484
+ colorCloudMatrix[19] = colorCloud4[3];
485
+ }
486
+ #endif
487
+
488
+ void main() {
489
+ vec4 color = vColor;
490
+ float opacity = abs(flagBackground);
491
+
492
+ #ifdef GRADIENT
493
+ if(u_gradientType > 0 && flagBackground > 0.0 || u_gradientType == 0 && flagBackground <= 0.0) {
494
+ gradient(color, vGradientVector1, vGradientVector2, u_colorSteps);
495
+ }
496
+ #endif
497
+
498
+ if(opacity < 1.0) {
499
+ color.a *= opacity;
500
+ }
501
+
502
+ #ifdef TEXTURE
503
+ if(flagBackground > 0.0) {
504
+ vec3 texCoord = vTextureCoord;
505
+
506
+ if(texCoord.z == 1.0) {
507
+ texCoord = fract(texCoord);
508
+ }
509
+
510
+ if(texCoord.x <= 1.0 && texCoord.x >= 0.0
511
+ && texCoord.y <= 1.0 && texCoord.y >= 0.0) {
512
+ if(vSourceRect.z > 0.0) {
513
+ texCoord.x = vSourceRect.x + texCoord.x * vSourceRect.z;
514
+ texCoord.y = 1.0 - (vSourceRect.y + (1.0 - texCoord.y) * vSourceRect.w);
515
+ }
516
+ if(frameIndex < 0.0) {
517
+ vec4 texColor = texture2D(u_texSampler, texCoord.xy);
518
+ color = mix(color, texColor, texColor.a);
519
+ } else {
520
+ int index = int(floor(clamp(0.0, 11.0, frameIndex)));
521
+ vec4 texColor;
522
+ if(index == 0) texColor = texture2D(u_texFrame0, texCoord.xy);
523
+ else if(index == 1) texColor = texture2D(u_texFrame1, texCoord.xy);
524
+ else if(index == 2) texColor = texture2D(u_texFrame2, texCoord.xy);
525
+ else if(index == 3) texColor = texture2D(u_texFrame3, texCoord.xy);
526
+ else if(index == 4) texColor = texture2D(u_texFrame4, texCoord.xy);
527
+ else if(index == 5) texColor = texture2D(u_texFrame5, texCoord.xy);
528
+ else if(index == 6) texColor = texture2D(u_texFrame6, texCoord.xy);
529
+ else if(index == 7) texColor = texture2D(u_texFrame7, texCoord.xy);
530
+ else if(index == 8) texColor = texture2D(u_texFrame8, texCoord.xy);
531
+ else if(index == 9) texColor = texture2D(u_texFrame9, texCoord.xy);
532
+ else if(index == 10) texColor = texture2D(u_texFrame10, texCoord.xy);
533
+ else texColor = texture2D(u_texFrame11, texCoord.xy);
534
+ float alpha = texColor.a;
535
+ if(opacity < 1.0) {
536
+ texColor.a *= opacity;
537
+ alpha *= mix(0.465, 1.0, opacity);
538
+ }
539
+ // color = mix(color, texColor, texColor.a);
540
+ color.rgb = mix(color.rgb, texColor.rgb, alpha);
541
+ // color.rgb = mix(texColor.rgb, color.rgb, color.a);
542
+ color.rgb = mix(texColor.rgb, color.rgb, clamp(color.a / max(0.0001, texColor.a), 0.0, 1.0));
543
+ color.a = texColor.a + (1.0 - texColor.a) * color.a;
544
+ }
545
+ }
546
+ }
547
+ #endif
548
+
549
+ #ifdef FILTER
550
+ if(u_filterFlag > 0) {
551
+ transformColor(color, u_colorMatrix);
552
+ }
553
+ #endif
554
+
555
+ #ifdef CLOUDFILTER
556
+ float colorCloudMatrix[20];
557
+ buildCloudColor(colorCloudMatrix);
558
+ transformColor(color, colorCloudMatrix);
559
+ #endif
560
+
561
+ #ifdef CLIPPATH
562
+ float clip = texture2D(u_clipSampler, vClipUV).r;
563
+ color *= clip;
564
+ #endif
565
+
566
+ gl_FragColor = color;
567
+ }`}])})})(vm);var ft=vm.exports;Ze(Array);function sh(s,r){const e=s.trim().match(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin)$/);e?s={size:parseFloat(e[1]),unit:e[2]}:s={size:parseFloat(s),unit:"px"};let{size:t,unit:n}=s;if(n==="pt")t/=.75;else if(n==="pc")t*=16;else if(n==="in")t*=96;else if(n==="cm")t*=96/2.54;else if(n==="mm")t*=96/25.4;else if(n==="em"||n==="rem"||n==="ex"){if(!r&&typeof getComputedStyle=="function"&&typeof document<"u"){const i=getComputedStyle(document.documentElement).fontSize;i?r=sh(i,16):r=16}t*=r,n==="ex"&&(t/=2)}else if(n==="q")t*=96/25.4/4;else if(n==="vw"||n==="vh"){if(typeof document<"u"){const i=n==="vw"?window.innerWidth||document.documentElement.clientWidth:window.innerHeight||document.documentElement.clientHeight;t*=i/100}}else if((n==="vmax"||n==="vmin")&&typeof document<"u"){const i=window.innerWidth||document.documentElement.clientWidth,o=window.innerHeight||document.documentElement.clientHeight;n==="vmax"?t*=Math.max(i,o)/100:t*=Math.min(i,o)/100}return t}function qe(s){if(s==null)return s;if(typeof s=="string"&&(s=sh(s)),!Number.isFinite(s))throw new TypeError("Invalid value");return s}function Mt(s,r=!1){return s===""?null:(typeof s=="string"&&(s=s.split(/[\s,]+/g)),Array.isArray(s)&&(r&&(s=s.map(qe)),s.length===1)?s[0]:s)}function iu(s,r){if(Array.isArray(s)&&Array.isArray(r)){if(s.length!==r.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!==r[e])return!1;return!0}return s==null&&r==null||s===r}Ze(Array);const Yc=Symbol.for("spritejs_setAttributeDefault"),Gc=Symbol.for("spritejs_declareAlias"),Rt=Symbol.for("spritejs_setAttribute"),gt=Symbol.for("spritejs_getAttribute"),Vd=Symbol.for("spritejs_attributes"),$d=Symbol.for("spritejs_changedAttrs"),aa=Symbol("subject"),qr=Symbol("attr"),Hc=Symbol("default"),vo=Symbol("alias");function GM(s,[r,e]){let t=ei(1,0,0,1,0,0);return[...s].forEach(([n,i])=>{if((r||e)&&(t=nu(Array.of(0,0,0,0,0,0),t,[r,e])),n==="matrix")t=Nr(t,t,i);else if(n==="offsetTranslate")t[4]+=i[0],t[5]+=i[1];else if(n==="offsetRotate")t=pm(Array.of(0,0,0,0,0,0),t,i);else if(n==="skew"){const[o,a]=i;t=Nr(t,t,ei(1,Math.tan(a),Math.tan(o),1,0,0))}else ym[n](t,t,i);(r||e)&&(t=nu(Array.of(0,0,0,0,0,0),t,[-r,-e]))}),t}const Mn=Symbol("transformMatrix"),Ns=Symbol("transforms"),ss=Symbol("changedAttrs"),Mm=Symbol("lastChangedAttr"),ca=Symbol("offsetFigure");function Mo(s,r,e){const t=s[qr][r];if(s[Rt](r,e,!1)||s[Mm]!==r){const i=s[Ns];i.has(r)&&i.delete(r),e&&(r==="rotate"&&(e=Math.PI*e/180),r==="scale"&&(e=e.map(o=>Math.abs(o)>1e-5?o:1/o>0?1e-5:-1e-5)),i.set(r,e)),s[Mn]=null,s[aa].onPropertyChange(r,e,t,s)}}function Qc(s){const r=s[ca],e=s.offsetDistance*r.getTotalLength(),t=r.getPointAtLength(e);if(t){const n=s[Ns];let i=s.offsetRotate;i==="auto"?i=t.angle:i==="reverse"?i=Math.PI+t.angle:i=Math.PI*i/180,n.set("offsetRotate",i),n.set("offsetTranslate",[t.x,t.y]),s[Mn]=null}}let oh=class{static setDefault(r,...e){return r[Yc](...e)}static declareAlias(r,...e){return r[Gc](...e)}static setAttribute(r,...e){return r[Rt](...e)}static getAttribute(r,...e){return r[gt](...e)}static getAttributes(r){return r[Vd]}static getChangedAttributes(r){return r[$d]}constructor(r){this[aa]=r,this[qr]={},this[Mn]=ei(1,0,0,1,0,0),this[Ns]=new Map,this[Hc]={},this[vo]=[],Object.defineProperty(r,"transformMatrix",{get:()=>(this[Mn]||(this[Mn]=GM(this[Ns],this.transformOrigin)),[...this[Mn]])}),this[Yc]({id:"",name:"",className:"",x:0,y:0,transformOrigin:[0,0],transform:"",translate:[0,0],rotate:0,scale:[1,1],skew:[0,0],opacity:1,zIndex:0,offsetPath:void 0,offsetDistance:0,offsetRotate:"auto",pointerEvents:"visible",filter:"none",display:""}),this[Gc]("class","pos"),this[ss]=new Set,this[ca]=new ft.Figure2D({scale:5,simplify:0})}get[$d](){const r={};return[...this[ss]].forEach(e=>{r[e]=this[qr][e]}),r}get[Vd](){const r=Object.assign({},this[qr]);for(let e=0;e<this[vo].length;e++){const t=this[vo][e];r[t]=this[t]}return r}[Yc](r){Object.assign(this[Hc],r),Object.assign(this[qr],r)}[Gc](...r){this[vo].push(...r)}[Rt](r,e,t=!0){const n=this[qr][r],i=this[aa];return e==null&&(e=this[Hc][r]),iu(n,e)?!1:(this[qr][r]=e,this[ss].has(r)&&this[ss].delete(r),this[ss].add(r),this[Mm]=r,t&&i.onPropertyChange(r,e,n,this),!0)}[gt](r){return this[qr][r]}set id(r){this[Rt]("id",r)}get id(){return this[gt]("id")}set name(r){this[Rt]("name",r)}get name(){return this[gt]("name")}set className(r){this[Rt]("className",r)}get className(){return this[gt]("className")}set class(r){this.className=r}get class(){return this.className}get x(){return this[gt]("x")}set x(r){this[Rt]("x",qe(r))}get y(){return this[gt]("y")}set y(r){this[Rt]("y",qe(r))}get pos(){return[this.x,this.y]}set pos(r){r=Mt(r),Array.isArray(r)||(r=[r,r]),this.x=r[0],this.y=r[1]}get transform(){return this[gt]("transform")}set transform(r){let e=null;if(Array.isArray(r)&&(e=r,r=`matrix(${r.map(qe).join()})`),typeof r=="string")r=r.replace(/\s*,\s*/g,",");else if(r!=null)throw new TypeError("Invalid transform value.");const t=this[qr].transform;if(this[Rt]("transform",r,!1)){const n=this[Ns];if(n.has("matrix")&&n.delete("matrix"),e)n.set("matrix",e);else if(r){const i=r.match(/(matrix|translate|rotate|scale|skew)\([^()]+\)/g);if(i){let o=ei(1,0,0,1,0,0);for(let a=0;a<i.length;a++){const l=i[a].match(/^(matrix|translate|rotate|scale|skew)\(([^()]+)\)/);if(l){let[,u,h]=l;u==="rotate"?h=Math.PI*parseFloat(h)/180:h=h.trim().split(/[\s,]+/).map(d=>qe(d)),u==="matrix"?o=Nr(o,o,h):u==="skew"?o=Nr(o,o,ei(1,Math.tan(h[1]),Math.tan(h[0]),1,0,0)):ym[u](o,o,h),n.set("matrix",o)}}}else throw new TypeError("Invalid transform value.")}this[Mn]=null,this[aa].onPropertyChange("transform",r,t,this)}}get transformOrigin(){return this[gt]("transformOrigin")}set transformOrigin(r){r=Mt(r,!0),r!=null&&!Array.isArray(r)&&(r=[r,r]),this[Rt]("transformOrigin",r)&&(this[Mn]=null)}get rotate(){return this[gt]("rotate")}set rotate(r){Mo(this,"rotate",r)}get translate(){return this[gt]("translate")}set translate(r){r=Mt(r,!0),r!=null&&!Array.isArray(r)&&(r=[r,r]),Mo(this,"translate",r)}get scale(){return this[gt]("scale")}set scale(r){r=Mt(r,!0),r!=null&&!Array.isArray(r)&&(r=[r,r]),Mo(this,"scale",r)}get skew(){return this[gt]("skew")}set skew(r){r=Mt(r,!0),r!=null&&!Array.isArray(r)&&(r=[r,r]),Mo(this,"skew",r)}get opacity(){return this[gt]("opacity")}set opacity(r){r!=null&&(r=Number(r)),this[Rt]("opacity",r)}get zIndex(){return this[gt]("zIndex")}set zIndex(r){r!=null&&(r=Number(r)),this[Rt]("zIndex",r)}get offsetPath(){return this[gt]("offsetPath")}set offsetPath(r){this[Rt]("offsetPath",r)&&(this[ca].beginPath(),r!=null&&this[ca].addPath(r),Qc(this))}get offsetDistance(){return this[gt]("offsetDistance")}set offsetDistance(r){this[Rt]("offsetDistance",qe(r))&&Qc(this)}get offsetRotate(){return this[gt]("offsetRotate")}set offsetRotate(r){this[Rt]("offsetRotate",r),Qc(this)}get pointerEvents(){return this[gt]("pointerEvents")}set pointerEvents(r){if(r!=null&&r!=="none"&&r!=="visible"&&r!=="visibleFill"&&r!=="visibleStroke"&&r!=="all")throw new TypeError("Invalid pointerEvents type.");this[Rt]("pointerEvents",r)}get filter(){return this[gt]("filter")}set filter(r){this[Rt]("filter",r)}get display(){return this[gt]("display")}set display(r){this[Rt]("display",r)}set offset(r){}};var en={},Za={},_s={},wm=function(s,r){return{value:r,done:!!s}},qi={},HM={}.toString,eo=function(s){return HM.call(s).slice(8,-1)},QM=eo,ah=Object("z").propertyIsEnumerable(0)?Object:function(s){return QM(s)=="String"?s.split(""):Object(s)},ch=function(s){if(s==null)throw TypeError("Can't call method on "+s);return s},qM=ah,ZM=ch,oi=function(s){return qM(ZM(s))},KM=!0,Sm={exports:{}},XM=Sm.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=XM);var Jt=Sm.exports,Tm={exports:{}},JM=Tm.exports={version:"2.6.12"};typeof __e=="number"&&(__e=JM);var Pt=Tm.exports,to=function(s){if(typeof s!="function")throw TypeError(s+" is not a function!");return s},_M=to,kn=function(s,r,e){if(_M(s),r===void 0)return s;switch(e){case 1:return function(t){return s.call(r,t)};case 2:return function(t,n){return s.call(r,t,n)};case 3:return function(t,n,i){return s.call(r,t,n,i)}}return function(){return s.apply(r,arguments)}},dr={},Or=function(s){return typeof s=="object"?s!==null:typeof s=="function"},ew=Or,un=function(s){if(!ew(s))throw TypeError(s+" is not an object!");return s},ai=function(s){try{return!!s()}catch{return!0}},fr=!ai(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7}),Yd=Or,su=Jt.document,tw=Yd(su)&&Yd(su.createElement),lh=function(s){return tw?su.createElement(s):{}},Cm=!fr&&!ai(function(){return Object.defineProperty(lh("div"),"a",{get:function(){return 7}}).a!=7}),wo=Or,uh=function(s,r){if(!wo(s))return s;var e,t;if(r&&typeof(e=s.toString)=="function"&&!wo(t=e.call(s))||typeof(e=s.valueOf)=="function"&&!wo(t=e.call(s))||!r&&typeof(e=s.toString)=="function"&&!wo(t=e.call(s)))return t;throw TypeError("Can't convert object to primitive value")},Gd=un,rw=Cm,nw=uh,iw=Object.defineProperty;dr.f=fr?Object.defineProperty:function(r,e,t){if(Gd(r),e=nw(e,!0),Gd(t),rw)try{return iw(r,e,t)}catch{}if("get"in t||"set"in t)throw TypeError("Accessors not supported!");return"value"in t&&(r[e]=t.value),r};var ro=function(s,r){return{enumerable:!(s&1),configurable:!(s&2),writable:!(s&4),value:r}},sw=dr,ow=ro,An=fr?function(s,r,e){return sw.f(s,r,ow(1,e))}:function(s,r,e){return s[r]=e,s},aw={}.hasOwnProperty,ci=function(s,r){return aw.call(s,r)},So=Jt,qc=Pt,Hd=kn,cw=An,lw=ci,To="prototype",Ft=function(s,r,e){var t=s&Ft.F,n=s&Ft.G,i=s&Ft.S,o=s&Ft.P,a=s&Ft.B,c=s&Ft.W,l=n?qc:qc[r]||(qc[r]={}),u=l[To],h=n?So:i?So[r]:(So[r]||{})[To],d,f,g;n&&(e=r);for(d in e)f=!t&&h&&h[d]!==void 0,!(f&&lw(l,d))&&(g=f?h[d]:e[d],l[d]=n&&typeof h[d]!="function"?e[d]:a&&f?Hd(g,So):c&&h[d]==g?function(y){var S=function(E,C,L){if(this instanceof y){switch(arguments.length){case 0:return new y;case 1:return new y(E);case 2:return new y(E,C)}return new y(E,C,L)}return y.apply(this,arguments)};return S[To]=y[To],S}(g):o&&typeof g=="function"?Hd(Function.call,g):g,o&&((l.virtual||(l.virtual={}))[d]=g,s&Ft.R&&u&&!u[d]&&cw(u,d,g)))};Ft.F=1;Ft.G=2;Ft.S=4;Ft.P=8;Ft.B=16;Ft.W=32;Ft.U=64;Ft.R=128;var _t=Ft,Im=An,uw=Math.ceil,hw=Math.floor,hh=function(s){return isNaN(s=+s)?0:(s>0?hw:uw)(s)},dw=hh,fw=Math.min,Ka=function(s){return s>0?fw(dw(s),9007199254740991):0},gw=hh,pw=Math.max,mw=Math.min,yw=function(s,r){return s=gw(s),s<0?pw(s+r,0):mw(s,r)},vw=oi,Mw=Ka,ww=yw,Sw=function(s){return function(r,e,t){var n=vw(r),i=Mw(n.length),o=ww(t,i),a;if(s&&e!=e){for(;i>o;)if(a=n[o++],a!=a)return!0}else for(;i>o;o++)if((s||o in n)&&n[o]===e)return s||o||0;return!s&&-1}},bm={exports:{}},Tw=Pt,Qd=Jt,qd="__core-js_shared__",Zd=Qd[qd]||(Qd[qd]={});(bm.exports=function(s,r){return Zd[s]||(Zd[s]=r!==void 0?r:{})})("versions",[]).push({version:Tw.version,mode:"pure",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"});var dh=bm.exports,Cw=0,Iw=Math.random(),Xa=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++Cw+Iw).toString(36))},Kd=dh("keys"),bw=Xa,fh=function(s){return Kd[s]||(Kd[s]=bw(s))},Xd=ci,Ew=oi,xw=Sw(!1),Rw=fh("IE_PROTO"),Em=function(s,r){var e=Ew(s),t=0,n=[],i;for(i in e)i!=Rw&&Xd(e,i)&&n.push(i);for(;r.length>t;)Xd(e,i=r[t++])&&(~xw(n,i)||n.push(i));return n},gh="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),kw=Em,Aw=gh,Zi=Object.keys||function(r){return kw(r,Aw)},Pw=dr,Dw=un,Lw=Zi,Nw=fr?Object.defineProperties:function(r,e){Dw(r);for(var t=Lw(e),n=t.length,i=0,o;n>i;)Pw.f(r,o=t[i++],e[o]);return r},Jd=Jt.document,xm=Jd&&Jd.documentElement,Ow=un,zw=Nw,_d=gh,Bw=fh("IE_PROTO"),Zc=function(){},ou="prototype",la=function(){var s=lh("iframe"),r=_d.length,e="<",t=">",n;for(s.style.display="none",xm.appendChild(s),s.src="javascript:",n=s.contentWindow.document,n.open(),n.write(e+"script"+t+"document.F=Object"+e+"/script"+t),n.close(),la=n.F;r--;)delete la[ou][_d[r]];return la()},ph=Object.create||function(r,e){var t;return r!==null?(Zc[ou]=Ow(r),t=new Zc,Zc[ou]=null,t[Bw]=r):t=la(),e===void 0?t:zw(t,e)},Rm={exports:{}},au=dh("wks"),jw=Xa,cu=Jt.Symbol,ef=typeof cu=="function",Fw=Rm.exports=function(s){return au[s]||(au[s]=ef&&cu[s]||(ef?cu:jw)("Symbol."+s))};Fw.store=au;var Yt=Rm.exports,Uw=dr.f,Ww=ci,tf=Yt("toStringTag"),no=function(s,r,e){s&&!Ww(s=e?s:s.prototype,tf)&&Uw(s,tf,{configurable:!0,value:r})},Vw=ph,$w=ro,Yw=no,km={};An(km,Yt("iterator"),function(){return this});var Gw=function(s,r,e){s.prototype=Vw(km,{next:$w(1,e)}),Yw(s,r+" Iterator")},Hw=ch,Ki=function(s){return Object(Hw(s))},Qw=ci,qw=Ki,rf=fh("IE_PROTO"),Zw=Object.prototype,Kw=Object.getPrototypeOf||function(s){return s=qw(s),Qw(s,rf)?s[rf]:typeof s.constructor=="function"&&s instanceof s.constructor?s.constructor.prototype:s instanceof Object?Zw:null},Kc=_t,Xw=Im,Jw=An,nf=qi,_w=Gw,eS=no,tS=Kw,Xc=Yt("iterator"),Jc=!([].keys&&"next"in[].keys()),rS="@@iterator",sf="keys",Co="values",nS=function(){return this},mh=function(s,r,e,t,n,i,o){_w(e,r,t);var a=function(L){if(!Jc&&L in h)return h[L];switch(L){case sf:return function(){return new e(this,L)};case Co:return function(){return new e(this,L)}}return function(){return new e(this,L)}},c=r+" Iterator",l=n==Co,u=!1,h=s.prototype,d=h[Xc]||h[rS]||n&&h[n],f=d||a(n),g=n?l?a("entries"):f:void 0,y=r=="Array"&&h.entries||d,S,E,C;if(y&&(C=tS(y.call(new s)),C!==Object.prototype&&C.next&&eS(C,c,!0)),l&&d&&d.name!==Co&&(u=!0,f=function(){return d.call(this)}),o&&(Jc||u||!h[Xc])&&Jw(h,Xc,f),nf[r]=f,nf[c]=nS,n)if(S={values:l?f:a(Co),keys:i?f:a(sf),entries:g},o)for(E in S)E in h||Xw(h,E,S[E]);else Kc(Kc.P+Kc.F*(Jc||u),r,S);return S},Io=wm,of=qi,iS=oi;mh(Array,"Array",function(s,r){this._t=iS(s),this._i=0,this._k=r},function(){var s=this._t,r=this._k,e=this._i++;return!s||e>=s.length?(this._t=void 0,Io(1)):r=="keys"?Io(0,e):r=="values"?Io(0,s[e]):Io(0,[e,s[e]])},"values");of.Arguments=of.Array;var sS=Jt,oS=An,af=qi,cf=Yt("toStringTag"),lf="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(",");for(var _c=0;_c<lf.length;_c++){var el=lf[_c],uf=sS[el],tl=uf&&uf.prototype;tl&&!tl[cf]&&oS(tl,cf,el),af[el]=af.Array}var aS=hh,cS=ch,lS=function(s){return function(r,e){var t=String(cS(r)),n=aS(e),i=t.length,o,a;return n<0||n>=i?s?"":void 0:(o=t.charCodeAt(n),o<55296||o>56319||n+1===i||(a=t.charCodeAt(n+1))<56320||a>57343?s?t.charAt(n):o:s?t.slice(n,n+2):(o-55296<<10)+(a-56320)+65536)}},uS=lS(!0);mh(String,"String",function(s){this._t=String(s),this._i=0},function(){var s=this._t,r=this._i,e;return r>=s.length?{value:void 0,done:!0}:(e=uS(s,r),this._i+=e.length,{value:e,done:!1})});var lu=eo,hS=Yt("toStringTag"),dS=lu(function(){return arguments}())=="Arguments",fS=function(s,r){try{return s[r]}catch{}},Ja=function(s){var r,e,t;return s===void 0?"Undefined":s===null?"Null":typeof(e=fS(r=Object(s),hS))=="string"?e:dS?lu(r):(t=lu(r))=="Object"&&typeof r.callee=="function"?"Arguments":t},gS=Ja,pS=Yt("iterator"),mS=qi,yS=Pt.isIterable=function(s){var r=Object(s);return r[pS]!==void 0||"@@iterator"in r||mS.hasOwnProperty(gS(r))},vS=yS,MS={default:vS,__esModule:!0},wS=Ja,SS=Yt("iterator"),TS=qi,yh=Pt.getIteratorMethod=function(s){if(s!=null)return s[SS]||s["@@iterator"]||TS[wS(s)]},CS=un,IS=yh,bS=Pt.getIterator=function(s){var r=IS(s);if(typeof r!="function")throw TypeError(s+" is not iterable!");return CS(r.call(s))},ES=bS,xS={default:ES,__esModule:!0};_s.__esModule=!0;var RS=MS,kS=Am(RS),AS=xS,PS=Am(AS);function Am(s){return s&&s.__esModule?s:{default:s}}_s.default=function(){function s(r,e){var t=[],n=!0,i=!1,o=void 0;try{for(var a=(0,PS.default)(r),c;!(n=(c=a.next()).done)&&(t.push(c.value),!(e&&t.length===e));n=!0);}catch(l){i=!0,o=l}finally{try{!n&&a.return&&a.return()}finally{if(i)throw o}}return t}return function(r,e){if(Array.isArray(r))return r;if((0,kS.default)(Object(r)))return s(r,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();var _a={},hf=un,Pm=function(s,r,e,t){try{return t?r(hf(e)[0],e[1]):r(e)}catch(i){var n=s.return;throw n!==void 0&&hf(n.call(s)),i}},DS=qi,LS=Yt("iterator"),NS=Array.prototype,Dm=function(s){return s!==void 0&&(DS.Array===s||NS[LS]===s)},OS=dr,zS=ro,BS=function(s,r,e){r in s?OS.f(s,r,zS(0,e)):s[r]=e},rl,df;function Lm(){if(df)return rl;df=1;var s=Yt("iterator"),r=!1;try{var e=[7][s]();e.return=function(){r=!0},Array.from(e,function(){throw 2})}catch{}return rl=function(t,n){if(!n&&!r)return!1;var i=!1;try{var o=[7],a=o[s]();a.next=function(){return{done:i=!0}},o[s]=function(){return a},t(o)}catch{}return i},rl}var jS=kn,nl=_t,FS=Ki,US=Pm,WS=Dm,VS=Ka,ff=BS,$S=yh;nl(nl.S+nl.F*!Lm()(function(s){Array.from(s)}),"Array",{from:function(r){var e=FS(r),t=typeof this=="function"?this:Array,n=arguments.length,i=n>1?arguments[1]:void 0,o=i!==void 0,a=0,c=$S(e),l,u,h,d;if(o&&(i=jS(i,n>2?arguments[2]:void 0,2)),c!=null&&!(t==Array&&WS(c)))for(d=c.call(e),u=new t;!(h=d.next()).done;a++)ff(u,a,o?US(d,i,[h.value,a],!0):h.value);else for(l=VS(e.length),u=new t(l);l>a;a++)ff(u,a,o?i(e[a],a):e[a]);return u.length=a,u}});var YS=Pt.Array.from,GS={default:YS,__esModule:!0};_a.__esModule=!0;var HS=GS,QS=qS(HS);function qS(s){return s&&s.__esModule?s:{default:s}}_a.default=function(s){if(Array.isArray(s)){for(var r=0,e=Array(s.length);r<s.length;r++)e[r]=s[r];return e}else return(0,QS.default)(s)};var ZS=An,vh=function(s,r,e){for(var t in r)e&&s[t]?s[t]=r[t]:ZS(s,t,r[t]);return s},Mh=function(s,r,e,t){if(!(s instanceof r)||t!==void 0&&t in s)throw TypeError(e+": incorrect invocation!");return s},Nm={exports:{}},KS=kn,XS=Pm,JS=Dm,_S=un,eT=Ka,tT=yh,uu={},hu={},Om=Nm.exports=function(s,r,e,t,n){var i=n?function(){return s}:tT(s),o=KS(e,t,r?2:1),a=0,c,l,u,h;if(typeof i!="function")throw TypeError(s+" is not iterable!");if(JS(i)){for(c=eT(s.length);c>a;a++)if(h=r?o(_S(l=s[a])[0],l[1]):o(s[a]),h===uu||h===hu)return h}else for(u=i.call(s);!(l=u.next()).done;)if(h=XS(u,o,l.value,r),h===uu||h===hu)return h};Om.BREAK=uu;Om.RETURN=hu;var io=Nm.exports,rT=Jt,gf=Pt,nT=dr,iT=fr,pf=Yt("species"),zm=function(s){var r=typeof gf[s]=="function"?gf[s]:rT[s];iT&&r&&!r[pf]&&nT.f(r,pf,{configurable:!0,get:function(){return this}})},Bm={exports:{}},ii=Xa("meta"),sT=Or,wh=ci,oT=dr.f,aT=0,ec=Object.isExtensible||function(){return!0},cT=!ai(function(){return ec(Object.preventExtensions({}))}),Sh=function(s){oT(s,ii,{value:{i:"O"+ ++aT,w:{}}})},lT=function(s,r){if(!sT(s))return typeof s=="symbol"?s:(typeof s=="string"?"S":"P")+s;if(!wh(s,ii)){if(!ec(s))return"F";if(!r)return"E";Sh(s)}return s[ii].i},uT=function(s,r){if(!wh(s,ii)){if(!ec(s))return!0;if(!r)return!1;Sh(s)}return s[ii].w},hT=function(s){return cT&&dT.NEED&&ec(s)&&!wh(s,ii)&&Sh(s),s},dT=Bm.exports={KEY:ii,NEED:!1,fastKey:lT,getWeak:uT,onFreeze:hT},Th=Bm.exports,fT=Or,jm=function(s,r){if(!fT(s)||s._t!==r)throw TypeError("Incompatible receiver, "+r+" required!");return s},gT=dr.f,pT=ph,mT=vh,yT=kn,vT=Mh,MT=io,wT=mh,bo=wm,ST=zm,Fm=fr,Um=Th.fastKey,wi=jm,os=Fm?"_s":"size",Eo=function(s,r){var e=Um(r),t;if(e!=="F")return s._i[e];for(t=s._f;t;t=t.n)if(t.k==r)return t},TT={getConstructor:function(s,r,e,t){var n=s(function(i,o){vT(i,n,r,"_i"),i._t=r,i._i=pT(null),i._f=void 0,i._l=void 0,i[os]=0,o!=null&&MT(o,e,i[t],i)});return mT(n.prototype,{clear:function(){for(var o=wi(this,r),a=o._i,c=o._f;c;c=c.n)c.r=!0,c.p&&(c.p=c.p.n=void 0),delete a[c.i];o._f=o._l=void 0,o[os]=0},delete:function(i){var o=wi(this,r),a=Eo(o,i);if(a){var c=a.n,l=a.p;delete o._i[a.i],a.r=!0,l&&(l.n=c),c&&(c.p=l),o._f==a&&(o._f=c),o._l==a&&(o._l=l),o[os]--}return!!a},forEach:function(o){wi(this,r);for(var a=yT(o,arguments.length>1?arguments[1]:void 0,3),c;c=c?c.n:this._f;)for(a(c.v,c.k,this);c&&c.r;)c=c.p},has:function(o){return!!Eo(wi(this,r),o)}}),Fm&&gT(n.prototype,"size",{get:function(){return wi(this,r)[os]}}),n},def:function(s,r,e){var t=Eo(s,r),n,i;return t?t.v=e:(s._l=t={i:i=Um(r,!0),k:r,v:e,p:n=s._l,n:void 0,r:!1},s._f||(s._f=t),n&&(n.n=t),s[os]++,i!=="F"&&(s._i[i]=t)),s},getEntry:Eo,setStrong:function(s,r,e){wT(s,r,function(t,n){this._t=wi(t,r),this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,i=t._l;i&&i.r;)i=i.p;return!t._t||!(t._l=i=i?i.n:t._t._f)?(t._t=void 0,bo(1)):n=="keys"?bo(0,i.k):n=="values"?bo(0,i.v):bo(0,[i.k,i.v])},e?"entries":"values",!e,!0),ST(r)}},CT=eo,Wm=Array.isArray||function(r){return CT(r)=="Array"},IT=Or,mf=Wm,bT=Yt("species"),ET=function(s){var r;return mf(s)&&(r=s.constructor,typeof r=="function"&&(r===Array||mf(r.prototype))&&(r=void 0),IT(r)&&(r=r[bT],r===null&&(r=void 0))),r===void 0?Array:r},xT=ET,RT=function(s,r){return new(xT(s))(r)},kT=kn,AT=ah,PT=Ki,DT=Ka,LT=RT,NT=function(s,r){var e=s==1,t=s==2,n=s==3,i=s==4,o=s==6,a=s==5||o,c=r||LT;return function(l,u,h){for(var d=PT(l),f=AT(d),g=kT(u,h,3),y=DT(f.length),S=0,E=e?c(l,y):t?c(l,0):void 0,C,L;y>S;S++)if((a||S in f)&&(C=f[S],L=g(C,S,d),s)){if(e)E[S]=L;else if(L)switch(s){case 3:return!0;case 5:return C;case 6:return S;case 2:E.push(C)}else if(i)return!1}return o?-1:n||i?i:E}},OT=Jt,xo=_t,zT=Th,BT=ai,jT=An,FT=vh,UT=io,yf=Mh,WT=Or,VT=no,$T=dr.f,YT=NT(0),GT=fr,HT=function(s,r,e,t,n,i){var o=OT[s],a=o,c=n?"set":"add",l=a&&a.prototype,u={};return!GT||typeof a!="function"||!(i||l.forEach&&!BT(function(){new a().entries().next()}))?(a=t.getConstructor(r,s,n,c),FT(a.prototype,e),zT.NEED=!0):(a=r(function(h,d){yf(h,a,s,"_c"),h._c=new o,d!=null&&UT(d,n,h[c],h)}),YT("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(h){var d=h=="add"||h=="set";h in l&&!(i&&h=="clear")&&jT(a.prototype,h,function(f,g){if(yf(this,a,h),!d&&i&&!WT(f))return h=="get"?void 0:!1;var y=this._c[h](f===0?0:f,g);return d?this:y})}),i||$T(a.prototype,"size",{get:function(){return this._c.size}})),VT(a,s),u[s]=a,xo(xo.G+xo.W+xo.F,u),i||t.setStrong(a,s,n),a},il=TT,vf=jm,sl="Map";HT(sl,function(s){return function(){return s(this,arguments.length>0?arguments[0]:void 0)}},{get:function(r){var e=il.getEntry(vf(this,sl),r);return e&&e.v},set:function(r,e){return il.def(vf(this,sl),r===0?0:r,e)}},il,!0);var ol,Mf;function QT(){if(Mf)return ol;Mf=1;var s=io;return ol=function(r,e){var t=[];return s(r,!1,t.push,t,e),t},ol}var al,wf;function qT(){if(wf)return al;wf=1;var s=Ja,r=QT();return al=function(e){return function(){if(s(this)!=e)throw TypeError(e+"#toJSON isn't generic");return r(this)}},al}var cl=_t;cl(cl.P+cl.R,"Map",{toJSON:qT()("Map")});var Sf=_t,ZT=function(s){Sf(Sf.S,s,{of:function(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})};ZT("Map");var Tf=_t,Cf=to,KT=kn,If=io,XT=function(s){Tf(Tf.S,s,{from:function(e){var t=arguments[1],n,i,o,a;return Cf(this),n=t!==void 0,n&&Cf(t),e==null?new this:(i=[],n?(o=0,a=KT(t,arguments[2],2),If(e,!1,function(c){i.push(a(c,o++))})):If(e,!1,i.push,i),new this(i))}})};XT("Map");var JT=Pt.Map,Vm={default:JT,__esModule:!0},tc={};tc.f=Object.getOwnPropertySymbols;var Xi={};Xi.f={}.propertyIsEnumerable;var ll,bf;function _T(){if(bf)return ll;bf=1;var s=fr,r=Zi,e=tc,t=Xi,n=Ki,i=ah,o=Object.assign;return ll=!o||ai(function(){var a={},c={},l=Symbol(),u="abcdefghijklmnopqrst";return a[l]=7,u.split("").forEach(function(h){c[h]=h}),o({},a)[l]!=7||Object.keys(o({},c)).join("")!=u})?function(c,l){for(var u=n(c),h=arguments.length,d=1,f=e.f,g=t.f;h>d;)for(var y=i(arguments[d++]),S=f?r(y).concat(f(y)):r(y),E=S.length,C=0,L;E>C;)L=S[C++],(!s||g.call(y,L))&&(u[L]=y[L]);return u}:o,ll}var ul=_t;ul(ul.S+ul.F,"Object",{assign:_T()});var e1=Pt.Object.assign,Ch={default:e1,__esModule:!0},rc={};rc.__esModule=!0;rc.default=function(s,r){if(!(s instanceof r))throw new TypeError("Cannot call a class as a function")};var nc={},hl=_t;hl(hl.S+hl.F*!fr,"Object",{defineProperty:dr.f});var t1=Pt.Object,r1=function(r,e,t){return t1.defineProperty(r,e,t)},n1={default:r1,__esModule:!0};nc.__esModule=!0;var i1=n1,s1=o1(i1);function o1(s){return s&&s.__esModule?s:{default:s}}nc.default=function(){function s(r,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,s1.default)(r,n.key,n)}}return function(r,e,t){return e&&s(r.prototype,e),t&&s(r,t),r}}();var Ih={};Ih.f=Yt;var Ef=Pt,a1=Ih,c1=dr.f,bh=function(s){var r=Ef.Symbol||(Ef.Symbol={});s.charAt(0)!="_"&&!(s in r)&&c1(r,s,{value:a1.f(s)})},l1=Zi,u1=tc,h1=Xi,d1=function(s){var r=l1(s),e=u1.f;if(e)for(var t=e(s),n=h1.f,i=0,o;t.length>i;)n.call(s,o=t[i++])&&r.push(o);return r},$m={},Eh={},f1=Em,g1=gh.concat("length","prototype");Eh.f=Object.getOwnPropertyNames||function(r){return f1(r,g1)};var p1=oi,Ym=Eh.f,m1={}.toString,Gm=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],y1=function(s){try{return Ym(s)}catch{return Gm.slice()}};$m.f=function(r){return Gm&&m1.call(r)=="[object Window]"?y1(r):Ym(p1(r))};var Hm={},v1=Xi,M1=ro,w1=oi,S1=uh,T1=ci,C1=Cm,xf=Object.getOwnPropertyDescriptor;Hm.f=fr?xf:function(r,e){if(r=w1(r),e=S1(e,!0),C1)try{return xf(r,e)}catch{}if(T1(r,e))return M1(!v1.f.call(r,e),r[e])};var ic=Jt,kt=ci,Qm=fr,Ut=_t,I1=Im,b1=Th.KEY,xh=ai,Rh=dh,kh=no,E1=Xa,so=Yt,x1=Ih,R1=bh,k1=d1,A1=Wm,du=un,P1=Or,D1=Ki,sc=oi,Ah=uh,fu=ro,Ws=ph,qm=$m,Zm=Hm,oc=tc,Km=dr,L1=Zi,Xm=Zm.f,Hn=Km.f,Jm=qm.f,Xt=ic.Symbol,wa=ic.JSON,Ro=wa&&wa.stringify,Tn="prototype",Kt=so("_hidden"),Rf=so("toPrimitive"),N1={}.propertyIsEnumerable,as=Rh("symbol-registry"),cn=Rh("symbols"),oo=Rh("op-symbols"),Sr=Object[Tn],Ji=typeof Xt=="function"&&!!oc.f,dl=ic.QObject,gu=!dl||!dl[Tn]||!dl[Tn].findChild,pu=Qm&&xh(function(){return Ws(Hn({},"a",{get:function(){return Hn(this,"a",{value:7}).a}})).a!=7})?function(s,r,e){var t=Xm(Sr,r);t&&delete Sr[r],Hn(s,r,e),t&&s!==Sr&&Hn(Sr,r,t)}:Hn,kf=function(s){var r=cn[s]=Ws(Xt[Tn]);return r._k=s,r},mu=Ji&&typeof Xt.iterator=="symbol"?function(s){return typeof s=="symbol"}:function(s){return s instanceof Xt},ac=function(r,e,t){return r===Sr&&ac(oo,e,t),du(r),e=Ah(e,!0),du(t),kt(cn,e)?(t.enumerable?(kt(r,Kt)&&r[Kt][e]&&(r[Kt][e]=!1),t=Ws(t,{enumerable:fu(0,!1)})):(kt(r,Kt)||Hn(r,Kt,fu(1,{})),r[Kt][e]=!0),pu(r,e,t)):Hn(r,e,t)},_m=function(r,e){du(r);for(var t=k1(e=sc(e)),n=0,i=t.length,o;i>n;)ac(r,o=t[n++],e[o]);return r},O1=function(r,e){return e===void 0?Ws(r):_m(Ws(r),e)},z1=function(r){var e=N1.call(this,r=Ah(r,!0));return this===Sr&&kt(cn,r)&&!kt(oo,r)?!1:e||!kt(this,r)||!kt(cn,r)||kt(this,Kt)&&this[Kt][r]?e:!0},ey=function(r,e){if(r=sc(r),e=Ah(e,!0),!(r===Sr&&kt(cn,e)&&!kt(oo,e))){var t=Xm(r,e);return t&&kt(cn,e)&&!(kt(r,Kt)&&r[Kt][e])&&(t.enumerable=!0),t}},ty=function(r){for(var e=Jm(sc(r)),t=[],n=0,i;e.length>n;)!kt(cn,i=e[n++])&&i!=Kt&&i!=b1&&t.push(i);return t},ry=function(r){for(var e=r===Sr,t=Jm(e?oo:sc(r)),n=[],i=0,o;t.length>i;)kt(cn,o=t[i++])&&(!e||kt(Sr,o))&&n.push(cn[o]);return n};Ji||(Xt=function(){if(this instanceof Xt)throw TypeError("Symbol is not a constructor!");var r=E1(arguments.length>0?arguments[0]:void 0),e=function(t){this===Sr&&e.call(oo,t),kt(this,Kt)&&kt(this[Kt],r)&&(this[Kt][r]=!1),pu(this,r,fu(1,t))};return Qm&&gu&&pu(Sr,r,{configurable:!0,set:e}),kf(r)},I1(Xt[Tn],"toString",function(){return this._k}),Zm.f=ey,Km.f=ac,Eh.f=qm.f=ty,Xi.f=z1,oc.f=ry,x1.f=function(s){return kf(so(s))});Ut(Ut.G+Ut.W+Ut.F*!Ji,{Symbol:Xt});for(var Af="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Pf=0;Af.length>Pf;)so(Af[Pf++]);for(var Df=L1(so.store),Lf=0;Df.length>Lf;)R1(Df[Lf++]);Ut(Ut.S+Ut.F*!Ji,"Symbol",{for:function(s){return kt(as,s+="")?as[s]:as[s]=Xt(s)},keyFor:function(r){if(!mu(r))throw TypeError(r+" is not a symbol!");for(var e in as)if(as[e]===r)return e},useSetter:function(){gu=!0},useSimple:function(){gu=!1}});Ut(Ut.S+Ut.F*!Ji,"Object",{create:O1,defineProperty:ac,defineProperties:_m,getOwnPropertyDescriptor:ey,getOwnPropertyNames:ty,getOwnPropertySymbols:ry});var B1=xh(function(){oc.f(1)});Ut(Ut.S+Ut.F*B1,"Object",{getOwnPropertySymbols:function(r){return oc.f(D1(r))}});wa&&Ut(Ut.S+Ut.F*(!Ji||xh(function(){var s=Xt();return Ro([s])!="[null]"||Ro({a:s})!="{}"||Ro(Object(s))!="{}"})),"JSON",{stringify:function(r){for(var e=[r],t=1,n,i;arguments.length>t;)e.push(arguments[t++]);if(i=n=e[1],!(!P1(n)&&r===void 0||mu(r)))return A1(n)||(n=function(o,a){if(typeof i=="function"&&(a=i.call(this,o,a)),!mu(a))return a}),e[1]=n,Ro.apply(wa,e)}});Xt[Tn][Rf]||An(Xt[Tn],Rf,Xt[Tn].valueOf);kh(Xt,"Symbol");kh(Math,"Math",!0);kh(ic.JSON,"JSON",!0);bh("asyncIterator");bh("observable");var j1=Pt.Symbol,ny={default:j1,__esModule:!0},cc={};Object.defineProperty(cc,"__esModule",{value:!0});cc.createNowTime=F1;cc.formatDelay=U1;function F1(){var s=null;return Date.now?s=Date.now:s=function(){return new Date().getTime()},s}function U1(s){return typeof s=="number"?s={delay:s}:"entropy"in s&&(s={delay:s.entropy,isEntropy:!0}),s}Object.defineProperty(Za,"__esModule",{value:!0});var W1=_s,Nf=ui(W1),V1=_a,fl=ui(V1),$1=Vm,Y1=ui($1),G1=Ch,H1=ui(G1),Q1=rc,q1=ui(Q1),Z1=nc,K1=ui(Z1),X1=ny,li=ui(X1),iy=cc;function ui(s){return s&&s.__esModule?s:{default:s}}var J1=(0,iy.createNowTime)(),_1={originTime:0,playbackRate:1},Fr=(0,li.default)("timeMark"),gl=(0,li.default)("playbackRate"),Ur=(0,li.default)("timers"),eC=(0,li.default)("originTime"),cs=(0,li.default)("setTimer"),Wr=(0,li.default)("parent"),tC=function(){function s(r,e){(0,q1.default)(this,s),r instanceof s&&(e=r,r={}),r=(0,H1.default)({},_1,r),e&&(this[Wr]=e);var t=r.nowtime||J1;if(e)Object.defineProperty(this,"globalTime",{get:function(){return e.currentTime}});else{var n=t();Object.defineProperty(this,"globalTime",{get:function(){return t()-n}})}this[Fr]=[{globalTime:this.globalTime,localTime:-r.originTime,entropy:-r.originTime,playbackRate:r.playbackRate,globalEntropy:0}],this[Wr]&&(this[Fr][0].globalEntropy=this[Wr].entropy),this[eC]=r.originTime,this[gl]=r.playbackRate,this[Ur]=new Y1.default}return(0,K1.default)(s,[{key:"markTime",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.time,n=t===void 0?this.currentTime:t,i=e.entropy,o=i===void 0?this.entropy:i,a=e.playbackRate,c=a===void 0?this.playbackRate:a,l={globalTime:this.globalTime,localTime:n,entropy:o,playbackRate:c,globalEntropy:this.globalEntropy};this[Fr].push(l)}},{key:"fork",value:function(e){return new s(e,this)}},{key:"seekGlobalTime",value:function(e){var t=this.seekTimeMark(e),n=this[Fr][t],i=n.entropy,o=n.playbackRate,a=n.globalTime;return a+(e-i)/Math.abs(o)}},{key:"seekLocalTime",value:function(e){var t=this.seekTimeMark(e),n=this[Fr][t],i=n.localTime,o=n.entropy,a=n.playbackRate;return a>0?i+(e-o):i-(e-o)}},{key:"seekTimeMark",value:function(e){var t=this[Fr],n=0,i=t.length-1;if(e<=t[n].entropy)return n;if(e>=t[i].entropy)return i;for(var o=Math.floor((n+i)/2);o>n&&o<i;){if(e===t[o].entropy)return o;e<t[o].entropy?i=o:e>t[o].entropy&&(n=o),o=Math.floor((n+i)/2)}return n}},{key:"updateTimers",value:function(){var e=this,t=[].concat((0,fl.default)(this[Ur]));t.forEach(function(n){var i=(0,Nf.default)(n,2),o=i[0],a=i[1];e[cs](a.handler,a.time,o)})}},{key:"clearTimeout",value:function(r){function e(t){return r.apply(this,arguments)}return e.toString=function(){return r.toString()},e}(function(r){var e=this[Ur].get(r);e&&e.timerID!=null&&(this[Wr]?this[Wr].clearTimeout(e.timerID):clearTimeout(e.timerID)),this[Ur].delete(r)})},{key:"clearInterval",value:function(e){return this.clearTimeout(e)}},{key:"clear",value:function(){var e=this,t=this[Ur];[].concat((0,fl.default)(t.keys())).forEach(function(n){e.clearTimeout(n)})}},{key:"setTimeout",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{delay:0};return this[cs](e,t)}},{key:"setInterval",value:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{delay:0},n=this,i=this[cs](function o(){n[cs](o,t,i),e()},t);return i}},{key:cs,value:function(e,t){var n=this,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:(0,li.default)("timerID");t=(0,iy.formatDelay)(t);var o=this[Ur].get(i),a=void 0,c=null,l=void 0,u=void 0;o?(this.clearTimeout(i),t.isEntropy?a=(t.delay-(this.entropy-o.startEntropy))/Math.abs(this.playbackRate):a=(t.delay-(this.currentTime-o.startTime))/this.playbackRate,l=o.startTime,u=o.startEntropy):(a=t.delay/(t.isEntropy?Math.abs(this.playbackRate):this.playbackRate),l=this.currentTime,u=this.entropy);var h=this[Wr],d=h?h.setTimeout.bind(h):setTimeout,f=t.heading;return!h&&f===!1&&a<0&&(a=1/0),(isFinite(a)||h)&&(a=Math.ceil(a),d!==setTimeout&&(a={delay:a,heading:f}),c=d(function(){n[Ur].delete(i),e()},a)),this[Ur].set(i,{timerID:c,handler:e,time:t,startTime:l,startEntropy:u}),i}},{key:"parent",get:function(){return this[Wr]}},{key:"lastTimeMark",get:function(){return this[Fr][this[Fr].length-1]}},{key:"currentTime",get:function(){var e=this.lastTimeMark,t=e.localTime,n=e.globalTime;return t+(this.globalTime-n)*this.playbackRate},set:function(e){var t=this,n=this.currentTime,i=e,o=this[Ur];this.markTime({time:e}),[].concat((0,fl.default)(o)).forEach(function(a){var c=(0,Nf.default)(a,2),l=c[0],u=c[1];if(o.has(l)){var h=u.time,d=h.isEntropy,f=h.delay,g=h.heading,y=u.handler,S=u.startTime;if(d)f===0&&(y(),t.clearTimeout(l));else{var E=S+f;(f===0||g!==!1&&(i-n)*f<=0||n<=E&&E<=i||n>=E&&E>=i)&&(y(),t.clearTimeout(l))}}}),this.updateTimers()}},{key:"entropy",get:function(){var e=this.lastTimeMark,t=e.entropy,n=e.globalEntropy;return t+Math.abs((this.globalEntropy-n)*this.playbackRate)},set:function(e){if(this.entropy>e){var t=this.seekTimeMark(e);this[Fr].length=t+1}this.markTime({entropy:e}),this.updateTimers()}},{key:"globalEntropy",get:function(){return this[Wr]?this[Wr].entropy:this.globalTime}},{key:"playbackRate",get:function(){return this[gl]},set:function(e){e!==this.playbackRate&&(this.markTime({playbackRate:e}),this[gl]=e,this.updateTimers())}},{key:"paused",get:function(){if(this.playbackRate===0)return!0;for(var e=this.parent;e;){if(e.playbackRate===0)return!0;e=e.parent}return!1}}]),s}();Za.default=tC;var lc={};Object.defineProperty(lc,"__esModule",{value:!0});lc.default={default:function(r,e,t,n,i){return typeof r=="number"&&typeof e=="number"?r+(t-n)/(i-n)*(e-r):t-n>i-t?e:r}};var bn={},rC=4,nC=.001,iC=1e-7,sC=10,Es=11,ko=1/(Es-1),oC=typeof Float32Array=="function";function sy(s,r){return 1-3*r+3*s}function oy(s,r){return 3*r-6*s}function ay(s){return 3*s}function Sa(s,r,e){return((sy(r,e)*s+oy(r,e))*s+ay(r))*s}function cy(s,r,e){return 3*sy(r,e)*s*s+2*oy(r,e)*s+ay(r)}function aC(s,r,e,t,n){var i,o,a=0;do o=r+(e-r)/2,i=Sa(o,t,n)-s,i>0?e=o:r=o;while(Math.abs(i)>iC&&++a<sC);return o}function cC(s,r,e,t){for(var n=0;n<rC;++n){var i=cy(r,e,t);if(i===0)return r;var o=Sa(r,e,t)-s;r-=o/i}return r}function lC(s){return s}var uC=function(r,e,t,n){if(!(0<=r&&r<=1&&0<=t&&t<=1))throw new Error("bezier x values must be in [0, 1] range");if(r===e&&t===n)return lC;for(var i=oC?new Float32Array(Es):new Array(Es),o=0;o<Es;++o)i[o]=Sa(o*ko,r,t);function a(c){for(var l=0,u=1,h=Es-1;u!==h&&i[u]<=c;++u)l+=ko;--u;var d=(c-i[u])/(i[u+1]-i[u]),f=l+d*ko,g=cy(f,r,t);return g>=nC?cC(c,f,r,t):g===0?f:aC(c,l,l+ko,r,t)}return function(l){return l===0?0:l===1?1:Sa(a(l),e,n)}};Object.defineProperty(bn,"__esModule",{value:!0});bn.parseEasing=bn.Easings=void 0;var hC=_s,dC=Ph(hC),fC=_a,ly=Ph(fC),gC=Vm,pC=Ph(gC);function Ph(s){return s&&s.__esModule?s:{default:s}}var mC=uC,Of=new pC.default;function Di(){for(var s=arguments.length,r=Array(s),e=0;e<s;e++)r[e]=arguments[e];var t=Of.get(r);return t||(t=mC.apply(void 0,r),Of.set(r,t),t)}function Ta(s){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"end";return function(e,t){for(var n=1;n<t.length;n++){var i=t[n].offset;if(e<=i){var o=t[n-1].offset,a=i,c=(e-o)/(a-o),l=1/s,u=c/l;return r==="end"?u=Math.floor(u):u=Math.ceil(u),l*u*(a-o)+o}}return 0}}function yC(s){var r=/^cubic-bezier\((.*)\)/,e=s.match(r);if(e){var t=e[1].trim();return t=t.split(",").map(function(l){return parseFloat(l.trim())}),Di.apply(void 0,(0,ly.default)(t))}if(r=/^steps\((.*)\)/,e=s.match(r),e){var n=e[1].trim();n=n.split(",").map(function(l){return l.trim()});var i=n,o=(0,dC.default)(i,2),a=o[0],c=o[1];return Ta(parseInt(a,10),c)}return s}var yu={linear:function(r){return r},ease:Di(.25,.1,.25,1),"ease-in":Di(.42,0,1,1),"ease-out":Di(0,0,.58,1),"ease-in-out":Di(.42,0,.58,1),"step-start":Ta(1,"start"),"step-end":Ta(1,"end")};function vC(s){return typeof s=="string"?yu[s]?s=yu[s]:s=yC(s):s.type==="cubic-bezier"?s=Di.apply(void 0,(0,ly.default)(s.value)):s.type==="steps"&&(s=Ta(s.step,s.pos)),s}bn.Easings=yu;bn.parseEasing=vC;var Dh={},zf=un,MC=to,wC=Yt("species"),uy=function(s,r){var e=zf(s).constructor,t;return e===void 0||(t=zf(e)[wC])==null?r:MC(t)},SC=function(s,r,e){var t=e===void 0;switch(r.length){case 0:return t?s():s.call(e);case 1:return t?s(r[0]):s.call(e,r[0]);case 2:return t?s(r[0],r[1]):s.call(e,r[0],r[1]);case 3:return t?s(r[0],r[1],r[2]):s.call(e,r[0],r[1],r[2]);case 4:return t?s(r[0],r[1],r[2],r[3]):s.call(e,r[0],r[1],r[2],r[3])}return s.apply(e,r)},Ao=kn,TC=SC,Bf=xm,jf=lh,tn=Jt,Ff=tn.process,vu=tn.setImmediate,Uf=tn.clearImmediate,Wf=tn.MessageChannel,pl=tn.Dispatch,ml=0,Os={},Vf="onreadystatechange",On,yl,vl,xs=function(){var s=+this;if(Os.hasOwnProperty(s)){var r=Os[s];delete Os[s],r()}},$f=function(s){xs.call(s.data)};(!vu||!Uf)&&(vu=function(r){for(var e=[],t=1;arguments.length>t;)e.push(arguments[t++]);return Os[++ml]=function(){TC(typeof r=="function"?r:Function(r),e)},On(ml),ml},Uf=function(r){delete Os[r]},eo(Ff)=="process"?On=function(s){Ff.nextTick(Ao(xs,s,1))}:pl&&pl.now?On=function(s){pl.now(Ao(xs,s,1))}:Wf?(yl=new Wf,vl=yl.port2,yl.port1.onmessage=$f,On=Ao(vl.postMessage,vl,1)):tn.addEventListener&&typeof postMessage=="function"&&!tn.importScripts?(On=function(s){tn.postMessage(s+"","*")},tn.addEventListener("message",$f,!1)):Vf in jf("script")?On=function(s){Bf.appendChild(jf("script"))[Vf]=function(){Bf.removeChild(this),xs.call(s)}}:On=function(s){setTimeout(Ao(xs,s,1),0)});var hy={set:vu},ti=Jt,CC=hy.set,Yf=ti.MutationObserver||ti.WebKitMutationObserver,Mu=ti.process,Ml=ti.Promise,Gf=eo(Mu)=="process",IC=function(){var s,r,e,t=function(){var a,c;for(Gf&&(a=Mu.domain)&&a.exit();s;){c=s.fn,s=s.next;try{c()}catch(l){throw s?e():r=void 0,l}}r=void 0,a&&a.enter()};if(Gf)e=function(){Mu.nextTick(t)};else if(Yf&&!(ti.navigator&&ti.navigator.standalone)){var n=!0,i=document.createTextNode("");new Yf(t).observe(i,{characterData:!0}),e=function(){i.data=n=!n}}else if(Ml&&Ml.resolve){var o=Ml.resolve(void 0);e=function(){o.then(t)}}else e=function(){CC.call(ti,t)};return function(a){var c={fn:a,next:void 0};r&&(r.next=c),s||(s=c,e()),r=c}},uc={},Hf=to;function bC(s){var r,e;this.promise=new s(function(t,n){if(r!==void 0||e!==void 0)throw TypeError("Bad Promise constructor");r=t,e=n}),this.resolve=Hf(r),this.reject=Hf(e)}uc.f=function(s){return new bC(s)};var dy=function(s){try{return{e:!1,v:s()}}catch(r){return{e:!0,v:r}}},EC=Jt,Qf=EC.navigator,xC=Qf&&Qf.userAgent||"",RC=un,kC=Or,AC=uc,fy=function(s,r){if(RC(s),kC(r)&&r.constructor===s)return r;var e=AC.f(s),t=e.resolve;return t(r),e.promise},PC=KM,Cn=Jt,Li=kn,DC=Ja,ar=_t,LC=Or,NC=to,OC=Mh,qf=io,zC=uy,gy=hy.set,py=IC(),my=uc,wu=dy,BC=xC,jC=fy,Pn="Promise",yy=Cn.TypeError,Gi=Cn.process,Zf=Gi&&Gi.versions,FC=Zf&&Zf.v8||"",Pr=Cn[Pn],Vs=DC(Gi)=="process",ua=function(){},Po,vy,Kf,Lh,$s=vy=my.f,hc=!!function(){try{var s=Pr.resolve(1),r=(s.constructor={})[Yt("species")]=function(e){e(ua,ua)};return(Vs||typeof PromiseRejectionEvent=="function")&&s.then(ua)instanceof r&&FC.indexOf("6.6")!==0&&BC.indexOf("Chrome/66")===-1}catch{}}(),My=function(s){var r;return LC(s)&&typeof(r=s.then)=="function"?r:!1},Nh=function(s,r){if(!s._n){s._n=!0;var e=s._c;py(function(){for(var t=s._v,n=s._s==1,i=0,o=function(a){var c=n?a.ok:a.fail,l=a.resolve,u=a.reject,h=a.domain,d,f,g;try{c?(n||(s._h==2&&WC(s),s._h=1),c===!0?d=t:(h&&h.enter(),d=c(t),h&&(h.exit(),g=!0)),d===a.promise?u(yy("Promise-chain cycle")):(f=My(d))?f.call(d,l,u):l(d)):u(t)}catch(y){h&&!g&&h.exit(),u(y)}};e.length>i;)o(e[i++]);s._c=[],s._n=!1,r&&!s._h&&UC(s)})}},UC=function(s){gy.call(Cn,function(){var r=s._v,e=Xf(s),t,n,i;if(e&&(t=wu(function(){Vs?Gi.emit("unhandledRejection",r,s):(n=Cn.onunhandledrejection)?n({promise:s,reason:r}):(i=Cn.console)&&i.error&&i.error("Unhandled promise rejection",r)}),s._h=Vs||Xf(s)?2:1),s._a=void 0,e&&t.e)throw t.v})},Xf=function(s){return s._h!==1&&(s._a||s._c).length===0},WC=function(s){gy.call(Cn,function(){var r;Vs?Gi.emit("rejectionHandled",s):(r=Cn.onrejectionhandled)&&r({promise:s,reason:s._v})})},Vi=function(s){var r=this;r._d||(r._d=!0,r=r._w||r,r._v=s,r._s=2,r._a||(r._a=r._c.slice()),Nh(r,!0))},Su=function(s){var r=this,e;if(!r._d){r._d=!0,r=r._w||r;try{if(r===s)throw yy("Promise can't be resolved itself");(e=My(s))?py(function(){var t={_w:r,_d:!1};try{e.call(s,Li(Su,t,1),Li(Vi,t,1))}catch(n){Vi.call(t,n)}}):(r._v=s,r._s=1,Nh(r,!1))}catch(t){Vi.call({_w:r,_d:!1},t)}}};hc||(Pr=function(r){OC(this,Pr,Pn,"_h"),NC(r),Po.call(this);try{r(Li(Su,this,1),Li(Vi,this,1))}catch(e){Vi.call(this,e)}},Po=function(r){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},Po.prototype=vh(Pr.prototype,{then:function(r,e){var t=$s(zC(this,Pr));return t.ok=typeof r=="function"?r:!0,t.fail=typeof e=="function"&&e,t.domain=Vs?Gi.domain:void 0,this._c.push(t),this._a&&this._a.push(t),this._s&&Nh(this,!1),t.promise},catch:function(s){return this.then(void 0,s)}}),Kf=function(){var s=new Po;this.promise=s,this.resolve=Li(Su,s,1),this.reject=Li(Vi,s,1)},my.f=$s=function(s){return s===Pr||s===Lh?new Kf(s):vy(s)});ar(ar.G+ar.W+ar.F*!hc,{Promise:Pr});no(Pr,Pn);zm(Pn);Lh=Pt[Pn];ar(ar.S+ar.F*!hc,Pn,{reject:function(r){var e=$s(this),t=e.reject;return t(r),e.promise}});ar(ar.S+ar.F*PC,Pn,{resolve:function(r){return jC(this===Lh?Pr:this,r)}});ar(ar.S+ar.F*!(hc&&Lm()(function(s){Pr.all(s).catch(ua)})),Pn,{all:function(r){var e=this,t=$s(e),n=t.resolve,i=t.reject,o=wu(function(){var a=[],c=0,l=1;qf(r,!1,function(u){var h=c++,d=!1;a.push(void 0),l++,e.resolve(u).then(function(f){d||(d=!0,a[h]=f,--l||n(a))},i)}),--l||n(a)});return o.e&&i(o.v),t.promise},race:function(r){var e=this,t=$s(e),n=t.reject,i=wu(function(){qf(r,!1,function(o){e.resolve(o).then(t.resolve,n)})});return i.e&&n(i.v),t.promise}});var wl=_t,VC=Pt,$C=Jt,YC=uy,Jf=fy;wl(wl.P+wl.R,"Promise",{finally:function(s){var r=YC(this,VC.Promise||$C.Promise),e=typeof s=="function";return this.then(e?function(t){return Jf(r,s()).then(function(){return t})}:s,e?function(t){return Jf(r,s()).then(function(){throw t})}:s)}});var _f=_t,GC=uc,HC=dy;_f(_f.S,"Promise",{try:function(s){var r=GC.f(this),e=HC(s);return(e.e?r.reject:r.resolve)(e.v),r.promise}});var QC=Pt.Promise,wy={default:QC,__esModule:!0},Sl=_t,qC=Pt,ZC=ai,KC=function(s,r){var e=(qC.Object||{})[s]||Object[s],t={};t[s]=r(e),Sl(Sl.S+Sl.F*ZC(function(){e(1)}),"Object",t)},XC=Ki,JC=Zi;KC("keys",function(){return function(r){return JC(XC(r))}});var _C=Pt.Object.keys,eI={default:_C,__esModule:!0},hi={},tI=fr,rI=Zi,nI=oi,iI=Xi.f,sI=function(s){return function(r){for(var e=nI(r),t=rI(e),n=t.length,i=0,o=[],a;n>i;)a=t[i++],(!tI||iI.call(e,a))&&o.push(s?[a,e[a]]:e[a]);return o}},eg=_t,oI=sI(!0);eg(eg.S,"Object",{entries:function(r){return oI(r)}});var aI=Pt.Object.entries,cI={default:aI,__esModule:!0};Object.defineProperty(hi,"__esModule",{value:!0});var lI=_s,uI=ao(lI),hI=cI,dI=ao(hI),fI=Ch,Sy=ao(fI),gI=wy,pI=ao(gI);hi.defer=MI;hi.periodicity=wI;hi.calculateFramesOffset=SI;hi.getProgress=TI;hi.getCurrentFrame=II;var mI=bn,yI=lc,vI=ao(yI);function ao(s){return s&&s.__esModule?s:{default:s}}function MI(){var s={};return s.promise=new pI.default(function(r,e){s.resolve=r,s.reject=e}),s}function wI(s,r){var e=Math.floor(s/r),t=s-e*r;return t===0&&e>0&&(t=r,e--),[e,t]}function SI(s){s=s.slice(0);var r=s[0],e=s[s.length-1];e.offset=e.offset||1,r.offset=r.offset||0;for(var t=0,n=-1,i=0;i<s.length;i++){var o=s[i];if(o.offset!=null){var a=i-n;if(a>1)for(var c=(o.offset-t)/a,l=0;l<a-1;l++)s[n+l+1].offset=t+c*(l+1);t=o.offset,n=i}if(o.easing!=null&&(o.easing=(0,mI.parseEasing)(o.easing)),i>0){var u=s[i].easing!=null;s[i]=(0,Sy.default)({},s[i-1],s[i]),u||delete s[i].easing}}return s}function TI(s,r,e){var t=s.currentTime,n=r.direction,i=r.duration,o=!1;if(n==="reverse")e=1-e,o=!0;else if(n==="alternate"||n==="alternate-reverse"){var a=Math.floor(t/i);e===1&&a--,a%2^n==="alternate-reverse"&&(e=1-e,o=!0)}return{p:e,inverted:o}}function CI(s,r,e,t){var n={};return(0,dI.default)(r).forEach(function(i){var o=(0,uI.default)(i,2),a=o[0],c=o[1];if(a!=="offset"&&a!=="easing"){var l=e[a]||e.default,u=l(s[a],c,t,s.offset,r.offset);u!=null&&(n[a]=u)}}),n}function II(s,r,e,t){var n=s.easing,i=s.effect;i||(e=(0,Sy.default)({},vI.default,e));var o={};t=n(t,r);for(var a=1;a<r.length;a++){var c=r[a],l=c.offset;if(l>=t||a===r.length-1){var u=r[a-1],h=u.offset,d=u.easing,f=t;if(d){var g=l-h;f=d((t-h)/g)*g+h}i?o=i(u,c,f,h,l):o=CI(u,c,e,f);break}}return o}Object.defineProperty(Dh,"__esModule",{value:!0});var bI=wy,Tl=di(bI),EI=eI,xI=di(EI),RI=Ch,ls=di(RI),kI=rc,AI=di(kI),PI=nc,DI=di(PI),LI=ny,hn=di(LI),NI=Za,OI=di(NI),dn=hi,zI=bn;function di(s){return s&&s.__esModule?s:{default:s}}var jt=(0,hn.default)("timing"),Vr=(0,hn.default)("keyframes"),us=(0,hn.default)("initState"),Dt=(0,hn.default)("readyDefer"),er=(0,hn.default)("finishedDefer"),Do=(0,hn.default)("effects"),Lo=(0,hn.default)("activeReadyTimer"),Cl=(0,hn.default)("activeFinishTimer"),$r=(0,hn.default)("removeDefer"),BI={delay:0,endDelay:0,fill:"auto",iterations:1,playbackRate:1,direction:"normal",easing:"linear",effect:null},jI=function(){function s(r,e,t){var n=this;if((0,AI.default)(this,s),Array.isArray(r)){var i=[r[0],r,e];r=i[0],e=i[1],t=i[2]}typeof t=="number"&&(t={duration:t}),this[jt]=(0,ls.default)({},BI,t),this[jt].easing=(0,zI.parseEasing)(this[jt].easing),this[Vr]=(0,dn.calculateFramesOffset)(e);var o=this[Vr][this[Vr].length-1];this[us]={},(0,xI.default)(o).forEach(function(a){Object.prototype.hasOwnProperty.call(r,a)&&a!=="easing"&&a!=="offset"&&(n[us][a]=r[a])}),this[Vr]=this[Vr].map(function(a){return(0,ls.default)({},n[us],a)}),this[Vr][0].offset!==0&&this[Vr].unshift((0,ls.default)({},this[us],{offset:0})),o.offset<1&&this[Vr].push((0,ls.default)({},o,{offset:1})),this[Do]={},this.timeline=null}return(0,DI.default)(s,[{key:"pause",value:function(){this.timeline.playbackRate=0}},{key:Lo,value:function(){var e=this;this[Dt]&&!this[Dt].timerID&&(this.timeline.currentTime<0?this[Dt].timerID=this.timeline.setTimeout(function(){e[Dt].resolve(),delete e[Dt]},{delay:-this.timeline.currentTime,heading:!1}):this[Dt].timerID=this.timeline.setTimeout(function(){e[Dt].resolve(),delete e[Dt]},{delay:0,isEntropy:!0}))}},{key:Cl,value:function(){var e=this,t=this[jt],n=t.duration,i=t.iterations,o=t.endDelay,a=Math.ceil(n*i+o-this.timeline.currentTime)+1;this[er]&&!this[er].timerID&&(this[er].timerID=this.timeline.setTimeout(function(){e[er].resolve(),e[$r](Dt),e[$r](er)},{delay:a,heading:!1}),this[er].reverseTimerID=this.timeline.setTimeout(function(){e[er].resolve(),e[$r](Dt),e[$r](er),e.timeline=null},{delay:-this[jt].delay-1,heading:!1}))}},{key:"play",value:function(){if(this.playState==="finished"&&this.cancel(),this.playState==="idle"){if(this.playbackRate<=0)return;var e=this[jt],t=e.delay,n=e.playbackRate,i=e.timeline;this.timeline=new OI.default({originTime:t,playbackRate:n},i),this[Lo](),this[Cl]()}else this.playState==="paused"&&(this.timeline.playbackRate=this.playbackRate,this[Lo]())}},{key:$r,value:function(e){var t=this[e],n=this.timeline;t&&n&&(n.clearTimeout(t.timerID),t.reverseTimerID&&n.clearTimeout(t.reverseTimerID)),delete this[e]}},{key:"cancel",value:function(){this[$r](Dt),this[$r](er),this.timeline=null}},{key:"finish",value:function(){this.timeline&&(this.timeline.currentTime=1/0/this.playbackRate),this[$r](Dt),this[$r](er)}},{key:"applyEffects",value:function(e){return(0,ls.default)(this[Do],e)}},{key:"playbackRate",get:function(){return this[jt].playbackRate},set:function(e){this.timeline&&(this.timeline.playbackRate=e),this[jt].playbackRate=e}},{key:"playState",get:function(){var e=this.timeline,t=this[jt],n=t.iterations,i=t.duration,o=t.endDelay,a="running";if(e==null)a="idle";else if(e.paused)a="paused";else if(e.currentTime<0)a="pending";else{var c=e.currentTime-n*i;c>0&&c<o?a="pending":c>=o&&(a="finished")}return a}},{key:"progress",get:function(){if(!this.timeline)return 0;var e=this[jt],t=e.duration,n=e.iterations,i=this.timeline,o=this.playState,a=void 0;if(o==="idle")a=0;else if(o==="paused"&&i.currentTime<0)a=0;else if(o==="pending")if(i.currentTime<0)a=0;else{var c=i.seekLocalTime(n*t);a=(0,dn.periodicity)(c,t)[1]/t}else(o==="running"||o==="paused")&&(a=(0,dn.periodicity)(i.currentTime,t)[1]/t);return o==="finished"&&(a=(0,dn.periodicity)(n,1)[1]),a}},{key:"frame",get:function(){var e=this.playState,t=this[us],n=this[jt].fill;if(e==="idle")return t;var i=this.timeline.currentTime,o=this[Vr].slice(0),a=(0,dn.getProgress)(this.timeline,this[jt],this.progress),c=a.p,l=a.inverted,u=t;return i<0&&e==="pending"?(n==="backwards"||n==="both")&&(u=l?o[o.length-1]:o[0]):(e!=="pending"&&e!=="finished"||n==="forwards"||n==="both")&&(u=(0,dn.getCurrentFrame)(this[jt],o,this[Do],c)),u}},{key:"timing",get:function(){return this[jt]}},{key:"effects",get:function(){return this[Do]}},{key:"baseTimeline",set:function(e){this[jt].timeline=e},get:function(){return this[jt].timeline}},{key:"ready",get:function(){return this[Dt]?this[Dt].promise:this.timeline&&this.timeline.currentTime>=0&&this.playState!=="paused"?Tl.default.resolve():(this[Dt]=(0,dn.defer)(),this.timeline&&this[Lo](),this[Dt]?this[Dt].promise:Tl.default.resolve())}},{key:"finished",get:function(){return this.playState==="finished"?Tl.default.resolve():(this[er]||(this[er]=(0,dn.defer)(),this.timeline&&this[Cl]()),this[er].promise)}}]),s}();Dh.default=jI;Object.defineProperty(en,"__esModule",{value:!0});var Ty=en.Timeline=Cr=en.Effects=en.Easings=Cy=en.Animator=void 0,FI=Za,UI=Oh(FI),WI=lc,VI=Oh(WI),$I=bn,YI=Dh,GI=Oh(YI);function Oh(s){return s&&s.__esModule?s:{default:s}}var Cy=en.Animator=GI.default;en.Easings=$I.Easings;var Cr=en.Effects=VI.default;Ty=en.Timeline=UI.default;var HI={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};const tg=ln(HI);var rg={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function QI(s){var r,e=[],t=1,n;if(typeof s=="string")if(s=s.toLowerCase(),tg[s])e=tg[s].slice(),n="rgb";else if(s==="transparent")t=0,n="rgb",e=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(s)){var i=s.slice(1),o=i.length,a=o<=4;t=1,a?(e=[parseInt(i[0]+i[0],16),parseInt(i[1]+i[1],16),parseInt(i[2]+i[2],16)],o===4&&(t=parseInt(i[3]+i[3],16)/255)):(e=[parseInt(i[0]+i[1],16),parseInt(i[2]+i[3],16),parseInt(i[4]+i[5],16)],o===8&&(t=parseInt(i[6]+i[7],16)/255)),e[0]||(e[0]=0),e[1]||(e[1]=0),e[2]||(e[2]=0),n="rgb"}else if(r=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(s)){var c=r[1],l=c==="rgb",i=c.replace(/a$/,"");n=i;var o=i==="cmyk"?4:i==="gray"?1:3;e=r[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(d,f){if(/%$/.test(d))return f===o?parseFloat(d)/100:i==="rgb"?parseFloat(d)*255/100:parseFloat(d);if(i[f]==="h"){if(/deg$/.test(d))return parseFloat(d);if(rg[d]!==void 0)return rg[d]}return parseFloat(d)}),c===i&&e.push(1),t=l||e[o]===void 0?1:e[o],e=e.slice(0,o)}else s.length>10&&/[0-9](?:\s|\/)/.test(s)&&(e=s.match(/([0-9]+)/g).map(function(u){return parseFloat(u)}),n=s.match(/([a-z])/ig).join("").toLowerCase());else isNaN(s)?Array.isArray(s)||s.length?(e=[s[0],s[1],s[2]],n="rgb",t=s.length===4?s[3]:1):s instanceof Object&&(s.r!=null||s.red!=null||s.R!=null?(n="rgb",e=[s.r||s.red||s.R||0,s.g||s.green||s.G||0,s.b||s.blue||s.B||0]):(n="hsl",e=[s.h||s.hue||s.H||0,s.s||s.saturation||s.S||0,s.l||s.lightness||s.L||s.b||s.brightness]),t=s.a||s.alpha||s.opacity||1,s.opacity!=null&&(t/=100)):(n="rgb",e=[s>>>16,(s&65280)>>>8,s&255]);return{space:n,values:e,alpha:t}}const Tu={min:[0,0,0],max:[255,255,255]};var Il={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(s){var r=s[0]/360,e=s[1]/100,t=s[2]/100,n,i,o,a,c,l=0;if(e===0)return c=t*255,[c,c,c];for(i=t<.5?t*(1+e):t+e-t*e,n=2*t-i,a=[0,0,0];l<3;)o=r+1/3*-(l-1),o<0?o++:o>1&&o--,c=6*o<1?n+(i-n)*6*o:2*o<1?i:3*o<2?n+(i-n)*(2/3-o)*6:n,a[l++]=c*255;return a}};Tu.hsl=function(s){var r=s[0]/255,e=s[1]/255,t=s[2]/255,n=Math.min(r,e,t),i=Math.max(r,e,t),o=i-n,a,c,l;return i===n?a=0:r===i?a=(e-t)/o:e===i?a=2+(t-r)/o:t===i&&(a=4+(r-e)/o),a=Math.min(a*60,360),a<0&&(a+=360),l=(n+i)/2,i===n?c=0:l<=.5?c=o/(i+n):c=o/(2-i-n),[a,c*100,l*100]};function Cu(s){Array.isArray(s)&&s.raw&&(s=String.raw(...arguments));var r,e=QI(s);if(!e.space)return[];const t=e.space[0]==="h"?Il.min:Tu.min,n=e.space[0]==="h"?Il.max:Tu.max;return r=Array(3),r[0]=Math.min(Math.max(e.values[0],t[0]),n[0]),r[1]=Math.min(Math.max(e.values[1],t[1]),n[1]),r[2]=Math.min(Math.max(e.values[2],t[2]),n[2]),e.space[0]==="h"&&(r=Il.rgb(r)),r.push(Math.min(Math.max(e.alpha,0),1)),r}Ze(Array);function qI(){if(typeof performance<"u"&&performance.now)return performance.now();if(typeof process<"u"&&process.hrtime){const[s,r]=process.hrtime();return s*1e3+r*1e-6}return Date.now?Date.now():new Date().getTime()}let rn,ri;typeof global<"u"&&typeof global.requestAnimationFrame=="function"?(rn=global.requestAnimationFrame,ri=global.cancelAnimationFrame):(rn=function(s){return setTimeout(()=>{s(qI())},16)},ri=function(s){return clearTimeout(s)});Ze(Array);function ng(s){if(typeof s=="string"){if(s=s.trim(),/^[0-9.]+%$/.test(s))return parseFloat(s)/100;if(/^([\d.]+)(px|pt|pc|in|cm|mm|em|ex|rem|q|vw|vh|vmax|vmin)$/.test(s))return sh(s)}return s}function dc(s,r,e,t,n){return typeof s=="string"&&(s=Cu(s)),typeof r=="string"&&(r=Cu(r)),Cr.default(s,r,e,t,n)}function ZI(s,r,e,t,n){return Cr.default(s,r,e,t,n)}Cr.default=function(s,r,e,t,n){return Array.isArray(s)&&Array.isArray(r)?s.map((i,o)=>i+(e-t)/(n-t)*(r[o]-i)):typeof s=="number"&&typeof r=="number"?s+(e-t)/(n-t)*(r-s):e-t>n-e?r:s};Cr.fillColor=dc;Cr.strokeColor=dc;Cr.bgcolor=dc;Cr.borderColor=dc;Cr.text=ZI;class KI extends Cy{constructor(r,e,t){const n=r.attr();Object.entries(n).forEach(([i,o])=>{n[i]=Cr[i]?o:ng(o)}),e=e.map(({...i})=>{const o={};return Object.entries(i).forEach(([a,c])=>{o[a]=Cr[a]?c:ng(c)}),o}),super(n,e,t),this.target=r,this.setter=function(i,o){o.attr(i)}}get playState(){return this.target.parent?super.playState:"idle"}get finished(){return super.finished.then(()=>{const r=this;return new Promise(e=>{function t(){r.setter(r.frame,r.target);const n=r.playState;n==="finished"||n==="idle"?(ri(r.requestId),e()):rn(t)}t()})})}finish(){super.finish(),ri(this.requestId),this.setter(this.frame,this.target)}play(){if(!this.target.parent||this.playState==="running")return;super.play(),this.setter(this.frame,this.target);const r=this;this.ready.then(()=>{r.setter(r.frame,r.target),r.requestId=rn(function e(){const t=r.target;if(typeof document<"u"&&document.documentElement&&document.documentElement.contains&&t.layer&&t.layer.canvas&&!document.documentElement.contains(t.layer.canvas)){r.cancel();return}const n=r.playState;r.setter(r.frame,r.target),n!=="idle"&&(n==="running"?r.requestId=rn(e):(n==="paused"||n==="pending"&&r.timeline.currentTime<0)&&r.ready.then(()=>{r.setter(r.frame,r.target),r.requestId=rn(e)}))})})}cancel(r=!1){ri(this.requestId),r?(this.setter(this.frame,this.target),super.cancel()):(super.cancel(),this.setter(this.frame,this.target))}}Ze(Array);const ha=new Map;function ig(s,r={},e=[]){s=s.toLowerCase();const t=ha.get(s);if(!t)throw new TypeError(`Invalid node: ${s}`);const n=new t(r);return e.forEach(i=>{n.appendChild(i)}),n}const Gt={registerNode(s,r,e=100){if(r=r.toLowerCase(),ha.has(r))throw new TypeError(`Cannot registerNode, ${r} has been taken.`);ha.set(r,s),Object.defineProperties(s.prototype,{nodeType:{value:e},tagName:{value:r.toUpperCase()},nodeName:{value:r},ownerDocument:{value:Gt},namespaceURI:{value:`http://spritejs.com/${r}`}})},createElement:ig,createElementNS(s,r){return ig(r)},isSpriteNode(s){return ha.has(s.toLowerCase())}};Ze(Array);const No=Symbol("type"),bl=Symbol("bubbles"),El=Symbol("originalEvent"),sg=Symbol("detail");class ni{constructor(r,{bubbles:e=null}={}){if(typeof r=="string"?(this[No]=r,this[bl]=!!e):(this[No]=r.type,this[El]=r,this[bl]=e!=null?!!e:!!r.bubbles,r.detail&&(this[sg]=r.detail)),!this[No])throw new TypeError("Invalid event type.");this.cancelBubble=!1}setOriginalEvent(r){this[El]=r}get originalEvent(){return this[El]}get type(){return this[No]}get bubbles(){return this[bl]}get detail(){return this[sg]}stopPropagation(){this.cancelBubble=!0}}Ze(Array);function XI(s){if(s=s.trim(),!s||s==="none")return null;const r=/^(?:(url|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\(([^()]*(?:\(.*\))*[^()]*)\))+$/i,e=s.match(/(?:(url|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)\(([^()]*(?:\(.*\))*[^()]*)\))+?/ig),t=[];return e&&e.forEach(n=>{const i=n.match(r);if(!i)throw new TypeError("Invalid fitler string.");let[,o,a]=i;o=o.toLowerCase(),a=a.trim().match(/([^( )]+|([^( )]+\(.*\)))(?=\s|$)/g).map((c,l)=>{let u;return o==="url"||o==="drop-shadow"&&l===3?u=c:u=qe(c),/%$/.test(c)&&(u/=100),u}),t.push({type:o,args:a})}),t}function JI(s,r){s.clearFilter(),r&&r.forEach(({type:e,args:t})=>{let n=e;n==="drop-shadow"?n="dropShadow":n==="hue-rotate"&&(n="hueRotate"),s[n](...t)})}Ze(Array);function _I(s,r){if(!r)return;const e=s.getListeners("beforerender"),t=s.getListeners("afterrender");e.length&&!r.beforeRender?r.beforeRender=n=>{s.dispatchEvent({type:"beforerender",detail:{context:n}})}:e.length||(r.beforeRender=null),t.length&&!r.afterRender?r.afterRender=n=>{s.dispatchEvent({type:"afterrender",detail:{context:n}})}:t.length||(r.afterRender=null)}Ze(Array);const eb=Symbol.for("spritejs_changedAttrs"),tb=Symbol.for("spritejs_attributes"),Oo=Symbol("resolution"),Si=Symbol("animations"),zn=Symbol("eventListeners"),Bn=Symbol("captureEventListeners"),og=Symbol("filters"),ag=Symbol("display"),zo=Symbol("program"),hs=Symbol("shaderAttrs"),Ti=Symbol("uniforms"),Bo=Symbol("mask");var _l;let fc=(_l=class{constructor(r={}){this.attributes=new this.constructor.Attr(this),this[Oo]={width:300,height:150},Object.assign(this.attributes,r),this[Si]=new Set,this[zn]={},this[Bn]={}}get ancestors(){let r=this.parent;const e=[];for(;r;)e.push(r),r=r.parent;return e}get animations(){return this[Si]}get filters(){return this[og]||this.parent&&this.parent.filters}get isVisible(){return!1}get layer(){return this.parent?this.parent.layer:null}get localMatrix(){const r=this.transformMatrix,{x:e,y:t}=this.attributes;return r[4]+=e,r[5]+=t,r}get opacity(){let r=this.attributes.opacity;return this.parent&&this.parent.opacity!=null&&(r*=this.parent.opacity),r}get mask(){return this[Bo]?{...this[Bo],owner:this}:this.parent&&this.parent.mask}get parentNode(){return this.parent}get nextSibling(){return this.getNodeNearBy(1)}get previousSibling(){return this.getNodeNearBy(-1)}get program(){return this[zo]}get renderer(){return this.parent?this.parent.renderer:null}get renderMatrix(){if(this.__cacheRenderMatrix)return this.__cacheRenderMatrix;let r=this.localMatrix;const e=this.parent;if(e){const t=e.__cacheRenderMatrix||e.renderMatrix;t&&(r=Nr(Array.of(0,0,0,0,0,0),t,r))}return r}get worldScaling(){const r=this.renderMatrix;return[Math.hypot(r[0],r[1]),Math.hypot(r[2],r[3])]}get worldRotation(){const r=this.renderMatrix;return Math.atan2(r[1],r[3])}get worldPosition(){const r=this.renderMatrix;return[r[4],r[5]]}get uniforms(){return this[Ti]}get className(){return this.attributes.className}set className(r){this.attributes.className=r}get id(){return this.attributes.id}set id(r){this.attributes.id=r}get name(){return this.attributes.name}set name(r){this.attributes.name=r}get zIndex(){return this.attributes.zIndex}set zIndex(r){this.attributes.zIndex=r}get mesh(){return null}get shaderAttrs(){return this[hs]||{}}activateAnimations(){const r=this.layer;if(r){const e=this[Si];e.forEach(n=>{n.baseTimeline=r.timeline,n.play(),n.finished.then(()=>{e.delete(n)})});const t=this.children;t&&t.forEach(n=>{n.activateAnimations&&n.activateAnimations()})}}addEventListener(r,e,t={}){r==="mousewheel"&&(r="wheel"),typeof t=="boolean"&&(t={capture:t});const{capture:n,once:i}=t,o=n?Bn:zn;return this[o][r]=this[o][r]||[],this[o][r].push({listener:e,once:i}),this}animate(r,e){const t=new KI(this,r,e);return this.effects&&t.applyEffects(this.effects),this.layer&&(t.baseTimeline=this.layer.timeline,t.play(),t.finished.then(()=>{this[Si].delete(t)})),this[Si].add(t),t}attr(...r){if(r.length===0)return this.attributes[tb];if(r.length>1){let[e,t]=r;return typeof t=="function"&&(t=t(this.attr(e))),this.setAttribute(e,t),this}return typeof r[0]=="string"?this.getAttribute(r[0]):(Object.assign(this.attributes,r[0]),this)}cloneNode(){const r=new this.constructor,e=this.attributes[eb];return r.attr(e),r}connect(r,e){Object.defineProperty(this,"parent",{value:r,writable:!1,configurable:!0}),Object.defineProperty(this,"zOrder",{value:e,writable:!1,configurable:!0}),r.timeline&&this.activateAnimations(),this.setResolution(r.getResolution()),this.forceUpdate(),this.dispatchEvent({type:"append",detail:{parent:r,zOrder:e}})}contains(r){for(;r&&this!==r;)r=r.parent;return!!r}deactivateAnimations(){this[Si].forEach(e=>e.cancel());const r=this.children;r&&r.forEach(e=>{e.deactivateAnimations&&e.deactivateAnimations()})}disconnect(){const{parent:r,zOrder:e}=this;delete this.parent,delete this.zOrder,this.deactivateAnimations(),this.dispatchEvent({type:"remove",detail:{parent:r,zOrder:e}}),r&&r.forceUpdate()}dispatchEvent(r){r instanceof ni||(r=new ni(r)),r.target=this;let e=r.type;e==="mousewheel"&&(e="wheel");const t=[this];let n=this.parent;for(;r.bubbles&&n;)t.push(n),n=n.parent;for(let i=t.length-1;i>=0;i--){const o=t[i],a=o[Bn]&&o[Bn][e];if(a&&a.length&&(r.currentTarget=o,a.forEach(({listener:c,once:l})=>{c.call(this,r),l&&t.removeEventListener(c)}),delete r.currentTarget),!r.bubbles&&r.cancelBubble)break}if(!r.cancelBubble)for(let i=0;i<t.length;i++){const o=t[i],a=o[zn]&&o[zn][e];if(a&&a.length&&(r.currentTarget=o,a.forEach(({listener:c,once:l})=>{c.call(this,r),l&&t.removeEventListener(c)}),delete r.currentTarget),!r.bubbles||r.cancelBubble)break}}dispatchPointerEvent(r){const{layerX:e,layerY:t}=r;return this.isPointCollision(e,t)?(this.dispatchEvent(r),!0):!1}draw(r=[]){const e=this.mesh;if(e){if(JI(e,this.filters),this._applyMask(e),r.push(e),this[zo]){e.setProgram(this[zo]);const t=this[hs];t&&Object.entries(t).forEach(([i,o])=>{e.setAttribute(i,o)});const n=this[Ti];if(this[Ti]){const i={};Object.entries(n).forEach(([o,a])=>{typeof a=="function"&&(a=a(this,o)),i[o]=a}),e.setUniforms(i)}}_I(this,e)}return r}forceUpdate(){this.parent&&this.parent.forceUpdate()}getAttribute(r){return this.attributes[r]}getListeners(r,{capture:e=!1}={}){return[...this[e?Bn:zn][r]||[]]}getNodeNearBy(r=1){if(!this.parent)return null;if(r===0)return this;const e=this.parent.children,t=e.indexOf(this);return e[t+r]}getWorldPosition(r,e){const t=this.renderMatrix,n=r*t[0]+e*t[2]+t[4],i=r*t[1]+e*t[3]+t[5];return[n,i]}getOffsetPosition(r,e){const t=Ma(Array.of(0,0,0,0,0,0),this.renderMatrix),n=r*t[0]+e*t[2]+t[4],i=r*t[1]+e*t[3]+t[5];return[n,i]}getResolution(){return{...this[Oo]}}isPointCollision(r,e){if(!this.mesh)return!1;const t=this.attributes.pointerEvents;if(t==="none"||t!=="all"&&!this.isVisible)return!1;let n="both";return t==="visibleFill"&&(n="fill"),t==="visibleStroke"&&(n="stroke"),this.mesh.isPointCollision(r,e,n)}onPropertyChange(r,e,t){r!=="id"&&r!=="name"&&r!=="className"&&r!=="pointerEvents"&&r!=="passEvents"&&this.forceUpdate(),r==="filter"&&(this[og]=XI(e)),r==="zIndex"&&this.parent&&this.parent.reorder()}setAttribute(r,e){r==="attrs"&&this.attr(e),this.attributes[r]=e}setMouseCapture(){this.layer&&(this.layer.__mouseCapturedTarget=this)}setMask(r,e={}){return r?(this[Bo]={handle:r,rect:e.rect||r.rect},this.forceUpdate(),this):this.clearMask()}clearMask(){return this[Bo]=null,this.forceUpdate(),this}_applyMask(r){const e=this.mask,t=this.renderer;if(!e||!t||!t.glRenderer||this.attributes.clipPath){if(r.__spriteMaskApplied){r.setUniforms({u_clipSampler:null});const u=r.meshData;u.attributes&&delete u.attributes.a_clipUV,r.blend=r.__spriteMaskBlend,delete r.__spriteMaskBlend,r.__spriteMaskApplied=!1}return}const n=e.handle.getTexture(t),i=e.rect;if(!n||!i||i[2]<=0||i[3]<=0)return;const o=Ma(Array.of(0,0,0,0,0,0),e.owner.renderMatrix);if(!o)return;const a=Nr(Array.of(0,0,0,0,0,0),o,this.renderMatrix);r.setUniforms({u_clipSampler:n});const c=r.meshData,l=c.position0||c.positions;c.attributes=c.attributes||{},c.attributes.a_clipUV=l.map(([u,h])=>{const d=u*a[0]+h*a[2]+a[4],f=u*a[1]+h*a[3]+a[5];return[(d-i[0])/i[2],1-(f-i[1])/i[3]]}),r.__spriteMaskApplied||(r.__spriteMaskBlend=r.blend),r.blend=!0,r.__spriteMaskApplied=!0}setProgram(r){this[zo]=r,this.forceUpdate()}setShaderAttribute(r,e){this[hs]=this[hs]||{},this[hs][r]=e,this.forceUpdate()}setUniforms(r){this[Ti]=this[Ti]||{},Object.assign(this[Ti],r),this.forceUpdate()}setResolution({width:r,height:e}){const{width:t,height:n}=this[Oo];(t!==r||n!==e)&&(this[Oo]={width:r,height:e},this.forceUpdate(),this.dispatchEvent({type:"resolutionchange",detail:{width:r,height:e}}))}show(){this.attributes.display==="none"&&(this.attributes.display=this[ag]||"")}hide(){this.attributes.display!=="none"&&(this[ag]=this.attributes.display,this.attributes.display="none")}releaseMouseCapture(){this.layer&&this.layer.__mouseCapturedTarget===this&&(this.layer.__mouseCapturedTarget=null)}remove(){return this.parent&&this.parent.removeChild?(this.parent.removeChild(this),!0):!1}removeAllListeners(r,e={}){typeof e=="boolean"&&(e={capture:e});const n=e.capture?Bn:zn;return this[n][r]&&(this[n][r]=[]),this}removeAttribute(r){this.setAttribute(r,null)}removeEventListener(r,e,t={}){typeof t=="boolean"&&(t={capture:t});const i=t.capture?Bn:zn;if(this[i][r]){const o=this[i][r];if(o)for(let a=0;a<o.length;a++){const{listener:c}=o[a];if(c===e){this[i][r].splice(a,1);break}}}return this}transition(r,e="linear"){const t=this,n=Symbol("animation");e=e||"linear";let i=0;return typeof r=="object"&&(i=r.delay||0,r=r.duration),{[n]:null,cancel(o=!1){const a=this[n];a&&a.cancel(o)},end(){const o=this[n];o&&(o.playState==="running"||o.playState==="pending")&&o.finish()},reverse(){const o=this[n];if(o)if(o.playState==="running"||o.playState==="pending")o.playbackRate=-o.playbackRate;else{const a=o.timing.direction;o.timing.direction=a==="reverse"?"normal":"reverse",o.play()}return o.finished},attr(o,a){return this.end(),typeof o=="string"&&(o={[o]:a}),Object.entries(o).forEach(([c,l])=>{typeof l=="function"&&(o[c]=l(t.attr(c)))}),this[n]=t.animate([o],{duration:r*1e3,delay:i*1e3,fill:"forwards",easing:e}),this[n].finished}}}updateContours(){}},x(_l,"Attr",oh),_l);Gt.registerNode(fc,"node");Ze(Array);class rb{constructor({vector:r,colors:e}){if(!Array.isArray(r)||r.length!==4&&r.length!==6&&r.length!==3)throw new TypeError("Invalid gradient");this.vector=r,this.colors=e.map(({offset:t,color:n})=>({offset:t,color:En(n)}))}toString(){return JSON.stringify({vector:this.vector,colors:this.colors})}}function En(s){if(s==null||(s||(s="transparent"),s instanceof rb))return s;const r=Cu(s);if(!r||!r.length)throw new TypeError("Invalid color value.");return`rgba(${r.join()})`}function Iy(s,r,e){const t=s.boundingBox[0];if(e.vector){let{vector:n,colors:i}=e;n.length===4?(n=[n[0]+t[0],n[1]+t[1],n[2]+t[0],n[3]+t[1]],s.setLinearGradient({vector:n,colors:i,type:r})):n.length===3?(n=[n[0]+t[0],n[1]+t[1],n[2]],s.setCircularGradient({vector:n,colors:i,type:r})):(n=[n[0]+t[0],n[1]+t[1],n[2],n[3]+t[0],n[4]+t[1],n[5]],s.setRadialGradient({vector:n,colors:i,type:r}))}else s.gradient&&s.gradient[r]&&(delete s.gradient[r],delete s.uniforms.u_radialGradientVector)}function Ca(s,{color:r,rule:e="nonzero"}){return Iy(s,"fill",r),r.vector||s.setFill({color:r,rule:e}),s}function Ia(s,{color:r,lineWidth:e,lineCap:t,lineJoin:n,lineDash:i,lineDashOffset:o,miterLimit:a,roundSegments:c}){Iy(s,"stroke",r),r.vector&&(r=[0,0,0,1]),s.setStroke({color:r,thickness:e,cap:t,join:n,miterLimit:a,lineDash:i,lineDashOffset:o,roundSegments:c})}Ze(Array);const Tt=Symbol.for("spritejs_setAttribute"),Ct=Symbol.for("spritejs_getAttribute"),nb=Symbol.for("spritejs_setAttributeDefault"),ib=Symbol.for("spritejs_declareAlias");let gc=class extends oh{constructor(r){super(r),this[nb]({anchorX:0,anchorY:0,width:void 0,height:void 0,borderWidth:0,borderColor:"rgba(0,0,0,1)",borderDash:void 0,borderDashOffset:0,borderTopLeftRadius:[0,0],borderTopRightRadius:[0,0],borderBottomRightRadius:[0,0],borderBottomLeftRadius:[0,0],bgcolor:"rgba(0,0,0,0)",paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,boxSizing:"content-box",clipPath:void 0}),this[ib]("anchor","size","border","borderRadius","padding")}get anchorX(){return this[Ct]("anchorX")}set anchorX(r){this[Tt]("anchorX",qe(r))}get anchorY(){return this[Ct]("anchorY")}set anchorY(r){this[Tt]("anchorY",qe(r))}get anchor(){return[this.anchorX,this.anchorY]}set anchor(r){r=Mt(r),Array.isArray(r)||(r=[r,r]),this.anchorX=r[0],this.anchorY=r[1]}get width(){return this[Ct]("width")}set width(r){this[Tt]("width",qe(r))}get height(){return this[Ct]("height")}set height(r){this[Tt]("height",qe(r))}get size(){return[this.width,this.height]}set size(r){r=Mt(r),Array.isArray(r)||(r=[r,r]),this.width=r[0],this.height=r[1]}get borderWidth(){return this[Ct]("borderWidth")}set borderWidth(r){this[Tt]("borderWidth",qe(r))}get borderColor(){return this[Ct]("borderColor")}set borderColor(r){this[Tt]("borderColor",En(r))}get border(){return[this.borderWidth,this.borderColor]}set border(r){r=Mt(r),Array.isArray(r)||(r=[r]),this.borderWidth=r[0],r[1]!=null&&(this.borderColor=r[1])}get borderDash(){return this[Ct]("borderDash")}set borderDash(r){r=Mt(r,!0),r!=null&&!Array.isArray(r)&&(r=[r]),this[Tt]("borderDash",r?r.map(qe):null)}get borderDashOffset(){return this[Ct]("borderDashOffset")}set borderDashOffset(r){this[Tt]("borderDashOffset",qe(r))}get borderTopLeftRadius(){return this[Ct]("borderTopLeftRadius")}set borderTopLeftRadius(r){r=Mt(r,!0),Array.isArray(r)||(r=[r,r]),this[Tt]("borderTopLeftRadius",r.map(qe))}get borderTopRightRadius(){return this[Ct]("borderTopRightRadius")}set borderTopRightRadius(r){r=Mt(r,!0),Array.isArray(r)||(r=[r,r]),this[Tt]("borderTopRightRadius",r.map(qe))}get borderBottomRightRadius(){return this[Ct]("borderBottomRightRadius")}set borderBottomRightRadius(r){r=Mt(r,!0),Array.isArray(r)||(r=[r,r]),this[Tt]("borderBottomRightRadius",r.map(qe))}get borderBottomLeftRadius(){return this[Ct]("borderBottomLeftRadius")}set borderBottomLeftRadius(r){r=Mt(r,!0),Array.isArray(r)||(r=[r,r]),this[Tt]("borderBottomLeftRadius",r.map(qe))}get borderRadius(){return[...this.borderTopLeftRadius,...this.borderTopRightRadius,...this.borderBottomRightRadius,...this.borderBottomLeftRadius]}set borderRadius(r){if(r=Mt(r),!Array.isArray(r))r=Array(8).fill(r);else if(r.length===2)r=[r[0],r[1],r[0],r[1],r[0],r[1],r[0],r[1]];else if(r.length===4)r=[r[0],r[1],r[2],r[3],r[0],r[1],r[2],r[3]];else if(r.length===6)r=[r[0],r[1],r[2],r[3],r[4],r[5],r[2],r[3]];else if(r.length!==8)throw new TypeError("Invalid borderRadius value.");this.borderTopLeftRadius=[r[0],r[1]],this.borderTopRightRadius=[r[2],r[3]],this.borderBottomRightRadius=[r[4],r[5]],this.borderBottomLeftRadius=[r[6],r[7]]}get bgcolor(){return this[Ct]("bgcolor")}set bgcolor(r){this[Tt]("bgcolor",En(r))}get paddingTop(){return this[Ct]("paddingTop")}set paddingTop(r){this[Tt]("paddingTop",qe(r))}get paddingRight(){return this[Ct]("paddingRight")}set paddingRight(r){this[Tt]("paddingRight",qe(r))}get paddingBottom(){return this[Ct]("paddingBottom")}set paddingBottom(r){this[Tt]("paddingBottom",qe(r))}get paddingLeft(){return this[Ct]("paddingLeft")}set paddingLeft(r){this[Tt]("paddingLeft",qe(r))}get padding(){return[this.paddingTop,this.paddingRight,this.paddingBottom,this.paddingLeft]}set padding(r){r=Mt(r),Array.isArray(r)?r.length===2?r=[r[0],r[1],r[0],r[1]]:r.length===3&&(r=[r[0],r[1],r[2],r[1]]):r=[r,r,r,r],this.paddingTop=r[0],this.paddingRight=r[1],this.paddingBottom=r[2],this.paddingLeft=r[3]}get clipPath(){return this[Ct]("clipPath")}set clipPath(r){this[Tt]("clipPath",r)}get boxSizing(){return this[Ct]("boxSizing")}set boxSizing(r){if(r!=null&&r!=="border-box"&&r!=="content-box")throw new TypeError("Invalid boxSizing type.");this[Tt]("boxSizing",r)}};Ze(Array);function jo(s,r,e,t,n,i="leftTop"){const o=.5522848,a=t/2*o,c=n/2*o,l=r+t,u=e+n,h=r+t/2,d=e+n/2;i==="leftTop"?(s.moveTo(r,d),s.bezierCurveTo(r,d-c,h-a,e,h,e)):i==="rightTop"?s.bezierCurveTo(h+a,e,l,d-c,l,d):i==="rightBottom"?s.bezierCurveTo(l,d+c,h+a,u,h,u):i==="leftBottom"&&s.bezierCurveTo(h-a,u,r,d+c,r,d)}function sb(s,[r,e,t,n],i){if(!i||Array.isArray(i)&&i.every(o=>o===0))s.beginPath(),s.rect(r,e,t,n);else{typeof i=="number"&&(i=Array(8).fill(i));const[o,a,c,l,u,h,d,f]=i.map((g,y)=>y%2?Math.min(g,n/2):Math.min(g,t/2));s.beginPath(),s.moveTo(r,e+a),jo(s,r,e,o*2,a*2,"leftTop"),s.lineTo(r+t-c,e),jo(s,r+t-c*2,e,c*2,l*2,"rightTop"),s.lineTo(r+t,e+n-h),jo(s,r+t-u*2,e+n-h*2,u*2,h*2,"rightBottom"),s.lineTo(r+d,e+n),jo(s,r,e+n-f*2,d*2,f*2,"leftBottom"),s.closePath()}return s}Ze(Array);function by(s,r){if(!s)return{x:0,y:0,width:0,height:0,left:0,top:0,right:0,bottom:0};const[[e,t],[n,i]]=s,o=e*r[0]+t*r[2]+r[4],a=e*r[1]+t*r[3]+r[5],c=n*r[0]+t*r[2]+r[4],l=n*r[1]+t*r[3]+r[5],u=n*r[0]+i*r[2]+r[4],h=n*r[1]+i*r[3]+r[5],d=e*r[0]+i*r[2]+r[4],f=e*r[1]+i*r[3]+r[5],g=Math.min(o,c,u,d),y=Math.min(a,l,h,f),S=Math.max(o,c,u,d),E=Math.max(a,l,h,f);return{x:g,y,width:S-g,height:E-y,left:g,top:y,right:S,bottom:E}}Ze(Array);const Yr=Symbol("mesh");class co extends fc{constructor(r={}){super(r)}get borderSize(){const{paddingTop:r,paddingRight:e,paddingBottom:t,paddingLeft:n,borderWidth:i}=this.attributes,[o,a]=this.contentSize;return[n+o+e+i,r+a+t+i]}get clientSize(){const{paddingTop:r,paddingRight:e,paddingBottom:t,paddingLeft:n}=this.attributes,[i,o]=this.contentSize;return[n+i+e,r+o+t]}get contentSize(){let{width:r,height:e,boxSizing:t,paddingTop:n,paddingRight:i,paddingBottom:o,paddingLeft:a}=this.attributes;if(r=r||0,e=e||0,t==="border-box"){const c=2*this.attributes.borderWidth;r-=c+i+a,e-=c+n+o,r=Math.max(0,r),e=Math.max(0,e)}return[r,e]}get hasBorder(){return this.attributes.borderWidth>0}get isVisible(){const[r,e]=this.borderSize;return r>0&&e>0}get mesh(){if(this.attributes.display==="none")return null;const r=this.clientBox;if(r){let e=this[Yr];if(e)e.box!==r&&(e.contours=r.contours,e.box=r);else{e=new ft.Mesh2D(r),e.box=r;const n=this.attributes.bgcolor;if(Ca(e,{color:n}),this.hasBorder){const{borderColor:o,borderWidth:a,borderDash:c,borderDashOffset:l}=this.attributes;Ia(e,{color:o,lineWidth:a,lineDash:c,lineDashOffset:l})}this[Yr]=e;const i=this.attributes.clipPath;i&&this[Yr].setClipPath(i)}const t=this.opacity;return e.getOpacity()!==t&&e.setOpacity(t),e.setTransform(...this.renderMatrix),e}return null}get offsetSize(){const{paddingTop:r,paddingRight:e,paddingBottom:t,paddingLeft:n,borderWidth:i}=this.attributes,[o,a]=this.contentSize,c=2*i;return[n+o+e+c,r+a+t+c]}get originalClientRect(){if(this.mesh){const r=this.mesh.boundingBox;return[r[0][0],r[0][1],r[1][0]-r[0][0],r[1][1]-r[0][1]]}return[0,0,0,0]}get originalContentRect(){const[r,e,t,n]=this.originalClientRect,i=this.attributes.padding;return[r+i[0],e+i[1],t-i[0]-i[2],n-i[1]-i[3]]}getBoundingClientRect(){let r=this.renderMatrix;this.layer&&this.layer.layerTransformInvert&&(r=Nr(Array.of(0,0,0,0,0,0),this.layer.transformMatrix,r));let e=null;if(this.mesh){e=[...this.mesh.boundingBox];const t=this.attributes.borderWidth;t&&(e[0]=[e[0][0]-t,e[0][1]-t],e[1]=[e[1][0]+t,e[1][1]+t])}return by(e,r)}onPropertyChange(r,e,t){if(super.onPropertyChange(r,e,t),(r==="anchorX"||r==="anchorY"||r==="boxSizing"||r==="width"||r==="height"||r==="borderWidth"||r==="paddingLeft"||r==="paddingRight"||r==="paddingTop"||r==="paddingBottom"||/^border(TopLeft|TopRight|BottomRight|BottomLeft)Radius$/.test(r))&&this.updateContours(),this[Yr]&&r==="clipPath"&&this[Yr].setClipPath(e),this[Yr]&&r==="bgcolor"&&Ca(this[Yr],{color:e}),this[Yr]&&(r==="borderColor"||r==="borderWidth"||r==="borderDash"||r==="borderDashOffset")){const{borderColor:n,borderWidth:i,borderDash:o,borderDashOffset:a}=this.attributes;Ia(this[Yr],{color:n,lineWidth:i,lineDash:i?o:0,lineDashOffset:a})}}updateContours(){const{anchorX:r,anchorY:e,borderWidth:t,borderRadius:n}=this.attributes,[i,o]=this.borderSize,a=this.offsetSize,c=.5*t,l=-r*a[0]+c,u=-e*a[1]+c;this.clientBox=new ft.Figure2D,sb(this.clientBox,[l,u,i,o],n)}}x(co,"Attr",gc);Gt.registerNode(co,"block");Ze(Array);let ob=class extends gc{};var Ey={exports:{}},zh={Text:"text",CDATA:"cdata",isTag:function(s){return s.type==="tag"||s.type==="script"||s.type==="style"}},xy={exports:{}},Ry={};(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.Doctype=s.CDATA=s.Tag=s.Style=s.Script=s.Comment=s.Directive=s.Text=s.Root=s.isTag=s.ElementType=void 0;var r;(function(t){t.Root="root",t.Text="text",t.Directive="directive",t.Comment="comment",t.Script="script",t.Style="style",t.Tag="tag",t.CDATA="cdata",t.Doctype="doctype"})(r=s.ElementType||(s.ElementType={}));function e(t){return t.type===r.Tag||t.type===r.Script||t.type===r.Style}s.isTag=e,s.Root=r.Root,s.Text=r.Text,s.Directive=r.Directive,s.Comment=r.Comment,s.Script=r.Script,s.Style=r.Style,s.Tag=r.Tag,s.CDATA=r.CDATA,s.Doctype=r.Doctype})(Ry);var ky={},an={};const ab="Á",cb="á",lb="Ă",ub="ă",hb="∾",db="∿",fb="∾̳",gb="Â",pb="â",mb="´",yb="А",vb="а",Mb="Æ",wb="æ",Sb="⁡",Tb="𝔄",Cb="𝔞",Ib="À",bb="à",Eb="ℵ",xb="ℵ",Rb="Α",kb="α",Ab="Ā",Pb="ā",Db="⨿",Lb="&",Nb="&",Ob="⩕",zb="⩓",Bb="∧",jb="⩜",Fb="⩘",Ub="⩚",Wb="∠",Vb="⦤",$b="∠",Yb="⦨",Gb="⦩",Hb="⦪",Qb="⦫",qb="⦬",Zb="⦭",Kb="⦮",Xb="⦯",Jb="∡",_b="∟",eE="⊾",tE="⦝",rE="∢",nE="Å",iE="⍼",sE="Ą",oE="ą",aE="𝔸",cE="𝕒",lE="⩯",uE="≈",hE="⩰",dE="≊",fE="≋",gE="'",pE="⁡",mE="≈",yE="≊",vE="Å",ME="å",wE="𝒜",SE="𝒶",TE="≔",CE="*",IE="≈",bE="≍",EE="Ã",xE="ã",RE="Ä",kE="ä",AE="∳",PE="⨑",DE="≌",LE="϶",NE="‵",OE="∽",zE="⋍",BE="∖",jE="⫧",FE="⊽",UE="⌅",WE="⌆",VE="⌅",$E="⎵",YE="⎶",GE="≌",HE="Б",QE="б",qE="„",ZE="∵",KE="∵",XE="∵",JE="⦰",_E="϶",e2="ℬ",t2="ℬ",r2="Β",n2="β",i2="ℶ",s2="≬",o2="𝔅",a2="𝔟",c2="⋂",l2="◯",u2="⋃",h2="⨀",d2="⨁",f2="⨂",g2="⨆",p2="★",m2="▽",y2="△",v2="⨄",M2="⋁",w2="⋀",S2="⤍",T2="⧫",C2="▪",I2="▴",b2="▾",E2="◂",x2="▸",R2="␣",k2="▒",A2="░",P2="▓",D2="█",L2="=⃥",N2="≡⃥",O2="⫭",z2="⌐",B2="𝔹",j2="𝕓",F2="⊥",U2="⊥",W2="⋈",V2="⧉",$2="┐",Y2="╕",G2="╖",H2="╗",Q2="┌",q2="╒",Z2="╓",K2="╔",X2="─",J2="═",_2="┬",ex="╤",tx="╥",rx="╦",nx="┴",ix="╧",sx="╨",ox="╩",ax="⊟",cx="⊞",lx="⊠",ux="┘",hx="╛",dx="╜",fx="╝",gx="└",px="╘",mx="╙",yx="╚",vx="│",Mx="║",wx="┼",Sx="╪",Tx="╫",Cx="╬",Ix="┤",bx="╡",Ex="╢",xx="╣",Rx="├",kx="╞",Ax="╟",Px="╠",Dx="‵",Lx="˘",Nx="˘",Ox="¦",zx="𝒷",Bx="ℬ",jx="⁏",Fx="∽",Ux="⋍",Wx="⧅",Vx="\\",$x="⟈",Yx="•",Gx="•",Hx="≎",Qx="⪮",qx="≏",Zx="≎",Kx="≏",Xx="Ć",Jx="ć",_x="⩄",eR="⩉",tR="⩋",rR="∩",nR="⋒",iR="⩇",sR="⩀",oR="ⅅ",aR="∩︀",cR="⁁",lR="ˇ",uR="ℭ",hR="⩍",dR="Č",fR="č",gR="Ç",pR="ç",mR="Ĉ",yR="ĉ",vR="∰",MR="⩌",wR="⩐",SR="Ċ",TR="ċ",CR="¸",IR="¸",bR="⦲",ER="¢",xR="·",RR="·",kR="𝔠",AR="ℭ",PR="Ч",DR="ч",LR="✓",NR="✓",OR="Χ",zR="χ",BR="ˆ",jR="≗",FR="↺",UR="↻",WR="⊛",VR="⊚",$R="⊝",YR="⊙",GR="®",HR="Ⓢ",QR="⊖",qR="⊕",ZR="⊗",KR="○",XR="⧃",JR="≗",_R="⨐",ek="⫯",tk="⧂",rk="∲",nk="”",ik="’",sk="♣",ok="♣",ak=":",ck="∷",lk="⩴",uk="≔",hk="≔",dk=",",fk="@",gk="∁",pk="∘",mk="∁",yk="ℂ",vk="≅",Mk="⩭",wk="≡",Sk="∮",Tk="∯",Ck="∮",Ik="𝕔",bk="ℂ",Ek="∐",xk="∐",Rk="©",kk="©",Ak="℗",Pk="∳",Dk="↵",Lk="✗",Nk="⨯",Ok="𝒞",zk="𝒸",Bk="⫏",jk="⫑",Fk="⫐",Uk="⫒",Wk="⋯",Vk="⤸",$k="⤵",Yk="⋞",Gk="⋟",Hk="↶",Qk="⤽",qk="⩈",Zk="⩆",Kk="≍",Xk="∪",Jk="⋓",_k="⩊",eA="⊍",tA="⩅",rA="∪︀",nA="↷",iA="⤼",sA="⋞",oA="⋟",aA="⋎",cA="⋏",lA="¤",uA="↶",hA="↷",dA="⋎",fA="⋏",gA="∲",pA="∱",mA="⌭",yA="†",vA="‡",MA="ℸ",wA="↓",SA="↡",TA="⇓",CA="‐",IA="⫤",bA="⊣",EA="⤏",xA="˝",RA="Ď",kA="ď",AA="Д",PA="д",DA="‡",LA="⇊",NA="ⅅ",OA="ⅆ",zA="⤑",BA="⩷",jA="°",FA="∇",UA="Δ",WA="δ",VA="⦱",$A="⥿",YA="𝔇",GA="𝔡",HA="⥥",QA="⇃",qA="⇂",ZA="´",KA="˙",XA="˝",JA="`",_A="˜",eP="⋄",tP="⋄",rP="⋄",nP="♦",iP="♦",sP="¨",oP="ⅆ",aP="ϝ",cP="⋲",lP="÷",uP="÷",hP="⋇",dP="⋇",fP="Ђ",gP="ђ",pP="⌞",mP="⌍",yP="$",vP="𝔻",MP="𝕕",wP="¨",SP="˙",TP="⃜",CP="≐",IP="≑",bP="≐",EP="∸",xP="∔",RP="⊡",kP="⌆",AP="∯",PP="¨",DP="⇓",LP="⇐",NP="⇔",OP="⫤",zP="⟸",BP="⟺",jP="⟹",FP="⇒",UP="⊨",WP="⇑",VP="⇕",$P="∥",YP="⤓",GP="↓",HP="↓",QP="⇓",qP="⇵",ZP="̑",KP="⇊",XP="⇃",JP="⇂",_P="⥐",eD="⥞",tD="⥖",rD="↽",nD="⥟",iD="⥗",sD="⇁",oD="↧",aD="⊤",cD="⤐",lD="⌟",uD="⌌",hD="𝒟",dD="𝒹",fD="Ѕ",gD="ѕ",pD="⧶",mD="Đ",yD="đ",vD="⋱",MD="▿",wD="▾",SD="⇵",TD="⥯",CD="⦦",ID="Џ",bD="џ",ED="⟿",xD="É",RD="é",kD="⩮",AD="Ě",PD="ě",DD="Ê",LD="ê",ND="≖",OD="≕",zD="Э",BD="э",jD="⩷",FD="Ė",UD="ė",WD="≑",VD="ⅇ",$D="≒",YD="𝔈",GD="𝔢",HD="⪚",QD="È",qD="è",ZD="⪖",KD="⪘",XD="⪙",JD="∈",_D="⏧",eL="ℓ",tL="⪕",rL="⪗",nL="Ē",iL="ē",sL="∅",oL="∅",aL="◻",cL="∅",lL="▫",uL=" ",hL=" ",dL=" ",fL="Ŋ",gL="ŋ",pL=" ",mL="Ę",yL="ę",vL="𝔼",ML="𝕖",wL="⋕",SL="⧣",TL="⩱",CL="ε",IL="Ε",bL="ε",EL="ϵ",xL="≖",RL="≕",kL="≂",AL="⪖",PL="⪕",DL="⩵",LL="=",NL="≂",OL="≟",zL="⇌",BL="≡",jL="⩸",FL="⧥",UL="⥱",WL="≓",VL="ℯ",$L="ℰ",YL="≐",GL="⩳",HL="≂",QL="Η",qL="η",ZL="Ð",KL="ð",XL="Ë",JL="ë",_L="€",eN="!",tN="∃",rN="∃",nN="ℰ",iN="ⅇ",sN="ⅇ",oN="≒",aN="Ф",cN="ф",lN="♀",uN="ffi",hN="ff",dN="ffl",fN="𝔉",gN="𝔣",pN="fi",mN="◼",yN="▪",vN="fj",MN="♭",wN="fl",SN="▱",TN="ƒ",CN="𝔽",IN="𝕗",bN="∀",EN="∀",xN="⋔",RN="⫙",kN="ℱ",AN="⨍",PN="½",DN="⅓",LN="¼",NN="⅕",ON="⅙",zN="⅛",BN="⅔",jN="⅖",FN="¾",UN="⅗",WN="⅜",VN="⅘",$N="⅚",YN="⅝",GN="⅞",HN="⁄",QN="⌢",qN="𝒻",ZN="ℱ",KN="ǵ",XN="Γ",JN="γ",_N="Ϝ",eO="ϝ",tO="⪆",rO="Ğ",nO="ğ",iO="Ģ",sO="Ĝ",oO="ĝ",aO="Г",cO="г",lO="Ġ",uO="ġ",hO="≥",dO="≧",fO="⪌",gO="⋛",pO="≥",mO="≧",yO="⩾",vO="⪩",MO="⩾",wO="⪀",SO="⪂",TO="⪄",CO="⋛︀",IO="⪔",bO="𝔊",EO="𝔤",xO="≫",RO="⋙",kO="⋙",AO="ℷ",PO="Ѓ",DO="ѓ",LO="⪥",NO="≷",OO="⪒",zO="⪤",BO="⪊",jO="⪊",FO="⪈",UO="≩",WO="⪈",VO="≩",$O="⋧",YO="𝔾",GO="𝕘",HO="`",QO="≥",qO="⋛",ZO="≧",KO="⪢",XO="≷",JO="⩾",_O="≳",ez="𝒢",tz="ℊ",rz="≳",nz="⪎",iz="⪐",sz="⪧",oz="⩺",az=">",cz=">",lz="≫",uz="⋗",hz="⦕",dz="⩼",fz="⪆",gz="⥸",pz="⋗",mz="⋛",yz="⪌",vz="≷",Mz="≳",wz="≩︀",Sz="≩︀",Tz="ˇ",Cz=" ",Iz="½",bz="ℋ",Ez="Ъ",xz="ъ",Rz="⥈",kz="↔",Az="⇔",Pz="↭",Dz="^",Lz="ℏ",Nz="Ĥ",Oz="ĥ",zz="♥",Bz="♥",jz="…",Fz="⊹",Uz="𝔥",Wz="ℌ",Vz="ℋ",$z="⤥",Yz="⤦",Gz="⇿",Hz="∻",Qz="↩",qz="↪",Zz="𝕙",Kz="ℍ",Xz="―",Jz="─",_z="𝒽",eB="ℋ",tB="ℏ",rB="Ħ",nB="ħ",iB="≎",sB="≏",oB="⁃",aB="‐",cB="Í",lB="í",uB="⁣",hB="Î",dB="î",fB="И",gB="и",pB="İ",mB="Е",yB="е",vB="¡",MB="⇔",wB="𝔦",SB="ℑ",TB="Ì",CB="ì",IB="ⅈ",bB="⨌",EB="∭",xB="⧜",RB="℩",kB="IJ",AB="ij",PB="Ī",DB="ī",LB="ℑ",NB="ⅈ",OB="ℐ",zB="ℑ",BB="ı",jB="ℑ",FB="⊷",UB="Ƶ",WB="⇒",VB="℅",$B="∞",YB="⧝",GB="ı",HB="⊺",QB="∫",qB="∬",ZB="ℤ",KB="∫",XB="⊺",JB="⋂",_B="⨗",ej="⨼",tj="⁣",rj="⁢",nj="Ё",ij="ё",sj="Į",oj="į",aj="𝕀",cj="𝕚",lj="Ι",uj="ι",hj="⨼",dj="¿",fj="𝒾",gj="ℐ",pj="∈",mj="⋵",yj="⋹",vj="⋴",Mj="⋳",wj="∈",Sj="⁢",Tj="Ĩ",Cj="ĩ",Ij="І",bj="і",Ej="Ï",xj="ï",Rj="Ĵ",kj="ĵ",Aj="Й",Pj="й",Dj="𝔍",Lj="𝔧",Nj="ȷ",Oj="𝕁",zj="𝕛",Bj="𝒥",jj="𝒿",Fj="Ј",Uj="ј",Wj="Є",Vj="є",$j="Κ",Yj="κ",Gj="ϰ",Hj="Ķ",Qj="ķ",qj="К",Zj="к",Kj="𝔎",Xj="𝔨",Jj="ĸ",_j="Х",e3="х",t3="Ќ",r3="ќ",n3="𝕂",i3="𝕜",s3="𝒦",o3="𝓀",a3="⇚",c3="Ĺ",l3="ĺ",u3="⦴",h3="ℒ",d3="Λ",f3="λ",g3="⟨",p3="⟪",m3="⦑",y3="⟨",v3="⪅",M3="ℒ",w3="«",S3="⇤",T3="⤟",C3="←",I3="↞",b3="⇐",E3="⤝",x3="↩",R3="↫",k3="⤹",A3="⥳",P3="↢",D3="⤙",L3="⤛",N3="⪫",O3="⪭",z3="⪭︀",B3="⤌",j3="⤎",F3="❲",U3="{",W3="[",V3="⦋",$3="⦏",Y3="⦍",G3="Ľ",H3="ľ",Q3="Ļ",q3="ļ",Z3="⌈",K3="{",X3="Л",J3="л",_3="⤶",e4="“",t4="„",r4="⥧",n4="⥋",i4="↲",s4="≤",o4="≦",a4="⟨",c4="⇤",l4="←",u4="←",h4="⇐",d4="⇆",f4="↢",g4="⌈",p4="⟦",m4="⥡",y4="⥙",v4="⇃",M4="⌊",w4="↽",S4="↼",T4="⇇",C4="↔",I4="↔",b4="⇔",E4="⇆",x4="⇋",R4="↭",k4="⥎",A4="↤",P4="⊣",D4="⥚",L4="⋋",N4="⧏",O4="⊲",z4="⊴",B4="⥑",j4="⥠",F4="⥘",U4="↿",W4="⥒",V4="↼",$4="⪋",Y4="⋚",G4="≤",H4="≦",Q4="⩽",q4="⪨",Z4="⩽",K4="⩿",X4="⪁",J4="⪃",_4="⋚︀",eF="⪓",tF="⪅",rF="⋖",nF="⋚",iF="⪋",sF="⋚",oF="≦",aF="≶",cF="≶",lF="⪡",uF="≲",hF="⩽",dF="≲",fF="⥼",gF="⌊",pF="𝔏",mF="𝔩",yF="≶",vF="⪑",MF="⥢",wF="↽",SF="↼",TF="⥪",CF="▄",IF="Љ",bF="љ",EF="⇇",xF="≪",RF="⋘",kF="⌞",AF="⇚",PF="⥫",DF="◺",LF="Ŀ",NF="ŀ",OF="⎰",zF="⎰",BF="⪉",jF="⪉",FF="⪇",UF="≨",WF="⪇",VF="≨",$F="⋦",YF="⟬",GF="⇽",HF="⟦",QF="⟵",qF="⟵",ZF="⟸",KF="⟷",XF="⟷",JF="⟺",_F="⟼",eU="⟶",tU="⟶",rU="⟹",nU="↫",iU="↬",sU="⦅",oU="𝕃",aU="𝕝",cU="⨭",lU="⨴",uU="∗",hU="_",dU="↙",fU="↘",gU="◊",pU="◊",mU="⧫",yU="(",vU="⦓",MU="⇆",wU="⌟",SU="⇋",TU="⥭",CU="‎",IU="⊿",bU="‹",EU="𝓁",xU="ℒ",RU="↰",kU="↰",AU="≲",PU="⪍",DU="⪏",LU="[",NU="‘",OU="‚",zU="Ł",BU="ł",jU="⪦",FU="⩹",UU="<",WU="<",VU="≪",$U="⋖",YU="⋋",GU="⋉",HU="⥶",QU="⩻",qU="◃",ZU="⊴",KU="◂",XU="⦖",JU="⥊",_U="⥦",e5="≨︀",t5="≨︀",r5="¯",n5="♂",i5="✠",s5="✠",o5="↦",a5="↦",c5="↧",l5="↤",u5="↥",h5="▮",d5="⨩",f5="М",g5="м",p5="—",m5="∺",y5="∡",v5=" ",M5="ℳ",w5="𝔐",S5="𝔪",T5="℧",C5="µ",I5="*",b5="⫰",E5="∣",x5="·",R5="⊟",k5="−",A5="∸",P5="⨪",D5="∓",L5="⫛",N5="…",O5="∓",z5="⊧",B5="𝕄",j5="𝕞",F5="∓",U5="𝓂",W5="ℳ",V5="∾",$5="Μ",Y5="μ",G5="⊸",H5="⊸",Q5="∇",q5="Ń",Z5="ń",K5="∠⃒",X5="≉",J5="⩰̸",_5="≋̸",eW="ʼn",tW="≉",rW="♮",nW="ℕ",iW="♮",sW=" ",oW="≎̸",aW="≏̸",cW="⩃",lW="Ň",uW="ň",hW="Ņ",dW="ņ",fW="≇",gW="⩭̸",pW="⩂",mW="Н",yW="н",vW="–",MW="⤤",wW="↗",SW="⇗",TW="↗",CW="≠",IW="≐̸",bW="​",EW="​",xW="​",RW="​",kW="≢",AW="⤨",PW="≂̸",DW="≫",LW="≪",NW=`
568
+ `,OW="∄",zW="∄",BW="𝔑",jW="𝔫",FW="≧̸",UW="≱",WW="≱",VW="≧̸",$W="⩾̸",YW="⩾̸",GW="⋙̸",HW="≵",QW="≫⃒",qW="≯",ZW="≯",KW="≫̸",XW="↮",JW="⇎",_W="⫲",eV="∋",tV="⋼",rV="⋺",nV="∋",iV="Њ",sV="њ",oV="↚",aV="⇍",cV="‥",lV="≦̸",uV="≰",hV="↚",dV="⇍",fV="↮",gV="⇎",pV="≰",mV="≦̸",yV="⩽̸",vV="⩽̸",MV="≮",wV="⋘̸",SV="≴",TV="≪⃒",CV="≮",IV="⋪",bV="⋬",EV="≪̸",xV="∤",RV="⁠",kV=" ",AV="𝕟",PV="ℕ",DV="⫬",LV="¬",NV="≢",OV="≭",zV="∦",BV="∉",jV="≠",FV="≂̸",UV="∄",WV="≯",VV="≱",$V="≧̸",YV="≫̸",GV="≹",HV="⩾̸",QV="≵",qV="≎̸",ZV="≏̸",KV="∉",XV="⋵̸",JV="⋹̸",_V="∉",e$="⋷",t$="⋶",r$="⧏̸",n$="⋪",i$="⋬",s$="≮",o$="≰",a$="≸",c$="≪̸",l$="⩽̸",u$="≴",h$="⪢̸",d$="⪡̸",f$="∌",g$="∌",p$="⋾",m$="⋽",y$="⊀",v$="⪯̸",M$="⋠",w$="∌",S$="⧐̸",T$="⋫",C$="⋭",I$="⊏̸",b$="⋢",E$="⊐̸",x$="⋣",R$="⊂⃒",k$="⊈",A$="⊁",P$="⪰̸",D$="⋡",L$="≿̸",N$="⊃⃒",O$="⊉",z$="≁",B$="≄",j$="≇",F$="≉",U$="∤",W$="∦",V$="∦",$$="⫽⃥",Y$="∂̸",G$="⨔",H$="⊀",Q$="⋠",q$="⊀",Z$="⪯̸",K$="⪯̸",X$="⤳̸",J$="↛",_$="⇏",eY="↝̸",tY="↛",rY="⇏",nY="⋫",iY="⋭",sY="⊁",oY="⋡",aY="⪰̸",cY="𝒩",lY="𝓃",uY="∤",hY="∦",dY="≁",fY="≄",gY="≄",pY="∤",mY="∦",yY="⋢",vY="⋣",MY="⊄",wY="⫅̸",SY="⊈",TY="⊂⃒",CY="⊈",IY="⫅̸",bY="⊁",EY="⪰̸",xY="⊅",RY="⫆̸",kY="⊉",AY="⊃⃒",PY="⊉",DY="⫆̸",LY="≹",NY="Ñ",OY="ñ",zY="≸",BY="⋪",jY="⋬",FY="⋫",UY="⋭",WY="Ν",VY="ν",$Y="#",YY="№",GY=" ",HY="≍⃒",QY="⊬",qY="⊭",ZY="⊮",KY="⊯",XY="≥⃒",JY=">⃒",_Y="⤄",eG="⧞",tG="⤂",rG="≤⃒",nG="<⃒",iG="⊴⃒",sG="⤃",oG="⊵⃒",aG="∼⃒",cG="⤣",lG="↖",uG="⇖",hG="↖",dG="⤧",fG="Ó",gG="ó",pG="⊛",mG="Ô",yG="ô",vG="⊚",MG="О",wG="о",SG="⊝",TG="Ő",CG="ő",IG="⨸",bG="⊙",EG="⦼",xG="Œ",RG="œ",kG="⦿",AG="𝔒",PG="𝔬",DG="˛",LG="Ò",NG="ò",OG="⧁",zG="⦵",BG="Ω",jG="∮",FG="↺",UG="⦾",WG="⦻",VG="‾",$G="⧀",YG="Ō",GG="ō",HG="Ω",QG="ω",qG="Ο",ZG="ο",KG="⦶",XG="⊖",JG="𝕆",_G="𝕠",e8="⦷",t8="“",r8="‘",n8="⦹",i8="⊕",s8="↻",o8="⩔",a8="∨",c8="⩝",l8="ℴ",u8="ℴ",h8="ª",d8="º",f8="⊶",g8="⩖",p8="⩗",m8="⩛",y8="Ⓢ",v8="𝒪",M8="ℴ",w8="Ø",S8="ø",T8="⊘",C8="Õ",I8="õ",b8="⨶",E8="⨷",x8="⊗",R8="Ö",k8="ö",A8="⌽",P8="‾",D8="⏞",L8="⎴",N8="⏜",O8="¶",z8="∥",B8="∥",j8="⫳",F8="⫽",U8="∂",W8="∂",V8="П",$8="п",Y8="%",G8=".",H8="‰",Q8="⊥",q8="‱",Z8="𝔓",K8="𝔭",X8="Φ",J8="φ",_8="ϕ",e6="ℳ",t6="☎",r6="Π",n6="π",i6="⋔",s6="ϖ",o6="ℏ",a6="ℎ",c6="ℏ",l6="⨣",u6="⊞",h6="⨢",d6="+",f6="∔",g6="⨥",p6="⩲",m6="±",y6="±",v6="⨦",M6="⨧",w6="±",S6="ℌ",T6="⨕",C6="𝕡",I6="ℙ",b6="£",E6="⪷",x6="⪻",R6="≺",k6="≼",A6="⪷",P6="≺",D6="≼",L6="≺",N6="⪯",O6="≼",z6="≾",B6="⪯",j6="⪹",F6="⪵",U6="⋨",W6="⪯",V6="⪳",$6="≾",Y6="′",G6="″",H6="ℙ",Q6="⪹",q6="⪵",Z6="⋨",K6="∏",X6="∏",J6="⌮",_6="⌒",e9="⌓",t9="∝",r9="∝",n9="∷",i9="∝",s9="≾",o9="⊰",a9="𝒫",c9="𝓅",l9="Ψ",u9="ψ",h9=" ",d9="𝔔",f9="𝔮",g9="⨌",p9="𝕢",m9="ℚ",y9="⁗",v9="𝒬",M9="𝓆",w9="ℍ",S9="⨖",T9="?",C9="≟",I9='"',b9='"',E9="⇛",x9="∽̱",R9="Ŕ",k9="ŕ",A9="√",P9="⦳",D9="⟩",L9="⟫",N9="⦒",O9="⦥",z9="⟩",B9="»",j9="⥵",F9="⇥",U9="⤠",W9="⤳",V9="→",$9="↠",Y9="⇒",G9="⤞",H9="↪",Q9="↬",q9="⥅",Z9="⥴",K9="⤖",X9="↣",J9="↝",_9="⤚",eH="⤜",tH="∶",rH="ℚ",nH="⤍",iH="⤏",sH="⤐",oH="❳",aH="}",cH="]",lH="⦌",uH="⦎",hH="⦐",dH="Ř",fH="ř",gH="Ŗ",pH="ŗ",mH="⌉",yH="}",vH="Р",MH="р",wH="⤷",SH="⥩",TH="”",CH="”",IH="↳",bH="ℜ",EH="ℛ",xH="ℜ",RH="ℝ",kH="ℜ",AH="▭",PH="®",DH="®",LH="∋",NH="⇋",OH="⥯",zH="⥽",BH="⌋",jH="𝔯",FH="ℜ",UH="⥤",WH="⇁",VH="⇀",$H="⥬",YH="Ρ",GH="ρ",HH="ϱ",QH="⟩",qH="⇥",ZH="→",KH="→",XH="⇒",JH="⇄",_H="↣",e7="⌉",t7="⟧",r7="⥝",n7="⥕",i7="⇂",s7="⌋",o7="⇁",a7="⇀",c7="⇄",l7="⇌",u7="⇉",h7="↝",d7="↦",f7="⊢",g7="⥛",p7="⋌",m7="⧐",y7="⊳",v7="⊵",M7="⥏",w7="⥜",S7="⥔",T7="↾",C7="⥓",I7="⇀",b7="˚",E7="≓",x7="⇄",R7="⇌",k7="‏",A7="⎱",P7="⎱",D7="⫮",L7="⟭",N7="⇾",O7="⟧",z7="⦆",B7="𝕣",j7="ℝ",F7="⨮",U7="⨵",W7="⥰",V7=")",$7="⦔",Y7="⨒",G7="⇉",H7="⇛",Q7="›",q7="𝓇",Z7="ℛ",K7="↱",X7="↱",J7="]",_7="’",eQ="’",tQ="⋌",rQ="⋊",nQ="▹",iQ="⊵",sQ="▸",oQ="⧎",aQ="⧴",cQ="⥨",lQ="℞",uQ="Ś",hQ="ś",dQ="‚",fQ="⪸",gQ="Š",pQ="š",mQ="⪼",yQ="≻",vQ="≽",MQ="⪰",wQ="⪴",SQ="Ş",TQ="ş",CQ="Ŝ",IQ="ŝ",bQ="⪺",EQ="⪶",xQ="⋩",RQ="⨓",kQ="≿",AQ="С",PQ="с",DQ="⊡",LQ="⋅",NQ="⩦",OQ="⤥",zQ="↘",BQ="⇘",jQ="↘",FQ="§",UQ=";",WQ="⤩",VQ="∖",$Q="∖",YQ="✶",GQ="𝔖",HQ="𝔰",QQ="⌢",qQ="♯",ZQ="Щ",KQ="щ",XQ="Ш",JQ="ш",_Q="↓",eq="←",tq="∣",rq="∥",nq="→",iq="↑",sq="­",oq="Σ",aq="σ",cq="ς",lq="ς",uq="∼",hq="⩪",dq="≃",fq="≃",gq="⪞",pq="⪠",mq="⪝",yq="⪟",vq="≆",Mq="⨤",wq="⥲",Sq="←",Tq="∘",Cq="∖",Iq="⨳",bq="⧤",Eq="∣",xq="⌣",Rq="⪪",kq="⪬",Aq="⪬︀",Pq="Ь",Dq="ь",Lq="⌿",Nq="⧄",Oq="/",zq="𝕊",Bq="𝕤",jq="♠",Fq="♠",Uq="∥",Wq="⊓",Vq="⊓︀",$q="⊔",Yq="⊔︀",Gq="√",Hq="⊏",Qq="⊑",qq="⊏",Zq="⊑",Kq="⊐",Xq="⊒",Jq="⊐",_q="⊒",eZ="□",tZ="□",rZ="⊓",nZ="⊏",iZ="⊑",sZ="⊐",oZ="⊒",aZ="⊔",cZ="▪",lZ="□",uZ="▪",hZ="→",dZ="𝒮",fZ="𝓈",gZ="∖",pZ="⌣",mZ="⋆",yZ="⋆",vZ="☆",MZ="★",wZ="ϵ",SZ="ϕ",TZ="¯",CZ="⊂",IZ="⋐",bZ="⪽",EZ="⫅",xZ="⊆",RZ="⫃",kZ="⫁",AZ="⫋",PZ="⊊",DZ="⪿",LZ="⥹",NZ="⊂",OZ="⋐",zZ="⊆",BZ="⫅",jZ="⊆",FZ="⊊",UZ="⫋",WZ="⫇",VZ="⫕",$Z="⫓",YZ="⪸",GZ="≻",HZ="≽",QZ="≻",qZ="⪰",ZZ="≽",KZ="≿",XZ="⪰",JZ="⪺",_Z="⪶",eK="⋩",tK="≿",rK="∋",nK="∑",iK="∑",sK="♪",oK="¹",aK="²",cK="³",lK="⊃",uK="⋑",hK="⪾",dK="⫘",fK="⫆",gK="⊇",pK="⫄",mK="⊃",yK="⊇",vK="⟉",MK="⫗",wK="⥻",SK="⫂",TK="⫌",CK="⊋",IK="⫀",bK="⊃",EK="⋑",xK="⊇",RK="⫆",kK="⊋",AK="⫌",PK="⫈",DK="⫔",LK="⫖",NK="⤦",OK="↙",zK="⇙",BK="↙",jK="⤪",FK="ß",UK=" ",WK="⌖",VK="Τ",$K="τ",YK="⎴",GK="Ť",HK="ť",QK="Ţ",qK="ţ",ZK="Т",KK="т",XK="⃛",JK="⌕",_K="𝔗",eX="𝔱",tX="∴",rX="∴",nX="∴",iX="Θ",sX="θ",oX="ϑ",aX="ϑ",cX="≈",lX="∼",uX="  ",hX=" ",dX=" ",fX="≈",gX="∼",pX="Þ",mX="þ",yX="˜",vX="∼",MX="≃",wX="≅",SX="≈",TX="⨱",CX="⊠",IX="×",bX="⨰",EX="∭",xX="⤨",RX="⌶",kX="⫱",AX="⊤",PX="𝕋",DX="𝕥",LX="⫚",NX="⤩",OX="‴",zX="™",BX="™",jX="▵",FX="▿",UX="◃",WX="⊴",VX="≜",$X="▹",YX="⊵",GX="◬",HX="≜",QX="⨺",qX="⃛",ZX="⨹",KX="⧍",XX="⨻",JX="⏢",_X="𝒯",eJ="𝓉",tJ="Ц",rJ="ц",nJ="Ћ",iJ="ћ",sJ="Ŧ",oJ="ŧ",aJ="≬",cJ="↞",lJ="↠",uJ="Ú",hJ="ú",dJ="↑",fJ="↟",gJ="⇑",pJ="⥉",mJ="Ў",yJ="ў",vJ="Ŭ",MJ="ŭ",wJ="Û",SJ="û",TJ="У",CJ="у",IJ="⇅",bJ="Ű",EJ="ű",xJ="⥮",RJ="⥾",kJ="𝔘",AJ="𝔲",PJ="Ù",DJ="ù",LJ="⥣",NJ="↿",OJ="↾",zJ="▀",BJ="⌜",jJ="⌜",FJ="⌏",UJ="◸",WJ="Ū",VJ="ū",$J="¨",YJ="_",GJ="⏟",HJ="⎵",QJ="⏝",qJ="⋃",ZJ="⊎",KJ="Ų",XJ="ų",JJ="𝕌",_J="𝕦",e_="⤒",t_="↑",r_="↑",n_="⇑",i_="⇅",s_="↕",o_="↕",a_="⇕",c_="⥮",l_="↿",u_="↾",h_="⊎",d_="↖",f_="↗",g_="υ",p_="ϒ",m_="ϒ",y_="Υ",v_="υ",M_="↥",w_="⊥",S_="⇈",T_="⌝",C_="⌝",I_="⌎",b_="Ů",E_="ů",x_="◹",R_="𝒰",k_="𝓊",A_="⋰",P_="Ũ",D_="ũ",L_="▵",N_="▴",O_="⇈",z_="Ü",B_="ü",j_="⦧",F_="⦜",U_="ϵ",W_="ϰ",V_="∅",$_="ϕ",Y_="ϖ",G_="∝",H_="↕",Q_="⇕",q_="ϱ",Z_="ς",K_="⊊︀",X_="⫋︀",J_="⊋︀",__="⫌︀",eee="ϑ",tee="⊲",ree="⊳",nee="⫨",iee="⫫",see="⫩",oee="В",aee="в",cee="⊢",lee="⊨",uee="⊩",hee="⊫",dee="⫦",fee="⊻",gee="∨",pee="⋁",mee="≚",yee="⋮",vee="|",Mee="‖",wee="|",See="‖",Tee="∣",Cee="|",Iee="❘",bee="≀",Eee=" ",xee="𝔙",Ree="𝔳",kee="⊲",Aee="⊂⃒",Pee="⊃⃒",Dee="𝕍",Lee="𝕧",Nee="∝",Oee="⊳",zee="𝒱",Bee="𝓋",jee="⫋︀",Fee="⊊︀",Uee="⫌︀",Wee="⊋︀",Vee="⊪",$ee="⦚",Yee="Ŵ",Gee="ŵ",Hee="⩟",Qee="∧",qee="⋀",Zee="≙",Kee="℘",Xee="𝔚",Jee="𝔴",_ee="𝕎",ete="𝕨",tte="℘",rte="≀",nte="≀",ite="𝒲",ste="𝓌",ote="⋂",ate="◯",cte="⋃",lte="▽",ute="𝔛",hte="𝔵",dte="⟷",fte="⟺",gte="Ξ",pte="ξ",mte="⟵",yte="⟸",vte="⟼",Mte="⋻",wte="⨀",Ste="𝕏",Tte="𝕩",Cte="⨁",Ite="⨂",bte="⟶",Ete="⟹",xte="𝒳",Rte="𝓍",kte="⨆",Ate="⨄",Pte="△",Dte="⋁",Lte="⋀",Nte="Ý",Ote="ý",zte="Я",Bte="я",jte="Ŷ",Fte="ŷ",Ute="Ы",Wte="ы",Vte="¥",$te="𝔜",Yte="𝔶",Gte="Ї",Hte="ї",Qte="𝕐",qte="𝕪",Zte="𝒴",Kte="𝓎",Xte="Ю",Jte="ю",_te="ÿ",ere="Ÿ",tre="Ź",rre="ź",nre="Ž",ire="ž",sre="З",ore="з",are="Ż",cre="ż",lre="ℨ",ure="​",hre="Ζ",dre="ζ",fre="𝔷",gre="ℨ",pre="Ж",mre="ж",yre="⇝",vre="𝕫",Mre="ℤ",wre="𝒵",Sre="𝓏",Tre="‍",Cre="‌",Ay={Aacute:ab,aacute:cb,Abreve:lb,abreve:ub,ac:hb,acd:db,acE:fb,Acirc:gb,acirc:pb,acute:mb,Acy:yb,acy:vb,AElig:Mb,aelig:wb,af:Sb,Afr:Tb,afr:Cb,Agrave:Ib,agrave:bb,alefsym:Eb,aleph:xb,Alpha:Rb,alpha:kb,Amacr:Ab,amacr:Pb,amalg:Db,amp:Lb,AMP:Nb,andand:Ob,And:zb,and:Bb,andd:jb,andslope:Fb,andv:Ub,ang:Wb,ange:Vb,angle:$b,angmsdaa:Yb,angmsdab:Gb,angmsdac:Hb,angmsdad:Qb,angmsdae:qb,angmsdaf:Zb,angmsdag:Kb,angmsdah:Xb,angmsd:Jb,angrt:_b,angrtvb:eE,angrtvbd:tE,angsph:rE,angst:nE,angzarr:iE,Aogon:sE,aogon:oE,Aopf:aE,aopf:cE,apacir:lE,ap:uE,apE:hE,ape:dE,apid:fE,apos:gE,ApplyFunction:pE,approx:mE,approxeq:yE,Aring:vE,aring:ME,Ascr:wE,ascr:SE,Assign:TE,ast:CE,asymp:IE,asympeq:bE,Atilde:EE,atilde:xE,Auml:RE,auml:kE,awconint:AE,awint:PE,backcong:DE,backepsilon:LE,backprime:NE,backsim:OE,backsimeq:zE,Backslash:BE,Barv:jE,barvee:FE,barwed:UE,Barwed:WE,barwedge:VE,bbrk:$E,bbrktbrk:YE,bcong:GE,Bcy:HE,bcy:QE,bdquo:qE,becaus:ZE,because:KE,Because:XE,bemptyv:JE,bepsi:_E,bernou:e2,Bernoullis:t2,Beta:r2,beta:n2,beth:i2,between:s2,Bfr:o2,bfr:a2,bigcap:c2,bigcirc:l2,bigcup:u2,bigodot:h2,bigoplus:d2,bigotimes:f2,bigsqcup:g2,bigstar:p2,bigtriangledown:m2,bigtriangleup:y2,biguplus:v2,bigvee:M2,bigwedge:w2,bkarow:S2,blacklozenge:T2,blacksquare:C2,blacktriangle:I2,blacktriangledown:b2,blacktriangleleft:E2,blacktriangleright:x2,blank:R2,blk12:k2,blk14:A2,blk34:P2,block:D2,bne:L2,bnequiv:N2,bNot:O2,bnot:z2,Bopf:B2,bopf:j2,bot:F2,bottom:U2,bowtie:W2,boxbox:V2,boxdl:$2,boxdL:Y2,boxDl:G2,boxDL:H2,boxdr:Q2,boxdR:q2,boxDr:Z2,boxDR:K2,boxh:X2,boxH:J2,boxhd:_2,boxHd:ex,boxhD:tx,boxHD:rx,boxhu:nx,boxHu:ix,boxhU:sx,boxHU:ox,boxminus:ax,boxplus:cx,boxtimes:lx,boxul:ux,boxuL:hx,boxUl:dx,boxUL:fx,boxur:gx,boxuR:px,boxUr:mx,boxUR:yx,boxv:vx,boxV:Mx,boxvh:wx,boxvH:Sx,boxVh:Tx,boxVH:Cx,boxvl:Ix,boxvL:bx,boxVl:Ex,boxVL:xx,boxvr:Rx,boxvR:kx,boxVr:Ax,boxVR:Px,bprime:Dx,breve:Lx,Breve:Nx,brvbar:Ox,bscr:zx,Bscr:Bx,bsemi:jx,bsim:Fx,bsime:Ux,bsolb:Wx,bsol:Vx,bsolhsub:$x,bull:Yx,bullet:Gx,bump:Hx,bumpE:Qx,bumpe:qx,Bumpeq:Zx,bumpeq:Kx,Cacute:Xx,cacute:Jx,capand:_x,capbrcup:eR,capcap:tR,cap:rR,Cap:nR,capcup:iR,capdot:sR,CapitalDifferentialD:oR,caps:aR,caret:cR,caron:lR,Cayleys:uR,ccaps:hR,Ccaron:dR,ccaron:fR,Ccedil:gR,ccedil:pR,Ccirc:mR,ccirc:yR,Cconint:vR,ccups:MR,ccupssm:wR,Cdot:SR,cdot:TR,cedil:CR,Cedilla:IR,cemptyv:bR,cent:ER,centerdot:xR,CenterDot:RR,cfr:kR,Cfr:AR,CHcy:PR,chcy:DR,check:LR,checkmark:NR,Chi:OR,chi:zR,circ:BR,circeq:jR,circlearrowleft:FR,circlearrowright:UR,circledast:WR,circledcirc:VR,circleddash:$R,CircleDot:YR,circledR:GR,circledS:HR,CircleMinus:QR,CirclePlus:qR,CircleTimes:ZR,cir:KR,cirE:XR,cire:JR,cirfnint:_R,cirmid:ek,cirscir:tk,ClockwiseContourIntegral:rk,CloseCurlyDoubleQuote:nk,CloseCurlyQuote:ik,clubs:sk,clubsuit:ok,colon:ak,Colon:ck,Colone:lk,colone:uk,coloneq:hk,comma:dk,commat:fk,comp:gk,compfn:pk,complement:mk,complexes:yk,cong:vk,congdot:Mk,Congruent:wk,conint:Sk,Conint:Tk,ContourIntegral:Ck,copf:Ik,Copf:bk,coprod:Ek,Coproduct:xk,copy:Rk,COPY:kk,copysr:Ak,CounterClockwiseContourIntegral:Pk,crarr:Dk,cross:Lk,Cross:Nk,Cscr:Ok,cscr:zk,csub:Bk,csube:jk,csup:Fk,csupe:Uk,ctdot:Wk,cudarrl:Vk,cudarrr:$k,cuepr:Yk,cuesc:Gk,cularr:Hk,cularrp:Qk,cupbrcap:qk,cupcap:Zk,CupCap:Kk,cup:Xk,Cup:Jk,cupcup:_k,cupdot:eA,cupor:tA,cups:rA,curarr:nA,curarrm:iA,curlyeqprec:sA,curlyeqsucc:oA,curlyvee:aA,curlywedge:cA,curren:lA,curvearrowleft:uA,curvearrowright:hA,cuvee:dA,cuwed:fA,cwconint:gA,cwint:pA,cylcty:mA,dagger:yA,Dagger:vA,daleth:MA,darr:wA,Darr:SA,dArr:TA,dash:CA,Dashv:IA,dashv:bA,dbkarow:EA,dblac:xA,Dcaron:RA,dcaron:kA,Dcy:AA,dcy:PA,ddagger:DA,ddarr:LA,DD:NA,dd:OA,DDotrahd:zA,ddotseq:BA,deg:jA,Del:FA,Delta:UA,delta:WA,demptyv:VA,dfisht:$A,Dfr:YA,dfr:GA,dHar:HA,dharl:QA,dharr:qA,DiacriticalAcute:ZA,DiacriticalDot:KA,DiacriticalDoubleAcute:XA,DiacriticalGrave:JA,DiacriticalTilde:_A,diam:eP,diamond:tP,Diamond:rP,diamondsuit:nP,diams:iP,die:sP,DifferentialD:oP,digamma:aP,disin:cP,div:lP,divide:uP,divideontimes:hP,divonx:dP,DJcy:fP,djcy:gP,dlcorn:pP,dlcrop:mP,dollar:yP,Dopf:vP,dopf:MP,Dot:wP,dot:SP,DotDot:TP,doteq:CP,doteqdot:IP,DotEqual:bP,dotminus:EP,dotplus:xP,dotsquare:RP,doublebarwedge:kP,DoubleContourIntegral:AP,DoubleDot:PP,DoubleDownArrow:DP,DoubleLeftArrow:LP,DoubleLeftRightArrow:NP,DoubleLeftTee:OP,DoubleLongLeftArrow:zP,DoubleLongLeftRightArrow:BP,DoubleLongRightArrow:jP,DoubleRightArrow:FP,DoubleRightTee:UP,DoubleUpArrow:WP,DoubleUpDownArrow:VP,DoubleVerticalBar:$P,DownArrowBar:YP,downarrow:GP,DownArrow:HP,Downarrow:QP,DownArrowUpArrow:qP,DownBreve:ZP,downdownarrows:KP,downharpoonleft:XP,downharpoonright:JP,DownLeftRightVector:_P,DownLeftTeeVector:eD,DownLeftVectorBar:tD,DownLeftVector:rD,DownRightTeeVector:nD,DownRightVectorBar:iD,DownRightVector:sD,DownTeeArrow:oD,DownTee:aD,drbkarow:cD,drcorn:lD,drcrop:uD,Dscr:hD,dscr:dD,DScy:fD,dscy:gD,dsol:pD,Dstrok:mD,dstrok:yD,dtdot:vD,dtri:MD,dtrif:wD,duarr:SD,duhar:TD,dwangle:CD,DZcy:ID,dzcy:bD,dzigrarr:ED,Eacute:xD,eacute:RD,easter:kD,Ecaron:AD,ecaron:PD,Ecirc:DD,ecirc:LD,ecir:ND,ecolon:OD,Ecy:zD,ecy:BD,eDDot:jD,Edot:FD,edot:UD,eDot:WD,ee:VD,efDot:$D,Efr:YD,efr:GD,eg:HD,Egrave:QD,egrave:qD,egs:ZD,egsdot:KD,el:XD,Element:JD,elinters:_D,ell:eL,els:tL,elsdot:rL,Emacr:nL,emacr:iL,empty:sL,emptyset:oL,EmptySmallSquare:aL,emptyv:cL,EmptyVerySmallSquare:lL,emsp13:uL,emsp14:hL,emsp:dL,ENG:fL,eng:gL,ensp:pL,Eogon:mL,eogon:yL,Eopf:vL,eopf:ML,epar:wL,eparsl:SL,eplus:TL,epsi:CL,Epsilon:IL,epsilon:bL,epsiv:EL,eqcirc:xL,eqcolon:RL,eqsim:kL,eqslantgtr:AL,eqslantless:PL,Equal:DL,equals:LL,EqualTilde:NL,equest:OL,Equilibrium:zL,equiv:BL,equivDD:jL,eqvparsl:FL,erarr:UL,erDot:WL,escr:VL,Escr:$L,esdot:YL,Esim:GL,esim:HL,Eta:QL,eta:qL,ETH:ZL,eth:KL,Euml:XL,euml:JL,euro:_L,excl:eN,exist:tN,Exists:rN,expectation:nN,exponentiale:iN,ExponentialE:sN,fallingdotseq:oN,Fcy:aN,fcy:cN,female:lN,ffilig:uN,fflig:hN,ffllig:dN,Ffr:fN,ffr:gN,filig:pN,FilledSmallSquare:mN,FilledVerySmallSquare:yN,fjlig:vN,flat:MN,fllig:wN,fltns:SN,fnof:TN,Fopf:CN,fopf:IN,forall:bN,ForAll:EN,fork:xN,forkv:RN,Fouriertrf:kN,fpartint:AN,frac12:PN,frac13:DN,frac14:LN,frac15:NN,frac16:ON,frac18:zN,frac23:BN,frac25:jN,frac34:FN,frac35:UN,frac38:WN,frac45:VN,frac56:$N,frac58:YN,frac78:GN,frasl:HN,frown:QN,fscr:qN,Fscr:ZN,gacute:KN,Gamma:XN,gamma:JN,Gammad:_N,gammad:eO,gap:tO,Gbreve:rO,gbreve:nO,Gcedil:iO,Gcirc:sO,gcirc:oO,Gcy:aO,gcy:cO,Gdot:lO,gdot:uO,ge:hO,gE:dO,gEl:fO,gel:gO,geq:pO,geqq:mO,geqslant:yO,gescc:vO,ges:MO,gesdot:wO,gesdoto:SO,gesdotol:TO,gesl:CO,gesles:IO,Gfr:bO,gfr:EO,gg:xO,Gg:RO,ggg:kO,gimel:AO,GJcy:PO,gjcy:DO,gla:LO,gl:NO,glE:OO,glj:zO,gnap:BO,gnapprox:jO,gne:FO,gnE:UO,gneq:WO,gneqq:VO,gnsim:$O,Gopf:YO,gopf:GO,grave:HO,GreaterEqual:QO,GreaterEqualLess:qO,GreaterFullEqual:ZO,GreaterGreater:KO,GreaterLess:XO,GreaterSlantEqual:JO,GreaterTilde:_O,Gscr:ez,gscr:tz,gsim:rz,gsime:nz,gsiml:iz,gtcc:sz,gtcir:oz,gt:az,GT:cz,Gt:lz,gtdot:uz,gtlPar:hz,gtquest:dz,gtrapprox:fz,gtrarr:gz,gtrdot:pz,gtreqless:mz,gtreqqless:yz,gtrless:vz,gtrsim:Mz,gvertneqq:wz,gvnE:Sz,Hacek:Tz,hairsp:Cz,half:Iz,hamilt:bz,HARDcy:Ez,hardcy:xz,harrcir:Rz,harr:kz,hArr:Az,harrw:Pz,Hat:Dz,hbar:Lz,Hcirc:Nz,hcirc:Oz,hearts:zz,heartsuit:Bz,hellip:jz,hercon:Fz,hfr:Uz,Hfr:Wz,HilbertSpace:Vz,hksearow:$z,hkswarow:Yz,hoarr:Gz,homtht:Hz,hookleftarrow:Qz,hookrightarrow:qz,hopf:Zz,Hopf:Kz,horbar:Xz,HorizontalLine:Jz,hscr:_z,Hscr:eB,hslash:tB,Hstrok:rB,hstrok:nB,HumpDownHump:iB,HumpEqual:sB,hybull:oB,hyphen:aB,Iacute:cB,iacute:lB,ic:uB,Icirc:hB,icirc:dB,Icy:fB,icy:gB,Idot:pB,IEcy:mB,iecy:yB,iexcl:vB,iff:MB,ifr:wB,Ifr:SB,Igrave:TB,igrave:CB,ii:IB,iiiint:bB,iiint:EB,iinfin:xB,iiota:RB,IJlig:kB,ijlig:AB,Imacr:PB,imacr:DB,image:LB,ImaginaryI:NB,imagline:OB,imagpart:zB,imath:BB,Im:jB,imof:FB,imped:UB,Implies:WB,incare:VB,in:"∈",infin:$B,infintie:YB,inodot:GB,intcal:HB,int:QB,Int:qB,integers:ZB,Integral:KB,intercal:XB,Intersection:JB,intlarhk:_B,intprod:ej,InvisibleComma:tj,InvisibleTimes:rj,IOcy:nj,iocy:ij,Iogon:sj,iogon:oj,Iopf:aj,iopf:cj,Iota:lj,iota:uj,iprod:hj,iquest:dj,iscr:fj,Iscr:gj,isin:pj,isindot:mj,isinE:yj,isins:vj,isinsv:Mj,isinv:wj,it:Sj,Itilde:Tj,itilde:Cj,Iukcy:Ij,iukcy:bj,Iuml:Ej,iuml:xj,Jcirc:Rj,jcirc:kj,Jcy:Aj,jcy:Pj,Jfr:Dj,jfr:Lj,jmath:Nj,Jopf:Oj,jopf:zj,Jscr:Bj,jscr:jj,Jsercy:Fj,jsercy:Uj,Jukcy:Wj,jukcy:Vj,Kappa:$j,kappa:Yj,kappav:Gj,Kcedil:Hj,kcedil:Qj,Kcy:qj,kcy:Zj,Kfr:Kj,kfr:Xj,kgreen:Jj,KHcy:_j,khcy:e3,KJcy:t3,kjcy:r3,Kopf:n3,kopf:i3,Kscr:s3,kscr:o3,lAarr:a3,Lacute:c3,lacute:l3,laemptyv:u3,lagran:h3,Lambda:d3,lambda:f3,lang:g3,Lang:p3,langd:m3,langle:y3,lap:v3,Laplacetrf:M3,laquo:w3,larrb:S3,larrbfs:T3,larr:C3,Larr:I3,lArr:b3,larrfs:E3,larrhk:x3,larrlp:R3,larrpl:k3,larrsim:A3,larrtl:P3,latail:D3,lAtail:L3,lat:N3,late:O3,lates:z3,lbarr:B3,lBarr:j3,lbbrk:F3,lbrace:U3,lbrack:W3,lbrke:V3,lbrksld:$3,lbrkslu:Y3,Lcaron:G3,lcaron:H3,Lcedil:Q3,lcedil:q3,lceil:Z3,lcub:K3,Lcy:X3,lcy:J3,ldca:_3,ldquo:e4,ldquor:t4,ldrdhar:r4,ldrushar:n4,ldsh:i4,le:s4,lE:o4,LeftAngleBracket:a4,LeftArrowBar:c4,leftarrow:l4,LeftArrow:u4,Leftarrow:h4,LeftArrowRightArrow:d4,leftarrowtail:f4,LeftCeiling:g4,LeftDoubleBracket:p4,LeftDownTeeVector:m4,LeftDownVectorBar:y4,LeftDownVector:v4,LeftFloor:M4,leftharpoondown:w4,leftharpoonup:S4,leftleftarrows:T4,leftrightarrow:C4,LeftRightArrow:I4,Leftrightarrow:b4,leftrightarrows:E4,leftrightharpoons:x4,leftrightsquigarrow:R4,LeftRightVector:k4,LeftTeeArrow:A4,LeftTee:P4,LeftTeeVector:D4,leftthreetimes:L4,LeftTriangleBar:N4,LeftTriangle:O4,LeftTriangleEqual:z4,LeftUpDownVector:B4,LeftUpTeeVector:j4,LeftUpVectorBar:F4,LeftUpVector:U4,LeftVectorBar:W4,LeftVector:V4,lEg:$4,leg:Y4,leq:G4,leqq:H4,leqslant:Q4,lescc:q4,les:Z4,lesdot:K4,lesdoto:X4,lesdotor:J4,lesg:_4,lesges:eF,lessapprox:tF,lessdot:rF,lesseqgtr:nF,lesseqqgtr:iF,LessEqualGreater:sF,LessFullEqual:oF,LessGreater:aF,lessgtr:cF,LessLess:lF,lesssim:uF,LessSlantEqual:hF,LessTilde:dF,lfisht:fF,lfloor:gF,Lfr:pF,lfr:mF,lg:yF,lgE:vF,lHar:MF,lhard:wF,lharu:SF,lharul:TF,lhblk:CF,LJcy:IF,ljcy:bF,llarr:EF,ll:xF,Ll:RF,llcorner:kF,Lleftarrow:AF,llhard:PF,lltri:DF,Lmidot:LF,lmidot:NF,lmoustache:OF,lmoust:zF,lnap:BF,lnapprox:jF,lne:FF,lnE:UF,lneq:WF,lneqq:VF,lnsim:$F,loang:YF,loarr:GF,lobrk:HF,longleftarrow:QF,LongLeftArrow:qF,Longleftarrow:ZF,longleftrightarrow:KF,LongLeftRightArrow:XF,Longleftrightarrow:JF,longmapsto:_F,longrightarrow:eU,LongRightArrow:tU,Longrightarrow:rU,looparrowleft:nU,looparrowright:iU,lopar:sU,Lopf:oU,lopf:aU,loplus:cU,lotimes:lU,lowast:uU,lowbar:hU,LowerLeftArrow:dU,LowerRightArrow:fU,loz:gU,lozenge:pU,lozf:mU,lpar:yU,lparlt:vU,lrarr:MU,lrcorner:wU,lrhar:SU,lrhard:TU,lrm:CU,lrtri:IU,lsaquo:bU,lscr:EU,Lscr:xU,lsh:RU,Lsh:kU,lsim:AU,lsime:PU,lsimg:DU,lsqb:LU,lsquo:NU,lsquor:OU,Lstrok:zU,lstrok:BU,ltcc:jU,ltcir:FU,lt:UU,LT:WU,Lt:VU,ltdot:$U,lthree:YU,ltimes:GU,ltlarr:HU,ltquest:QU,ltri:qU,ltrie:ZU,ltrif:KU,ltrPar:XU,lurdshar:JU,luruhar:_U,lvertneqq:e5,lvnE:t5,macr:r5,male:n5,malt:i5,maltese:s5,Map:"⤅",map:o5,mapsto:a5,mapstodown:c5,mapstoleft:l5,mapstoup:u5,marker:h5,mcomma:d5,Mcy:f5,mcy:g5,mdash:p5,mDDot:m5,measuredangle:y5,MediumSpace:v5,Mellintrf:M5,Mfr:w5,mfr:S5,mho:T5,micro:C5,midast:I5,midcir:b5,mid:E5,middot:x5,minusb:R5,minus:k5,minusd:A5,minusdu:P5,MinusPlus:D5,mlcp:L5,mldr:N5,mnplus:O5,models:z5,Mopf:B5,mopf:j5,mp:F5,mscr:U5,Mscr:W5,mstpos:V5,Mu:$5,mu:Y5,multimap:G5,mumap:H5,nabla:Q5,Nacute:q5,nacute:Z5,nang:K5,nap:X5,napE:J5,napid:_5,napos:eW,napprox:tW,natural:rW,naturals:nW,natur:iW,nbsp:sW,nbump:oW,nbumpe:aW,ncap:cW,Ncaron:lW,ncaron:uW,Ncedil:hW,ncedil:dW,ncong:fW,ncongdot:gW,ncup:pW,Ncy:mW,ncy:yW,ndash:vW,nearhk:MW,nearr:wW,neArr:SW,nearrow:TW,ne:CW,nedot:IW,NegativeMediumSpace:bW,NegativeThickSpace:EW,NegativeThinSpace:xW,NegativeVeryThinSpace:RW,nequiv:kW,nesear:AW,nesim:PW,NestedGreaterGreater:DW,NestedLessLess:LW,NewLine:NW,nexist:OW,nexists:zW,Nfr:BW,nfr:jW,ngE:FW,nge:UW,ngeq:WW,ngeqq:VW,ngeqslant:$W,nges:YW,nGg:GW,ngsim:HW,nGt:QW,ngt:qW,ngtr:ZW,nGtv:KW,nharr:XW,nhArr:JW,nhpar:_W,ni:eV,nis:tV,nisd:rV,niv:nV,NJcy:iV,njcy:sV,nlarr:oV,nlArr:aV,nldr:cV,nlE:lV,nle:uV,nleftarrow:hV,nLeftarrow:dV,nleftrightarrow:fV,nLeftrightarrow:gV,nleq:pV,nleqq:mV,nleqslant:yV,nles:vV,nless:MV,nLl:wV,nlsim:SV,nLt:TV,nlt:CV,nltri:IV,nltrie:bV,nLtv:EV,nmid:xV,NoBreak:RV,NonBreakingSpace:kV,nopf:AV,Nopf:PV,Not:DV,not:LV,NotCongruent:NV,NotCupCap:OV,NotDoubleVerticalBar:zV,NotElement:BV,NotEqual:jV,NotEqualTilde:FV,NotExists:UV,NotGreater:WV,NotGreaterEqual:VV,NotGreaterFullEqual:$V,NotGreaterGreater:YV,NotGreaterLess:GV,NotGreaterSlantEqual:HV,NotGreaterTilde:QV,NotHumpDownHump:qV,NotHumpEqual:ZV,notin:KV,notindot:XV,notinE:JV,notinva:_V,notinvb:e$,notinvc:t$,NotLeftTriangleBar:r$,NotLeftTriangle:n$,NotLeftTriangleEqual:i$,NotLess:s$,NotLessEqual:o$,NotLessGreater:a$,NotLessLess:c$,NotLessSlantEqual:l$,NotLessTilde:u$,NotNestedGreaterGreater:h$,NotNestedLessLess:d$,notni:f$,notniva:g$,notnivb:p$,notnivc:m$,NotPrecedes:y$,NotPrecedesEqual:v$,NotPrecedesSlantEqual:M$,NotReverseElement:w$,NotRightTriangleBar:S$,NotRightTriangle:T$,NotRightTriangleEqual:C$,NotSquareSubset:I$,NotSquareSubsetEqual:b$,NotSquareSuperset:E$,NotSquareSupersetEqual:x$,NotSubset:R$,NotSubsetEqual:k$,NotSucceeds:A$,NotSucceedsEqual:P$,NotSucceedsSlantEqual:D$,NotSucceedsTilde:L$,NotSuperset:N$,NotSupersetEqual:O$,NotTilde:z$,NotTildeEqual:B$,NotTildeFullEqual:j$,NotTildeTilde:F$,NotVerticalBar:U$,nparallel:W$,npar:V$,nparsl:$$,npart:Y$,npolint:G$,npr:H$,nprcue:Q$,nprec:q$,npreceq:Z$,npre:K$,nrarrc:X$,nrarr:J$,nrArr:_$,nrarrw:eY,nrightarrow:tY,nRightarrow:rY,nrtri:nY,nrtrie:iY,nsc:sY,nsccue:oY,nsce:aY,Nscr:cY,nscr:lY,nshortmid:uY,nshortparallel:hY,nsim:dY,nsime:fY,nsimeq:gY,nsmid:pY,nspar:mY,nsqsube:yY,nsqsupe:vY,nsub:MY,nsubE:wY,nsube:SY,nsubset:TY,nsubseteq:CY,nsubseteqq:IY,nsucc:bY,nsucceq:EY,nsup:xY,nsupE:RY,nsupe:kY,nsupset:AY,nsupseteq:PY,nsupseteqq:DY,ntgl:LY,Ntilde:NY,ntilde:OY,ntlg:zY,ntriangleleft:BY,ntrianglelefteq:jY,ntriangleright:FY,ntrianglerighteq:UY,Nu:WY,nu:VY,num:$Y,numero:YY,numsp:GY,nvap:HY,nvdash:QY,nvDash:qY,nVdash:ZY,nVDash:KY,nvge:XY,nvgt:JY,nvHarr:_Y,nvinfin:eG,nvlArr:tG,nvle:rG,nvlt:nG,nvltrie:iG,nvrArr:sG,nvrtrie:oG,nvsim:aG,nwarhk:cG,nwarr:lG,nwArr:uG,nwarrow:hG,nwnear:dG,Oacute:fG,oacute:gG,oast:pG,Ocirc:mG,ocirc:yG,ocir:vG,Ocy:MG,ocy:wG,odash:SG,Odblac:TG,odblac:CG,odiv:IG,odot:bG,odsold:EG,OElig:xG,oelig:RG,ofcir:kG,Ofr:AG,ofr:PG,ogon:DG,Ograve:LG,ograve:NG,ogt:OG,ohbar:zG,ohm:BG,oint:jG,olarr:FG,olcir:UG,olcross:WG,oline:VG,olt:$G,Omacr:YG,omacr:GG,Omega:HG,omega:QG,Omicron:qG,omicron:ZG,omid:KG,ominus:XG,Oopf:JG,oopf:_G,opar:e8,OpenCurlyDoubleQuote:t8,OpenCurlyQuote:r8,operp:n8,oplus:i8,orarr:s8,Or:o8,or:a8,ord:c8,order:l8,orderof:u8,ordf:h8,ordm:d8,origof:f8,oror:g8,orslope:p8,orv:m8,oS:y8,Oscr:v8,oscr:M8,Oslash:w8,oslash:S8,osol:T8,Otilde:C8,otilde:I8,otimesas:b8,Otimes:E8,otimes:x8,Ouml:R8,ouml:k8,ovbar:A8,OverBar:P8,OverBrace:D8,OverBracket:L8,OverParenthesis:N8,para:O8,parallel:z8,par:B8,parsim:j8,parsl:F8,part:U8,PartialD:W8,Pcy:V8,pcy:$8,percnt:Y8,period:G8,permil:H8,perp:Q8,pertenk:q8,Pfr:Z8,pfr:K8,Phi:X8,phi:J8,phiv:_8,phmmat:e6,phone:t6,Pi:r6,pi:n6,pitchfork:i6,piv:s6,planck:o6,planckh:a6,plankv:c6,plusacir:l6,plusb:u6,pluscir:h6,plus:d6,plusdo:f6,plusdu:g6,pluse:p6,PlusMinus:m6,plusmn:y6,plussim:v6,plustwo:M6,pm:w6,Poincareplane:S6,pointint:T6,popf:C6,Popf:I6,pound:b6,prap:E6,Pr:x6,pr:R6,prcue:k6,precapprox:A6,prec:P6,preccurlyeq:D6,Precedes:L6,PrecedesEqual:N6,PrecedesSlantEqual:O6,PrecedesTilde:z6,preceq:B6,precnapprox:j6,precneqq:F6,precnsim:U6,pre:W6,prE:V6,precsim:$6,prime:Y6,Prime:G6,primes:H6,prnap:Q6,prnE:q6,prnsim:Z6,prod:K6,Product:X6,profalar:J6,profline:_6,profsurf:e9,prop:t9,Proportional:r9,Proportion:n9,propto:i9,prsim:s9,prurel:o9,Pscr:a9,pscr:c9,Psi:l9,psi:u9,puncsp:h9,Qfr:d9,qfr:f9,qint:g9,qopf:p9,Qopf:m9,qprime:y9,Qscr:v9,qscr:M9,quaternions:w9,quatint:S9,quest:T9,questeq:C9,quot:I9,QUOT:b9,rAarr:E9,race:x9,Racute:R9,racute:k9,radic:A9,raemptyv:P9,rang:D9,Rang:L9,rangd:N9,range:O9,rangle:z9,raquo:B9,rarrap:j9,rarrb:F9,rarrbfs:U9,rarrc:W9,rarr:V9,Rarr:$9,rArr:Y9,rarrfs:G9,rarrhk:H9,rarrlp:Q9,rarrpl:q9,rarrsim:Z9,Rarrtl:K9,rarrtl:X9,rarrw:J9,ratail:_9,rAtail:eH,ratio:tH,rationals:rH,rbarr:nH,rBarr:iH,RBarr:sH,rbbrk:oH,rbrace:aH,rbrack:cH,rbrke:lH,rbrksld:uH,rbrkslu:hH,Rcaron:dH,rcaron:fH,Rcedil:gH,rcedil:pH,rceil:mH,rcub:yH,Rcy:vH,rcy:MH,rdca:wH,rdldhar:SH,rdquo:TH,rdquor:CH,rdsh:IH,real:bH,realine:EH,realpart:xH,reals:RH,Re:kH,rect:AH,reg:PH,REG:DH,ReverseElement:LH,ReverseEquilibrium:NH,ReverseUpEquilibrium:OH,rfisht:zH,rfloor:BH,rfr:jH,Rfr:FH,rHar:UH,rhard:WH,rharu:VH,rharul:$H,Rho:YH,rho:GH,rhov:HH,RightAngleBracket:QH,RightArrowBar:qH,rightarrow:ZH,RightArrow:KH,Rightarrow:XH,RightArrowLeftArrow:JH,rightarrowtail:_H,RightCeiling:e7,RightDoubleBracket:t7,RightDownTeeVector:r7,RightDownVectorBar:n7,RightDownVector:i7,RightFloor:s7,rightharpoondown:o7,rightharpoonup:a7,rightleftarrows:c7,rightleftharpoons:l7,rightrightarrows:u7,rightsquigarrow:h7,RightTeeArrow:d7,RightTee:f7,RightTeeVector:g7,rightthreetimes:p7,RightTriangleBar:m7,RightTriangle:y7,RightTriangleEqual:v7,RightUpDownVector:M7,RightUpTeeVector:w7,RightUpVectorBar:S7,RightUpVector:T7,RightVectorBar:C7,RightVector:I7,ring:b7,risingdotseq:E7,rlarr:x7,rlhar:R7,rlm:k7,rmoustache:A7,rmoust:P7,rnmid:D7,roang:L7,roarr:N7,robrk:O7,ropar:z7,ropf:B7,Ropf:j7,roplus:F7,rotimes:U7,RoundImplies:W7,rpar:V7,rpargt:$7,rppolint:Y7,rrarr:G7,Rrightarrow:H7,rsaquo:Q7,rscr:q7,Rscr:Z7,rsh:K7,Rsh:X7,rsqb:J7,rsquo:_7,rsquor:eQ,rthree:tQ,rtimes:rQ,rtri:nQ,rtrie:iQ,rtrif:sQ,rtriltri:oQ,RuleDelayed:aQ,ruluhar:cQ,rx:lQ,Sacute:uQ,sacute:hQ,sbquo:dQ,scap:fQ,Scaron:gQ,scaron:pQ,Sc:mQ,sc:yQ,sccue:vQ,sce:MQ,scE:wQ,Scedil:SQ,scedil:TQ,Scirc:CQ,scirc:IQ,scnap:bQ,scnE:EQ,scnsim:xQ,scpolint:RQ,scsim:kQ,Scy:AQ,scy:PQ,sdotb:DQ,sdot:LQ,sdote:NQ,searhk:OQ,searr:zQ,seArr:BQ,searrow:jQ,sect:FQ,semi:UQ,seswar:WQ,setminus:VQ,setmn:$Q,sext:YQ,Sfr:GQ,sfr:HQ,sfrown:QQ,sharp:qQ,SHCHcy:ZQ,shchcy:KQ,SHcy:XQ,shcy:JQ,ShortDownArrow:_Q,ShortLeftArrow:eq,shortmid:tq,shortparallel:rq,ShortRightArrow:nq,ShortUpArrow:iq,shy:sq,Sigma:oq,sigma:aq,sigmaf:cq,sigmav:lq,sim:uq,simdot:hq,sime:dq,simeq:fq,simg:gq,simgE:pq,siml:mq,simlE:yq,simne:vq,simplus:Mq,simrarr:wq,slarr:Sq,SmallCircle:Tq,smallsetminus:Cq,smashp:Iq,smeparsl:bq,smid:Eq,smile:xq,smt:Rq,smte:kq,smtes:Aq,SOFTcy:Pq,softcy:Dq,solbar:Lq,solb:Nq,sol:Oq,Sopf:zq,sopf:Bq,spades:jq,spadesuit:Fq,spar:Uq,sqcap:Wq,sqcaps:Vq,sqcup:$q,sqcups:Yq,Sqrt:Gq,sqsub:Hq,sqsube:Qq,sqsubset:qq,sqsubseteq:Zq,sqsup:Kq,sqsupe:Xq,sqsupset:Jq,sqsupseteq:_q,square:eZ,Square:tZ,SquareIntersection:rZ,SquareSubset:nZ,SquareSubsetEqual:iZ,SquareSuperset:sZ,SquareSupersetEqual:oZ,SquareUnion:aZ,squarf:cZ,squ:lZ,squf:uZ,srarr:hZ,Sscr:dZ,sscr:fZ,ssetmn:gZ,ssmile:pZ,sstarf:mZ,Star:yZ,star:vZ,starf:MZ,straightepsilon:wZ,straightphi:SZ,strns:TZ,sub:CZ,Sub:IZ,subdot:bZ,subE:EZ,sube:xZ,subedot:RZ,submult:kZ,subnE:AZ,subne:PZ,subplus:DZ,subrarr:LZ,subset:NZ,Subset:OZ,subseteq:zZ,subseteqq:BZ,SubsetEqual:jZ,subsetneq:FZ,subsetneqq:UZ,subsim:WZ,subsub:VZ,subsup:$Z,succapprox:YZ,succ:GZ,succcurlyeq:HZ,Succeeds:QZ,SucceedsEqual:qZ,SucceedsSlantEqual:ZZ,SucceedsTilde:KZ,succeq:XZ,succnapprox:JZ,succneqq:_Z,succnsim:eK,succsim:tK,SuchThat:rK,sum:nK,Sum:iK,sung:sK,sup1:oK,sup2:aK,sup3:cK,sup:lK,Sup:uK,supdot:hK,supdsub:dK,supE:fK,supe:gK,supedot:pK,Superset:mK,SupersetEqual:yK,suphsol:vK,suphsub:MK,suplarr:wK,supmult:SK,supnE:TK,supne:CK,supplus:IK,supset:bK,Supset:EK,supseteq:xK,supseteqq:RK,supsetneq:kK,supsetneqq:AK,supsim:PK,supsub:DK,supsup:LK,swarhk:NK,swarr:OK,swArr:zK,swarrow:BK,swnwar:jK,szlig:FK,Tab:UK,target:WK,Tau:VK,tau:$K,tbrk:YK,Tcaron:GK,tcaron:HK,Tcedil:QK,tcedil:qK,Tcy:ZK,tcy:KK,tdot:XK,telrec:JK,Tfr:_K,tfr:eX,there4:tX,therefore:rX,Therefore:nX,Theta:iX,theta:sX,thetasym:oX,thetav:aX,thickapprox:cX,thicksim:lX,ThickSpace:uX,ThinSpace:hX,thinsp:dX,thkap:fX,thksim:gX,THORN:pX,thorn:mX,tilde:yX,Tilde:vX,TildeEqual:MX,TildeFullEqual:wX,TildeTilde:SX,timesbar:TX,timesb:CX,times:IX,timesd:bX,tint:EX,toea:xX,topbot:RX,topcir:kX,top:AX,Topf:PX,topf:DX,topfork:LX,tosa:NX,tprime:OX,trade:zX,TRADE:BX,triangle:jX,triangledown:FX,triangleleft:UX,trianglelefteq:WX,triangleq:VX,triangleright:$X,trianglerighteq:YX,tridot:GX,trie:HX,triminus:QX,TripleDot:qX,triplus:ZX,trisb:KX,tritime:XX,trpezium:JX,Tscr:_X,tscr:eJ,TScy:tJ,tscy:rJ,TSHcy:nJ,tshcy:iJ,Tstrok:sJ,tstrok:oJ,twixt:aJ,twoheadleftarrow:cJ,twoheadrightarrow:lJ,Uacute:uJ,uacute:hJ,uarr:dJ,Uarr:fJ,uArr:gJ,Uarrocir:pJ,Ubrcy:mJ,ubrcy:yJ,Ubreve:vJ,ubreve:MJ,Ucirc:wJ,ucirc:SJ,Ucy:TJ,ucy:CJ,udarr:IJ,Udblac:bJ,udblac:EJ,udhar:xJ,ufisht:RJ,Ufr:kJ,ufr:AJ,Ugrave:PJ,ugrave:DJ,uHar:LJ,uharl:NJ,uharr:OJ,uhblk:zJ,ulcorn:BJ,ulcorner:jJ,ulcrop:FJ,ultri:UJ,Umacr:WJ,umacr:VJ,uml:$J,UnderBar:YJ,UnderBrace:GJ,UnderBracket:HJ,UnderParenthesis:QJ,Union:qJ,UnionPlus:ZJ,Uogon:KJ,uogon:XJ,Uopf:JJ,uopf:_J,UpArrowBar:e_,uparrow:t_,UpArrow:r_,Uparrow:n_,UpArrowDownArrow:i_,updownarrow:s_,UpDownArrow:o_,Updownarrow:a_,UpEquilibrium:c_,upharpoonleft:l_,upharpoonright:u_,uplus:h_,UpperLeftArrow:d_,UpperRightArrow:f_,upsi:g_,Upsi:p_,upsih:m_,Upsilon:y_,upsilon:v_,UpTeeArrow:M_,UpTee:w_,upuparrows:S_,urcorn:T_,urcorner:C_,urcrop:I_,Uring:b_,uring:E_,urtri:x_,Uscr:R_,uscr:k_,utdot:A_,Utilde:P_,utilde:D_,utri:L_,utrif:N_,uuarr:O_,Uuml:z_,uuml:B_,uwangle:j_,vangrt:F_,varepsilon:U_,varkappa:W_,varnothing:V_,varphi:$_,varpi:Y_,varpropto:G_,varr:H_,vArr:Q_,varrho:q_,varsigma:Z_,varsubsetneq:K_,varsubsetneqq:X_,varsupsetneq:J_,varsupsetneqq:__,vartheta:eee,vartriangleleft:tee,vartriangleright:ree,vBar:nee,Vbar:iee,vBarv:see,Vcy:oee,vcy:aee,vdash:cee,vDash:lee,Vdash:uee,VDash:hee,Vdashl:dee,veebar:fee,vee:gee,Vee:pee,veeeq:mee,vellip:yee,verbar:vee,Verbar:Mee,vert:wee,Vert:See,VerticalBar:Tee,VerticalLine:Cee,VerticalSeparator:Iee,VerticalTilde:bee,VeryThinSpace:Eee,Vfr:xee,vfr:Ree,vltri:kee,vnsub:Aee,vnsup:Pee,Vopf:Dee,vopf:Lee,vprop:Nee,vrtri:Oee,Vscr:zee,vscr:Bee,vsubnE:jee,vsubne:Fee,vsupnE:Uee,vsupne:Wee,Vvdash:Vee,vzigzag:$ee,Wcirc:Yee,wcirc:Gee,wedbar:Hee,wedge:Qee,Wedge:qee,wedgeq:Zee,weierp:Kee,Wfr:Xee,wfr:Jee,Wopf:_ee,wopf:ete,wp:tte,wr:rte,wreath:nte,Wscr:ite,wscr:ste,xcap:ote,xcirc:ate,xcup:cte,xdtri:lte,Xfr:ute,xfr:hte,xharr:dte,xhArr:fte,Xi:gte,xi:pte,xlarr:mte,xlArr:yte,xmap:vte,xnis:Mte,xodot:wte,Xopf:Ste,xopf:Tte,xoplus:Cte,xotime:Ite,xrarr:bte,xrArr:Ete,Xscr:xte,xscr:Rte,xsqcup:kte,xuplus:Ate,xutri:Pte,xvee:Dte,xwedge:Lte,Yacute:Nte,yacute:Ote,YAcy:zte,yacy:Bte,Ycirc:jte,ycirc:Fte,Ycy:Ute,ycy:Wte,yen:Vte,Yfr:$te,yfr:Yte,YIcy:Gte,yicy:Hte,Yopf:Qte,yopf:qte,Yscr:Zte,yscr:Kte,YUcy:Xte,yucy:Jte,yuml:_te,Yuml:ere,Zacute:tre,zacute:rre,Zcaron:nre,zcaron:ire,Zcy:sre,zcy:ore,Zdot:are,zdot:cre,zeetrf:lre,ZeroWidthSpace:ure,Zeta:hre,zeta:dre,zfr:fre,Zfr:gre,ZHcy:pre,zhcy:mre,zigrarr:yre,zopf:vre,Zopf:Mre,Zscr:wre,zscr:Sre,zwj:Tre,zwnj:Cre},Ire="Á",bre="á",Ere="Â",xre="â",Rre="´",kre="Æ",Are="æ",Pre="À",Dre="à",Lre="&",Nre="&",Ore="Å",zre="å",Bre="Ã",jre="ã",Fre="Ä",Ure="ä",Wre="¦",Vre="Ç",$re="ç",Yre="¸",Gre="¢",Hre="©",Qre="©",qre="¤",Zre="°",Kre="÷",Xre="É",Jre="é",_re="Ê",ene="ê",tne="È",rne="è",nne="Ð",ine="ð",sne="Ë",one="ë",ane="½",cne="¼",lne="¾",une=">",hne=">",dne="Í",fne="í",gne="Î",pne="î",mne="¡",yne="Ì",vne="ì",Mne="¿",wne="Ï",Sne="ï",Tne="«",Cne="<",Ine="<",bne="¯",Ene="µ",xne="·",Rne=" ",kne="¬",Ane="Ñ",Pne="ñ",Dne="Ó",Lne="ó",Nne="Ô",One="ô",zne="Ò",Bne="ò",jne="ª",Fne="º",Une="Ø",Wne="ø",Vne="Õ",$ne="õ",Yne="Ö",Gne="ö",Hne="¶",Qne="±",qne="£",Zne='"',Kne='"',Xne="»",Jne="®",_ne="®",eie="§",tie="­",rie="¹",nie="²",iie="³",sie="ß",oie="Þ",aie="þ",cie="×",lie="Ú",uie="ú",hie="Û",die="û",fie="Ù",gie="ù",pie="¨",mie="Ü",yie="ü",vie="Ý",Mie="ý",wie="¥",Sie="ÿ",Tie={Aacute:Ire,aacute:bre,Acirc:Ere,acirc:xre,acute:Rre,AElig:kre,aelig:Are,Agrave:Pre,agrave:Dre,amp:Lre,AMP:Nre,Aring:Ore,aring:zre,Atilde:Bre,atilde:jre,Auml:Fre,auml:Ure,brvbar:Wre,Ccedil:Vre,ccedil:$re,cedil:Yre,cent:Gre,copy:Hre,COPY:Qre,curren:qre,deg:Zre,divide:Kre,Eacute:Xre,eacute:Jre,Ecirc:_re,ecirc:ene,Egrave:tne,egrave:rne,ETH:nne,eth:ine,Euml:sne,euml:one,frac12:ane,frac14:cne,frac34:lne,gt:une,GT:hne,Iacute:dne,iacute:fne,Icirc:gne,icirc:pne,iexcl:mne,Igrave:yne,igrave:vne,iquest:Mne,Iuml:wne,iuml:Sne,laquo:Tne,lt:Cne,LT:Ine,macr:bne,micro:Ene,middot:xne,nbsp:Rne,not:kne,Ntilde:Ane,ntilde:Pne,Oacute:Dne,oacute:Lne,Ocirc:Nne,ocirc:One,Ograve:zne,ograve:Bne,ordf:jne,ordm:Fne,Oslash:Une,oslash:Wne,Otilde:Vne,otilde:$ne,Ouml:Yne,ouml:Gne,para:Hne,plusmn:Qne,pound:qne,quot:Zne,QUOT:Kne,raquo:Xne,reg:Jne,REG:_ne,sect:eie,shy:tie,sup1:rie,sup2:nie,sup3:iie,szlig:sie,THORN:oie,thorn:aie,times:cie,Uacute:lie,uacute:uie,Ucirc:hie,ucirc:die,Ugrave:fie,ugrave:gie,uml:pie,Uuml:mie,uuml:yie,Yacute:vie,yacute:Mie,yen:wie,yuml:Sie},Cie="&",Iie="'",bie=">",Eie="<",xie='"',Py={amp:Cie,apos:Iie,gt:bie,lt:Eie,quot:xie};var Bh={};const Rie={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376};var kie=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(Bh,"__esModule",{value:!0});var cg=kie(Rie),Aie=String.fromCodePoint||function(s){var r="";return s>65535&&(s-=65536,r+=String.fromCharCode(s>>>10&1023|55296),s=56320|s&1023),r+=String.fromCharCode(s),r};function Pie(s){return s>=55296&&s<=57343||s>1114111?"�":(s in cg.default&&(s=cg.default[s]),Aie(s))}Bh.default=Pie;var pc=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(an,"__esModule",{value:!0});an.decodeHTML=an.decodeHTMLStrict=an.decodeXML=void 0;var Iu=pc(Ay),Die=pc(Tie),Lie=pc(Py),lg=pc(Bh),Nie=/&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g;an.decodeXML=Dy(Lie.default);an.decodeHTMLStrict=Dy(Iu.default);function Dy(s){var r=Ly(s);return function(e){return String(e).replace(Nie,r)}}var ug=function(s,r){return s<r?1:-1};an.decodeHTML=function(){for(var s=Object.keys(Die.default).sort(ug),r=Object.keys(Iu.default).sort(ug),e=0,t=0;e<r.length;e++)s[t]===r[e]?(r[e]+=";?",t++):r[e]+=";";var n=new RegExp("&(?:"+r.join("|")+"|#[xX][\\da-fA-F]+;?|#\\d+;?)","g"),i=Ly(Iu.default);function o(a){return a.substr(-1)!==";"&&(a+=";"),i(a)}return function(a){return String(a).replace(n,o)}}();function Ly(s){return function(e){if(e.charAt(1)==="#"){var t=e.charAt(2);return t==="X"||t==="x"?lg.default(parseInt(e.substr(3),16)):lg.default(parseInt(e.substr(2),10))}return s[e.slice(1,-1)]||e}}var sr={},Ny=St&&St.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(sr,"__esModule",{value:!0});sr.escapeUTF8=sr.escape=sr.encodeNonAsciiHTML=sr.encodeHTML=sr.encodeXML=void 0;var Oie=Ny(Py),Oy=By(Oie.default),zy=jy(Oy);sr.encodeXML=Wy(Oy);var zie=Ny(Ay),jh=By(zie.default),Bie=jy(jh);sr.encodeHTML=Fie(jh,Bie);sr.encodeNonAsciiHTML=Wy(jh);function By(s){return Object.keys(s).sort().reduce(function(r,e){return r[s[e]]="&"+e+";",r},{})}function jy(s){for(var r=[],e=[],t=0,n=Object.keys(s);t<n.length;t++){var i=n[t];i.length===1?r.push("\\"+i):e.push(i)}r.sort();for(var o=0;o<r.length-1;o++){for(var a=o;a<r.length-1&&r[a].charCodeAt(1)+1===r[a+1].charCodeAt(1);)a+=1;var c=1+a-o;c<3||r.splice(o,c,r[o]+"-"+r[a])}return e.unshift("["+r.join("")+"]"),new RegExp(e.join("|"),"g")}var Fy=/(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,jie=String.prototype.codePointAt!=null?function(s){return s.codePointAt(0)}:function(s){return(s.charCodeAt(0)-55296)*1024+s.charCodeAt(1)-56320+65536};function mc(s){return"&#x"+(s.length>1?jie(s):s.charCodeAt(0)).toString(16).toUpperCase()+";"}function Fie(s,r){return function(e){return e.replace(r,function(t){return s[t]}).replace(Fy,mc)}}var Uy=new RegExp(zy.source+"|"+Fy.source,"g");function Uie(s){return s.replace(Uy,mc)}sr.escape=Uie;function Wie(s){return s.replace(zy,mc)}sr.escapeUTF8=Wie;function Wy(s){return function(r){return r.replace(Uy,function(e){return s[e]||mc(e)})}}(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.decodeXMLStrict=s.decodeHTML5Strict=s.decodeHTML4Strict=s.decodeHTML5=s.decodeHTML4=s.decodeHTMLStrict=s.decodeHTML=s.decodeXML=s.encodeHTML5=s.encodeHTML4=s.escapeUTF8=s.escape=s.encodeNonAsciiHTML=s.encodeHTML=s.encodeXML=s.encode=s.decodeStrict=s.decode=void 0;var r=an,e=sr;function t(c,l){return(!l||l<=0?r.decodeXML:r.decodeHTML)(c)}s.decode=t;function n(c,l){return(!l||l<=0?r.decodeXML:r.decodeHTMLStrict)(c)}s.decodeStrict=n;function i(c,l){return(!l||l<=0?e.encodeXML:e.encodeHTML)(c)}s.encode=i;var o=sr;Object.defineProperty(s,"encodeXML",{enumerable:!0,get:function(){return o.encodeXML}}),Object.defineProperty(s,"encodeHTML",{enumerable:!0,get:function(){return o.encodeHTML}}),Object.defineProperty(s,"encodeNonAsciiHTML",{enumerable:!0,get:function(){return o.encodeNonAsciiHTML}}),Object.defineProperty(s,"escape",{enumerable:!0,get:function(){return o.escape}}),Object.defineProperty(s,"escapeUTF8",{enumerable:!0,get:function(){return o.escapeUTF8}}),Object.defineProperty(s,"encodeHTML4",{enumerable:!0,get:function(){return o.encodeHTML}}),Object.defineProperty(s,"encodeHTML5",{enumerable:!0,get:function(){return o.encodeHTML}});var a=an;Object.defineProperty(s,"decodeXML",{enumerable:!0,get:function(){return a.decodeXML}}),Object.defineProperty(s,"decodeHTML",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTMLStrict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeHTML4",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTML5",{enumerable:!0,get:function(){return a.decodeHTML}}),Object.defineProperty(s,"decodeHTML4Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeHTML5Strict",{enumerable:!0,get:function(){return a.decodeHTMLStrict}}),Object.defineProperty(s,"decodeXMLStrict",{enumerable:!0,get:function(){return a.decodeXML}})})(ky);const Vie={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",fedropshadow:"feDropShadow",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},$ie={definitionurl:"definitionURL",attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},Yie={elementNames:Vie,attributeNames:$ie};var Fo=Ry,Vy=ky,yc=Yie;yc.elementNames.__proto__=null;yc.attributeNames.__proto__=null;var Gie={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0};function Hie(s,r){if(s){var e="",t;for(var n in s)t=s[n],e&&(e+=" "),r.xmlMode==="foreign"&&(n=yc.attributeNames[n]||n),e+=n,(t!==null&&t!==""||r.xmlMode)&&(e+='="'+(r.decodeEntities?Vy.encodeXML(t):t.replace(/\"/g,"&quot;"))+'"');return e}}var Qie={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},$y=xy.exports=function(s,r){!Array.isArray(s)&&!s.cheerio&&(s=[s]),r=r||{};for(var e="",t=0;t<s.length;t++){var n=s[t];n.type==="root"?e+=$y(n.children,r):Fo.isTag(n)?e+=Zie(n,r):n.type===Fo.Directive?e+=Kie(n):n.type===Fo.Comment?e+=_ie(n):n.type===Fo.CDATA?e+=Jie(n):e+=Xie(n,r)}return e},qie=["mi","mo","mn","ms","mtext","annotation-xml","foreignObject","desc","title"];function Zie(s,r){r.xmlMode==="foreign"&&(s.name=yc.elementNames[s.name]||s.name,s.parent&&qie.indexOf(s.parent.name)>=0&&(r=Object.assign({},r,{xmlMode:!1}))),!r.xmlMode&&["svg","math"].indexOf(s.name)>=0&&(r=Object.assign({},r,{xmlMode:"foreign"}));var e="<"+s.name,t=Hie(s.attribs,r);return t&&(e+=" "+t),r.xmlMode&&(!s.children||s.children.length===0)?e+="/>":(e+=">",s.children&&(e+=$y(s.children,r)),(!Qie[s.name]||r.xmlMode)&&(e+="</"+s.name+">")),e}function Kie(s){return"<"+s.data+">"}function Xie(s,r){var e=s.data||"";return r.decodeEntities&&!(s.parent&&s.parent.name in Gie)&&(e=Vy.encodeXML(e)),e}function Jie(s){return"<![CDATA["+s.children[0].data+"]]>"}function _ie(s){return"<!--"+s.data+"-->"}var ese=xy.exports,bu=zh,Yy=ese,tse=bu.isTag,rse={getInnerHTML:nse,getOuterHTML:Yy,getText:da};function nse(s,r){return s.children?s.children.map(function(e){return Yy(e,r)}).join(""):""}function da(s){return Array.isArray(s)?s.map(da).join(""):tse(s)?s.name==="br"?`
569
+ `:da(s.children):s.type===bu.CDATA?da(s.children):s.type===bu.Text?s.data:""}var fi={},ise=fi.getChildren=function(s){return s.children},sse=fi.getParent=function(s){return s.parent};fi.getSiblings=function(s){var r=sse(s);return r?ise(r):[s]};fi.getAttributeValue=function(s,r){return s.attribs&&s.attribs[r]};fi.hasAttrib=function(s,r){return!!s.attribs&&hasOwnProperty.call(s.attribs,r)};fi.getName=function(s){return s.name};var _i={};_i.removeElement=function(s){if(s.prev&&(s.prev.next=s.next),s.next&&(s.next.prev=s.prev),s.parent){var r=s.parent.children;r.splice(r.lastIndexOf(s),1)}};_i.replaceElement=function(s,r){var e=r.prev=s.prev;e&&(e.next=r);var t=r.next=s.next;t&&(t.prev=r);var n=r.parent=s.parent;if(n){var i=n.children;i[i.lastIndexOf(s)]=r}};_i.appendChild=function(s,r){if(r.parent=s,s.children.push(r)!==1){var e=s.children[s.children.length-2];e.next=r,r.prev=e,r.next=null}};_i.append=function(s,r){var e=s.parent,t=s.next;if(r.next=t,r.prev=s,s.next=r,r.parent=e,t){if(t.prev=r,e){var n=e.children;n.splice(n.lastIndexOf(t),0,r)}}else e&&e.children.push(r)};_i.prepend=function(s,r){var e=s.parent;if(e){var t=e.children;t.splice(t.lastIndexOf(s),0,r)}s.prev&&(s.prev.next=r),r.parent=e,r.prev=s.prev,r.next=s,s.prev=r};var Fh=zh.isTag,ose={filter:ase,find:Uh,findOneChild:cse,findOne:Gy,existsOne:Hy,findAll:lse};function ase(s,r,e,t){return Array.isArray(r)||(r=[r]),(typeof t!="number"||!isFinite(t))&&(t=1/0),Uh(s,r,e!==!1,t)}function Uh(s,r,e,t){for(var n=[],i,o=0,a=r.length;o<a&&!(s(r[o])&&(n.push(r[o]),--t<=0)||(i=r[o].children,e&&i&&i.length>0&&(i=Uh(s,i,e,t),n=n.concat(i),t-=i.length,t<=0)));o++);return n}function cse(s,r){for(var e=0,t=r.length;e<t;e++)if(s(r[e]))return r[e];return null}function Gy(s,r){for(var e=null,t=0,n=r.length;t<n&&!e;t++)if(Fh(r[t]))s(r[t])?e=r[t]:r[t].children.length>0&&(e=Gy(s,r[t].children));else continue;return e}function Hy(s,r){for(var e=0,t=r.length;e<t;e++)if(Fh(r[e])&&(s(r[e])||r[e].children.length>0&&Hy(s,r[e].children)))return!0;return!1}function lse(s,r){for(var e=[],t=r.slice();t.length;){var n=t.shift();Fh(n)&&(n.children&&n.children.length>0&&t.unshift.apply(t,n.children),s(n)&&e.push(n))}return e}var gi={},use=zh,Qn=gi.isTag=use.isTag;gi.testElement=function(s,r){for(var e in s)if(s.hasOwnProperty(e)){if(e==="tag_name"){if(!Qn(r)||!s.tag_name(r.name))return!1}else if(e==="tag_type"){if(!s.tag_type(r.type))return!1}else if(e==="tag_contains"){if(Qn(r)||!s.tag_contains(r.data))return!1}else if(!r.attribs||!s[e](r.attribs[e]))return!1}return!0};var ba={tag_name:function(s){return typeof s=="function"?function(r){return Qn(r)&&s(r.name)}:s==="*"?Qn:function(r){return Qn(r)&&r.name===s}},tag_type:function(s){return typeof s=="function"?function(r){return s(r.type)}:function(r){return r.type===s}},tag_contains:function(s){return typeof s=="function"?function(r){return!Qn(r)&&s(r.data)}:function(r){return!Qn(r)&&r.data===s}}};function Qy(s,r){return typeof r=="function"?function(e){return e.attribs&&r(e.attribs[s])}:function(e){return e.attribs&&e.attribs[s]===r}}function hse(s,r){return function(e){return s(e)||r(e)}}gi.getElements=function(s,r,e,t){var n=Object.keys(s).map(function(i){var o=s[i];return i in ba?ba[i](o):Qy(i,o)});return n.length===0?[]:this.filter(n.reduce(hse),r,e,t)};gi.getElementById=function(s,r,e){return Array.isArray(r)||(r=[r]),this.findOne(Qy("id",s),r,e!==!1)};gi.getElementsByTagName=function(s,r,e,t){return this.filter(ba.tag_name(s),r,e,t)};gi.getElementsByTagType=function(s,r,e,t){return this.filter(ba.tag_type(s),r,e,t)};var vc={};vc.removeSubsets=function(s){for(var r=s.length,e,t,n;--r>-1;){for(e=t=s[r],s[r]=null,n=!0;t;){if(s.indexOf(t)>-1){n=!1,s.splice(r,1);break}t=t.parent}n&&(s[r]=e)}return s};var Kr={DISCONNECTED:1,PRECEDING:2,FOLLOWING:4,CONTAINS:8,CONTAINED_BY:16},dse=vc.compareDocumentPosition=function(s,r){var e=[],t=[],n,i,o,a,c,l;if(s===r)return 0;for(n=s;n;)e.unshift(n),n=n.parent;for(n=r;n;)t.unshift(n),n=n.parent;for(l=0;e[l]===t[l];)l++;return l===0?Kr.DISCONNECTED:(i=e[l-1],o=i.children,a=e[l],c=t[l],o.indexOf(a)>o.indexOf(c)?i===r?Kr.FOLLOWING|Kr.CONTAINED_BY:Kr.FOLLOWING:i===s?Kr.PRECEDING|Kr.CONTAINS:Kr.PRECEDING)};vc.uniqueSort=function(s){var r=s.length,e,t;for(s=s.slice();--r>-1;)e=s[r],t=s.indexOf(e),t>-1&&t<r&&s.splice(r,1);return s.sort(function(n,i){var o=dse(n,i);return o&Kr.PRECEDING?-1:o&Kr.FOLLOWING?1:0}),s};(function(s){var r=s.exports;[rse,fi,_i,ose,gi,vc].forEach(function(e){Object.keys(e).forEach(function(t){r[t]=e[t].bind(r)})})})(Ey);var fse=Ey.exports,lo={trueFunc:function(){return!0},falseFunc:function(){return!1}},qy={},Ea={};Object.defineProperty(Ea,"__esModule",{value:!0});Ea.default=wse;var hg=/^[^\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/,gse=/\\([\da-f]{1,6}\s?|(\s)|.)/gi,pse=/^\s*((?:\\.|[\w\u00b0-\uFFFF-])+)\s*(?:(\S?)=\s*(?:(['"])((?:[^\\]|\\[^])*?)\3|(#?(?:\\.|[\w\u00b0-\uFFFF-])*)|)|)\s*(i)?\]/,mse={undefined:"exists","":"equals","~":"element","^":"start",$:"end","*":"any","!":"not","|":"hyphen"},dg={">":"child","<":"parent","~":"sibling","+":"adjacent"},fg={"#":["id","equals"],".":["class","element"]},yse=new Set(["has","not","matches","is","host","host-context"]),vse=new Set(["contains","icontains"]),gg=new Set(['"',"'"]);function Mse(s,r,e){var t=parseInt(r,16)-65536;return t!==t||e?r:t<0?String.fromCharCode(t+65536):String.fromCharCode(t>>10|55296,t&1023|56320)}function Uo(s){return s.replace(gse,Mse)}function pg(s){return s===" "||s===`
570
+ `||s===" "||s==="\f"||s==="\r"}function wse(s,r){var e=[];if(s=Zy(e,""+s,r),s!=="")throw new Error("Unmatched selector: "+s);return e}function Zy(s,r,e){var t,n;e===void 0&&(e={});var i=[],o=!1;function a(){var A=r.match(hg);if(!A)throw new Error("Expected name, found "+r);var k=A[0];return r=r.substr(k.length),Uo(k)}function c(A){for(;pg(r.charAt(A));)A++;r=r.substr(A)}function l(A){for(var k=0;r.charAt(--A)==="\\";)k++;return(k&1)===1}for(c(0);r!=="";){var u=r.charAt(0);if(pg(u))o=!0,c(1);else if(u in dg)i.push({type:dg[u]}),o=!1,c(1);else if(u===","){if(i.length===0)throw new Error("Empty sub-selector");s.push(i),i=[],o=!1,c(1)}else if(o&&(i.length>0&&i.push({type:"descendant"}),o=!1),u==="*")r=r.substr(1),i.push({type:"universal"});else if(u in fg){var h=fg[u],d=h[0],f=h[1];r=r.substr(1),i.push({type:"attribute",name:d,action:f,value:a(),ignoreCase:!1})}else if(u==="["){r=r.substr(1);var g=r.match(pse);if(!g)throw new Error("Malformed attribute selector: "+r);var y=g[0],S=g[1],E=g[2],C=g[4],L=C===void 0?"":C,T=g[5],p=T===void 0?L:T,m=g[6];r=r.substr(y.length);var M=Uo(S);((t=e.lowerCaseAttributeNames)!==null&&t!==void 0?t:!e.xmlMode)&&(M=M.toLowerCase()),i.push({type:"attribute",name:M,action:mse[E],value:Uo(p),ignoreCase:!!m})}else if(u===":"){if(r.charAt(1)===":"){r=r.substr(2),i.push({type:"pseudo-element",name:a().toLowerCase()});continue}r=r.substr(1);var v=a().toLowerCase(),R=null;if(r.startsWith("("))if(yse.has(v)){var b=r.charAt(1),P=gg.has(b);if(r=r.substr(P?2:1),R=[],r=Zy(R,r,e),P)if(r.startsWith(b))r=r.substr(1);else throw new Error("Unmatched quotes in :"+v);if(!r.startsWith(")"))throw new Error("Missing closing parenthesis in :"+v+" ("+r+")");r=r.substr(1)}else{for(var D=1,z=1;z>0&&D<r.length;D++)r.charAt(D)==="("&&!l(D)?z++:r.charAt(D)===")"&&!l(D)&&z--;if(z)throw new Error("Parenthesis not matched");if(R=r.substr(1,D-2),r=r.substr(D),vse.has(v)){var b=R.charAt(0);b===R.slice(-1)&&gg.has(b)&&(R=R.slice(1,-1)),R=Uo(R)}}i.push({type:"pseudo",name:v,data:R})}else if(hg.test(r)){var j=a();((n=e.lowerCaseTags)!==null&&n!==void 0?n:!e.xmlMode)&&(j=j.toLowerCase()),i.push({type:"tag",name:j})}else return i.length&&i[i.length-1].type==="descendant"&&i.pop(),mg(s,i),r}return mg(s,i),r}function mg(s,r){if(s.length>0&&r.length===0)throw new Error("Empty sub-selector");s.push(r)}var Wh={},Sse=St&&St.__spreadArrays||function(){for(var s=0,r=0,e=arguments.length;r<e;r++)s+=arguments[r].length;for(var t=Array(s),n=0,r=0;r<e;r++)for(var i=arguments[r],o=0,a=i.length;o<a;o++,n++)t[n]=i[o];return t};Object.defineProperty(Wh,"__esModule",{value:!0});var Eu={equals:"",element:"~",start:"^",end:"$",any:"*",not:"!",hyphen:"|"},Tse=new Set(Sse(Object.keys(Eu).map(function(s){return Eu[s]}).filter(Boolean),[":","[","]"," ","\\"]));function Ky(s){return s.map(Cse).join(", ")}Wh.default=Ky;function Cse(s){return s.map(Ise).join("")}function Ise(s){switch(s.type){case"child":return" > ";case"parent":return" < ";case"sibling":return" ~ ";case"adjacent":return" + ";case"descendant":return" ";case"universal":return"*";case"tag":return xr(s.name);case"pseudo-element":return"::"+xr(s.name);case"pseudo":return s.data===null?":"+xr(s.name):typeof s.data=="string"?":"+xr(s.name)+"("+s.data+")":":"+xr(s.name)+"("+Ky(s.data)+")";case"attribute":return s.action==="exists"?"["+xr(s.name)+"]":s.name==="id"&&s.action==="equals"&&!s.ignoreCase?"#"+xr(s.value):s.name==="class"&&s.action==="element"&&!s.ignoreCase?"."+xr(s.value):"["+xr(s.name)+Eu[s.action]+"='"+xr(s.value)+"'"+(s.ignoreCase?"i":"")+"]"}}function xr(s){return s.split("").map(function(r){return Tse.has(r)?"\\"+r:r}).join("")}(function(s){var r=St&&St.__createBinding||(Object.create?function(o,a,c,l){l===void 0&&(l=c),Object.defineProperty(o,l,{enumerable:!0,get:function(){return a[c]}})}:function(o,a,c,l){l===void 0&&(l=c),o[l]=a[c]}),e=St&&St.__exportStar||function(o,a){for(var c in o)c!=="default"&&!Object.prototype.hasOwnProperty.call(a,c)&&r(a,o,c)},t=St&&St.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(s,"__esModule",{value:!0}),s.stringify=s.parse=void 0,e(Ea,s);var n=Ea;Object.defineProperty(s,"parse",{enumerable:!0,get:function(){return t(n).default}});var i=Wh;Object.defineProperty(s,"stringify",{enumerable:!0,get:function(){return t(i).default}})})(qy);const bse=50,Ese=30,xse=1,Rse=0,kse=-1,Ase=-1,Pse=-1,Dse=-1,Lse=-1,Xy={universal:bse,tag:Ese,attribute:xse,pseudo:Rse,descendant:kse,child:Ase,parent:Pse,sibling:Dse,adjacent:Lse};var Nse=Ose,xl=Xy,yg={__proto__:null,exists:10,equals:8,not:7,start:6,end:6,any:5,hyphen:4,element:4};function Ose(s){for(var r=s.map(Jy),e=1;e<s.length;e++){var t=r[e];if(!(t<0))for(var n=e-1;n>=0&&t<r[n];n--){var i=s[n+1];s[n+1]=s[n],s[n]=i,r[n+1]=r[n],r[n]=t}}}function Jy(s){var r=xl[s.type];if(r===xl.attribute)r=yg[s.action],r===yg.equals&&s.name==="id"&&(r=9),s.ignoreCase&&(r>>=1);else if(r===xl.pseudo)if(!s.data)r=3;else if(s.name==="has"||s.name==="contains")r=0;else if(s.name==="matches"||s.name==="not"){r=0;for(var e=0;e<s.data.length;e++)if(s.data[e].length===1){var t=Jy(s.data[e][0]);if(t===0){r=0;break}t>r&&(r=t)}s.data.length>1&&r>0&&(r-=1)}else r=1;return r}var Wo=lo.falseFunc,vg=/[-[\]{}()*+?.,\\^$|#\s]/g,Mg={__proto__:null,equals:function(s,r,e){var t=r.name,n=r.value,i=e.adapter;return r.ignoreCase?(n=n.toLowerCase(),function(a){var c=i.getAttributeValue(a,t);return c!=null&&c.toLowerCase()===n&&s(a)}):function(a){return i.getAttributeValue(a,t)===n&&s(a)}},hyphen:function(s,r,e){var t=r.name,n=r.value,i=n.length,o=e.adapter;return r.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,t);return l!=null&&(l.length===i||l.charAt(i)==="-")&&l.substr(0,i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,t);return l!=null&&l.substr(0,i)===n&&(l.length===i||l.charAt(i)==="-")&&s(c)}},element:function(s,r,e){var t=r.name,n=r.value,i=e.adapter;if(/\s/.test(n))return Wo;n=n.replace(vg,"\\$&");var o="(?:^|\\s)"+n+"(?:$|\\s)",a=r.ignoreCase?"i":"",c=new RegExp(o,a);return function(u){var h=i.getAttributeValue(u,t);return h!=null&&c.test(h)&&s(u)}},exists:function(s,r,e){var t=r.name,n=e.adapter;return function(o){return n.hasAttrib(o,t)&&s(o)}},start:function(s,r,e){var t=r.name,n=r.value,i=n.length,o=e.adapter;return i===0?Wo:r.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,t);return l!=null&&l.substr(0,i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,t);return l!=null&&l.substr(0,i)===n&&s(c)}},end:function(s,r,e){var t=r.name,n=r.value,i=-n.length,o=e.adapter;return i===0?Wo:r.ignoreCase?(n=n.toLowerCase(),function(c){var l=o.getAttributeValue(c,t);return l!=null&&l.substr(i).toLowerCase()===n&&s(c)}):function(c){var l=o.getAttributeValue(c,t);return l!=null&&l.substr(i)===n&&s(c)}},any:function(s,r,e){var t=r.name,n=r.value,i=e.adapter;if(n==="")return Wo;if(r.ignoreCase){var o=new RegExp(n.replace(vg,"\\$&"),"i");return function(c){var l=i.getAttributeValue(c,t);return l!=null&&o.test(l)&&s(c)}}return function(c){var l=i.getAttributeValue(c,t);return l!=null&&l.indexOf(n)>=0&&s(c)}},not:function(s,r,e){var t=r.name,n=r.value,i=e.adapter;return n===""?function(a){return!!i.getAttributeValue(a,t)&&s(a)}:r.ignoreCase?(n=n.toLowerCase(),function(a){var c=i.getAttributeValue(a,t);return c!=null&&c.toLowerCase()!==n&&s(a)}):function(a){return i.getAttributeValue(a,t)!==n&&s(a)}}},_y={compile:function(s,r,e){if(e&&e.strict&&(r.ignoreCase||r.action==="not"))throw new Error("Unsupported attribute selector");return Mg[r.action](s,r,e)},rules:Mg},Mc={exports:{}},zse=jse,Bse=/^([+\-]?\d*n)?\s*(?:([+\-]?)\s*(\d+))?$/;function jse(s){if(s=s.trim().toLowerCase(),s==="even")return[2,0];if(s==="odd")return[2,1];var r=s.match(Bse);if(!r)throw new SyntaxError("n-th rule couldn't be parsed ('"+s+"')");var e;return r[1]?(e=parseInt(r[1],10),isNaN(e)&&(r[1].charAt(0)==="-"?e=-1:e=1)):e=0,[e,r[3]?parseInt((r[2]||"")+r[3],10):0]}var Fse=Vse,ev=lo,Use=ev.trueFunc,Wse=ev.falseFunc;function Vse(s){var r=s[0],e=s[1]-1;if(e<0&&r<=0)return Wse;if(r===-1)return function(n){return n<=e};if(r===0)return function(n){return n===e};if(r===1)return e<0?Use:function(n){return n>=e};var t=e%r;return t<0&&(t+=r),r>1?function(n){return n>=e&&n%r===t}:(r*=-1,function(n){return n<=e&&n%r===t})}var tv=zse,rv=Fse;Mc.exports=function(r){return rv(tv(r))};Mc.exports.parse=tv;Mc.exports.compile=rv;var $se=Mc.exports,Vo=$se,nv=lo,Yse=_y,Rs=nv.trueFunc,vn=nv.falseFunc,Gse=Yse.rules.equals;function jn(s,r){var e={name:s,value:r};return function(n,i,o){return Gse(n,e,o)}}function $o(s,r){return function(e){return!!r.getParent(e)&&s(e)}}var fa={contains:function(s,r,e){var t=e.adapter;return function(i){return s(i)&&t.getText(i).indexOf(r)>=0}},icontains:function(s,r,e){var t=r.toLowerCase(),n=e.adapter;return function(o){return s(o)&&n.getText(o).toLowerCase().indexOf(t)>=0}},"nth-child":function(s,r,e){var t=Vo(r),n=e.adapter;return t===vn?t:t===Rs?$o(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=0;c<a.length;c++)if(n.isTag(a[c])){if(a[c]===o)break;l++}return t(l)&&s(o)}},"nth-last-child":function(s,r,e){var t=Vo(r),n=e.adapter;return t===vn?t:t===Rs?$o(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=a.length-1;l>=0;l--)if(n.isTag(a[l])){if(a[l]===o)break;c++}return t(c)&&s(o)}},"nth-of-type":function(s,r,e){var t=Vo(r),n=e.adapter;return t===vn?t:t===Rs?$o(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=0;l<a.length;l++)if(n.isTag(a[l])){if(a[l]===o)break;n.getName(a[l])===n.getName(o)&&c++}return t(c)&&s(o)}},"nth-last-of-type":function(s,r,e){var t=Vo(r),n=e.adapter;return t===vn?t:t===Rs?$o(s,n):function(o){for(var a=n.getSiblings(o),c=0,l=a.length-1;l>=0;l--)if(n.isTag(a[l])){if(a[l]===o)break;n.getName(a[l])===n.getName(o)&&c++}return t(c)&&s(o)}},root:function(s,r,e){var t=e.adapter;return function(n){return!t.getParent(n)&&s(n)}},scope:function(s,r,e,t){var n=e.adapter;if(!t||t.length===0)return fa.root(s,r,e);function i(o,a){return typeof n.equals=="function"?n.equals(o,a):o===a}return t.length===1?function(o){return i(t[0],o)&&s(o)}:function(o){return t.indexOf(o)>=0&&s(o)}},checkbox:jn("type","checkbox"),file:jn("type","file"),password:jn("type","password"),radio:jn("type","radio"),reset:jn("type","reset"),image:jn("type","image"),submit:jn("type","submit"),hover:function(s,r,e){var t=e.adapter;return typeof t.isHovered=="function"?function(i){return s(i)&&t.isHovered(i)}:vn},visited:function(s,r,e){var t=e.adapter;return typeof t.isVisited=="function"?function(i){return s(i)&&t.isVisited(i)}:vn},active:function(s,r,e){var t=e.adapter;return typeof t.isActive=="function"?function(i){return s(i)&&t.isActive(i)}:vn}};function Hse(s,r){for(var e=0;s&&e<s.length;e++)if(r.isTag(s[e]))return s[e]}var zs={empty:function(s,r){return!r.getChildren(s).some(function(e){return r.isTag(e)||e.type==="text"})},"first-child":function(s,r){return Hse(r.getSiblings(s),r)===s},"last-child":function(s,r){for(var e=r.getSiblings(s),t=e.length-1;t>=0;t--){if(e[t]===s)return!0;if(r.isTag(e[t]))break}return!1},"first-of-type":function(s,r){for(var e=r.getSiblings(s),t=0;t<e.length;t++)if(r.isTag(e[t])){if(e[t]===s)return!0;if(r.getName(e[t])===r.getName(s))break}return!1},"last-of-type":function(s,r){for(var e=r.getSiblings(s),t=e.length-1;t>=0;t--)if(r.isTag(e[t])){if(e[t]===s)return!0;if(r.getName(e[t])===r.getName(s))break}return!1},"only-of-type":function(s,r){for(var e=r.getSiblings(s),t=0,n=e.length;t<n;t++)if(r.isTag(e[t])){if(e[t]===s)continue;if(r.getName(e[t])===r.getName(s))return!1}return!0},"only-child":function(s,r){for(var e=r.getSiblings(s),t=0;t<e.length;t++)if(r.isTag(e[t])&&e[t]!==s)return!1;return!0},link:function(s,r){return r.hasAttrib(s,"href")},selected:function(s,r){if(r.hasAttrib(s,"selected"))return!0;if(r.getName(s)!=="option")return!1;var e=r.getParent(s);if(!e||r.getName(e)!=="select"||r.hasAttrib(e,"multiple"))return!1;for(var t=r.getChildren(e),n=!1,i=0;i<t.length;i++)if(r.isTag(t[i]))if(t[i]===s)n=!0;else if(n){if(r.hasAttrib(t[i],"selected"))return!1}else return!1;return n},disabled:function(s,r){return r.hasAttrib(s,"disabled")},enabled:function(s,r){return!r.hasAttrib(s,"disabled")},checked:function(s,r){return r.hasAttrib(s,"checked")||zs.selected(s,r)},required:function(s,r){return r.hasAttrib(s,"required")},optional:function(s,r){return!r.hasAttrib(s,"required")},parent:function(s,r){return!zs.empty(s,r)},header:wg(["h1","h2","h3","h4","h5","h6"]),button:function(s,r){var e=r.getName(s);return e==="button"||e==="input"&&r.getAttributeValue(s,"type")==="button"},input:wg(["input","textarea","select","button"]),text:function(s,r){var e;return r.getName(s)==="input"&&(!(e=r.getAttributeValue(s,"type"))||e.toLowerCase()==="text")}};function wg(s){if(typeof Set<"u"){var r=new Set(s);return function(e,t){return r.has(t.getName(e))}}return function(e,t){return s.indexOf(t.getName(e))>=0}}function Qse(s,r,e){if(e===null){if(s.length>2&&r!=="scope")throw new Error("pseudo-selector :"+r+" requires an argument")}else if(s.length===2)throw new Error("pseudo-selector :"+r+" doesn't have any arguments")}var qse=/^(?:(?:nth|last|first|only)-(?:child|of-type)|root|empty|(?:en|dis)abled|checked|not)$/,iv={compile:function(s,r,e,t){var n=r.name,i=r.data,o=e.adapter;if(e&&e.strict&&!qse.test(n))throw new Error(":"+n+" isn't part of CSS3");if(typeof fa[n]=="function")return fa[n](s,i,e,t);if(typeof zs[n]=="function"){var a=zs[n];return Qse(a,n,i),a===vn?a:s===Rs?function(l){return a(l,o,i)}:function(l){return a(l,o,i)&&s(l)}}else throw new Error("unmatched pseudo-class :"+n)},filters:fa,pseudos:zs},Zse=_y,Kse=iv,Xse={__proto__:null,attribute:Zse.compile,pseudo:Kse.compile,tag:function(s,r,e){var t=r.name,n=e.adapter;return function(o){return n.getName(o)===t&&s(o)}},descendant:function(s,r,e){var t=typeof WeakSet<"u"?new WeakSet:null,n=e.adapter;return function(o){for(var a=!1;!a&&(o=n.getParent(o));)(!t||!t.has(o))&&(a=s(o),!a&&t&&t.add(o));return a}},_flexibleDescendant:function(s,r,e){var t=e.adapter;return function(i){for(var o=s(i);!o&&(i=t.getParent(i));)o=s(i);return o}},parent:function(s,r,e){if(e&&e.strict)throw new Error("Parent selector isn't part of CSS3");var t=e.adapter;return function(o){return t.getChildren(o).some(n)};function n(i){return t.isTag(i)&&s(i)}},child:function(s,r,e){var t=e.adapter;return function(i){var o=t.getParent(i);return!!o&&s(o)}},sibling:function(s,r,e){var t=e.adapter;return function(i){for(var o=t.getSiblings(i),a=0;a<o.length;a++)if(t.isTag(o[a])){if(o[a]===i)break;if(s(o[a]))return!0}return!1}},adjacent:function(s,r,e){var t=e.adapter;return function(i){for(var o=t.getSiblings(i),a,c=0;c<o.length;c++)if(t.isTag(o[c])){if(o[c]===i)break;a=o[c]}return!!a&&s(a)}},universal:function(s){return s}},Jse=wc,_se=qy.parse,sv=lo,eoe=Nse,toe=Xy,Sg=Xse,ov=iv,Ys=sv.trueFunc,xn=sv.falseFunc,Vh=ov.filters;function wc(s,r,e){var t=cv(s,r,e);return av(t,r)}function av(s,r){var e=r.adapter;return function(n){return e.isTag(n)&&s(n)}}function cv(s,r,e){var t=_se(s,r);return uo(t,r,e)}function xu(s){return s.type==="pseudo"&&(s.name==="scope"||Array.isArray(s.data)&&s.data.some(function(r){return r.some(xu)}))}var roe={type:"descendant"},noe={type:"_flexibleDescendant"},ioe={type:"pseudo",name:"scope"},lv={};function soe(s,r,e){var t=r.adapter,n=!!e&&!!e.length&&e.every(function(i){return i===lv||!!t.getParent(i)});s.forEach(function(i){if(!(i.length>0&&uv(i[0])&&i[0].type!=="descendant"))if(n&&!(Array.isArray(i)?i.some(xu):xu(i)))i.unshift(roe);else return;i.unshift(ioe)})}function uo(s,r,e){s=s.filter(function(o){return o.length>0}),s.forEach(eoe);var t=Array.isArray(e);e=r&&r.context||e,e&&!t&&(e=[e]),soe(s,r,e);var n=!1,i=s.map(function(o){if(o[0]&&o[1]&&o[0].name==="scope"){var a=o[1].type;t&&a==="descendant"?o[1]=noe:(a==="adjacent"||a==="sibling")&&(n=!0)}return ooe(o,r,e)}).reduce(aoe,xn);return i.shouldTestNextSiblings=n,i}function uv(s){return toe[s.type]<0}function ooe(s,r,e){return s.reduce(function(t,n){if(t===xn)return t;if(!(n.type in Sg))throw new Error("Rule type "+n.type+" is not supported by css-select");return Sg[n.type](t,n,r,e)},r&&r.rootFunc||Ys)}function aoe(s,r){return r===xn||s===Ys?s:s===xn||r===Ys?r:function(t){return s(t)||r(t)}}function hv(s){return s.some(uv)}Vh.not=function(s,r,e,t){var n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),adapter:e.adapter};if(n.strict&&(r.length>1||r.some(hv)))throw new Error("complex selectors in :not aren't allowed in strict mode");var i=uo(r,n,t);return i===xn?s:i===Ys?xn:function(a){return!i(a)&&s(a)}};Vh.has=function(s,r,e){var t=e.adapter,n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),adapter:t},i=r.some(hv)?[lv]:null,o=uo(r,n,i);return o===xn?xn:o===Ys?function(c){return t.getChildren(c).some(t.isTag)&&s(c)}:(o=av(o,e),i?function(c){return s(c)&&(i[0]=c,t.existsOne(o,t.getChildren(c)))}:function(c){return s(c)&&t.existsOne(o,t.getChildren(c))})};Vh.matches=function(s,r,e,t){var n={xmlMode:!!(e&&e.xmlMode),strict:!!(e&&e.strict),rootFunc:s,adapter:e.adapter};return uo(r,n,t)};wc.compileToken=uo;wc.compileUnsafe=cv;wc.Pseudos=ov;var coe=br,$h=fse,dv=lo.falseFunc,ho=Jse;function fv(s){return function(e,t,n){return t=t||{},t.adapter=t.adapter||$h,s(e,t,n)}}var Yh=fv(ho),gv=fv(ho.compileUnsafe);function pv(s){return function(e,t,n){return n=n||{},n.adapter=n.adapter||$h,typeof e!="function"&&(e=gv(e,n,t)),e.shouldTestNextSiblings&&(t=uoe(n&&n.context||t,n.adapter)),Array.isArray(t)?t=n.adapter.removeSubsets(t):t=n.adapter.getChildren(t),s(e,t,n)}}function loe(s,r){var e=r.getSiblings(s);if(!Array.isArray(e))return[];for(e=e.slice(0);e.shift()!==s;);return e}function uoe(s,r){Array.isArray(s)||(s=[s]);for(var e=s.slice(0),t=0,n=s.length;t<n;t++){var i=loe(e[t],r);e.push.apply(e,i)}return e}var Gh=pv(function(r,e,t){return r===dv||!e||e.length===0?[]:t.adapter.findAll(r,e)}),hoe=pv(function(r,e,t){return r===dv||!e||e.length===0?null:t.adapter.findOne(r,e)});function doe(s,r,e){return e=e||{},e.adapter=e.adapter||$h,(typeof r=="function"?r:Yh(r,e))(s)}function br(s,r,e){return Gh(s,r,e)}br.compile=Yh;br.filters=ho.Pseudos.filters;br.pseudos=ho.Pseudos.pseudos;br.selectAll=Gh;br.selectOne=hoe;br.is=doe;br.parse=Yh;br.iterate=Gh;br._compileUnsafe=gv;br._compileToken=ho.compileToken;const mv=ln(coe);Ze(Array);function Yo(s){return s.nodeType===1||Gt.isSpriteNode(s.nodeName)}function Ci(s){return Array.from(s.childNodes||[])}function Ru(s){return Gt.isSpriteNode(s.nodeName)?s.parent||s.canvas||s.container:s.parentElement}function foe(s){let r=s.length,e,t,n;for(;--r>-1;){for(e=t=s[r],s[r]=null,n=!0;t;){if(s.indexOf(t)>-1){n=!1,s.splice(r,1);break}t=Ru(t)}n&&(s[r]=e)}return s}const Hh={isTag:Yo,existsOne(s,r){return r.some(e=>Yo(e)?s(e)||Hh.existsOne(s,Ci(e)):!1)},getSiblings(s){const r=Ru(s);return r&&Ci(r)},getChildren:Ci,getParent:Ru,getAttributeValue(s,r){if(s.nodeType===1&&r==="class"||r==="id")return s[r];if(this.hasAttrib(s,r)){let e=s.attributes[r];return Array.isArray(e)&&(e=`[${e.join()}]`),String(e)}},hasAttrib(s,r){return s.attributes[r]!=null},removeSubsets:foe,getName(s){return s.tagName?s.tagName.toLowerCase():null},findOne:function s(r,e){let t=null;for(let n=0,i=e.length;n<i&&!t;n++)if(r(e[n]))t=e[n];else{const o=Ci(e[n]);o&&o.length>0&&(t=s(r,o))}return t},findAll:function s(r,e){let t=[];for(let n=0,i=e.length;n<i;n++){if(!Yo(e[n]))continue;r(e[n])&&t.push(e[n]);const o=Ci(e[n]);o&&(t=t.concat(s(r,o)))}return t},getText:function s(r){return Array.isArray(r)?r.map(s).join(""):Yo(r)?s(Ci(r)):r.nodeType===3?r.nodeValue:Gt.isSpriteNode(r.nodeName)?r.text:""}};function yv(s){if(typeof s!="string")return s;let r=s.match(/\[(bgcolor|fillColor|strokeColor|color)\s*=\s*['"]?\w+['"]?\]/g);return r&&(r=r.map(e=>{const t=e.slice(1,-1).split("="),n=En(t[1].replace(/['"]/g,""));return[e,`[${t[0]}="${n}"]`]}),r.forEach(([e,t])=>{s=s.replace(e,t)})),r=s.match(/\[\w+\s*=\s*['"]\[.+?\]['"]\]/g),r&&(r=r.map(e=>{const t=e.slice(1,-1).split("="),n=t[1].slice(2,-2).split(/,/g).map(i=>i.trim());return[e,`[${t[0]}="[${n}]"]`]}),r.forEach(([e,t])=>{s=s.replace(e,t)})),s}function Go(s,r){return mv.selectAll(yv(s),r,{adapter:Hh})}function Tg(s,r){return mv.selectOne(yv(s),r,{adapter:Hh})}Ze(Array);const Cg=Symbol("zOrder"),vt=Symbol("ordered"),Lt=Symbol("children"),Rl=Symbol("sealed"),Va=class Va extends co{constructor(r={}){super(r),this[Lt]=[],this[vt]=null,this[Cg]=0}get childNodes(){return this[Lt]}get children(){return this[Lt]}get orderedChildren(){return this[vt]||(this[vt]=[...this[Lt]],this[vt].sort((r,e)=>r.zIndex-e.zIndex||r.zOrder-e.zOrder)),this[vt]}append(...r){return r.map(e=>this.appendChild(e))}appendChild(r){return r.remove(),this[Lt].push(r),r.connect(this,this[Cg]++),this[vt]&&(this[vt].length&&r.zIndex<this[vt][this[vt].length-1].zIndex?this.reorder():this[vt].push(r)),r}cloneNode(r=!1){const e=super.cloneNode();return r&&this[Lt].forEach(t=>{const n=t.cloneNode(r);e.appendChild(n)}),e}dispatchPointerEvent(r){const e=this.orderedChildren;for(let t=e.length-1;t>=0;t--)if(e[t].dispatchPointerEvent(r))return!0;return super.dispatchPointerEvent(r)}draw(r=[]){if(this.__cacheRenderMatrix=this.renderMatrix,super.draw(r),!this[Rl]&&this.attributes.display!=="none"){const e=this.orderedChildren;for(let t=0;t<e.length;t++)e[t].draw(r)}return this.__cacheRenderMatrix=null,r}getElementById(r){return Tg(`#${r}`,this)}getElementsByClassName(r){return Go(`.${r}`,this)}getElementsByName(r){return Go(`[name="${r}"]`,this)}getElementsByTagName(r){return Go(r,this)}insertBefore(r,e){if(e==null)return this.appendChild(r);r.remove();const t=this[Lt].indexOf(e);if(t<0)throw new Error("Invalid reference node.");const n=e.zOrder;for(let i=t;i<this[Lt].length;i++){const o=this[Lt][i].zOrder,a=this[Lt][i];delete a.zOrder,Object.defineProperty(a,"zOrder",{value:o+1,writable:!1,configurable:!0})}if(this[Lt].splice(t,0,r),r.connect(this,n),this[vt])if(r.zIndex!==e.zIndex)this.reorder();else{const i=this[vt].indexOf(e);this[vt].splice(i,0,r)}return r}querySelector(r){return Tg(r,this)}querySelectorAll(r){return Go(r,this)}replaceChild(r,e){r.remove();const t=this[Lt].indexOf(e);if(t<0)throw new Error("Invalid reference node.");if(this[Lt][t]=r,r.connect(this,e.zOrder),this[vt])if(r.zIndex!==e.zIndex)this.reorder();else{const n=this[vt].indexOf(e);this[vt][n]=r}return e.disconnect(this),r}removeAllChildren(){const r=this[Lt];for(let e=r.length-1;e>=0;e--)r[e].remove()}removeChild(r){const e=this[Lt].indexOf(r);if(e>=0){if(this[Lt].splice(e,1),this[vt]){const t=this[vt].indexOf(r);this[vt].splice(t,1)}return r.disconnect(this),r}return null}reorder(){this[vt]=null}seal(){function r(i,o){const a=[];for(let c=0;c<i.length;c++){const l=[...i[c]];for(let u=1;u<l.length;u+=2){const h=l[u],d=l[u+1];l[u]=h*o[0]+d*o[2]+o[4],l[u+1]=h*o[1]+d*o[3]+o[5]}a.push(l)}return a}const e=this.orderedChildren,t=new ft.Figure2D,n=this.localMatrix;for(let i=0;i<e.length;i++){let o=e[i];if(o instanceof Va&&(o=o.seal()),o.clientBox){let a=o.clientBox.contours.path;a=r(a,o.localMatrix),t.addPath(a)}if(o.path){let a=o.path.contours.path;a=r(a,o.localMatrix),t.addPath(a)}}return this[Rl]=!0,this.clientBox=t,{clientBox:t,localMatrix:n}}setResolution({width:r,height:e}){super.setResolution({width:r,height:e}),this[Lt].forEach(t=>{t.setResolution({width:r,height:e})})}updateContours(){this[Rl]||super.updateContours()}};x(Va,"Attr",ob);let dt=Va;Gt.registerNode(dt,"group");Ze(Array);const ku={};function xa(s,r){if(ku[s])return ku[s];const e=ft.ENV.loadImage(s,{alias:r,useImageBitmap:!1});return e??s}async function vv(s,r,e){let t=r;if(typeof r=="string"&&(t=xa(r)),t&&typeof t.then=="function"&&(t=await t),r===s.attributes.texture){t&&t.image&&(t.sourceRect&&(s.attributes.sourceRect=t.sourceRect),s.textureImageRotated=!!t.rotated,t=t.image);const{width:n,height:i,textureRect:o}=s.attributes,a=s.textureImage;s.textureImage=t,e&&a!==t&&!o&&(n==null||i==null)&&s.updateContours(),s.forceUpdate()}return t}const wr=Symbol("textureMap");function Mv(s,r){if(r[wr]=r[wr]||new Map,r[wr].has(s))return r[wr].get(s);const e=r.createTexture(s);return!/^blob:/.test(s.src)&&typeof s.getContext!="function"&&r[wr].set(s,e),e}function wv(s,r){if(r[wr]&&r[wr].has(s)){const e=r[wr].get(s);return r.deleteTexture(e),r[wr].delete(s),!0}return!1}const kl=Symbol("textureContext");function Sv(s,r){const e=s.textureImage instanceof String?String(s.textureImage):s.textureImage,t=s.textureImageRotated,n=r.texture,i=s.renderer;if(e){const o=s.originalContentRect;let a=s.attributes.textureRect;const c=s.attributes.textureRepeat,l=s.attributes.sourceRect;if(!n||s[kl]&&s[kl]!==i||n.image!==e||n.options.repeat!==c||!iu(n.options.rect,a)||!iu(n.options.srcRect,l)){const u=Mv(e,i);a?(a[0]+=o[0],a[1]+=o[1]):a=o;let h=null;n&&!i[wr].has(n.image)&&(!n.options||!n.options.hidden)&&(h=r.uniforms.u_texSampler),r.setTexture(u,{rect:a,repeat:c,srcRect:l,rotated:t}),h&&h.delete&&h.delete(),s[kl]=i}}else if(n){let o=null;!i[wr].has(n.image)&&(!n.options||!n.options.hidden)&&(o=r.uniforms.u_texSampler),r.setTexture(null),o&&o.delete&&o.delete()}}async function goe(s,r){typeof r=="string"&&(r=await(await fetch(r,{method:"GET",mode:"cors",cache:"default"})).json());const e=await xa(s),t=r.frames;return Object.entries(t).forEach(([n,i])=>{const{x:o,y:a,w:c,h:l}=i.frame;let u=[o,a,c,l];const h=i.rotated;h&&(u=[u[0],u[1],u[3],u[2]]),ku[n]={image:e,sourceRect:u,rotated:h}}),e}Ze(Array);const poe={antialias:!0,autoRender:!0,alpha:!0},ds=Symbol("autoRender"),fs=Symbol("renderer"),Ig=Symbol("timeline"),Nt=Symbol("prepareRender"),Al=Symbol("tickRender"),Gr=Symbol("pass"),fn=Symbol("fbo"),Fn=Symbol("tickers"),Un=Symbol("destroyed"),gn=Symbol("layerTransformInvert");function moe(s){if(!s||!s.options)return null;let r="2d";return s.glRenderer&&(r=s.isWebGL2?"webgl2":"webgl"),s.options.contextType=r,s.options.webgl2=r==="webgl2",r}let Jn=class extends dt{constructor(r={}){if(super(),!r.canvas){const{width:i,height:o}=this.getResolution(),a=ft.ENV.createCanvas(i,o,{offscreen:!!r.offscreen,id:r.id,extra:r.extra});a.style&&(a.style.position="absolute"),a.dataset&&(a.dataset.layerId=r.id),a.contextType&&(r.contextType=a.contextType),r.canvas=a}const e=r.canvas,t=Object.assign({},poe,r);this[ds]=t.autoRender,delete r.autoRender;const n=t.Renderer||ft.Renderer;this[fs]=new n(e,t),moe(this[fs]),this.options=r,this.id=r.id,this[Gr]=[],this.setResolution(e),this.canvas=e,this[Ig]=new Ty,this[Un]=!1,this.__mouseCapturedTarget=null,this[gn]=null}get autoRender(){return this[ds]}get displayRatio(){return this.parent&&this.parent.options?this.parent.options.displayRatio:1}get height(){const{height:r}=this.getResolution();return r/this.displayRatio}get gl(){return this.renderer.glRenderer?this.renderer.glRenderer.gl:null}get layer(){return this}get offscreen(){return!!this.options.offscreen||this.canvas._offscreen}get pass(){return this[Gr]}get prepareRender(){return this[Nt]?this[Nt]:Promise.resolve()}get renderer(){return this[fs]}transferToImageBitmap(){const r=this.canvas;if(!r||typeof r.transferToImageBitmap!="function")throw new Error("transfer-to-image-bitmap-unavailable");const e=r.transferToImageBitmap();if(!e)throw new Error("transfer-to-image-bitmap-empty");return e}get renderOffset(){if(this.parent&&this.parent.options){const{left:r,top:e}=this.parent.options;return[r,e]}return[this.options.left|0,this.options.top|0]}get timeline(){return this[Ig]}get width(){const{width:r}=this.getResolution();return r/this.displayRatio}get localMatrix(){const{x:r,y:e}=this.attributes;return[1,0,0,1,r,e]}get layerTransformInvert(){if(this[gn])return this[gn];const r=this.transformMatrix;return r[0]===1&&r[1]===0&&r[2]===0&&r[3]===1&&r[4]===0&&r[5]===0?null:(this[gn]=Ma(Array.of(0,0,0,0,0,0),r),this[gn])}forceContextLoss(){const r=this.renderer.glRenderer&&this.renderer.glRenderer.gl;if(r&&typeof r.getExtension=="function"){const e=r.getExtension("WEBGL_lose_context");if(e)return e.loseContext(),!0}return!1}destroy(){if(this[Un])return!1;this[Un]=!0,this[ds]=!1;let r;const e=i=>{try{i()}catch(o){r=r||o}};this[Fn]=[],this.__mouseCapturedTarget=null,e(()=>this.cancelPendingRender()),e(()=>this.removeAllChildren()),e(()=>this.deactivateAnimations()),this[Gr]=[],this[fn]=null;const t=this.renderer.glRenderer;let n=[];if(t&&t.programs&&(e(()=>{n=[...t.programs]}),n.forEach(i=>e(()=>t.deleteProgram(i)))),e(()=>this.forceContextLoss()),e(()=>this.remove()),r)throw r;return!0}addPass({vertex:r,fragment:e,options:t,uniforms:n}={}){if(this.renderer.glRenderer){const{width:i,height:o}=this.getResolution(),a=this.renderer.createPassProgram({vertex:r,fragment:e,options:t}),c=new ft.Figure2D;c.rect(0,0,i/this.displayRatio,o/this.displayRatio);const l=new ft.Mesh2D(c);return l.setUniforms(n),l.setProgram(a),this[Gr].push(l),this.forceUpdate(),l}return null}deleteTexture(r){return wv(r,this.renderer)}dispatchPointerEvent(r){const e=r.type;if(e==="mousedown"||e==="mouseup"||e==="mousemove"){const a=this.__mouseCapturedTarget;if(a){if(a.layer===this)return a.dispatchEvent(r),!0;this.__mouseCapturedTarget=null}}let t,n;const i=this.layerTransformInvert;if(i){t=r.x,n=r.y;const a=i,c=a[0]*t+a[2]*n+a[4],l=a[1]*t+a[3]*n+a[5];delete r.x,delete r.y,delete r.layerX,delete r.layerY,Object.defineProperties(r,{layerX:{value:c,configurable:!0},layerY:{value:l,configurable:!0},x:{value:c,configurable:!0},y:{value:l,configurable:!0}})}const o=super.dispatchPointerEvent(r);return i&&Object.defineProperties(r,{layerX:{value:t,configurable:!0},layerY:{value:n,configurable:!0},x:{value:t,configurable:!0},y:{value:n,configurable:!0}}),o}forceUpdate(){if(!this[Un]&&!this[Nt])if(this.parent&&this.parent.hasOffscreenCanvas){this.parent.forceUpdate();let r=null;const e=new Promise(t=>{r=t});e._resolve=r,this[Nt]=e}else{let r=null,e=null;const t=new Promise(n=>{r=n,this[ds]&&(e=rn(()=>{delete t._requestID,this.render()}))});t._resolve=r,t._requestID=e,this[Nt]=t}}getFBO(){const r=this.renderer.glRenderer,{width:e,height:t}=this.getResolution();return r&&(!this[fn]||this[fn].width!==e||this[fn].height!==t)?(this[fn]={width:e,height:t,target:r.createFBO(),buffer:r.createFBO(),swap(){[this.target,this.buffer]=[this.buffer,this.target]}},this[fn]):this[fn]?this[fn]:null}updateGlobalTransform(){if(this.layerTransformInvert){const r=this.renderer,e=r.__globalTransformMatrix||r.globalTransformMatrix;r.__globalTransformMatrix=e;const t=ei(1,0,0,1,0,0);r.setGlobalTransform(...Nr(t,e,this.transformMatrix))}}onPropertyChange(r,e,t){if(super.onPropertyChange(r,e,t),r==="zIndex"&&(this.canvas.style.zIndex=e),r==="transform"||r==="translate"||r==="rotate"||r==="scale"||r==="skew"){const n=this[gn];if(this[gn]=null,this.updateGlobalTransform(),n&&!this.layerTransformInvert){const i=this.renderer,o=i.__globalTransformMatrix||i.globalTransformMatrix;i.setGlobalTransform(...o)}}}_prepareRenderFinished(){this[Nt]&&(this[Nt]._requestID!=null&&ri(this[Nt]._requestID),this[Nt]._resolve(),delete this[Nt])}cancelPendingRender(){const r=!!this[Nt];return this._prepareRenderFinished(),r}render({clear:r=!0}={}){if(!this[Un])try{const e=this[Gr].length?this.getFBO():null;e&&this.renderer.glRenderer.bindFBO(e.target),r&&this[fs].clear();const t=this.draw();if(t&&t.length&&(this.renderer.drawMeshes(t),this.canvas.draw&&this.canvas.draw()),e){const n=this.renderer.glRenderer,i=this[Gr].length,{width:o,height:a}=this.getResolution(),c=[0,0,o/this.displayRatio,a/this.displayRatio];this[Gr].forEach((l,u)=>{l.blend=!0,l.setTexture(e.target.texture,{rect:c}),u===i-1?n.bindFBO(null):(e.swap(),n.bindFBO(e.target)),this[fs].clear(),this.renderer.drawMeshes([l])})}}finally{this._prepareRenderFinished()}}setResolution({width:r,height:e}){const t=this.renderer,n=t.__globalTransformMatrix||t.globalTransformMatrix,i=n[4],o=n[5],a=n[0],{width:c,height:l}=this.getResolution();(c!==r||l!==e)&&(super.setResolution({width:r,height:e}),this.canvas&&(this.canvas.width=r,this.canvas.height=e,t.updateResolution&&t.updateResolution()),this.attributes.size=[r,e],this[Gr].length&&this[Gr].forEach(f=>{const g=new ft.Figure2D;g.rect(0,0,r/this.displayRatio,e/this.displayRatio),f.contours=g.contours}));const[u,h]=this.renderOffset,d=this.displayRatio;(i!==u||o!==h||a!==d)&&(t.setGlobalTransform(d,0,0,d,u,h),t.__globalTransformMatrix=null,this[gn]=null,this.updateGlobalTransform(),this.forceUpdate())}tick(r=null,{duration:e=1/0,...t}={}){if(this[Un])return;const n=this.timeline.fork(t),i=this;this[Fn]=this[Fn]||[],this[Fn].push({handler:r,duration:e});const o=()=>{let a=null,c=null;const l=()=>{const u=this[Fn].map(({handler:h,duration:d})=>{const f=Math.min(1,n.currentTime/d);return{value:h?h(n.currentTime,f):null,p:f}});i[Al]||(i[Al]=Promise.resolve().then(()=>{if(delete i[Al],!i[Un]){i[ds]&&i.render();for(let h=u.length-1;h>=0;h--){const{value:d,p:f}=u[h];(d===!1||f>=1)&&this[Fn].splice(h,1)}this[Fn].length>0&&o()}}))};if(this[Nt]&&this[Nt]._type!=="ticker"&&(ri(this[Nt]._requestID),delete this[Nt]),!this[Nt]){const u=new Promise(h=>{a=h,c=rn(l)});u._resolve=a,u._requestID=c,u._type="ticker",this[Nt]=u}};o()}toGlobalPos(r,e){if(this.layerTransformInvert){const c=this.transformMatrix;r=c[0]*r+c[2]*e+c[4],e=c[1]*r+c[3]*e+c[5]}const{width:t,height:n}=this.getResolution(),i=this.renderOffset,o=[this.canvas.clientWidth,this.canvas.clientHeight];r=r*o[0]/t+i[0],e=e*o[1]/n+i[1];const a=this.displayRatio;return r*=a,e*=a,[r,e]}toLocalPos(r,e){const{width:t,height:n}=this.getResolution(),i=this.renderOffset,o=[this.canvas.clientWidth,this.canvas.clientHeight];r=r*t/o[0]-i[0],e=e*n/o[1]-i[1];const a=this.displayRatio;r/=a,e/=a;const c=this.layerTransformInvert;return c&&(r=c[0]*r+c[2]*e+c[4],e=c[1]*r+c[3]*e+c[5]),[r,e]}};Gt.registerNode(Jn,"layer");Ze(Array);const bg=Symbol("inited");let ks=null;typeof Worker=="function"&&(ks=class extends Worker{constructor(s){if(s.worker===!0&&(s.worker=`./${s.id}.worker.js`),super(s.worker),this.options=s,!s.canvas){const{width:r,height:e}=this.getResolution(),t=ft.ENV.createCanvas(r,e,{offscreen:!1});t.style&&(t.style.position="absolute"),t.dataset&&(t.dataset.layerId=s.id),s.canvas=t}this.canvas=s.canvas}get id(){return this.options.id}setResolution({width:s,height:r}){if(this[bg])this.postMessage({type:"resolution_change",width:s,height:r});else{this.canvas.width=s,this.canvas.height=r;const e=this.options,t=e.canvas.transferControlToOffscreen(),n={...e};delete n.container,n.canvas=t,this.postMessage({type:"create",options:n},[t]),this[bg]=!0}}getResolution(){if(this.canvas){const{width:s,height:r}=this.canvas;return{width:s,height:r}}return{width:300,height:150}}remove(){return this.parent&&this.parent.removeChild?(this.parent.removeChild(this),!0):!1}connect(s,r){Object.defineProperty(this,"parent",{value:s,writable:!1,configurable:!0}),Object.defineProperty(this,"zOrder",{value:r,writable:!1,configurable:!0})}disconnect(){delete this.parent,delete this.zOrder}dispatchPointerEvent(s){this.postMessage({type:"event",event:{cancelBubble:s.cancelBubble,bubbles:s.bubbles,detail:s.detail,identifier:s.identifier,layerX:s.layerX,layerY:s.layerY,originalX:s.originalX,originalY:s.originalY,type:s.type,x:s.x,y:s.y}})}});Ze(Array);function yoe(s,{offsetTop:r=0,offsetLeft:e=0,displayRatio:t=1}={}){let n,i;const o=[],{left:a,top:c,width:l,height:u}=s.target.getBoundingClientRect(),h=s.target.width,d=s.target.height,f=s.changedTouches||[s];for(let y=0;y<f.length;y++){const S=f[y],E=S.identifier,{clientX:C,clientY:L}=S;C!=null&&L!=null&&o.push({x:Math.round((C|0)-a),y:Math.round((L|0)-c),identifier:E})}o.length<=0&&o.push({x:n,y:i});const g=[];return o.forEach(y=>{y.x!=null&&y.y!=null&&(n=(y.x*h/l-e)/t,i=(y.y*d/u-r)/t);const S=new ni(s);Object.defineProperties(S,{layerX:{value:n,configurable:!0},layerY:{value:i,configurable:!0},originalX:{value:y.x},originalY:{value:y.y},x:{value:n,configurable:!0},y:{value:i,configurable:!0},identifier:{value:y.identifier}}),g.push(S)}),g}Ze(Array);const ga=Symbol("enteredTargets");function Eg(s){return s.id=s.id||`_layer${Math.random().toString(36).slice(2,12)}`,s.dataset||(s.dataset={}),s.dataset.layerId=s.id,s.connect=(r,e)=>{s.parent=r,Object.defineProperty(s,"zOrder",{value:e,writable:!1,configurable:!0})},s.disconnect=r=>{delete s.zOrder},s.canvas=s,s.getResolution=()=>({width:0,height:0}),s.setResolution=()=>!1,s.options={handleEvent:!1},s}function xg(s,r){const e=s.children;let t=null;for(let n=0;n<e.length;n++){const i=e[n];if((r===i||t!=null)&&(t=i),t&&t!==r&&!t.offscreen)return t.canvas}return null}function Rg(s,r){const[e,t]=s.renderOffset,{width:n,height:i}=s.getResolution(),o=s.displayRatio;s.renderer.drawImage(r.canvas,-e/o,-t/o,n/o,i/o)}const Pl={};function voe(s){const r=["mousedown","mouseup","mousemove","mousewheel","wheel","touchstart","touchend","touchmove","touchcancel","click","dblclick","longpress","tap","contextmenu"],e=s.container;e.addEventListener("mouseleave",t=>{const n=s[ga];if(n.size){const i=new ni("mouseleave");i.setOriginalEvent(t),[...n].forEach(o=>{o.dispatchEvent(i)}),s[ga].clear()}},{passive:!0}),r.forEach(t=>{e.addEventListener(t,n=>{const{left:i,top:o,displayRatio:a}=s.options,c=s.orderedChildren;yoe(n,{offsetLeft:i,offsetTop:o,displayRatio:a}).forEach(u=>{const h=u.identifier;if(u.type==="touchmove"||u.type==="touchend"){const f=Pl[h];f&&f.dispatchEvent(u),u.type==="touchend"&&delete Pl[h]}else{for(let f=c.length-1;f>=0;f--){const g=c[f];if(g.options.handleEvent!==!1){if(g.dispatchPointerEvent(u)&&u.target!==g)break;u.cancelBubble=!1}}if(u.target===c[0])for(let f=c.length-1;f>=0;f--){const g=c[f];if(g.options.handleEvent!==!1){u.target=g;break}}}const d=u.target;if(u.type==="touchstart"&&(Pl[h]=u.target),u.type==="mousemove"){const f=s[ga];let g;if(d){const E=d.ancestors||[];g=new Set([d,...E])}else g=new Set;const y=Object.entries(n);if(!f.has(d)&&d){const E=new ni("mouseenter");E.setOriginalEvent(n),y.forEach(([L,T])=>{E[L]=T}),f.add(d),d.dispatchEvent(E);const C=d.ancestors;C&&C.forEach(L=>{L instanceof fc&&!f.has(L)&&(f.add(L),L.dispatchEvent(E))})}const S=new ni("mouseleave");S.setOriginalEvent(n),y.forEach(([E,C])=>{S[E]=C}),[...f].forEach(E=>{g.has(E)||(f.delete(E),E.dispatchEvent(S))})}})},{passive:t!=="contextmenu"})})}function Ho(s,r){if(r&&r.style){let{width:e,height:t,mode:n,container:i}=s;const{clientWidth:o,clientHeight:a}=i;e=e||o,t=t||a,n==="static"?(r.style.width=`${e}px`,r.style.height=`${t}px`):(r.style.top="0",r.style.left="0",r.style.width=`${o}px`,r.style.height=`${a}px`,r.style.transform="",r.style.webkitTransform="")}}const gs=Symbol("offscreenLayerCount");class Sc extends dt{constructor(r={}){if(super(),!r.container)if(typeof ft.ENV.Container=="function")r.container=new ft.ENV.Container(r.width||300,r.height||150);else throw new Error("No container specified.");if(this.container=r.container,this.container.style&&(this.container.style.overflow||(this.container.style.overflow="hidden"),this.container.style.position||(this.container.style.position="relative")),this.options=r,r.displayRatio=r.displayRatio||1,r.mode=r.mode||"scale",r.left=0,r.top=0,r.autoResize=r.autoResize!==!1,r.autoResize){let e;if(typeof globalThis<"u"?e=globalThis:e=typeof window<"u"?window:global,e.addEventListener){const t=this;e.addEventListener("resize",function n(){typeof document<"u"&&document.contains(t.container)?t.resize():e.removeEventListener("resize",n)})}}this[ga]=new Set,this.setResolution(r),voe(this),this[gs]=0}get hasOffscreenCanvas(){return this[gs]>0}set displayRatio(r){this.options.displayRatio!==r&&(this.options.displayRatio=r,this.resize())}get displayRatio(){return this.options.displayRatio}set height(r){this.options.height!==r&&(this.options.height=r,this.resize())}get height(){return this.options.height}set mode(r){this.options.mode!==r&&(this.options.mode=r,this.resize())}get mode(){return this.options.mode}set width(r){this.options.width!==r&&(this.options.width=r,this.resize())}get width(){return this.options.width}appendChild(r){!(r instanceof Jn)&&!(r instanceof ks)&&Eg(r);const e=super.appendChild(r),t=r.canvas;return r.offscreen?this[gs]++:this.container.appendChild(t),Ho(this.options,t),r.setResolution(this.getResolution()),e}forceUpdate(){this.hasOffscreenCanvas&&!this._requestID&&(this._requestID=rn(()=>{delete this._requestID,this.render()}))}insertBefore(r,e){!(r instanceof Jn)&&!(r instanceof ks)&&Eg(r);const t=super.insertBefore(r,e),n=r.canvas;if(!r.offscreen){const i=xg(this,r);this.container.insertBefore(n,i)}return Ho(this.options,n),r.setResolution(this.getResolution()),t}layer(r="default",e={}){e=Object.assign({},this.options,e),e.id=r;const t=this.orderedChildren;for(let o=0;o<t.length;o++)if(t[o].id===r)return t[o];const n=e.worker;let i;return n?i=new ks(e):i=new Jn(e),this.appendChild(i),i}async preload(...r){const e=[],t=[],n=[];for(let i=0;i<r.length;i++){const o=r[i];let a;if(typeof o=="string")a=xa(o);else if(Array.isArray(o))a=goe(...o);else{const{id:c,src:l}=o;a=xa(l,c)}a instanceof Promise||(a=Promise.resolve(a)),t.push(a.then(c=>{e.push(c),n[i]=c;const l=new ni({type:"preload",detail:{current:c,loaded:e,resources:r}});this.dispatchEvent(l)}))}return await Promise.all(t),n}removeChild(r){const e=super.removeChild(r);if(e){r._prepareRenderFinished&&r._prepareRenderFinished();const t=r.canvas;t&&t.remove&&t.remove(),r.offscreen&&this[gs]--}return e}render(){const r=this.orderedChildren;let e=null;const t=[];for(let n=0;n<r.length;n++){const i=r[n],o=t.length>0;if(i instanceof Jn&&!i.offscreen)if(!i.autoRender)o&&(console.warn("Some offscreen canvas will not be rendered."),t.length=0);else if(e=i,o){i.renderer.clear();for(let a=0;a<t.length;a++){const c=t[a];c.render(),Rg(i,c)}t.length=0,i.render({clear:!1})}else i.prepareRender&&i.render();else i.offscreen?e?(i.prepareRender&&i.render(),Rg(e,i)):t.push(i):i instanceof ks&&o&&(console.warn("Some offscreen canvas will not be rendered."),t.length=0)}}replaceChild(r,e){const t=super.replaceChild(r,e);e.canvas.remove&&e.canvas.remove(),e.offscreen&&this[gs]--;const n=r.canvas;if(!r.offscreen){const i=xg(this,r);this.container.insertBefore(n,i)}return Ho(this.options,n),r.setResolution(this.getResolution()),t}resize(){const r=this.options;this.children.forEach(e=>{Ho(r,e.canvas)}),this.setResolution(r),this.dispatchEvent({type:"resize"})}setResolution({width:r,height:e}={}){const t=this.container,{clientWidth:n,clientHeight:i}=t;(r==null||e==null)&&(r=r??n,e=e??i);const{mode:o,displayRatio:a}=this.options;if(r*=a,e*=a,this.options.left=0,this.options.top=0,o==="stickyHeight"||o==="stickyLeft"||o==="stickyRight"){const c=r;r=n*e/i,o==="stickyHeight"&&(this.options.left=.5*(r-c)),o==="stickyRight"&&(this.options.left=r-c)}else if(o==="stickyWidth"||o==="stickyTop"||o==="stickyBottom"){const c=e;e=i*r/n,o==="stickyWidth"&&(this.options.top=.5*(e-c)),o==="stickyBottom"&&(this.options.top=e-c)}super.setResolution({width:r,height:e})}snapshot({offscreen:r=!1,layers:e}={}){const t=r?"snapshotOffScreenCanvas":"snapshotCanvas",{width:n,height:i}=this.getResolution();this[t]=this[t]||ft.ENV.createCanvas(n,i,{offscreen:r});const o=this[t].getContext("2d");e=e||this.orderedChildren,this[t].width=n,this[t].height=i;for(let a=0;a<e.length;a++){const c=e[a];if(!c.options.ignoreSnapshot){c.render&&c.render();const l=c.canvas;l&&l!==c&&o.drawImage(l,0,0,n,i)}}return this[t]}}typeof document<"u"&&(Sc.prototype.layer3d=function(s,r={}){const e=r.url||"https://unpkg.com/sprite-extend-3d/dist/sprite-extend-3d.min.js";return new Promise((t,n)=>{const i=document.createElement("script");i.async=!1,i.src=e,i.onload=()=>{try{t(this.layer3d(s,r))}catch(o){n(o)}},document.documentElement.appendChild(i)})});Gt.registerNode(Sc,"scene");var Tv={exports:{}};(function(s,r){(function(e,t){s.exports=t()})(St,function(){var e=function(){function b(P,D){var z=[],j=!0,A=!1,k=void 0;try{for(var N=P[Symbol.iterator](),W;!(j=(W=N.next()).done)&&(z.push(W.value),!(D&&z.length===D));j=!0);}catch(Y){A=!0,k=Y}finally{try{!j&&N.return&&N.return()}finally{if(A)throw k}}return z}return function(P,D){if(Array.isArray(P))return P;if(Symbol.iterator in Object(P))return b(P,D);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),t=Math.PI*2,n=function(P,D,z,j,A,k,N){var W=P.x,Y=P.y;W*=D,Y*=z;var Q=j*W-A*Y,ie=A*W+j*Y;return{x:Q+k,y:ie+N}},i=function(P,D){var z=1.3333333333333333*Math.tan(D/4),j=Math.cos(P),A=Math.sin(P),k=Math.cos(P+D),N=Math.sin(P+D);return[{x:j-A*z,y:A+j*z},{x:k+N*z,y:N-k*z},{x:k,y:N}]},o=function(P,D,z,j){var A=P*j-D*z<0?-1:1,k=Math.sqrt(P*P+D*D),N=Math.sqrt(P*P+D*D),W=P*z+D*j,Y=W/(k*N);return Y>1&&(Y=1),Y<-1&&(Y=-1),A*Math.acos(Y)},a=function(P,D,z,j,A,k,N,W,Y,Q,ie,O){var V=Math.pow(A,2),Z=Math.pow(k,2),$=Math.pow(ie,2),ee=Math.pow(O,2),se=V*Z-V*ee-Z*$;se<0&&(se=0),se/=V*ee+Z*$,se=Math.sqrt(se)*(N===W?-1:1);var ce=se*A/k*O,me=se*-k/A*ie,pe=Q*ce-Y*me+(P+z)/2,B=Y*ce+Q*me+(D+j)/2,F=(ie-ce)/A,J=(O-me)/k,oe=(-ie-ce)/A,K=(-O-me)/k,te=o(1,0,F,J),w=o(F,J,oe,K);return W===0&&w>0&&(w-=t),W===1&&w<0&&(w+=t),[pe,B,te,w]},c=function(P){var D=P.px,z=P.py,j=P.cx,A=P.cy,k=P.rx,N=P.ry,W=P.xAxisRotation,Y=W===void 0?0:W,Q=P.largeArcFlag,ie=Q===void 0?0:Q,O=P.sweepFlag,V=O===void 0?0:O,Z=[];if(k===0||N===0)return[];var $=Math.sin(Y*t/360),ee=Math.cos(Y*t/360),se=ee*(D-j)/2+$*(z-A)/2,ce=-$*(D-j)/2+ee*(z-A)/2;if(se===0&&ce===0)return[];k=Math.abs(k),N=Math.abs(N);var me=Math.pow(se,2)/Math.pow(k,2)+Math.pow(ce,2)/Math.pow(N,2);me>1&&(k*=Math.sqrt(me),N*=Math.sqrt(me));var pe=a(D,z,j,A,k,N,ie,V,$,ee,se,ce),B=e(pe,4),F=B[0],J=B[1],oe=B[2],K=B[3],te=Math.max(Math.ceil(Math.abs(K)/(t/4)),1);K/=te;for(var w=0;w<te;w++)Z.push(i(oe,K)),oe+=K;return Z.map(function(I){var U=n(I[0],k,N,ee,$,F,J),G=U.x,_=U.y,re=n(I[1],k,N,ee,$,F,J),ne=re.x,X=re.y,ae=n(I[2],k,N,ee,$,F,J),ue=ae.x,he=ae.y;return{x1:G,y1:_,x2:ne,y2:X,x:ue,y:he}})},l={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},u=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function h(b){var P=[];return b.replace(u,function(D,z,j){var A=z.toLowerCase();for(j=f(j),A=="m"&&j.length>2&&(P.push([z].concat(j.splice(0,2))),A="l",z=z=="m"?"l":"L");;){if(j.length==l[A])return j.unshift(z),P.push(j);if(j.length<l[A])throw new Error("malformed path data");P.push([z].concat(j.splice(0,l[A])))}}),P}var d=/-?[0-9]*\.?[0-9]+(?:e[-+]?\d+)?/ig;function f(b){var P=b.match(d);return P?P.map(Number):[]}function g(b){var P=b[0][0],D=b[0][1],z=P,j=D;return b.forEach(function(A){var k=A[0],N=A[2],W=A[4],Y=A[6],Q=A[1],ie=A[3],O=A[5],V=A[7];P=Math.min(P,k,N,W,Y),D=Math.min(D,Q,ie,O,V),z=Math.max(z,k,N,W,Y),j=Math.max(j,Q,ie,O,V)}),[P,D,z,j]}function y(b,P){return Math.sqrt(Math.pow(b[0]-P[0],2)+Math.pow(b[1]-P[1],2))+Math.sqrt(Math.pow(b[2]-P[2],2)+Math.pow(b[3]-P[3],2))}function S(b,P){var D=b[0],z=b[2],j=b[4],A=b[6],k=b[1],N=b[3],W=b[5],Y=b[7],Q=P[0],ie=P[2],O=P[4],V=P[6],Z=P[1],$=P[3],ee=P[5],se=P[7];return Math.sqrt(Math.pow(Q-D,2)+Math.pow(Z-k,2))+Math.sqrt(Math.pow(ie-z,2)+Math.pow($-N,2))+Math.sqrt(Math.pow(O-j,2)+Math.pow(ee-W,2))+Math.sqrt(Math.pow(V-A,2)+Math.pow(se-Y,2))}function E(b,P){var D=L(b.length),z=[];D.forEach(function(A){var k=0,N=0;A.forEach(function(W){k+=S(b[W],P[N++])}),z.push({index:A,distance:k})}),z.sort(function(A,k){return A.distance-k.distance});var j=[];return z[0].index.forEach(function(A){j.push(b[A])}),j}function C(b,P){var D=T(b.length),z=[];D.forEach(function(A){var k=0;A.forEach(function(N){k+=y(g(b[N]),g(P[N]))}),z.push({index:A,distance:k})}),z.sort(function(A,k){return A.distance-k.distance});var j=[];return z[0].index.forEach(function(A){j.push(b[A])}),j}function L(b){for(var P=[],D=0;D<b;D++){for(var z=[],j=0;j<b;j++){var A=j+D;A>b-1&&(A-=b),z[A]=j}P.push(z)}return P}function T(b){for(var P=[],D=0;D<b;D++)P.push(D);return p(P)}function p(b){var P=[],D=[];function z(j){var A,k;for(A=0;A<j.length;A++)k=j.splice(A,1)[0],D.push(k),j.length==0&&P.push(D.slice()),z(j),j.splice(A,0,k),D.pop();return P}return z(b)}var m={};m.parser=h,m.lerpCurve=function(b,P,D){return m.lerpPoints(b[0],b[1],P[0],P[1],D).concat(m.lerpPoints(b[2],b[3],P[2],P[3],D)).concat(m.lerpPoints(b[4],b[5],P[4],P[5],D)).concat(m.lerpPoints(b[6],b[7],P[6],P[7],D))},m.lerpPoints=function(b,P,D,z,j){return[b+(D-b)*j,P+(z-P)*j]},m.q2b=function(b,P,D,z,j,A){return[b,P,(b+2*D)/3,(P+2*z)/3,(j+2*D)/3,(A+2*z)/3,j,A]},m.path2shapes=function(b){for(var P=m.parser(b),D=0,z=0,j=0,A=P.length,k=[],N=null,W=void 0,Y=void 0,Q=void 0,ie=void 0,O=void 0,V=void 0,Z=void 0;j<A;j++){var $=P[j],ee=$[0],se=P[j-1];switch(ee){case"m":O=k.length,k[O]=[],N=k[O],D=D+$[1],z=z+$[2];break;case"M":O=k.length,k[O]=[],N=k[O],D=$[1],z=$[2];break;case"l":N.push([D,z,D,z,D,z,D+$[1],z+$[2]]),D+=$[1],z+=$[2];break;case"L":N.push([D,z,$[1],$[2],$[1],$[2],$[1],$[2]]),D=$[1],z=$[2];break;case"h":N.push([D,z,D,z,D,z,D+$[1],z]),D+=$[1];break;case"H":N.push([D,z,$[1],z,$[1],z,$[1],z]),D=$[1];break;case"v":N.push([D,z,D,z,D,z,D,z+$[1]]),z+=$[1];break;case"V":N.push([D,z,D,$[1],D,$[1],D,$[1]]),z=$[1];break;case"C":N.push([D,z,$[1],$[2],$[3],$[4],$[5],$[6]]),D=$[5],z=$[6];break;case"S":se[0]==="C"||se[0]==="c"?N.push([D,z,D+se[5]-se[3],z+se[6]-se[4],$[1],$[2],$[3],$[4]]):(se[0]==="S"||se[0]==="s")&&N.push([D,z,D+se[3]-se[1],z+se[4]-se[2],$[1],$[2],$[3],$[4]]),D=$[3],z=$[4];break;case"c":N.push([D,z,D+$[1],z+$[2],D+$[3],z+$[4],D+$[5],z+$[6]]),D=D+$[5],z=z+$[6];break;case"s":se[0]==="C"||se[0]==="c"?N.push([D,z,D+se[5]-se[3],z+se[6]-se[4],D+$[1],z+$[2],D+$[3],z+$[4]]):(se[0]==="S"||se[0]==="s")&&N.push([D,z,D+se[3]-se[1],z+se[4]-se[2],D+$[1],z+$[2],D+$[3],z+$[4]]),D=D+$[3],z=z+$[4];break;case"a":V=c({rx:$[1],ry:$[2],px:D,py:z,xAxisRotation:$[3],largeArcFlag:$[4],sweepFlag:$[5],cx:D+$[6],cy:z+$[7]}),Z=V[V.length-1],V.forEach(function(ce,me){me===0?N.push([D,z,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y]):N.push([V[me-1].x,V[me-1].y,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y])}),D=Z.x,z=Z.y;break;case"A":V=c({rx:$[1],ry:$[2],px:D,py:z,xAxisRotation:$[3],largeArcFlag:$[4],sweepFlag:$[5],cx:$[6],cy:$[7]}),Z=V[V.length-1],V.forEach(function(ce,me){me===0?N.push([D,z,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y]):N.push([V[me-1].x,V[me-1].y,ce.x1,ce.y1,ce.x2,ce.y2,ce.x,ce.y])}),D=Z.x,z=Z.y;break;case"Q":N.push(m.q2b(D,z,$[1],$[2],$[3],$[4])),D=$[3],z=$[4];break;case"q":N.push(m.q2b(D,z,D+$[1],z+$[2],$[3]+D,$[4]+z)),D+=$[3],z+=$[4];break;case"T":se[0]==="Q"||se[0]==="q"?(Q=D+se[3]-se[1],ie=z+se[4]-se[2],N.push(m.q2b(D,z,Q,ie,$[1],$[2]))):(se[0]==="T"||se[0]==="t")&&(N.push(m.q2b(D,z,D+D-Q,z+z-ie,$[1],$[2])),Q=D+D-Q,ie=z+z-ie),D=$[1],z=$[2];break;case"t":se[0]==="Q"||se[0]==="q"?(Q=D+se[3]-se[1],ie=z+se[4]-se[2],N.push(m.q2b(D,z,Q,ie,D+$[1],z+$[2]))):(se[0]==="T"||se[0]==="t")&&(N.push(m.q2b(D,z,D+D-Q,z+z-ie,D+$[1],z+$[2])),Q=D+D-Q,ie=z+z-ie),D+=$[1],z+=$[2];break;case"Z":W=N[0][0],Y=N[0][1],N.push([D,z,W,Y,W,Y,W,Y]);break;case"z":W=N[0][0],Y=N[0][1],N.push([D,z,W,Y,W,Y,W,Y]);break}}return k},m._upCurves=function(b,P){for(var D=0,z=0,j=b.length;D<P;D++)b.push(b[z].slice(0)),z++,z>j-1&&(z-=j)};function M(b,P,D,z,j,A,k,N,W){return{left:v(b,P,D,z,j,A,k,N,W),right:v(k,N,j,A,D,z,b,P,1-W,!0)}}function v(b,P,D,z,j,A,k,N,W,Y){var Q=(D-b)*W+b,ie=(z-P)*W+P,O=(j-D)*W+D,V=(A-z)*W+z,Z=(k-j)*W+j,$=(N-A)*W+A,ee=(O-Q)*W+Q,se=(V-ie)*W+ie,ce=(Z-O)*W+O,me=($-V)*W+V,pe=(ce-ee)*W+ee,B=(me-se)*W+se;return Y?[pe,B,ee,se,Q,ie,b,P]:[b,P,Q,ie,ee,se,pe,B]}m._splitCurves=function(b,P){for(var D=0,z=0;D<P;D++){var j=b[z],A=M(j[0],j[1],j[2],j[3],j[4],j[5],j[6],j[7],.5);b.splice(z,1),b.splice(z,0,A.left,A.right),z+=2,z>=b.length-1&&(z=0)}};function R(b,P){for(var D=function(A){var k=b[b.length-1],N=[];k.forEach(function(W){N.push(W.slice(0))}),b.push(N)},z=0;z<P;z++)D()}return m.lerp=function(b,P,D){return m._lerp(m.path2shapes(b),m.path2shapes(P),D)},m.MIM_CURVES_COUNT=100,m._preprocessing=function(b,P){var D=b.length,z=P.length,j=JSON.parse(JSON.stringify(b)),A=JSON.parse(JSON.stringify(P));return D>z?R(A,D-z):D<z&&R(j,z-D),j=C(j,A),j.forEach(function(k,N){var W=k.length,Y=A[N].length;W>Y?W<m.MIM_CURVES_COUNT?(m._splitCurves(k,m.MIM_CURVES_COUNT-W),m._splitCurves(A[N],m.MIM_CURVES_COUNT-Y)):m._splitCurves(A[N],W-Y):W<Y&&(Y<m.MIM_CURVES_COUNT?(m._splitCurves(k,m.MIM_CURVES_COUNT-W),m._splitCurves(A[N],m.MIM_CURVES_COUNT-Y)):m._splitCurves(k,Y-W))}),j.forEach(function(k,N){j[N]=E(k,A[N])}),[j,A]},m._lerp=function(b,P,D){var z=[];return b.forEach(function(j,A){var k=[];j.forEach(function(N,W){k.push(m.lerpCurve(N,P[A][W],D))}),z.push(k)}),z},m.animate=function(b){var P=m.path2shapes(b.from),D=m.path2shapes(b.to),z=m._preprocessing(P,D),j=new Date,A=b.end||function(){},k=b.progress||function(){},N=b.begin||function(){},W=b.easing||function(V){return V},Y=null,Q=null,ie=b.time;N(P);var O=function V(){var Z=new Date-j;if(Z>=ie){Q=D,k(Q,1),A(Q),cancelAnimationFrame(Y);return}var $=W(Z/ie);Q=m._lerp(z[0],z[1],$),k(Q,$),Y=requestAnimationFrame(V)};O()},m})})(Tv);var Moe=Tv.exports;const Qo=ln(Moe);Ze(Array);const woe=Symbol.for("spritejs_setAttributeDefault"),Ot=Symbol.for("spritejs_setAttribute"),zt=Symbol.for("spritejs_getAttribute");let Tc=class extends oh{constructor(r){super(r),this[woe]({d:"",normalize:!1,fillColor:void 0,fillRule:"nonzero",strokeColor:void 0,lineWidth:1,lineJoin:"miter",lineCap:"butt",roundSegments:20,lineDash:void 0,lineDashOffset:0,miterLimit:10,texture:void 0,textureRect:void 0,textureRepeat:!1,sourceRect:void 0,clipPath:void 0})}get d(){return this[zt]("d")}set d(r){this[Ot]("d",r)}get normalize(){return this[zt]("normalize")}set normalize(r){this[Ot]("normalize",!!r)}get fillColor(){return this[zt]("fillColor")}set fillColor(r){this[Ot]("fillColor",En(r))}get fillRule(){return this[zt]("fillRule")}set fillRule(r){if(r!=null&&r!=="nonzero"&&r!=="evenodd")throw new TypeError("Invalid fill rule.");this[Ot]("fillRule",r)}get strokeColor(){return this[zt]("strokeColor")}set strokeColor(r){this[Ot]("strokeColor",En(r))}get lineWidth(){return this[zt]("lineWidth")}set lineWidth(r){this[Ot]("lineWidth",qe(r))}get lineJoin(){return this[zt]("lineJoin")}set lineJoin(r){if(r!=null&&r!=="miter"&&r!=="bevel"&&r!=="round")throw new TypeError("Invalid lineJoin type.");this[Ot]("lineJoin",r)}get lineCap(){return this[zt]("lineCap")}set lineCap(r){if(r!=null&&r!=="butt"&&r!=="square"&&r!=="round")throw new TypeError("Invalid lineCap type.");this[Ot]("lineCap",r)}get lineDash(){return this[zt]("lineDash")}set lineDash(r){r=Mt(r,!0),r!=null&&!Array.isArray(r)&&(r=[r]),this[Ot]("lineDash",r?r.map(qe):null)}get lineDashOffset(){return this[zt]("lineDashOffset")}set lineDashOffset(r){this[Ot]("lineDashOffset",qe(r))}get miterLimit(){return this[zt]("miterLimit")}set miterLimit(r){this[Ot]("miterLimit",qe(r))}get roundSegments(){return this[zt]("roundSegments")}set roundSegments(r){this[Ot]("roundSegments",r)}get texture(){return this[zt]("texture")}set texture(r){this[Ot]("texture",r)}get textureRect(){return this[zt]("textureRect")}set textureRect(r){this[Ot]("textureRect",r)}get sourceRect(){return this[zt]("sourceRect")}set sourceRect(r){this[Ot]("sourceRect",r)}get textureRepeat(){return this[zt]("textureRepeat")}set textureRepeat(r){this[Ot]("textureRepeat",!!r)}get clipPath(){return this[zt]("clipPath")}set clipPath(r){this[Ot]("clipPath",r)}};Ze(Array);const Hr=Symbol("mesh");class $t extends fc{constructor(r={}){typeof r=="string"&&(r={d:r}),super(r),this.effects={d(e,t,n,i,o){const a=(n-i)/(o-i);if(a<=0)return e;if(a>=1)return t;const c=Qo._preprocessing(Qo.path2shapes(e),Qo.path2shapes(t)),l=Qo._lerp(...c,a)[0];return l.reduce((h,d)=>`${h}${d.slice(2).join(" ")} `,`M${l[0][0]} ${l[0][1]}C`).trim()}}}get isVisible(){return!!this.d}get mesh(){if(this.attributes.display==="none")return null;const r=this.path;if(r){let e=this[Hr];if(e)e.path!==r&&(e.contours=r.contours,e.path=r);else{e=new ft.Mesh2D(this.path),e.path=r;const n=this.attributes.fillColor,i=this.attributes.fillRule;n&&Ca(e,{color:n,rule:i});const o=this.attributes.lineWidth,a=this.attributes.strokeColor;if(a&&o>0){const{lineCap:l,lineJoin:u,miterLimit:h,lineDash:d,lineDashOffset:f,roundSegments:g}=this.attributes;Ia(e,{color:a,lineWidth:o,lineCap:l,lineJoin:u,miterLimit:h,lineDash:d,lineDashOffset:f,roundSegments:g})}this[Hr]=e;const c=this.attributes.clipPath;c&&this[Hr].setClipPath(c)}const t=this.opacity;return e.getOpacity()!==t&&e.setOpacity(t),e.setTransform(...this.renderMatrix),e}return null}get originalContentRect(){if(this.path){const r=this.path.boundingBox;return[r[0][0],r[0][1],r[1][0]-r[0][0],r[1][1]-r[0][1]]}return[0,0,0,0]}get originalClientRect(){if(this.mesh){const r=this.mesh.boundingBox;return[r[0][0],r[0][1],r[1][0]-r[0][0],r[1][1]-r[0][1]]}return[0,0,0,0]}get originalClientCenter(){return this.mesh?this.mesh.boundingCenter:[0,0]}set d(r){this.attributes.d=r}get d(){return this.attributes.d}draw(r=[]){super.draw(r);const e=this.mesh;return e&&Sv(this,e),r}getBoundingClientRect(){let r=null;return this.mesh&&(r=this.mesh.boundingBox),by(r,this.renderMatrix)}getPathLength(){return this.mesh?this.mesh.getTotalLength():0}getPointAtLength(r){if(this.mesh){const e=this.mesh.getPointAtLength(r);if(e)return[e.x,e.y]}return[0,0]}onPropertyChange(r,e,t){if(super.onPropertyChange(r,e,t),(r==="d"||r==="normalize")&&this.updateContours(),this[Hr]&&(r==="fillColor"||r==="fillRule")){const{fillColor:n,fillRule:i}=this.attributes;Ca(this[Hr],{color:n,rule:i})}if(this[Hr]&&(r==="strokeColor"||r==="lineWidth"||r==="lineCap"||r==="lineJoin"||r==="lineDash"||r==="lineDashOffset"||r==="roundSegments")){const{strokeColor:n,lineWidth:i}=this.attributes;if(n&&i>0){const{lineCap:o,lineJoin:a,lineDash:c,lineDashOffset:l,miterLimit:u,roundSegments:h}=this.attributes;Ia(this[Hr],{color:n,lineCap:o,lineJoin:a,lineWidth:i,lineDash:c,lineDashOffset:l,miterLimit:u,roundSegments:h})}}this[Hr]&&r==="clipPath"&&this[Hr].setClipPath(e),r==="texture"&&vv(this,e)}updateContours(){this.path=new ft.Figure2D,this.path.addPath(this.attributes.d),this.attributes.normalize&&this.path.normalize(...this.path.boundingCenter)}}x($t,"Attr",Tc);Gt.registerNode($t,"path");Ze(Array);function Soe(s,r=[0]){function e(i,o=.168,a=.168){let c,l,u,h;if((s[i].x===s[i+1].x||s[i].y===s[i+1].y)&&(o=0,a=0),i<1?(c=s[0].x+(s[1].x-s[0].x)*o,l=s[0].y+(s[1].y-s[0].y)*o):(c=s[i].x+(s[i+1].x-s[i-1].x)*o,l=s[i].y+(s[i+1].y-s[i-1].y)*o),i>s.length-3){const d=s.length-1;u=s[d].x-(s[d].x-s[d-1].x)*a,h=s[d].y-(s[d].y-s[d-1].y)*a}else u=s[i+1].x-(s[i+2].x-s[i].x)*a,h=s[i+1].y-(s[i+2].y-s[i].y)*a;return[{x:c,y:l},{x:u,y:h}]}s=s.map(([i,o])=>({x:i,y:o}));let t="",n=0;return s.forEach((i,o)=>{if(o===0)t+=`M${i.x} ${i.y}`;else{for(;o>r[n];)n++;if(n%2){const[a,c]=e(o-1);t+=`C${[a.x,a.y,c.x,c.y,i.x,i.y].join(" ")}`}else t+=`L${i.x} ${i.y}`}}),t}Ze(Array);const Toe=Symbol.for("spritejs_setAttributeDefault"),pn=Symbol.for("spritejs_setAttribute"),ps=Symbol.for("spritejs_getAttribute"),Coe=Symbol.for("spritejs_declareAlias");function qo(s){const{points:r,smooth:e,smoothRange:t,close:n}=s,i=[];for(let a=0;a<r.length;a+=2)i.push([r[a],r[a+1]]);let o="";return e?o=Soe(i,t):i.length&&(o=`M${i.map(a=>a.join(" ")).join("L")}`),o&&n&&(o+="Z"),o}let Ioe=class extends Tc{constructor(r){super(r),this[Toe]({points:[],smooth:!1,smoothRange:[0],closeType:"none"}),this[Coe]("close")}get d(){return this[ps]("d")}set d(r){}get close(){return this.closeType!=="none"}set close(r){r=r?"normal":"none",this.closeType=r}get closeType(){return this[ps]("closeType")}set closeType(r){if(r!=null&&r!=="none"&&r!=="normal")throw new TypeError("Invalid closeType type.");if(this[pn]("closeType",r)){const e=qo(this);this[pn]("d",e)}}get smooth(){return this[ps]("smooth")}set smooth(r){if(this[pn]("smooth",r)){const e=qo(this);this[pn]("d",e)}}get smoothRange(){return this[ps]("smoothRange")}set smoothRange(r){if(r&&!Array.isArray(r)&&(r=[r]),this[pn]("smoothRange",r)&&this.smooth){const e=qo(this);this[pn]("d",e)}}get points(){return this[ps]("points")}set points(r){if(r=Mt(r),Array.isArray(r)&&(r=r.reduce((e,t)=>Array.isArray(t)?[...e,...t.map(n=>qe(n))]:[...e,qe(t)],[])),this[pn]("points",r)){const e=qo(this);this[pn]("d",e)}}};Ze(Array);class Ir extends $t{get isVisible(){const{points:r}=this.attributes;return r.length>0&&super.isVisible}}x(Ir,"Attr",Ioe);Gt.registerNode(Ir,"polyline");Ze(Array);const boe=Symbol.for("spritejs_setAttributeDefault"),Zo=Symbol.for("spritejs_setAttribute"),Dl=Symbol.for("spritejs_getAttribute"),Eoe=Symbol.for("spritejs_declareAlias");function kg(s){const{width:r,height:e}=s;return`M0 0L${r} 0L${r} ${e}L0 ${e}Z`}let xoe=class extends Tc{constructor(r){super(r),this[boe]({width:0,height:0}),this[Eoe]("size")}get d(){return this[Dl]("d")}set d(r){}get width(){return this[Dl]("width")}set width(r){if(r=qe(r),this[Zo]("width",r)){const e=kg(this);this[Zo]("d",e)}}get height(){return this[Dl]("height")}set height(r){if(r=qe(r),this[Zo]("height",r)){const e=kg(this);this[Zo]("d",e)}}get size(){return[this.width,this.height]}set size(r){r=Mt(r),Array.isArray(r)||(r=[r,r]),this.width=r[0],this.height=r[1]}};Ze(Array);class Gs extends $t{get isVisible(){const{width:r,height:e}=this.attributes;return r>0&&e>0&&super.isVisible}}x(Gs,"Attr",xoe);Gt.registerNode(Gs,"rect");Ze(Array);const Roe=Symbol.for("spritejs_setAttributeDefault"),pr=Symbol.for("spritejs_setAttribute"),Wn=Symbol.for("spritejs_getAttribute"),koe=Symbol.for("spritejs_declareAlias");function ms(s){const{radiusX:r,radiusY:e,startAngle:t,endAngle:n,direction:i,closeType:o}=s,a=i==="anitclockwise",c=new ft.Figure2D;return o==="sector"&&c.moveTo(0,0),c.ellipse(0,0,r,e,0,Math.PI*t/180,Math.PI*n/180,a),o!=="none"&&c.closePath(),c.path.reduce((h,d)=>h+d.join(" "),"")}let Aoe=class extends Tc{constructor(r){super(r),this[Roe]({radiusX:0,radiusY:0,startAngle:0,endAngle:360,direction:"clockwise",closeType:"none"}),this[koe]("radius","angle")}get d(){return this[Wn]("d")}set d(r){}get radiusX(){return this[Wn]("radiusX")}set radiusX(r){if(r=qe(r),this[pr]("radiusX",r)){const e=ms(this);this[pr]("d",e)}}get radiusY(){return this[Wn]("radiusY")}set radiusY(r){if(r=qe(r),this[pr]("radiusY",r)){const e=ms(this);this[pr]("d",e)}}get radius(){return[this.radiusX,this.radiusY]}set radius(r){r=Mt(r,!0),Array.isArray(r)||(r=[r,r]),this.radiusX=r[0],this.radiusY=r[1]}get angle(){return[this.startAngle,this.endAngle]}set angle(r){r=Mt(r),Array.isArray(r)||(r=[r,r]),this.startAngle=r[0],this.endAngle=r[1]}get direction(){return this[Wn]("direction")}set direction(r){if(r!=null&&r!=="clockwise"&&r!=="anticlockwise")throw new TypeError("Invalid direction type.");this[pr]("direction",r)}get startAngle(){return this[Wn]("startAngle")}set startAngle(r){if(r=qe(r),this[pr]("startAngle",r)){const e=ms(this);this[pr]("d",e)}}get endAngle(){return this[Wn]("endAngle")}set endAngle(r){if(r=qe(r),this[pr]("endAngle",r)){const e=ms(this);this[pr]("d",e)}}get closeType(){return this[Wn]("closeType")}set closeType(r){if(r!=null&&r!=="none"&&r!=="sector"&&r!=="normal")throw new TypeError("Invalid closeType type.");if(this[pr]("closeType",r)){const e=ms(this);this[pr]("d",e)}}};Ze(Array);class Qh extends $t{get isVisible(){const{radiusX:r,radiusY:e,startAngle:t,endAngle:n}=this.attributes;return r>0&&e>0&&t!==n&&super.isVisible}}x(Qh,"Attr",Aoe);Gt.registerNode(Qh,"ellipse");Ze(Array);const Poe=Symbol.for("spritejs_setAttributeDefault"),Ko=Symbol.for("spritejs_setAttribute"),Xo=Symbol.for("spritejs_getAttribute");let Doe=class extends gc{constructor(r){super(r),this[Poe]({texture:void 0,textureRect:void 0,textureRepeat:!1,sourceRect:void 0})}get texture(){return this[Xo]("texture")}set texture(r){this[Ko]("texture",r)}get textureRect(){return this[Xo]("textureRect")}set textureRect(r){this[Ko]("textureRect",r)}get sourceRect(){return this[Xo]("sourceRect")}set sourceRect(r){this[Ko]("sourceRect",r)}get textureRepeat(){return this[Xo]("textureRepeat")}set textureRepeat(r){this[Ko]("textureRepeat",!!r)}};Ze(Array);const Ag=Symbol("textureTask");class Cc extends co{constructor(r={}){typeof r=="string"&&(r={texture:r}),super(r)}get contentSize(){let[r,e]=super.contentSize;const{width:t,height:n}=this.attributes;if(t==null||n==null){const i=this.textureImage,o=this.attributes.textureRect,a=this.attributes.sourceRect;if(o)t==null&&(r=o[0]+o[2]),n==null&&(e=o[1]+o[3]);else if(a){const c=this.layer?this.layer.displayRatio:1;t==null&&(r=a[2]/c),n==null&&(e=a[3]/c)}else if(i){const c=this.layer?this.layer.displayRatio:1;t==null&&(r=i.width/c),n==null&&(e=i.height/c)}}return[r,e]}get textureImageReady(){return this[Ag]||Promise.resolve()}draw(r=[]){super.draw(r);const e=this.mesh;return e&&Sv(this,e),r}onPropertyChange(r,e,t){if(super.onPropertyChange(r,e,t),r==="texture"&&(this[Ag]=vv(this,e,!0)),r==="textureRect"){const{width:n,height:i}=this.attributes;(n==null||i==null)&&this.updateContours()}}}x(Cc,"Attr",Doe);Gt.registerNode(Cc,"sprite");Ze(Array);const Loe=Symbol.for("spritejs_setAttributeDefault"),tr=Symbol.for("spritejs_setAttribute"),rr=Symbol.for("spritejs_getAttribute"),Noe=Symbol.for("spritejs_declareAlias");let Ooe=class extends gc{constructor(r){super(r),this[Loe]({text:"",fontSize:16,fontFamily:"Helvetica,Arial,sans-serif",fontStyle:"normal",fontVariant:"normal",fontWeight:"normal",fontStretch:"normal",lineHeight:"",textAlign:"left",strokeColor:void 0,strokeWidth:1,fillColor:void 0,verticalAlign:"middle"}),this[Noe]("font")}get text(){return this[rr]("text")||" "}set text(r){this[tr]("text",r)}get fontSize(){return this[rr]("fontSize")}set fontSize(r){this[tr]("fontSize",qe(r))}get fontFamily(){return this[rr]("fontFamily")}set fontFamily(r){this[tr]("fontFamily",r)}get fontStyle(){return this[rr]("fontStyle")}set fontStyle(r){this[tr]("fontStyle",r)}get fontVariant(){return this[rr]("fontVariant")}set fontVariant(r){this[tr]("fontVariant",r)}get fontWeight(){return this[rr]("fontWeight")}set fontWeight(r){this[tr]("fontWeight",r)}get fontStretch(){return this[rr]("fontStretch")}set fontStretch(r){this[tr]("fontStretch",r)}get lineHeight(){return this[rr]("lineHeight")||this.fontSize}set lineHeight(r){this[tr]("lineHeight",qe(r))}get textAlign(){return this[rr]("textAlign")}set textAlign(r){this[tr]("textAlign",r)}get strokeColor(){return this[rr]("strokeColor")}set strokeColor(r){this[tr]("strokeColor",En(r))}get strokeWidth(){return this[rr]("strokeWidth")}set strokeWidth(r){this[tr]("strokeWidth",qe(r))}get verticalAlign(){return this[rr]("verticalAlign")}set verticalAlign(r){this[tr]("verticalAlign",r)}get fillColor(){return this[rr]("fillColor")}set fillColor(r){this[tr]("fillColor",En(r))}get font(){const{fontStyle:r,fontVariant:e,fontWeight:t,fontStretch:n,fontSize:i,lineHeight:o,fontFamily:a}=this;return`${r} ${e} ${t} ${n} ${i}px/${o}px ${a}`}set font(r){if(r==null)this.fontStyle=null,this.fontVariant=null,this.fontWeight=null,this.fontStretch=null,this.fontSize=null,this.lineHeight=null,this.fontFamily=null;else{const e=ft.parseFont(r);this.fontStyle=e.style,this.fontVariant=e.variant,this.fontWeight=e.weight,this.fontStretch=e.stretch,this.fontSize=qe(`${e.size}${e.unit}`),e.lineHeight&&(this.lineHeight=e.pxLineHeight),this.fontFamily=e.family}}};Ze(Array);const Ii=Symbol("textImage"),Jo=Symbol("textImageTask"),Ll=Symbol("textureContext"),ys=Symbol("updateTextureRect"),Nl=Symbol("textCanvas");class qh extends co{constructor(r={}){typeof r=="string"&&(r={text:r}),super(r)}get contentSize(){let[r,e]=super.contentSize;const{width:t,height:n}=this.attributes;if(t==null||n==null){const i=this[Ii];i&&(t==null&&(r=i.rect[2]),n==null&&(e=i.rect[3]))}return[r,e]}get text(){return this.attributes.text}set text(r){this.attributes.text=r}get textContent(){return this.attributes.text}set textContent(r){this.attributes.text=r}get textImage(){return this[Ii]||{}}get textImageReady(){return this[Jo]||Promise.resolve()}draw(r){super.draw(r);const e=this.mesh;if(e){const t=this[Ii];if(t){let n=e.texture;if(!n||this[Ll]&&this[Ll]!==this.renderer||t.needsUpdate?(t.needsUpdate=!1,wv(t.image,this.renderer),n=Mv(t.image,this.renderer),this[ys]=!0):n=e.uniforms.u_texSampler,this[ys]){const[i,o]=t.rect.slice(2),[a,c]=this.contentSize,l=this.attributes.textAlign,u=this.attributes.verticalAlign;let h=0;l==="center"?h=(a-i)/2:(l==="right"||l==="end")&&(h=a-i);const d=this.attributes.fontSize,f=this.attributes.lineHeight;let g=0;u==="top"?g=(d-f)/2:u==="bottom"&&(g=(f-d)/2);const{paddingLeft:y,paddingTop:S}=this.attributes,{borderWidth:E}=this.attributes;h+=y+E,g+=S+E;const{anchorX:C,anchorY:L}=this.attributes;h-=this.offsetSize[0]*C,g-=this.offsetSize[1]*L,e.setTexture(n,{rect:[h,g,i,o]}),this[ys]=!1,this[Ll]=this.renderer}}}return r}onPropertyChange(r,e,t){r==="text"||r==="fontSize"||r==="fontFamily"||r==="fontStyle"||r==="fontVariant"||r==="fontWeight"||r==="fontStretch"||r==="lineHeight"||r==="strokeColor"||r==="fillColor"||r==="strokeWidth"?this.updateText():((r==="textAlign"||r==="verticalAlign")&&(this[ys]=!0),super.onPropertyChange(r,e,t))}updateContours(){super.updateContours(),this[ys]=!0}updateText(){this[Jo]||(this[Jo]=Promise.resolve().then(()=>{this[Jo]=null;const{text:r,font:e,fillColor:t,strokeColor:n,strokeWidth:i}=this.attributes,o=this.layer?this.layer.displayRatio:1;return this[Nl]=this[Nl]||ft.ENV.createCanvas(1,1),this[Ii]=ft.ENV.createText(r,{font:e,fillColor:t,strokeColor:n,strokeWidth:i,parseFont:ft.parseFont,ratio:o,textCanvas:this[Nl]}),this[Ii].needsUpdate=!0,this.updateContours(),this.forceUpdate(),this[Ii]}))}}x(qh,"Attr",Ooe);Gt.registerNode(qh,"label");Ze(Array);function zoe(s,r){if(!s)return r&&[...r];if(!r)return s;const e=Math.min(s[0],r[0]),t=Math.min(s[1],r[1]);return[e,t,Math.max(s[0]+s[2],r[0]+r[2])-e,Math.max(s[1]+s[3],r[1]+r[3])-t]}class Boe{constructor(r,{rect:e,revision:t=0,singleChannelTexture:n=!0,textureSubImage2D:i=!0}={}){if(!r||!e||e.length!==4)throw new TypeError("MaskHandle requires a source and [x, y, width, height] rect.");this.source=r,this.rect=[...e],this.revision=t,this.textureSubImage2D=i,this.singleChannelTexture=n,this._textures=new Map,this._dirtyRect=null,this._stagingCanvas=null}update({rect:r,dirtyRect:e}={}){return r&&(this.rect=[...r]),this._dirtyRect=zoe(this._dirtyRect,e),this.revision++,this}getTexture(r){if(!r||!r.glRenderer)return null;let e=this._textures.get(r);return e?e.revision!==this.revision&&(this._upload(r.glRenderer.gl,e,this._dirtyRect),e.revision=this.revision):(e={revision:this.revision,...this._createTexture(r)},this._textures.set(r,e)),[...this._textures.values()].every(t=>t.revision===this.revision)&&(this._dirtyRect=null),e.texture}destroy(r){if(r){const e=this._textures.get(r);e&&(r.deleteTexture(e.texture),this._textures.delete(r));return}this._textures.forEach((e,t)=>{t.deleteTexture(e.texture)}),this._textures.clear()}_createTexture(r){const e=r.glRenderer.gl;if(!(this.singleChannelTexture&&r.isWebGL2&&e.R8!=null))return{texture:r.createTexture(this.source),singleChannel:!1};const n=e.createTexture();try{if(e.bindTexture(e.TEXTURE_2D,n),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.R8,e.RED,e.UNSIGNED_BYTE,this.source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.getError()!==e.NO_ERROR)throw new Error("R8 texture upload failed.");return n._img=this.source,n.delete=()=>e.deleteTexture(n),{texture:n,singleChannel:!0}}catch{return e.deleteTexture(n),this.singleChannelTexture=!1,{texture:r.createTexture(this.source),singleChannel:!1}}finally{e.bindTexture(e.TEXTURE_2D,null)}}_upload(r,e,t){const{texture:n,singleChannel:i}=e,o=r.getParameter(r.ACTIVE_TEXTURE),a=r.getParameter(r.TEXTURE_BINDING_2D),c=r.getParameter(r.UNPACK_FLIP_Y_WEBGL);r.bindTexture(r.TEXTURE_2D,n),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,!0),this._uploadDirtyRect(r,t,i)||(i?r.texImage2D(r.TEXTURE_2D,0,r.R8,r.RED,r.UNSIGNED_BYTE,this.source):r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,this.source)),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,c),r.bindTexture(r.TEXTURE_2D,a),r.activeTexture(o)}_uploadDirtyRect(r,e,t){if(!this.textureSubImage2D||!e)return!1;const[n,i,o,a]=this.rect,c=Math.max(0,Math.floor((e[0]-n)/o*this.source.width)),l=Math.max(0,Math.floor((e[1]-i)/a*this.source.height)),u=Math.min(this.source.width,Math.ceil((e[0]+e[2]-n)/o*this.source.width)),h=Math.min(this.source.height,Math.ceil((e[1]+e[3]-i)/a*this.source.height)),d=u-c,f=h-l;if(d<=0||f<=0)return!0;let g=this._stagingCanvas;(!g||g.width!==d||g.height!==f)&&(g=ft.ENV.createCanvas(d,f,{offscreen:!0}),this._stagingCanvas=g);const y=g&&g.getContext("2d");if(!y)return!1;y.clearRect(0,0,d,f),y.drawImage(this.source,c,l,d,f,0,0,d,f);try{return r.texSubImage2D(r.TEXTURE_2D,0,c,this.source.height-h,t?r.RED:r.RGBA,r.UNSIGNED_BYTE,g),!0}catch{return this.textureSubImage2D=!1,!1}}}Ze(Array);Ze(Array);var joe=typeof St=="object"&&St&&St.Object===Object&&St,Cv=joe,Foe=Cv,Uoe=typeof self=="object"&&self&&self.Object===Object&&self,Woe=Foe||Uoe||Function("return this")(),Er=Woe,Voe=Er,$oe=Voe.Symbol,fo=$oe,Pg=fo,Iv=Object.prototype,Yoe=Iv.hasOwnProperty,Goe=Iv.toString,vs=Pg?Pg.toStringTag:void 0;function Hoe(s){var r=Yoe.call(s,vs),e=s[vs];try{s[vs]=void 0;var t=!0}catch{}var n=Goe.call(s);return t&&(r?s[vs]=e:delete s[vs]),n}var Qoe=Hoe,qoe=Object.prototype,Zoe=qoe.toString;function Koe(s){return Zoe.call(s)}var Xoe=Koe,Dg=fo,Joe=Qoe,_oe=Xoe,eae="[object Null]",tae="[object Undefined]",Lg=Dg?Dg.toStringTag:void 0;function rae(s){return s==null?s===void 0?tae:eae:Lg&&Lg in Object(s)?Joe(s):_oe(s)}var pi=rae;function nae(s){return s!=null&&typeof s=="object"}var zr=nae,iae=pi,sae=zr,oae="[object Number]";function aae(s){return typeof s=="number"||sae(s)&&iae(s)==oae}var cae=aae;const yt=ln(cae);function lae(){this.__data__=[],this.size=0}var uae=lae;function hae(s,r){return s===r||s!==s&&r!==r}var Zh=hae,dae=Zh;function fae(s,r){for(var e=s.length;e--;)if(dae(s[e][0],r))return e;return-1}var Ic=fae,gae=Ic,pae=Array.prototype,mae=pae.splice;function yae(s){var r=this.__data__,e=gae(r,s);if(e<0)return!1;var t=r.length-1;return e==t?r.pop():mae.call(r,e,1),--this.size,!0}var vae=yae,Mae=Ic;function wae(s){var r=this.__data__,e=Mae(r,s);return e<0?void 0:r[e][1]}var Sae=wae,Tae=Ic;function Cae(s){return Tae(this.__data__,s)>-1}var Iae=Cae,bae=Ic;function Eae(s,r){var e=this.__data__,t=bae(e,s);return t<0?(++this.size,e.push([s,r])):e[t][1]=r,this}var xae=Eae,Rae=uae,kae=vae,Aae=Sae,Pae=Iae,Dae=xae;function es(s){var r=-1,e=s==null?0:s.length;for(this.clear();++r<e;){var t=s[r];this.set(t[0],t[1])}}es.prototype.clear=Rae;es.prototype.delete=kae;es.prototype.get=Aae;es.prototype.has=Pae;es.prototype.set=Dae;var bc=es,Lae=bc;function Nae(){this.__data__=new Lae,this.size=0}var Oae=Nae;function zae(s){var r=this.__data__,e=r.delete(s);return this.size=r.size,e}var Bae=zae;function jae(s){return this.__data__.get(s)}var Fae=jae;function Uae(s){return this.__data__.has(s)}var Wae=Uae;function Vae(s){var r=typeof s;return s!=null&&(r=="object"||r=="function")}var Dn=Vae,$ae=pi,Yae=Dn,Gae="[object AsyncFunction]",Hae="[object Function]",Qae="[object GeneratorFunction]",qae="[object Proxy]";function Zae(s){if(!Yae(s))return!1;var r=$ae(s);return r==Hae||r==Qae||r==Gae||r==qae}var bv=Zae,Kae=Er,Xae=Kae["__core-js_shared__"],Jae=Xae,Ol=Jae,Ng=function(){var s=/[^.]+$/.exec(Ol&&Ol.keys&&Ol.keys.IE_PROTO||"");return s?"Symbol(src)_1."+s:""}();function _ae(s){return!!Ng&&Ng in s}var ece=_ae,tce=Function.prototype,rce=tce.toString;function nce(s){if(s!=null){try{return rce.call(s)}catch{}try{return s+""}catch{}}return""}var Ev=nce,ice=bv,sce=ece,oce=Dn,ace=Ev,cce=/[\\^$.*+?()[\]{}|]/g,lce=/^\[object .+?Constructor\]$/,uce=Function.prototype,hce=Object.prototype,dce=uce.toString,fce=hce.hasOwnProperty,gce=RegExp("^"+dce.call(fce).replace(cce,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function pce(s){if(!oce(s)||sce(s))return!1;var r=ice(s)?gce:lce;return r.test(ace(s))}var mce=pce;function yce(s,r){return s==null?void 0:s[r]}var vce=yce,Mce=mce,wce=vce;function Sce(s,r){var e=wce(s,r);return Mce(e)?e:void 0}var mi=Sce,Tce=mi,Cce=Er,Ice=Tce(Cce,"Map"),Kh=Ice,bce=mi,Ece=bce(Object,"create"),Ec=Ece,Og=Ec;function xce(){this.__data__=Og?Og(null):{},this.size=0}var Rce=xce;function kce(s){var r=this.has(s)&&delete this.__data__[s];return this.size-=r?1:0,r}var Ace=kce,Pce=Ec,Dce="__lodash_hash_undefined__",Lce=Object.prototype,Nce=Lce.hasOwnProperty;function Oce(s){var r=this.__data__;if(Pce){var e=r[s];return e===Dce?void 0:e}return Nce.call(r,s)?r[s]:void 0}var zce=Oce,Bce=Ec,jce=Object.prototype,Fce=jce.hasOwnProperty;function Uce(s){var r=this.__data__;return Bce?r[s]!==void 0:Fce.call(r,s)}var Wce=Uce,Vce=Ec,$ce="__lodash_hash_undefined__";function Yce(s,r){var e=this.__data__;return this.size+=this.has(s)?0:1,e[s]=Vce&&r===void 0?$ce:r,this}var Gce=Yce,Hce=Rce,Qce=Ace,qce=zce,Zce=Wce,Kce=Gce;function ts(s){var r=-1,e=s==null?0:s.length;for(this.clear();++r<e;){var t=s[r];this.set(t[0],t[1])}}ts.prototype.clear=Hce;ts.prototype.delete=Qce;ts.prototype.get=qce;ts.prototype.has=Zce;ts.prototype.set=Kce;var Xce=ts,zg=Xce,Jce=bc,_ce=Kh;function ele(){this.size=0,this.__data__={hash:new zg,map:new(_ce||Jce),string:new zg}}var tle=ele;function rle(s){var r=typeof s;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?s!=="__proto__":s===null}var nle=rle,ile=nle;function sle(s,r){var e=s.__data__;return ile(r)?e[typeof r=="string"?"string":"hash"]:e.map}var xc=sle,ole=xc;function ale(s){var r=ole(this,s).delete(s);return this.size-=r?1:0,r}var cle=ale,lle=xc;function ule(s){return lle(this,s).get(s)}var hle=ule,dle=xc;function fle(s){return dle(this,s).has(s)}var gle=fle,ple=xc;function mle(s,r){var e=ple(this,s),t=e.size;return e.set(s,r),this.size+=e.size==t?0:1,this}var yle=mle,vle=tle,Mle=cle,wle=hle,Sle=gle,Tle=yle;function rs(s){var r=-1,e=s==null?0:s.length;for(this.clear();++r<e;){var t=s[r];this.set(t[0],t[1])}}rs.prototype.clear=vle;rs.prototype.delete=Mle;rs.prototype.get=wle;rs.prototype.has=Sle;rs.prototype.set=Tle;var xv=rs,Cle=bc,Ile=Kh,ble=xv,Ele=200;function xle(s,r){var e=this.__data__;if(e instanceof Cle){var t=e.__data__;if(!Ile||t.length<Ele-1)return t.push([s,r]),this.size=++e.size,this;e=this.__data__=new ble(t)}return e.set(s,r),this.size=e.size,this}var Rle=xle,kle=bc,Ale=Oae,Ple=Bae,Dle=Fae,Lle=Wae,Nle=Rle;function ns(s){var r=this.__data__=new kle(s);this.size=r.size}ns.prototype.clear=Ale;ns.prototype.delete=Ple;ns.prototype.get=Dle;ns.prototype.has=Lle;ns.prototype.set=Nle;var Rv=ns;function Ole(s,r){for(var e=-1,t=s==null?0:s.length;++e<t&&r(s[e],e,s)!==!1;);return s}var zle=Ole,Ble=mi,jle=function(){try{var s=Ble(Object,"defineProperty");return s({},"",{}),s}catch{}}(),kv=jle,Bg=kv;function Fle(s,r,e){r=="__proto__"&&Bg?Bg(s,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):s[r]=e}var Av=Fle,Ule=Av,Wle=Zh,Vle=Object.prototype,$le=Vle.hasOwnProperty;function Yle(s,r,e){var t=s[r];(!($le.call(s,r)&&Wle(t,e))||e===void 0&&!(r in s))&&Ule(s,r,e)}var Pv=Yle,Gle=Pv,Hle=Av;function Qle(s,r,e,t){var n=!e;e||(e={});for(var i=-1,o=r.length;++i<o;){var a=r[i],c=t?t(e[a],s[a],a,e,s):void 0;c===void 0&&(c=s[a]),n?Hle(e,a,c):Gle(e,a,c)}return e}var Rc=Qle;function qle(s,r){for(var e=-1,t=Array(s);++e<s;)t[e]=r(e);return t}var Zle=qle,Kle=pi,Xle=zr,Jle="[object Arguments]";function _le(s){return Xle(s)&&Kle(s)==Jle}var eue=_le,jg=eue,tue=zr,Dv=Object.prototype,rue=Dv.hasOwnProperty,nue=Dv.propertyIsEnumerable,iue=jg(function(){return arguments}())?jg:function(s){return tue(s)&&rue.call(s,"callee")&&!nue.call(s,"callee")},Lv=iue,sue=Array.isArray,go=sue,Ra={exports:{}};function oue(){return!1}var aue=oue;Ra.exports;(function(s,r){var e=Er,t=aue,n=r&&!r.nodeType&&r,i=n&&!0&&s&&!s.nodeType&&s,o=i&&i.exports===n,a=o?e.Buffer:void 0,c=a?a.isBuffer:void 0,l=c||t;s.exports=l})(Ra,Ra.exports);var Xh=Ra.exports,cue=9007199254740991,lue=/^(?:0|[1-9]\d*)$/;function uue(s,r){var e=typeof s;return r=r??cue,!!r&&(e=="number"||e!="symbol"&&lue.test(s))&&s>-1&&s%1==0&&s<r}var hue=uue,due=9007199254740991;function fue(s){return typeof s=="number"&&s>-1&&s%1==0&&s<=due}var Nv=fue,gue=pi,pue=Nv,mue=zr,yue="[object Arguments]",vue="[object Array]",Mue="[object Boolean]",wue="[object Date]",Sue="[object Error]",Tue="[object Function]",Cue="[object Map]",Iue="[object Number]",bue="[object Object]",Eue="[object RegExp]",xue="[object Set]",Rue="[object String]",kue="[object WeakMap]",Aue="[object ArrayBuffer]",Pue="[object DataView]",Due="[object Float32Array]",Lue="[object Float64Array]",Nue="[object Int8Array]",Oue="[object Int16Array]",zue="[object Int32Array]",Bue="[object Uint8Array]",jue="[object Uint8ClampedArray]",Fue="[object Uint16Array]",Uue="[object Uint32Array]",ct={};ct[Due]=ct[Lue]=ct[Nue]=ct[Oue]=ct[zue]=ct[Bue]=ct[jue]=ct[Fue]=ct[Uue]=!0;ct[yue]=ct[vue]=ct[Aue]=ct[Mue]=ct[Pue]=ct[wue]=ct[Sue]=ct[Tue]=ct[Cue]=ct[Iue]=ct[bue]=ct[Eue]=ct[xue]=ct[Rue]=ct[kue]=!1;function Wue(s){return mue(s)&&pue(s.length)&&!!ct[gue(s)]}var Vue=Wue;function $ue(s){return function(r){return s(r)}}var kc=$ue,ka={exports:{}};ka.exports;(function(s,r){var e=Cv,t=r&&!r.nodeType&&r,n=t&&!0&&s&&!s.nodeType&&s,i=n&&n.exports===t,o=i&&e.process,a=function(){try{var c=n&&n.require&&n.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}}();s.exports=a})(ka,ka.exports);var Jh=ka.exports,Yue=Vue,Gue=kc,Fg=Jh,Ug=Fg&&Fg.isTypedArray,Hue=Ug?Gue(Ug):Yue,Ov=Hue,Que=Zle,que=Lv,Zue=go,Kue=Xh,Xue=hue,Jue=Ov,_ue=Object.prototype,ehe=_ue.hasOwnProperty;function the(s,r){var e=Zue(s),t=!e&&que(s),n=!e&&!t&&Kue(s),i=!e&&!t&&!n&&Jue(s),o=e||t||n||i,a=o?Que(s.length,String):[],c=a.length;for(var l in s)(r||ehe.call(s,l))&&!(o&&(l=="length"||n&&(l=="offset"||l=="parent")||i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||Xue(l,c)))&&a.push(l);return a}var zv=the,rhe=Object.prototype;function nhe(s){var r=s&&s.constructor,e=typeof r=="function"&&r.prototype||rhe;return s===e}var _h=nhe;function ihe(s,r){return function(e){return s(r(e))}}var Bv=ihe,she=Bv,ohe=she(Object.keys,Object),ahe=ohe,che=_h,lhe=ahe,uhe=Object.prototype,hhe=uhe.hasOwnProperty;function dhe(s){if(!che(s))return lhe(s);var r=[];for(var e in Object(s))hhe.call(s,e)&&e!="constructor"&&r.push(e);return r}var fhe=dhe,ghe=bv,phe=Nv;function mhe(s){return s!=null&&phe(s.length)&&!ghe(s)}var ed=mhe,yhe=zv,vhe=fhe,Mhe=ed;function whe(s){return Mhe(s)?yhe(s):vhe(s)}var td=whe,She=Rc,The=td;function Che(s,r){return s&&She(r,The(r),s)}var Ihe=Che;function bhe(s){var r=[];if(s!=null)for(var e in Object(s))r.push(e);return r}var Ehe=bhe,xhe=Dn,Rhe=_h,khe=Ehe,Ahe=Object.prototype,Phe=Ahe.hasOwnProperty;function Dhe(s){if(!xhe(s))return khe(s);var r=Rhe(s),e=[];for(var t in s)t=="constructor"&&(r||!Phe.call(s,t))||e.push(t);return e}var Lhe=Dhe,Nhe=zv,Ohe=Lhe,zhe=ed;function Bhe(s){return zhe(s)?Nhe(s,!0):Ohe(s)}var rd=Bhe,jhe=Rc,Fhe=rd;function Uhe(s,r){return s&&jhe(r,Fhe(r),s)}var Whe=Uhe,Aa={exports:{}};Aa.exports;(function(s,r){var e=Er,t=r&&!r.nodeType&&r,n=t&&!0&&s&&!s.nodeType&&s,i=n&&n.exports===t,o=i?e.Buffer:void 0,a=o?o.allocUnsafe:void 0;function c(l,u){if(u)return l.slice();var h=l.length,d=a?a(h):new l.constructor(h);return l.copy(d),d}s.exports=c})(Aa,Aa.exports);var Vhe=Aa.exports;function $he(s,r){var e=-1,t=s.length;for(r||(r=Array(t));++e<t;)r[e]=s[e];return r}var Yhe=$he;function Ghe(s,r){for(var e=-1,t=s==null?0:s.length,n=0,i=[];++e<t;){var o=s[e];r(o,e,s)&&(i[n++]=o)}return i}var jv=Ghe;function Hhe(){return[]}var Fv=Hhe,Qhe=jv,qhe=Fv,Zhe=Object.prototype,Khe=Zhe.propertyIsEnumerable,Wg=Object.getOwnPropertySymbols,Xhe=Wg?function(s){return s==null?[]:(s=Object(s),Qhe(Wg(s),function(r){return Khe.call(s,r)}))}:qhe,nd=Xhe,Jhe=Rc,_he=nd;function ede(s,r){return Jhe(s,_he(s),r)}var tde=ede;function rde(s,r){for(var e=-1,t=r.length,n=s.length;++e<t;)s[n+e]=r[e];return s}var id=rde,nde=Bv,ide=nde(Object.getPrototypeOf,Object),Uv=ide,sde=id,ode=Uv,ade=nd,cde=Fv,lde=Object.getOwnPropertySymbols,ude=lde?function(s){for(var r=[];s;)sde(r,ade(s)),s=ode(s);return r}:cde,Wv=ude,hde=Rc,dde=Wv;function fde(s,r){return hde(s,dde(s),r)}var gde=fde,pde=id,mde=go;function yde(s,r,e){var t=r(s);return mde(s)?t:pde(t,e(s))}var Vv=yde,vde=Vv,Mde=nd,wde=td;function Sde(s){return vde(s,wde,Mde)}var $v=Sde,Tde=Vv,Cde=Wv,Ide=rd;function bde(s){return Tde(s,Ide,Cde)}var Ede=bde,xde=mi,Rde=Er,kde=xde(Rde,"DataView"),Ade=kde,Pde=mi,Dde=Er,Lde=Pde(Dde,"Promise"),Nde=Lde,Ode=mi,zde=Er,Bde=Ode(zde,"Set"),Yv=Bde,jde=mi,Fde=Er,Ude=jde(Fde,"WeakMap"),Wde=Ude,Au=Ade,Pu=Kh,Du=Nde,Lu=Yv,Nu=Wde,Gv=pi,is=Ev,Vg="[object Map]",Vde="[object Object]",$g="[object Promise]",Yg="[object Set]",Gg="[object WeakMap]",Hg="[object DataView]",$de=is(Au),Yde=is(Pu),Gde=is(Du),Hde=is(Lu),Qde=is(Nu),Gn=Gv;(Au&&Gn(new Au(new ArrayBuffer(1)))!=Hg||Pu&&Gn(new Pu)!=Vg||Du&&Gn(Du.resolve())!=$g||Lu&&Gn(new Lu)!=Yg||Nu&&Gn(new Nu)!=Gg)&&(Gn=function(s){var r=Gv(s),e=r==Vde?s.constructor:void 0,t=e?is(e):"";if(t)switch(t){case $de:return Hg;case Yde:return Vg;case Gde:return $g;case Hde:return Yg;case Qde:return Gg}return r});var Ac=Gn,qde=Object.prototype,Zde=qde.hasOwnProperty;function Kde(s){var r=s.length,e=new s.constructor(r);return r&&typeof s[0]=="string"&&Zde.call(s,"index")&&(e.index=s.index,e.input=s.input),e}var Xde=Kde,Jde=Er,_de=Jde.Uint8Array,Hv=_de,Qg=Hv;function efe(s){var r=new s.constructor(s.byteLength);return new Qg(r).set(new Qg(s)),r}var sd=efe,tfe=sd;function rfe(s,r){var e=r?tfe(s.buffer):s.buffer;return new s.constructor(e,s.byteOffset,s.byteLength)}var nfe=rfe,ife=/\w*$/;function sfe(s){var r=new s.constructor(s.source,ife.exec(s));return r.lastIndex=s.lastIndex,r}var ofe=sfe,qg=fo,Zg=qg?qg.prototype:void 0,Kg=Zg?Zg.valueOf:void 0;function afe(s){return Kg?Object(Kg.call(s)):{}}var cfe=afe,lfe=sd;function ufe(s,r){var e=r?lfe(s.buffer):s.buffer;return new s.constructor(e,s.byteOffset,s.length)}var hfe=ufe,dfe=sd,ffe=nfe,gfe=ofe,pfe=cfe,mfe=hfe,yfe="[object Boolean]",vfe="[object Date]",Mfe="[object Map]",wfe="[object Number]",Sfe="[object RegExp]",Tfe="[object Set]",Cfe="[object String]",Ife="[object Symbol]",bfe="[object ArrayBuffer]",Efe="[object DataView]",xfe="[object Float32Array]",Rfe="[object Float64Array]",kfe="[object Int8Array]",Afe="[object Int16Array]",Pfe="[object Int32Array]",Dfe="[object Uint8Array]",Lfe="[object Uint8ClampedArray]",Nfe="[object Uint16Array]",Ofe="[object Uint32Array]";function zfe(s,r,e){var t=s.constructor;switch(r){case bfe:return dfe(s);case yfe:case vfe:return new t(+s);case Efe:return ffe(s,e);case xfe:case Rfe:case kfe:case Afe:case Pfe:case Dfe:case Lfe:case Nfe:case Ofe:return mfe(s,e);case Mfe:return new t;case wfe:case Cfe:return new t(s);case Sfe:return gfe(s);case Tfe:return new t;case Ife:return pfe(s)}}var Bfe=zfe,jfe=Dn,Xg=Object.create,Ffe=function(){function s(){}return function(r){if(!jfe(r))return{};if(Xg)return Xg(r);s.prototype=r;var e=new s;return s.prototype=void 0,e}}(),Ufe=Ffe,Wfe=Ufe,Vfe=Uv,$fe=_h;function Yfe(s){return typeof s.constructor=="function"&&!$fe(s)?Wfe(Vfe(s)):{}}var Gfe=Yfe,Hfe=Ac,Qfe=zr,qfe="[object Map]";function Zfe(s){return Qfe(s)&&Hfe(s)==qfe}var Kfe=Zfe,Xfe=Kfe,Jfe=kc,Jg=Jh,_g=Jg&&Jg.isMap,_fe=_g?Jfe(_g):Xfe,ege=_fe,tge=Ac,rge=zr,nge="[object Set]";function ige(s){return rge(s)&&tge(s)==nge}var sge=ige,oge=sge,age=kc,ep=Jh,tp=ep&&ep.isSet,cge=tp?age(tp):oge,Qv=cge;const lge=ln(Qv);var uge=Rv,hge=zle,dge=Pv,fge=Ihe,gge=Whe,pge=Vhe,mge=Yhe,yge=tde,vge=gde,Mge=$v,wge=Ede,Sge=Ac,Tge=Xde,Cge=Bfe,Ige=Gfe,bge=go,Ege=Xh,xge=ege,Rge=Dn,kge=Qv,Age=td,Pge=rd,Dge=1,Lge=2,Nge=4,qv="[object Arguments]",Oge="[object Array]",zge="[object Boolean]",Bge="[object Date]",jge="[object Error]",Zv="[object Function]",Fge="[object GeneratorFunction]",Uge="[object Map]",Wge="[object Number]",Kv="[object Object]",Vge="[object RegExp]",$ge="[object Set]",Yge="[object String]",Gge="[object Symbol]",Hge="[object WeakMap]",Qge="[object ArrayBuffer]",qge="[object DataView]",Zge="[object Float32Array]",Kge="[object Float64Array]",Xge="[object Int8Array]",Jge="[object Int16Array]",_ge="[object Int32Array]",epe="[object Uint8Array]",tpe="[object Uint8ClampedArray]",rpe="[object Uint16Array]",npe="[object Uint32Array]",ot={};ot[qv]=ot[Oge]=ot[Qge]=ot[qge]=ot[zge]=ot[Bge]=ot[Zge]=ot[Kge]=ot[Xge]=ot[Jge]=ot[_ge]=ot[Uge]=ot[Wge]=ot[Kv]=ot[Vge]=ot[$ge]=ot[Yge]=ot[Gge]=ot[epe]=ot[tpe]=ot[rpe]=ot[npe]=!0;ot[jge]=ot[Zv]=ot[Hge]=!1;function pa(s,r,e,t,n,i){var o,a=r&Dge,c=r&Lge,l=r&Nge;if(e&&(o=n?e(s,t,n,i):e(s)),o!==void 0)return o;if(!Rge(s))return s;var u=bge(s);if(u){if(o=Tge(s),!a)return mge(s,o)}else{var h=Sge(s),d=h==Zv||h==Fge;if(Ege(s))return pge(s,a);if(h==Kv||h==qv||d&&!n){if(o=c||d?{}:Ige(s),!a)return c?vge(s,gge(o,s)):yge(s,fge(o,s))}else{if(!ot[h])return n?s:{};o=Cge(s,h,a)}}i||(i=new uge);var f=i.get(s);if(f)return f;i.set(s,o),kge(s)?s.forEach(function(S){o.add(pa(S,r,e,S,s,i))}):xge(s)&&s.forEach(function(S,E){o.set(E,pa(S,r,e,E,s,i))});var g=l?c?wge:Mge:c?Pge:Age,y=u?void 0:g(s);return hge(y||s,function(S,E){y&&(E=S,S=s[E]),dge(o,E,pa(S,r,e,E,s,i))}),o}var ipe=pa,spe=ipe,ope=1,ape=4;function cpe(s){return spe(s,ope|ape)}var lpe=cpe;const ht=ln(lpe),upe={maxRetries:3,timeoutMs:15e3,retryIntervalMs:1e3};function od(s){const r={...upe,...s};if(r.maxRetries!==-1&&(!Number.isInteger(r.maxRetries)||r.maxRetries<0||r.maxRetries>10))throw new RangeError("backgroundImageLoadOptions.maxRetries must be -1 (infinite retry) or an integer from 0 to 10");if(r.maxRetries===-1&&(r.maxRetries=Number.POSITIVE_INFINITY),!Number.isFinite(r.timeoutMs)||r.timeoutMs<1e3||r.timeoutMs>12e4)throw new RangeError("backgroundImageLoadOptions.timeoutMs must be from 1000 to 120000");if(!Number.isFinite(r.retryIntervalMs)||r.retryIntervalMs<0||r.retryIntervalMs>3e4)throw new RangeError("backgroundImageLoadOptions.retryIntervalMs must be from 0 to 30000");return r}class hpe{constructor(r,e){x(this,"tasks",new Map);x(this,"failedTasks",new Map);x(this,"options");x(this,"queue",[]);x(this,"activeAttempts",0);x(this,"maxActiveAttempts",4);this.onEvent=e,this.options=od(r)}load(r){const e=this.keyOf(r);if(this.cancel(e),this.failedTasks.delete(e),!r.isActive())return Promise.resolve();const t={...r,key:e,attempt:0,generation:0,settled:!1};return this.tasks.set(e,t),this.enqueue(t),Promise.resolve()}cancelByViewScene(r,e){for(const t of this.tasks.values())t.viewId===r&&(!e||t.scenePath===e)&&this.cancel(t.key);for(const[t,n]of this.failedTasks)n.viewId===r&&(!e||n.scenePath===e)&&this.failedTasks.delete(t)}cancelResource(r,e,t){const n=this.keyOf({viewId:r,scenePath:e,resourceId:t});this.cancel(n),this.failedTasks.delete(n)}cancelAll(){for(const r of[...this.tasks.keys()])this.cancel(r);this.failedTasks.clear()}reload(r){var i;if(r.source!=="appliance")return{accepted:!1,reloadedCount:0,reason:"resourceNotFound"};const e=[...this.failedTasks.values()].filter(o=>o.viewId===r.viewId&&o.scenePath===r.scenePath);if(!e.length)return{accepted:!1,reloadedCount:0,reason:[...this.tasks.values()].some(a=>a.viewId===r.viewId&&a.scenePath===r.scenePath)?"alreadyLoading":"resourceNotFound"};const t=e.filter(o=>o.isActive());if(!t.length)return{accepted:!1,reloadedCount:0,reason:"sceneNotFocused"};let n=0;for(const o of t)this.failedTasks.delete(this.keyOf(o)),r.url&&((i=o.onReloadUrl)==null||i.call(o,r.url)),this.load(r.url?{...o,src:r.url}:o),n+=1;return{accepted:!0,reloadedCount:n}}keyOf(r){return`${r.viewId}\0${r.scenePath}\0${r.resourceId}`}async attempt(r){if(!this.canRun(r)){this.cancel(r.key);return}r.attempt+=1;const e=++r.generation;try{if(await this.loadImage(r,e),!this.canRun(r)||r.generation!==e)return;r.settled=!0,this.tasks.delete(r.key),this.emit(r,"success")}catch{if(!this.canRun(r)||r.generation!==e)return;if(this.options.maxRetries===-1||this.options.maxRetries===Number.POSITIVE_INFINITY||r.attempt<=this.options.maxRetries){const t=Math.floor(Math.random()*Math.min(100,this.options.retryIntervalMs));r.timer=setTimeout(()=>{r.timer=void 0,this.enqueue(r)},this.options.retryIntervalMs+t)}else r.settled=!0,this.tasks.delete(r.key),this.failedTasks.set(r.key,{viewId:r.viewId,scenePath:r.scenePath,resourceId:r.resourceId,src:r.src,image:r.image,isActive:r.isActive,onReloadUrl:r.onReloadUrl}),this.emit(r,"failed")}}enqueue(r){!this.canRun(r)||this.queue.includes(r)||(this.queue.push(r),this.drain())}drain(){for(;this.activeAttempts<this.maxActiveAttempts&&this.queue.length;){const r=this.queue.shift();this.canRun(r)&&(this.activeAttempts+=1,this.attempt(r).finally(()=>{this.activeAttempts-=1,this.drain()}))}}loadImage(r,e){return new Promise((t,n)=>{const i=r.image,o=()=>{r.timer&&(clearTimeout(r.timer),r.timer=void 0),i.onload=null,i.onerror=null,r.cancelAttempt=void 0};i.dataset.netlessBackgroundImageManaged="true",i.onload=()=>{o(),t()},i.onerror=()=>{o(),n(new Error("background image load failed"))},r.timer=setTimeout(()=>{o(),i.removeAttribute("src");const a=new Error("background image load timed out");a.name="TimeoutError",n(a)},this.options.timeoutMs),r.cancelAttempt=()=>{o(),n(new Error("background image load cancelled"))},r.generation===e&&(i.src=r.src)})}canRun(r){return!r.settled&&this.tasks.get(r.key)===r&&r.isActive()}cancel(r){var t;const e=this.tasks.get(r);!e||e.settled||(e.settled=!0,e.generation+=1,(t=e.cancelAttempt)==null||t.call(e),e.timer&&(clearTimeout(e.timer),e.timer=void 0),e.image.onload=null,e.image.onerror=null,e.image.removeAttribute("src"),this.tasks.delete(r),this.emit(e,"cancelled"))}emit(r,e){var t;try{(t=this.onEvent)==null||t.call(this,{name:"backgroundImageLoad",state:e,source:"appliance",resourceId:r.resourceId,resourceUrl:r.src,viewId:r.viewId,scenePath:r.scenePath})}catch(n){console.error("[backgroundImage] onBackgroundImageLoadEvent callback failed",n)}}}const dpe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAYISURBVHgB7ZpNSCtXFIBPEuvz+dMGpYUKD/sWFX+Qti6kK7Hqpm6e9q0rIoIUFUShPLV10VZx4+JZqa9v20LBhdq9fyBUCtKNPH8qYl2IOw3G38Rkek4y15y5uTOZJDOWggcOSSYzN/ebc+45554JwIM8iBCPyTEP+86T4vyMfsRN4b+nQTKIJp0vzuGvlpID7os8EQNEIBD4oKio6Bm9DwaDv/v9/n/076JgbtWUYPchwrW8qD7UnOvr6wFNkpubm+/wu7f0c7y6mrnlvQufxB0Iau7V1dX3BDA/P6/V1dVpzc3N2uLiIofK1c8VYHys/wRKBUN3/hGHqaysNOjc3FwMis6hc0FtLTHuvYLxCCZgci8uLn4wg5Gh6Fy8Jk+/NkcCAlAAuUkoW4g0B+d5tLS05O/r67O8eGxsDNra2uDy8nKsoKCAwCIQDxQa0yTxgrvCYXyTk5Ml+Orf2dlJeeHIyAigFSE/P38ELfUNqNdSkjgF5FF89jL1TU1NlQwODl5gZPujp6cHWltbUw7Koc7Pz8mkZpHPFeFrJuZeqLnoMoPoZqe0JjDP/IZgnyLUG/o8NDRkuo5Ua2pjY6MC4oFCFf1cA0oKzRSOp6enRfTaGh0d/QxBt+1CUVgnOTs7+xrHfQzGyOcKkK3QTJMnQffZ6e/v/xwttmsHqqmpKXbdycnJCxy7ABLh3FEgVZ6hZJhnFZoFFMF0d3c/w7v+dyookXBnZ2c/xvHfhriVcvXfdBRItsxjnOhYqjwjoAimq6vrCysoGofk+Ph4Esd/F/UdiFtJAGUd2DygTpp5dmBUUJ2dnc9VUALm8PDwJY7/BPU9VD8k3M4RC6kskxZMKigKIMLN9vf3p3H8DyWgfEhEOwOQD9IXOTz7EObbwsLC4YWFBRgeHrY9ECXYo6MjaGlpKWlsbPxkYGDgRW1tbSEWquVlZWXBzc3Nl1VVVa8hXiXc6ioqBqGaPDk7AACJTRZ3NS9lcUp86cJwoSQ7Pj4Op6enfxUXF3/V0NCQv7q6GsCvwrqGUG/01xAD4+VQTOxaSF43d5bBOisrGBJRCtXX17+/trb268rKSgASFgmz97KFkmo6OztWuVyPweiWGc4WRkhFRQVEIpHg8vJyQAIQVlLBROVxvBYQHsXnO8tk62ZcyN0wecLBwcEvYHSzEPscBqOLCRhLC4n9uqaA8UAWAcAKhtbQ3t7eTHl5+Y9gtAp3twhT056CDMQ7MRzIFTeTYKb1yYYVQFH9VdzsqNmYKpfTJBDX3Ixgdnd3XyHMT2AMALJlBBSPaMpNngrIsTyTCgaj288YDGakictrxizvKFNOjgSSBLS+vv6UYHDb7DgMVgsChjTEgCIKGG4ZU+EWkgNBzN1qamq+pAMTExPgFMzW1tZrhHkFyWE5KxgSszx0527RaDRmOSpRshEOU11dPQPG8CwHARHJlMnTSrwSRFIlfXt7m3V5ngJGuJtqzaQtZkFBVNJezN5ZAdmwjKo2k9tVtrcI3OXk4tPgcg7ChCDZ1URgMOu72Xa5VFHOkymQhWVU60YVmjN6wiC7k6p+S1syCACOwJBYFaexV+yhBekNPsMBO6KAEeE4BMaCU67RsoYhSbXgaT//ht709vZCaWmp6YkEbLFmVJWzas04+iBL7EKpm0J7duqu0B7+CTUpNJuyvb1NCfMj1CqI9wLKUOlOUMeG+gGFkHii4HizUF4z/KFUrPsJ8WbEIyx7nnZ0dDynME6BAuce09iFHo+GrnmGltltb2//E4wVAN82y7vOjKOZXSBhJdHNiT3TYWD8OY2PTUJkdd7MkJMnT5wZVQF2RFX6yBMUdzPMvvfqxz3sXHF+GNT9ANXit/10O1sgHkZvdQAOKvs9B5L7ARELGAAXLSTvM8QExTE+YbHe+HURhZp1aRyF4CJXClbbWwGketgkW9VsY+YaiBCVhfgE+XvxRwgZSM4jUVCDZFQ9pytmXR8hUTB2gnidx4XffVWydN0yQjwmx/jkAZJBrIBI5J7ZvQGZWUgVSuU/EqmOAzicKNMVu816DdRWUV1/7xAP8n+SfwF3Du3NF2sYhwAAAABJRU5ErkJggg==",fpe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAYAAADFeBvrAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgrSURBVHgB7ZprTBRXFIDP7gIt8lQppTwE5V0KaAn6o1pqNGkDDTEmTUhsgKRp+gNJw68CFkLbVC2QkDS+gD8KJdWmARvbFBNNWpuIRGPFWBXQRMPDqIki+KLATs+ZnTvcvXtnX8w2beJJToaduTP3fHPOPffcOwC8kP+2WCDwIvahGFxTuN8KmNSZmULPNjLeqF9F8rdPkIEGEn+r+vjx46LQ0NA8/Dsader58+e/h4WFDWntFO7ot6fMFAt3JLWi2lCDpqamCux2+2+KROj82NhYGrXT2lu5Z/DP/deFByElA4Pv3LlTiHY/nJ6eVnbv3q1s2bJFyc7OVrZu3arU1dUp4+PjxPUQoT+g9tp9PkMFgpo9kxljHRoaWp2Xl3duYmIiurKyEvDoclNCQgIcPnxYPc7MzHwcGRnZhaft4Ag7O9fUbRhaITCie4lgcnNzT7qDIaHz27dvh+vXr0NEREQneqoCHKFnAR+8ZCaQGGq2CxcurCGYycnJZHcwTNAzUFFRoUJFRUV1IFQ5OKBsXB9uxSwgl0TQ3d29Yt26dccwoyVXV1d7hGEiQmGi2AzOUHx/hob4K2yuYS9G987s7OwPISEh7xPM6dOnwVfBsIMjR45AZmbmo5s3b76Xnp7+J55egMVxBSAZT0v1ED+76yn66dOnLQSzd+9ev2BIyFP0MjBco1JTU/sxfFeDazp3cYgZHmKqdoaGNISHh9fv378fSJcqlPV6e3sBJ+I/goOD34VFL0k95Y+HxPHCYGxmw5DQ2NuzZw8EBQVtunXr1jvgwUP+hhz/QDXMMCNVE8zx48dNg2FCz6QQjI2N/RA8VBFmANnu3btXihnpG8pM9fX1EAi5du0aeWkVOAMBCF7yN+R0z4yOjq6NiYlpp9CgdBtIwXpPH6vgDKWLt0CygtM6MDCwBuUYZSKaOCksAiVY9wFOBePgDOOytPAGSKzNVCCC2bBhw69YdK7ypgpYimzbtk2dl7CM+hFcveOUHDylbTFO1YdhFbByx44dA1QFUP0VSJj4+Hjo6+sDq9U6iEmHKvFZTedQ50GYbN15SITVlwNlZWUnLRZL8s6dOwMOQ9UCTtKTra2ttdppt9V2kMF5cbmsjxuM43bMNrmUzc6fP6+GQiDGDoOJi4ubwb4qm5ubafyIE6nLxGqTPEsGo1cBOGNX0TyDYafC0CyOaxcVziyh53Z2dkJycvLMvn37PmpoaBgFR4jxYSbWdVIgI89Iq4CjR48CZjlYv369+tssqI6ODsjPz4f+/v668vLycxrEHHfkYdwC8SB6mGEV8Cl64cuuri5oa2tTG+EyGjZu3AiXLl1qefDgwV8lJSUFZkDV1tZCcXExXLx4sbWoqKgPFj0zx8GI9ZwO5W4M6ekZYeqpaqbqmaSqqkpNpcPDw4dwzfM9nrLduHEjEs+X0XV/Sx96LnqE1kLtBQUF3eDwCO8dGQyzV5rl+JyuegfXI29jRotiRlKnpFghHMzKyjqotVXS0tLacKPjF3bdHxjSq1evduAkepAD+ZsDYlC8V5w8ZBVg+PPq2MGMlkInqE4joTf45MmT4YyMjAPcA+ltLSQlJX2BafxnX6HI29QeK44TOTk57mCYZ0QoJ8OBM4yB6dkNkwGlSygsLFQvYtYB3BTMxFL+M+0eFgZqp4mJiU2+QKGX1fGIk/QIrn0aYXGsyDxjmAyMhO2jhaCGoUbX1NSkLSwsPMJqV8Fspu6lIZS6OYhjiOLwdU7fQM1HfRPD7wS1obZ0j0xpb4726Z49ezaJf2/S7s9ATUGNR41BjdJseRnke3WGwhrRTS9pD1mOGoeG15BxOOfoxuCkp0Ih6NeaEaSZGlieJyiCoc1FgsGldokGk8nBvAKOrWIGQ5uPsm0tt0BWDiicAaGuGhkZ+YqMw9StGzU4OKhCnT179hNsswY1FTXdE5QEJhc1S3tGogazXLOBwQSBl3tzIhQPtAL1VQJCTcNx8y1vHIUghSKFZE9PT7H2dlM1b+Wgrr1y5Uq77J75+fnplpaWMg2ch4nlYEI5z7hdensDpI4hrYNErcMMXJ32koG4ztf3pultz83NjWG99Ra2WQ0OL2VjZjwgeufUqVOqV8+cOdPIwdBLSNJeHg8TAh5WqJ6EfSmgt7IMNRJ1JThiOlnrOAMHshprmMKdoGSCpb9s3B3SYLIFGIqICJB7xisYi+RvfiypXw40DWGdlJaWRmMd141hk8V2OWm7ieYTXhBc3+BgaZyqAISjOYxSMVvXsBTNlzdiNQDgRao2AtK3pjggpmrqbGpqSsLPIN/dv38/gaBwUjTshMHcvn27JyUlpRmc5xpPMD599LIYnLNyUKKndKjGxsakXbt2deMCLIE8IVvs0YRM1fjdu3d/wrXN5+BcnzEgvor2uN3rjzAYMp5lPEoQlE5fA0fWo8GfhlCbKVFQ1pKNIfzcOHH58mWqaimVUwJI0+6n59D4pIlzmdZPMPiZzXjDjX47Le5g0Uu8x2zgPqWyKpjVe7x3+AUbq9NYjQbgp2dsBud5o8TP7d5kHAWcQchQfoEmLgn8HjOiBIF7o5hI1x6CEbLNP3bdqYAF44JzyWLzcN1i8DcT/o3awbm8Fz3DAy2A62INwPV/E3wWdx5inmBHuwChCBD6R2JwHge80TIQRQLjt7e8DTkGZgfX8cUMZTDAteFDkveaIlzjX9ySQs8X18r2t2VHUURPKoICmDR+eCO9aSdmOIub3/w9RgpgUpiJhvraXpa6jZKHGEqyusw0GLFzX+5RhN/8kYnMSNMMfyH/V/kHST6OYVElTPAAAAAASUVORK5CYII=",gpe="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAYAAABznEEcAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAZoSURBVHgB7VlLSCRXFL3ljNEhEXTGhMQJmOjCz8ZNVLKICz9xIYhCNi7UgINkGEk2En8hW5cBUQNxo05GAoKikuCAmvGzGMdPcCUGjDPxD/4Vv/3JvWW97luvq7ur+hMZ8MKlqrteNfe8e965970GuLVbC5kpJr53+hjHx9yY3TUxJgLMAQG4ITARfp5T4Mri4uL9q6urnxwOxz/oY5eXl1/Pzs7e195X2FX4jZsIhAK7gx5ps9m6nGj9/f3OtbU1pzAE0318fPwVjYHrrN7R3AjU/wpOBwA9Cmf/9ejoqDMtLU31iooKGdA+ATo4OMiXAEWAHhBAGEApXj4rPAik0vPt7e0vCgoKPH4gMzMTSktLIS8vD2JiYgABvcHMTZyennbHxsaOg3udOJmLzwqEYB0ZgRCZENm4u7e39yQuLq65srISZmZmvP5Ybm4u5OfnQ0lJyXWUCAgzNLS+vt6SnJz8WgvYwV5xSlcRgyVg3ha2Dkxzc3MvfZmVlQW+bGxsDBobGyE7O1u94uJPjIqKqklKSvrbbrfPnp+ff7e8vJwMnlSTKWfJjDKhywJo6wLp0YcZ+dyIUr7s4cOHLsrRlQwBTSBFuzc2NiZYhjjVAIyzZBqEwgCQv0OOM/gNzuiP/ijlDxBRjgClpqa6AF1cXDydmpoaLCws3JcAGYHyC4JMzoKaibKysvienp6FtrY2IA/WCFB5ebkqCHSvARo8Ozt7igIxwIJ2gJ+seFMnDoIyEUV+dHT0G3qWVUr5M043DdAB0m2IKZwAYpgZX+qkywR6NFbuR0iDxmAoZRUQKRxSLTMnJ8eIaqqSeVMnIYUOdu+sq6vrp4f+VCoYo8khZaNs01VRlERUu2/BrWAA7sl2Anink1Ao18JGjyY/PDx8hq1GZqgp5c2mp6chMjLy2b179x7hRzvoqeUUwXIzqq4O5nZsNUaEbIbLqPLTou/s7FTvT05OpsA9sXJG1AVsZDwjutqBIN6gUlWjxod8XRBNKXgsrqpqYZfwEqX9h8TExD7wbFm8LmzxHQ0QHSlXKZVSqFC/hkqlaKapTaGgCQTK7PHW1lb/wsLC86KiokkccoV+qV1tcE0pO7AWxmhTxBszDzqRr66ujqanp2cRpQLNBgUsCh8BwQ54bn5+/s+mpqa+4eHhfS1gb52vwuP0trPjhSZCBtLQ0NA3MDDQQIFYAUHBYhuvzjpVbJr1lZWVP3p7e19UVVXNgHumXYrI4uBx6Yqevz02b0FcRQ8CoBQF3dXVpQLZ3d39C7n+ora29vfJyclDYFnWgFyxK3cxhss/+KoT/N6DVkQpKypFGUCp3Ozo6HgSHx//GLW/BwHsg57zl5pzADajwLn52mPL1ZHPloMoRYPMFL6EhAR18e7s7MxVV1fPsAAp4Avteq7dC/c1+wKI4g+EfGzDM+EYHBw8RDrNiA2QL6upqVGvKJ2/gHu2L1nA5wwEB2YDfSYMO1x/px0cgEc2zBY+eo67u6H29vZ/wU2VC8l58JxKNjDOgojNEp08aFVfX++3l6JMEdDx8fEB0FNIBsDXBc8ArwuW1EkeI1RKdLWmCx+1DhkZGRvR0dFfSsHKxYtnW0iqvJAN9xNm6MR/QO5sfapUSkqKmqW5ubmfwVgyZdpw/vPZl2kUEAinBMSUStG+gwra0NDQSynQKyloIxnlewafjDFLJzLRBJqiFMnqyMgIbG5uDuD996Dnv8iAPOMAPmbcm5lVJwA/vZRMKZGZlpaWVtAvUL4GZMqE1fjRJrUd76LHoX+InlhcXPwZnWW2tra6jjrpiBM3UK/weQr6J+gfodMh9HtwncG7YLA3CMSsLmxx5WuDCt8B7vZeicInTjCWlpb6wc15mfey7oc9E8LElpVmMgb9AXoC+qcTExOPKRu4NlTHs6Q10GfhgfYOvRsJQZ76BWMKuDtaolQs+gfoH6Mn436gDg+e+5BKXUQx/C5Je/a+NpbeiQJPKgUdlNXx/BCBKxVdxW5Q0I3XBqFKRhU4KLtjYawi3csuTKdc4FnIXNvKUJkVEGRG20QZAAUpA5DbaYAQLmQzfzxyk/ffdnCD4NWVnGdE7kQBQvQHC5lVEDxgMaM29lkxGCNLKrDnIbFAMkFmBIaDkHstU41coGZ1TZD5UjReCGUAYbNgdNqoXZB/T67yYbFAMiGML3BhYeH8rb0t9h/zgcTBcTNGiQAAAABJRU5ErkJggg==",ppe="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M4%202.5V19L8.5%2014.5L11.5%2021L14.5%2019.5L11.5%2013H18L4%202.5Z'%20fill='%23212324'%20stroke='white'%20stroke-width='1.5'%20stroke-linejoin='round'/%3e%3c/svg%3e",mpe="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='26px'%20height='26px'%20viewBox='7%207%2026%2026'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3eshape-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-64.6%25'%20y='-59.5%25'%20width='229.3%25'%20height='246.1%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-344.000000,%20-751.000000)'%3e%3cg%20id='shape-cursor'%20transform='translate(344.000000,%20751.000000)'%3e%3crect%20id='矩形备份-44'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M20,21%20C20.4854103,21%2020.898085,21.3479993%2020.9899479,21.8654877%20L21,22%20L21,27%20C21,27.5522847%2020.5522847,28%2020,28%20C19.5145897,28%2019.101915,27.6520007%2019.0100521,27.1345123%20L19,27%20L19,22%20C19,21.4477153%2019.4477153,21%2020,21%20Z%20M27,19%20C27.5522847,19%2028,19.4477153%2028,20%20C28,20.4854103%2027.6520007,20.898085%2027.1345123,20.9899479%20L27,21%20L22,21%20C21.4477153,21%2021,20.5522847%2021,20%20C21,19.5145897%2021.3479993,19.101915%2021.8654877,19.0100521%20L22,19%20L27,19%20Z%20M18,19%20C18.5522847,19%2019,19.4477153%2019,20%20C19,20.4854103%2018.6520007,20.898085%2018.1345123,20.9899479%20L18,21%20L13,21%20C12.4477153,21%2012,20.5522847%2012,20%20C12,19.5145897%2012.3479993,19.101915%2012.8654877,19.0100521%20L13,19%20L18,19%20Z%20M20,12%20C20.4854103,12%2020.898085,12.3479993%2020.9899479,12.8654877%20L21,13%20L21,18%20C21,18.5522847%2020.5522847,19%2020,19%20C19.5145897,19%2019.101915,18.6520007%2019.0100521,18.1345123%20L19,18%20L19,13%20C19,12.4477153%2019.4477153,12%2020,12%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='18.5'%20y='17'%20width='3'%20height='6'%3e%3c/rect%3e%3crect%20id='矩形'%20fill='%23FFFFFF'%20x='17'%20y='18.5'%20width='6'%20height='3'%3e%3c/rect%3e%3cpath%20d='M20,21.5%20C20.2454599,21.5%2020.4496084,21.6768752%2020.4919443,21.9101244%20L20.5,22%20L20.5,27%20C20.5,27.2761424%2020.2761424,27.5%2020,27.5%20C19.7545401,27.5%2019.5503916,27.3231248%2019.5080557,27.0898756%20L19.5,27%20L19.5,22%20C19.5,21.7238576%2019.7238576,21.5%2020,21.5%20Z%20M27,19.5%20C27.2761424,19.5%2027.5,19.7238576%2027.5,20%20C27.5,20.2454599%2027.3231248,20.4496084%2027.0898756,20.4919443%20L27,20.5%20L22,20.5%20C21.7238576,20.5%2021.5,20.2761424%2021.5,20%20C21.5,19.7545401%2021.6768752,19.5503916%2021.9101244,19.5080557%20L22,19.5%20L27,19.5%20Z%20M18,19.5%20C18.2761424,19.5%2018.5,19.7238576%2018.5,20%20C18.5,20.2454599%2018.3231248,20.4496084%2018.0898756,20.4919443%20L18,20.5%20L13,20.5%20C12.7238576,20.5%2012.5,20.2761424%2012.5,20%20C12.5,19.7545401%2012.6768752,19.5503916%2012.9101244,19.5080557%20L13,19.5%20L18,19.5%20Z%20M20,12.5%20C20.2454599,12.5%2020.4496084,12.6768752%2020.4919443,12.9101244%20L20.5,13%20L20.5,18%20C20.5,18.2761424%2020.2761424,18.5%2020,18.5%20C19.7545401,18.5%2019.5503916,18.3231248%2019.5080557,18.0898756%20L19.5,18%20L19.5,13%20C19.5,12.7238576%2019.7238576,12.5%2020,12.5%20Z'%20id='形状结合'%20fill='%23212324'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",ype="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='26px'%20height='26px'%20viewBox='7%207%2026%2026'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3c!--%20Generator:%20Sketch%2060.1%20(88133)%20-%20https://sketch.com%20--%3e%3ctitle%3etext-cursor%3c/title%3e%3cdesc%3eCreated%20with%20Sketch.%3c/desc%3e%3cdefs%3e%3cpath%20d='M16,26.5%20C15.7238576,26.5%2015.5,26.2761424%2015.5,26%20C15.5,25.7545401%2015.6768752,25.5503916%2015.9101244,25.5080557%20L16,25.5%20L19.5,25.5%20L19.5,14.5%20L16,14.5%20C15.7238576,14.5%2015.5,14.2761424%2015.5,14%20C15.5,13.7545401%2015.6768752,13.5503916%2015.9101244,13.5080557%20L16,13.5%20L24,13.5%20C24.2761424,13.5%2024.5,13.7238576%2024.5,14%20C24.5,14.2454599%2024.3231248,14.4496084%2024.0898756,14.4919443%20L24,14.5%20L20.5,14.5%20L20.5,25.5%20L24,25.5%20C24.2761424,25.5%2024.5,25.7238576%2024.5,26%20C24.5,26.2454599%2024.3231248,26.4496084%2024.0898756,26.4919443%20L24,26.5%20L16,26.5%20Z'%20id='path-1'%3e%3c/path%3e%3cfilter%20x='-284.0%25'%20y='-81.5%25'%20width='668.1%25'%20height='293.9%25'%20filterUnits='objectBoundingBox'%20id='filter-2'%3e%3cfeMorphology%20radius='1'%20operator='dilate'%20in='SourceAlpha'%20result='shadowSpreadOuter1'%3e%3c/feMorphology%3e%3cfeOffset%20dx='0'%20dy='2'%20in='shadowSpreadOuter1'%20result='shadowOffsetOuter1'%3e%3c/feOffset%3e%3cfeGaussianBlur%20stdDeviation='3'%20in='shadowOffsetOuter1'%20result='shadowBlurOuter1'%3e%3c/feGaussianBlur%3e%3cfeComposite%20in='shadowBlurOuter1'%20in2='SourceAlpha'%20operator='out'%20result='shadowBlurOuter1'%3e%3c/feComposite%3e%3cfeColorMatrix%20values='0%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200%200.16%200'%20type='matrix'%20in='shadowBlurOuter1'%3e%3c/feColorMatrix%3e%3c/filter%3e%3c/defs%3e%3cg%20id='页面-4'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='Whiteboard-Guidelines'%20transform='translate(-388.000000,%20-672.000000)'%3e%3cg%20id='text-cursor'%20transform='translate(392.000000,%20672.000000)'%3e%3crect%20id='矩形备份-40'%20fill='%23FFFFFF'%20opacity='0.01'%20x='0'%20y='0'%20width='40'%20height='40'%20rx='2'%3e%3c/rect%3e%3cg%20id='形状结合'%20fill-rule='nonzero'%3e%3cuse%20fill='black'%20fill-opacity='1'%20filter='url(%23filter-2)'%20xlink:href='%23path-1'%3e%3c/use%3e%3cpath%20stroke='%23FFFFFF'%20stroke-width='1'%20d='M19,25%20L19,15%20L16,15%20C15.4477153,15%2015,14.5522847%2015,14%20C15,13.5145897%2015.3479993,13.101915%2015.8654877,13.0100521%20L16,13%20L24,13%20C24.5522847,13%2025,13.4477153%2025,14%20C25,14.4854103%2024.6520007,14.898085%2024.1345123,14.9899479%20L24,15%20L21,15%20L21,25%20L24,25%20C24.5522847,25%2025,25.4477153%2025,26%20C25,26.4854103%2024.6520007,26.898085%2024.1345123,26.9899479%20L24,27%20L16,27%20C15.4477153,27%2015,26.5522847%2015,26%20C15,25.5145897%2015.3479993,25.101915%2015.8654877,25.0100521%20L16,25%20L19,25%20Z'%20fill='%23212324'%20fill-rule='evenodd'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",kr=Object.freeze([12,14,18,24,36,48,64,80,144,288]),bi=["top","topLeft","topRight","bottom","bottomLeft","bottomRight","left","leftTop","leftBottom","right","rightTop","rightBottom"],Ms=new Map([["selector","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKeSURBVHgB3VTLi1JhFD86zlQ4ysxSXAy1GWYZzMxmYAhHagRB/QN8FLqPFq4FIQhXkS6kTQ4t2ilIKEWgSS0SmVpIm0BdaBJSaOP78XU+PXey6+saburAD+73uL/feX0H4H81GQdj7D7ilrCGFRonk3c6nXvhcJiFQiGWy+Xy/X7/WbPZ1K1KkBOsl0qlO36/n+3t7Q1hs9kYF+WC3W73MTpxc1lBmej7KuJaoVDInZ6eqsWXDw4OwGKxwPHx8Se1Wn1Wr9cjW1tbOTxi9D9bJCJHXEFslsvlR263+246nYZZptPpQK/Xg8lkSvZ6vbNGo5EgQRCLiSPhIqpoNHobo3keCARgkalUKjg5ORlGuL+/n8T6PVAqlefjYmKRdYQSsZ3P5z8aDAYVLGFarRbi8fhbhUKhx2VPEJGP3eEbfTrs4MUwr4EU49FYrVbweDy1SqXyipy95FaI7g8QXS6SyWReHx4e2ubVBc+HtTk6OjqvVqtvvF7vi0gkUiSByyyJ21BGwpswJ2Vmsxlw/0Kj0bxMJBJJl8vFPWkhGogLQoeyMhEJo2jGUzYRjcPh+Op0Oq2pVOoHkXE0SahF/w+E+3KYNEaX2pSyiSiKxeJTFPiGyyriO6FKEUgSESLp4ht4bzQaf4pFYrHYO/ysEXGNyJtjKRqM/zNNhFuf0B7vst3dXdjZ2Yn4fL4vRFwn8jaMGqYPU179LBEGf3bZcNNutwPOtScwKnCLPJ9KLMWEh7mNuIFdVsNXzbBNP+D6Ou1vwAqm8hqMWlmbzWYf4mz6HAwGzbjWwGgqrEklmucJT+UGCfG3wiPjueeNwGvB0zkAid7OMmF8CyOck/I6NJcR4KZYcM6J2vCbUGhvyQIA0gonzCEZkQud9Fcd9W/bL57cJu3lkjuNAAAAAElFTkSuQmCC"],["pencil","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ2SURBVHgB7ZXPqxJRFMfvjI4F+cqkTcrjge9B+B+0LJQ27lq4ijZprly6DaF1COKPjYRrVy0CF/aof6Baa6ChOPkLFcdMm1+dM93RafzxZuptgnfgC3ecO+dzz497JOTKNsZMp9OAoihvZFku4xp/I5dsbL/fP221Wl/D4bCKwnWn0znDd+SSDE/N6ZBgMKjJBNuKzC4dHTgQ5PF4bququn7R7XZJPB4/kSTpHcBOiQlmJ6cMpCvAcdz5ZDJhF4tF1u12v4jFYkc8z683+f1+Uq1W38K+x/AogVQ7ETF4SnB+Ho1GTxKJxDFC2u32q1KpJPh8vvVGjHK5XM4xahv+tYgRcranJrNarfay2WwKoVBIRTUajW42m70P390EOYmFrOEGdhfECEMIwur1Og+p5VOp1CP47piCOB3EXBBJAIuLRcZi7zKsSaVSEbxe70N4FEEL0AyE6VuBZEJD2wmyAkHDmoxGIwGW36ljBP2gUEXf5/wXCDZBsVjky+XyUwpCyBL0k0ai7gNp3WUVUigUvgHoWSaTaRoi2YJojk1r52q1eh2JRJ5YgUB3Pc/n83WyXRPV/A1rWrtgSAZsQL6Q3ynTI1F2QdCMqXNQEGsDMqMgrMt6ChwCaXcGYdBFjA3InELkQxBCtkcEI4riHyPFCMnlcnEKMbYzQhRi0TCKa6A76XT6wWAweD8ejz8Oh8PPcEc+9Xq9D8lkMgLv74Hugo5ALmJzlumG4+IG6BZ1dJ06wtPqN14gmza2FYljD1SljrCTsAaYpjnZFP7CmpADEel/ai4qffLiqSUKFSlEP8xfgYwwlmzyr1KYHoUtgBU4Y9D/Y78AxCeE/aWoyrkAAAAASUVORK5CYII="],["eraser","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANKSURBVHgB1VTdS5NhFD/7iuXa8KNw7SK/IjBYo13soqvEITENtj9AwZiCOCTvQrNWF9rFFPGLrC1iF10Oiy68mBSUF2KB4YabhKKyTfFCc+3Lzb2ds72LsfbxCkZ04Mf7Puc5z/k95+M5AP+R8OAvCW9nZ6cyHo8/SSaTc4RQKKQ+S0JyxFtbW6va39//ZjKZmMbGRkar1TJOp5MhYtwXwBkQkgMROnyXIcmGw+FgYrHY00JkQm4cqYPCaDQ6ZrFY7i4sLPxhMDg4SJ8hTOOWRCJ5jf8npyUiEgE6eGy1Wk12u72gIZHJZDLr4eHhVnl5+YdsslL5pH1+JBIx22y2h9PT01BKpFIpLC4ufhKJRFpcxhEM6fmlSMLh8P35+XlOJCTBYBC2t7dr8fdctv+iRHjI4HK5LAMDA8BVFAoFyOVyH/6KIKsxCtVIgC188+Dg4CV2GJxGpqamYHR09AHklEWQY5d6K/gg67HD3huNRrlKpYLNzU3gIsPDw8Dn84fa29s/4zIK6Rol8xIhSUMikXB2dXXV4AHo6en5KhaLFcvLy0VJent7QaPRzKrV6le4DCEi2UTCnGgE1dXVj3Q6XY1er08drKiosK2urnbjnrFQQxBJU1PTC3y4kyxJGHEMWe2dTUSNIcLZVXl0dAStra3BiYmJOTqgVCqfu91uull3LhlFjbZv6urqiCTIElHaEsC2dq4QqXRlZeUePsrUDFtfX/eZzebbqL+GuIFks1js32OHRtHu7u5H3FMiahFViPNQYuZRO8oQVzY2NibJocFgYAKBgLuzs/M66hsQKuzELx0dHak9rKe3paXlFurrERdZEiGUGARkcAFxmSJAJ/aRkRGGnOKwdPn9/rG9vT0HXaC5uZnxer3+vr4+HdpeRVxClBWLJFuZqhF7gAjL0PGz8fFxvcfjSY0WevVUv5mZmQDWyog1/I52PyBdlxgUqUu+qMSQznVtW1ubBlP3dmlpicnA5/N5+vv770C6bhS9lEu6eHnWFP45NioJS5xxRLdNsrenKH5CusNOWH1BEeTRMTnI6MgZpYYeYhhOmS5eEX0mMhELPktGoBd/zCWSUkTAOs4QZqZ8JsokS8Kp8KWICtlwdv5P5BchBHaEIRURoQAAAABJRU5ErkJggg=="],["text","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDdweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDcgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT50ZXh0LWN1cnNvcjwvdGl0bGU+CiAgICA8ZGVzYz5DcmVhdGVkIHdpdGggU2tldGNoLjwvZGVzYz4KICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGQ9Ik0xNiwyNi41IEMxNS43MjM4NTc2LDI2LjUgMTUuNSwyNi4yNzYxNDI0IDE1LjUsMjYgQzE1LjUsMjUuNzU0NTQwMSAxNS42NzY4NzUyLDI1LjU1MDM5MTYgMTUuOTEwMTI0NCwyNS41MDgwNTU3IEwxNiwyNS41IEwxOS41LDI1LjUgTDE5LjUsMTQuNSBMMTYsMTQuNSBDMTUuNzIzODU3NiwxNC41IDE1LjUsMTQuMjc2MTQyNCAxNS41LDE0IEMxNS41LDEzLjc1NDU0MDEgMTUuNjc2ODc1MiwxMy41NTAzOTE2IDE1LjkxMDEyNDQsMTMuNTA4MDU1NyBMMTYsMTMuNSBMMjQsMTMuNSBDMjQuMjc2MTQyNCwxMy41IDI0LjUsMTMuNzIzODU3NiAyNC41LDE0IEMyNC41LDE0LjI0NTQ1OTkgMjQuMzIzMTI0OCwxNC40NDk2MDg0IDI0LjA4OTg3NTYsMTQuNDkxOTQ0MyBMMjQsMTQuNSBMMjAuNSwxNC41IEwyMC41LDI1LjUgTDI0LDI1LjUgQzI0LjI3NjE0MjQsMjUuNSAyNC41LDI1LjcyMzg1NzYgMjQuNSwyNiBDMjQuNSwyNi4yNDU0NTk5IDI0LjMyMzEyNDgsMjYuNDQ5NjA4NCAyNC4wODk4NzU2LDI2LjQ5MTk0NDMgTDI0LDI2LjUgTDE2LDI2LjUgWiIgaWQ9InBhdGgtMSI+PC9wYXRoPgogICAgICAgIDxmaWx0ZXIgeD0iLTI4NC4wJSIgeT0iLTgxLjUlIiB3aWR0aD0iNjY4LjElIiBoZWlnaHQ9IjI5My45JSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZmlsdGVyLTIiPgogICAgICAgICAgICA8ZmVNb3JwaG9sb2d5IHJhZGl1cz0iMSIgb3BlcmF0b3I9ImRpbGF0ZSIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd1NwcmVhZE91dGVyMSI+PC9mZU1vcnBob2xvZ3k+CiAgICAgICAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjIiIGluPSJzaGFkb3dTcHJlYWRPdXRlcjEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIzIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29tcG9zaXRlPgogICAgICAgICAgICA8ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgIDAgMCAwIDAgMCAgMCAwIDAgMC4xNiAwIiB0eXBlPSJtYXRyaXgiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgPC9maWx0ZXI+CiAgICA8L2RlZnM+CiAgICA8ZyBpZD0i6aG16Z2iLTQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJXaGl0ZWJvYXJkLUd1aWRlbGluZXMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zODguMDAwMDAwLCAtNjcyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0idGV4dC1jdXJzb3IiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM5Mi4wMDAwMDAsIDY3Mi4wMDAwMDApIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70tNDAiIGZpbGw9IiNGRkZGRkYiIG9wYWNpdHk9IjAuMDEiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxnIGlkPSLlvaLnirbnu5PlkIgiIGZpbGwtcnVsZT0ibm9uemVybyI+CiAgICAgICAgICAgICAgICAgICAgPHVzZSBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIxIiBmaWx0ZXI9InVybCgjZmlsdGVyLTIpIiB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMSIgZD0iTTE5LDI1IEwxOSwxNSBMMTYsMTUgQzE1LjQ0NzcxNTMsMTUgMTUsMTQuNTUyMjg0NyAxNSwxNCBDMTUsMTMuNTE0NTg5NyAxNS4zNDc5OTkzLDEzLjEwMTkxNSAxNS44NjU0ODc3LDEzLjAxMDA1MjEgTDE2LDEzIEwyNCwxMyBDMjQuNTUyMjg0NywxMyAyNSwxMy40NDc3MTUzIDI1LDE0IEMyNSwxNC40ODU0MTAzIDI0LjY1MjAwMDcsMTQuODk4MDg1IDI0LjEzNDUxMjMsMTQuOTg5OTQ3OSBMMjQsMTUgTDIxLDE1IEwyMSwyNSBMMjQsMjUgQzI0LjU1MjI4NDcsMjUgMjUsMjUuNDQ3NzE1MyAyNSwyNiBDMjUsMjYuNDg1NDEwMyAyNC42NTIwMDA3LDI2Ljg5ODA4NSAyNC4xMzQ1MTIzLDI2Ljk4OTk0NzkgTDI0LDI3IEwxNiwyNyBDMTUuNDQ3NzE1MywyNyAxNSwyNi41NTIyODQ3IDE1LDI2IEMxNSwyNS41MTQ1ODk3IDE1LjM0Nzk5OTMsMjUuMTAxOTE1IDE1Ljg2NTQ4NzcsMjUuMDEwMDUyMSBMMTYsMjUgTDE5LDI1IFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4="],["shape","data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iNDBweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwIDAgNDAgNDAiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CiAgICA8IS0tIEdlbmVyYXRvcjogU2tldGNoIDYwLjEgKDg4MTMzKSAtIGh0dHBzOi8vc2tldGNoLmNvbSAtLT4KICAgIDx0aXRsZT5zaGFwZS1jdXJzb3I8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0icGF0aC0xIj48L3BhdGg+CiAgICAgICAgPGZpbHRlciB4PSItNjQuNiUiIHk9Ii01OS41JSIgd2lkdGg9IjIyOS4zJSIgaGVpZ2h0PSIyNDYuMSUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImZpbHRlci0yIj4KICAgICAgICAgICAgPGZlTW9ycGhvbG9neSByYWRpdXM9IjEiIG9wZXJhdG9yPSJkaWxhdGUiIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dTcHJlYWRPdXRlcjEiPjwvZmVNb3JwaG9sb2d5PgogICAgICAgICAgICA8ZmVPZmZzZXQgZHg9IjAiIGR5PSIyIiBpbj0ic2hhZG93U3ByZWFkT3V0ZXIxIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSI+PC9mZU9mZnNldD4KICAgICAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMyIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIj48L2ZlR2F1c3NpYW5CbHVyPgogICAgICAgICAgICA8ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbXBvc2l0ZT4KICAgICAgICAgICAgPGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgICAwIDAgMCAwIDAgICAwIDAgMCAwIDAgIDAgMCAwIDAuMTYgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSI+PC9mZUNvbG9yTWF0cml4PgogICAgICAgIDwvZmlsdGVyPgogICAgPC9kZWZzPgogICAgPGcgaWQ9Iumhtemdoi00IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0iV2hpdGVib2FyZC1HdWlkZWxpbmVzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzQ0LjAwMDAwMCwgLTc1MS4wMDAwMDApIj4KICAgICAgICAgICAgPGcgaWQ9InNoYXBlLWN1cnNvciIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQ0LjAwMDAwMCwgNzUxLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS00NCIgZmlsbD0iI0ZGRkZGRiIgb3BhY2l0eT0iMC4wMSIgeD0iMCIgeT0iMCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiByeD0iMiI+PC9yZWN0PgogICAgICAgICAgICAgICAgPGcgaWQ9IuW9oueKtue7k+WQiCIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgICAgICAgICA8dXNlIGZpbGw9ImJsYWNrIiBmaWxsLW9wYWNpdHk9IjEiIGZpbHRlcj0idXJsKCNmaWx0ZXItMikiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZT0iI0ZGRkZGRiIgc3Ryb2tlLXdpZHRoPSIxIiBkPSJNMjAsMjEgQzIwLjQ4NTQxMDMsMjEgMjAuODk4MDg1LDIxLjM0Nzk5OTMgMjAuOTg5OTQ3OSwyMS44NjU0ODc3IEwyMSwyMiBMMjEsMjcgQzIxLDI3LjU1MjI4NDcgMjAuNTUyMjg0NywyOCAyMCwyOCBDMTkuNTE0NTg5NywyOCAxOS4xMDE5MTUsMjcuNjUyMDAwNyAxOS4wMTAwNTIxLDI3LjEzNDUxMjMgTDE5LDI3IEwxOSwyMiBDMTksMjEuNDQ3NzE1MyAxOS40NDc3MTUzLDIxIDIwLDIxIFogTTI3LDE5IEMyNy41NTIyODQ3LDE5IDI4LDE5LjQ0NzcxNTMgMjgsMjAgQzI4LDIwLjQ4NTQxMDMgMjcuNjUyMDAwNywyMC44OTgwODUgMjcuMTM0NTEyMywyMC45ODk5NDc5IEwyNywyMSBMMjIsMjEgQzIxLjQ0NzcxNTMsMjEgMjEsMjAuNTUyMjg0NyAyMSwyMCBDMjEsMTkuNTE0NTg5NyAyMS4zNDc5OTkzLDE5LjEwMTkxNSAyMS44NjU0ODc3LDE5LjAxMDA1MjEgTDIyLDE5IEwyNywxOSBaIE0xOCwxOSBDMTguNTUyMjg0NywxOSAxOSwxOS40NDc3MTUzIDE5LDIwIEMxOSwyMC40ODU0MTAzIDE4LjY1MjAwMDcsMjAuODk4MDg1IDE4LjEzNDUxMjMsMjAuOTg5OTQ3OSBMMTgsMjEgTDEzLDIxIEMxMi40NDc3MTUzLDIxIDEyLDIwLjU1MjI4NDcgMTIsMjAgQzEyLDE5LjUxNDU4OTcgMTIuMzQ3OTk5MywxOS4xMDE5MTUgMTIuODY1NDg3NywxOS4wMTAwNTIxIEwxMywxOSBMMTgsMTkgWiBNMjAsMTIgQzIwLjQ4NTQxMDMsMTIgMjAuODk4MDg1LDEyLjM0Nzk5OTMgMjAuOTg5OTQ3OSwxMi44NjU0ODc3IEwyMSwxMyBMMjEsMTggQzIxLDE4LjU1MjI4NDcgMjAuNTUyMjg0NywxOSAyMCwxOSBDMTkuNTE0NTg5NywxOSAxOS4xMDE5MTUsMTguNjUyMDAwNyAxOS4wMTAwNTIxLDE4LjEzNDUxMjMgTDE5LDE4IEwxOSwxMyBDMTksMTIuNDQ3NzE1MyAxOS40NDc3MTUzLDEyIDIwLDEyIFoiIGZpbGw9IiMyMTIzMjQiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9oiIgZmlsbD0iI0ZGRkZGRiIgeD0iMTguNSIgeT0iMTciIHdpZHRoPSIzIiBoZWlnaHQ9IjYiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIGZpbGw9IiNGRkZGRkYiIHg9IjE3IiB5PSIxOC41IiB3aWR0aD0iNiIgaGVpZ2h0PSIzIj48L3JlY3Q+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjAsMjEuNSBDMjAuMjQ1NDU5OSwyMS41IDIwLjQ0OTYwODQsMjEuNjc2ODc1MiAyMC40OTE5NDQzLDIxLjkxMDEyNDQgTDIwLjUsMjIgTDIwLjUsMjcgQzIwLjUsMjcuMjc2MTQyNCAyMC4yNzYxNDI0LDI3LjUgMjAsMjcuNSBDMTkuNzU0NTQwMSwyNy41IDE5LjU1MDM5MTYsMjcuMzIzMTI0OCAxOS41MDgwNTU3LDI3LjA4OTg3NTYgTDE5LjUsMjcgTDE5LjUsMjIgQzE5LjUsMjEuNzIzODU3NiAxOS43MjM4NTc2LDIxLjUgMjAsMjEuNSBaIE0yNywxOS41IEMyNy4yNzYxNDI0LDE5LjUgMjcuNSwxOS43MjM4NTc2IDI3LjUsMjAgQzI3LjUsMjAuMjQ1NDU5OSAyNy4zMjMxMjQ4LDIwLjQ0OTYwODQgMjcuMDg5ODc1NiwyMC40OTE5NDQzIEwyNywyMC41IEwyMiwyMC41IEMyMS43MjM4NTc2LDIwLjUgMjEuNSwyMC4yNzYxNDI0IDIxLjUsMjAgQzIxLjUsMTkuNzU0NTQwMSAyMS42NzY4NzUyLDE5LjU1MDM5MTYgMjEuOTEwMTI0NCwxOS41MDgwNTU3IEwyMiwxOS41IEwyNywxOS41IFogTTE4LDE5LjUgQzE4LjI3NjE0MjQsMTkuNSAxOC41LDE5LjcyMzg1NzYgMTguNSwyMCBDMTguNSwyMC4yNDU0NTk5IDE4LjMyMzEyNDgsMjAuNDQ5NjA4NCAxOC4wODk4NzU2LDIwLjQ5MTk0NDMgTDE4LDIwLjUgTDEzLDIwLjUgQzEyLjcyMzg1NzYsMjAuNSAxMi41LDIwLjI3NjE0MjQgMTIuNSwyMCBDMTIuNSwxOS43NTQ1NDAxIDEyLjY3Njg3NTIsMTkuNTUwMzkxNiAxMi45MTAxMjQ0LDE5LjUwODA1NTcgTDEzLDE5LjUgTDE4LDE5LjUgWiBNMjAsMTIuNSBDMjAuMjQ1NDU5OSwxMi41IDIwLjQ0OTYwODQsMTIuNjc2ODc1MiAyMC40OTE5NDQzLDEyLjkxMDEyNDQgTDIwLjUsMTMgTDIwLjUsMTggQzIwLjUsMTguMjc2MTQyNCAyMC4yNzYxNDI0LDE4LjUgMjAsMTguNSBDMTkuNzU0NTQwMSwxOC41IDE5LjU1MDM5MTYsMTguMzIzMTI0OCAxOS41MDgwNTU3LDE4LjA4OTg3NTYgTDE5LjUsMTggTDE5LjUsMTMgQzE5LjUsMTIuNzIzODU3NiAxOS43MjM4NTc2LDEyLjUgMjAsMTIuNSBaIiBpZD0i5b2i54q257uT5ZCIIiBmaWxsPSIjMjEyMzI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+"]]),ad=new Map([["selector",{key:"selector",standardResolution:Ms.get("selector"),highResolution:gpe}],["shapeSynced",{key:"shape",standardResolution:mpe}],["textSynced",{key:"text",standardResolution:ype}],["pencil",{key:"pencil",standardResolution:Ms.get("pencil"),highResolution:dpe}],["eraser",{key:"eraser",standardResolution:Ms.get("eraser"),highResolution:fpe}],["text",{key:"text",standardResolution:Ms.get("text")}],["shape",{key:"shape",standardResolution:Ms.get("shape")}],["clicker",{key:"clicker",standardResolution:ppe}]]),Zr={enable:!0,expirationTime:5e3,moveDelayTime:40,preloadTimeout:5e3,appearance:{},syncedLabel:{enableShowName:!0,placement:"top",gap:2,maxWidth:88}};function cd(s){var e,t,n,i;const r={...s==null?void 0:s.appearance};return delete r[De.hand],delete r[De.laserPointer],{enable:(s==null?void 0:s.enable)??Zr.enable,expirationTime:(s==null?void 0:s.expirationTime)??Zr.expirationTime,moveDelayTime:(s==null?void 0:s.moveDelayTime)??Zr.moveDelayTime,preloadTimeout:typeof(s==null?void 0:s.preloadTimeout)=="number"&&Number.isFinite(s.preloadTimeout)&&s.preloadTimeout>0?s.preloadTimeout:Zr.preloadTimeout,appearance:r,syncedLabel:{enableShowName:((e=s==null?void 0:s.syncedLabel)==null?void 0:e.enableShowName)??Zr.syncedLabel.enableShowName,placement:((t=s==null?void 0:s.syncedLabel)==null?void 0:t.placement)??Zr.syncedLabel.placement,gap:((n=s==null?void 0:s.syncedLabel)==null?void 0:n.gap)??Zr.syncedLabel.gap,maxWidth:((i=s==null?void 0:s.syncedLabel)==null?void 0:i.maxWidth)??Zr.syncedLabel.maxWidth}}}function vpe(s,r){var e,t;return((t=(e=s.appearance[r])==null?void 0:e.synced)==null?void 0:t.enableShowName)??s.syncedLabel.enableShowName}function Mpe(s,r){return{...s,...r,cursor:cd(r==null?void 0:r.cursor)}}const Xv=500;function Pc(s){return typeof s!="number"||!Number.isFinite(s)||s<=0?Xv:Math.max(1,Math.floor(s))}const Dc="1.1.43-beta.4",wpe="@netless/appliance-plugin",Spe=typeof __RENDER_RUNTIME_BUILD_MARKER__=="string"?__RENDER_RUNTIME_BUILD_MARKER__:"",Ou=5e3,Tpe=1e4,Cpe=1e4;if(typeof window<"u"){let s=window.__netlessUA||"";s+=` ${wpe}@${Dc}`,window.__netlessUA=s}const He={useWorker:"auto",useSimple:!0,workerRenderModeBlacklist:{},workerCanvasContextBlacklist:{},workerMaskTextureFormatBlacklist:{},workerMaskTextureUploadBlacklist:{},fontFaceFallbackBlacklist:{iosWebView:{12:Js.RefreshTextRender}},useBackgroundThread:!1,syncOpt:{interval:300,smoothSync:!0},syncLogger:{batchWindowMs:4e3},cursor:{...Zr},bufferSize:{full:4e3,sub:600},bezier:{enable:!1,maxDrawCount:1/0,combineUnitTime:300},pencilEraser:{useBitMap:!0,fullLayerDoingMaskMaxInputPoints:Xv,removeOnDone:!0,maxImageWidth:1920,maxImageHeight:1920},strokeWidth:{min:1,max:10},textEditor:{showFloatBar:!0,canSelectorSwitch:!0,rightBoundBreak:!0,extendFontFaces:[],loadFontFacesTimeout:2e4},longDottedStroke:{lineCap:"round",segment:1,gap:2},dottedStroke:{lineCap:"round",segment:1,gap:2},normalStroke:{lineCap:"round"},undoRedo:{enableGlobal:!1,maxStackLength:20,timingFix:!0,ackTimeout:Ou},markmap:{enable:!0,timeout:1e4,options:{autoFit:!0,duration:0,zoom:!1,pan:!1,maxInitialScale:10}},overwriteSelectorStyles:{},backgroundImageLoadOptions:od()},Ln=(s,r,e)=>({images:ad.get(s),size:{width:26,height:26},offset:{x:0,y:0},local:{size:r,offset:e},synced:{}}),rp={...Ln("pencil",{width:26,height:26},{x:-2,y:4}),synced:{offset:{x:0,y:9}}},Ipe={...Ln("selector",{width:25,height:25},{x:-5,y:21}),synced:{offset:{x:0,y:26}}},bpe={...Ln("eraser",{width:26,height:26},{x:-8,y:8}),synced:{offset:{x:-5,y:13}}},Epe={...Ln("eraser",{width:26,height:26},{x:-8,y:8}),synced:{offset:{x:-5,y:13}}},xpe=Ln("eraser",{width:26,height:26},{x:-8,y:8}),Rpe={...Ln("text",{width:47,height:40},{x:-20,y:20}),synced:{images:ad.get("textSynced"),offset:{x:-13,y:16}}},mn={...Ln("shape",{width:40,height:40},{x:-20,y:20}),synced:{images:ad.get("shapeSynced"),offset:{x:-9,y:16}}},kpe={...Ln("clicker",{width:24,height:24},{x:-4,y:21}),synced:{offset:{x:0,y:26}}},ma=Object.freeze({[De.selector]:Ipe,[De.clicker]:kpe,[De.pencil]:rp,[De.rectangle]:mn,[De.ellipse]:mn,[De.shape]:mn,[De.eraser]:bpe,[De.pencilEraser]:Epe,[De.text]:Rpe,[De.straight]:mn,[De.arrow]:mn,[De.laserPen]:rp,[or.star]:mn,[or.polygon]:mn,[or.speechBalloon]:mn,[or.bitMapEraser]:xpe});function Jv(s){var e;return{...Mpe(He,s),pencilEraser:{...He.pencilEraser,...s==null?void 0:s.pencilEraser,fullLayerDoingMaskMaxInputPoints:Pc((e=s==null?void 0:s.pencilEraser)==null?void 0:e.fullLayerDoingMaskMaxInputPoints)},syncLogger:{...He.syncLogger,...s==null?void 0:s.syncLogger},backgroundImageLoadOptions:od(s==null?void 0:s.backgroundImageLoadOptions)}}const _v=new WeakMap,Ape=new WeakMap,Pa=new WeakMap,np=new WeakMap,ip=new WeakMap;function Ppe(s,r,e,t){let n=Pa.get(s);n||(n=new Map,Pa.set(s,n)),n.set(r,{...e,gestureOwner:t})}function Dpe(s,r){if(!s)return;const e=Pa.get(s),t=e==null?void 0:e.get(r);if(!t)return;if(e==null||e.delete(r),e!=null&&e.size||Pa.delete(s),!t.gestureOwner)return t;const n=np.get(t.gestureOwner),i=e0(t.matrix,n==null?void 0:n.matrix);if(np.set(t.gestureOwner,{matrix:t.matrix,toDigest:t.toDigest}),!!i)return{matrix:i,fromDigest:(n==null?void 0:n.toDigest)||t.fromDigest,toDigest:t.toDigest}}function Lpe(s,r,e,t){const n=e?e0(t,ip.get(e)):t;return e&&ip.set(e,t),n?(ld(s,r,n),!0):(t0(s,r),!1)}function e0(s,r){if(!r)return[...s];const e=Ope(r);return e?Npe(s,e):void 0}function Npe(s,r){return[s[0]*r[0]+s[2]*r[1],s[1]*r[0]+s[3]*r[1],s[0]*r[2]+s[2]*r[3],s[1]*r[2]+s[3]*r[3],s[0]*r[4]+s[2]*r[5]+s[4],s[1]*r[4]+s[3]*r[5]+s[5]]}function Ope(s){const[r,e,t,n,i,o]=s,a=r*n-e*t;if(!(!Number.isFinite(a)||Math.abs(a)<=Number.EPSILON))return[n/a,-e/a,-t/a,r/a,(t*o-n*i)/a,(e*i-r*o)/a]}function ld(s,r,e){var t;for(const n of((t=_v.get(s))==null?void 0:t.get(r))||[])n(e)}function zpe(s,r){var e,t;return!!((t=(e=_v.get(s))==null?void 0:e.get(r))!=null&&t.size)}function t0(s,r){var e;for(const t of((e=Ape.get(s))==null?void 0:e.get(r))||[])t()}const ud=16,Bpe=1;function $i(s){return Object.prototype.hasOwnProperty.call(s,"eraserFaces")}function zu(s,r){const e={...r};return $i(r)?delete e.eraserlines:s&&$i(s)&&(e.eraserFaces=s.eraserFaces??null,delete e.eraserlines),e}function Da(s){const r={...s};return delete r.doingLines,r}function jpe(s,r,e){const t=$i(s)?s.eraserFaces?La(s.eraserFaces):[]:sp(s.eraserlines||[]);return{eraserFaces:r0(op(t,op([],sp(r))))}}function r0(s,r=ud){if(!Number.isSafeInteger(r)||r<=0)throw new Error("eraserFaces scale must be a positive safe integer");const e=[];Bs(e,s.length);for(const t of s){Bs(e,t.rings.length);for(const n of t.rings){Bs(e,n.length);let i=0,o=0;n.forEach(([a,c],l)=>{const u=cp(a,r),h=cp(c,r);lp(e,l===0?u:u-i),lp(e,l===0?h:h-o),i=u,o=h})}}return{v:1,s:r,e:1,d:s0(e)}}function La(s){if(s.v!==1||s.e!==1||s.s<=0)throw new Error("unsupported eraserFaces payload");const r=new Wpe(Vpe(s.d)),e=[],t=r.readUVarint();for(let n=0;n<t;n++){const i=[],o=r.readUVarint();for(let a=0;a<o;a++){const c=[],l=r.readUVarint();let u=0,h=0;for(let d=0;d<l;d++){const f=r.readSVarint(),g=r.readSVarint();u=d===0?f:u+f,h=d===0?g:h+g,c.push([u/s.s,h/s.s])}i.push(c)}e.push({rings:i})}if(!r.done)throw new Error("trailing eraserFaces bytes");return e}function sp(s,r=ud){const e=[];for(const t of s){const n=new It.ClipperOffset;n.ArcTolerance=Math.max(.25,r*.05);for(const i of t.op){const o=[];for(let a=0;a<i.length;a+=2)o.push({X:Math.round(i[a]*r),Y:Math.round(i[a+1]*r)});o.length===1&&o.push({...o[0]}),o.length>=2&&n.AddPath(o,It.JoinType.jtRound,It.EndType.etOpenRound)}n.Execute(e,t.thickness*r/2)}return i0(e,r)}function op(s,r,e=ud){const t=[...s,...r].flatMap(n=>n.rings.map(i=>i.map(([o,a])=>({X:Math.round(o*e),Y:Math.round(a*e)}))));return i0(t,e)}function Hs(s,r){const e=[Bpe];return up(e,s),up(e,r),s0(Array.from(Upe(Uint8Array.from(e)).slice(0,16)))}function n0(s,r,e){return s.matrix.length===6&&s.matrix.every(Number.isFinite)&&s.fromDigest===Hs(r,e)&&/^[A-Za-z0-9_-]{22}$/.test(s.toDigest)}function Fpe(s,r,e,t,n){return!n0(e,t.op,t.centerPos)||e.toDigest!==Hs(n.op,n.centerPos)?!1:(ld(s,r,e.matrix),!0)}function zl(s,r){if(!s)return null;const e=La(s);for(const t of e)for(const n of t.rings){const i=n.flat();r(i),t.rings[t.rings.indexOf(n)]=Array.from({length:i.length/2},(o,a)=>[i[a*2],i[a*2+1]])}return r0(e,s.s)}function i0(s,r){if(!s.length)return[];const e=new It.Clipper;e.AddPaths(s,It.PolyType.ptSubject,!0);const t=new It.PolyTree;e.Execute(It.ClipType.ctUnion,t,It.PolyFillType.pftNonZero,It.PolyFillType.pftNonZero);const n=[],i=o=>{for(const a of o.Childs()){if(!a.IsHole()){const c=[ap(a.Contour(),r)];for(const l of a.Childs())l.IsHole()&&c.push(ap(l.Contour(),r));n.push({rings:c})}i(a)}};return i(t),n}function ap(s,r){return s.map(({X:e,Y:t})=>[e/r,t/r])}function cp(s,r){if(!Number.isFinite(s))throw new Error("eraserFaces coordinate must be finite");const e=Math.round(s*r);if(!Number.isSafeInteger(e))throw new Error("eraserFaces coordinate is out of range");return Object.is(e,-0)?0:e}function Bs(s,r){if(!Number.isSafeInteger(r)||r<0)throw new Error("invalid unsigned varint");do{let e=r%128;r=Math.floor(r/128),r&&(e|=128),s.push(e)}while(r)}function lp(s,r){const e=r>=0?r*2:-r*2-1;Bs(s,e)}function up(s,r){Bs(s,r.length);const e=new ArrayBuffer(8),t=new DataView(e);for(const n of r){if(!Number.isFinite(n))throw new Error("geometry digest values must be finite");const i=Object.is(n,-0)?0:n;t.setFloat64(0,i,!0);for(let o=0;o<8;o++)s.push(t.getUint8(o))}}function Upe(s){const r=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),e=s.length*8,t=Math.ceil((s.length+9)/64)*64,n=new Uint8Array(t);n.set(s),n[s.length]=128;const i=new DataView(n.buffer);i.setUint32(t-8,Math.floor(e/4294967296),!1),i.setUint32(t-4,e>>>0,!1);const o=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),a=new Uint32Array(64),c=(h,d)=>h>>>d|h<<32-d;for(let h=0;h<t;h+=64){for(let T=0;T<16;T++)a[T]=i.getUint32(h+T*4,!1);for(let T=16;T<64;T++){const p=a[T-15],m=a[T-2],M=c(p,7)^c(p,18)^p>>>3,v=c(m,17)^c(m,19)^m>>>10;a[T]=a[T-16]+M+a[T-7]+v>>>0}let[d,f,g,y,S,E,C,L]=o;for(let T=0;T<64;T++){const p=c(S,6)^c(S,11)^c(S,25),m=S&E^~S&C,M=L+p+m+r[T]+a[T]>>>0,v=c(d,2)^c(d,13)^c(d,22),R=d&f^d&g^f&g,b=v+R>>>0;L=C,C=E,E=S,S=y+M>>>0,y=g,g=f,f=d,d=M+b>>>0}o[0]=o[0]+d>>>0,o[1]=o[1]+f>>>0,o[2]=o[2]+g>>>0,o[3]=o[3]+y>>>0,o[4]=o[4]+S>>>0,o[5]=o[5]+E>>>0,o[6]=o[6]+C>>>0,o[7]=o[7]+L>>>0}const l=new Uint8Array(32),u=new DataView(l.buffer);return o.forEach((h,d)=>u.setUint32(d*4,h,!1)),l}class Wpe{constructor(r){x(this,"index",0);this.bytes=r}get done(){return this.index===this.bytes.length}readUVarint(){let r=0,e=1;for(let t=0;t<8;t++){const n=this.bytes[this.index++];if(n===void 0)throw new Error("truncated eraserFaces payload");if(r+=(n&127)*e,!(n&128))return r;e*=128}throw new Error("eraserFaces varint is too long")}readSVarint(){const r=this.readUVarint();return r%2===0?r/2:-(r+1)/2}}function s0(s){let r="";for(let e=0;e<s.length;e+=32768)r+=String.fromCharCode(...s.slice(e,e+32768));return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function Vpe(s){const r=s.replace(/-/g,"+").replace(/_/g,"/").padEnd(Math.ceil(s.length/4)*4,"="),e=atob(r);return Uint8Array.from(e,t=>t.charCodeAt(0))}function Lr(s,r=!0){const e=s.length;if(e<2)return"";let t=s[0],n=s[1];if(e===2)return`M${Ei(t)}L${Ei(n)}`;let i="";for(let o=2,a=e-1;o<a;o++)t=s[o],n=s[o+1],i+=xi(t,n);return r?`M${xi(s[0],s[1])}Q${Ei(s[1])}${xi(s[1],s[2])}T${i}${xi(s[e-1],s[0])}${xi(s[0],s[1])}Z`:`M${Ei(s[0])}Q${Ei(s[1])}${xi(s[1],s[2])}${s.length>3?"T":""}${i}L${Ei(s[e-1])}`}function $pe(s,r){const e=r>0?r:1,t=Math.floor(s.x*e),n=Math.floor(s.y*e),i=Math.ceil((s.x+s.w)*e),o=Math.ceil((s.y+s.h)*e);return{x:t,y:n,w:Math.max(1,i-t),h:Math.max(1,o-n)}}function Ype(s,r){const t=1/(r>0?r:1);return{x:s.x-t,y:s.y-t,w:s.w+t*2,h:s.h+t*2}}function Gpe(s,r,e){const t=Math.abs(e[0])||1,n=Math.abs(e[1])||1;return{size:[r.w/t,r.h/n],textureRect:[(s.x-r.x)/t,(s.y-r.y)/n,s.w/t,s.h/n]}}function Nn(s){return JSON.parse(lm.decompress(s))}function xt(s){return lm.compress(JSON.stringify(s))}const at=Object.keys,hp=new WeakMap,Qt=class Qt{constructor(r){x(this,"maxImageWidth",He.pencilEraser.maxImageWidth);x(this,"maxImageHeight",He.pencilEraser.maxImageHeight);x(this,"syncUnitTime",He.syncOpt.interval);x(this,"vNodes");x(this,"drawLayer");x(this,"fullLayer");x(this,"workId");x(this,"confirmEraserDeletion",!1);x(this,"isDelete",!1);const{vNodes:e,fullLayer:t,drawLayer:n,workId:i,toolsOpt:o}=r;this.vNodes=e,this.fullLayer=t,this.drawLayer=n,this.workId=i,this.syncUnitTime=o.syncUnitTime||this.syncUnitTime}static async normalizeStorageData(r){return this.normalizeStorageDataSync(r)}static normalizeStorageDataSync(r){const e=ht(r),t=JSON.stringify(r);if(e.opt){const n=Da(e.opt);e.opt=zu(void 0,n)}return e.updateNodeOpt={...e.updateNodeOpt,useAnimation:!1},{status:JSON.stringify(e)===t?"already-stable":"stable",value:e}}static async normalizeDrawableStorageData(r){return this.normalizeDrawableStorageDataSync(r)}static normalizeDrawableStorageDataSync(r){const e=Qt.normalizeStorageDataSync(r);if(e.status==="unrecoverable")return e;const t=e.value;return t.type===le.DrawWork&&!t.ops&&Array.isArray(t.op)&&t.op.length?(t.type=le.FullWork,t.ops=xt(t.op),{status:"stable",value:t}):e}get baseConsumeResult(){return{workId:this.workId,toolsType:this.toolsType,opt:this.workOptions}}filterSamePoints(r,e=.01){return r.reduce((t,n)=>{const i=t[t.length-1];return(n&&!i||n&&i&&!n.isNear(i,e))&&t.push(n),t},[])}setWorkId(r){this.workId=r}getWorkId(){return this.workId}setEraserDeleteConfirmation(r){this.confirmEraserDeletion=r}getWorkOptions(){return this.workOptions}setWorkOptions(r){var i,o,a;const e=zu(this.workOptions,r);this.workOptions=e,this.syncUnitTime=r.syncUnitTime||this.syncUnitTime;const t=(i=this.workId)==null?void 0:i.toString(),n=t&&((o=this.vNodes)==null?void 0:o.get(t))||void 0;t&&n&&(n.opt=Da(e),(a=this.vNodes)==null||a.setInfo(t,n))}getRenderableEraserLines(r){return[...r.eraserlines||[],...r.doingLines||[]]}updataOptService(r){var n,i;let e;const t=(n=this.workId)==null?void 0:n.toString();if(t&&r){const o=this.fullLayer.getElementsByName(t)||this.drawLayer&&this.drawLayer.getElementsByName(t)||[];if(o.length!==1)return;const a=o[0],{pos:c,zIndex:l,scale:u,angle:h,translate:d}=r,f={};yt(l)&&(f.zIndex=l),c&&(f.pos=[c[0],c[1]]),u&&(f.scale=u),h&&(f.rotate=h),d&&(f.translate=d),a.attr(f);const g=a==null?void 0:a.getBoundingClientRect();return g&&(e=Ue(e,{x:Math.floor(g.x-Qt.SafeBorderPadding),y:Math.floor(g.y-Qt.SafeBorderPadding),w:Math.floor(g.width+Qt.SafeBorderPadding*2),h:Math.floor(g.height+Qt.SafeBorderPadding*2)})),(i=this.vNodes)==null||i.setInfo(t,{rect:e,centerPos:c}),e}}drawEraserlines(r,e){const{group:t,eraserlines:n=[],eraserFaces:i,pos:o,layer:a}=r,c=a.parent;if(e)try{const u=(a.renderer.glRenderer||a.renderer.canvasRenderer).options.displayRatio,h=t.getBoundingClientRect(),d=h.width*u*a.worldScaling[0],f=h.height*u*a.worldScaling[1];let g=1;if((d>this.maxImageWidth||f>this.maxImageHeight)&&(g=Math.min(this.maxImageWidth/d,this.maxImageHeight/f)),c.renderer.glRenderer&&!this.confirmEraserDeletion&&this.drawEraserMask({group:t,eraserlines:n,eraserFaces:i,pos:o,layer:a,targetScale:g}))return;let y=a.getAttribute("scale");y=[y[0]*g,y[1]*g];const S=a.parent.parent,E=a.getAttribute("translate"),C=this.createVmRenderNode(`${this.workId}_bitMapLayer`,S,{offscreen:c.offscreen,width:c.width,height:c.height,contextType:"2d",autoRender:!1,bufferSize:500},y,E),L=t.cloneNode(!0);if(!n.length&&!i)return;i&&this.addEraserFaces(L,i,o,!1),this.addEraserlines(L,n,o,!1),C.appendChild(L);const T=C.parent;T.render();const p=C.renderer.canvasRenderer,m=p.context;if(!m)return;const M=p.options.displayRatio,v=L.getBoundingClientRect(),R={x:v.x,y:v.y,w:v.width,h:v.height},b={x:0,y:0,w:S.width,h:S.height};if(Bc(R,b)===sn.outside){ur(L,T),S.removeChild(T),this.isDelete=!0;return}const D=Ype(R,M),z=ht(D);z.x=Math.floor(Math.max(D.x,0)),z.y=Math.floor(Math.max(D.y,0)),z.w=Math.min(D.x+D.w,S.width)-z.x,z.h=Math.min(D.y+D.h,S.height)-z.y;const j=this.getGroupRect(z,M),A=j.x,k=j.y,N=j.w,W=j.h;let Y=m.getImageData(A,k,N,W);if(this.confirmEraserDeletion&&this.isTransparentRectByCanvas(Y)){ur(L,T),S.removeChild(T),this.isDelete=!0,Y=null;return}if(this.confirmEraserDeletion&&c.renderer.glRenderer&&this.drawEraserMask({group:t,eraserlines:n,eraserFaces:i,pos:o,layer:a,targetScale:g})){ur(L,T),S.removeChild(T),Y=null;return}ur(t,c);const Q=this.createSpriteNode({imageData:Y,safariRect:z,originRect:D,worldScaling:C.worldScaling});Q&&t.append(Q),ur(L,T),S.removeChild(T),c.deleteTexture(Y),Y=null}catch(l){console.error("[BaseShapeTool] drawEraserlines error:",l);return}}drawEraserMask(r){var m,M;const{group:e,eraserlines:t,eraserFaces:n,pos:i,layer:o,targetScale:a}=r;if(!t.length&&!n||e.getAttribute("clipPath"))return!1;const c=Number(e.getAttribute("width")),l=Number(e.getAttribute("height"));if(!(c>0)||!(l>0))return!1;const u=o.parent.renderer;if(!u.glRenderer)return!1;const h=u.options.displayRatio||1,d=Math.max(1,Math.ceil(c*h*o.worldScaling[0]*a)),f=Math.max(1,Math.ceil(l*h*o.worldScaling[1]*a)),g=[-c/2,-l/2,c,l];let y=hp.get(o);y||(y=new Map,hp.set(o,y)),this.pruneEraserMaskCaches(o,y,u);let S=y.get(this.workId),E=!S||S.pixelWidth!==d||S.pixelHeight!==f||S.facesKey!==(n==null?void 0:n.d);if(S&&!E&&(E=this.isEraserMaskPrefixChanged(S,t)),E){if(S==null||S.handle.destroy(u),S=this.createEraserMaskCache(d,f,g),!S)return!1;y.set(this.workId,S)}if(!S)return!1;const C=d/c,L=f/l;S.context.setTransform(C,0,0,L,d/2,f/2),E&&n&&(this.appendEraserMaskFaces(S.context,n,i),S.facesKey=n.d);let T=E,p;for(const v of t){const R=S.commands.get(v.workId),b=E?0:(R==null?void 0:R.count)||0;for(let P=b;P<v.op.length;P++)T=!0,p=Ue(p,this.appendEraserMaskStroke(S.context,v.op[P],v.thickness,i));S.commands.set(v.workId,{count:v.op.length,thickness:v.thickness,first:(m=v.op[0])==null?void 0:m.slice(0,2),last:(M=v.op[v.op.length-1])==null?void 0:M.slice(-2)})}return T&&S.handle.update({rect:g,dirtyRect:E||!p?void 0:[p.x,p.y,p.w,p.h]}),e.setMask(S.handle,{rect:g}),!0}pruneEraserMaskCaches(r,e,t){for(const[n,i]of e)n!==this.workId&&r.getElementsByName(n).length===0&&(i.handle.destroy(t),e.delete(n))}createEraserMaskCache(r,e,t){var o,a;let n;typeof OffscreenCanvas=="function"?n=new OffscreenCanvas(r,e):typeof document<"u"&&(n=document.createElement("canvas"),n.width=r,n.height=e);const i=n==null?void 0:n.getContext("2d");if(!(!n||!i))return i.save(),i.setTransform(1,0,0,1,0,0),i.fillStyle="#fff",i.fillRect(0,0,r,e),i.restore(),{canvas:n,context:i,handle:new Boe(n,{rect:t,singleChannelTexture:((o=this.fullLayer.parent.renderer.options.bitmapEraserMaskOptions)==null?void 0:o.singleChannelTexture)!==!1,textureSubImage2D:((a=this.fullLayer.parent.renderer.options.bitmapEraserMaskOptions)==null?void 0:a.textureSubImage2D)!==!1}),rect:t,pixelWidth:r,pixelHeight:e,commands:new Map}}appendEraserMaskStroke(r,e,t,n){if(e.length<2)return;r.save(),r.fillStyle="#000",r.strokeStyle="#000",r.lineCap="round",r.lineJoin="round",r.lineWidth=t;const i=e[0]-n[0],o=e[1]-n[1];if(e.length===2)r.beginPath(),r.arc(i,o,t/2,0,Math.PI*2),r.fill();else{r.beginPath(),r.moveTo(i,o);for(let g=2;g<e.length;g+=2)r.lineTo(e[g]-n[0],e[g+1]-n[1]);r.stroke()}r.restore();const a=[],c=[];for(let g=0;g<e.length;g+=2)a.push(e[g]-n[0]),c.push(e[g+1]-n[1]);const l=t/2+1,u=Math.min(...a),h=Math.min(...c),d=Math.max(...a),f=Math.max(...c);return{x:u-l,y:h-l,w:d-u+l*2,h:f-h+l*2}}appendEraserMaskFaces(r,e,t){r.save(),r.fillStyle="#000",r.beginPath();for(const n of La(e))for(const i of n.rings)i.forEach(([o,a],c)=>{const l=o-t[0],u=a-t[1];c===0?r.moveTo(l,u):r.lineTo(l,u)}),r.closePath();r.fill("evenodd"),r.restore()}isEraserMaskPrefixChanged(r,e){var t,n;if(r.commands.size>e.length)return!0;for(const i of e){const o=r.commands.get(i.workId);if(o&&(i.op.length<o.count||i.thickness!==o.thickness||!this.isSamePoint(o.first,(t=i.op[0])==null?void 0:t.slice(0,2))||!this.isSamePoint(o.last,(n=i.op[o.count-1])==null?void 0:n.slice(-2))))return!0}return!1}isSamePoint(r,e){return!r||!e?r===e:r[0]===e[0]&&r[1]===e[1]}createVmRenderNode(r,e,t,n,i){const{width:o,height:a}=t,c=`bitMap-${r}`,l=e.layer(c,t),u=new dt({anchor:[.5,.5],pos:[o*.5,a*.5],size:[o,a],name:"viewport",id:r});return u.setAttribute("scale",n),u.setAttribute("translate",i),l.append(u),u}getGroupRect(r,e){return $pe(r,e)}addEraserlines(r,e,t,n=!0){for(const i of e){const{thickness:o,op:a}=i;for(const c of a){const l=c.map((g,y)=>y%2?g-t[1]:g-t[0]),u=this.computEraserPoints(l,o),h=Lr(u,!0),d={pos:[0,0],d:h,fillColor:"rgba(0,0,0,1)"},f=new $t(d);f.addEventListener("beforerender",({detail:g})=>{const y=g.context;n?y.blendFuncSeparate(y.ZERO,y.ZERO,y.ZERO,y.ZERO):y.globalCompositeOperation="destination-out"}),f.addEventListener("afterrender",({detail:g})=>{const y=g.context;n?y.blendFuncSeparate(y.SRC_ALPHA,y.ONE_MINUS_SRC_ALPHA,y.ONE,y.ONE_MINUS_SRC_ALPHA):y.globalCompositeOperation="source-over"}),r.append(f)}}}addEraserFaces(r,e,t,n=!0){const i=La(e).flatMap(a=>a.rings.map(c=>Lr(c.map(([l,u])=>new Pe(l-t[0],u-t[1])),!0))).join(" ");if(!i)return;const o=new $t({pos:[0,0],d:i,fillColor:"rgba(0,0,0,1)",fillRule:"evenodd"});o.addEventListener("beforerender",({detail:a})=>{const c=a.context;n?c.blendFuncSeparate(c.ZERO,c.ZERO,c.ZERO,c.ZERO):c.globalCompositeOperation="destination-out"}),o.addEventListener("afterrender",({detail:a})=>{const c=a.context;n?c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA):c.globalCompositeOperation="source-over"}),r.append(o)}isTransparentRectByCanvas(r){let e=!0;for(let t=0;t<r.data.length;t+=4)if(r.data[t+3]!==0){e=!1;break}return e}createSpriteNode(r){const{imageData:e,worldScaling:t,safariRect:n,originRect:i}=r;let o;if(typeof OffscreenCanvas=="function"){o=new OffscreenCanvas(e.width,e.height);const d=o.getContext("2d");d&&d.putImageData(e,0,0)}else if(typeof document<"u"){o=document.createElement("canvas"),o.width=e.width,o.height=e.height;const d=o.getContext("2d");d&&d.putImageData(e,0,0)}if(!o)return console.warn("Failed to create imageEraserBitmap Sprite"),null;const{size:a,textureRect:c}=Gpe(n,i,t),l={name:"eraserTexture",anchor:[.5,.5],pos:[0,0],size:a,texture:o,textureRect:c},u=new Cc(l);let h=!0;return u.addEventListener("beforerender",({detail:d})=>{const f=d.context;typeof f.imageSmoothingEnabled=="boolean"&&(h=f.imageSmoothingEnabled,f.imageSmoothingEnabled=!1)}),u.addEventListener("afterrender",({detail:d})=>{const f=d.context;typeof f.imageSmoothingEnabled=="boolean"&&(f.imageSmoothingEnabled=h)}),u}computEraserPoints(r,e){const t=Math.ceil(e/2);return r.length===2?this.computDot(r,t):this.computLine(r,t)}computDot(r,e){const t=new Pe(r[0],r[1]);return Pe.GetDotStroke(t,e,8)}computLine(r,e){const t=[],n=[];let i,o;for(let a=0;a<r.length;a+=2){const c=new Pe(r[a],r[a+1]);let l;if(a==r.length-2){const u=new Pe(r[a-2],r[a-1]);l=fe.Sub(c,u).uni(),i=c}else{a===0&&(o=c);const u=new Pe(r[a+2],r[a+3]);l=fe.Sub(u,c).uni()}if(l){const u=fe.Per(l).mul(e);t.push(Pe.Sub(c,u)),n.push(Pe.Add(c,u))}}if(i&&o){const a=Pe.GetSemicircleStroke(i,t[t.length-1],-1,8),c=Pe.GetSemicircleStroke(o,n[0],-1,8);return t.concat(a,n.reverse(),c)}return[]}replace(r,e,t){var i;if(!e){t&&r.append(t);return}const n=r.getElementsByName(e);if(n.length)for(const o of n)t?Y0e(t,o,r):(o.remove(),hr(o,r.parent));else t&&r.append(t);this.fullLayer!==this.drawLayer&&(this.fullLayer===r?(i=this.drawLayer)==null||i.getElementsByName(e).forEach(a=>{var c;a.remove(),hr(a,(c=this.drawLayer)==null?void 0:c.parent)}):this.fullLayer.getElementsByName(e).forEach(a=>{a.remove(),hr(a,this.fullLayer.parent)}))}removeDrawCountNodes(r,e){const t=[];r.getElementsByName(this.workId).forEach(n=>{n.id&&e&&Number(n.id)<e&&t.push(n)});for(const n of t)n.remove(),hr(n,r.parent)}static updateNodeOpt(r){var m;const{node:e,opt:t,vNodes:n,willSerializeData:i,targetNode:o}=r,{zIndex:a,translate:c,angle:l,originPoint:u,scenePoint:h,scale:d,pointMap:f,thickness:g}=t;let y;const S=o&&ht(o)||n.get(e.name);if(!S)return;const E=t.eraserGeometryDelta,L=!!E||!!u&&!!d&&!!o||!!i&&(!!c||yt(l))?Hs(S.op,S.centerPos):void 0;if(E&&(!L||!n0(E,S.op,S.centerPos)))return;E&&ld(n,e.name,E.matrix);let T;yt(a)&&(e.setAttribute("zIndex",a),S.opt.zIndex=a);const p=e.parent;if(p){if(u&&d&&o){if(T=[d[0],0,0,d[1],h[0]*(1-d[0])+((c==null?void 0:c[0])||0),h[1]*(1-d[1])+((c==null?void 0:c[1])||0)],zc(S.op,h,d,c),Fs(S.centerPos,h,d,c),S.opt.translate=void 0,S.opt.scale=void 0,S.opt.eraserlines)for(let M=0;M<S.opt.eraserlines.length;M++){const{op:v,thickness:R}=S.opt.eraserlines[M];S.opt.eraserlines[M].thickness=Math.round(R*Math.max(Math.abs(d[0]),Math.abs(d[1])));for(let b=0;b<v.length;b++)Fs(v[b],h,d,c)}$i(S.opt)&&(S.opt.eraserFaces=zl(S.opt.eraserFaces??null,M=>Fs(M,h,d,c)),delete S.opt.eraserlines)}else if(c)if(e.setAttribute("translate",c),S.opt.translate=c,o){const M=[c[0]*p.worldScaling[0],c[1]*p.worldScaling[1]];y=Ks(S.rect,M),S.rect=y}else{const M=Qt.getRectFromLayer(p,e.name);S.rect=M||S.rect}else if(yt(l))if(e.setAttribute("rotate",l),S.opt.rotate=l,o)y=Md(S.rect,l),S.rect=y;else{const M=Qt.getRectFromLayer(p,e.name);S.rect=M||S.rect}if(f){const M=f.get(e.name);if(M)for(let v=0,R=0;v<S.op.length;v+=3,R++)S.op[v]=M[R][0],S.op[v+1]=M[R][1]}if(g&&((m=S==null?void 0:S.opt)!=null&&m.thickness)&&(S.opt.thickness=g),i&&!(u&&d&&o)){if(c){T=[1,0,0,1,c[0],c[1]];const M=S.op.map((v,R)=>{const b=R%3;return b===0?v+c[0]:b===1?v+c[1]:v});if(S.op=M,S.centerPos=[S.centerPos[0]+c[0],S.centerPos[1]+c[1]],S!=null&&S.opt&&(S.opt.translate=void 0),S.opt.eraserlines)for(let v=0;v<S.opt.eraserlines.length;v++){const{op:R}=S.opt.eraserlines[v];for(let b=0;b<R.length;b++){const P=R[b].map((D,z)=>z%2?D+c[1]:D+c[0]);S.opt.eraserlines[v].op[b]=P}}$i(S.opt)&&(S.opt.eraserFaces=zl(S.opt.eraserFaces??null,v=>{for(let R=0;R<v.length;R+=2)v[R]+=c[0],v[R+1]+=c[1]}),delete S.opt.eraserlines)}else if(yt(l)){const M=Math.PI*l/180,v=Math.cos(M),R=Math.sin(M),[b,P]=S.centerPos;T=[v,R,-R,v,b-v*b+R*P,P-R*b-v*P];const D=S.op;if(j0e(D,S.centerPos,l),S.op=D,S!=null&&S.opt&&(S.opt.rotate=void 0),S.opt.eraserlines)for(let z=0;z<S.opt.eraserlines.length;z++){const{op:j}=S.opt.eraserlines[z];for(let A=0;A<j.length;A++)Bp(j[A],S.centerPos,l)}$i(S.opt)&&(S.opt.eraserFaces=zl(S.opt.eraserFaces??null,z=>Bp(z,S.centerPos,l)),delete S.opt.eraserlines)}}if(L&&T){const M=Hs(S.op,S.centerPos);if(E&&E.toDigest!==M)return;E||(Lpe(n,e.name,o,T),Ppe(n,e.name,{matrix:T,fromDigest:L,toDigest:M},o))}S&&n.setInfo(e.name,S)}}static getCenterPos(r,e){const{worldPosition:t,worldScaling:n}=e;return[(r.x+r.w/2-t[0])/n[0],(r.y+r.h/2-t[1])/n[1]]}static getRectFromLayer(r,e){const t=r.getElementsByName(e)[0];if(t){const n=t.getBoundingClientRect();return{x:Math.floor(n.x-Qt.SafeBorderPadding),y:Math.floor(n.y-Qt.SafeBorderPadding),w:Math.floor(n.width+Qt.SafeBorderPadding*2),h:Math.floor(n.height+Qt.SafeBorderPadding*2)}}}static isWillRefresh(r){const{toolsType:e,opt:t,node:n,updateOpt:i,willSerializeData:o}=r;return!!(o&&(i.angle||i.translate)||i.thickness&&t.thickness&&t.thickness!==i.thickness||i.strokeType&&t.strokeType&&t.strokeType!==i.strokeType||i.originPoint&&i.scenePoint&&i.scale||i.pointMap&&i.pointMap.has(n.name)||e===q.Text&&(i.fontSize||i.translate||i.textInfos&&i.textInfos.get(n.name))||e===q.BackgroundSVG&&(i.translate||i.scale)||e===q.Image&&(i.angle||i.translate||i.scale||i.strokeColor&&t.type===on.Iconify)||e===i.toolsType&&i.willRefresh||t.eraserlines&&t.eraserlines.length&&(i.strokeColor||i.fillColor))}};x(Qt,"SafeBorderPadding",10);let Re=Qt;const hd=Object.freeze([Object.freeze({width:18,height:26}),Object.freeze({width:26,height:34}),Object.freeze({width:34,height:50}),Object.freeze({width:48,height:74})]);function o0(s,r,e=.01){return Math.abs(s[0]-r[0])<e&&Math.abs(s[1]-r[1])<e}function Hpe(s,r=.01){if(s.length===0)return[];const e=[[s[0][0],s[0][1]]];for(let t=1;t<s.length;t++)o0([s[t][0],s[t][1]],e[e.length-1],r)||e.push([s[t][0],s[t][1]]);return e}function Qpe(s,r=.01){if(s.length<=2)return s;const e=s[0],t=s[s.length-1];return o0(e,t,r)?s.slice(0,-1):s}function qpe(s){const r=s.reduce((t,n)=>t+n[0],0)/s.length,e=s.reduce((t,n)=>t+n[1],0)/s.length;return[r,e]}function dp(s,r){return Math.atan2(r[1]-s[1],r[0]-s[0])}function Zpe(s,r=.01){if(s.length<=2)return s;const e=[];for(const n of s)e.some(o=>Math.abs(o[0]-n[0])<r&&Math.abs(o[1]-n[1])<r)||e.push([n[0],n[1]]);const t=qpe(e);return e.sort((n,i)=>{const o=dp(t,n),a=dp(t,i);return o-a})}function Kpe(s,r){const e=r[0].x<r[r.length-1].x;return s.map(n=>{const o=n.map(a=>{let c=-1,l=1/0,u=0;for(let h=0;h<r.length;h++){const d=r[h],f=Math.sqrt(Math.pow(d.x-a[0],2)+Math.pow(d.y-a[1],2));f<l&&(l=f,c=h,u=d.z)}return{point:a,index:c,bestZ:u}}).sort((a,c)=>a.index-c.index).map(a=>[...a.point,a.bestZ]);return e&&o[0][0]>o[o.length-1][0]||!e&&o[0][0]<o[o.length-1][0]?o.reverse():o}).sort((n,i)=>{const o=n[0][0],a=i[0][0];return e?o-a:a-o})}function Xpe(s,r,e=.01){const n=s.map(h=>[h.x,h.y]),i=(h,d)=>h.map(([f,g])=>({X:Math.round(f*d),Y:Math.round(g*d)})),o=new It.ClipperOffset;o.AddPath(i(n,1e3),It.JoinType.jtRound,It.EndType.etOpenButt);const a=[];o.Execute(a,1);const c=new It.Clipper;c.AddPaths(a,It.PolyType.ptSubject,!0),r.forEach(h=>{c.AddPath(i(h,1e3),It.PolyType.ptClip,!0)});const l=new It.Paths;c.Execute(It.ClipType.ctDifference,l,It.PolyFillType.pftNonZero,It.PolyFillType.pftNonZero);const u=l.map(h=>Qpe(Zpe(Hpe(h.map(d=>[d.X/1e3,d.Y/1e3]),e),e),e)).filter(h=>h.length>=2);return Kpe(u,s)}class a0 extends Re{constructor(e){super(e);x(this,"canRotate",!0);x(this,"scaleType",Ye.all);x(this,"toolsType",q.Pencil);x(this,"syncTimestamp");x(this,"syncIndex",0);x(this,"tmpPoints",[]);x(this,"MAX_REPEAR",10);x(this,"uniThickness");x(this,"workOptions");x(this,"centerPos",[0,0]);this.workOptions=e.toolsOpt,this.uniThickness=this.MAX_REPEAR/this.workOptions.thickness/10,this.syncTimestamp=0}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}setPointVector(e,t){if(!t)return!1;const n=e.x-t.x,i=e.y-t.y;if(n===0&&i===0)return!1;const o=fe.Sub(e,t).uni();return!Number.isFinite(o.x)||!Number.isFinite(o.y)?!1:(e.setv(o),!0)}combineConsume(){var a;const e=(a=this.workId)==null?void 0:a.toString();if(this.tmpPoints.length<2)return{type:le.None};const t=this.transformDataAll(!0),n={name:e};let i;const o=this.drawLayer||this.fullLayer;return t.length&&(i=this.draw({attrs:n,tasks:t,replaceId:e,layer:o})),{rect:i,type:le.DrawWork,dataType:xe.Local}}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,drawCount:a,removeDrawCount:c,isSimpleWorker:l}=e,{workId:u,syncUnitTime:h}=t;h&&(this.syncUnitTime=h);const{tasks:d,effects:f,consumeIndex:g}=this.transformData(t,!1);this.syncIndex=Math.min(this.syncIndex,g,Math.max(0,this.tmpPoints.length-2));const y={name:u,id:yt(a)&&a.toString()||void 0};let S,E=!1;const C=this.syncIndex;if(this.syncTimestamp===0&&(this.syncTimestamp=Date.now()),d.length&&(d[0].taskId-this.syncTimestamp>this.syncUnitTime&&(E=!0,this.syncTimestamp=d[0].taskId,this.syncIndex=this.tmpPoints.length),i||o||l)){const p=n?this.fullLayer:this.drawLayer||this.fullLayer;S=this.draw({attrs:y,tasks:d,effects:f,layer:p,removeDrawCount:c})}if(l){const p=[];this.tmpPoints.slice(C).forEach(M=>{p.push(M.x,M.y,this.computRadius(M.z,this.workOptions.thickness))});const m=!this.workOptions.previewLocalOnly&&E;return{...this.baseConsumeResult,type:le.DrawWork,dataType:xe.Local,op:m?p:void 0,index:m?C*3:void 0,rect:S,updateNodeOpt:{useAnimation:!0}}}if(i)return g>10&&this.tmpPoints.splice(0,g-10),{rect:S,type:le.DrawWork,dataType:xe.Local};const L=[];this.tmpPoints.slice(C).forEach(p=>{L.push(p.x,p.y,this.computRadius(p.z,this.workOptions.thickness))});const T=!this.workOptions.previewLocalOnly&&E;return{...this.baseConsumeResult,type:le.DrawWork,dataType:xe.Local,rect:S,op:T?L:void 0,index:T?C*3:void 0,updateNodeOpt:{useAnimation:!0}}}consumeAll(e){var u;const t=this.workId;if(e.data){const{op:h,workState:d}=e.data;h!=null&&h.length&&d===de.Done&&this.workOptions.strokeType===Be.Stroke&&this.updateTempPointsWithPressureWhenDone(h)}const n=this.fullLayer;if(this.tmpPoints.length<2)return this.replace(n,t),{type:le.RemoveNode,removeIds:[t]};const i=this.transformDataAll(!0),o={name:t};let a;i.length&&(a=this.draw({attrs:o,tasks:i,replaceId:t,layer:n}));const c=[];this.tmpPoints.map(h=>{c.push(h.x,h.y,h.z)}),this.syncTimestamp=0,delete this.workOptions.syncUnitTime;const l=xt(c);return(u=this.vNodes)==null||u.setInfo(t,{rect:a,op:c,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:a&&Re.getCenterPos(a,n)}),{...this.baseConsumeResult,rect:a,type:le.FullWork,dataType:xe.Local,ops:l,updateNodeOpt:{pos:this.centerPos,useAnimation:!0}}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var h,d;const{op:t,isFullWork:n,replaceId:i,workState:o=de.Done}=e;this.tmpPoints.length=0;for(let f=0;f<t.length;f+=3){const g=new Pe(t[f],t[f+1],t[f+2]);if(this.tmpPoints.length>0){const y=this.tmpPoints[this.tmpPoints.length-1];if(!this.setPointVector(g,y))continue}this.tmpPoints.push(g)}if(this.tmpPoints.length<2)return;const a=this.transformDataAll(!0),c=(h=this.workId)==null?void 0:h.toString(),l={name:c};let u;if(c&&a.length){const f=n?this.fullLayer:this.drawLayer||this.fullLayer;u=this.draw({attrs:l,tasks:a,replaceId:i,layer:f,isDrawEraserlines:o===de.Done}),(d=this.vNodes)==null||d.setInfo(c,{rect:u,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Re.getCenterPos(u,f)})}return u}computPencilPoints(e){const t=[],{op:n,eraserPolylines:i,eraserThickness:o}=e;this.tmpPoints.length=0;for(let c=0;c<n.length;c+=3){const l=new Pe(n[c],n[c+1],n[c+2]);if(this.tmpPoints.length>0){const u=this.tmpPoints[this.tmpPoints.length-1];if(!this.setPointVector(l,u))continue}this.tmpPoints.push(l)}if(this.tmpPoints.length<2)return;const a=this.transformDataAll(!0);if(a.length)for(let c=0;c<a.length;c++){const{pos:l,points:u}=a[c],h=u.map(g=>g.point.addXY(l[0],l[1])),d=[];for(const g of i){const y=[];for(let E=0;E<g.length;E+=2){const C=new Pe(g[E],g[E+1]);if(y.length>0){const L=y[y.length-1].point;if(!this.setPointVector(C,L))continue}y.push({point:C,radius:o})}const{ps:S}=this.computStroke(y,!1);d.push(S.map(E=>E.XY))}Xpe(h,d,.01).forEach(g=>{t.push(g.map(y=>[y[0],y[1],y[2]]).flat(1))})}return t}transformDataAll(e=!0){return this.getTaskPoints(this.tmpPoints,e&&this.workOptions.thickness||void 0)}draw(e){const{attrs:t,tasks:n,replaceId:i,effects:o,layer:a,removeDrawCount:c,isDrawEraserlines:l=!0}=e,{strokeColor:u,strokeType:h,thickness:d,zIndex:f,scale:g,rotate:y,translate:S,eraserlines:E,eraserFaces:C,doingLines:L,lineCap:T,lineDash:p}=this.workOptions;o!=null&&o.size&&(o.forEach(P=>{var D;(D=a.getElementById(P+""))==null||D.remove()}),o.clear()),c&&this.removeDrawCountNodes(a,c);let m;const M=[],v=a.worldPosition,R=a.worldScaling;for(let P=0;P<n.length;P++){const{pos:D,points:z}=n[P],{ps:j,rect:A}=this.computDrawPoints(z);let k;const N=z.length===1;h===Be.Stroke||N?k=Lr(j,!0):k=Lr(j,!1);const W={pos:D,d:k,fillColor:h===Be.Stroke||N?u:void 0,lineDash:N?void 0:h===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*d]:h===Be.LongDotted?[(p&&p[0]||1)*d,(p&&p[1]||2)*d]:void 0,strokeColor:u,lineCap:N?void 0:T,lineWidth:h===Be.Stroke||N?0:d};m=Ue(m,{x:Math.floor((A.x+D[0])*R[0]+v[0]-Re.SafeBorderPadding),y:Math.floor((A.y+D[1])*R[1]+v[1]-Re.SafeBorderPadding),w:Math.floor(A.w*R[0]+2*Re.SafeBorderPadding),h:Math.floor(A.h*R[1]+2*Re.SafeBorderPadding)}),M.push(W)}g&&(t.scale=g),y&&(t.rotate=y),S&&(t.translate=S);const b=new dt;if(m){this.centerPos=Re.getCenterPos(m,a);const P=h===Be.Stroke&&!E&&!C&&!L;b.attr({...t,normalize:!0,anchor:[.5,.5],bgcolor:P?u:void 0,pos:this.centerPos,size:[(m.w-2*Re.SafeBorderPadding)/R[0],(m.h-2*Re.SafeBorderPadding)/R[1]],zIndex:f});const D=M.map(z=>(z.pos=[z.pos[0]-this.centerPos[0],z.pos[1]-this.centerPos[1]],new $t(z)));b.append(...D),P&&b.seal(),(E||C||L)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:b,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:C,pos:this.centerPos,layer:a},l)),this.replace(a,i,b)}if(g||y||S){const P=b==null?void 0:b.getBoundingClientRect();P&&(m={x:Math.floor(P.x-Re.SafeBorderPadding),y:Math.floor(P.y-Re.SafeBorderPadding),w:Math.floor(P.width+Re.SafeBorderPadding*2),h:Math.floor(P.height+Re.SafeBorderPadding*2)})}return this.isDelete&&b.setAttribute("opacity",0),m}computDrawPoints(e){return this.workOptions.strokeType===Be.Stroke||e.length===1?this.computStroke(e):this.computNomal(e)}computNomal(e){let t=this.workOptions.thickness;const n=e.map(i=>(t=Math.max(t,i.radius),i.point));return{ps:n,rect:it(n,t)}}computStroke(e,t=!0){return e.length===1?this.computDotStroke(e[0]):this.computLineStroke(e,t)}computLineStroke(e,t=!0){const n=[],i=[];for(let c=0;c<e.length;c++){const{point:l,radius:u}=e[c];let h=l.v;c===0&&e.length>1&&(h=e[c+1].point.v);const d=fe.Per(h).mul(u);n.push(Pe.Sub(l,d)),i.push(Pe.Add(l,d))}const o=e[e.length-1];if(t){const c=Pe.GetSemicircleStroke(o.point,n[n.length-1],-1,8),l=Pe.GetSemicircleStroke(e[0].point,i[0],-1,8),u=n.concat(c,i.reverse(),l);return{ps:u,rect:it(u)}}const a=n.concat(i.reverse());return{ps:a,rect:it(a)}}computDotStroke(e){const{point:t,radius:n}=e,i={x:t.x-n,y:t.y-n,w:n*2,h:n*2};return{ps:Pe.GetDotStroke(t,n,8),rect:i}}transformData(e,t){const{op:n,workState:i}=e;let o=this.tmpPoints.length-1,a=[];if(n!=null&&n.length&&i){const{strokeType:c,thickness:l}=this.workOptions,u=new Set,h=Math.max(0,this.tmpPoints.length-1);c===Be.Stroke?this.updateTempPointsWithPressure(n,l,u):this.updateTempPoints(n,l,u),o=h;const d=t?this.tmpPoints:this.tmpPoints.slice(o);return a=this.getTaskPoints(d,l),{tasks:a,effects:u,consumeIndex:o}}return{tasks:a,consumeIndex:o}}computRadius(e,t){return e*.03*t+t*.5}getMinZ(e,t){return((t||Math.max(1,Math.floor(e*.3)))-e*.5)*100/e/3}getTaskPoints(e,t){var h;const n=[];if(e.length===0)return[];let i=0,o=e[0].x,a=e[0].y,c=[o,a],l=[],u=e[0].t;for(;i<e.length;){const d=e[i],f=d.x-o,g=d.y-a,y=d.z,S=t?this.computRadius(y,t):y;if(l.push({point:new Pe(f,g,y,e[i].v),radius:S}),i>0&&i<e.length-1){const E=e[i].getAngleByPoints(e[i-1],e[i+1]);if(E<60||E>300){const C=(h=l.pop())==null?void 0:h.point.clone();C&&n.push({taskId:u,pos:c,points:[...l,{point:C,radius:S}]}),o=e[i].x,a=e[i].y,c=[o,a];const L=d.x-o,T=d.y-a;l=[{point:new Pe(L,T,y),radius:S}],u=Date.now()}}i++}return n.push({taskId:u,pos:c,points:l}),n}updateTempPointsWithPressure(e,t,n){const i=Date.now(),o=this.tmpPoints.length;let a=o;for(let l=0;l<e.length;l+=2){a=Math.min(a,o);const u=this.tmpPoints.length,h=new Pe(e[l],e[l+1]);if(u===0){this.tmpPoints.push(h);continue}const d=u-1,f=this.tmpPoints[d];if(h.x===f.x&&h.y===f.y){f.z<this.MAX_REPEAR&&f.setz(Math.min(f.z+1,this.MAX_REPEAR));continue}const g=fe.Sub(h,f).uni();if(h.isNear(f,t)){let E=f.z;if(f.z<this.MAX_REPEAR&&(E=Math.min(f.z+1,this.MAX_REPEAR),u>1)){let T=u-1;for(;T>0;){const p=this.tmpPoints[T].distance(this.tmpPoints[T-1]),m=Math.max(this.tmpPoints[T].z-this.uniThickness*p,0);if(this.tmpPoints[T-1].z>=m)break;this.tmpPoints[T-1].setz(m),a=Math.min(a,T-1),T--}}if(a=Math.min(a,d),f.t){h.setz(E),h.setv(g),this.tmpPoints.push(h);continue}const C=this.tmpPoints[d-1],L=C?fe.Sub(h,C).uni():f.v;f.set(h.x,h.y,E,L);continue}h.setv(g);const y=h.distance(f),S=Math.max(f.z-this.uniThickness*y,0);u>1&&fe.Equals(g,f.v,.01)&&(S>0||f.z<=0)&&(f.t||this.tmpPoints.pop(),a=Math.min(d,a)),h.setz(S),this.tmpPoints.push(h)}if(a===1/0)return this.tmpPoints.length;let c=o;if(a===o){c=Math.max(c-1,0);const l=this.tmpPoints[c].t;l&&(n==null||n.add(l))}else{let l=o-1;for(c=a;l>=0;){const u=this.tmpPoints[l].t;if(u&&(n==null||n.add(u),l<=a)){c=l,l=-1;break}l--}}return this.tmpPoints[this.tmpPoints.length-1].setT(i),c}updateTempPoints(e,t,n){var l;const i=Date.now(),o=this.tmpPoints.length;let a=o;for(let u=0;u<e.length;u+=2){const h=this.tmpPoints.length,d=new Pe(e[u],e[u+1]);if(h===0){this.tmpPoints.push(d);continue}const f=h-1,g=this.tmpPoints[f];if(d.x===g.x&&d.y===g.y)continue;const y=fe.Sub(d,g).uni();if(d.isNear(g,t/2)){if(g.t){d.setz(g.z),d.setv(y),this.tmpPoints.push(d),a=Math.min(f,a);continue}const S=this.tmpPoints[f-1],E=S?fe.Sub(d,S).uni():g.v;g.set(d.x,d.y,g.z,E),a=Math.min(f,a);continue}fe.Equals(y,g.v,.01)&&(g.t||this.tmpPoints.pop(),a=Math.min(f,a)),d.setv(y),this.tmpPoints.push(d)}let c=o;if(a===o){c=Math.max(c-1,0);const u=this.tmpPoints[c].t;u&&(n==null||n.add(u))}else{let u=Math.min(o-1,a);for(c=a;u>=0;){const h=(l=this.tmpPoints[u])==null?void 0:l.t;if(h&&(n==null||n.add(h),u<=a)){c=u,u=-1;break}u--}}return this.tmpPoints[this.tmpPoints.length-1].setT(i),c}updateTempPointsWithPressureWhenDone(e){const{thickness:t}=this.workOptions,n=e.length,i=this.getMinZ(t);for(let o=0;o<n;o+=2){const a=this.tmpPoints.length,c=new Pe(e[o],e[o+1]);if(a===0){this.tmpPoints.push(c);continue}const l=a-1,u=this.tmpPoints[l];if(c.x===u.x&&c.y===u.y){u.z<this.MAX_REPEAR&&u.setz(Math.min(u.z+1,this.MAX_REPEAR));continue}const h=fe.Sub(c,u).uni(),d=c.distance(u);if(a>1&&u.z===i)break;if(c.isNear(u,t/2)){let g=u.z;if(n<3&&u.z<this.MAX_REPEAR&&(g=Math.min(u.z+1,this.MAX_REPEAR),a>1)){let E=a-1;for(;E>0;){const C=this.tmpPoints[E].distance(this.tmpPoints[E-1]),L=Math.max(this.tmpPoints[E].z-this.uniThickness*C,-t/4);if(this.tmpPoints[E-1].z>=L)break;this.tmpPoints[E-1].setz(L),E--}}if(u.t){c.setz(g),c.setv(h),this.tmpPoints.push(c);continue}const y=this.tmpPoints[l-1],S=y?fe.Sub(c,y).uni():u.v;u.set(c.x,c.y,g,S);continue}c.setv(h);const f=Math.max(u.z-this.uniThickness*d,i);a>1&&fe.Equals(h,u.v,.01)&&u.z<=0&&(u.t||this.tmpPoints.pop()),c.setz(f),this.tmpPoints.push(c)}}static updateNodeOpt(e){var h,d;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a,lineCap:c,lineDash:l}=n,u=i.get(t.name);return o&&(t.tagName==="GROUP"?$0e(t)?t.setAttribute("bgcolor",o):t.children.forEach(f=>{f.setAttribute("strokeColor",o),f.getAttribute("fillColor")&&f.setAttribute("fillColor",o)}):(t.setAttribute("strokeColor",o),t.setAttribute("fillColor",o)),(h=u==null?void 0:u.opt)!=null&&h.strokeColor&&(u.opt.strokeColor=o)),a&&(u!=null&&u.opt)&&((d=u.opt)!=null&&d.strokeType)&&(u.opt.strokeType=a),c&&(u!=null&&u.opt)&&(u.opt.lineCap=c),l&&(u!=null&&u.opt)&&(u.opt.lineDash=l),u&&i.setInfo(t.name,u),Re.updateNodeOpt(e)}}class c0 extends Re{constructor(e){super(e);x(this,"toolsType",q.LaserPen);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"syncTimestamp");x(this,"syncIndex",0);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"consumeIndex",0);this.workOptions=e.toolsOpt,this.syncTimestamp=0}combineConsume(){}setWorkOptions(e){super.setWorkOptions(e),this.syncTimestamp=Date.now()}consume(e){const{data:t,isSubWorker:n}=e,{workId:i,op:o,syncUnitTime:a}=t;if((o==null?void 0:o.length)===0)return{type:le.None};if(a&&(this.syncUnitTime=a),this.updateTempPoints(o||[]),this.consumeIndex>this.tmpPoints.length-4)return{type:le.None};const{strokeColor:c,thickness:l,strokeType:u,lineDash:h,lineCap:d}=this.workOptions,f=it(this.tmpPoints,l);let g=!1;const y=this.syncIndex,S=this.tmpPoints.slice(this.consumeIndex);this.consumeIndex=this.tmpPoints.length-1,this.syncTimestamp===0&&(this.syncTimestamp=Date.now());const E={name:i==null?void 0:i.toString(),opacity:1,lineDash:u===Be.Dotted?[h&&h[0]||1,(h&&h[1]||2)*l]:u===Be.LongDotted?[(h&&h[0]||1)*l,(h&&h[1]||2)*l]:void 0,strokeColor:c,lineCap:d,lineWidth:l,anchor:[.5,.5]},C=this.getTaskPoints(S);if(C.length){const T=Date.now();T-this.syncTimestamp>this.syncUnitTime&&(g=!0,this.syncTimestamp=T,this.syncIndex=this.tmpPoints.length),n&&this.draw({attrs:E,tasks:C,isDot:!1,layer:this.drawLayer||this.fullLayer})}const L=[];return this.tmpPoints.slice(y).forEach(T=>{L.push(T.x,T.y)}),{rect:{x:f.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:f.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:f.w*this.fullLayer.worldScaling[0],h:f.h*this.fullLayer.worldScaling[1]},type:le.DrawWork,dataType:xe.Local,op:g?L:void 0,index:g?y*2:void 0,...this.baseConsumeResult}}consumeAll(){var o;const e=(o=this.workId)==null?void 0:o.toString();let t;if(this.tmpPoints.length-1>this.consumeIndex){let a=this.tmpPoints.slice(this.consumeIndex);const c=a.length===1,{strokeColor:l,thickness:u,strokeType:h}=this.workOptions;if(c){const g=this.computDotStroke({point:a[0],radius:u/2});a=g.ps,t=g.rect}else t=it(this.tmpPoints,u);const d={name:e==null?void 0:e.toString(),fillColor:c?l:void 0,opacity:1,lineDash:h===Be.Dotted&&!c?[1,u*2]:h===Be.LongDotted&&!c?[u,u*2]:void 0,strokeColor:l,lineCap:c?void 0:"round",lineWidth:c?0:u,anchor:[.5,.5]},f=this.getTaskPoints(a);f.length&&this.draw({attrs:d,tasks:f,isDot:c,layer:this.drawLayer||this.fullLayer})}const n=[];this.tmpPoints.forEach(a=>{n.push(a.x,a.y)});const i=xt(n);return{rect:t&&{x:t.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:t.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:t.w*this.fullLayer.worldScaling[0],h:t.h*this.fullLayer.worldScaling[1]},type:le.FullWork,dataType:xe.Local,ops:i,index:this.syncIndex*2,...this.baseConsumeResult}}clearTmpPoints(){this.tmpPoints.length=0,this.syncTimestamp=0,this.syncIndex=0}consumeService(e){var y;const{op:t,replaceId:n,isFullWork:i}=e,{strokeColor:o,thickness:a,strokeType:c}=this.workOptions;if(!t.length){const S=it(this.tmpPoints,a);return{x:S.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:S.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:S.w*this.fullLayer.worldScaling[0],h:S.h*this.fullLayer.worldScaling[1]}}const l=Math.max(0,this.tmpPoints.length-1);this.updateTempPoints(t||[]);let u,h=this.tmpPoints.slice(l);const d=h.length===1;if(d){const S=this.computDotStroke({point:h[0],radius:a/2});h=S.ps,u=S.rect}else u=it(this.tmpPoints,a);const f={name:(y=this.workId)==null?void 0:y.toString(),fillColor:d?o:void 0,opacity:1,lineDash:c===Be.Dotted&&!d?[1,a*2]:c===Be.LongDotted&&!d?[a,a*2]:void 0,strokeColor:o,lineCap:d?void 0:"round",lineWidth:d?0:a,anchor:[.5,.5]},g=this.getTaskPoints(h);if(g.length){const S=i?this.fullLayer:this.drawLayer||this.fullLayer;this.draw({attrs:f,tasks:g,isDot:d,replaceId:n,layer:S})}return{x:u.x*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],y:u.y*this.fullLayer.worldScaling[1]+this.fullLayer.worldPosition[1],w:u.w*this.fullLayer.worldScaling[0],h:u.h*this.fullLayer.worldScaling[1]}}computDotStroke(e){const{point:t,radius:n}=e,i={x:t.x-n,y:t.y-n,w:n*2,h:n*2};return{ps:Pe.GetDotStroke(t,n,8),rect:i}}updateTempPoints(e){const t=this.tmpPoints.length;for(let n=0;n<e.length;n+=2){if(t){const i=this.tmpPoints.slice(-1)[0];i&&i.x===e[n]&&i.y===e[n+1]&&this.tmpPoints.pop()}this.tmpPoints.push(new Pe(e[n],e[n+1]))}}async draw(e){const{attrs:t,tasks:n,isDot:i,layer:o}=e,{duration:a}=this.workOptions;for(const c of n){const l=new $t,{pos:u,points:h}=c;let d;i?d=Lr(h,!0):d=Lr(h,!1),l.attr({...t,pos:u,d}),o.appendChild(l),l.transition(a).attr({scale:i?[.1,.1]:[1,1],lineWidth:i?0:1}).then(()=>{l.remove()})}}getTaskPoints(e){var l;const t=[];if(e.length===0)return[];let n=0,i=e[0].x,o=e[0].y,a=[i,o],c=[];for(;n<e.length;){const u=e[n],h=u.x-i,d=u.y-o;if(c.push(new Pe(h,d)),n>0&&n<e.length-1){const f=e[n].getAngleByPoints(e[n-1],e[n+1]);if(f<60||f>300){const g=(l=c.pop())==null?void 0:l.clone();g&&t.push({pos:a,points:[...c,g]}),i=e[n].x,o=e[n].y,a=[i,o];const y=u.x-i,S=u.y-o;c=[new Pe(y,S)]}}n++}return t.push({pos:a,points:c}),t}removeLocal(){}removeService(e){let t;const n=[];return this.fullLayer.getElementsByName(e).forEach(i=>{if(i.name===e){const o=i.getBoundingClientRect();t=Ue(t,{x:o.x,y:o.y,w:o.width,h:o.height}),n.push(i)}}),n.length&&n.forEach(i=>i.remove()),t}}const ji=class ji extends Re{constructor(e,t){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"toolsType",q.Eraser);x(this,"serviceWork");x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"worldPosition");x(this,"worldScaling");x(this,"eraserRect");x(this,"eraserPolyline");this.serviceWork=t,this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(){}consumeService(){}setWorkOptions(e){super.setWorkOptions(e)}createEraserRect(e){const t=e[0]*this.worldScaling[0]+this.worldPosition[0],n=e[1]*this.worldScaling[1]+this.worldPosition[1],{width:i,height:o}=ji.eraserSizes[this.workOptions.thickness];this.eraserRect={x:t-i*.5,y:n-o*.5,w:i,h:o},this.eraserPolyline=[this.eraserRect.x,this.eraserRect.y,this.eraserRect.x+this.eraserRect.w,this.eraserRect.y+this.eraserRect.h]}computRectCenterPoints(){const e=this.tmpPoints.slice(-2);if(this.tmpPoints.length===4){const t=new fe(this.tmpPoints[0],this.tmpPoints[1]),n=new fe(this.tmpPoints[2],this.tmpPoints[3]),i=fe.Sub(n,t).uni(),o=fe.Dist(t,n),{width:a,height:c}=ji.eraserSizes[this.workOptions.thickness],l=Math.min(a,c),u=Math.round(o/l);if(u>1){const h=[];for(let d=0;d<u;d++){const f=fe.Mul(i,d*l);h.push(this.tmpPoints[0]+f.x,this.tmpPoints[1]+f.y)}return h.concat(e)}}return e}isNear(e,t){const n=new fe(e[0],e[1]),i=new fe(t[0],t[1]),{width:o,height:a}=ji.eraserSizes[this.workOptions.thickness];return fe.Dist(n,i)<Math.hypot(o,a)*.5}remove(e){const{curNodeMap:t,removeIds:n}=e;let i;for(const o of t.values())if(o.rect&&this.eraserRect&&this.eraserPolyline&&Ua(this.eraserRect,o.rect)){const{op:a}=o,c=[],l=[];for(let h=0;h<a.length;h+=3){const d=new fe(a[h]*this.worldScaling[0]+this.worldPosition[0],a[h+1]*this.worldScaling[1]+this.worldPosition[1],a[h+2]);l.push(d),c.push(new Pe(d.x,d.y))}const u=c.length&&it(c)||o.rect;Ua(u,this.eraserRect)&&(l.length>1?th.polyline(l.map(d=>d.XY),this.eraserPolyline).length&&n.add(o.name):n.add(o.name),i=Ue(i,o.rect||u))}return n.forEach(o=>{var c;const a=this.fullLayer.getElementsByName(o);a[0]&&(a[0].remove(),hr(a[0],this.fullLayer.parent),(c=this.vNodes)==null||c.delete(o))}),i&&(i.x-=Re.SafeBorderPadding,i.y-=Re.SafeBorderPadding,i.w+=Re.SafeBorderPadding*2,i.h+=Re.SafeBorderPadding*2),i}consume(e){const{op:t,disableEraseImage:n,disableEraseText:i}=e.data;if(!t||t.length===0)return{type:le.None,...this.baseConsumeResult};const o=this.tmpPoints.length;if(o>1&&this.isNear([t[0],t[1]],[this.tmpPoints[o-2],this.tmpPoints[o-1]]))return{type:le.None,...this.baseConsumeResult};o<3?this.tmpPoints.push(t[0],t[1]):this.tmpPoints.splice(2,2,t[0],t[1]);const a=this.computRectCenterPoints();let c;const l=new Set;if(!this.vNodes)return{type:le.None,...this.baseConsumeResult};const u=this.getCanEraserNodeMap(this.vNodes.getCanEraserNodes(this.vNodes.curNodeMap,{disableEraseImage:n,disableEraseText:i}));for(let h=0;h<a.length-1;h+=2){this.createEraserRect(a.slice(h,h+2));const d=this.remove({curNodeMap:u,removeIds:l});c=Ue(c,d)}return c&&l.size?{type:le.RemoveNode,rect:c,removeIds:[...l]}:{type:le.None,...this.baseConsumeResult}}consumeAll(e){return this.consume(e)}clearTmpPoints(){this.tmpPoints.length=0}getCanEraserNodeMap(e){var t;if(this.serviceWork){const n=new Map(e),i=this.serviceWork.selectorWorkShapes,o=this.serviceWork.workShapes;for(const a of i.values())if((t=a.selectIds)!=null&&t.length)for(const c of a.selectIds)n.delete(c);for(const a of o.keys())n.delete(a);return n}return e}};x(ji,"eraserSizes",hd);let Na=ji;const Bt="++",Le="selector",Bu="all";var Jpe="__lodash_hash_undefined__";function _pe(s){return this.__data__.set(s,Jpe),this}var eme=_pe;function tme(s){return this.__data__.has(s)}var rme=tme,nme=xv,ime=eme,sme=rme;function Oa(s){var r=-1,e=s==null?0:s.length;for(this.__data__=new nme;++r<e;)this.add(s[r])}Oa.prototype.add=Oa.prototype.push=ime;Oa.prototype.has=sme;var dd=Oa;function ome(s,r){for(var e=-1,t=s==null?0:s.length;++e<t;)if(r(s[e],e,s))return!0;return!1}var ame=ome;function cme(s,r){return s.has(r)}var fd=cme,lme=dd,ume=ame,hme=fd,dme=1,fme=2;function gme(s,r,e,t,n,i){var o=e&dme,a=s.length,c=r.length;if(a!=c&&!(o&&c>a))return!1;var l=i.get(s),u=i.get(r);if(l&&u)return l==r&&u==s;var h=-1,d=!0,f=e&fme?new lme:void 0;for(i.set(s,r),i.set(r,s);++h<a;){var g=s[h],y=r[h];if(t)var S=o?t(y,g,h,r,s,i):t(g,y,h,s,r,i);if(S!==void 0){if(S)continue;d=!1;break}if(f){if(!ume(r,function(E,C){if(!hme(f,C)&&(g===E||n(g,E,e,t,i)))return f.push(C)})){d=!1;break}}else if(!(g===y||n(g,y,e,t,i))){d=!1;break}}return i.delete(s),i.delete(r),d}var l0=gme;function pme(s){var r=-1,e=Array(s.size);return s.forEach(function(t,n){e[++r]=[n,t]}),e}var mme=pme;function yme(s){var r=-1,e=Array(s.size);return s.forEach(function(t){e[++r]=t}),e}var gd=yme,fp=fo,gp=Hv,vme=Zh,Mme=l0,wme=mme,Sme=gd,Tme=1,Cme=2,Ime="[object Boolean]",bme="[object Date]",Eme="[object Error]",xme="[object Map]",Rme="[object Number]",kme="[object RegExp]",Ame="[object Set]",Pme="[object String]",Dme="[object Symbol]",Lme="[object ArrayBuffer]",Nme="[object DataView]",pp=fp?fp.prototype:void 0,Bl=pp?pp.valueOf:void 0;function Ome(s,r,e,t,n,i,o){switch(e){case Nme:if(s.byteLength!=r.byteLength||s.byteOffset!=r.byteOffset)return!1;s=s.buffer,r=r.buffer;case Lme:return!(s.byteLength!=r.byteLength||!i(new gp(s),new gp(r)));case Ime:case bme:case Rme:return vme(+s,+r);case Eme:return s.name==r.name&&s.message==r.message;case kme:case Pme:return s==r+"";case xme:var a=wme;case Ame:var c=t&Tme;if(a||(a=Sme),s.size!=r.size&&!c)return!1;var l=o.get(s);if(l)return l==r;t|=Cme,o.set(s,r);var u=Mme(a(s),a(r),t,n,i,o);return o.delete(s),u;case Dme:if(Bl)return Bl.call(s)==Bl.call(r)}return!1}var zme=Ome,mp=$v,Bme=1,jme=Object.prototype,Fme=jme.hasOwnProperty;function Ume(s,r,e,t,n,i){var o=e&Bme,a=mp(s),c=a.length,l=mp(r),u=l.length;if(c!=u&&!o)return!1;for(var h=c;h--;){var d=a[h];if(!(o?d in r:Fme.call(r,d)))return!1}var f=i.get(s),g=i.get(r);if(f&&g)return f==r&&g==s;var y=!0;i.set(s,r),i.set(r,s);for(var S=o;++h<c;){d=a[h];var E=s[d],C=r[d];if(t)var L=o?t(C,E,d,r,s,i):t(E,C,d,s,r,i);if(!(L===void 0?E===C||n(E,C,e,t,i):L)){y=!1;break}S||(S=d=="constructor")}if(y&&!S){var T=s.constructor,p=r.constructor;T!=p&&"constructor"in s&&"constructor"in r&&!(typeof T=="function"&&T instanceof T&&typeof p=="function"&&p instanceof p)&&(y=!1)}return i.delete(s),i.delete(r),y}var Wme=Ume,jl=Rv,Vme=l0,$me=zme,Yme=Wme,yp=Ac,vp=go,Mp=Xh,Gme=Ov,Hme=1,wp="[object Arguments]",Sp="[object Array]",_o="[object Object]",Qme=Object.prototype,Tp=Qme.hasOwnProperty;function qme(s,r,e,t,n,i){var o=vp(s),a=vp(r),c=o?Sp:yp(s),l=a?Sp:yp(r);c=c==wp?_o:c,l=l==wp?_o:l;var u=c==_o,h=l==_o,d=c==l;if(d&&Mp(s)){if(!Mp(r))return!1;o=!0,u=!1}if(d&&!u)return i||(i=new jl),o||Gme(s)?Vme(s,r,e,t,n,i):$me(s,r,c,e,t,n,i);if(!(e&Hme)){var f=u&&Tp.call(s,"__wrapped__"),g=h&&Tp.call(r,"__wrapped__");if(f||g){var y=f?s.value():s,S=g?r.value():r;return i||(i=new jl),n(y,S,e,t,i)}}return d?(i||(i=new jl),Yme(s,r,e,t,n,i)):!1}var Zme=qme,Kme=Zme,Cp=zr;function u0(s,r,e,t,n){return s===r?!0:s==null||r==null||!Cp(s)&&!Cp(r)?s!==s&&r!==r:Kme(s,r,e,t,u0,n)}var Xme=u0,Jme=Xme;function _me(s,r){return Jme(s,r)}var eye=_me;const nn=ln(eye);function po(s,r,e){return"#"+((s<<16)+(r<<8)+e).toString(16).padStart(6,"0")}function Et(s,r=1){return"rgba("+parseInt("0x"+s.slice(1,3))+","+parseInt("0x"+s.slice(3,5))+","+parseInt("0x"+s.slice(5,7))+","+r+")"}function qn(s,r,e,t=1){return`rgba(${s},${r},${e},${t})`}function Lc(s){const r=s.split(","),e=parseInt(r[0].split("(")[1]),t=parseInt(r[1]),n=parseInt(r[2]),i=Number(r[3].split(")")[0]);return[po(e,t,n),i]}function As(s){const r=s.split(","),e=parseInt(r[0].split("(")[1]),t=parseInt(r[1]),n=parseInt(r[2]),i=Number(r[3].split(")")[0]);return[e,t,n,i]}function ea(s){return s==="transparent"}const Fl="rgb(177,177,177)",$a=class $a extends Re{constructor(e){var t;super(e);x(this,"toolsType",q.Selector);x(this,"tmpPoints",[]);x(this,"subTmpPoints",[]);x(this,"workOptions");x(this,"vNodes");x(this,"selectIds");x(this,"selectorColor");x(this,"strokeColor");x(this,"fillColor");x(this,"oldSelectRect");x(this,"oldSubSelectRect");x(this,"canRotate",!1);x(this,"canTextEdit",!1);x(this,"canLock",!1);x(this,"scaleType",Ye.all);x(this,"toolsTypes");x(this,"shapeOpt");x(this,"textOpt");x(this,"isLocked");x(this,"thickness");x(this,"strokeType");x(this,"useStroke");this.workOptions={...e.toolsOpt,strokeColor:((t=e.toolsOpt)==null?void 0:t.strokeColor)||Fl},this.vNodes=e.vNodes}computSelector(e=!0){const t=it(this.tmpPoints);if(t.w===0||t.h===0)return{selectIds:[],intersectRect:void 0,subNodeMap:new Map};const{rectRange:n,nodeRange:i}=this.vNodes.getRectIntersectRange(t,e);return{selectIds:[...i.keys()],intersectRect:n,subNodeMap:i}}updateTempPoints(e){const t=this.tmpPoints.length,n=e.length;if(n>1){const i=new Pe(e[n-2]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[n-1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]);t===2?this.tmpPoints.splice(1,1,i):this.tmpPoints.push(i)}}drawSelector(e){const{drawRect:t,subNodeMap:n,selectorId:i,layer:o,isService:a}=e,c=new dt({pos:[t.x,t.y],anchor:[0,0],size:[t.w,t.h],id:i,name:i,zIndex:9999}),l=[];if(a){const u=new Gs({normalize:!0,pos:[t.w/2,t.h/2],lineWidth:1,strokeColor:this.selectorColor||this.workOptions.strokeColor||Fl,width:t.w,height:t.h,name:$a.selectorBorderId});l.push(u)}n.forEach((u,h)=>{const d=[u.rect.x+u.rect.w/2-t.x,u.rect.y+u.rect.h/2-t.y],f=new Gs({normalize:!0,pos:d,lineWidth:1,strokeColor:n.size>1?this.selectorColor||this.workOptions.strokeColor||Fl:void 0,width:u.rect.w,height:u.rect.h,id:`selector-${h}`,name:`selector-${h}`});l.push(f)}),l&&c.append(...l),(o==null?void 0:o.parent).appendChild(c)}draw(e,t,n,i=!1){var c,l;const{intersectRect:o,subNodeMap:a}=n;(l=(c=t.parent)==null?void 0:c.getElementById(e))==null||l.remove(),o&&this.drawSelector({drawRect:o,subNodeMap:a,selectorId:e,layer:t,isService:i})}getSelecteorInfo(e){this.scaleType=Ye.all,this.canRotate=!1,this.textOpt=void 0,this.strokeColor=void 0,this.fillColor=void 0,this.canTextEdit=!1,this.canLock=!1,this.isLocked=!1,this.toolsTypes=void 0,this.shapeOpt=void 0,this.thickness=void 0,this.strokeType=void 0,this.useStroke=!1;const t=new Set;let n,i=!0;for(const o of e.values()){const{opt:a,canRotate:c,scaleType:l,toolsType:u}=o;this.selectorColor=this.workOptions.strokeColor,a.strokeColor&&(this.strokeColor=a.strokeColor),a.fillColor&&(this.fillColor=a.fillColor),a.textOpt&&(this.textOpt=a.textOpt),a.thickness&&(this.thickness=a.thickness),u!==q.Pencil&&(i=!1),a.strokeType&&(this.strokeType=a.strokeType),u===q.SpeechBalloon&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.placement=a.placement),u===q.Polygon&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=a.vertices),u===q.Star&&(t.add(u),this.shapeOpt||(this.shapeOpt={}),this.shapeOpt.vertices=a.vertices,this.shapeOpt.innerRatio=a.innerRatio,this.shapeOpt.innerVerticeStep=a.innerVerticeStep),u===q.Text&&(this.textOpt=a),e.size===1&&(this.textOpt&&(this.canTextEdit=!0),this.canRotate=c,this.scaleType=l),(u===q.Image||u===q.BackgroundSVG)&&(n=o),(l===Ye.proportional&&this.scaleType!==Ye.none||l===Ye.none)&&(this.scaleType=l)}i&&(this.useStroke=!0),t.size&&(this.toolsTypes=[...t]),n&&(e.size===1?(this.canLock=!0,(n.toolsType===q.BackgroundSVG?n.opt.locked!==!1:n.opt.locked)&&(this.isLocked=!0,this.scaleType=Ye.none,this.canRotate=!1,this.textOpt=void 0,this.fillColor=void 0,this.selectorColor="rgb(177,177,177)",this.strokeColor=void 0,this.canTextEdit=!1,this.thickness=void 0,this.strokeType=void 0,this.useStroke=void 0)):e.size>1&&!n.opt.locked&&(this.canLock=!1,this.canRotate=!1))}getChildrenPoints(){var e,t;if(this.scaleType===Ye.both&&((e=this.selectIds)==null?void 0:e.length)===1){const n=this.selectIds[0],i=(t=this.vNodes.get(n))==null?void 0:t.op;if(i){const o=[];for(let a=0;a<i.length;a+=3)o.push([i[a],i[a+1]]);return o}}}consume(e){if(e.isSubWorker)return this.subWorkerConsume(e);let t={type:le.Select,dataType:xe.Local,...this.baseConsumeResult};if(e.isSimpleWorker){const u=this.subWorkerConsume(e);t.subRect=u.rect}const{op:n,workState:i}=e.data;let o=this.oldSelectRect;if(i===de.Start&&(o=this.unSelectedAllIds()),!(n!=null&&n.length)||!this.vNodes.curNodeMap.size)return e.isSimpleWorker?t:{type:le.None};this.updateTempPoints(n);const a=this.computSelector();if(this.selectIds&&nn(this.selectIds,a.selectIds))return e.isSimpleWorker?t:{type:le.None};this.selectIds=a.selectIds;const c=a.intersectRect;this.getSelecteorInfo(a.subNodeMap),this.draw(Le,this.fullLayer,a),this.oldSelectRect=c;const l=this.getChildrenPoints();return t={...t,rect:Ue(c,o),selectIds:a.selectIds,selectRect:c,selectorColor:this.selectorColor,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:l,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType},t}consumeAll(){var o,a;let e=this.oldSelectRect;const t=this.tmpPoints[0],n=this.tmpPoints[this.tmpPoints.length-1],i=t&&(!n||t.isNear(n,1));if(!((o=this.selectIds)!=null&&o.length)&&t&&i&&this.selectSingleTool(this.tmpPoints[0].XY,Le,!1),(a=this.selectIds)!=null&&a.length&&(e=this.selectedByIds(this.selectIds)),e){const c=this.getChildrenPoints();return{type:le.Select,dataType:xe.Local,rect:this.oldSelectRect,selectIds:this.selectIds,selectorColor:this.selectorColor,selectRect:this.oldSelectRect,strokeColor:this.strokeColor,fillColor:this.fillColor,textOpt:this.textOpt,canTextEdit:this.canTextEdit,canRotate:this.canRotate,canLock:this.canLock,scaleType:this.scaleType,willSyncService:!0,points:c,isLocked:this.isLocked,toolsTypes:this.toolsTypes,shapeOpt:this.shapeOpt,thickness:this.thickness,useStroke:this.useStroke,strokeType:this.strokeType,...this.baseConsumeResult}}return{type:le.Select,dataType:xe.Local,...this.baseConsumeResult}}consumeService(){}updateTempPointsForSubWorker(e){const t=e.slice(-2),n=new Pe(t[0],t[1]);if(this.subTmpPoints[0].isNear(n,1))return!1;if(this.subTmpPoints.length===2){if(n.isNear(this.subTmpPoints[1],1))return!1;this.subTmpPoints[1]=n}else this.subTmpPoints.push(n);return!0}computDrawPoints(e){const{thickness:t}=this.workOptions,n=[];for(const a of e)n.push(new fe(...a));const i=it(n,t),o=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:o,points:n.map(a=>a.XY).flat(1)}}drawForSubWorker(e){const{workId:t,layer:n,ps:i}=e,{strokeColor:o,scale:a,rotate:c,translate:l}=this.workOptions,u=n.worldPosition,h=n.worldScaling,{points:d,rect:f,pos:g}=this.computDrawPoints(i),y=1/n.worldScaling[0],S=o&&As(o)||[0,0,0,0],E={close:!0,normalize:!0,points:d,lineWidth:y,fillColor:qn(S[0],S[1],S[2],.1),strokeColor:qn(S[0],S[1],S[2],1),lineJoin:"round",lineCap:"round"};let C={x:Math.floor(f.x*h[0]+u[0]-Re.SafeBorderPadding),y:Math.floor(f.y*h[1]+u[1]-Re.SafeBorderPadding),w:Math.floor(f.w*h[0]+2*Re.SafeBorderPadding),h:Math.floor(f.h*h[0]+2*Re.SafeBorderPadding)};const L=new dt({name:t,id:t,pos:g,anchor:[.5,.5],size:[f.w,f.h],scale:a,rotate:c,translate:l}),T=new Ir({...E,pos:[0,0]});if(L.appendChild(T),this.replace(n,t,L),a||c||l){const p=L.getBoundingClientRect();C={x:Math.floor(p.x-Re.SafeBorderPadding),y:Math.floor(p.y-Re.SafeBorderPadding),w:Math.floor(p.width+2*Re.SafeBorderPadding),h:Math.floor(p.height+2*Re.SafeBorderPadding)}}return C}transformData(e){const t=it(e);return[[t.x,t.y,0],[t.x+t.w,t.y,0],[t.x+t.w,t.y+t.h,0],[t.x,t.y+t.h,0]]}subWorkerConsume(e){const{data:t,isFullWork:n}=e,{op:i,syncUnitTime:o}=t;o&&(this.syncUnitTime=o);const a=i==null?void 0:i.length;if(!a||a<2)return{type:le.None,rect:void 0};let c;if(this.subTmpPoints.length===0?(this.subTmpPoints=[new Pe(i[0],i[1])],c=!1):c=this.updateTempPointsForSubWorker(i),!c)return{type:le.None,rect:void 0};const l=this.transformData(this.subTmpPoints),u=n?this.fullLayer:this.drawLayer||this.fullLayer,h=this.drawForSubWorker({ps:l,workId:this.workId,layer:u}),d=Ue(h,this.oldSubSelectRect);return this.oldSubSelectRect=h,{rect:d,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult}}subWorkerConsumeAll(e){const{isFullWork:t}=e,n=t?this.fullLayer:this.drawLayer||this.fullLayer;return this.replace(n,this.workId),{rect:this.oldSelectRect,type:le.FullWork,dataType:xe.Local,...this.baseConsumeResult}}clearSubTmpPoints(){this.subTmpPoints.length=0}clearTmpPoints(){this.tmpPoints.length=0,this.clearSubTmpPoints()}clearSubSelectData(){this.oldSubSelectRect=void 0}clearSelectData(){this.selectIds=void 0,this.oldSelectRect=void 0,this.clearSubSelectData()}selectSingleTool(e,t=Le,n=!1){if(e.length===2){const i=e[0],o=e[1];let a;const{nodeRange:c}=this.vNodes.getRectIntersectRange({x:i,y:o,w:0,h:0},!1),l=[...c.values()].sort((u,h)=>(h.opt.zIndex||0)-(u.opt.zIndex||0));for(const u of l){const h=this.fullLayer.getElementsByName(u.name);if(b0(h).find(f=>f.isPointCollision(i,o))){a=u;break}}if(a){const u=a.name;if(!nn(this.oldSelectRect,a.rect)){const h=new Map([[u,a]]);this.getSelecteorInfo(h),this.draw(t,this.fullLayer,{intersectRect:a.rect,subNodeMap:h,selectIds:this.selectIds||[]},n)}this.selectIds=[u],this.oldSelectRect=a.rect}}}unSelectedAllIds(){let e;for(const[t,n]of this.vNodes.curNodeMap.entries())n.isSelected&&(e=Ue(e,n.rect),this.vNodes.unSelected(t));return e}unSelectedByIds(e){let t;for(const n of e){const i=this.vNodes.get(n);i&&i.isSelected&&(t=Ue(t,i.rect),this.vNodes.unSelected(n))}return t}selectedByIds(e){let t;for(const n of e){const i=this.vNodes.get(n);i&&(t=Ue(t,i.rect),this.vNodes.selected(n))}return t}getSelectorRect(e,t){var a;let n;const i=(a=e.parent)==null?void 0:a.getElementById(t),o=i==null?void 0:i.getBoundingClientRect();return o&&(n=Ue(n,{x:Math.floor(o.x),y:Math.floor(o.y),w:Math.floor(o.width+1),h:Math.floor(o.height+1)})),n}isCanFillColor(e){return e===q.Ellipse||e===q.Triangle||e===q.Rectangle||e===q.Polygon||e===q.Star||e===q.SpeechBalloon}async updateSelector(e){const{updateSelectorOpt:t,selectIds:n,vNodes:i,willSerializeData:o,worker:a,offset:c}=e,l=this.fullLayer;if(!l)return;let u;const h=new Map,{originPoint:d,workState:f,angle:g,translate:y,dir:S,scale:E}=t;c&&(y?t.translate=[y[0]+c[0],y[1]+c[1]]:t.translate=c);let C;if(d||y||yt(g)){if(f===de.Start&&n)return i.setTargetAssignKeys(n),{type:le.Select,dataType:xe.Local,selectRect:this.oldSelectRect,rect:this.oldSelectRect};if(C=i.getLastTarget(),!C)return}if(n)for(const p of n){const m=i.get(p);if(m){const{toolsType:M,opt:v}=m,R=(l==null?void 0:l.getElementsByName(p))[0];if(R){const b={...t};let P;const D=Re.isWillRefresh({toolsType:M,opt:v,updateOpt:b,vNodes:i,node:R,willSerializeData:o});if(M){P=C==null?void 0:C.get(p);const z=Oc(M);z==null||z.updateNodeOpt({node:R,opt:b,vNodes:i,willSerializeData:o,targetNode:P});const j=i.get(p)||m;if(j&&a&&D){const A=a.createWorkShapeNode({workId:p,toolsType:M,toolsOpt:j.opt});A==null||A.setWorkId(p);let k;if(M===q.BackgroundSVG)k=A.consumeService({isFullWork:!0,replaceId:p});else if(M===q.Image)k=await A.consumeServiceAsync({isFullWork:!0,replaceId:p,worker:a});else if(M===q.Text)k=await A.consumeServiceAsync({isFullWork:!0,replaceId:p,isDrawLabel:!0});else try{k=A==null?void 0:A.consumeService({op:j.op,isFullWork:!0,replaceId:p,workState:f})}catch(N){console.error("consumeService error",N);continue}k&&(j.rect=k)}j&&(h.set(p,j),u=Ue(u,j.rect))}}}}C&&f===de.Done&&(i.deleteLastTarget(),C=void 0);const L=u;if(d&&y&&E&&S&&L&&!c){const p=[[L.x,L.y],[L.x+L.w,L.y],[L.x+L.w,L.y+L.h],[L.x,L.y+L.h]];let m;switch(S){case"top":case"topLeft":case"left":y[0]>0&&y[1]>0?m=p[0]:y[0]>0?m=p[3]:y[1]>0?m=p[1]:m=p[2];break;case"topRight":y[0]<0&&y[1]>0?m=p[1]:y[0]<0?m=p[2]:y[1]>0?m=p[0]:m=p[3];break;case"right":case"bottomRight":case"bottom":y[0]<0&&y[1]<0?m=p[2]:y[0]<0?m=p[1]:y[1]<0?m=p[3]:m=p[0];break;case"bottomLeft":y[0]>0&&y[1]<0?m=p[3]:y[0]>0?m=p[0]:y[1]<0?m=p[2]:m=p[1];break}const M=m&&[d[0]-m[0],d[1]-m[1]]||[0,0];if(!nn(M,[0,0]))return await this.updateSelector({...e,updateSelectorOpt:{workState:f},offset:M})}this.getSelecteorInfo(h),this.draw(Le,l,{selectIds:n||[],subNodeMap:h,intersectRect:L});const T=Ue(this.oldSelectRect,L);return this.oldSelectRect=L,{type:le.Select,dataType:xe.Local,selectRect:L,renderRect:u,rect:Ue(T,L),selectIds:n}}blurSelector(){const e=this.unSelectedAllIds();return{type:le.Select,dataType:xe.Local,rect:e,selectIds:[],willSyncService:!0}}getRightServiceId(e){return e.replace(Bt,"-")}selectServiceNode(e,t,n){const{selectIds:i}=t,o=this.getRightServiceId(e),a=this.getSelectorRect(this.fullLayer,o);let c;const l=new Map;return i==null||i.forEach(u=>{const h=this.vNodes.get(u);h&&(c=Ue(c,h.rect),l.set(u,h))}),this.getSelecteorInfo(l),this.draw(o,this.fullLayer,{intersectRect:c,selectIds:i||[],subNodeMap:l},n),Ue(c,a)}reRenderSelector(){var n;let e;const t=new Map;return(n=this.selectIds)==null||n.forEach(i=>{const o=this.vNodes.get(i);o&&(e=Ue(e,o.rect),t.set(i,o))},this),this.getSelecteorInfo(t),this.draw(Le,this.fullLayer,{intersectRect:e,subNodeMap:t,selectIds:this.selectIds||[]}),this.oldSelectRect=e,e}updateSelectIds(e){var o;let t;const n=(o=this.selectIds)==null?void 0:o.filter(a=>!e.includes(a));if(n!=null&&n.length&&(t=this.unSelectedByIds(n)),e.length){const a=this.selectedByIds(e);t=Ue(t,a)}this.selectIds=e;const i=this.reRenderSelector();return{bgRect:t,selectRect:i}}cursorHover(e){var o,a;const t=this.oldSelectRect;this.selectIds=[];const n=(o=this.workId)==null?void 0:o.toString(),i=[e[0]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[0],e[1]*this.fullLayer.worldScaling[0]+this.fullLayer.worldPosition[1]];if(this.selectSingleTool(i,n,!0),this.oldSelectRect&&!nn(t,this.oldSelectRect))return{type:le.CursorHover,dataType:xe.Local,rect:Ue(t,this.oldSelectRect),selectorColor:this.selectorColor,willSyncService:!1};if((a=this.selectIds)!=null&&a.length||(this.oldSelectRect=void 0),t&&!this.oldSelectRect)return this.cursorBlur(),{type:le.CursorHover,dataType:xe.Local,rect:t,selectorColor:this.selectorColor,willSyncService:!1}}cursorBlur(){var t,n;this.selectIds=[];const e=(t=this.workId)==null?void 0:t.toString();((n=this.fullLayer)==null?void 0:n.parent).children.forEach(i=>{i.name===e&&i.remove()})}};x($a,"selectorBorderId","selector-border");let za=$a;class h0 extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.both);x(this,"toolsType",q.Arrow);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"arrowTipWidth");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.arrowTipWidth=this.workOptions.thickness*4,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=t;h&&(this.syncUnitTime=h);const d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:S})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const E={rect:S,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,E.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),E.index=0,E.isSync=!0)}return E}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{...this.baseConsumeResult,type:le.DrawWork,dataType:xe.Local,op:this.tmpPoints.map(E=>[...E.XY,0]).flat(1),isSync:!0,index:0}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,...this.baseConsumeResult,type:le.DrawWork,dataType:xe.Local}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.fullLayer,n=this.draw({workId:e,layer:t});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Re.getCenterPos(n,t)}),{rect:n,...this.baseConsumeResult,type:le.FullWork,dataType:xe.Local,ops:o,isSync:!0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawEraserlines:i}=e,{strokeColor:o,thickness:a,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f,eraserFaces:g,doingLines:y,lineDash:S,lineCap:E}=this.workOptions,C=n.worldPosition,L=n.worldScaling,{points:T,pos:p,rect:m,isTriangle:M,trianglePoints:v,trianglePos:R}=this.computDrawPoints(a),b=[m.x+m.w/2,m.y+m.h/2],P={pos:b,name:t,id:t,zIndex:c,anchor:[.5,.5],size:[m.w,m.h]};l&&(P.scale=l),u&&(P.rotate=u),h&&(P.translate=h);const D=new dt(P),z={points:v,pos:[R[0]-b[0],R[1]-b[1]],fillColor:o,strokeColor:o,lineWidth:0,normalize:!1},j=new Ir(z);if(D.append(j),!M&&T&&p){const k={points:T,pos:[p[0]-b[0],p[1]-b[1]],fillColor:o,strokeColor:o,lineDash:d===Be.Dotted?[S&&S[0]||1,(S&&S[1]||2)*a]:d===Be.LongDotted?[(S&&S[0]||1)*a,(S&&S[1]||2)*a]:void 0,lineCap:d===Be.Normal?void 0:E,lineWidth:a,normalize:!1},N=new Ir(k);D.append(N)}(f||g||y)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:D,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:b,layer:n},i)),this.replace(n,t,D);let A={x:Math.floor(m.x*L[0]+C[0]-Re.SafeBorderPadding),y:Math.floor(m.y*L[1]+C[1]-Re.SafeBorderPadding),w:Math.floor(m.w*L[0]+2*Re.SafeBorderPadding),h:Math.floor(m.h*L[1]+2*Re.SafeBorderPadding)};if(l||u||h){const k=D.getBoundingClientRect();A={x:Math.floor(k.x-Re.SafeBorderPadding),y:Math.floor(k.y-Re.SafeBorderPadding),w:Math.floor(k.width+Re.SafeBorderPadding*2),h:Math.floor(k.height+Re.SafeBorderPadding*2)}}return this.isDelete&&D.setAttribute("opacity",0),A}computDrawPoints(e){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.arrowTipWidth?this.computFullArrowPoints(e):this.computTrianglePoints()}computFullArrowPoints(e){const t=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),n=fe.Per(t).mul(e/2),i=Pe.Sub(this.tmpPoints[0],n),o=Pe.Add(this.tmpPoints[0],n),a=fe.Mul(t,this.arrowTipWidth),c=fe.Sub(this.tmpPoints[1],a),l=Pe.Sub(c,n),u=Pe.Add(c,n),h=fe.Per(t).mul(e*1.5),d=Pe.Sub(c,h),f=Pe.Add(c,h),g=[this.tmpPoints[0],c],y=[d,this.tmpPoints[1],f],S=[i,o,...y,l,u];return{trianglePoints:y.map(E=>Pe.Sub(E,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,points:g.map(E=>Pe.Sub(E,this.tmpPoints[0]).XY).flat(1),rect:it(S),isTriangle:!1,pos:this.tmpPoints[0].XY}}computTrianglePoints(){const e=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),t=this.tmpPoints[1].distance(this.tmpPoints[0]),n=fe.Per(e).mul(Math.floor(t*3/8)),i=Pe.Sub(this.tmpPoints[0],n),o=Pe.Add(this.tmpPoints[0],n),a=[i,this.tmpPoints[1],o];return{trianglePoints:a.map(c=>Pe.Sub(c,this.tmpPoints[1]).XY).flat(1),trianglePos:this.tmpPoints[1].XY,rect:it(a),isTriangle:!0}}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:t,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new Pe(t[h],t[h+1],t[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Re.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a}=n,c=i.get(t.name);return o&&(t.tagName==="GROUP"?t.children.forEach(h=>{h.setAttribute("strokeColor",o),h.getAttribute("fillColor")&&h.setAttribute("fillColor",o)}):(t.setAttribute("strokeColor",o),t.setAttribute("fillColor",o)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=o)),a&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=a),c&&i.setInfo(t.name,c),Re.updateNodeOpt(e)}}class d0 extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",q.Ellipse);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=t;h&&(this.syncUnitTime=h);const d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const y=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:y,isDrawing:!0});const S=y.parent.parent,E={x:0,y:0,w:Math.floor(S.width),h:Math.floor(S.height)},C={type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult};if(Bc(g,E)!==sn.outside){const T=Ue(g,this.oldRect);if(this.oldRect=g,C.rect=T,!c)return C}if(c){const T=Date.now();return T-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=T,C.op=this.tmpPoints.map(p=>[...p.XY,0]).flat(1),C.index=0,C.isSync=!0),C}return{type:le.None}}if(!i&&!o&&!c&&a){const y=Date.now();return y-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=y,{type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult,op:this.tmpPoints.map(S=>[...S.XY,0]).flat(1),isSync:!0,index:0}):{type:le.None}}return{type:le.None}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.fullLayer,n=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:n&&Re.getCenterPos(n,t)}),{rect:n,type:le.FullWork,dataType:xe.Local,...this.baseConsumeResult,ops:o,isSync:!0,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawing:i,isDrawEraserlines:o}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:y,eraserFaces:S,doingLines:E,lineDash:C,lineCap:L}=this.workOptions,T=n.worldScaling,{radius:p,rect:m,pos:M}=this.computDrawPoints(l),v={closeType:"normal",radius:p,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:L,lineDash:g===Be.Dotted?[C&&C[0]||1,(C&&C[1]||2)*l]:g===Be.LongDotted?[(C&&C[0]||1)*l,(C&&C[1]||2)*l]:void 0},R={name:t,id:t,zIndex:u,pos:M,anchor:[.5,.5],size:[m.w,m.h]};h&&(R.scale=h),d&&(R.rotate=d),f&&(R.translate=f);const b=new dt(R);if(i){const z=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/T[0],1/T[1]]});b.append(z)}const P=new Qh({...v,pos:[0,0]});b.append(P),(y||S||E)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:b,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:S,pos:M,layer:n},o)),this.replace(n,t,b);const D=b.getBoundingClientRect();return this.isDelete&&b.setAttribute("opacity",0),{x:Math.floor(D.x-Re.SafeBorderPadding),y:Math.floor(D.y-Re.SafeBorderPadding),w:Math.floor(D.width+Re.SafeBorderPadding*2),h:Math.floor(D.height+Re.SafeBorderPadding*2)}}computDrawPoints(e){const t=it(this.tmpPoints),n=it(this.tmpPoints,e),i=[Math.floor(t.x+t.w/2),Math.floor(t.y+t.h/2)];return{rect:n,pos:i,radius:[Math.floor(t.w/2),Math.floor(t.h/2)]}}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:t,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new Pe(t[h],t[h+1],t[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,canRotate:this.canRotate,scaleType:this.scaleType,centerPos:Re.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,strokeType:c}=n,l=i.get(t.name);let u=t;return t.tagName==="GROUP"&&(u=t.children[0]),o&&(u.setAttribute("strokeColor",o),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=o)),a&&(a==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",a),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=a)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&i.setInfo(t.name,l),Re.updateNodeOpt(e)}}class f0 extends Re{constructor(e){super(e);x(this,"canRotate",!0);x(this,"scaleType",Ye.all);x(this,"toolsType",q.Rectangle);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}transformData(){const e=it(this.tmpPoints);return[[e.x,e.y,0],[e.x+e.w,e.y,0],[e.x+e.w,e.y+e.h,0],[e.x,e.y+e.h,0]]}computDrawPoints(e){const{thickness:t}=this.workOptions,n=[];for(const a of e)n.push(new fe(...a));const i=it(n,t),o=[i.x+i.w/2,i.y+i.h/2];return{rect:i,pos:o,points:n.map(a=>a.XY).flat(1)}}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u}=t,h=u==null?void 0:u.length;if(!h||h<2)return{type:le.None};let d;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],d=!1):d=this.updateTempPoints(u),!d)return{type:le.None};const f=this.transformData();let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({ps:f,workId:l,layer:S,isDrawing:!0})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const E={rect:S,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,E.op=f.flat(1),E.index=0,E.isSync=!0)}return E}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:xe.Local,op:f.flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult}}consumeAll(){var c;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.transformData(),n=this.fullLayer,i=this.draw({ps:t,workId:e,layer:n,isDrawing:!1});this.oldRect=i;const o=t.flat(1),a=xt(o);return(c=this.vNodes)==null||c.setInfo(e,{rect:i,op:o,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Re.getCenterPos(i,n)}),{rect:i,type:le.FullWork,dataType:xe.Local,ops:a,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawing:i,ps:o,replaceId:a,isDrawEraserlines:c=!0}=e,{strokeColor:l,fillColor:u,thickness:h,zIndex:d,scale:f,rotate:g,translate:y,strokeType:S,eraserlines:E,eraserFaces:C,doingLines:L,lineCap:T,lineDash:p}=this.workOptions,m=n.worldPosition,M=n.worldScaling,{points:v,rect:R,pos:b}=this.computDrawPoints(o),P={close:!0,normalize:!0,points:v,lineWidth:h,fillColor:u!=="transparent"&&u||void 0,strokeColor:l,lineCap:T,lineDash:S===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*h]:S===Be.LongDotted?[(p&&p[0]||1)*h,(p&&p[1]||2)*h]:void 0};let D={x:Math.floor(R.x*M[0]+m[0]-Re.SafeBorderPadding),y:Math.floor(R.y*M[1]+m[1]-Re.SafeBorderPadding),w:Math.floor(R.w*M[0]+2*Re.SafeBorderPadding),h:Math.floor(R.h*M[0]+2*Re.SafeBorderPadding)};const z=new dt({name:t,id:t,zIndex:d,pos:b,anchor:[.5,.5],size:[R.w,R.h],scale:f,rotate:g,translate:y}),j=new Ir({...P,pos:[0,0]});if(z.appendChild(j),i){const A=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:l,lineWidth:1,scale:[1/M[0],1/M[1]]});z.appendChild(A)}if((E||C||L)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:z,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:C,pos:b,layer:n},c)),this.replace(n,a||t,z),f||g||y){const A=z.getBoundingClientRect();D={x:Math.floor(A.x-Re.SafeBorderPadding),y:Math.floor(A.y-Re.SafeBorderPadding),w:Math.floor(A.width+2*Re.SafeBorderPadding),h:Math.floor(A.height+2*Re.SafeBorderPadding)}}return this.isDelete&&z.setAttribute("opacity",0),D}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var h,d;const{op:t,isFullWork:n,replaceId:i,workState:o=de.Done}=e,a=(h=this.workId)==null?void 0:h.toString();if(!a)return;const c=[];for(let f=0;f<t.length;f+=3)c.push([t[f],t[f+1],t[f+2]]);const l=n?this.fullLayer:this.drawLayer||this.fullLayer,u=this.draw({ps:c,workId:a,layer:l,isDrawing:!1,replaceId:i,isDrawEraserlines:o===de.Done});return this.oldRect=u,(d=this.vNodes)==null||d.setInfo(a,{rect:u,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Re.getCenterPos(u,l)}),u}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var h,d,f;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,strokeType:c}=n,l=i.get(t.name);let u=t;return t.tagName==="GROUP"&&(u=t.children[0]),o&&(u.setAttribute("strokeColor",o),(h=l==null?void 0:l.opt)!=null&&h.strokeColor&&(l.opt.strokeColor=o)),a&&(a==="transparent"?u.setAttribute("fillColor","rgba(0,0,0,0)"):u.setAttribute("fillColor",a),(d=l==null?void 0:l.opt)!=null&&d.fillColor&&(l.opt.fillColor=a)),c&&(l!=null&&l.opt)&&((f=l.opt)!=null&&f.strokeType)&&(l.opt.strokeType=c),l&&i.setInfo(t.name,l),Re.updateNodeOpt(e)}}class g0 extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",q.Star);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=t,d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};h&&(this.syncUnitTime=h);let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:S,isDrawing:!0})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const E={rect:S,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,E.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),E.index=0,E.isSync=!0)}return E}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:xe.Local,op:this.tmpPoints.map(E=>[...E.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.fullLayer,n=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&Re.getCenterPos(n,t)}),{rect:n,type:le.FullWork,dataType:xe.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawing:i,isDrawEraserlines:o=!0}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,vertices:h,innerVerticeStep:d,innerRatio:f,scale:g,rotate:y,translate:S,strokeType:E,eraserlines:C,eraserFaces:L,doingLines:T,lineDash:p,lineCap:m}=this.workOptions,M=n.worldScaling,{rect:v,pos:R,points:b}=this.computDrawPoints(l,h,d,f),P={close:!0,points:b,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:m,lineDash:E===Be.Dotted?[p&&p[0]||1,(p&&p[1]||2)*l]:E===Be.LongDotted?[(p&&p[0]||1)*l,(p&&p[1]||2)*l]:void 0},D={name:t,id:t,zIndex:u,pos:R,anchor:[.5,.5],size:[v.w,v.h]};g&&(D.scale=g),y&&(D.rotate=y),S&&(D.translate=S);const z=new dt(D);if(i){const k=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/M[0],1/M[1]]});z.append(k)}const j=new Ir({...P,pos:[0,0]});z.append(j),(C||L||T)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:z,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:L,pos:R,layer:n},o)),this.replace(n,t,z);const A=z.getBoundingClientRect();return this.isDelete&&z.setAttribute("opacity",0),{x:Math.floor(A.x-Re.SafeBorderPadding),y:Math.floor(A.y-Re.SafeBorderPadding),w:Math.floor(A.width+Re.SafeBorderPadding*2),h:Math.floor(A.height+Re.SafeBorderPadding*2)}}computDrawPoints(e,t,n,i){const o=it(this.tmpPoints),a=[Math.floor(o.x+o.w/2),Math.floor(o.y+o.h/2)],c=G0(o.w,o.h),l=Math.floor(Math.min(o.w,o.h)/2),u=i*l,h=[],d=2*Math.PI/t;for(let g=0;g<t;g++){const y=g*d-.5*Math.PI;let S,E;g%n===1?(S=u*c[0]*Math.cos(y),E=u*c[1]*Math.sin(y)):(S=l*c[0]*Math.cos(y),E=l*c[1]*Math.sin(y),h.push(S,E)),h.push(S,E)}return{rect:it(this.tmpPoints,e),pos:a,points:h}}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:t,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new Pe(t[h],t[h+1],t[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Re.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var S;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,vertices:l,innerVerticeStep:u,innerRatio:h,strokeType:d}=n,f=i.get(t.name),g=f==null?void 0:f.opt;let y=t;return t.tagName==="GROUP"&&(y=t.children[0]),o&&(y.setAttribute("strokeColor",o),g!=null&&g.strokeColor&&(g.strokeColor=o)),a&&(a==="transparent"?y.setAttribute("fillColor","rgba(0,0,0,0)"):y.setAttribute("fillColor",a),g!=null&&g.fillColor&&(g.fillColor=a)),c===q.Star&&(l&&(g.vertices=l),u&&(g.innerVerticeStep=u),h&&(g.innerRatio=h)),d&&(f!=null&&f.opt)&&((S=f.opt)!=null&&S.strokeType)&&(f.opt.strokeType=d),f&&i.setInfo(t.name,{...f,opt:g}),Re.updateNodeOpt(e)}}class p0 extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",q.Polygon);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,{op:l,syncUnitTime:u}=t;u&&(this.syncUnitTime=u);const h=this.workId,d=l==null?void 0:l.length;if(!d||d<2)return{type:le.None};let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(l[0],l[1])],f=!1):f=this.updateTempPoints(l),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:h,layer:S,isDrawing:!0})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const E={type:le.DrawWork,rect:S,dataType:xe.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,E.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),E.index=0,E.isSync=!0)}return E}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:xe.Local,op:this.tmpPoints.map(E=>[...E.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.fullLayer,n=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&Re.getCenterPos(n,t)}),{rect:n,type:le.FullWork,dataType:xe.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawing:i,isDrawEraserlines:o=!0}=e,{strokeColor:a,fillColor:c,thickness:l,zIndex:u,vertices:h,scale:d,rotate:f,translate:g,strokeType:y,eraserlines:S,eraserFaces:E,doingLines:C,lineCap:L,lineDash:T}=this.workOptions,p=n.worldScaling,{rect:m,pos:M,points:v}=this.computDrawPoints(l,h),R={close:!0,points:v,lineWidth:l,fillColor:c!=="transparent"&&c||void 0,strokeColor:a,normalize:!0,lineCap:L,lineDash:y===Be.Dotted?[T&&T[0]||1,(T&&T[1]||2)*l]:y===Be.LongDotted?[(T&&T[0]||1)*l,(T&&T[1]||2)*l]:void 0},b={name:t,id:t,zIndex:u,pos:M,anchor:[.5,.5],size:[m.w,m.h]};d&&(b.scale=d),f&&(b.rotate=f),g&&(b.translate=g);const P=new dt(b);if(i){const j=new $t({d:"M-4,0H4M0,-4V4",normalize:!0,pos:[0,0],strokeColor:a,lineWidth:1,scale:[1/p[0],1/p[1]]});P.append(j)}const D=new Ir({...R,pos:[0,0]});P.append(D),(S||E||C)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:P,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:E,pos:M,layer:n},o)),this.replace(n,t,P);const z=P.getBoundingClientRect();return this.isDelete&&P.setAttribute("opacity",0),{x:Math.floor(z.x-Re.SafeBorderPadding),y:Math.floor(z.y-Re.SafeBorderPadding),w:Math.floor(z.width+Re.SafeBorderPadding*2),h:Math.floor(z.height+Re.SafeBorderPadding*2)}}computDrawPoints(e,t){const n=it(this.tmpPoints),i=[Math.floor(n.x+n.w/2),Math.floor(n.y+n.h/2)],o=G0(n.w,n.h),a=Math.floor(Math.min(n.w,n.h)/2),c=[],l=2*Math.PI/t;for(let h=0;h<t;h++){const d=h*l-.5*Math.PI,f=a*o[0]*Math.cos(d),g=a*o[1]*Math.sin(d);c.push(f,g)}return{rect:it(this.tmpPoints,e),pos:i,points:c}}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:t,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new Pe(t[h],t[h+1],t[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Re.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,vertices:l,strokeType:u}=n,h=i.get(t.name),d=h==null?void 0:h.opt;let f=t;return t.tagName==="GROUP"&&(f=t.children[0]),o&&(f.setAttribute("strokeColor",o),d!=null&&d.strokeColor&&(d.strokeColor=o)),a&&(a==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",a),d!=null&&d.fillColor&&(d.fillColor=a)),c===q.Polygon&&l&&(d.vertices=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&i.setInfo(t.name,{...h,opt:d}),Re.updateNodeOpt(e)}}class vr{static bezier(r,e){const t=[];for(let n=0;n<e.length;n+=4){const i=e[n],o=e[n+1],a=e[n+2],c=e[n+3];i&&o&&a&&c?t.push(...vr.getBezierPoints(r,i,o,a,c)):i&&o&&a?t.push(...vr.getBezierPoints(r,i,o,a)):i&&o?t.push(...vr.getBezierPoints(r,i,o)):i&&t.push(i)}return t}static getBezierPoints(r=10,e,t,n,i){let o=null;const a=[];!n&&!i?o=vr.oneBezier:n&&!i?o=vr.twoBezier:n&&i&&(o=vr.threeBezier);for(let c=0;c<r;c++)o&&a.push(o(c/r,e,t,n,i));return i?a.push(i):n&&a.push(n),a}static oneBezier(r,e,t){const n=e.x+(t.x-e.x)*r,i=e.y+(t.y-e.y)*r;return new fe(n,i)}static twoBezier(r,e,t,n){const i=(1-r)*(1-r)*e.x+2*r*(1-r)*t.x+r*r*n.x,o=(1-r)*(1-r)*e.y+2*r*(1-r)*t.y+r*r*n.y;return new fe(i,o)}static threeBezier(r,e,t,n,i){const o=e.x*(1-r)*(1-r)*(1-r)+3*t.x*r*(1-r)*(1-r)+3*n.x*r*r*(1-r)+i.x*r*r*r,a=e.y*(1-r)*(1-r)*(1-r)+3*t.y*r*(1-r)*(1-r)+3*n.y*r*r*(1-r)+i.y*r*r*r;return new fe(o,a)}}class m0 extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",q.SpeechBalloon);x(this,"ratio",.8);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){var y;const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=(y=t==null?void 0:t.workId)==null?void 0:y.toString();if(!l)return{type:le.None};const{op:u}=t,h=u==null?void 0:u.length;if(!h||h<2)return{type:le.None};let d;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],d=!1):d=this.updateTempPoints(u),!d)return{type:le.None};let f;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;f=this.draw({workId:l,layer:S,isDrawing:!0})}if(c){const S=Ue(f,this.oldRect);this.oldRect=f;const E={rect:S,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,E.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),E.index=0,E.isSync=!0)}return E}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:xe.Local,op:this.tmpPoints.map(E=>[...E.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const g=Ue(f,this.oldRect);return this.oldRect=f,{rect:g,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.fullLayer,n=this.draw({workId:e,layer:t,isDrawing:!1});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&Re.getCenterPos(n,t)}),{rect:n,type:le.FullWork,dataType:xe.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawEraserlines:i=!0}=e,{strokeColor:o,fillColor:a,thickness:c,zIndex:l,placement:u,scale:h,rotate:d,translate:f,strokeType:g,eraserlines:y,eraserFaces:S,doingLines:E,lineDash:C,lineCap:L}=this.workOptions,{rect:T,pos:p,points:m}=this.computDrawPoints(c,u),M={points:m.map(D=>D.XY),lineWidth:c,fillColor:a!=="transparent"&&a||void 0,strokeColor:o,normalize:!0,className:`${p[0]},${p[1]}`,close:!0,lineCap:L,lineDash:g===Be.Dotted?[C&&C[0]||1,(C&&C[1]||2)*c]:g===Be.LongDotted?[(C&&C[0]||1)*c,(C&&C[1]||2)*c]:void 0},v={name:t,id:t,zIndex:l,pos:p,anchor:[.5,.5],size:[T.w,T.h]};h&&(v.scale=h),d&&(v.rotate=d),f&&(v.translate=f);const R=new dt(v),b=new Ir({...M,pos:[0,0]});R.append(b),(y||S||E)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:R,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:S,pos:p,layer:n},i)),this.replace(n,t,R);const P=R.getBoundingClientRect();return this.isDelete&&R.setAttribute("opacity",0),{x:Math.floor(P.x-Re.SafeBorderPadding),y:Math.floor(P.y-Re.SafeBorderPadding),w:Math.floor(P.width+Re.SafeBorderPadding*2),h:Math.floor(P.height+Re.SafeBorderPadding*2)}}transformControlPoints(e){const t=it(this.tmpPoints);switch(e){case"bottom":case"bottomLeft":case"bottomRight":{const n=t.y+t.h*this.ratio;return[new fe(t.x,t.y,0),new fe(t.x+t.w,t.y,0),new fe(t.x+t.w,n,0),new fe(t.x,n,0)]}case"top":case"topLeft":case"topRight":{const n=t.y+t.h*(1-this.ratio);return[new fe(t.x,n,0),new fe(t.x+t.w,n,0),new fe(t.x+t.w,t.y+t.h,0),new fe(t.x,t.y+t.h,0)]}case"left":case"leftBottom":case"leftTop":{const n=t.x+t.w*(1-this.ratio);return[new fe(n,t.y,0),new fe(t.x+t.w,t.y,0),new fe(t.x+t.w,t.y+t.h,0),new fe(n,t.y+t.h,0)]}case"right":case"rightBottom":case"rightTop":{const n=t.x+t.w*this.ratio;return[new fe(t.x,t.y,0),new fe(n,t.y,0),new fe(n,t.y+t.h,0),new fe(t.x,t.y+t.h,0)]}}}computDrawPoints(e,t){const n=it(this.tmpPoints),i=this.transformControlPoints(t),o=Math.floor(n.w*.1),a=Math.floor(n.h*.1),c=[],l=fe.Add(i[0],new fe(0,a,0)),u=fe.Add(i[0],new fe(o,0,0)),h=vr.getBezierPoints(10,l,i[0],u),d=fe.Sub(i[1],new fe(o,0,0)),f=fe.Add(i[1],new fe(0,a,0)),g=vr.getBezierPoints(10,d,i[1],f),y=fe.Sub(i[2],new fe(0,a,0)),S=fe.Sub(i[2],new fe(o,0,0)),E=vr.getBezierPoints(10,y,i[2],S),C=fe.Add(i[3],new fe(o,0,0)),L=fe.Sub(i[3],new fe(0,a,0)),T=vr.getBezierPoints(10,C,i[3],L),p=o*(1-this.ratio)*10,m=a*(1-this.ratio)*10;switch(t){case"bottom":{const R=fe.Sub(i[2],new fe(o*5-p/2,0,0)),b=fe.Sub(i[2],new fe(o*5,-m,0)),P=fe.Sub(i[2],new fe(o*5+p/2,0,0));c.push(b,P,...T,...h,...g,...E,R);break}case"bottomRight":{const R=fe.Sub(i[2],new fe(o*1.1,0,0)),b=fe.Sub(i[2],new fe(o*1.1+p/2,-m,0)),P=fe.Sub(i[2],new fe(o*1.1+p,0,0));c.push(b,P,...T,...h,...g,...E,R);break}case"bottomLeft":{const R=fe.Add(i[3],new fe(o*1.1+p,0,0)),b=fe.Add(i[3],new fe(o*1.1+p/2,m,0)),P=fe.Add(i[3],new fe(o*1.1,0,0));c.push(b,P,...T,...h,...g,...E,R);break}case"top":{const R=fe.Sub(i[1],new fe(o*5-p/2,0,0)),b=fe.Sub(i[1],new fe(o*5,m,0)),P=fe.Sub(i[1],new fe(o*5+p/2,0,0));c.push(b,R,...g,...E,...T,...h,P);break}case"topRight":{const R=fe.Sub(i[1],new fe(o*1.1,0,0)),b=fe.Sub(i[1],new fe(o*1.1+p/2,m,0)),P=fe.Sub(i[1],new fe(o*1.1+p,0,0));c.push(b,R,...g,...E,...T,...h,P);break}case"topLeft":{const R=fe.Add(i[0],new fe(o*1.1+p,0,0)),b=fe.Add(i[0],new fe(o*1.1+p/2,-m,0)),P=fe.Add(i[0],new fe(o*1.1,0,0));c.push(b,R,...g,...E,...T,...h,P);break}case"left":{const R=fe.Add(i[0],new fe(0,a*5-m/2,0)),b=fe.Add(i[0],new fe(-p,a*5,0)),P=fe.Add(i[0],new fe(0,a*5+m/2,0));c.push(b,R,...h,...g,...E,...T,P);break}case"leftTop":{const R=fe.Add(i[0],new fe(0,a*1.1,0)),b=fe.Add(i[0],new fe(-p,a*1.1+m/2,0)),P=fe.Add(i[0],new fe(0,a*1.1+m,0));c.push(b,R,...h,...g,...E,...T,P);break}case"leftBottom":{const R=fe.Sub(i[3],new fe(0,a*1.1+m,0)),b=fe.Sub(i[3],new fe(p,a*1.1+m/2,0)),P=fe.Sub(i[3],new fe(0,a*1.1,0));c.push(b,R,...h,...g,...E,...T,P);break}case"right":{const R=fe.Add(i[1],new fe(0,a*5-m/2,0)),b=fe.Add(i[1],new fe(p,a*5,0)),P=fe.Add(i[1],new fe(0,a*5+m/2,0));c.push(b,P,...E,...T,...h,...g,R);break}case"rightTop":{const R=fe.Add(i[1],new fe(0,a*1.1,0)),b=fe.Add(i[1],new fe(p,a*1.1+m/2,0)),P=fe.Add(i[1],new fe(0,a*1.1+m,0));c.push(b,P,...E,...T,...h,...g,R);break}case"rightBottom":{const R=fe.Sub(i[2],new fe(0,a*1.1+m,0)),b=fe.Sub(i[2],new fe(-p,a*1.1+m/2,0)),P=fe.Sub(i[2],new fe(0,a*1.1,0));c.push(b,P,...E,...T,...h,...g,R);break}}const M=it(this.tmpPoints,e),v=[Math.floor(M.x+M.w/2),Math.floor(M.y+M.h/2)];return{rect:M,pos:v,points:c}}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o)||Pe.Sub(i,n).XY.includes(0))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:t,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new Pe(t[h],t[h+1],t[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawing:!1,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Re.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var g;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,fillColor:a,toolsType:c,placement:l,strokeType:u}=n,h=i.get(t.name),d=h==null?void 0:h.opt;let f=t;return t.tagName==="GROUP"&&(f=t.children[0]),o&&(f.setAttribute("strokeColor",o),d!=null&&d.strokeColor&&(d.strokeColor=o)),a&&(a==="transparent"?f.setAttribute("fillColor","rgba(0,0,0,0)"):f.setAttribute("fillColor",a),d!=null&&d.fillColor&&(d.fillColor=a)),c===q.SpeechBalloon&&l&&(d.placement=l),u&&(h!=null&&h.opt)&&((g=h.opt)!=null&&g.strokeType)&&(h.opt.strokeType=u),h&&i.setInfo(t.name,{...h,opt:d}),Re.updateNodeOpt(e)}}var tye=pi,rye=zr,nye="[object Boolean]";function iye(s){return s===!0||s===!1||rye(s)&&tye(s)==nye}var sye=iye;const _n=ln(sye);class y0 extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.both);x(this,"toolsType",q.Straight);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");x(this,"straightTipWidth");x(this,"syncTimestamp");this.workOptions=e.toolsOpt,this.straightTipWidth=this.workOptions.thickness/2,this.syncTimestamp=0,this.syncUnitTime=50}static normalizeStorageData(e){return this.normalizeDrawableStorageData(e)}consume(e){const{data:t,isFullWork:n,isSubWorker:i,isMainThread:o,smoothSync:a,isSimpleWorker:c}=e,l=this.workId,{op:u,syncUnitTime:h}=t,d=u==null?void 0:u.length;if(!d||d<2)return{type:le.None};h&&(this.syncUnitTime=h);let f;if(this.tmpPoints.length===0?(this.tmpPoints=[new Pe(u[0],u[1])],f=!1):f=this.updateTempPoints(u),!f)return{type:le.None};let g;if(i||o||c){const S=n?this.fullLayer:this.drawLayer||this.fullLayer;g=this.draw({workId:l,layer:S})}if(c){const S=Ue(g,this.oldRect);this.oldRect=g;const E={rect:S,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult};if(a){const C=Date.now();C-this.syncTimestamp>this.syncUnitTime&&(this.syncTimestamp=C,E.op=this.tmpPoints.map(L=>[...L.XY,0]).flat(1),E.index=0,E.isSync=!0)}return E}if(!i&&a){const S=Date.now();return S-this.syncTimestamp>this.syncUnitTime?(this.syncTimestamp=S,{type:le.DrawWork,dataType:xe.Local,op:this.tmpPoints.map(E=>[...E.XY,0]).flat(1),isSync:!0,index:0,...this.baseConsumeResult}):{type:le.None}}const y=Ue(g,this.oldRect);return this.oldRect=g,{rect:y,type:le.DrawWork,dataType:xe.Local,...this.baseConsumeResult}}consumeAll(){var a;const e=this.workId;if(this.tmpPoints.length<2)return{type:le.RemoveNode,removeIds:[e]};const t=this.fullLayer,n=this.draw({workId:e,layer:t});this.oldRect=n;const i=this.tmpPoints.map(c=>[...c.XY,0]).flat(1),o=xt(i);return(a=this.vNodes)==null||a.setInfo(e,{rect:n,op:i,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:n&&Re.getCenterPos(n,t)}),{rect:n,type:le.FullWork,dataType:xe.Local,ops:o,isSync:!0,...this.baseConsumeResult,updateNodeOpt:{useAnimation:!0}}}draw(e){const{workId:t,layer:n,isDrawEraserlines:i=!0}=e,{strokeColor:o,thickness:a,zIndex:c,scale:l,rotate:u,translate:h,strokeType:d,eraserlines:f,eraserFaces:g,doingLines:y,lineCap:S,lineDash:E}=this.workOptions,C=n.worldPosition,L=n.worldScaling,{d:T,rect:p,isDot:m}=this.computDrawPoints(a,d),M=[p.x+p.w/2,p.y+p.h/2],v=new dt({pos:M,anchor:[.5,.5],size:[p.w,p.h],name:t,id:t,normalize:!0,zIndex:c}),R={pos:[0,0],normalize:!0,d:T,fillColor:o,strokeColor:o,lineDash:m?void 0:d===Be.Dotted?[E&&E[0]||1,(E&&E[1]||2)*a]:d===Be.LongDotted?[(E&&E[0]||1)*a,(E&&E[1]||2)*a]:void 0,lineCap:m?void 0:S,lineWidth:d===Be.Normal||m?0:a};l&&(R.scale=l),u&&(R.rotate=u),h&&(R.translate=h);const b=new $t(R);v.append(b),(f||g||y)&&(this.scaleType=Ye.proportional,this.drawEraserlines({group:v,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:M,layer:n},i)),this.replace(n,t,v);let P={x:Math.floor(p.x*L[0]+C[0]-Re.SafeBorderPadding),y:Math.floor(p.y*L[1]+C[1]-Re.SafeBorderPadding),w:Math.floor(p.w*L[0]+2*Re.SafeBorderPadding),h:Math.floor(p.h*L[1]+2*Re.SafeBorderPadding)};if(u||l||h){const D=b.getBoundingClientRect();P={x:Math.floor(D.x-Re.SafeBorderPadding),y:Math.floor(D.y-Re.SafeBorderPadding),w:Math.floor(D.width+Re.SafeBorderPadding*2),h:Math.floor(D.height+Re.SafeBorderPadding*2)}}return this.isDelete&&v.setAttribute("opacity",0),P}computDrawPoints(e,t){return this.tmpPoints[1].distance(this.tmpPoints[0])>this.straightTipWidth?this.computFullPoints(e,t):this.computDotPoints(e)}computFullPoints(e,t){const n=fe.Sub(this.tmpPoints[1],this.tmpPoints[0]).uni(),i=fe.Per(n).mul(e/2),o=Pe.Sub(this.tmpPoints[0],i),a=Pe.Add(this.tmpPoints[0],i),c=Pe.Sub(this.tmpPoints[1],i),l=Pe.Add(this.tmpPoints[1],i),u=Pe.GetSemicircleStroke(this.tmpPoints[1],c,-1,8),h=Pe.GetSemicircleStroke(this.tmpPoints[0],a,-1,8),d=[o,c,...u,l,a,...h];let f;return t!==Be.Normal?f=Lr(this.tmpPoints,!1):f=Lr(d,!0),{d:f,rect:it(d),isDot:!1,pos:this.tmpPoints[0].XY}}computDotPoints(e){const t=Pe.GetDotStroke(this.tmpPoints[0],e/2,8);return{d:Lr(t,!0),rect:it(t),isDot:!0,pos:this.tmpPoints[0].XY}}updateTempPoints(e){const t=e.slice(-2),n=new Pe(t[0],t[1]),i=this.tmpPoints[0],{thickness:o}=this.workOptions;if(i.isNear(n,o))return!1;if(this.tmpPoints.length===2){if(n.isNear(this.tmpPoints[1],1))return!1;this.tmpPoints[1]=n}else this.tmpPoints.push(n);return!0}consumeService(e){var l,u;const{op:t,isFullWork:n,workState:i=de.Done}=e,o=(l=this.workId)==null?void 0:l.toString();if(!o)return;this.tmpPoints.length=0;for(let h=0;h<t.length;h+=3)this.tmpPoints.push(new Pe(t[h],t[h+1],t[h+2]));const a=n?this.fullLayer:this.drawLayer||this.fullLayer,c=this.draw({workId:o,layer:a,isDrawEraserlines:i===de.Done});return this.oldRect=c,(u=this.vNodes)==null||u.setInfo(o,{rect:c,op:t,opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:c&&Re.getCenterPos(c,a)}),c}clearTmpPoints(){this.tmpPoints.length=0}static updateNodeOpt(e){var l,u;const{node:t,opt:n,vNodes:i}=e,{strokeColor:o,strokeType:a}=n,c=i.get(t.name);return o&&(t.tagName==="GROUP"?t.children.forEach(h=>{h.setAttribute("strokeColor",o),h.getAttribute("fillColor")&&h.setAttribute("fillColor",o)}):(t.setAttribute("strokeColor",o),t.setAttribute("fillColor",o)),(l=c==null?void 0:c.opt)!=null&&l.strokeColor&&(c.opt.strokeColor=o)),a&&(c!=null&&c.opt)&&((u=c.opt)!=null&&u.strokeType)&&(c.opt.strokeType=a),c&&i.setInfo(t.name,c),Re.updateNodeOpt(e)}}var Tr=(s=>(s[s.Text=1]="Text",s[s.Shape=2]="Shape",s))(Tr||{});const qt=class qt{createProxy(r){const e=new Proxy(r,{get(t,n,i){const o=qt.interceptors.hasOwnProperty(n)?qt.interceptors:t;return Reflect.get(o,n,i)}});return qt.proxyToRaw.set(e,r),e}};x(qt,"proxyToRaw",new WeakMap),x(qt,"interceptors",{entries(...r){return qt.proxyToRaw.get(this).entries(...r)},forEach(...r){return qt.proxyToRaw.get(this).forEach(...r)},size(){return qt.proxyToRaw.get(this).size},get(r){return qt.proxyToRaw.get(this).get(r)},set(r,e){return qt.proxyToRaw.get(this).set(r,e)},delete(r){return qt.proxyToRaw.get(this).delete(r)},clear(){return qt.proxyToRaw.get(this).clear()}});let Zn=qt;const si="__undo_scope_clear_all__",Ip=s=>Math.max(s,1e3),oye=s=>Math.max(s+1e3,6e3);var $e=(s=>(s.DrawingPencil="drawing:pencil",s.DrawingArrow="drawing:arrow",s.DrawingShape="drawing:shape",s.DrawingEraser="drawing:eraser",s.DrawingPencilEraser="drawing:pencil-eraser",s.DrawingBitMapEraser="drawing:bitmap-eraser",s.MethodTranslateNode="method:translate-node",s.MethodScaleNode="method:scale-node",s.MethodRotateNode="method:rotate-node",s.MethodSetPoint="method:set-point",s.MethodSetColorNode="method:set-color-node",s.AsyncCopyNode="async:copy-node",s.AsyncPasteNode="async:paste-node",s.AsyncDeleteNode="async:delete-node",s.AsyncSetFontStyle="async:set-font-style",s.AsyncSetShapeOpt="async:set-shape-opt",s.AsyncZIndexNode="async:z-index-node",s.AsyncSetLock="async:set-lock",s.AsyncUpdateElement="async:update-element",s.AsyncImage="async:image",s.AsyncIcon="async:icon",s.AsyncMarkmap="async:markmap",s.Text="text",s.Clear="command:clear",s))($e||{});function aye(s){const{tickerId:r,viewId:e,scenePath:t,expectedAcks:n}=s;return{viewId:e,scenePath:t,expectedRender:n.render,expectedStorage:n.storage,gotRender:!n.render,gotStorage:!n.storage,scopeMode:n.scopeMode||"static",source:n.source,transactionId:n.transactionId||`${e}:${r}`,barrierEpoch:n.barrierEpoch||0,startedAt:Date.now(),phase:"doing",ownerPromiseActive:n.ownerPromiseActive??!0,finalizeRequested:!1,collectedScopeKeys:new Set,scopeKeys:new Set,ackedStorageKeys:new Set,meta:{copyAck:n.copyAck,isWritable:n.isWritable}}}function cye(s,r){r&&(s.meta={...s.meta,...r})}function lye(s){return(!s.expectedRender||s.gotRender)&&(!s.expectedStorage||s.gotStorage)}function uye(s){return!s.ackTimer&&s.finalizeRequested}function hye(s){return s.expectedStorage?s.finalizeRequested?s.scopeKeys.size?[...s.scopeKeys].every(r=>s.ackedStorageKeys.has(r)):!0:!1:!0}function dye(s,r){return s.size>0?s.has(si)?r===si:!!r&&s.has(r):!r||s.has(r)}function Ul(s,r){const e=r.toString();return s.isLocalId(e)?s.transformKey(e):e}function Wl(s,r,e,t){var o,a;const n=new Set;if(!s)return n;const i=s.getStorageData(r,e);for(const c of t){if(c==null)continue;if(c===si){n.add(si);continue}const l=Ul(s,c),u=i==null?void 0:i[l];if(s.getLocalId(l)===Le){(o=u==null?void 0:u.selectIds)==null||o.forEach(h=>{n.add(Ul(s,h))});continue}n.add(l),(a=u==null?void 0:u.selectIds)==null||a.forEach(h=>{n.add(Ul(s,h))})}return n}function bp(s,r,e){return e!=null&&e.has(si)?!r.has(s):e!=null&&e.size?e.has(s):!r.has(s)}const fye={[q.Selector]:De.selector,[q.Clicker]:De.clicker,[q.Text]:De.text,[q.Pencil]:De.pencil,[q.LaserPen]:De.laserPen,[q.Arrow]:De.arrow,[q.Straight]:De.straight,[q.Rectangle]:De.rectangle,[q.Ellipse]:De.ellipse,[q.Star]:or.star,[q.Polygon]:or.polygon,[q.SpeechBalloon]:or.speechBalloon,[q.Eraser]:De.eraser,[q.PencilEraser]:De.pencilEraser,[q.BitMapEraser]:or.bitMapEraser};function Nc(s){return s===void 0?void 0:fye[s]}function gye(s,r){return s||r}function pye(s){return Nc(s)}function mye(s){switch(s){case q.Text:return Tr.Text;case q.SpeechBalloon:case q.Star:case q.Ellipse:case q.Rectangle:case q.Triangle:case q.Rhombus:case q.Polygon:return Tr.Shape}}function js(s){if(!s)return!1;try{const r=Nn(s);if(Array.isArray(r))return r.some(e=>String(e??"").trim().length>0);if(typeof r=="string")return r.trim().length>0}catch{}return s.split(",").some(r=>r.trim().length>0)}function v0(s){const r=s.lastChild;if(!r){const n=document.createElement("div"),i=document.createTextNode("");return n.appendChild(i),s.appendChild(n),i}if(r.nodeType===Node.TEXT_NODE)return r;const e=r;if(!e.lastChild){const n=document.createTextNode("");return e.appendChild(n),n}if(e.lastChild.nodeType===Node.TEXT_NODE)return e.lastChild;const t=document.createTextNode("");return e.appendChild(t),t}function yye(s,r){var n;const e=document.createRange(),t=v0(r);t.nodeType===Node.TEXT_NODE?e.setStart(t,((n=t.textContent)==null?void 0:n.length)||0):e.setStart(t,0),e.collapse(!0),s.removeAllRanges(),s.addRange(e)}function M0(s){const r=document.createTreeWalker(s,NodeFilter.SHOW_TEXT,null),e=[];let t;for(;(t=r.nextNode())!==null;)e.push(t);return e}function vye(s,r,e){var a;const t=document.createRange();t.setStart(s,r),t.collapse(!0);const n=t.getBoundingClientRect();if(!n.width&&!n.height){const c=(a=s.parentElement)==null?void 0:a.getBoundingClientRect();if(c){const l=e.y<c.top?c.top-e.y:e.y>c.bottom?e.y-c.bottom:0,u=r===0?c.left:c.right;return Math.abs(e.x-u)+l*4}}const i=n.left+n.width/2,o=n.top+n.height/2;return Math.abs(e.x-i)+Math.abs(e.y-o)*4}function Mye(s,r){var n;const e=M0(s);if(!e.length){const i=v0(s);return i.nodeType===Node.TEXT_NODE?{node:i,offset:0}:void 0}let t;for(const i of e){const o=((n=i.textContent)==null?void 0:n.length)||0;for(let a=0;a<=o;a++){const c=vye(i,a,r);(!t||c<t.distance)&&(t={node:i,offset:a,distance:c})}}return t?{node:t.node,offset:t.offset}:void 0}function wye(s,r,e){const t=Mye(r,e);if(!t)return!1;const n=document.createRange();return n.setStart(t.node,t.offset),n.collapse(!0),s.removeAllRanges(),s.addRange(n),!0}function Ep(s,r){return!!(s!=null&&s.anchorNode)&&r.contains(s.anchorNode)}function xp(s){let r=null,e=!1;for(const n of Array.from(s.childNodes)){if(n instanceof HTMLDivElement){r=n;continue}n.nodeType===Node.TEXT_NODE&&(r||(r=document.createElement("div"),s.insertBefore(r,n),e=!0),r.appendChild(n),e=!0)}const t=Array.from(s.childNodes).reverse().find(n=>n instanceof HTMLDivElement);return{changed:e,lastLine:t||null}}function Sye(s){const r=M0(s);return{textContent:r.map(e=>e.textContent||"").join(""),textNodes:r}}function w0(s){const r=[];for(let e=0;e<s.childNodes.length;e++){const t=s.childNodes[e];if(t.nodeName==="#text"&&e===0){const n=t.textContent.split(/\n/),i=n.pop();r.push(...n),i&&r.push(i)}else if(t.nodeName==="DIV"){const i=(t.innerText??t.textContent??"").split(/\n/);if(i.length===2&&i[0]===""&&i[1]==="")r.push("");else{const o=i.shift();(o||o==="")&&r.push(o);const a=i.pop();r.push(...i),a&&r.push(a)}}}return r}function S0(s){return xt(w0(s))}function ws(s,r){var n,i;if(!s.length)return;let e=Math.max(0,r);for(const o of s){const a=((n=o.textContent)==null?void 0:n.length)||0;if(e<=a)return{node:o,offset:e};e-=a}const t=s[s.length-1];return{node:t,offset:((i=t.textContent)==null?void 0:i.length)||0}}function Tye(s){const{hasPoint:r,previousByPoint:e,hasSelectionInEditor:t,rangeCount:n,isCollapsed:i}=s;return!r&&e&&t&&n>0&&i}const Ni=5;class Cye{constructor(r){x(this,"internalMsgEmitter");x(this,"publicMsgEmitter");x(this,"control");x(this,"editors");x(this,"activeId");x(this,"proxyMap");x(this,"taskqueue",new Map);x(this,"undoTickerId");x(this,"checkLocalTextBlur",ye.debounce(()=>{if(this.collector)for(const[r,e]of this.editors.entries())e.opt.workState!==de.Done&&this.collector.isLocalId(r)&&this.activeId!==r&&(js(e.opt.text)?this.unActive(r):this.delete(r,!0,!0))},100));const{control:e,internalMsgEmitter:t,publicMsgEmitter:n}=r;this.control=e,this.internalMsgEmitter=t,this.publicMsgEmitter=n;const i=new Map;this.proxyMap=new Zn;const o=this,a=Zn.interceptors.set;Zn.interceptors.set=function(l,u){return o.interceptors.set(l,u),a.call(this,l,u)};const c=Zn.interceptors.delete;Zn.interceptors.delete=function(l){return o.interceptors.delete(l),c.call(this,l)},this.editors=this.proxyMap.createProxy(i)}get collector(){return this.control.collector}set UndoTickerId(r){this.undoTickerId=r}get UndoTickerId(){return this.undoTickerId}getDoneUndoTicker(r,e,t){const n=t??e,i=this.control.viewContainerManager.getUndoTickerId(r);if(n===de.Done)return this.undoTickerId&&i===this.undoTickerId?this.undoTickerId:i}ackDoneRender(r,e,t,n,i){r&&(this.internalMsgEmitter.emit("ackRenderUndoTicker",r,e,t,{requestId:n,emitEventType:i}),this.undoTickerId=void 0)}filterEditor(r){const e=new Map;return this.editors.forEach((t,n)=>{t.viewId===r&&e.set(n,t)}),e}get interceptors(){return{set:(r,e)=>{var C,L,T,p,m,M,v,R,b;if(!this.collector)return!0;const{viewId:t,scenePath:n,canSync:i,canWorker:o,type:a,opt:c,dataType:l,updateNodeOpt:u,requestId:h,emitEventType:d,skipStorageDispatch:f}=e,g=e.needUndoTicker??this.getDoneUndoTicker(t,c==null?void 0:c.workState,u==null?void 0:u.workState);if(!o&&!i)return!0;const S=((C=this.collector)==null?void 0:C.isLocalId(r))?(L=this.collector)==null?void 0:L.transformKey(r):r,E=((T=this.collector)==null?void 0:T.storage[t])&&this.collector.storage[t][n]&&this.collector.storage[t][n][S]||void 0;E?E.toolsType===q.Text&&(o&&(this.control.worker.queryTaskBatchData({workId:r,msgType:le.UpdateNode}).forEach(P=>{var D;(D=this.control.worker)==null||D.taskBatchData.delete(P)}),(v=this.control.worker)==null||v.taskBatchData.add({workId:r,msgType:le.UpdateNode,dataType:l||xe.Local,toolsType:q.Text,opt:c,viewId:t,scenePath:n,willRefresh:!0}),(R=this.control.worker)==null||R.runAnimation()),i&&!f&&((b=this.collector)==null||b.dispatch({type:le.UpdateNode,workId:r,toolsType:q.Text,opt:c,viewId:t,scenePath:n,updateNodeOpt:u,requestId:h,emitEventType:d,needUndoTicker:g}),this.ackDoneRender(g,t,n,h,d),delete e.needUndoTicker,c.workState===de.Done&&this.control.runEffectWork(()=>{this.control.worker.setShapeSelectorByWorkId(r,t)}))):a===Tr.Text&&(i&&!f&&((p=this.collector)==null||p.dispatch({type:c.text&&le.FullWork||le.CreateWork,workId:r,toolsType:q.Text,opt:c,isSync:!0,viewId:t,scenePath:n,updateNodeOpt:u,requestId:h,emitEventType:d,needUndoTicker:g}),this.ackDoneRender(g,t,n,h,d),delete e.needUndoTicker),o&&((m=this.control.worker)==null||m.taskBatchData.add({workId:r,msgType:c.text&&le.FullWork||le.CreateWork,dataType:l||xe.Local,toolsType:q.Text,opt:c,viewId:t,scenePath:n,willRefresh:!0}),(M=this.control.worker)==null||M.runAnimation()))},delete:r=>{var c,l,u;if(!this.collector)return!0;const e=this.editors.get(r);if(!e)return!0;const{viewId:t,scenePath:n,canSync:i,canWorker:o}=e,a=this.getDoneUndoTicker(t,de.Done);if(!o&&!i)return!0;o&&((c=this.control.worker)==null||c.taskBatchData.add({workId:r,toolsType:q.Text,msgType:le.RemoveNode,dataType:xe.Local,viewId:t,scenePath:n,willRefresh:!0}),(l=this.control.worker)==null||l.runAnimation()),i&&((u=this.collector)==null||u.dispatch({type:le.RemoveNode,removeIds:[r],toolsType:q.Text,viewId:t,scenePath:n,needUndoTicker:a}),this.ackDoneRender(a,t,n))},clear(){return!0}}}computeTextActive(r,e){var i,o,a,c;const t=(i=this.control.viewContainerManager)==null?void 0:i.transformToScenePoint(r,e),n=(o=this.control.viewContainerManager)==null?void 0:o.getCurScenePath(e);e&&n&&((a=this.control.worker)==null||a.taskBatchData.add({msgType:le.GetTextActive,dataType:xe.Local,op:t,viewId:e,scenePath:n}),(c=this.control.worker)==null||c.runAnimation())}checkEmptyTextBlur(){var e;let r=this.activeId;for(const[t,n]of this.editors.entries())if(n.opt.uid&&n.opt.uid===((e=this.collector)==null?void 0:e.uid)){r=t;break}if(r){const t=this.editors.get(r);js(t==null?void 0:t.opt.text)?this.unActive(r):this.delete(r,!0,!0)}this.checkLocalTextBlur()}forceDoneLocalText(r){const e=r?new Set(r):void 0;[...this.editors.entries()].filter(([n,i])=>{var o,a;return i.opt.workState!==de.Done&&(!e||e.has(i.viewId))&&(i.opt.uid===((o=this.collector)==null?void 0:o.uid)||((a=this.collector)==null?void 0:a.isLocalId(n)))}).map(([n])=>n).forEach(n=>{const i=this.editors.get(n);js(i==null?void 0:i.opt.text)?this.unActive(n):this.delete(n,!0,!0)})}onCameraChange(r,e){var t,n;for(const[i,o]of this.editors.entries())if(o.viewId===e){const{boxPoint:a,boxSize:c}=o.opt,l=a&&((t=this.control.viewContainerManager)==null?void 0:t.transformToOriginPoint(a,o.viewId)),u=(n=this.control.viewContainerManager)==null?void 0:n.getCurScenePath(e);if(u&&e){const h={x:l&&l[0]||0,y:l&&l[1]||0,w:c&&c[0]||0,h:c&&c[1]||0,opt:o.opt,scale:r.scale,type:Tr.Text,viewId:e,scenePath:u,canWorker:!1,canSync:!1};this.editors.set(i,h),this.control.viewContainerManager.updateTextEditorInfo(e,this.activeId)}}}deriveTextEditorInfoFromServiceData(r,e={}){var L,T,p;const{workId:t,opt:n,msgType:i,viewId:o,scenePath:a,dataType:c,updateNodeOpt:l,lastOperator:u}=r;if(!t||!o||!a)return;const h=t.toString();if(i===le.RemoveNode){this.delete(h,!0,!0);return}const d=n,f=d.workState!==de.Done&&!d.uid&&u?{...d,uid:u}:d,{boxPoint:g,boxSize:y}=f,S=g&&((L=this.control.viewContainerManager)==null?void 0:L.transformToOriginPoint(g,o)),E=this.control.viewContainerManager.getView(o),C={x:S&&S[0]||0,y:S&&S[1]||0,w:y&&y[0]||0,h:y&&y[1]||0,opt:f,type:Tr.Text,canWorker:e.canWorker??!0,canSync:e.canSync??!1,dataType:c,scale:((T=E==null?void 0:E.cameraOpt)==null?void 0:T.scale)||1,viewId:o,scenePath:a};if(f.workState===de.Done&&!this.control.cursor.isEnableCursor&&g&&y){let M=l==null?void 0:l.uid;if(!M){const v=this.editors.get(h);M=v&&((p=v.opt)==null?void 0:p.uid)}M&&this.control.cursor.collectServiceCursor({op:g&&[g[0]+y[0],g[1]+y[1]],uid:M,workState:de.Done,cursorTool:Nc(q.Text),viewId:o,type:le.Cursor})}return this.editors.set(h,C),c===xe.Service&&f.workState===de.Done&&this.activeId===h&&(this.activeId=void 0),(e.updateView??!0)&&this.control.viewContainerManager.updateTextEditorInfo(o,this.activeId),C}onServiceDerive(r){this.deriveTextEditorInfoFromServiceData(r)}updateForViewEdited(r,e){var n;this.editors.set(r,e);const t=(n=this.taskqueue.get(r))==null?void 0:n.resolve;t&&t(e)}active(r,e){var n;const t=this.editors.get(r);t&&t.viewId&&(t.opt.workState=de.Start,t.opt.uid=(n=this.collector)==null?void 0:n.uid,this.activeId=r,t.canWorker=!0,t.canSync=!0,e&&t.viewId&&this.addUndoTicker(e,t.viewId),t.undoTickerId=e||t.undoTickerId||this.undoTickerId,this.editors.set(r,t),this.control.viewContainerManager.updateTextEditorInfo(t.viewId,this.activeId))}unActive(r){var t;const e=this.editors.get(r);if(e&&e.viewId){const n=e.undoTickerId||this.control.viewContainerManager.getUndoTickerId(e.viewId)||this.undoTickerId;n&&this.internalMsgEmitter.emit("finalizeRequested",n,e.viewId,[r],e.scenePath),e.opt.workState=de.Done,e.opt.uid=void 0,e.canWorker=!0,e.canSync=!0,this.editors.set(r,e),this.activeId=void 0;const i=(t=this.control.viewContainerManager.getView(e.viewId))==null?void 0:t.container;if(i){const o=CSS.escape(r),a=i.querySelector(`.editor-box #${o}`);a&&a.blur()}this.control.viewContainerManager.updateTextEditorInfo(e.viewId,this.activeId)}}addUndoTicker(r,e){this.internalMsgEmitter.emit("addUndoTicker",r,e,{render:!0,storage:!0,source:$e.Text}),this.undoTickerId=r}createTextForMasterController(r,e){var o;const{workId:t,isActive:n,...i}=r;e&&this.addUndoTicker(e,i.viewId),i.opt.uid=(o=this.collector)==null?void 0:o.uid,i.undoTickerId=e||i.undoTickerId||this.undoTickerId,n&&(this.activeId=t),i.dataType=xe.Local,i.canWorker=!0,i.canSync=!0,this.editors.set(t,i),this.control.viewContainerManager.updateTextEditorInfo(i.viewId,this.activeId)}updateTextForMasterController(r,e){var o;const{workId:t,...n}=r;e&&this.addUndoTicker(e,n.viewId);const i=this.editors.get(t)||{};n.opt&&(n.opt.uid=(o=this.collector)==null?void 0:o.uid),n.undoTickerId=e||i.undoTickerId||this.undoTickerId,n.dataType=xe.Local,this.editors.set(t,{...i,...n}),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId)}async updateTextControllerWithEffectAsync(r,e){var u;const{workId:t,...n}=r;e&&this.addUndoTicker(e,n.viewId);const i=this.editors.get(t)||{};n.opt&&(n.opt.uid=(u=this.collector)==null?void 0:u.uid),n.undoTickerId=e||i.undoTickerId||this.undoTickerId,n.dataType=xe.Local;const o={...i,...n};if(this.editors.set(t,o),this.control.viewContainerManager.updateTextEditorInfo(n.viewId,this.activeId),this.taskqueue.has(t)){const h=this.taskqueue.get(t);return h&&(h.clocker&&clearTimeout(h.clocker),this.taskqueue.delete(t)),await this.updateTextControllerWithEffectAsync(r)}const a=setTimeout(()=>{var d;const h=(d=this.taskqueue.get(t))==null?void 0:d.resolve;h&&h(o)},50),c=await new Promise(h=>{this.taskqueue.set(t,{resolve:h,clocker:a})}),l=this.taskqueue.get(t);return l&&(l.clocker&&clearTimeout(l.clocker),this.taskqueue.delete(t)),c}updateTextForWorker(r,e){const{workId:t,isActive:n,...i}=r,o=this.editors.get(t)||{},a={...o,...i};if(e&&this.addUndoTicker(e,i.viewId),a.undoTickerId=e||o.undoTickerId||this.undoTickerId,n){a.canWorker=!1,a.canSync=!1,this.editors.set(t,a),this.active(t);return}this.editors.set(t,a),this.control.viewContainerManager.updateTextEditorInfo(i.viewId,this.activeId)}get(r){return this.editors.get(r)}delete(r,e,t){const n=this.editors.get(r);if(n){const i=n.viewId;n.canSync=e,n.canWorker=t,this.editors.delete(r),this.activeId===r&&(this.activeId=void 0),this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}}deleteBatch(r,e,t){const n=new Set;for(const i of r){const o=this.editors.get(i);if(o){const a=o.viewId;o.canSync=e,o.canWorker=t,this.editors.delete(i),this.activeId===i&&(this.activeId=void 0),n.add(a)}}for(const i of n)this.control.viewContainerManager.updateTextEditorInfo(i,this.activeId)}clear(r,e){this.editors.forEach((t,n)=>{t.viewId===r&&(e&&(t.canSync=!1),t.canWorker=!1,this.editors.delete(n))}),this.activeId=void 0,this.control.viewContainerManager.updateTextEditorInfo(r,this.activeId)}destory(){this.editors.clear(),this.activeId=void 0}insertText(r,e,t,n){var g,y;if(!this.control.canAcceptLocalMutation(r))return;const i=(g=this.control.room)==null?void 0:g.state.memberState;if(!i)return;const o=this.control.viewContainerManager.getView(r);if(!(o!=null&&o.focusScenePath))return;const a=o==null?void 0:o.cameraOpt,c=this.control.getToolsOpt(q.Text,i);if(!c)return;const l=(y=this.control.viewContainerManager)==null?void 0:y.transformToOriginPoint([e,t],r),h=eu(n,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/),d=c.toolsOpt;d.text=xt(h),d.workState=de.Doing,d.boxPoint=[Math.round(e),Math.round(t)],d.boxSize=[d.fontSize,d.fontSize];const f=this.control.worker.now;return this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:f.toString(),x:l&&l[0]||0,y:l&&l[1]||0,scale:(a==null?void 0:a.scale)||1,opt:d,type:Tr.Text,isActive:!0,viewId:r,scenePath:o.focusScenePath},f),f.toString()}updateText(r,e){const t=this.editors.get(r.toString());if(!t||!this.control.canAcceptLocalMutation(t.viewId))return;const i=eu(e,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]}).split(/\n/);t.opt.text=xt(i),this.control.textEditorManager.updateTextForMasterController({workId:r,opt:t.opt,viewId:t.viewId,canSync:!0,canWorker:!0},this.control.worker.now)}}const Sn=class Sn extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.proportional);x(this,"toolsType",q.Text);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");this.workOptions=e.toolsOpt}static async normalizeStorageData(e){return this.normalizeStorageDataSync(e)}static normalizeStorageDataSync(e){const t=Re.normalizeStorageDataSync(e);if(t.status==="unrecoverable")return t;const n=t.value,i=n.opt;return i&&i.workState!==de.Done?(n.type=le.FullWork,n.opt={...i,workState:de.Done},{status:"stable",value:n}):t}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}consumeService(){}async draw(e){const{workId:t,layer:n,isDrawLabel:i,boxRect:o,isActive:a}=e;if(a&&!a())return;const{boxSize:c,boxPoint:l,zIndex:u}=this.workOptions,h=n.worldPosition,d=n.worldScaling;if(!l||!c)return;const f={name:t,id:t,pos:[l[0]-Ni,l[1]-Ni],anchor:[0,0],size:c,zIndex:u},g=new dt(f),y={x:l[0]-Ni,y:l[1]-Ni,w:c[0],h:c[1]},S={x:Math.floor(y.x*d[0]+h[0]),y:Math.floor(y.y*d[1]+h[1]),w:Math.floor(y.w*d[0])+2,h:Math.floor(y.h*d[1])+2};let E;if(o&&(E=Bc(S,o)),(i||o&&E!==sn.outside)&&n&&this.workOptions.text){const C=await Sn.createLabels(this.workOptions,n,S,a),{labels:L,maxWidth:T}=C;if(a&&!a())return L.forEach(p=>p.disconnect()),S;g.append(...L),S.w=Math.ceil(Math.max(T*n.worldScaling[0],S.w))}return a&&!a()?(g.removeAllChildren(),g.disconnect(),S):(this.replace(n,t,g),S)}async consumeServiceAsync(e){var h,d,f,g;const t=(h=this.workId)==null?void 0:h.toString();if(!t)return;const{isFullWork:n,replaceId:i,isDrawLabel:o,boxRect:a,isActive:c}=e;this.oldRect=i&&((f=(d=this.vNodes)==null?void 0:d.get(i))==null?void 0:f.rect)||void 0;const l=n?this.fullLayer:this.drawLayer||this.fullLayer,u=await this.draw({workId:t,layer:l,isDrawLabel:typeof o>"u"&&this.workOptions.workState===de.Done||o,boxRect:a,isActive:c});return c&&!c()||(g=this.vNodes)==null||g.setInfo(t,{rect:u,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:u&&Re.getCenterPos(u,l)}),u}updataOptService(){}async updataOptServiceAsync(e,t,n){var y,S;if(!this.workId)return;const i=this.workId.toString(),{fontColor:o,fontBgColor:a,bold:c,italic:l,lineThrough:u,underline:h,zIndex:d}=e,f=(y=this.vNodes)==null?void 0:y.get(i);if(!f)return;o&&(f.opt.fontColor=o),a&&(f.opt.fontBgColor=a),c&&(f.opt.bold=c),l&&(f.opt.italic=l),_n(u)&&(f.opt.lineThrough=u),_n(h)&&(f.opt.underline=h),yt(d)&&(f.opt.zIndex=d),this.oldRect=f.rect;const g=await this.draw({workId:i,layer:this.fullLayer,isDrawLabel:typeof t>"u"&&this.workOptions.workState===de.Done||t,boxRect:n});return(S=this.vNodes)==null||S.setInfo(i,{rect:g,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:g&&Re.getCenterPos(g,this.fullLayer)}),g}clearTmpPoints(){this.tmpPoints.length=0}static getSafetySnippetRatio(e){const t=(e==null?void 0:e.parent).displayRatio||1,n=Math.ceil(e.worldScaling[0]*10)/10;let i=n;return n<=2?i=n*t*2:n>2&&n<=3?i=n*t*1.6:n>3&&n<=4?i=n*t*1.2:n>4&&(i=n*t),Math.floor(i*1e3)/1e3}static getSafetySnippetFontLength(e){return Math.floor(Sn.textImageSnippetSize*3/4/e)||1}static async createLabels(e,t,n,i){var D;const o=[],{x:a,y:c}=n,{width:l,height:u}=(D=t.parent)==null?void 0:D.parent,h=Nn(e.text),d=h.length,{fontSize:f,lineHeight:g,bold:y,textAlign:S,italic:E,fontFamily:C,verticalAlign:L,fontColor:T,fontBgColor:p,underline:m,lineThrough:M}=e,v=Sn.getSafetySnippetRatio(t)||1,R=Math.floor(f*v),b=Sn.getSafetySnippetFontLength(R);let P=0;for(let z=0;z<d;z++){const j=h[z],A=g||R*1.5;if(j){const k=H0e(j),N=[0,0],W=[0,f*1.2];L==="middle"&&(N[1]=Math.floor(z*f*1.2+6+f*(1.1-1)));const Y=[0,Math.floor(-f*.15)];N[0]=6;const Q=Math.sin(Math.PI/180*20);let ie=0;const O=[];let V=0;for(;V<k;){if(i&&!i())return O.forEach(pe=>pe.disconnect()),o.forEach(pe=>pe.disconnect()),{labels:[],maxWidth:P};S==="left"&&(Y[0]=ie),V===0&&E==="italic"&&(Y[0]=Y[0]-Q/2*f);const $=j.slice(V,V+b),ee={anchor:[0,0],pos:Y,text:$,fontFamily:C,fontSize:R,lineHeight:A,strokeColor:T,fontWeight:y,fillColor:T,textAlign:S,fontStyle:E,scale:[1/v,1/v]},se=new qh(ee),ce=await se.textImageReady;if(i&&!i())return se.disconnect(),O.forEach(pe=>pe.disconnect()),o.forEach(pe=>pe.disconnect()),{labels:[],maxWidth:P};let me=!0;if(ce){const pe=ce.rect&&ce.rect[2],B=ce.rect&&ce.rect[3];if(pe&&B){const F=pe/v,J=B/v;ie=F+ie,E==="italic"&&(y==="bold"?ie=ie-Q*f*1.2:ie=ie-Q*f),((Y[0]+N[0]+F)*t.worldScaling[0]+a<=0||(Y[0]+N[0])*t.worldScaling[0]+a>=l||(Y[1]+N[1]+J)*t.worldScaling[1]+c<=0||(Y[1]+N[1])*t.worldScaling[1]+c>=u)&&(se.disconnect(),me=!1),me&&O.push(se)}}V+=b}W[0]=ie,E==="italic"&&(W[0]=W[0]+Q*f),P=Math.max(P,W[0]);let Z=!0;if(((N[0]+W[0])*t.worldScaling[0]+a<=0||N[0]*t.worldScaling[0]+a>=l||(N[1]+W[1])*t.worldScaling[0]+c<=0||N[1]*t.worldScaling[1]+c>=u)&&(Z=!1),Z){if(m){const se=Math.floor(f/10),ce={normalize:!1,pos:[0,f*1.1+se/2],lineWidth:se,points:[0,0,Math.ceil(W[0]),0],strokeColor:T,className:"underline"},me=new Ir(ce);O.push(me)}if(M){const se={normalize:!1,pos:[0,f*1.2/2],lineWidth:Math.floor(f/10),points:[0,0,Math.ceil(W[0]),0],strokeColor:T,className:"lineThrough"},ce=new Ir(se);O.push(ce)}const $={pos:N,anchor:[0,0],size:W,bgcolor:p},ee=new dt($);ee.append(...O),o.push(ee)}}}return{labels:o,maxWidth:P}}static updateNodeOpt(e){const{node:t,opt:n,vNodes:i,targetNode:o}=e,{fontBgColor:a,fontColor:c,translate:l,originPoint:u,scenePoint:h,scale:d,bold:f,italic:g,lineThrough:y,underline:S,fontSize:E,textInfos:C,zIndex:L}=n,T=o&&ht(o)||i.get(t.name);if(!T||!t.parent)return;const m=T.opt;if(yt(L)&&(t.setAttribute("zIndex",L),T.opt.zIndex=L),c&&m.fontColor&&(m.fontColor=c,t.children.forEach(M=>{M.tagName==="GROUP"&&M.children.forEach(v=>{v.tagName==="LABEL"?(v.setAttribute("fillColor",c),v.setAttribute("strokeColor",c)):v.tagName==="POLYLINE"&&v.setAttribute("strokeColor",c)})})),a&&m.fontBgColor&&(m.fontBgColor=a,t.children.forEach(M=>{M.tagName==="GROUP"&&M.setAttribute("bgcolor",a)})),f&&(m.bold=f),g&&(m.italic=g),_n(y)&&(m.lineThrough=y),_n(S)&&(m.underline=S),E&&(m.fontSize=E),u&&h&&d&&o&&m.boxPoint){const M=C==null?void 0:C.get(t.name);if(M){const{fontSize:P,boxSize:D}=M;m.boxSize=D||m.boxSize,m.fontSize=P||m.fontSize}const v=[m.boxPoint[0],m.boxPoint[1]];zc(m.boxPoint,h,d,l);const R=[T.op[0],T.op[1]],b=[R[0]-v[0],R[1]-v[1]];if(T.centerPos=[T.centerPos[0]+b[0],T.centerPos[1]+b[1]],T.opt.eraserlines)for(const P of T.opt.eraserlines){const{op:D,thickness:z}=P;P.thickness=Math.round(z*Math.max(d[0],d[1]));for(let j=0;j<D.length;j++)Fs(D[j],h,d,l)}}else if(l&&m.boxPoint&&(m.boxPoint=[Math.round(m.boxPoint[0]+l[0]),Math.round(m.boxPoint[1]+l[1])],T.centerPos=[T.centerPos[0]+l[0],T.centerPos[1]+l[1]],T.opt.eraserlines))for(const M of T.opt.eraserlines){const{op:v}=M;for(let R=0;R<v.length;R++){const b=v[R].map((P,D)=>D%2?P+l[1]:P+l[0]);M.op[R]=b}}return T&&i.setInfo(t.name,T),T==null?void 0:T.rect}static getRectFromLayer(e,t){const n=e.getElementsByName(t)[0];if(n){const i=n.getBoundingClientRect();let o={x:Math.floor(i.x),y:Math.floor(i.y),w:Math.floor(i.width+2),h:Math.floor(i.height+2)};return n.children.forEach(a=>{if(a.tagName==="GROUP"){const c=n.getBoundingClientRect();o=Ue(o,{x:Math.floor(c.x),y:Math.floor(c.y),w:Math.floor(c.width+2),h:Math.floor(c.height+2)})}}),o}}};x(Sn,"textImageSnippetSize",1024*4),x(Sn,"SafeBorderPadding",30);let Qs=Sn;const Iye=.01;function T0(s,r,e={}){let t=s.length-1;const n=e.protectedIndex??-1,i=e.timestamp??Date.now();for(let o=0;o<r.length;o+=2){const a=new Pe(r[o],r[o+1]),c=s[s.length-1];if(!c){a.setT(i),s.push(a);continue}if(a.x===c.x&&a.y===c.y){c.setT(i);continue}const l=s.length-1;if(s.length>1&&l>n){const h=s[l-1],d=fe.Sub(c,h).uni(),f=fe.Sub(a,c).uni();Number.isFinite(d.x)&&Number.isFinite(d.y)&&Number.isFinite(f.x)&&Number.isFinite(f.y)&&fe.Equals(d,f,Iye)&&(s.pop(),t--)}const u=s[s.length-1];a.setv(fe.Sub(a,u).uni()),a.setT(i),s.push(a)}return Math.max(t,0)}const Fi=class Fi extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"toolsType",q.PencilEraser);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"worldPosition");x(this,"worldScaling");x(this,"eraserRect");x(this,"eraserPolyline");this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}combineConsume(e){const{workerEngine:t}=e;if(this.tmpPoints.length===0)return{type:le.None};const{thickness:n}=this.workOptions,{width:i,height:o}=Fi.eraserSizes[n],a=Math.round(Math.max(i,o)/this.worldScaling[0]),{rect:c,willNewNodes:l,willDeleteNodes:u}=this.getChangeNodes(a,t);return{...this.baseConsumeResult,type:le.DrawWork,rect:c,willNewNodes:l,willDeleteNodes:u}}consumeService(){}updateTempPoints(e,t){return T0(this.tmpPoints,e)}getChangeNodes(e,t){const n=new Map,i=new Set;let o;if(!this.vNodes)return{willDeleteNodes:i,willNewNodes:n,rect:o};const a=this.worldPosition;let c=it(this.tmpPoints,e);c=Ks(c,a),c=$0(c,this.worldScaling,a);const{nodeRange:l}=this.vNodes.getRectIntersectRange(c);if(!l.size)return{willDeleteNodes:i,willNewNodes:n,rect:o};const u=this.computEraserPointLines(this.tmpPoints,90);for(const[h,d]of l.entries()){if(d.toolsType!==q.Pencil)continue;let f=Ks(d.rect,[-a[0],-a[1]]);f={x:f.x/this.worldScaling[0],y:f.y/this.worldScaling[1],w:f.w/this.worldScaling[0],h:f.h/this.worldScaling[1]};const g=[f.x,f.y,f.x+f.w,f.y+f.h],y=[],S=[];for(const E of u)th.polyline(E,g,y);if(y.length&&d.opt)for(const E of y){const C=[];for(let L=0;L<E.length;L++)L!==0&&nn(E[L],E[L-1])||C.push(...E[L]);S.push(C)}if(S.length&&t){const E=t.createWorkShapeNode({workId:h,toolsType:q.Pencil,toolsOpt:d.opt});E.setWorkId(h);const C=E==null?void 0:E.computPencilPoints({op:d.op,eraserPolylines:S,eraserThickness:e});if(o=Ue(o,d.rect),i.add(h),t.removeNode(h),C.length)for(let L=0;L<C.length;L++){const T=`${h}_${Date.now()}_${L}`,p=T,M=t.setFullWork({workId:p,opt:d.opt,toolsType:q.Pencil}).consumeService({op:C[L],isFullWork:!0,replaceId:p});t.clearWorkShapeNodeCache(p),o=Ue(o,M),n.set(T,{...d,toolsType:q.Pencil,rect:M??d.rect,name:T,op:C[L]})}}}return{willNewNodes:n,willDeleteNodes:i,rect:o}}consume(e){const{data:t}=e,{op:n}=t;if(!n||n.length===0)return{type:le.None,...this.baseConsumeResult};const{thickness:i}=this.workOptions,{width:o,height:a}=Fi.eraserSizes[i],c=Math.max(o,a)/this.worldScaling[0];return this.updateTempPoints(n,c),{type:le.None,...this.baseConsumeResult}}computEraserPointLines(e,t=60){const n=[];let i=0;const o=360-t;for(let a=1;a<e.length;a++){const c=e[a-1],l=e[a];if(a===1&&i===0&&(n[i]=[c.XY]),n[i].push(l.XY),a<e.length-1){const u=l.getAngleByPoints(c,e[a+1]);(u<t||u>o)&&(i++,n[i]=[l.XY])}}return e.length===1&&n.length===0&&n.push([e[0].XY,e[0].XY]),n}consumeAll(e){const{workerEngine:t}=e;if(this.replace(this.fullLayer,this.workId),!this.tmpPoints.length)return{type:le.None,...this.baseConsumeResult};const{thickness:n}=this.workOptions,{width:i,height:o}=Fi.eraserSizes[n],a=Math.max(i,o)/this.worldScaling[0],{willDeleteNodes:c,willNewNodes:l,rect:u}=this.getChangeNodes(a,t);if(c.size===0&&l.size===0)return{type:le.FullWork,...this.baseConsumeResult,rect:u};const h=[];this.tmpPoints.map(f=>{h.push(f.x,f.y,a/2)});const d=xt(h);return{...this.baseConsumeResult,type:le.FullWork,dataType:xe.Local,rect:u,ops:d,willNewNodes:l,willDeleteNodes:c}}clearTmpPoints(){this.tmpPoints.length=0}};x(Fi,"eraserSizes",hd);let Ba=Fi;const bye=new Set([q.Image,q.BackgroundSVG]),Rp={"shape.vertices":new Set([q.Polygon,q.Star]),"shape.innerVerticeStep":new Set([q.Star]),"shape.innerRatio":new Set([q.Star]),"shape.placement":new Set([q.SpeechBalloon])},Eye=new Set(["fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough"]),xye=new Set(["strokeColor","thickness","strokeType"]),Rye=new Set(["fillColor"]),kye=new Set(["zIndexLayer"]),Aye=new Set([q.Pencil,q.LaserPen,q.Arrow,q.Straight]),kp=new Set([q.Rectangle,q.Ellipse,q.Triangle,q.Rhombus,q.Polygon,q.Star,q.SpeechBalloon]),Pye=new Set([q.Pencil,q.Arrow,q.Straight,q.Rectangle,q.Ellipse,q.Star,q.Triangle,q.Rhombus,q.Polygon,q.SpeechBalloon]);function C0(s){return s!==void 0&&Pye.has(s)}const Dye=new Set([q.Pencil]),Lye=new Set([q.LaserPen,q.Arrow,q.Straight,q.Rectangle,q.Ellipse,q.Star,q.Polygon,q.SpeechBalloon]);function I0(s){return s===Be.Normal||s===Be.Stroke||s===Be.Dotted||s===Be.LongDotted}function Oi(s,r){return s?kye.has(r)?!0:r==="isLocked"?bye.has(s):Eye.has(r)?s===q.Text:r in Rp?Rp[r].has(s):Rye.has(r)?kp.has(s):xye.has(r)?Aye.has(s)||kp.has(s):!1:!1}function Nye(s){return["strokeColor","fillColor","thickness","strokeType","fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough","isLocked","zIndexLayer","shape.vertices","shape.innerVerticeStep","shape.innerRatio","shape.placement"].filter(e=>Oi(s,e))}function Ss(s){var e,t,n,i;const r=[];return s.strokeColor!==void 0&&r.push("strokeColor"),s.fillColor!==void 0&&r.push("fillColor"),s.thickness!==void 0&&r.push("thickness"),s.strokeType!==void 0&&r.push("strokeType"),s.fontColor!==void 0&&r.push("fontColor"),s.fontBgColor!==void 0&&r.push("fontBgColor"),s.fontSize!==void 0&&r.push("fontSize"),s.bold!==void 0&&r.push("bold"),s.italic!==void 0&&r.push("italic"),s.underline!==void 0&&r.push("underline"),s.lineThrough!==void 0&&r.push("lineThrough"),s.isLocked!==void 0&&r.push("isLocked"),s.zIndexLayer!==void 0&&r.push("zIndexLayer"),((e=s.shape)==null?void 0:e.vertices)!==void 0&&r.push("shape.vertices"),((t=s.shape)==null?void 0:t.innerVerticeStep)!==void 0&&r.push("shape.innerVerticeStep"),((n=s.shape)==null?void 0:n.innerRatio)!==void 0&&r.push("shape.innerRatio"),((i=s.shape)==null?void 0:i.placement)!==void 0&&r.push("shape.placement"),r}function Ap(s,r){return!s||r===void 0||!Oi(s,"strokeType")?!1:Dye.has(s)?I0(r):Lye.has(s)?r===Be.Normal||r===Be.Dotted||r===Be.LongDotted:!1}function Oye(s,r,e){const t=s-(e?1:2);if(!(t<1||t<=r))return{start:Math.max(r,0),end:t,committedIndex:t}}function Vl(s){return s.toolsType===q.Image||s.toolsType===q.Text?"delete-on-done":s.isSelected?"blocked":C0(s.toolsType)?"vector":"blocked"}function zye(s,r,e){return s.map(({x:t,y:n})=>[t*e[0]+r[0],n*e[1]+r[1]])}function $l(s,r,e){if(!s.length)return!1;if(s.length===1)return ju(s[0],e)<=r*r;for(let t=1;t<s.length;t++)if(Bye(s[t-1],s[t],e)<=r*r)return!0;return!1}function ju(s,r){const e=Math.max(r.x-s[0],0,s[0]-(r.x+r.w)),t=Math.max(r.y-s[1],0,s[1]-(r.y+r.h));return e*e+t*t}function Bye(s,r,e){if(jye(s,r,e))return 0;const t=e.x,n=e.y,i=e.x+e.w,o=e.y+e.h,a=[[[t,n],[i,n]],[[i,n],[i,o]],[[i,o],[t,o]],[[t,o],[t,n]]];let c=Math.min(ju(s,e),ju(r,e));for(const[l,u]of a)c=Math.min(c,Fye(s,r,l,u));return c}function jye(s,r,e){let t=0,n=1;const i=r[0]-s[0],o=r[1]-s[1],a=[[-i,s[0]-e.x],[i,e.x+e.w-s[0]],[-o,s[1]-e.y],[o,e.y+e.h-s[1]]];for(const[c,l]of a){if(c===0){if(l<0)return!1;continue}const u=l/c;if(c<0?t=Math.max(t,u):n=Math.min(n,u),t>n)return!1}return!0}function Fye(s,r,e,t){const n=r[0]-s[0],i=r[1]-s[1],o=t[0]-e[0],a=t[1]-e[1],c=s[0]-e[0],l=s[1]-e[1],u=n*n+i*i,h=n*o+i*a,d=o*o+a*a,f=n*c+i*l,g=o*c+a*l,y=u*d-h*h;let S=y,E=y,C=y,L=y;y<Number.EPSILON?(S=0,C=1,E=g,L=d):(S=h*g-d*f,E=u*g-h*f,S<0?(S=0,E=g,L=d):S>C&&(S=C,E=g+h,L=d)),E<0?(E=0,-f<0?S=0:-f>u?S=C:(S=-f,C=u)):E>L&&(E=L,-f+h<0?S=0:-f+h>u?S=C:(S=-f+h,C=u));const T=Math.abs(S)<Number.EPSILON?0:S/C,p=Math.abs(E)<Number.EPSILON?0:E/L,m=c+T*n-p*o,M=l+T*i-p*a;return m*m+M*M}const Ya=class Ya extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.none);x(this,"toolsType",q.BitMapEraser);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"worldPosition");x(this,"worldScaling");x(this,"eraserRect");x(this,"eraserPolyline");x(this,"oldRect");x(this,"committedPointIndex",-1);x(this,"candidateWorkIds",new Set);x(this,"doingPointBatches",[]);x(this,"doingLines",new Map);x(this,"changedNodes",new Map);x(this,"deletedNodes",new Set);x(this,"changedRect");x(this,"lastSceneRevision",-1);x(this,"pendingDeleteIds",new Set);x(this,"hiddenRenderNodes",new Map);x(this,"fullLayerPreviewGroup");x(this,"disposeVNodeObserver");x(this,"beforeImages",new Map);this.workOptions=e.toolsOpt,this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling,this.startVNodeObservation()}combineConsume(e){var l;this.syncWorldTransform(),this.startVNodeObservation();const t=this.getDeltaPoints(!0),n=((l=this.vNodes)==null?void 0:l.getRevision())??0,i=n!==this.lastSceneRevision;let o=this.restoreNoLongerClearablePendingDeletes();const a=i?this.tmpPoints:t==null?void 0:t.points;if(a!=null&&a.length){const u=this.getEraserThickness();o=Ue(o,this.hideDeleteCandidatesForPoints(a,u)),this.collectVectorCandidateWorkIds(a,u)}if(this.lastSceneRevision=n,!t)return{...this.baseConsumeResult,type:o?le.DrawWork:le.None,rect:o};const c=this.getEraserThickness();return this.recordDoingPointBatch(t.points),o=Ue(o,this.appendFullLayerPreview(t.points,c)),this.committedPointIndex=t.committedIndex,this.changedRect=Ue(this.changedRect,o),{...this.baseConsumeResult,type:o?le.DrawWork:le.None,rect:o}}consumeService(){}consume(e){const{op:t}=e.data;return t!=null&&t.length?(this.syncWorldTransform(),this.updateTempPoints(t),{type:le.None,...this.baseConsumeResult}):{type:le.None,...this.baseConsumeResult}}async consumeAll(e){const{workerEngine:t}=e;if(this.syncWorldTransform(),this.clearFullLayerPreview(!1),!this.tmpPoints.length)return this.clearFullLayerPreview(!0),{type:le.None,...this.baseConsumeResult};const n=this.getEraserThickness(),i=new Map(this.beforeImages);try{this.recordFinalPointBatch(),this.getCandidateWorkIds().clear(),this.collectVectorCandidateWorkIds(this.tmpPoints,n),this.collectDeleteCandidatesForDone(this.tmpPoints,n);for(const[u,h]of this.snapshotDoneCandidates())i.set(u,h);t&&typeof t.publishBitmapEraserBeforeImages=="function"&&t.publishBitmapEraserBeforeImages(this.workId,i),this.collectDoneVectorChanges(n),this.commitDoingFaces(),this.renderChangedNodes(t,this.workOptions.removeOnDone!==!1),this.commitPendingDeletions(t);const o=new Set(this.deletedNodes),a=new Map(this.changedNodes),c=this.changedRect;if(o.size===0&&a.size===0)return{type:le.FullWork,...this.baseConsumeResult,rect:c,eraseTxnBeforeImages:new Map(i),eraseTxnCommitStatus:"applied"};const l=[];for(const u of this.tmpPoints)l.push(u.x,u.y,n/2);return{...this.baseConsumeResult,type:le.FullWork,dataType:xe.Local,rect:c,ops:xt(l),willUpdateNodes:a,willDeleteNodes:o,eraseTxnBeforeImages:new Map(i),eraseTxnCommitStatus:"applied"}}catch(o){let a=!0;try{a=!await this.restoreFailedDoneCandidates(i,t)}catch(l){console.warn("[BitMapEraser] Done recovery threw after commit error:",l)}const c=this.changedRect;try{this.clearFullLayerPreview(!0)}catch(l){console.warn("[BitMapEraser] Done preview cleanup failed:",l)}return this.changedNodes.clear(),this.getCandidateWorkIds().clear(),this.getDoingPointBatches().length=0,this.getDoingLines().clear(),this.deletedNodes.clear(),this.pendingDeleteIds.clear(),console.warn("[BitMapEraser] Done commit aborted:",o),{type:le.FullWork,...this.baseConsumeResult,rect:c,willUpdateNodes:new Map,willDeleteNodes:new Set,eraseTxnBeforeImages:new Map(i),eraseTxnRecoveryRequired:a,eraseTxnCommitStatus:"failed"}}}clearTmpPoints(){this.clearFullLayerPreview(!0),this.stopVNodeObservation(),this.tmpPoints.length=0,this.committedPointIndex=-1,this.changedNodes.clear(),this.getCandidateWorkIds().clear(),this.getDoingPointBatches().length=0,this.getDoingLines().clear(),this.deletedNodes.clear(),this.pendingDeleteIds.clear(),this.changedRect=void 0,this.lastSceneRevision=-1}shouldRevalidateVNodeRevision(){return this.tmpPoints.length>0}syncWorldTransform(){this.worldPosition=this.fullLayer.worldPosition,this.worldScaling=this.fullLayer.worldScaling}getEraserThickness(){const{thickness:e}=this.workOptions,{width:t,height:n}=Ya.eraserSizes[e];return Math.round(Math.max(t,n)/this.worldScaling[0])}updateTempPoints(e){T0(this.tmpPoints,e,{protectedIndex:this.committedPointIndex})}getDeltaPoints(e){const t=Oye(this.tmpPoints.length,this.committedPointIndex,e);if(t)return{points:this.tmpPoints.slice(t.start,t.end+1),committedIndex:t.committedIndex}}recordFinalPointBatch(){const e=this.getDeltaPoints(!0);if(e){this.recordDoingPointBatch(e.points),this.committedPointIndex=e.committedIndex;return}!this.getDoingPointBatches().length&&this.tmpPoints.length&&(this.recordDoingPointBatch(this.tmpPoints),this.committedPointIndex=this.tmpPoints.length-1)}recordDoingPointBatch(e){e.length&&this.getDoingPointBatches().push(e.map(t=>new Pe(t.x,t.y,t.z)))}getDoingPointBatches(){return this.doingPointBatches||(this.doingPointBatches=[]),this.doingPointBatches}getDoingLines(){return this.doingLines||(this.doingLines=new Map),this.doingLines}getCandidateWorkIds(){return this.candidateWorkIds||(this.candidateWorkIds=new Set),this.candidateWorkIds}appendFullLayerPreview(e,t){if(!e.length)return;const n=this.computEraserPointLines(e).map(c=>{const l=c.flatMap(([u,h])=>[u,h]);return Lr(this.computEraserPoints(l,t),!0)}).filter(Boolean);if(!n.length)return;const i=new $t({pos:[0,0],d:n.join(" "),fillColor:"rgba(0,0,0,1)",fillRule:"evenodd"});let o=!1;i.addEventListener("beforerender",({detail:c})=>{const l=c.context;typeof l.blendFuncSeparate=="function"?l.blendFuncSeparate(l.ZERO,l.ZERO,l.ZERO,l.ZERO):(l.save(),o=!0,l.globalCompositeOperation="destination-out")}),i.addEventListener("afterrender",({detail:c})=>{const l=c.context;typeof l.blendFuncSeparate=="function"?l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA):o&&(o=!1,l.restore())}),this.getFullLayerPreviewGroup().append(i);let a=it(e,t);return a=Ks(a,this.worldPosition),$0(a,this.worldScaling,this.worldPosition)}getFullLayerPreviewGroup(){if(this.fullLayerPreviewGroup)return this.fullLayerPreviewGroup;const e=new dt({name:this.workId,pos:[0,0],zIndex:9999});return this.fullLayer.append(e),this.fullLayerPreviewGroup=e,e}getTrackRect(e,t){let n=e[0][0],i=e[0][1],o=n,a=i;for(let c=1;c<e.length;c++){const[l,u]=e[c];n=Math.min(n,l),i=Math.min(i,u),o=Math.max(o,l),a=Math.max(a,u)}return{x:n-t,y:i-t,w:o-n+t*2,h:a-i+t*2}}getScreenTrack(e,t){const n=zye(e,this.worldPosition,this.worldScaling),i=t*Math.max(Math.abs(this.worldScaling[0]),Math.abs(this.worldScaling[1]))/2;return{screenPoints:n,radius:i,rect:this.getTrackRect(n,i+1)}}collectVectorCandidateWorkIds(e,t){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,t),{nodeRange:i}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[o,a]of i)!this.vNodes.isCanClearWorkId(o)||Vl(a)!=="vector"||!$l(n.screenPoints,n.radius,a.rect)||this.getCandidateWorkIds().add(o)}hideDeleteCandidatesForPoints(e,t){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,t);let i;const{nodeRange:o}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[a,c]of o)this.pendingDeleteIds.has(a)||!this.vNodes.isCanClearWorkId(a)||Vl(c)!=="delete-on-done"||!$l(n.screenPoints,n.radius,c.rect)||(this.pendingDeleteIds.add(a),this.hideRenderNodesForId(a),i=Ue(i,c.rect),this.changedRect=Ue(this.changedRect,c.rect));return i}collectDeleteCandidatesForDone(e,t){if(!this.vNodes||!e.length)return;const n=this.getScreenTrack(e,t),{nodeRange:i}=this.vNodes.getRectIntersectRange(n.rect,!1,!1);for(const[o,a]of i)this.vNodes.isCanClearWorkId(o)&&Vl(a)==="delete-on-done"&&$l(n.screenPoints,n.radius,a.rect)&&(this.pendingDeleteIds.add(o),this.changedRect=Ue(this.changedRect,a.rect))}hideRenderNodesForId(e){this.captureBeforeImage(e);const t=this.hiddenRenderNodes.get(e)||[],n=new Set(t.map(({node:i})=>i));for(const i of this.fullLayer.getElementsByName(e))n.has(i)||t.push({node:i,display:i.getAttribute("display")}),i.setAttribute("display","none");this.hiddenRenderNodes.set(e,t)}restoreNoLongerClearablePendingDeletes(){var t,n,i;let e;for(const o of[...this.pendingDeleteIds])if(!((t=this.vNodes)!=null&&t.isCanClearWorkId(o))){for(const{node:a,display:c}of this.hiddenRenderNodes.get(o)||[])a.setAttribute("display",c);e=Ue(e,(i=(n=this.vNodes)==null?void 0:n.get(o))==null?void 0:i.rect),this.hiddenRenderNodes.delete(o),this.pendingDeleteIds.delete(o)}return e}snapshotDoneCandidates(){var t;const e=new Map;for(const n of[...this.getCandidateWorkIds(),...this.pendingDeleteIds]){if(e.has(n)||!((t=this.vNodes)!=null&&t.isCanClearWorkId(n)))continue;const i=this.vNodes.get(n);if(i){const o=ht(i);e.set(n,o),this.beforeImages.has(n)||this.beforeImages.set(n,o)}}return e}captureBeforeImage(e){var n;if(this.beforeImages.has(e)||!((n=this.vNodes)!=null&&n.isCanClearWorkId(e)))return;const t=this.vNodes.get(e);t&&this.beforeImages.set(e,ht(t))}collectDoneVectorChanges(e){if(!this.vNodes)return;const t=this.worldPosition;for(const n of this.getCandidateWorkIds()){if(!this.vNodes.isCanClearWorkId(n))continue;const i=this.vNodes.get(n);if(!(i!=null&&i.opt)||!C0(i.toolsType))continue;let o=Ks(i.rect,[-t[0],-t[1]]);o={x:o.x/this.worldScaling[0],y:o.y/this.worldScaling[1],w:o.w/this.worldScaling[0],h:o.h/this.worldScaling[1]};const a=[o.x,o.y,o.x+o.w,o.y+o.h],c=[];for(const l of this.getDoingPointBatches())for(const u of this.computEraserPointLines(l,120)){const h=[];th.polyline(u,a,h);for(const d of h){const f=this.normalizeClippedLine(d);f.length&&c.push(f)}}c.length&&(this.getDoingLines().set(n,[{workId:this.workId,op:c,thickness:e}]),this.changedNodes.set(n,i),this.changedRect=Ue(this.changedRect,i.rect))}}normalizeClippedLine(e){const t=[];for(let n=0;n<e.length&&!(isNaN(e[n][0])||isNaN(e[n][1]));n++){const i=e[n].map(o=>Math.round(o*100)/100);if(n>0){const o=e[n-1].map(a=>Math.round(a*100)/100);if(nn(i,o))continue}t.push(...i)}return t}commitDoingFaces(){var e;for(const[t,n]of this.getDoingLines()){if(!((e=this.vNodes)!=null&&e.isCanClearWorkId(t))){this.changedNodes.delete(t);continue}const i=this.vNodes.get(t);if(!(i!=null&&i.opt)||!n.length){this.changedNodes.delete(t);continue}const o=jpe(i.opt,n),a=Da({...i.opt,...o});delete a.eraserlines,i.opt=a,this.changedNodes.set(t,i),this.vNodes.setInfo(t,{opt:a})}}renderChangedNodes(e,t){if(e)for(const[n,i]of[...this.changedNodes]){const o=e.createWorkShapeNode({workId:n,toolsType:i.toolsType,toolsOpt:i.opt});o==null||o.setWorkId(n),o==null||o.setEraserDeleteConfirmation(t);const a=o==null?void 0:o.consumeService({op:i.op,isFullWork:!0,replaceId:n});this.changedRect=Ue(this.changedRect,a),t&&(o!=null&&o.isDelete)&&(e.removeNode(n),this.deletedNodes.add(n),this.changedNodes.delete(n))}}commitPendingDeletions(e){var t;for(const n of this.pendingDeleteIds){if(!((t=this.vNodes)!=null&&t.isCanClearWorkId(n))){for(const{node:o,display:a}of this.hiddenRenderNodes.get(n)||[])o.setAttribute("display",a);continue}const i=this.vNodes.get(n);i&&(this.changedRect=Ue(this.changedRect,i.rect)),e==null||e.removeNode(n),this.deletedNodes.add(n),this.changedNodes.delete(n)}this.pendingDeleteIds.clear(),this.hiddenRenderNodes.clear(),this.stopVNodeObservation()}clearFullLayerPreview(e){var t;if((t=this.fullLayerPreviewGroup)==null||t.remove(),this.fullLayerPreviewGroup=void 0,!!e){for(const n of this.hiddenRenderNodes.values())for(const{node:i,display:o}of n)i.setAttribute("display",o);this.hiddenRenderNodes.clear(),this.pendingDeleteIds.clear()}}startVNodeObservation(){!this.vNodes||this.disposeVNodeObserver||typeof this.vNodes.observeRevision!="function"||(this.disposeVNodeObserver=this.vNodes.observeRevision((e,t,n)=>{n&&(e==="add"||e==="update")&&this.pendingDeleteIds.has(n)&&this.hideRenderNodesForId(n)}))}stopVNodeObservation(){var e;(e=this.disposeVNodeObserver)==null||e.call(this),this.disposeVNodeObserver=void 0}async restoreFailedDoneCandidates(e,t){var i;let n=!0;for(const[o,a]of e)try{const c=ht(a);if((i=this.vNodes)==null||i.setInfo(o,c),!t)continue;const l=t.createWorkShapeNode({workId:o,toolsType:c.toolsType,toolsOpt:c.opt});if(!l){n=!1;continue}l.setWorkId(o),c.toolsType===q.Image?await l.consumeServiceAsync({isFullWork:!0,replaceId:o,worker:t})||(n=!1):c.toolsType===q.Text?await l.consumeServiceAsync({isFullWork:!0,replaceId:o,boxRect:t.thread.getSceneRect()})||(n=!1):l.consumeService({op:c.op,isFullWork:!0,replaceId:o})}catch(c){n=!1,console.warn(`[BitMapEraser] Failed to restore ${o} after Done error:`,c)}return n}computEraserPointLines(e,t=60){const n=[];let i=0;const o=360-t;for(let a=1;a<e.length;a++){const c=e[a-1],l=e[a];if(a===1&&i===0&&(n[i]=[c.XY]),n[i].push(l.XY),a<e.length-1){const u=l.getAngleByPoints(c,e[a+1]);(u<t||u>o)&&(i++,n[i]=[l.XY])}}return e.length===1&&n.push([e[0].XY,e[0].XY]),n}};x(Ya,"eraserSizes",hd);let ja=Ya;class qs extends Re{constructor(e){super(e);x(this,"canRotate",!1);x(this,"scaleType",Ye.all);x(this,"toolsType",q.BackgroundSVG);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=qs.getScaleType(this.workOptions)}static normalizeStorageData(e){return Re.normalizeStorageData(e)}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}draw(e){const{layer:t,workId:n,replaceId:i}=e,{centerX:o,centerY:a,width:c,height:l,rotate:u,zIndex:h}=this.workOptions,d=(h||0)-100,f=new dt({anchor:[.5,.5],pos:[o,a],name:n,size:[c,l],zIndex:d,rotate:u}),g=new Gs({normalize:!0,pos:[0,0],width:c,height:l});f.appendChild(g),this.replace(t,i||n,f);const y=f.getBoundingClientRect();if(y)return{x:Math.floor(y.x-Re.SafeBorderPadding),y:Math.floor(y.y-Re.SafeBorderPadding),w:Math.floor(y.width+Re.SafeBorderPadding*2),h:Math.floor(y.height+Re.SafeBorderPadding*2)}}consumeService(e){var o;const{replaceId:t}=e,n=this.workId,i=this.draw({workId:n,layer:this.fullLayer,replaceId:t});return(o=this.vNodes)==null||o.setInfo(n,{rect:i,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:i&&Re.getCenterPos(i,this.fullLayer)}),i}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:t,rotate:n}=e;return t!==!1||n&&Math.abs(n)%90>0?Ye.proportional:Ye.all}static updateNodeOpt(e){const{node:t,opt:n,vNodes:i,targetNode:o}=e,{translate:a,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndexForBackgroundSVG:f}=n,g=o&&ht(o)||i.get(t.name);if(!g)return;const y=t.parent;if(y){if(yt(f)){const S=(f||0)-100;t.setAttribute("zIndex",S),g.opt.zIndex=f}if(_n(d)&&(g.opt.locked=d),c&&l&&u&&a){const{centerX:S,centerY:E,width:C,height:L,uniformScale:T}=g.opt,p=T!==!1?[u[0],u[0]]:u,m=[S,E],M=[S,E];zc(M,l,p,a);const v=[M[0]-m[0],M[1]-m[1]];g.centerPos=[g.centerPos[0]+v[0],g.centerPos[1]+v[1]],g.opt.width=Math.round(C*p[0]),g.opt.height=Math.round(L*p[1]),g.opt.centerX=M[0],g.opt.centerY=M[1]}else if(a)g.opt.centerX=g.opt.centerX+a[0],g.opt.centerY=g.opt.centerY+a[1],g.centerPos=[g.centerPos[0]+a[0],g.centerPos[1]+a[1]];else if(yt(h))if(g.opt.rotate=h,g.scaleType=qs.getScaleType(g.opt),o){const S=Md(g.rect,h);g.rect=S}else{const S=Re.getRectFromLayer(y,t.name);g.rect=S||g.rect}return g&&i.setInfo(t.name,g),g==null?void 0:g.rect}}}function Oc(s){switch(s){case q.Arrow:return h0;case q.Pencil:return a0;case q.Straight:return y0;case q.Ellipse:return d0;case q.Polygon:case q.Triangle:return p0;case q.Star:case q.Rhombus:return g0;case q.Rectangle:return f0;case q.SpeechBalloon:return m0;case q.Text:return Qs;case q.LaserPen:return c0;case q.Eraser:return Na;case q.PencilEraser:return Ba;case q.BitMapEraser:return ja;case q.Selector:return za;case q.Image:return Zs;case q.BackgroundSVG:return qs}}async function Pp(s){const r=s.toolsType;if(r===void 0)return{status:"unrecoverable",reason:"missing-tools-type"};const e=Oc(r);return e?e.normalizeStorageData(s):{status:"unrecoverable",reason:`unsupported-tool:${r}`}}function Uye(s){const r=s.toolsType;if(r===void 0)return{status:"unrecoverable",reason:"missing-tools-type"};const e=Oc(r);return e?r===q.Text?Qs.normalizeStorageDataSync(s):[q.Pencil,q.Arrow,q.Straight,q.Ellipse,q.Rectangle,q.Polygon,q.Triangle,q.Star,q.Rhombus,q.SpeechBalloon].includes(r)?Re.normalizeDrawableStorageDataSync(s):e.normalizeStorageDataSync(s):{status:"unrecoverable",reason:`unsupported-tool:${r}`}}function pd(s,r){const{toolsType:e,...t}=s;switch(e){case q.Arrow:return new h0(t);case q.Pencil:return new a0(t);case q.Straight:return new y0(t);case q.Ellipse:return new d0(t);case q.Polygon:case q.Triangle:return new p0(t);case q.Star:case q.Rhombus:return new g0(t);case q.Rectangle:return new f0(t);case q.SpeechBalloon:return new m0(t);case q.Text:return new Qs(t);case q.LaserPen:return new c0(t);case q.Eraser:return new Na(t,r);case q.BitMapEraser:return new ja(t);case q.PencilEraser:return new Ba(t);case q.Selector:return t.vNodes?new za({...t,vNodes:t.vNodes,drawLayer:t.fullLayer}):void 0;case q.Image:return new Zs(t);case q.BackgroundSVG:return new qs({...t,toolsOpt:t.toolsOpt});default:return}}function b0(s){const r=[],e=["PATH","SPRITE","POLYLINE","RECT","ELLIPSE","LABEL","SPRITESVG"];for(const t of s){if(t.tagName==="GROUP"&&t.children.length){const n=b0(t.children);r.push(...n)}t.tagName&&e.includes(t.tagName)&&r.push(t)}return r}class Fu{constructor(r){x(this,"_map");x(this,"_observers",new Set);this._map=new Map(r)}notifyObservers(r,e,t){for(const n of this._observers)n(r,e,t)}observe(r){this._observers.add(r)}unobserve(r){this._observers.delete(r)}get(r){return this._map.get(r)}set(r,e,t=!0){const n=this._map.has(r)?"update":"add";return this._map.set(r,e),t&&this.notifyObservers(n,r,e),this}has(r){return this._map.has(r)}delete(r,e=!0){const t=this._map.get(r),n=this._map.delete(r);return e&&t&&this.notifyObservers("delete",r,t),n}clear(r=!0){const e=this._map.keys();if(this._map.clear(),r)for(const t of e)this.notifyObservers("clear",t,void 0)}get size(){return this._map.size}keys(){return this._map.keys()}values(){return this._map.values()}entries(){return this._map.entries()}forEach(r,e){this._map.forEach(r,e)}}class E0{constructor(r,e){x(this,"viewId");x(this,"scene");x(this,"fullLayer");x(this,"curNodeMap");x(this,"targetNodeMap",[]);x(this,"highLevelIds");x(this,"canClearUids");x(this,"localUid");x(this,"spatialIndex",new wM);x(this,"spatialEntries",new Map);x(this,"verifySpatialIndex",!1);x(this,"revision",0);x(this,"revisionObservers",new Set);this.viewId=r,this.scene=e,this.curNodeMap=new Fu}init(r){this.fullLayer=r}get(r){return this.curNodeMap.get(r)}getRevision(){return this.revision}observeRevision(r){return this.revisionObservers.add(r),()=>this.revisionObservers.delete(r)}setLocalUid(r){this.localUid=r}getLocalUid(){return this.localUid}setSpatialIndexVerification(r){this.verifySpatialIndex=r}setCanClearUids(r){this.canClearUids=r,this.revision++,this.notifyRevisionObservers("permission")}getCanClearUids(){return this.canClearUids}getCanEraserNodes(r,e){const t=new Map;for(const[n,i]of r.entries())i.toolsType!==q.BackgroundSVG&&(i.toolsType===q.Image&&i.opt.type===on.Image&&(i.opt.locked||e&&e.disableEraseImage)||i.toolsType===q.Text&&(i.opt.workState===de.Doing||i.opt.workState===de.Start||e&&e.disableEraseText)||this.isCanClearWorkId(n)&&t.set(n,i));return t}getNodesByType(r){const e=new Map;return this.curNodeMap.forEach((t,n)=>{t.toolsType===r&&e.set(n,t)}),e}gethasEraserNodes(){const r=new Map;return this.curNodeMap.forEach((e,t)=>{var n;((n=e.opt.eraserlines)!=null&&n.length||e.opt.eraserFaces)&&r.set(t,e)}),r}hasRenderNodes(){return this.curNodeMap.size>0}has(r){return this.curNodeMap.has(r)}setInfo(r,e){const t=this.curNodeMap.has(r)?"update":"add",n=this.curNodeMap.get(r)||{name:r,rect:e.rect};e.rect&&(n.rect=ht(e.rect)),e.op&&F0e(e.op)&&(n.op=ht(e.op)),e.canRotate&&(n.canRotate=e.canRotate),e.scaleType&&(n.scaleType=e.scaleType),e.opt&&(n.opt=ht(e.opt)),e.toolsType&&(n.toolsType=e.toolsType),e.centerPos&&(n.centerPos=ht(e.centerPos)),_n(e.isSelected)&&(n.isSelected=e.isSelected),n.rect?(this.curNodeMap.set(r,n),this.updateSpatialEntry(r,n.rect),this.revision++,this.notifyRevisionObservers(t,r)):this.delete(r)}selected(r){this.setInfo(r,{isSelected:!0})}unSelected(r){this.setInfo(r,{isSelected:!1})}delete(r){const e=this.curNodeMap.delete(r),t=this.spatialEntries.get(r);t&&(this.spatialIndex.remove(t),this.spatialEntries.delete(r)),e&&(this.revision++,this.notifyRevisionObservers("delete",r))}clear(){const r=this.curNodeMap.size>0;this.curNodeMap.clear(),this.spatialIndex.clear(),this.spatialEntries.clear(),this.targetNodeMap.length=0,r&&(this.revision++,this.notifyRevisionObservers("clear"))}notifyRevisionObservers(r,e){for(const t of this.revisionObservers)t(r,this.revision,e)}getRectIntersectRange(r,e=!0,t=!0){const n=this.spatialIndex.search(this.toSpatialBox(r)).map(c=>c.key);let i=n;if(this.verifySpatialIndex){const c=this.getLinearIntersectKeys(r),l=new Set(n);(c.length!==n.length||c.some(u=>!l.has(u)))&&(console.warn(`[VNodeManager] spatial index mismatch in ${this.viewId}; using linear result`),i=c)}let o;const a=new Map;for(const c of i){const l=this.curNodeMap.get(c);!l||!Ua(r,l.rect)||e&&(l.toolsType===q.Image&&l.opt.locked||l.toolsType===q.BackgroundSVG&&l.opt.locked!==!1)||t&&l.toolsType===q.Text&&(l.opt.workState===de.Doing||l.opt.workState===de.Start)||(o=Ue(o,l.rect),a.set(c,l))}return{rectRange:o,nodeRange:a}}getNodeRectFormShape(r,e){const t=Oc(e.toolsType);return this.fullLayer&&(t==null?void 0:t.getRectFromLayer(this.fullLayer,r))}updateNodeRect(r){const e=this.curNodeMap.get(r);if(e){const t=this.getNodeRectFormShape(r,e);if(!t){this.delete(r);return}e.rect=t,this.curNodeMap.set(r,e),this.updateSpatialEntry(r,t)}}updateHighLevelNodesRect(r){this.highLevelIds=r;for(const e of this.highLevelIds.keys())this.updateNodeRect(e)}updateLowLevelNodesRect(){var r;for(const e of this.curNodeMap.keys())(r=this.highLevelIds)!=null&&r.has(e)||this.updateNodeRect(e)}clearHighLevelIds(){this.highLevelIds=void 0}updateSpatialEntry(r,e){const t=this.spatialEntries.get(r);t&&this.spatialIndex.remove(t);const n={key:r,...this.toSpatialBox(e)};this.spatialEntries.set(r,n),this.spatialIndex.insert(n)}toSpatialBox(r){return{minX:r.x,minY:r.y,maxX:r.x+r.w,maxY:r.y+r.h}}getLinearIntersectKeys(r){const e=[];for(const[t,n]of this.curNodeMap.entries())Ua(r,n.rect)&&e.push(t);return e}setTargetAssignKeys(r){const e=new Fu;for(const t of r){const n=this.curNodeMap.get(t);n&&e.set(t,ht(n))}return this.targetNodeMap.push(ht(e)),this.targetNodeMap.length-1}setTarget(){const r=this.curNodeMap.keys();return this.setTargetAssignKeys(Array.from(r))}getLastTarget(){return this.targetNodeMap[this.targetNodeMap.length-1]}deleteLastTarget(){this.targetNodeMap.length&&(this.targetNodeMap.length=this.targetNodeMap.length-1)}getTarget(r){return this.targetNodeMap[r]}deleteTarget(r){this.targetNodeMap.length=r}clearTarget(){this.targetNodeMap.length=0}isLocalWorkId(r){return r.split(Bt).length===1}isCanClearWorkId(r){if(this.canClearUids===void 0||this.canClearUids===!0)return!0;if(lge(this.canClearUids)){const e=r.split(Bt);if(e.length===1)return this.canClearUids.has("localSelf")||this.localUid&&this.canClearUids.has(this.localUid);if(e.length===2)return this.canClearUids.has(e[0])}return!1}}const x0=(s,r,e,t)=>{const n=new URL(s);return n.searchParams.set("width",r.toString()),n.searchParams.set("height",e.toString()),t&&n.searchParams.set("color",t),n.toString()},Wye=async(s,r)=>{const{src:e,isgl:t,isCache:n,useImageBitmap:i=!0}=s;if(typeof Image=="function"){const o=new Image;return typeof e=="string"&&(o.crossOrigin="anonymous"),new Promise(a=>{o.onload=async function(){if(!i){a(o);return}if(typeof createImageBitmap!="function"){a(void 0);return}try{const c=t?await createImageBitmap(o,{imageOrientation:"flipY"}):await createImageBitmap(o);a(c)}catch{a(void 0)}},o.onerror=function(){a(void 0)},o.src=e})}else return fetch(e,{method:"GET",mode:"cors",cache:"default"}).then(o=>o.blob()).then(o=>(t?createImageBitmap(o,{imageOrientation:"flipY"}):createImageBitmap(o)).then(c=>c))};function R0(s,r,e){if(r&&typeof r=="object"&&typeof r.code=="string"&&typeof r.business=="string"&&typeof r.message=="string")return r;if(!(s!=="failed"&&s!=="timeout"))return{code:s==="timeout"?"RENDERER_BUSINESS_TIMEOUT":"RENDERER_BUSINESS_ERROR",business:"updateCamera",message:`Camera task returned ${s} ACK without cameraTaskError`,stage:"camera-ack",workerType:e}}class k0 extends Error{constructor(e,t){super(`updateCamera timed out after ${t}ms`);x(this,"code","RENDERER_BUSINESS_TIMEOUT");x(this,"business","updateCamera");x(this,"cameraTaskId");x(this,"elapsedMs");x(this,"stage");x(this,"blockingWorks");this.name="CameraUpdateTimeoutError",this.cameraTaskId=e.cameraTaskId,this.elapsedMs=t,this.stage=e.stage,this.blockingWorks=e.blockingWorks?[...e.blockingWorks]:void 0}}class Vye extends Error{constructor(e){super("updateCamera aborted because the owning renderer was destroyed");x(this,"code","RENDERER_BUSINESS_ABORTED");x(this,"business","updateCamera");x(this,"cameraTaskId");x(this,"stage");x(this,"blockingWorks");this.name="CameraUpdateAbortedError",this.cameraTaskId=e.cameraTaskId,this.stage=e.stage,this.blockingWorks=e.blockingWorks?[...e.blockingWorks]:void 0}}async function A0(s,r,e=dm){const t=Date.now();let n,i;const o=new Promise(g=>{n=g}),a={cameraTaskId:s,startedAt:t,deadlineAt:t+e,abortPromise:o,aborted:!1,stage:"update-camera"},c=()=>{a.aborted||(a.aborted=!0,n==null||n(),i==null||i(l||new Vye(a)))};a.abort=c;let l,u;const h=Promise.resolve().then(()=>r(a));h.catch(()=>{});const d=new Promise((g,y)=>{u=setTimeout(()=>{l=new k0(a,e),c(),y(l)},e)}),f=new Promise((g,y)=>{i=y});try{await Promise.race([h,d,f])}catch(g){throw c(),l||g}finally{u!==void 0&&clearTimeout(u)}}async function P0(s,r,e){return s.stage=e,await Promise.race([r,s.abortPromise]),!s.aborted}function $ye(s){return s instanceof k0||s instanceof Error&&s.code==="RENDERER_BUSINESS_TIMEOUT"}function yr(s){if(s instanceof Error||s&&typeof s=="object"&&"message"in s&&typeof s.message=="string")return s.message;if(typeof s=="string")return s;try{const r=JSON.stringify(s);if(r!==void 0)return r}catch{}return String(s)}class D0 extends Error{constructor(e){const t=e.timeoutMs??qa;super(`${e.business} timed out at ${e.stage} after ${t}ms`);x(this,"code","RENDERER_BUSINESS_TIMEOUT");x(this,"business");x(this,"stage");x(this,"elapsedMs");x(this,"reported",!1);this.name="RendererBusinessTimeoutError",this.business=e.business,this.stage=e.stage,this.elapsedMs=t}}class md extends Error{constructor(e,t){super(yr(e));x(this,"code","RENDERER_BUSINESS_ERROR");x(this,"business");x(this,"stage");x(this,"cause");x(this,"reported",!1);this.name="RendererBusinessError",this.business=t.business,this.stage=t.stage,this.cause=e}}async function Uu(s,r){const e=r.timeoutMs??qa;let t;const n=new Promise((i,o)=>{t=setTimeout(()=>{o(new D0({...r,timeoutMs:e}))},e)});try{return await Promise.race([Promise.resolve(s),n])}finally{t!==void 0&&clearTimeout(t)}}function L0(s){return s instanceof D0||s instanceof Error&&s.code==="RENDERER_BUSINESS_TIMEOUT"}function Fa(s){return L0(s)||s instanceof md||s instanceof Error&&s.code==="RENDERER_BUSINESS_ERROR"}function Wu(s,r){return Fa(s)?s:new md(s,r)}function N0(s,r,e){const t=L0(s),n=Fa(s),i=n?s.business:r.business,o=n?s.stage:r.stage,a=t?s.elapsedMs:0,c=yr(s);return`[rendererBusiness] ${t?"timeout":"failed"} viewId=${e.viewId} renderer=${e.renderer} business=${i} stage=${o} elapsedMs=${a} error=${c}`}class O0{constructor(){x(this,"timer")}get pending(){return this.timer!==void 0}schedule(r,e){this.timer===void 0&&(this.timer=setTimeout(()=>{this.timer=void 0,r()},Math.max(0,e)))}cancel(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0)}}const Yye=30,yd=1e3/Yye;function z0(s){return Math.min(Math.max(0,s),yd)}const Yl=()=>typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now();class Gye{constructor(r=1e3/30){x(this,"timer");x(this,"pending");x(this,"resolvePending");x(this,"activeWorkId");x(this,"generation",0);x(this,"lastReleaseTime",0);this.interval=r}wait(r){if(this.activeWorkId!==r&&(this.finish(),this.activeWorkId=r),this.pending)return this.pending;const e=this.generation,t=Math.max(0,this.lastReleaseTime+this.interval-Yl());return t===0?(this.lastReleaseTime=Yl(),Promise.resolve(!0)):(this.pending=new Promise(n=>{this.resolvePending=n,this.timer=setTimeout(()=>{if(this.timer=void 0,this.pending=void 0,this.resolvePending=void 0,e!==this.generation||this.activeWorkId!==r){n(!1);return}this.lastReleaseTime=Yl(),n(!0)},t)}),this.pending)}finish(r){if(r!==void 0&&this.activeWorkId!==r)return;this.generation++,this.timer!==void 0&&clearTimeout(this.timer),this.timer=void 0,this.pending=void 0;const e=this.resolvePending;this.resolvePending=void 0,this.activeWorkId=void 0,this.lastReleaseTime=0,e==null||e(!1)}cancel(){this.finish()}}function Hye(s,r){return s?r||"webgl2":"2d"}function Qye(s){var t;if(!s)return{};const r={};try{r.contextLost=((t=s.isContextLost)==null?void 0:t.call(s))||!1}catch{}let e;try{e=s.getParameter(s.CURRENT_PROGRAM),r.currentProgram=!!e}catch{}if(e){try{r.programLinked=!!s.getProgramParameter(e,s.LINK_STATUS)}catch{}try{r.programHasUniforms=!!e.uniforms}catch{}}try{const n=s.getError();n!==s.NO_ERROR&&(r.glError=n)}catch{}return r}function qye(s){var r,e;if(s)return s.gl||(r=s.renderer)!=null&&r.glRenderer?(e=s.renderer)!=null&&e.isWebGL2?"webgl2":"webgl":"2d"}function Zye(s,r){const e=s==null?void 0:s.canvas;if(!(s!=null&&s.gl)||!(e!=null&&e.addEventListener))return()=>{};let t=!0;const n=i=>{var o;t&&(t=!1,(o=i.preventDefault)==null||o.call(i),r(Qye(s.gl),i))};return e.addEventListener("webglcontextlost",n),e.addEventListener("contextlost",n),()=>{t=!1,e.removeEventListener("webglcontextlost",n),e.removeEventListener("contextlost",n)}}async function B0(s,r){await(s==null?void 0:s.flush()),await Promise.all(r.map(e=>e.prepareRender))}class Kye{constructor(r){x(this,"scheduledHandle");x(this,"activeTask");x(this,"flushTask");x(this,"pending",!1);x(this,"destroyed",!1);x(this,"failure");this.options=r}request(r=!1){if(!this.destroyed){if(this.pending=!0,r){this.cancelScheduledTask(),!this.activeTask&&!this.flushTask&&this.startTask();return}!this.activeTask&&!this.flushTask&&this.scheduleTask()}}flush(){if(this.destroyed)return Promise.reject(new Error("Cannot flush a destroyed service render scheduler"));if(!this.flushTask){const r=this.flushPending();this.flushTask=r;const e=()=>{this.flushTask===r&&(this.flushTask=void 0,this.pending&&!this.destroyed&&this.failure===void 0&&this.scheduleTask())};r.then(e,e)}return this.flushTask}destroy(){this.destroyed||(this.destroyed=!0,this.pending=!1,this.failure=void 0,this.cancelScheduledTask())}scheduleTask(){this.destroyed||this.scheduledHandle!==void 0||this.activeTask||this.flushTask||!this.pending||(this.scheduledHandle=this.options.schedule(()=>{this.scheduledHandle=void 0,this.startTask()}))}cancelScheduledTask(){this.scheduledHandle!==void 0&&(this.options.cancel(this.scheduledHandle),this.scheduledHandle=void 0)}startTask(){if(this.destroyed||this.activeTask||!this.pending)return this.activeTask;this.pending=!1;const r=Promise.resolve().then(()=>this.options.run()).catch(e=>{var t,n;if(!this.destroyed){this.failure===void 0&&(this.failure=e);try{(n=(t=this.options).onError)==null||n.call(t,e)}catch{}}}).then(()=>{this.activeTask===r&&(this.activeTask=void 0,this.pending&&!this.destroyed&&!this.flushTask&&this.failure===void 0&&this.scheduleTask())});return this.activeTask=r,r}async flushPending(){for(this.cancelScheduledTask();!this.destroyed;){if(this.activeTask&&await this.activeTask,this.failure!==void 0)throw this.failure;if(!this.pending)return;const r=this.startTask();r&&await r}}}class Xye{constructor(r,e,t){x(this,"viewId");x(this,"viewGeneration");x(this,"type");x(this,"scene");x(this,"fullLayer");x(this,"vNodes");x(this,"dpr");x(this,"contextType");x(this,"opt");x(this,"cameraOpt");x(this,"isSafari",!1);x(this,"combinePostMsg",new Set);x(this,"workerTaskId");x(this,"protectedTask");x(this,"delayPostDoneWaiter");x(this,"activePostDoneWaiter");x(this,"isCombiningPost",!1);x(this,"combinePostTaskSequence",0);x(this,"activeCombinePostTaskId");x(this,"combinePostTransfersByTask",new Map);x(this,"cacheImages",new Map);x(this,"imageResolveMap",new Map);x(this,"taskUpdateCameraId");x(this,"taskUpdateCameraResolve");x(this,"debounceUpdateCameraId");x(this,"activeCameraSettledRender");x(this,"activeCameraTaskContext");x(this,"destroyed",!1);x(this,"contextLossCleanup");var n,i;if(this.viewId=r,this.viewGeneration=e.viewGeneration,this.type=t,this.opt=e,this.dpr=e.dpr,this.contextType=this.getSupportContextType(t,(n=e==null?void 0:e.offscreenCanvasOpt)==null?void 0:n.contextType),!this.contextType)throw new Error("Sorry, your browser doesn't support canvas context type 2d or webgl");try{this.scene=this.createScene(e),this.createRenderLayer(this.scene,e)}catch(o){if(this.contextType!=="2d")this.contextType="2d",(i=this.scene)==null||i.disconnect(),this.scene=this.createScene(e),this.createRenderLayer(this.scene,e);else throw o}this.registerContextLossListener(),this.vNodes=new E0(r,this.scene)}getActualContextType(){var r;return qye((r=this.fullLayer)==null?void 0:r.parent)}registerContextLossListener(){var e;const r=(e=this.fullLayer)==null?void 0:e.parent;this.contextLossCleanup=Zye(r,t=>{if(this.destroyed)return;const n=this.getActualContextType(),i=`[WorkThreadEngine] WebGL context lost; viewId=${this.viewId}; generation=${this.viewGeneration??"unknown"}; context=${n||"unknown"}`;try{this._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.viewGeneration,reportString:i,reportError:"WebGL context lost",reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:"context-lost",reportContextType:n,reportContextLost:!0,reportGlError:t.glError,reportCurrentProgram:t.currentProgram,reportProgramLinked:t.programLinked,reportProgramHasUniforms:t.programHasUniforms}]})}catch(o){console.error(i,o)}})}removeContextLossListener(){var r;(r=this.contextLossCleanup)==null||r.call(this),this.contextLossCleanup=void 0}createRenderLayer(r,e){const t=He.bufferSize.full,n=He.bufferSize.sub;this.fullLayer=this.createLayer("fullLayer",r,{...e.layerOpt,bufferSize:this.viewId===Fe?t:n*2})}async updateDpr(r){this.dpr=r,this.scene.displayRatio=r}getCachedImages(r){var e;return(e=this.cacheImages.get(r))==null?void 0:e.imageBitmap}getCachedImagesByWorkId(r){for(const[e,t]of this.cacheImages.entries())if(e===r&&t.imageBitmap)return t.imageBitmap}deleteCachedImagesByWorkId(r,e){for(const[t,n]of this.cacheImages.entries())e&&t===e||n.workId===r&&(this.closeImageBitmap(n.imageBitmap),this.cacheImages.delete(t))}clearCacheImages(){this.cacheImages.forEach(r=>this.closeImageBitmap(r.imageBitmap)),this.cacheImages.clear()}closeImageBitmap(r){if(r)try{r.close()}catch{}}clearImageResolveMap(){this.imageResolveMap.forEach(({timer:r,resolve:e},t)=>{r&&clearTimeout(r),e==null||e(t)}),this.imageResolveMap.clear()}setIsSafari(r){this.isSafari=r}async on(r){var u,h,d,f;if(this.destroyed){try{(u=r.imageBitmap)==null||u.close()}catch{}return}const{msgType:e,toolsType:t,opt:n,imageSrc:i,imageBitmap:o,workId:a,dpr:c,requestId:l}=r;switch(e){case le.UpdateDpr:{yt(c)&&await this.updateDpr(c);break}case le.UpdateCamera:{try{await A0(r.cameraTaskId,async g=>{this.activeCameraTaskContext=g;try{await this.updateCamera(r,g)}finally{this.activeCameraTaskContext===g&&(this.activeCameraTaskContext=void 0)}})}catch(g){throw this.cameraOpt=void 0,this.cancelCameraSettledRender(),g}break}case le.Destroy:{this.destroy();break}case le.CancelBitmapEraser:{const g=(h=r.workId)==null?void 0:h.toString();g&&"abortBitmapEraser"in this.localWork&&this.localWork.abortBitmapEraser(g);break}case le.Clear:{await this.clearAll();break}case le.ServiceSyncCommit:{const g=this,y=[(d=this.fullLayer)==null?void 0:d.parent,(f=g.topLayer)==null?void 0:f.parent].filter(Boolean);try{await Uu((async()=>{await B0(this.serviceWork,y)})(),{business:"service-sync-commit",stage:"flush-and-prepare-render",timeoutMs:5e3})}catch(S){const E=Wu(S,{business:"service-sync-commit",stage:"flush-and-prepare-render"});throw this.reportRendererBusinessError(E,{business:"service-sync-commit",stage:"flush-and-prepare-render"}),E}if(this.destroyed)break;await this.post({sp:[{type:le.ServiceSyncCommit,viewId:this.viewId,viewGeneration:this.viewGeneration,scenePath:r.scenePath,serviceSyncId:r.serviceSyncId,serviceRevision:r.serviceRevision}]});break}case le.UpdateTools:{if(t&&n){const g={toolsType:t,toolsOpt:n,combineUnitTime:r.combineUnitTime,maxCombineEraserTime:r.maxCombineEraserTime};this.localWork.setToolsOpt(g)}break}case le.GetImageBitMap:{if(i&&o&&a){const g=a.toString(),y=this.imageResolveMap.get(i);if(!y||y.requestId!==l){this.closeImageBitmap(o);break}this.cacheImages.set(i,{imageBitmap:o,workId:g});const{resolve:S,timer:E}=y;E&&clearTimeout(E),S&&S(i),this.deleteCachedImagesByWorkId(g,i)}break}}}getIconSize(r,e,t){const n=r*t,i=e*t;return n<=50||i<=50?[50,50]:n<=100||i<=100?[100,100]:n<=200||i<=200?[200,200]:n<=400||i<=400?[400,400]:n<=800||i<=800?[800,800]:[1600,1600]}async loadImageBitMap(r){const{toolsType:e,opt:t,workId:n,isSubWorker:i,requestId:o}=r;if(e===q.Image&&t&&n){const a=n.toString(),{src:c,type:l,width:u,height:h,strokeColor:d}=t;if(!c||!l||!u||!h)return;let f=c;if(l===on.Iconify){const[L,T]=this.getIconSize(u,h,this.dpr);f=x0(c,L,T,d)}if(this.cacheImages.has(f)){const L=this.getCachedImages(f);if(L)return L}const y=this.imageResolveMap.get(f);if(y)return await y.promise,this.getCachedImages(f);let S;const E=new Promise(L=>{S=L}),C={resolve:S,timer:void 0,requestId:o,promise:E};return C.timer=setTimeout(()=>{this.imageResolveMap.get(f)===C&&S(f)},5e3),this.imageResolveMap.set(f,C),this._post({sp:[{imageSrc:f,workId:a,viewId:this.viewId,isgl:!!this.fullLayer.parent.gl,isSubWorker:i,requestId:o,type:le.GetImageBitMap}]}),await E,this.imageResolveMap.get(f)===C&&this.imageResolveMap.delete(f),this.getCachedImages(f)}}createLocalWork(r){const{workId:e,opt:t,toolsType:n}=r;e&&t&&(!this.localWork.getToolsOpt()&&n&&this.setToolsOpt({toolsType:n,toolsOpt:t}),this.setWorkOpt({workId:e,toolsOpt:t}))}updateScene(r,e,t){r.attr({...e});const{width:n,height:i}=e;r.container.width=n,r.container.height=i,r.width=n,r.height=i,this.updateLayer({width:n,height:i},t)}updateLayer(r,e){const{width:t,height:n}=r,i=e||this.fullLayer;i&&(i.parent.setAttribute("width",t),i.parent.setAttribute("height",n),i.setAttribute("size",[t,n]),i.setAttribute("pos",[t*.5,n*.5]))}getSupportContextType(r,e){return Hye(r===Vu.Full&&this.viewId===Fe,e)}createScene(r){const{offscreenCanvasOpt:e}=r,{width:t,height:n}=e,i=new OffscreenCanvas(t,n);e.contextType&&delete e.contextType;const o=new Sc({container:i,displayRatio:this.dpr,depth:!1,desynchronized:!0,failIfMajorPerformanceCaveat:!0,...e,contextType:this.contextType,id:this.viewId});return o.setAttribute("id",this.viewId),o}createLayer(r,e,t,n){const i=`offscreen-${r}`,{width:o,height:a}=t;n&&(t.offscreen=!0,t.canvas=n);const c=e.layer(i,t),l=new dt({anchor:[.5,.5],pos:[o*.5,a*.5],size:[o,a],name:"viewport",id:r});return c.append(l),l}async clearAll(){var r;this.fullLayer&&(this.fullLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),ur(this.fullLayer,this.fullLayer.parent)),this.cancelCameraBlockingWait(),this.cancelCameraSettledRender(),this.clearCacheImages(),this.clearImageResolveMap(),this.localWork.destroy(),(r=this.serviceWork)==null||r.clearAll()}setToolsOpt(r){this.localWork.setToolsOpt(r)}setWorkOpt(r){const{workId:e,toolsOpt:t}=r;e&&t&&this.localWork.setWorkOptions(e.toString(),t)}destroy(){var t,n;if(this.destroyed)return;this.destroyed=!0,(n=(t=this.activeCameraTaskContext)==null?void 0:t.abort)==null||n.call(t),this.activeCameraTaskContext=void 0;const r=[],e=(i,o)=>{try{o()}catch(a){r.push(`${i}: ${a instanceof Error?a.message:String(a)}`)}};e("context-loss-listener",()=>this.removeContextLossListener()),e("camera-blocking-wait",()=>this.cancelCameraBlockingWait()),e("camera-render",()=>this.cancelCameraSettledRender()),e("worker-task",()=>{this.workerTaskId!==void 0&&(clearTimeout(this.workerTaskId),this.workerTaskId=void 0)}),e("post-waiters",()=>{var i,o;(i=this.delayPostDoneWaiter)==null||i.resolve(),(o=this.activePostDoneWaiter)==null||o.resolve(),this.delayPostDoneWaiter=void 0,this.activePostDoneWaiter=void 0}),e("post-transfers",()=>{this.activeCombinePostTaskId=void 0,this.combinePostTaskSequence++;for(const i of[...this.combinePostTransfersByTask.keys()])this.releaseCombinePostTransfers(i);this.combinePostMsg.clear()}),e("v-nodes",()=>this.vNodes.clear()),e("full-layer",()=>{const i=this.fullLayer.parent;i&&hr(this.fullLayer,i),this.fullLayer.remove()}),e("image-cache",()=>this.clearCacheImages()),e("image-waiters",()=>this.clearImageResolveMap()),e("scene",()=>this.scene.remove()),e("local-work",()=>this.localWork.destroy()),e("service-work",()=>{var i;return(i=this.serviceWork)==null?void 0:i.destroy()}),r.length&&console.error(`[WorkThreadEngine]: destroy completed with cleanup errors viewId=${this.viewId}: ${r.join("; ")}`)}cancelCameraSettledRender(){var e;this.debounceUpdateCameraId!==void 0&&(clearTimeout(this.debounceUpdateCameraId),this.debounceUpdateCameraId=void 0);const r=this.activeCameraSettledRender;r&&(r.cancelled=!0,(e=r.renderLayers)==null||e.forEach(t=>t.cancelPendingRender()),this.activeCameraSettledRender=void 0)}retargetCameraSettledRender(r){var t;if(!yt(r))return!1;const e=this.activeCameraSettledRender;return!e||e.cancelled||(t=e.context)!=null&&t.aborted?!1:(e.cameraTaskId=r,!0)}hasCameraSettledRender(){return!!this.activeCameraSettledRender}cancelCameraBlockingWait(){this.taskUpdateCameraId!==void 0&&(clearTimeout(this.taskUpdateCameraId),this.taskUpdateCameraId=void 0);const r=this.taskUpdateCameraResolve;this.taskUpdateCameraResolve=void 0,r==null||r(!1)}startCameraSettledRender(r,e){const t={cancelled:!1,cameraTaskId:r,context:e};return this.activeCameraSettledRender=t,{isActive:()=>!this.destroyed&&!t.cancelled&&this.activeCameraSettledRender===t&&!(e!=null&&e.aborted),getCameraTaskId:()=>t.cameraTaskId,setRenderLayers:n=>{t.renderLayers=n},finish:()=>{t.renderLayers=void 0,this.activeCameraSettledRender===t&&(this.activeCameraSettledRender=void 0)}}}post(r,e={}){var n;if(this.destroyed)return(n=r.render)==null||n.forEach(i=>this.closeImageBitmap(i.imageBitmap)),Promise.resolve();this.combinePostMsg.add(r);const t=this.type===Vu.Full?this.getOrCreatePostDoneWaiter(e.reportFailureAtRendererBoundary!==!1):void 0;return this.runBatchPostData(),t?(t.promise.catch(()=>{}),t.promise):Promise.resolve()}getOrCreatePostDoneWaiter(r){if(this.delayPostDoneWaiter)r||(this.delayPostDoneWaiter.reportFailureAtRendererBoundary=!1);else{let e,t;const n=new Promise((i,o)=>{e=i,t=o});this.delayPostDoneWaiter={promise:n,resolve:e,reject:t,reportFailureAtRendererBoundary:r}}return this.delayPostDoneWaiter}runBatchPostData(){this.destroyed||!this.workerTaskId&&!this.isCombiningPost&&(this.workerTaskId=setTimeout(()=>{this.workerTaskId=void 0;const r=this.delayPostDoneWaiter;this.delayPostDoneWaiter=void 0,this.activePostDoneWaiter=r,this.isCombiningPost=!0;const e=++this.combinePostTaskSequence;this.activeCombinePostTaskId=e,this.combinePostTransfersByTask.set(e,new Set),(async()=>{let t=!1,n;try{await this.waitForRendererBusiness(this.combinePost(e),{business:"combine-post",stage:"flush"})}catch(i){t=!0;const o=Wu(i,{business:"combine-post",stage:"flush"});n=o,(r==null?void 0:r.reportFailureAtRendererBoundary)!==!1&&this.reportRendererBusinessError(o,{business:"combine-post",stage:"flush"})}finally{this.releaseCombinePostTransfers(e),this.activePostDoneWaiter===r&&(this.activePostDoneWaiter=void 0),this.activeCombinePostTaskId===e&&(this.activeCombinePostTaskId=void 0),this.isCombiningPost=!1,this.combinePostMsg.size&&this.runBatchPostData()}t?r==null||r.reject(n):r==null||r.resolve()})()},16))}waitForRendererBusiness(r,e){return Uu(r,e)}reportRendererBusinessError(r,e,t=!1){if(Fa(r)&&r.reported)return;const n=N0(r,e,{viewId:this.viewId,renderer:this.type});Fa(r)&&(r.reported=!0);try{this._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.viewGeneration,reportString:n,reportErrorCode:t?"RENDERER_RUNTIME_ERROR":void 0,reportStage:e.stage,reportError:r instanceof Error?r.message:String(r)}]})}catch(i){console.error(n,i)}}isCombinePostTaskActive(r){return this.activeCombinePostTaskId===r}trackCombinePostTransfer(r,e){const t=this.combinePostTransfersByTask.get(r);return!t||!this.isCombinePostTaskActive(r)?(this.closeCombinePostTransfers([e]),!1):(t.add(e),!0)}commitCombinePostTransfers(r){this.combinePostTransfersByTask.delete(r)}releaseCombinePostTransfers(r){const e=this.combinePostTransfersByTask.get(r);e&&(this.combinePostTransfersByTask.delete(r),this.closeCombinePostTransfers([...e]))}closeCombinePostTransfers(r){for(const e of r||[]){const t=e.close;if(typeof t=="function")try{t.call(e)}catch{}}}transferLayerToImageBitmap(r){const e=this.getLayer(r),t=e==null?void 0:e.parent;if(!(t instanceof Jn))throw new Error(`render Layer is unavailable: ${String(r)}`);return t.transferToImageBitmap()}combinePostData(){var l,u;const r=this.combinePostMsg;this.combinePostMsg=new Set;const e=[],t=[];let n,i,o,a;const c=new Set;for(const h of r.values()){if((l=h.render)!=null&&l.length)for(const d of h.render){let f=!1;if(d.workId&&c.add(d.workId),d.viewId||(d.viewId=this.viewId),d.viewGeneration===void 0&&(d.viewGeneration=this.viewGeneration),d.isClearAll&&(d.rect=this.getSceneRect(),d.isClear=!0,delete d.isClearAll),d.drawCanvas){const g=this.getLayer(d.drawCanvas);if(!g||!(g.parent instanceof Jn))continue;if(g.parent.render(),d.isDrawAll){const y=this.getSceneRect();d.rect=y,delete d.isDrawAll}}for(const g of e)if(d.viewId===g.viewId&&d.eraseTxnId===g.eraseTxnId){d.isClear&&g.clearCanvas&&g.isClear&&g.clearCanvas===d.clearCanvas&&(g.rect=Ue(g.rect,d.rect),f=!0),g.drawCanvas&&g.drawCanvas===d.drawCanvas&&(g.rect=Ue(g.rect,d.rect),f=!0);continue}f||(d.isClear&&!d.drawCanvas?e.unshift(d):e.push(d))}if((u=h.sp)!=null&&u.length)for(const d of h.sp){const f={...d,viewId:d.viewId||this.viewId,viewGeneration:d.viewGeneration??this.viewGeneration};let g=!1;for(const y of t)if(nn(f,y)){g=!0;break}g||t.push(f)}yt(h.fullWorkerDrawCount)&&(n=h.fullWorkerDrawCount),yt(h.subWorkerDrawCount)&&(i=h.subWorkerDrawCount),yt(h.consumeCount)&&(o=h.consumeCount,a=h.consumeWorkId)}return{render:e,sp:t,fullWorkerDrawCount:n,subWorkerDrawCount:i,consumeCount:o,consumeWorkId:a,workIds:c,viewId:this.viewId,viewGeneration:this.viewGeneration}}getSceneRect(){const{width:r,height:e}=this.scene;return{x:0,y:0,w:Math.floor(r),h:Math.floor(e)}}}class j0{constructor(r){x(this,"viewId");x(this,"vNodes");x(this,"thread");x(this,"fullLayer");x(this,"drawLayer");x(this,"_post");x(this,"tmpOpt");x(this,"workShapes",new Map);x(this,"drawCount",0);x(this,"consumeCount",0);x(this,"syncUnitTime",He.syncOpt.interval);x(this,"combineUnitTime",He.bezier.combineUnitTime);x(this,"maxCombineEraserTime",yd);x(this,"eraserBatchScheduler",new O0);x(this,"drawAckBackpressure",new Gye);this.thread=r.thread,this.viewId=r.viewId,this.vNodes=r.vNodes,this.fullLayer=r.fullLayer,this.drawLayer=r.drawLayer,this._post=this.thread.post.bind(r.thread)}get eraserBatchDelay(){return z0(this.maxCombineEraserTime)}setmaxCombineEraserTime(r){this.maxCombineEraserTime=r}setCombineUnitTime(r){this.combineUnitTime=r}setSyncUnitTime(r){this.syncUnitTime=r}destroy(){this.eraserBatchScheduler.cancel(),this.drawAckBackpressure.cancel(),this.workShapes.forEach(r=>r.clearTmpPoints()),this.workShapes.clear()}getWorkShapes(){return this.workShapes}getWorkShape(r){return this.workShapes.get(r)}createWorkShape(r,e){if(r&&this.tmpOpt){const t={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},n=this.createWorkShapeNode({...t,workId:r});n&&this.workShapes.set(r,n)}}setWorkOptions(r,e){const t=this.getWorkShape(r);t||this.createWorkShape(r,e),t==null||t.setWorkOptions(e)}createWorkShapeNode(r){var e;return pd({...r,vNodes:this.vNodes,fullLayer:this.fullLayer,drawLayer:this.drawLayer},(e=this.thread)==null?void 0:e.serviceWork)}setToolsOpt(r){var e,t,n;((e=this.tmpOpt)==null?void 0:e.toolsType)!==r.toolsType&&(t=this.tmpOpt)!=null&&t.toolsType&&this.clearAllWorkShapesCache(),this.tmpOpt=r,(n=r.toolsOpt)!=null&&n.syncUnitTime&&(this.syncUnitTime=r.toolsOpt.syncUnitTime),r.combineUnitTime&&(this.combineUnitTime=r.combineUnitTime),r.maxCombineEraserTime&&(this.maxCombineEraserTime=r.maxCombineEraserTime)}getToolsOpt(){return this.tmpOpt}clearWorkShapeNodeCache(r){var e;(e=this.getWorkShape(r))==null||e.clearTmpPoints(),this.workShapes.delete(r)}clearAllWorkShapesCache(){this.eraserBatchScheduler.cancel(),this.drawAckBackpressure.cancel();for(const[r,e]of this.workShapes)r!==Le&&(e.clearTmpPoints(),this.workShapes.delete(r))}setFullWork(r){const{workId:e,opt:t,toolsType:n}=r;if(e&&t&&n){const i=e.toString();let o;return e&&this.workShapes.has(i)?(o=this.workShapes.get(i),(o==null?void 0:o.toolsType)!==n?(o==null||o.clearTmpPoints(),this.workShapes.delete(i),o=void 0):o==null||o.setWorkOptions(t)):o=this.createWorkShapeNode({toolsOpt:t,toolsType:n,workId:i}),o||(o=this.createWorkShapeNode({toolsOpt:t,toolsType:n,workId:i})),o?(this.workShapes.set(i,o),o):void 0}}}function Jye(s){return s}var F0=Jye;function _ye(s,r,e){switch(e.length){case 0:return s.call(r);case 1:return s.call(r,e[0]);case 2:return s.call(r,e[0],e[1]);case 3:return s.call(r,e[0],e[1],e[2])}return s.apply(r,e)}var eve=_ye,tve=eve,Dp=Math.max;function rve(s,r,e){return r=Dp(r===void 0?s.length-1:r,0),function(){for(var t=arguments,n=-1,i=Dp(t.length-r,0),o=Array(i);++n<i;)o[n]=t[r+n];n=-1;for(var a=Array(r+1);++n<r;)a[n]=t[n];return a[r]=e(o),tve(s,this,a)}}var nve=rve;function ive(s){return function(){return s}}var sve=ive,ove=sve,Lp=kv,ave=F0,cve=Lp?function(s,r){return Lp(s,"toString",{configurable:!0,enumerable:!1,value:ove(r),writable:!0})}:ave,lve=cve,uve=800,hve=16,dve=Date.now;function fve(s){var r=0,e=0;return function(){var t=dve(),n=hve-(t-e);if(e=t,n>0){if(++r>=uve)return arguments[0]}else r=0;return s.apply(void 0,arguments)}}var gve=fve,pve=lve,mve=gve,yve=mve(pve),vve=yve,Mve=F0,wve=nve,Sve=vve;function Tve(s,r){return Sve(wve(s,r,Mve),s+"")}var Cve=Tve;function Ive(s,r,e,t){for(var n=s.length,i=e+(t?1:-1);t?i--:++i<n;)if(r(s[i],i,s))return i;return-1}var bve=Ive;function Eve(s){return s!==s}var xve=Eve;function Rve(s,r,e){for(var t=e-1,n=s.length;++t<n;)if(s[t]===r)return t;return-1}var kve=Rve,Ave=bve,Pve=xve,Dve=kve;function Lve(s,r,e){return r===r?Dve(s,r,e):Ave(s,Pve,e)}var Nve=Lve,Ove=Nve;function zve(s,r){var e=s==null?0:s.length;return!!e&&Ove(s,r,0)>-1}var U0=zve;function Bve(s,r,e){for(var t=-1,n=s==null?0:s.length;++t<n;)if(e(r,s[t]))return!0;return!1}var W0=Bve;function jve(s,r){for(var e=-1,t=s==null?0:s.length,n=Array(t);++e<t;)n[e]=r(s[e],e,s);return n}var Fve=jve,Uve=dd,Wve=U0,Vve=W0,$ve=Fve,Yve=kc,Gve=fd,Hve=200;function Qve(s,r,e,t){var n=-1,i=Wve,o=!0,a=s.length,c=[],l=r.length;if(!a)return c;e&&(r=$ve(r,Yve(e))),t?(i=Vve,o=!1):r.length>=Hve&&(i=Gve,o=!1,r=new Uve(r));e:for(;++n<a;){var u=s[n],h=e==null?u:e(u);if(u=t||u!==0?u:0,o&&h===h){for(var d=l;d--;)if(r[d]===h)continue e;c.push(u)}else i(r,h,t)||c.push(u)}return c}var qve=Qve,Np=fo,Zve=Lv,Kve=go,Op=Np?Np.isConcatSpreadable:void 0;function Xve(s){return Kve(s)||Zve(s)||!!(Op&&s&&s[Op])}var Jve=Xve,_ve=id,e0e=Jve;function V0(s,r,e,t,n){var i=-1,o=s.length;for(e||(e=e0e),n||(n=[]);++i<o;){var a=s[i];r>0&&e(a)?r>1?V0(a,r-1,e,t,n):_ve(n,a):t||(n[n.length]=a)}return n}var t0e=V0;function r0e(){}var n0e=r0e,Gl=Yv,i0e=n0e,s0e=gd,o0e=1/0,a0e=Gl&&1/s0e(new Gl([,-0]))[1]==o0e?function(s){return new Gl(s)}:i0e,c0e=a0e,l0e=dd,u0e=U0,h0e=W0,d0e=fd,f0e=c0e,g0e=gd,p0e=200;function m0e(s,r,e){var t=-1,n=u0e,i=s.length,o=!0,a=[],c=a;if(e)o=!1,n=h0e;else if(i>=p0e){var l=r?null:f0e(s);if(l)return g0e(l);o=!1,n=d0e,c=new l0e}else c=r?[]:a;e:for(;++t<i;){var u=s[t],h=r?r(u):u;if(u=e||u!==0?u:0,o&&h===h){for(var d=c.length;d--;)if(c[d]===h)continue e;r&&c.push(h),a.push(u)}else n(c,h,e)||(c!==a&&c.push(h),a.push(u))}return a}var y0e=m0e,v0e=qve,M0e=t0e,zp=y0e;function w0e(s,r,e){var t=s.length;if(t<2)return t?zp(s[0]):[];for(var n=-1,i=Array(t);++n<t;)for(var o=s[n],a=-1;++a<t;)a!=n&&(i[n]=v0e(i[n]||o,s[a],r,e));return zp(M0e(i,1),r,e)}var S0e=w0e,T0e=ed,C0e=zr;function I0e(s){return C0e(s)&&T0e(s)}var b0e=I0e,E0e=jv,x0e=Cve,R0e=S0e,k0e=b0e;x0e(function(s){return R0e(E0e(s,k0e))});class A0e extends j0{constructor(e){super(e);x(this,"drawWorkActiveId")}runSelectWork(e){var n;const t=this.setFullWork(e);t&&((n=e.selectIds)!=null&&n.length)&&e.workId&&t.selectServiceNode(e.workId.toString(),{selectIds:e.selectIds},!1)}workShapesDone(){for(const e of this.workShapes.keys())this.clearWorkShapeNodeCache(e);ur(this.fullLayer,this.fullLayer.parent)}async consumeDraw(e){const{workId:t,fullWorkerDrawCount:n,postCount:i}=e,o=t==null?void 0:t.toString(),a=o&&this.workShapes.get(o);if(!a){o&&yt(i)&&await this.drawAckBackpressure.wait(o)&&await this._post({consumeCount:i,consumeWorkId:o});return}this.drawWorkActiveId&&this.drawWorkActiveId!==o&&(await this.consumeDrawAll({workId:this.drawWorkActiveId,viewId:this.viewId,msgType:le.DrawWork,dataType:xe.Local}),this.drawWorkActiveId=void 0),!this.drawWorkActiveId&&o!==Le&&(this.drawWorkActiveId=o);const c=a.toolsType;yt(i)&&(this.consumeCount=i);const l=a.consume({data:e,drawCount:this.drawCount,isFullWork:!0,isSubWorker:!0,removeDrawCount:n});switch(c){case q.Selector:l&&(this.drawCount++,await this.drawSelector(l));break;case q.Ellipse:case q.Arrow:case q.Straight:case q.Rectangle:case q.Star:case q.Polygon:case q.SpeechBalloon:{l&&(this.drawCount++,await this.drawShape(l));break}case q.Pencil:{l&&(this.drawCount++,await this.drawPencil(l,t==null?void 0:t.toString()));break}case q.PencilEraser:{l&&(this.drawCount++,await this.drawAckBackpressure.wait(o)&&await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,consumeWorkId:o}));break}case q.BitMapEraser:l&&this.drawCount++;break}}async consumeDrawAll(e){const{workId:t}=e;if(t){const n=t.toString();this.drawAckBackpressure.finish(n),this.drawWorkActiveId===n&&(this.drawWorkActiveId=void 0);const i=this.workShapes.get(n);if(!i)return;switch(i.toolsType){case q.Selector:this.drawCount=0,ur(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(n),this._post({render:[{isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}]});break;case q.Arrow:case q.Straight:case q.Ellipse:case q.Pencil:case q.Rectangle:case q.Star:case q.Polygon:case q.SpeechBalloon:case q.BitMapEraser:case q.PencilEraser:this.drawCount=0,ur(this.fullLayer,this.fullLayer.parent),this.clearWorkShapeNodeCache(n);break}}}async removeWork(e){const{workId:t}=e,n=t==null?void 0:t.toString();if(n){const i=this.removeNode(n);if(i){const o=[];o.push({rect:wn(i),clearCanvas:_e.Float,isClear:!0,viewId:this.viewId},{rect:wn(i),drawCanvas:_e.Float,viewId:this.viewId}),await this._post({render:o})}}}removeNode(e){const t=this.workShapes.has(e);let n;return t&&(this.fullLayer.getElementsByName(e).forEach(i=>{const o=i.getBoundingClientRect();n=Ue(n,{x:o.x-Re.SafeBorderPadding,y:o.y-Re.SafeBorderPadding,w:o.width+Re.SafeBorderPadding*2,h:o.height+Re.SafeBorderPadding*2}),i.remove(),hr(i,this.fullLayer.parent)}),n&&this.clearWorkShapeNodeCache(e)),n}async drawPencil(e,t){!t||!await this.drawAckBackpressure.wait(t)||await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,consumeWorkId:t,render:[{rect:e==null?void 0:e.rect,workId:t,drawCanvas:_e.Float,viewId:this.viewId}],sp:(e==null?void 0:e.op)&&[e]})}async drawShape(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&wn(e.rect),isClear:!0,clearCanvas:_e.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&wn(e.rect),drawCanvas:_e.Float,viewId:this.viewId}]})}async drawSelector(e){await this._post({subWorkerDrawCount:this.drawCount,consumeCount:this.consumeCount,render:[{rect:(e==null?void 0:e.rect)&&wn(e.rect),isClear:!0,clearCanvas:_e.Float,viewId:this.viewId},{rect:(e==null?void 0:e.rect)&&wn(e.rect),drawCanvas:_e.Float,viewId:this.viewId}]})}}class P0e{constructor(r){x(this,"viewId");x(this,"vNodes");x(this,"topLayer");x(this,"thread");x(this,"post");x(this,"serviceWorkShapes",new Map);x(this,"localWorkShapes",new Map);x(this,"tmpOpt");x(this,"syncUnitTime",He.syncOpt.interval);x(this,"animationId");this.viewId=r.viewId,this.vNodes=r.vNodes,this.topLayer=r.topLayer,this.thread=r.thread,this.post=r.thread.post.bind(r.thread)}canUseTopLayer(r){return r===q.LaserPen}getWorkShape(r){return this.localWorkShapes.get(r)}createWorkShape(r,e){if(r&&this.tmpOpt){const t={toolsType:this.tmpOpt.toolsType,toolsOpt:e||this.tmpOpt.toolsOpt},n=this.createWorkShapeNode({...t,workId:r});return n&&this.localWorkShapes.set(r,{node:n,toolsType:n.toolsType,workState:de.Start}),n}}setWorkOptions(r,e){var n;const t=(n=this.localWorkShapes.get(r))==null?void 0:n.node;t||this.createWorkShape(r,e),t==null||t.setWorkOptions(e)}createWorkShapeNode(r){const{toolsType:e}=r;if(e===q.LaserPen)return pd({...r,vNodes:this.vNodes,fullLayer:this.topLayer,drawLayer:this.topLayer})}clearAllWorkShapesCache(){this.localWorkShapes.forEach(r=>{var e;return(e=r.node)==null?void 0:e.clearTmpPoints()}),this.localWorkShapes.clear()}setToolsOpt(r){var e;this.tmpOpt=r,(e=r.toolsOpt)!=null&&e.syncUnitTime&&(this.syncUnitTime=r.toolsOpt.syncUnitTime)}getToolsOpt(){return this.tmpOpt}consumeDraw(r){const{workId:e,dataType:t}=r;if(t===xe.Service)this.activeServiceWorkShape(r);else{const n=e==null?void 0:e.toString(),i=n&&this.localWorkShapes.get(n);if(!i)return;const o=i.node.consume({data:r,isFullWork:!1,isSubWorker:!0});o.rect&&(i.totalRect=Ue(o.rect,i.totalRect),i.result=o,i.workState=de.Doing,n&&this.localWorkShapes.set(n,i))}this.runAnimation()}consumeDrawAll(r){const{workId:e,dataType:t}=r;if(t===xe.Service)this.activeServiceWorkShape(r);else{const n=e==null?void 0:e.toString(),i=n&&this.localWorkShapes.get(n);if(!i)return;const o=i.node.consumeAll({data:r});i.totalRect=Ue(o.rect,i.totalRect),i.result=o,i.workState=de.Done,n&&this.localWorkShapes.set(n,i)}this.runAnimation()}destroy(){this.serviceWorkShapes.clear(),this.localWorkShapes.clear()}setNodeKey(r,e,t,n){return e.toolsType=t,e.node=this.createWorkShapeNode({workId:r,toolsType:t,toolsOpt:n}),e}activeServiceWorkShape(r){var d,f;const{workId:e,opt:t,toolsType:n,type:i,updateNodeOpt:o,ops:a,op:c}=r;if(!e)return;const l=e.toString(),u=(d=this.vNodes.get(l))==null?void 0:d.rect;if(!((f=this.serviceWorkShapes)!=null&&f.has(l))){let g={toolsType:n,animationWorkData:c||[],animationIndex:0,type:i,updateNodeOpt:o,ops:a,oldRect:u};n&&t&&(g=this.setNodeKey(l,g,n,t)),this.serviceWorkShapes.set(l,g)}const h=this.serviceWorkShapes.get(l);i&&(h.type=i),a&&(h.animationWorkData=Nn(a),h.ops=a),o&&(h.updateNodeOpt=o),c&&(h.animationWorkData=c),h.node&&h.node.getWorkId()!==l&&h.node.setWorkId(l),u&&(h.oldRect=u),n&&t?(h.toolsType!==n&&n&&t&&this.setNodeKey(l,h,n,t),h.node&&h.node.setWorkOptions(t)):n&&(h.toolsType=n)}computNextAnimationIndex(r,e){const t=Math.floor((r.animationWorkData||[]).slice(r.animationIndex).length*32/e/this.syncUnitTime)*e;return Math.min((r.animationIndex||0)+(t||e),(r.animationWorkData||[]).length)}async animationDraw(){var o,a,c,l;this.animationId=void 0;let r=!1;const e=new Map,t=[],n=[],i=[];for(const[u,h]of this.serviceWorkShapes.entries())switch(h.toolsType){case q.LaserPen:{const f=this.computNextAnimationIndex(h,8),g=Math.max(0,h.animationIndex||0),y=(h.animationWorkData||[]).slice(g,f);if((h.animationIndex||0)<f){const S=(o=h.node)==null?void 0:o.consumeService({op:y,isFullWork:!1});h.totalRect=Ue(h.totalRect,S),h.animationIndex=f,y.length&&e.set(u,{cursorTool:pye(h.toolsType),workState:g===0?de.Start:f===((a=h.animationWorkData)==null?void 0:a.length)?de.Done:de.Doing,op:y.slice(-2)})}if(n.push({isClear:!0,rect:h.totalRect,clearCanvas:_e.TopFloat,viewId:this.viewId}),t.push({rect:h.totalRect,drawCanvas:_e.TopFloat,viewId:this.viewId}),h.isDel){(c=h.node)==null||c.clearTmpPoints(),this.serviceWorkShapes.delete(u);break}h.ops&&h.animationIndex===((l=h.animationWorkData)==null?void 0:l.length)&&!h.isDel&&(this.topLayer.getElementsByName(u.toString())[0]||(h.isDel=!0,this.serviceWorkShapes.set(u,h))),r=!0;break}}for(const[u,h]of this.localWorkShapes.entries()){const{result:d,toolsType:f,totalRect:g,isDel:y,workState:S}=h;switch(f){case q.LaserPen:{if(g&&(n.push({isClear:!0,rect:g,clearCanvas:_e.TopFloat,viewId:this.viewId}),t.push({rect:g,drawCanvas:_e.TopFloat,viewId:this.viewId})),y){h.node.clearTmpPoints(),this.localWorkShapes.delete(u),i.push({removeIds:[u.toString()],viewId:this.viewId,type:le.RemoveNode});break}d&&((d.op||d.ops)&&i.push(d),h.result=void 0),!this.topLayer.getElementsByName(u.toString())[0]&&S===de.Done&&(h.isDel=!0,this.localWorkShapes.set(u,h)),r=!0;break}}}r&&this.runAnimation(),e.size&&e.forEach((u,h)=>{i.push({type:le.Cursor,uid:h.split(Bt)[0],op:u.op,workState:u.workState,cursorTool:u.cursorTool,viewId:this.viewId})}),(t.length||n.length||i.length)&&this.post({render:[...n,...t],sp:i})}runAnimation(){this.animationId||(this.animationId=setTimeout(()=>{this.animationId=void 0,this.animationDraw()},16))}}class D0e extends j0{constructor(e){super(e);x(this,"opt");x(this,"scene");x(this,"cameraOpt");x(this,"vNodes");this.opt=e,this.vNodes=void 0}reportRequestFailure(e,t,n,i){const o=n instanceof Error?n.message:String(n);try{this.thread._post({sp:[{type:le.ReportError,viewId:this.viewId,viewGeneration:this.thread.viewGeneration,scenePath:t.scenePath,requestId:t.requestId,reportBusiness:e,reportStage:i,reportError:o,reportString:`[SnapshotWork] ${e} failed; stage=${i}; requestId=${t.requestId||"unknown"}; error=${o}`}]})}catch(a){console.error(`[SnapshotWork] ${e} failure report failed`,a)}}createSnapshotFullLayer(e,t){this.scene=this.opt.createScene(e),this.fullLayer=this.opt.createLayer("snapshotFullLayer",this.scene,t)}destroySnapshotFullLayer(){var e,t,n;ur(this.fullLayer,this.fullLayer.parent),(e=this.fullLayer)==null||e.disconnect(),(t=this.fullLayer)==null||t.remove(),(n=this.scene)==null||n.remove(),this.scene=void 0}updateScene(e){if(!this.scene)throw new Error("SnapshotWork scene is not initialized");this.scene.attr({...e});const{width:t,height:n}=e;this.scene.width=t,this.scene.height=n,this.updateLayer({width:t,height:n})}updateLayer(e){if(!this.fullLayer)throw new Error("SnapshotWork snapshotFullLayer is not initialized");const{width:t,height:n}=e;this.fullLayer.parent.setAttribute("width",t),this.fullLayer.parent.setAttribute("height",n),this.fullLayer.setAttribute("size",[t,n]),this.fullLayer.setAttribute("pos",[t*.5,n*.5])}setCameraOpt(e){this.cameraOpt=e;const{scale:t,centerX:n,centerY:i,width:o,height:a}=e;if(!this.scene)throw new Error("SnapshotWork scene is not initialized");if(!this.fullLayer)throw new Error("SnapshotWork snapshotFullLayer is not initialized");(o!==this.scene.width||a!==this.scene.height)&&this.updateScene({width:o,height:a}),this.fullLayer.setAttribute("scale",[t,t]),this.fullLayer.setAttribute("translate",[-n,-i])}getOffscreen(){var t;return((t=this.fullLayer)==null?void 0:t.parent).canvas}getRectImageBitmap(e,t){const{rect:n}=e,i=this.thread.dpr,o=Math.floor(n.x*i),a=Math.floor(n.y*i),c=Math.floor(n.w*i),l=Math.floor(n.h*i);return createImageBitmap(this.getOffscreen(),o,a,c,l,t)}async getSnapshot(e){const{scenePath:t,scenes:n,cameraOpt:i,w:o,h:a,requestId:c}=e;try{if(!(t&&n&&i&&this.fullLayer))throw new Error("snapshot input is incomplete");this.setCameraOpt(i);for(const[u,h]of Object.entries(n))if(h!=null&&h.type)switch(h==null?void 0:h.type){case le.UpdateNode:case le.FullWork:{const{opt:d}=h,f={...h,opt:d,workId:u,msgType:le.FullWork,dataType:xe.Service,viewId:this.viewId,requestId:c};await this.runFullWork(f);break}default:break}let l;o&&a&&(l={resizeWidth:o,resizeHeight:a}),await this.getSnapshotRender({scenePath:t,options:l,requestId:c})}catch(l){this.reportRequestFailure("snapshot",e,l,"render")}}async runFullWork(e){var i;const t=this.setFullWork(e),n=e.ops&&Nn(e.ops);if(t){let o,a;const c=(i=t.getWorkId())==null?void 0:i.toString();return t.toolsType===q.BackgroundSVG?o=t.consumeService({isFullWork:!0,replaceId:c}):t.toolsType===q.Image?o=await t.consumeServiceAsync({isFullWork:!0,worker:this.thread,requestId:e.requestId}):t.toolsType===q.Text?o=await t.consumeServiceAsync({isFullWork:!0,replaceId:c,isDrawLabel:!0}):(o=t.consumeService({op:n,isFullWork:!0,replaceId:c}),a=(e==null?void 0:e.updateNodeOpt)&&t.updataOptService(e.updateNodeOpt)),e.workId&&this.workShapes.delete(e.workId.toString()),Ue(o,a)}}getSceneRect(){if(!this.scene)throw new Error("SnapshotWork scene is not initialized");const{width:e,height:t}=this.scene;return{x:0,y:0,w:Math.floor(e),h:Math.floor(t)}}async getSnapshotRender(e){var a;const{scenePath:t,options:n,requestId:i}=e;((a=this.fullLayer)==null?void 0:a.parent).render();const o=await this.getRectImageBitmap({rect:this.getSceneRect(),drawCanvas:_e.None},n);o&&(this.thread._post({sp:[{type:le.Snapshot,scenePath:t,imageBitmap:o,viewId:this.viewId,index:0,requestId:i}]},[o]),o.close())}async getBoundingRect(e){const{scenePath:t,scenes:n,cameraOpt:i,requestId:o}=e;try{if(!(t&&n&&i&&this.fullLayer))throw new Error("bounding-box input is incomplete");this.setCameraOpt(i);let a;for(const[c,l]of Object.entries(n))if(l!=null&&l.type)switch(l==null?void 0:l.type){case le.UpdateNode:case le.FullWork:{const u=await this.runFullWork({...l,workId:c,msgType:le.FullWork,dataType:xe.Service,viewId:this.viewId,requestId:o});a=Ue(a,u);break}default:break}a?this.thread._post({sp:[{type:le.BoundingBox,scenePath:t,rect:a,viewId:this.viewId,requestId:o}]}):this.thread._post({sp:[{type:le.BoundingBox,scenePath:t,rect:{x:0,y:0,w:0,h:0},viewId:this.viewId,viewGeneration:this.thread.viewGeneration,requestId:o}]})}catch(a){this.reportRequestFailure("bounding-box",e,a,"compute")}}}const L0e="WEBGL_PROGRAM_UNAVAILABLE";var Vu=(s=>(s.Full="full",s.Sub="sub",s))(Vu||{});function N0e(s,r){const e=s==null?void 0:s.canvas,t=r.width,n=r.height,i=e==null?void 0:e.width,o=e==null?void 0:e.height;if(!Number.isFinite(t)||!Number.isFinite(n)||t<=0||n<=0||typeof i!="number"||typeof o!="number"||!Number.isFinite(i)||!Number.isFinite(o)||i<=0||o<=0||t!==i||n!==o){try{r.close()}catch{}throw new Error(`FullLayer ImageBitmap size mismatch: bitmap=${t}x${n}; layer=${i??"unavailable"}x${o??"unavailable"}`)}}function O0e(s,r,e){const t=[],n=new Map;for(const i of s){if(!i.rect)continue;const o=G0e(ht(i.rect),r,e);if(!o)continue;i.rect=o;const a=t.push(i)-1;if(i.drawCanvas!==_e.Bg||o.w<=0||o.h<=0)continue;const l=n.get(i.drawCanvas)||{rect:o,lastIndex:a,workIds:new Set,eraseTxnIds:new Set};l.rect=Ue(l.rect,o),l.lastIndex=a;for(const u of i.renderWorkIds||[])l.workIds.add(u);i.workId!==void 0&&l.workIds.add(i.workId.toString());for(const u of i.renderEraseTxnIds||[])l.eraseTxnIds.add(u);i.eraseTxnId!==void 0&&l.eraseTxnIds.add(i.eraseTxnId),n.set(i.drawCanvas,l)}return t.filter((i,o)=>{if(i.drawCanvas!==_e.Bg)return!0;const a=n.get(i.drawCanvas);return!a||a.lastIndex!==o?!1:(i.rect=a.rect,i.renderWorkIds=a.workIds.size?[...a.workIds]:void 0,i.renderEraseTxnIds=a.eraseTxnIds.size?[...a.eraseTxnIds]:void 0,!0)})}class z0e extends Xye{constructor(e,t,n){super(e,t,"sub");x(this,"type","sub");x(this,"_post");x(this,"topLayer");x(this,"serviceWork");x(this,"localWork");x(this,"topLayerWork");x(this,"snapshotWork");x(this,"fullLayerFrameSequence",0);this._post=n;const i=He.bufferSize.sub;this.topLayer=t.isUseSimple?void 0:this.createLayer("topLayer",this.scene,{...t.layerOpt,bufferSize:i,contextType:"2d"});const o={thread:this,viewId:this.viewId,vNodes:this.vNodes,fullLayer:this.fullLayer,topLayer:this.topLayer,isUseSimple:t.isUseSimple};this.localWork=new A0e(o),t.isUseSimple||(this.topLayerWork=new P0e(o)),this.snapshotWork=new D0e({...o,createScene:this.createScene.bind(this),createLayer:this.createLayer.bind(this)}),this.vNodes.init(this.fullLayer)}async combinePost(e){var a,c,l;const{render:t,...n}=this.combinePostData();let i;if(t!=null&&t.length){const u=[];for(const h of O0e(t,this.scene,this.dpr))if(h.rect){if(h.drawCanvas&&h.rect&&h.rect.w>0&&h.rect.h>0)try{const d=h.drawCanvas===_e.Bg,f=d?(a=this.getLayer(h.drawCanvas))==null?void 0:a.parent:void 0,g=d?this.transferLayerToImageBitmap(h.drawCanvas):await this.getRectImageBitmap(h);if(d&&N0e(f,g),!this.trackCombinePostTransfer(e,g))return;h.imageBitmap=g,d&&(h.isFullFrameImageBitmap=!0,h.viewGeneration=this.viewGeneration,h.frameSequence=++this.fullLayerFrameSequence,h.taskId=e,h.rect=this.getSceneRect()),i||(i=[]),i.push(g)}catch(d){throw new md(d,{business:"combine-post",stage:"transfer-layer-image-bitmap"})}u.push(h)}n.render=u}const o=(c=n.sp)==null?void 0:c.filter(u=>u.type!==le.None||u.isLockSentEventCursor||u.needUndoTicker||u.collectUndoTicker||u.eraseTxnPhase);o!=null&&o.length?n.sp=o.map(u=>({...u,viewId:u.viewId||this.viewId,viewGeneration:u.viewGeneration??this.viewGeneration})):delete n.sp,n.consumeCount===void 0&&delete n.consumeCount,n.subWorkerDrawCount===void 0&&delete n.subWorkerDrawCount,this.isCombinePostTaskActive(e)&&(o!=null&&o.length||n.consumeCount||n.subWorkerDrawCount||(l=n==null?void 0:n.render)!=null&&l.length)&&(this._post(n,i),this.commitCombinePostTransfers(e))}async on(e){var l,u;const{msgType:t,toolsType:n,opt:i,dataType:o,workState:a,isLockSentEventCursor:c}=e;switch(t){case le.UpdateTools:{if(n&&((l=this.topLayerWork)!=null&&l.canUseTopLayer(n))&&i){const h={toolsType:n,toolsOpt:i};this.topLayerWork.setToolsOpt(h);return}break}case le.CreateWork:{this.createLocalWork(e);return}case le.DrawWork:{a===de.Done&&o===xe.Local?(await this.consumeDrawAll(o,e),n===q.LaserPen&&c&&this.post({sp:[{type:le.None,isLockSentEventCursor:c}]})):await this.consumeDraw(o,e);return}case le.RemoveNode:{await this.removeNode(e);return}case le.FullWork:{n&&((u=this.topLayerWork)!=null&&u.canUseTopLayer(n))?await this.consumeDrawAll(o,e):o===xe.Local&&e.clearPreviewLocalWork&&e.workId&&await this.localWork.consumeDrawAll({...e,msgType:le.DrawWork,workState:de.Done});return}case le.Snapshot:{this.snapshotWork.createSnapshotFullLayer(this.opt,{...this.opt.layerOpt,bufferSize:this.viewId===Fe?6e3:3e3,contextType:"2d"}),await this.snapshotWork.getSnapshot(e),this.snapshotWork.destroySnapshotFullLayer();return}case le.BoundingBox:{this.snapshotWork.createSnapshotFullLayer(this.opt,{...this.opt.layerOpt,bufferSize:this.viewId===Fe?6e3:3e3,contextType:"2d"}),await this.snapshotWork.getBoundingRect(e),this.snapshotWork.destroySnapshotFullLayer();return}}await super.on(e)}createLocalWork(e){var o;const{workId:t,toolsType:n,opt:i}=e;if(n&&((o=this.topLayerWork)!=null&&o.canUseTopLayer(n))&&t&&i){this.topLayerWork.getToolsOpt()||this.topLayerWork.setToolsOpt({toolsType:n,toolsOpt:i}),this.topLayerWork.setWorkOptions(t.toString(),i);return}n&&super.createLocalWork(e)}async removeNode(e){const{dataType:t}=e;t===xe.Local&&await this.localWork.removeWork(e)}getLayer(e){switch(e){case _e.TopFloat:return this.topLayer||this.fullLayer;default:return this.fullLayer}}getOffscreen(e){var n;return((n=this.getLayer(e))==null?void 0:n.parent).canvas}async consumeDraw(e,t){var o;const{workId:n,toolsType:i}=t;if(n){if(i&&((o=this.topLayerWork)!=null&&o.canUseTopLayer(i))){e===xe.Local&&(this.topLayerWork.getWorkShape(n.toString())||this.createLocalWork(t)),this.topLayerWork.consumeDraw(t);return}i&&(this.localWork.getWorkShape(n.toString())||this.createLocalWork(t),await this.localWork.consumeDraw(t));return}}async consumeDrawAll(e,t){var a;const{workId:n,toolsType:i,dataType:o}=t;if(n){const c=n.toString();if(i&&((a=this.topLayerWork)!=null&&a.canUseTopLayer(i))){o===xe.Local&&(this.topLayerWork.getWorkShape(c)||this.createLocalWork(t)),this.topLayerWork.consumeDrawAll(t);return}i&&(this.localWork.getWorkShape(c)||super.createLocalWork(t),await this.localWork.consumeDrawAll(t));return}}async clearAll(){this.vNodes.clear(),super.clearAll(),this.topLayer&&(this.topLayer.parent.children.forEach(e=>{e.name!=="viewport"&&e.remove()}),ur(this.topLayer,this.topLayer.parent)),await this.post({render:[{isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId}],sp:[{type:le.Clear}]})}async getRectImageBitmap(e,t){const{rect:n,drawCanvas:i}=e,o=Math.floor(n.x*this.dpr),a=Math.floor(n.y*this.dpr),c=Math.max(1,Math.floor(n.w*this.dpr)),l=Math.max(1,Math.floor(n.h*this.dpr));return await createImageBitmap(this.getOffscreen(i),o,a,c,l,t)}updateLayer(e){const{width:t,height:n}=e;super.updateLayer(e),this.topLayer&&(this.topLayer.parent.setAttribute("width",t),this.topLayer.parent.setAttribute("height",n),this.topLayer.setAttribute("size",[t,n]),this.topLayer.setAttribute("pos",[t*.5,n*.5]))}async updateDpr(e){super.updateDpr(e);const t=this.topLayerWork&&!!this.topLayerWork.localWorkShapes.size||!1,n=!!this.localWork.getWorkShapes().size,i=[];n&&i.push({isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}),t&&i.push({isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId}),i.length&&await this.post({render:i})}async updateCamera(e,t){var o;if(t!=null&&t.aborted)return;const n=[],{cameraOpt:i}=e;if(i&&!nn(this.cameraOpt,i)){const a=this.topLayerWork&&!!this.topLayerWork.localWorkShapes.size||!1,c=!!this.localWork.getWorkShapes().size;if(c&&this.localWork.workShapesDone(),this.setCameraOpt(i),c&&n.push({isClearAll:!0,clearCanvas:_e.Float,viewId:this.viewId}),a&&this.topLayerWork){n.push({isClearAll:!0,clearCanvas:_e.TopFloat,viewId:this.viewId});for(const[l,u]of this.topLayerWork.localWorkShapes.entries()||[])if(u.totalRect){let h;(o=this.topLayer)==null||o.getElementsByName(l.toString()).forEach(d=>{const f=d.getBoundingClientRect(),g=wn({x:f.x,y:f.y,w:f.width,h:f.height});h=Ue(h,g)}),u.totalRect=h,this.topLayerWork.localWorkShapes.set(l,u)}}if(n.length){const l=this.post({render:n});if(t&&!await P0(t,l,"update-camera"))return;t||await l}if(t!=null&&t.aborted)return}}setCameraOpt(e,t){var l,u;this.cameraOpt=e;const{scale:n,centerX:i,centerY:o,width:a,height:c}=e;(a!==this.scene.width||c!==this.scene.height)&&this.updateScene(this.scene,{width:a,height:c}),t?(t.setAttribute("scale",[n,n]),t.setAttribute("translate",[-i,-o])):(this.fullLayer.setAttribute("scale",[n,n]),this.fullLayer.setAttribute("translate",[-i,-o]),(l=this.topLayer)==null||l.setAttribute("scale",[n,n]),(u=this.topLayer)==null||u.setAttribute("translate",[-i,-o]))}}class Zs extends Re{constructor(e){super(e);x(this,"canRotate",!0);x(this,"scaleType",Ye.all);x(this,"toolsType",q.Image);x(this,"tmpPoints",[]);x(this,"workOptions");x(this,"oldRect");this.workOptions=e.toolsOpt,this.scaleType=Zs.getScaleType(this.workOptions)}static normalizeStorageData(e){return Re.normalizeStorageData(e)}consume(){return{type:le.None}}consumeAll(){return{type:le.None}}draw(e){const{layer:t,workId:n,replaceId:i,imageBitmap:o}=e,{centerX:a,centerY:c,width:l,height:u,rotate:h,zIndex:d,eraserlines:f,eraserFaces:g,doingLines:y}=this.workOptions,S=new dt({anchor:[.5,.5],pos:[a,c],name:n,size:[l,u],zIndex:d,rotate:h}),E={anchor:[.5,.5],pos:[0,0],size:[l,u],texture:o};o||(E.bgcolor="rgba(0,0,0,0.3)");const C=new Cc(E);S.append(C),(f||g||y)&&this.drawEraserlines({group:S,eraserlines:this.getRenderableEraserLines(this.workOptions),eraserFaces:g,pos:[a,c],layer:t}),this.replace(t,i||n,S);const L=S.getBoundingClientRect();if(L)return{x:Math.floor(L.x-Re.SafeBorderPadding),y:Math.floor(L.y-Re.SafeBorderPadding),w:Math.floor(L.width+Re.SafeBorderPadding*2),h:Math.floor(L.height+Re.SafeBorderPadding*2)}}consumeService(){}async consumeServiceAsync(e){var h,d,f,g;const{isFullWork:t,replaceId:n,worker:i,requestId:o}=e,{src:a,uuid:c}=this.workOptions,l=((h=this.workId)==null?void 0:h.toString())||c,u=t?this.fullLayer:this.drawLayer||this.fullLayer;if(a){const y=await i.loadImageBitMap({toolsType:this.toolsType,opt:this.workOptions,workId:l,requestId:o,isSubWorker:i instanceof z0e});if(y){const S=this.draw({workId:l,layer:u,replaceId:n,imageBitmap:y});return this.oldRect=l&&((f=(d=this.vNodes)==null?void 0:d.get(l))==null?void 0:f.rect)||void 0,(g=this.vNodes)==null||g.setInfo(l,{rect:S,op:[],opt:this.workOptions,toolsType:this.toolsType,scaleType:this.scaleType,canRotate:this.canRotate,centerPos:S&&Re.getCenterPos(S,u)}),S}}}clearTmpPoints(){this.tmpPoints.length=0}static getScaleType(e){const{uniformScale:t,rotate:n}=e;return t!==!1||n&&Math.abs(n)%90>0?Ye.proportional:Ye.all}static updateNodeOpt(e){const{node:t,opt:n,vNodes:i,targetNode:o}=e,{translate:a,originPoint:c,scenePoint:l,scale:u,angle:h,isLocked:d,zIndex:f,strokeColor:g}=n,y=o&&ht(o)||i.get(t.name);if(!y)return;const S=t.parent;if(S){if(g&&(y.opt.strokeColor=g),yt(f)&&(t.setAttribute("zIndex",f),y.opt.zIndex=f),_n(d)&&(y.opt.locked=d),c&&l&&u&&a){const{centerX:E,centerY:C,width:L,height:T,uniformScale:p}=y.opt,m=p!==!1?[u[0],u[0]]:u,M=[E,C],v=[E,C];zc(v,l,m,a);const R=[v[0]-M[0],v[1]-M[1]];if(y.centerPos=[y.centerPos[0]+R[0],y.centerPos[1]+R[1]],y.opt.width=Math.round(L*m[0]),y.opt.height=Math.round(T*m[1]),y.opt.centerX=v[0],y.opt.centerY=v[1],y.opt.eraserlines)for(const b of y.opt.eraserlines){const{op:P,thickness:D}=b;b.thickness=Math.round(D*Math.max(u[0],u[1]));for(let z=0;z<P.length;z++)Fs(P[z],l,u,a)}}else if(a){if(y.opt.centerX=y.opt.centerX+a[0],y.opt.centerY=y.opt.centerY+a[1],y.centerPos=[y.centerPos[0]+a[0],y.centerPos[1]+a[1]],y.opt.eraserlines)for(const E of y.opt.eraserlines){const{op:C}=E;for(let L=0;L<C.length;L++){const T=C[L].map((p,m)=>m%2?p+a[1]:p+a[0]);E.op[L]=T}}}else if(yt(h))if(y.opt.rotate=h,y.scaleType=Zs.getScaleType(y.opt),o){const E=Md(y.rect,h);y.rect=E}else{const E=Re.getRectFromLayer(S,t.name);y.rect=E||y.rect}return y&&i.setInfo(t.name,y),y==null?void 0:y.rect}}}function Ue(s,r){if(s&&r){const e=Math.min(s.x,r.x),t=Math.min(s.y,r.y),n=Math.max(s.x+s.w,r.x+r.w),i=Math.max(s.y+s.h,r.y+r.h),o=n-e,a=i-t;return{x:e,y:t,w:o,h:a}}return r||s}function vd(s,r){if(s&&r){const e=Math.min(s.originX,r.originX),t=Math.min(s.originY,r.originY),n=Math.max(s.originX+s.width,r.originX+r.width),i=Math.max(s.originY+s.height,r.originY+r.height),o=n-e,a=i-t;return{originX:e,originY:t,width:o,height:a}}return r||s}function it(s,r=0){const e={x:0,y:0,w:0,h:0};let t=1/0,n=1/0,i=-1/0,o=-1/0;return s.forEach(a=>{const[c,l]=a.XY;t=Math.min(t,c-r),n=Math.min(n,l-r),i=Math.max(i,c+r),o=Math.max(o,l+r)}),e.x=t,e.y=n,e.w=i-t,e.h=o-n,e}function Ua(s,r){return!(s.x+s.w<r.x||s.x>r.x+r.w||s.y+s.h<r.y||s.y>r.y+r.h)}function wn(s,r=10){return{x:Math.floor(s.x-r),y:Math.floor(s.y-r),w:Math.ceil(s.w+r*2),h:Math.ceil(s.h+r*2)}}function Ks(s,r){return{x:s.x+r[0],y:s.y+r[1],w:s.w,h:s.h}}function B0e(s,r){const e=new fe(s.x,s.y),t=new fe(s.x+s.w,s.y),n=new fe(s.x+s.w,s.y+s.h),i=new fe(s.x,s.y+s.h),o=new fe(s.x+s.w/2,s.y+s.h/2),a=Math.PI*r/180,c=fe.RotWith(e,o,a),l=fe.RotWith(t,o,a),u=fe.RotWith(n,o,a),h=fe.RotWith(i,o,a);return[c,l,u,h]}function Md(s,r){const e=B0e(s,r);return it(e)}function $0(s,r,e){const t=new fe(s.x,s.y),n=new fe(s.x+s.w,s.y),i=new fe(s.x+s.w,s.y+s.h),o=new fe(s.x,s.y+s.h),a=new fe(e[0],e[1]),c=new fe(r[0],r[1]),l=fe.ScaleWOrigin(t,c,a),u=fe.ScaleWOrigin(n,c,a),h=fe.ScaleWOrigin(i,c,a),d=fe.ScaleWOrigin(o,c,a);return it([l,u,h,d])}function j0e(s,r,e){const t=new fe(r[0],r[1]);for(let n=0;n<s.length;n+=3){const i=new fe(s[n],s[n+1]),o=Math.PI*e/180,a=fe.RotWith(i,t,o);s[n]=a.x,s[n+1]=a.y}}function Bp(s,r,e){const t=new fe(r[0],r[1]);for(let n=0;n<s.length;n+=2){const i=new fe(s[n],s[n+1]),o=Math.PI*e/180,a=fe.RotWith(i,t,o);s[n]=a.x,s[n+1]=a.y}}function zc(s,r,e,t=[0,0]){const n=new fe(r[0],r[1]);for(let i=0;i<s.length;i+=3){const o=new fe(s[i],s[i+1]),a=new fe(e[0],e[1]),c=fe.ScaleWOrigin(o,a,n);s[i]=c.x+t[0],s[i+1]=c.y+t[1]}}function Fs(s,r,e,t=[0,0]){const n=new fe(r[0],r[1]);for(let i=0;i<s.length;i+=2){const o=new fe(s[i],s[i+1]),a=new fe(e[0],e[1]),c=fe.ScaleWOrigin(o,a,n);s[i]=c.x+t[0],s[i+1]=c.y+t[1]}}function Y0(s,r){return s[0]>=r.x&&s[0]<=r.x+r.w&&s[1]>=r.y&&s[1]<=r.y+r.h}function G0(s,r){const e=s<=r?1:s/r,t=r<=s?1:r/s;return[e,t]}function F0e(s){for(const r of s)if(isNaN(r)||r===1/0||r===-1/0)return!1;return!0}function U0e(s){return s!==Math.floor(s)}function W0e(s){const r=s.toString();return r.indexOf(".")!==-1?r.split(".")[1].length:0}function V0e(s,r){for(;r!==0;)[s,r]=[r,s%r];return s}const $0e=s=>{if(s.tagName==="GROUP"){const r=Object.getOwnPropertySymbols(s).find(e=>e.toString()==="Symbol(sealed)");if(r&&s[r])return!0}return!1},hr=(s,r)=>{if(s.mesh&&s.mesh.texture&&s.name==="eraserTexture"){const e=s.mesh.texture.image;r.deleteTexture(e)}else if(s.tagName==="GROUP"&&s&&s.children)for(const e of s.children)hr(e,r)},ur=(s,r)=>{hr(s,r),s.removeAllChildren()},Y0e=(s,r,e)=>{const t=e.parent;if(r){const n=r.children;if(n){for(const i of n)if(hr(i,t),i.tagName==="GROUP")for(const o of i.children)hr(o,t)}}r.parent.replaceChild(s,r)},G0e=(s,r,e)=>{if(s.w+s.x<=0||s.h+s.y<=0||s.w<=0||s.h<=0)return;const t=r.width,n=r.height,i={x:Math.floor(Math.max(0,s.x)),y:Math.floor(Math.max(0,s.y)),w:Math.floor(Math.min(t,s.w)),h:Math.floor(Math.min(n,s.h))};if(i.x+i.w>t&&(i.w=Math.floor(t-i.x)),i.y+i.h>n&&(i.h=Math.floor(n-i.y)),U0e(e)){const o=W0e(e),a=Math.pow(10,o),c=V0e(a,e*a),l=i.x%c,u=i.x-l;u>=0?(i.x=u,i.w=i.w+l):(i.x=0,i.w=i.w+l-u);const h=i.y%c,d=i.y-h;d>=0?(i.y=d,i.h=i.h+h):(i.y=0,i.h=i.h+h-d)}return i};function Ei(s){return`${Wa(s.x)},${Wa(s.y)} `}function xi(s,r){return`${Wa((s.x+r.x)/2)},${Wa((s.y+r.y)/2)} `}function Wa(s){return+s.toFixed(4)}const Dr=async(s,r,e=!1)=>{let t,n;return new Promise(function(i){if(e&&requestIdleCallback)requestIdleCallback(()=>{i(1)},{timeout:r});else{if(typeof window.requestIdleCallback=="function"){const o=typeof r=="number"&&!isNaN(r)&&r>0?r:0;n=window.requestIdleCallback(()=>{clearTimeout(t),i(1)},{timeout:o})}t=setTimeout(()=>{n&&window.cancelIdleCallback(n),i(1)},r||0)}}).then(function(){s()}).catch(function(){s()})},Hi=s=>Math.max(1,(window.devicePixelRatio||1)/1),Bc=(s,r)=>s.x+s.w<r.x||s.x>r.x+r.w||s.y+s.h<r.y||s.y>r.y+r.h?sn.outside:s.x>=r.x&&s.y>=r.y&&s.x+s.w<=r.x+r.w&&s.y+s.h<=r.y+r.h?sn.inside:sn.intersect;function H0e(s){let r=0;for(let e=0;e<s.length;e++){const t=s.charCodeAt(e);t>=1&&t<=126||65376<=t&&t<=65439?r++:r+=2}return r}function Q0e(s){if(!s||typeof s!="string")return!1;const r=s.trim();if(!r)return!1;const e=[/^\s*#{1,6}\s+.+/m,/^\s*[-*+]\s+.+/m,/^\s*\d+\.\s+.+/m,/\[([^\]]+)\]\(([^)]+)\)/,/\[([^\]]+)\]\[([^\]]+)\]/,/```[\s\S]*?```/,/`[^`]+`/,/^\s*\|.+\|/m,/!\[([^\]]*)\]\(([^)]+)\)/,/\*\*[^*]+\*\*/,/__[^_]+__/,/\*[^*]+\*/,/_[^_]+_/,/~~[^~]+~~/,/==[^=]+==/,/^\s*[-*+]\s+\[[ xX]\]\s+.+/m,/^\s*>\s+.+/m,/^\s*[-*]{3,}\s*$/m];let t=0;for(const o of e)o.test(r)&&t++;const i=[/^\s*#{1,6}\s+/m,/^\s*[-*+]\s+/m,/^\s*\d+\.\s+/m,/```[\s\S]*?```/,/^\s*\|.+\|/m].some(o=>o.test(r));return t>=2||i}class q0e{constructor(r,e){x(this,"plugin");x(this,"uid");x(this,"control");this.control=r,this.plugin=e,this.uid=e.displayer.uid}getNamespaceData(){var r;return oa((r=this.plugin)==null?void 0:r.attributes[this.namespace])||{}}getAuthSpaceData(){var r;return oa((r=this.plugin)==null?void 0:r.attributes[this.authSpace])||{}}getGlobalUndoRedoStackData(){var r;return oa((r=this.plugin)==null?void 0:r.attributes[this.globalUndoRedoStackSpace])||{}}getUidFromKey(r){return r.split(Bt).length===2&&r.split(Bt)[0]||this.uid}isLocalId(r){return r.split(Bt).length===1}getLocalId(r){return r.split(Bt)[1]}isSelector(r){return this.getLocalId(r)===Le}}const Z0e=new Set([Te.TranslateNode,Te.ScaleNode,Te.RotateNode,Te.SetPoint,Te.SetColorNode]),Vt=class Vt extends q0e{constructor(e,t,n){super(e,t);x(this,"namespace");x(this,"authSpace");x(this,"globalUndoRedoStackSpace");x(this,"serviceStorage",{});x(this,"storage",{});x(this,"authStorage",{});x(this,"globalUndoRedoStackStorage",{});x(this,"stateDisposer");x(this,"authDisposer");x(this,"asyncClockState",!1);x(this,"pendingSyncViews",new Set);x(this,"pendingSyncStorage");x(this,"limitNums",new Map);x(this,"destroyed",!1);x(this,"storageRevision",0);x(this,"viewStorageRevisions",new Map);x(this,"sceneStorageRevisions",new Map);x(this,"discardedSyncViews",new Set);x(this,"syncInterval");x(this,"limitComponents",ye.debounce((e,t)=>{var o,a,c,l,u,h,d,f;const n=((a=(o=this.storage)==null?void 0:o[e])==null?void 0:a[t])&&Object.keys(this.storage[e][t]).length||0;if(n===0)return;let i=this.limitNums.get(`${e}/${t}`);if(!i){const g=this.getLimitNum(n);this.limitNums.set(`${e}/${t}`,g),i=g}if(i>0&&n>=i){const g=Vt.componentsLimits.indexOf(i),y=g>=0&&g<Vt.componentsLimits.length-1;if((u=(l=(c=this.control.room)==null?void 0:c.callbacks)==null?void 0:l.listeners)!=null&&u.map.onObjectsLimit&&((d=(h=this.control.room)==null?void 0:h.callbacks)==null||d.dispatch("onObjectsLimit",E=>E(i,y))),!y){this.Logger.error(`[Appliance]: exceeds the limit of ${i} components, current: ${n}`),(f=this.control.room)==null||f.disconnect().then(()=>{var E,C,L,T,p;(L=(C=(E=this.control.room)==null?void 0:E.callbacks)==null?void 0:C.listeners)!=null&&L.map.onKickedWithReason&&(this.Logger.info("[Appliance]: onKickedWithReason callback is called"),(p=(T=this.control.room)==null?void 0:T.callbacks)==null||p.dispatch("onKickedWithReason",m=>m("kickByAdmin")))});return}console.warn(`exceeds the limit of ${i} components, current: ${n}`);const S=y?Vt.componentsLimits[g+1]:0;this.limitNums.set(`${e}/${t}`,S)}},2e3,{maxWait:5e3}));x(this,"clearLimitComponents",(e,t)=>{if(t)this.limitNums.delete(`${e}/${t}`);else for(const n of this.limitNums.keys())`${e}/`.indexOf(n)===0&&this.limitNums.delete(n)});this.syncInterval=n,this.namespace=Vt.namespace,this.authSpace=Vt.authSpace,this.globalUndoRedoStackSpace=Vt.globalUndoRedoStackSpace,this.serviceStorage=this.getNamespaceData(),this.storage=ye.cloneDeep(this.serviceStorage),this.authStorage=this.getAuthSpaceData(),this.globalUndoRedoStackStorage={},this.getLimitNums()}get Logger(){return this.control.logger}discardViewPendingSync(e){e&&(this.discardedSyncViews.add(e),this.pendingSyncViews.delete(e))}restoreViewPendingSync(e){e&&this.discardedSyncViews.delete(e)}isViewPendingSyncDiscarded(e){return this.discardedSyncViews.has(e)}canRunSync(e){return!this.destroyed&&(!e||!this.discardedSyncViews.has(e))}getSceneRevisionKey(e,t){return`${e}\0${t}`}getSceneDiffKey(e,t){return JSON.stringify([e,t])}getDataDiffKey(e,t,n){return JSON.stringify([e,t,n])}bumpStorageRevision(e,t){this.storageRevision+=1,this.viewStorageRevisions.set(e,this.storageRevision),t!==void 0&&this.sceneStorageRevisions.set(this.getSceneRevisionKey(e,t),this.storageRevision)}filterDiscardedViews(e){if(!this.discardedSyncViews.size)return e;const t={};for(const[n,i]of Object.entries(e))this.discardedSyncViews.has(n)||(t[n]=i);return t}hasId(e,t,n){const i=this.getLocalId(n)?this.transformKey(n):n;return!!(this.storage[e]&&this.storage[e][t]&&this.storage[e][t][i])}getLimitNum(e){return e>=Vt.componentsLimits[0]?Vt.componentsLimits[1]:Vt.componentsLimits[0]}getLimitNums(){for(const[e,t]of Object.entries(this.storage))if(e&&t){for(const[n,i]of Object.entries(t))if(n&&i){const o=this.getLimitNum(Object.keys(i).length);this.limitNums.set(`${e}/${n}`,o)}}}getViewIdBySecenPath(e){const t=this.getNamespaceData();for(const[n,i]of Object.entries(t))if(i){for(const o of Object.keys(i))if(o===e)return n}}getScenePathData(e){const t=this.getNamespaceData();for(const n of Object.values(t))if(n){for(const i of Object.keys(n))if(i===e)return ye.cloneDeep(n[i])}}hasTargetDataByViewId(e,t){const n=this.getNamespaceData();if(n&&n[e]){for(const i of Object.values(n[e]))for(const o of Object.keys(i))if(o===t)return!0}}getTargetDataByViewId(e,t){const n=this.getNamespaceData();let i,o;if(n&&n[e])for(const[a,c]of Object.entries(n[e]))for(const l of Object.keys(c))l===t&&(i=ye.cloneDeep(c[l]),o=a);return{data:i,scenePath:o}}getStorageData(e,t){var n;return(n=this.storage[e])!=null&&n[t]?ye.cloneDeep(this.storage[e][t]):void 0}getServiceStorageViewSnapshot(e){return this.storage[e]?ye.cloneDeep(this.storage[e]):{}}readViewStorageSnapshot(e){return{revision:this.viewStorageRevisions.get(e)||0,storage:this.getServiceStorageViewSnapshot(e)}}readSceneStorageSnapshot(e,t){return{revision:this.sceneStorageRevisions.get(this.getSceneRevisionKey(e,t))||0,storage:this.getStorageData(e,t)||{}}}hasSelector(e,t){const n=this.storage&&this.storage[e]&&this.storage[e][t];return!!(n&&Object.keys(n).find(i=>this.isOwn(i)&&this.getLocalId(i)===Le))}hasIncludeSelector(e,t,n){for(const i of Object.keys(this.storage))if(!(t&&i!==t)){for(const o of Object.keys(this.storage[i]))if(!(n&&o!==n)){for(const a of Object.keys(this.storage[i][o]))if(this.getLocalId(a)===Le){const c=this.storage[i][o][a],l=this.isLocalId(e)?this.transformKey(e):e;if(c&&c.selectIds&&c.selectIds.length&&c.selectIds.includes(l))return!0}}}return!1}addStorageStateListener(e){this.stateDisposer=Vc(async()=>{var c,l,u,h,d,f,g;const t=this.getNamespaceData(),{diffView:n,diffScenePath:i,diffData:o}=this.diffFunByView(this.serviceStorage,t);this.serviceStorage=t;const a={};if(Object.keys(n).length>0){for(const[y,S]of Object.entries(n))if(S&&!ye.isEqual((c=this.storage)==null?void 0:c[y],S.newValue)){const E=new Set([...Object.keys(((l=this.storage)==null?void 0:l[y])||{}),...Object.keys(S.newValue||{})]);a.diffView||(a.diffView={}),a.diffView[y]=S,this.storage||(this.storage={}),S.newValue===void 0?delete this.storage[y]:this.storage[y]=ye.cloneDeep(S.newValue),E.size?E.forEach(C=>this.bumpStorageRevision(y,C)):this.bumpStorageRevision(y)}}if(Object.keys(i).length>0){for(const[y,S]of Object.entries(i))if(S){const{viewId:E,newValue:C}=S,L=S.scenePath??y;S&&!ye.isEqual((h=(u=this.storage)==null?void 0:u[E])==null?void 0:h[L],C)&&(a.diffScenePath||(a.diffScenePath={}),a.diffScenePath[y]=S,this.storage||(this.storage={}),this.storage[E]||(this.storage[E]={}),S.newValue===void 0?delete this.storage[E][L]:this.storage[E][L]=ye.cloneDeep(S.newValue),this.bumpStorageRevision(E,L))}}if(Object.keys(o).length>0){for(const[y,S]of Object.entries(o))if(S){const{viewId:E,scenePath:C,newValue:L}=S,T=S.storageKey??y;S&&!ye.isEqual((g=(f=(d=this.storage)==null?void 0:d[E])==null?void 0:f[C])==null?void 0:g[T],L)&&(a.diffData||(a.diffData={}),a.diffData[y]=S,this.storage||(this.storage={}),this.storage[E]||(this.storage[E]={}),this.storage[E][C]||(this.storage[E][C]={}),S.newValue===void 0?delete this.storage[E][C][T]:this.storage[E][C][T]=ye.cloneDeep(S.newValue),this.bumpStorageRevision(E,C))}}this.logServiceDiff(a),Object.keys(a).length>0&&e(a),this.control.worker.publicMsgEmitter.emit("syncStorageChange",this.serviceStorage)})}logServiceDiff(e){var t,n,i;for(const o of Object.keys(e.diffView||{}))this.control.isServiceSyncReady(o)&&this.control.syncLogger.append("serviceDiff",o,"",[{diffType:"view",viewId:o}]);for(const[o,a]of Object.entries(e.diffScenePath||{})){if(!a||!this.control.isServiceSyncReady(a.viewId))continue;const c=a.scenePath??o;this.control.syncLogger.append("serviceDiff",a.viewId,c,[{diffType:"scenePath",viewId:a.viewId,scenePath:c}])}for(const[o,a]of Object.entries(e.diffData||{})){if(!a||!this.control.isServiceSyncReady(a.viewId))continue;const c=a.storageKey??o;this.control.syncLogger.append("serviceDiff",a.viewId,a.scenePath,[{diffType:"data",viewId:a.viewId,scenePath:a.scenePath,key:c,type:(t=a.newValue)==null?void 0:t.type,toolsType:((n=a.newValue)==null?void 0:n.toolsType)??((i=a.oldValue)==null?void 0:i.toolsType)}])}}removeStorageStateListener(){this.stateDisposer&&this.stateDisposer()}diffFunByView(e,t){const n=at(e),i=at(t),o={},a={},c={};for(const l of i)if(!n.includes(l)||e[l]===void 0){o[l]={newValue:t[l],oldValue:void 0};continue}for(const l of n){if(ye.isEqual(e[l],t[l]))continue;if(!i.includes(l)||t[l]===void 0){o[l]={newValue:void 0,oldValue:e[l]};continue}const u=this.diffFunByScenePath(e[l],t[l],l);Object.assign(a,u.diffScenePath),Object.assign(c,u.diffData)}return{diffData:c,diffScenePath:a,diffView:o}}diffFunByScenePath(e,t,n){const i=at(e),o=at(t),a={},c={};for(const l of o)if(!i.includes(l)||e[l]===void 0){a[this.getSceneDiffKey(n,l)]={newValue:t[l],oldValue:void 0,viewId:n,scenePath:l};continue}for(const l of i){if(ye.isEqual(e[l],t[l]))continue;if(!o.includes(l)||t[l]===void 0){a[this.getSceneDiffKey(n,l)]={newValue:void 0,oldValue:e[l],viewId:n,scenePath:l};continue}const u=this.diffFunByKeys(e[l],t[l],l,n);Object.assign(c,u)}return{diffScenePath:a,diffData:c}}diffFunByKeys(e,t,n,i){const o=at(e),a=at(t),c={};for(const l of a)(!o.includes(l)||e[l]===void 0)&&(c[this.getDataDiffKey(i,n,l)]={oldValue:void 0,newValue:t[l],viewId:i,scenePath:n,storageKey:l});for(const l of o)if(!ye.isEqual(e[l],t[l])){if(!a.includes(l)||t[l]===void 0){c[this.getDataDiffKey(i,n,l)]={newValue:void 0,oldValue:e[l],viewId:i,scenePath:n,storageKey:l};continue}a.includes(l)&&(c[this.getDataDiffKey(i,n,l)]={oldValue:e[l],newValue:t[l],viewId:i,scenePath:n,storageKey:l})}return c}transformKey(e){return this.uid+Bt+e}isOwn(e){return e.split(Bt)[0]===this.uid}dispatch(e){var C,L,T;if(this.destroyed)return;const{type:t,workId:n,ops:i,index:o,opt:a,toolsType:c,removeIds:l,updateNodeOpt:u,op:h,selectIds:d,isSync:f,scenePath:g,viewId:y}=e;if(!y||t!==le.Clear&&!this.canRunSync(y))return;const S=Number(e.needUndoTicker??e.collectUndoTicker??void 0),E=p=>{S?this.control.internalMsgEmitter.emit("ackStorageUndoTicker",S,y,g,p,{requestId:e.requestId,emitEventType:e.emitEventType}):e.emitEventType===Te.TranslateNode||(e.emitEventType,Te.CopyNode)};switch(t){case le.Clear:const p={};if(g&&this.storage[y]&&this.storage[y][g])delete this.storage[y][g],this.setState(p,{isSync:f,viewId:y,scenePath:g});else if(this.storage[y]){const b=Object.keys(this.storage[y]);delete this.storage[y],b.length?b.forEach(P=>this.bumpStorageRevision(y,P)):this.bumpStorageRevision(y),this.runSyncService({isSync:f,viewId:y})}Dr(()=>{var b,P;this.canRunSync(y)&&((b=this.control.pluginManager)==null||b.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||(P=this.control.miniMapManager)==null||P.updateMiniMapCamera(y),this.clearLimitComponents(y,g))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"));break;case le.CreateWork:if(g&&n&&c&&a){const b=this.isLocalId(n.toString())?this.transformKey(n):n;this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:b.toString()}),this.updateValue(b.toString(),{type:le.CreateWork,workId:n,toolsType:c,opt:a},{isSync:f,viewId:y,scenePath:g,onApplied:()=>E(b.toString())})}break;case le.DrawWork:if(g&&n&&typeof o=="number"&&(h!=null&&h.length)){const b=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][b]||void 0;if(P!=null&&P.ops||(P==null?void 0:P.type)===le.FullWork)return;const D=o?((P==null?void 0:P.op)||[]).slice(0,o).concat(h):h||(P==null?void 0:P.op),z=c||(P==null?void 0:P.toolsType),j=a||(P==null?void 0:P.opt),A=u||(P==null?void 0:P.updateNodeOpt);n&&z&&j&&D&&(this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:b.toString()}),this.updateValue(b.toString(),{...P,type:le.DrawWork,workId:n,updateNodeOpt:A,toolsType:z,opt:j,op:D,index:o},{isSync:f,viewId:y,scenePath:g,onApplied:()=>E(b.toString())}))}break;case le.FullWork:if(g&&n){const b=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][b]||void 0,D=u||(P==null?void 0:P.updateNodeOpt),z=c||(P==null?void 0:P.toolsType),j=a||(P==null?void 0:P.opt),A=i||(P==null?void 0:P.ops);if(!P&&e.emitEventType!==void 0&&Z0e.has(e.emitEventType)){E(b.toString());break}z&&j&&(this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.addRenderPageElementId({viewId:y,scenePath:g,elementId:b.toString()}),this.updateValue(b.toString(),{type:le.FullWork,updateNodeOpt:D,workId:b,toolsType:z,opt:j,ops:A},{isSync:f,viewId:y,scenePath:g,onApplied:()=>{E(b.toString())}}),Dr(()=>{var k,N;this.canRunSync(y)&&((k=this.control.pluginManager)==null||k.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||(N=this.control.miniMapManager)==null||N.updateMiniMapCamera(y),this.limitComponents(y,g))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case le.RemoveNode:if(g&&(l!=null&&l.length)){const b=l.map(z=>this.isLocalId(z+"")?this.transformKey(z):z);let P=0;const D=(C=this.storage[y])==null?void 0:C[g];D&&(Object.keys(D).map(z=>{b!=null&&b.includes(z)&&(P++,this.control.renderControl.isUsePageAuth(y)&&this.control.renderControl.delRenderPageElementId({viewId:y,scenePath:g,elementId:z}),this.updateValue(z,void 0,{isSync:f,viewId:y,scenePath:g,onApplied:()=>E(z)}))}),(L=this.control.pluginManager)==null||L.dispatchPluginEvent("syncStorage",y,g),this.control.isUseSimple||Dr(()=>{var z;this.canRunSync(y)&&((z=this.control.miniMapManager)==null||z.updateMiniMapCamera(y))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback"))),S&&P===0&&E()}break;case le.UpdateNode:if(g&&n&&(u||i||a)){const b=this.isLocalId(n.toString())?this.transformKey(n):n,P=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][b]||void 0;P&&(P.updateNodeOpt=u,(i||h)&&(P.ops=i,P.op=h),a&&(P.opt=Da(zu(P.opt,a))),P.type=le.FullWork,this.updateValue(b.toString(),P,{isSync:f,viewId:y,scenePath:g,onApplied:()=>E(b.toString())}),this.control.isUseSimple||Dr(()=>{var D;this.canRunSync(y)&&((D=this.control.miniMapManager)==null||D.updateMiniMapCamera(y))},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}break;case le.Select:if(!g)return;let m;d!=null&&d.length&&(m=d.map(b=>this.isLocalId(b+"")?this.transformKey(b):b));const M=this.transformKey(Le);if(m&&!((T=this.storage[y])!=null&&T[g]))return;const v=this.storage[y]&&this.storage[y][g]&&this.storage[y][g][M]||void 0,R=a||(v==null?void 0:v.opt);m&&this.checkOtherSelector(M,m,{isSync:f,viewId:y,scenePath:g}),this.updateValue(M,m&&{type:le.Select,toolsType:q.Selector,opt:R,selectIds:m},{isSync:f,viewId:y,scenePath:g,onApplied:()=>E(M)});break}}checkOtherSelector(e,t,n){var c;const{viewId:i,scenePath:o}=n,a=(c=this.storage[i])==null?void 0:c[o];if(a){for(const l of Object.keys(a))if(l!==e&&this.getLocalId(l)===Le){const u=a[l];if(u&&u.selectIds){const h=u.selectIds.filter(d=>!t.includes(d));h.length>0&&(u.selectIds=h),this.updateValue(l,h.length&&u||void 0,n)}}}}setState(e,t){const{viewId:n,scenePath:i}=t,o=at(e);for(let a=0;a<o.length;a++){const c=o[a],l=e[c];typeof l<"u"?(this.storage[n]||(this.storage[n]={}),this.storage[n][i]||(this.storage[n][i]={}),this.storage[n][i][c]=l):delete this.storage[n][i][c]}this.bumpStorageRevision(n,i),this.runSyncService(t)}updateValue(e,t,n){var u,h,d,f;const{viewId:i,scenePath:o,storage:a}=n,c=a||this.storage,l=(h=(u=c[i])==null?void 0:u[o])==null?void 0:h[e];if(t&&typeof t=="object"&&this.uid&&(t={...t,lastOperator:n.preserveLastOperator?t.lastOperator:this.uid},t.toolsType===q.Text&&t.opt)){const g={...t.opt};delete g.uid,t.opt=g}if(t===void 0){const g=(d=c[i])==null?void 0:d[o];g&&delete g[e]}else c[i]||(c[i]={}),c[i][o]||(c[i][o]={}),c[i][o][e]=t;c===this.storage&&!ye.isEqual(l,t)&&this.bumpStorageRevision(i,o),n.onApplied,(f=n.onApplied)==null||f.call(n),this.runSyncService(n)}updateExistingValue(e,t,n){var a;const i=(a=this.storage[n.viewId])==null?void 0:a[n.scenePath];if(!i)return!1;const o=Object.prototype.hasOwnProperty.call(i,e)||!this.isLocalId(e)?e:this.transformKey(e);return Object.prototype.hasOwnProperty.call(i,o)?(this.updateValue(o,t,n),!0):!1}runSyncService(e){if(this.canRunSync(e.viewId)){if(e.viewId&&this.pendingSyncViews.add(e.viewId),e.storage&&(this.pendingSyncStorage=e.storage),!this.control.renderControl.isWritable){this.Logger.error("[Appliance]: The current state is not writable and synchronization cannot be synchronized");return}if(e.isSync){this.pendingSyncViews.clear();const t=this.pendingSyncStorage||this.storage;this.pendingSyncStorage=void 0,this.syncSerivice({storage:t});return}this.asyncClockState||(this.asyncClockState=!0,Dr(()=>{if(this.asyncClockState=!1,this.destroyed)return;const t=[...this.pendingSyncViews].filter(i=>this.canRunSync(i));this.pendingSyncViews.clear();const n=this.filterDiscardedViews(this.pendingSyncStorage||this.storage);this.pendingSyncStorage=void 0,t.length&&this.syncSerivice({storage:n})},this.syncInterval,this.control.hasPolyfillMethod("requestIdleCallback")))}}syncSerivice(e={storage:this.storage}){if(this.destroyed)return;const{storage:t}=e,n=this.filterDiscardedViews(t||this.storage);this.logLocalSyncChanges(this.serviceStorage,n);const i=at(this.serviceStorage),o=at(n),a=new Map;for(const c of i){if(!o.includes(c)){a.set(c,void 0);continue}ye.isEqual(this.serviceStorage[c],n[c])||this.syncViewData(n,c)}for(const c of o)i.includes(c)||a.set(c,n[c]);if(a.size>=o.length||a.size>5&&o.length<20)this.syncStorageView(n);else for(const[c,l]of a.entries())this.syncUpdataView(n,c,l)}logLocalSyncChanges(e,t){const n=new Set([...at(e),...at(t)]);for(const i of n){const o=e[i]||{},a=t[i]||{},c=new Set([...at(o),...at(a)]);for(const l of c){const u=o[l]||{},h=a[l]||{},d=new Set([...at(u),...at(h)]),f=[];for(const g of d){const y=u[g],S=h[g];ye.isEqual(y,S)||f.push({key:g,type:S==null?void 0:S.type,toolsType:(S==null?void 0:S.toolsType)??(y==null?void 0:y.toolsType)})}this.control.syncLogger.append("localSync",i,l,f)}}}syncViewData(e,t){const n=at(this.serviceStorage[t]),i=at(e[t]),o=new Map;for(const a of n){if(!i.includes(a)){o.set(a,void 0);continue}ye.isEqual(this.serviceStorage[t][a],e[t][a])||this.syncScenePathData(e,t,a)}for(const a of i)n.includes(a)||o.set(a,e[t][a]);if(o.size>=i.length||o.size>5&&i.length<20)this.syncStorageScenePath(t,e[t]);else for(const[a,c]of o.entries())this.syncUpdataScenePath(e,t,a,c)}syncScenePathData(e,t,n){const i=at(this.serviceStorage[t][n]),o=at(e[t][n]),a=new Map;for(const c of i){if(!o.includes(c)){a.set(c,void 0);continue}ye.isEqual(this.serviceStorage[t][n][c],e[t][n][c])||a.set(c,e[t][n][c])}for(const c of o)i.includes(c)||a.set(c,e[t][n][c]);if(a.size>=o.length||a.size>5&&o.length<50)this.syncStorageKey(t,n,e[t][n]);else for(const[c,l]of a.entries())this.syncUpdataKey(e,t,n,c,l)}syncUpdataView(e,t,n){var o;Object.keys(this.serviceStorage).length?(o=this.plugin)==null||o.updateAttributes([this.namespace,t],n):this.syncStorageView(e)}syncStorageView(e){var t;(t=this.plugin)==null||t.updateAttributes([this.namespace],e)}syncUpdataScenePath(e,t,n,i){var a;Object.keys(this.serviceStorage[t]).length?(a=this.plugin)==null||a.updateAttributes([this.namespace,t,n],i):this.syncStorageScenePath(t,e[t])}syncStorageScenePath(e,t){var n;(n=this.plugin)==null||n.updateAttributes([this.namespace,e],t)}syncUpdataKey(e,t,n,i,o){var c;Object.keys(this.serviceStorage[t][n]).length?(c=this.plugin)==null||c.updateAttributes([this.namespace,t,n,i],o):this.syncStorageKey(t,n,e[t][n])}syncStorageKey(e,t,n){var i;(i=this.plugin)==null||i.updateAttributes([this.namespace,e,t],n)}keyTransformWorkId(e){const t=e.split(Bt);return t.length===2?t[1]:e}destroy(){this.destroyed||(this.destroyed=!0,this.limitComponents.cancel(),this.pendingSyncViews.clear(),this.pendingSyncStorage=void 0,this.discardedSyncViews.clear(),this.removeStorageStateListener(),this.serviceStorage={},this.storage={},this.storageRevision=0,this.viewStorageRevisions.clear(),this.sceneStorageRevisions.clear(),this.removeAuthStateListener(),this.authStorage={},this.globalUndoRedoStackStorage={})}transformToSerializableUndoStackItemData(e){const{data:t,scenePath:n}=e,i={};for(const o of t)i[o.key]={dataType:o.dataType,data:o.data};return{data:i,scenePath:n}}dispatchUndoTicker(e){const{viewId:t,undoTickerId:n,data:i,syncType:o,operation:a}=e,c=a===wt.syncUndoStack?"undoStack":"redoStack",l=o==="delete"?void 0:this.transformToSerializableUndoStackItemData(i);if(this.plugin){if(o==="delete"){const u=this.globalUndoRedoStackStorage[t]&&this.globalUndoRedoStackStorage[t][c];if(!u)return;delete u[n],this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c,n],void 0);return}if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,t]))if(this.plugin.getAttributesValue([this.globalUndoRedoStackSpace,t,c]))this.globalUndoRedoStackStorage[t][c][n]=l,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c,n],l);else{const u={[n]:l};this.globalUndoRedoStackStorage[t][c]=u,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t,c],u)}else{const u={[c]:{[n]:l}};this.globalUndoRedoStackStorage[t]=u,this.plugin.updateAttributes([this.globalUndoRedoStackSpace,t],u)}else{const u={[t]:{[c]:{[n]:l}}};this.globalUndoRedoStackStorage=u,this.plugin.updateAttributes(this.globalUndoRedoStackSpace,u)}}}addGlobalUndoRedoStackListener(e){this.authDisposer=Vc(async()=>{const t=this.getGlobalUndoRedoStackData();if(ye.isEqual(this.globalUndoRedoStackStorage,t))return;const n=this.diffGlobalUndoRedoStackFun(this.globalUndoRedoStackStorage,t);this.globalUndoRedoStackStorage=t,e(n)})}diffGlobalUndoRedoStackFun(e,t){const n=at(e),i=at(t),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!ye.isEqual(e[a],t[a])){if(!i.includes(a)||t[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:t[a],oldValue:e[a]}}return o}dispatchPageAuth(e,t=!0){var l,u,h,d,f,g,y,S,E,C,L,T,p,m,M,v,R,b,P,D,z,j,A,k,N,W,Y,Q,ie,O,V,Z,$,ee,se,ce,me,pe;const{operation:n,viewId:i,scenePath:o,pageId:a,pageData:c}=e;switch(n){case wt.addPage:{if(!i||!o||!a)return;const B=[this.authSpace];Object.keys(this.authStorage).length&&B.push("pageAuth");const F=this.authStorage.pageAuth||{};this.authStorage.pageAuth=F,Object.keys(F).length&&B.push(i),F[i]=F[i]||{},Object.keys(F[i]).length&&B.push(o),F[i][o]=F[i][o]||{render:(c==null?void 0:c.render)||"localSelf",pages:{}},Object.keys(F[i][o].pages).length&&B.push("pages",a);const J={};if(c!=null&&c.elementIds)for(const oe of c.elementIds.keys())J[oe]=!0;F[i][o].pages[a]=J,t&&(B.length===1?(l=this.plugin)==null||l.updateAttributes(B,ye.cloneDeep(this.authStorage)):B.length===2?(u=this.plugin)==null||u.updateAttributes(B,ye.cloneDeep(F)):B.length===3?(h=this.plugin)==null||h.updateAttributes(B,ye.cloneDeep(F[i])):B.length===4?(d=this.plugin)==null||d.updateAttributes(B,ye.cloneDeep(F[i][o])):(f=this.plugin)==null||f.updateAttributes(B,ye.cloneDeep(J)));return}case wt.renderPage:{if(!i||!o||!(c!=null&&c.render))return;this.authStorage.pageAuth&&this.authStorage.pageAuth[i]&&this.authStorage.pageAuth[i][o]&&c.render!==this.authStorage.pageAuth[i][o].render&&(this.authStorage.pageAuth[i][o].render=c.render,t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"pageAuth",i,o,"render"],c.render)));return}case wt.deletePage:{if(!i||!o||!a)return;(L=(C=(E=(S=(y=this.authStorage)==null?void 0:y.pageAuth)==null?void 0:S[i])==null?void 0:E[o])==null?void 0:C.pages)!=null&&L[a]&&(delete this.authStorage.pageAuth[i][o].pages[a],t&&((T=this.plugin)==null||T.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a],void 0)));return}case wt.clearPage:{if(!i||!o||!a)return;(R=(v=(M=(m=(p=this.authStorage)==null?void 0:p.pageAuth)==null?void 0:m[i])==null?void 0:M[o])==null?void 0:v.pages)!=null&&R[a]&&(delete this.authStorage.pageAuth[i][o].pages[a],t&&((b=this.plugin)==null||b.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a],{})));return}case wt.addElement:{if(!i||!o||!a||!(c!=null&&c.elementId))return;(A=(j=(z=(D=(P=this.authStorage)==null?void 0:P.pageAuth)==null?void 0:D[i])==null?void 0:z[o])==null?void 0:j.pages)!=null&&A[a]&&(this.authStorage.pageAuth[i][o].pages[a][c.elementId]=!0,t&&((k=this.plugin)==null||k.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a,c.elementId],!0)));return}case wt.deleteElement:{if(!i||!o||!a||!(c!=null&&c.elementId))return;(O=(ie=(Q=(Y=(W=(N=this.authStorage)==null?void 0:N.pageAuth)==null?void 0:W[i])==null?void 0:Y[o])==null?void 0:Q.pages)==null?void 0:ie[a])!=null&&O[c.elementId]&&(delete this.authStorage.pageAuth[i][o].pages[a][c.elementId],t&&((V=this.plugin)==null||V.updateAttributes([this.authSpace,"pageAuth",i,o,"pages",a,c.elementId],void 0)));return}case wt.clearViewScenePath:{if(!i||!o)return;(ee=($=(Z=this.authStorage)==null?void 0:Z.pageAuth)==null?void 0:$[i])!=null&&ee[o]&&(delete this.authStorage.pageAuth[i][o],t&&((se=this.plugin)==null||se.updateAttributes([this.authSpace,"pageAuth",i,o],void 0)));return}case wt.clearView:{if(!i)return;(me=(ce=this.authStorage)==null?void 0:ce.pageAuth)!=null&&me[i]&&(delete this.authStorage.pageAuth[i],t&&((pe=this.plugin)==null||pe.updateAttributes([this.authSpace,"pageAuth",i],void 0)));return}}}dispatchRenderAuth(e,t=!0){var l,u,h,d,f,g,y,S,E,C,L,T,p,m,M,v,R,b,P,D;const{operation:n,viewId:i,uid:o,renderData:a,isClear:c}=e;if(i)switch(n){case Mr.setAuth:{if(!a||a.render===void 0&&a.hide===void 0&&a.clear===void 0){this.authStorage.renderAuth&&this.authStorage.renderAuth[i]&&(delete this.authStorage.renderAuth[i],t&&((l=this.plugin)==null||l.updateAttributes([this.authSpace,"renderAuth",i],void 0)));return}const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]={},this.authStorage.renderAuth=j;const{render:A,hide:k,clear:N}=a;if(A===!0)j[i].render=!0;else if(ye.isSet(A)){j[i].render={};for(const W of A.keys())j[i].render[W]=!0}if(k===!0)j[i].hide=!0;else if(ye.isSet(k)){j[i].hide={};for(const W of k.keys())j[i].hide[W]=!0}if(N===!0)j[i].clear=!0;else if(ye.isSet(N)){j[i].clear={};for(const W of N.keys())j[i].clear[W]=!0}t&&(z.length===1?(u=this.plugin)==null||u.updateAttributes(z,ye.cloneDeep(this.authStorage)):z.length===2?(h=this.plugin)==null||h.updateAttributes(z,ye.cloneDeep(j)):(d=this.plugin)==null||d.updateAttributes(z,ye.cloneDeep(j[i])));return}case Mr.setShow:{if(!o)return;const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]=j[i]||{},this.authStorage.renderAuth=j,Object.keys(j[i]).length&&z.push("render"),j[i].render=j[i].render||{},j[i].render!==!0&&(Object.keys(j[i].render).length&&z.push(o),j[i].render[o]=!0),j[i].hide!==!0&&((f=j[i].hide)!=null&&f[o])&&(delete j[i].hide[o],t&&((g=this.plugin)==null||g.updateAttributes([this.authSpace,"renderAuth",i,"hide",o],void 0))),t&&(z.length===1?(y=this.plugin)==null||y.updateAttributes(z,ye.cloneDeep(this.authStorage)):z.length===2?(S=this.plugin)==null||S.updateAttributes(z,ye.cloneDeep(j)):z.length===3?(E=this.plugin)==null||E.updateAttributes(z,ye.cloneDeep(j[i])):(C=this.plugin)==null||C.updateAttributes(z,!0));return}case Mr.setHide:{if(!o)return;const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]=j[i]||{},this.authStorage.renderAuth=j,Object.keys(j[i]).length&&z.push("hide"),j[i].hide=j[i].hide||{},j[i].hide!==!0&&(Object.keys(j[i].hide).length&&z.push(o),j[i].hide[o]=!0),j[i].render!==!0&&((L=j[i].render)!=null&&L[o])&&(delete j[i].render[o],t&&((T=this.plugin)==null||T.updateAttributes([this.authSpace,"renderAuth",i,"render",o],void 0))),t&&(z.length===1?(p=this.plugin)==null||p.updateAttributes(z,ye.cloneDeep(this.authStorage)):z.length===2?(m=this.plugin)==null||m.updateAttributes(z,ye.cloneDeep(j)):z.length===3?(M=this.plugin)==null||M.updateAttributes(z,ye.cloneDeep(j[i])):(v=this.plugin)==null||v.updateAttributes(z,!0));return}case Mr.setClear:{if(!o)return;const z=[this.authSpace];Object.keys(this.authStorage).length&&z.push("renderAuth");const j=this.authStorage.renderAuth||{};Object.keys(j).length&&z.push(i),j[i]=j[i]||{},this.authStorage.renderAuth=j,Object.keys(j[i]).length&&z.push("clear"),j[i].clear=j[i].clear||{},j[i].clear!==!0&&(Object.keys(j[i].clear).length&&z.push(o),c?j[i].clear[o]=!0:delete j[i].clear[o]),t&&(z.length===1?(R=this.plugin)==null||R.updateAttributes(z,ye.cloneDeep(this.authStorage)):z.length===2?(b=this.plugin)==null||b.updateAttributes(z,ye.cloneDeep(j)):z.length===3?(P=this.plugin)==null||P.updateAttributes(z,ye.cloneDeep(j[i])):(D=this.plugin)==null||D.updateAttributes(z,c?!0:void 0));return}}}addAuthStateListener(e){this.authDisposer=Vc(async()=>{const t=this.getAuthSpaceData(),{renderAuth:n,pageAuth:i}=t;let o,a;ye.isEqual(n,this.authStorage.renderAuth)||(o=this.diffAuthFun(this.authStorage.renderAuth||{},n||{}),this.authStorage.renderAuth=n),ye.isEqual(i,this.authStorage.pageAuth)||(a=this.diffAuthPageFun(this.authStorage.pageAuth||{},i||{}),this.authStorage.pageAuth=i),(o||a)&&e(o,a)})}removeAuthStateListener(){this.authDisposer&&this.authDisposer()}diffAuthFun(e,t){const n=at(e),i=at(t),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!ye.isEqual(e[a],t[a])){if(!i.includes(a)||t[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:t[a],oldValue:e[a]}}return o}diffAuthPageFun(e,t){const n=at(e),i=at(t),o={};for(const a of i)if(!n.includes(a)||e[a]===void 0){o[a]={newValue:t[a],oldValue:void 0};continue}for(const a of n)if(!ye.isEqual(e[a],t[a])){if(!i.includes(a)||t[a]===void 0){o[a]={newValue:void 0,oldValue:e[a]};continue}o[a]={newValue:t[a],oldValue:e[a]}}return o}};x(Vt,"namespace","PluginState"),x(Vt,"authSpace","PluginAuth"),x(Vt,"globalUndoRedoStackSpace","GlobalUndoRedoStack"),x(Vt,"componentsLimits",[500,1e3]);let Jr=Vt;var nr=(s=>(s[s.Draw=1]="Draw",s[s.Delete=2]="Delete",s[s.Update=3]="Update",s))(nr||{});class H0{constructor(){x(this,"state","pending");x(this,"waiters",new Set)}wait(r){return this.state==="ready"?Promise.resolve("ready"):this.state==="cancelled"?Promise.resolve("cancelled"):new Promise(e=>{let t;const n=i=>{t&&clearTimeout(t),e(i)};this.waiters.add(n),r!==void 0&&(t=setTimeout(()=>{this.waiters.delete(n),e("timeout")},r))})}isReady(){return this.state==="ready"}begin(){this.state="pending"}markReady(){if(this.state==="ready")return;this.state="ready";const r=[...this.waiters];this.waiters.clear(),r.forEach(e=>e("ready"))}cancel(){this.state="cancelled";const r=[...this.waiters];this.waiters.clear(),r.forEach(e=>e("cancelled"))}}class K0e{constructor(){x(this,"roomMembers",[]);x(this,"onChangeHooks",new Set)}setRoomMembers(r){this.executChangeUidHook(this.roomMembers,r),this.roomMembers=r}executChangeUidHook(r,e){const t={online:e.map(n=>{var i;return((i=n.payload)==null?void 0:i.uid)||n.session}),offline:r.map(n=>{var i;return((i=n.payload)==null?void 0:i.uid)||n.session})};this.onChangeHooks.forEach(n=>n(t))}getAllRoomMembers(){return this.roomMembers}getRoomMember(r){return this.roomMembers.find(e=>{var t;return((t=e.payload)==null?void 0:t.uid)===r})}isOnLine(r){return!!this.getRoomMember(r)}onUidChangeHook(r){this.onChangeHooks.add(r)}destroy(){this.onChangeHooks.clear()}}function jp(s,r,e){var t,n;for(const[i,o]of s.entries())((n=(t=o.roomMember)==null?void 0:t.payload)==null?void 0:n.uid)===r&&i!==e&&s.delete(i)}class X0e{constructor(r){x(this,"expirationTime",He.cursor.expirationTime);x(this,"isEnableCursor");x(this,"internalMsgEmitter");x(this,"publicMsgEmitter");x(this,"control");x(this,"eventName","applianc-cursor");x(this,"displayer");x(this,"roomMember");x(this,"animationId");x(this,"maxLastSyncTime");x(this,"willSendEventWorkers",[]);x(this,"willConsumeEventWorkers",new Map);x(this,"sendEventTimerId");x(this,"animationDrawWorkers",new Map);x(this,"animationEventWorkers",new Map);x(this,"drawActiveUids",new Set);x(this,"cursorInfoMap",new Map);x(this,"doneRenderCursorInfoMap",new Map);const{control:e,internalMsgEmitter:t,publicMsgEmitter:n}=r;this.internalMsgEmitter=t,this.publicMsgEmitter=n,this.expirationTime=ye.isNumber(e.pluginOptions.extras.cursor.expirationTime)?e.pluginOptions.extras.cursor.expirationTime:this.expirationTime,this.control=e,this.roomMember=e.roomMember,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.isEnableCursor=this.control.pluginOptions.extras.cursor.enable}activeCollector(){this.control.plugin&&this.isEnableCursor&&(this.displayer=this.control.room||this.control.play,this.displayer.addMagixEventListener(this.eventName,this.mainMagixEventListener.bind(this)))}mainMagixEventListener(r){var a;const{event:e,payload:t}=r;if(e!==this.eventName)return;const{uid:n,op:i,type:o}=t;if(((a=this.control.collector)==null?void 0:a.uid)!==n&&o===Ls.Cursor&&(i!=null&&i.length)){if(this.drawActiveUids.has(n))return;const c=this.willConsumeEventWorkers.get(n)||[];for(const l of i){const{viewId:u}=l;ye.isNumber(l.consumPoint[0])&&ye.isNumber(l.consumPoint[1])&&(l.consumPoint=this.control.viewContainerManager.transformToOriginPoint(l.consumPoint,u)),this.control.renderControl.isFilterCursor(u)&&c.unshift({...l,timestamp:this.control.worker.now})}this.willConsumeEventWorkers.set(n,c),this.runAnimation()}}onFocusViewChange(){this.isEnableCursor&&(this.checkDrawWorks(),this.runAnimation())}updateRoomMembers(r){var t,n;const e=new Set(r.online);for(const i of this.drawActiveUids)e.has(i)||this.drawActiveUids.delete(i);for(const[i,o]of this.cursorInfoMap.entries())if(o){for(const[a,c]of o.entries()){const l=(n=(t=c.roomMember)==null?void 0:t.payload)==null?void 0:n.uid;l&&!e.has(l)&&o.delete(a)}o.size===0&&this.cursorInfoMap.delete(i)}}getKey(r,e){return`${r}${Bt}${e}`}getUidAndviewId(r){const[e,t]=r.split(Bt);return{uid:e,viewId:t}}removeRenderedCursorByUid(r,e){var t,n;for(const[i,o]of this.cursorInfoMap.entries()){if(!o||i===e)continue;let a=!1;for(const[c,l]of o.entries())((n=(t=l.roomMember)==null?void 0:t.payload)==null?void 0:n.uid)===r&&(o.delete(c),a=!0);a&&(o.size===0&&this.cursorInfoMap.delete(i),this.doneRenderCursorInfoMap.delete(i),this.internalMsgEmitter.emit([We.Cursor,i],o.size?Array.from(o.values(),c=>({x:c.x,y:c.y,roomMember:c.roomMember})):[]))}}dropAllEventCursor(r){var e,t;this.willConsumeEventWorkers.delete(r),this.animationEventWorkers.delete(r);for(const[n,i]of this.cursorInfoMap.entries()){if(!i)continue;let o=!1;for(const[a,c]of i.entries())c.type===0&&((t=(e=c.roomMember)==null?void 0:e.payload)==null?void 0:t.uid)===r&&(i.delete(a),o=!0);o&&(i.size===0&&this.cursorInfoMap.delete(n),this.doneRenderCursorInfoMap.delete(n),this.internalMsgEmitter.emit([We.Cursor,n],i.size?Array.from(i.values(),a=>({x:a.x,y:a.y,roomMember:a.roomMember})):[]))}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.animationCursor.bind(this)))}checkDrawWorks(){var e;const r=this.control.viewContainerManager.focuedViewId;for(const[t,n]of this.animationDrawWorkers.entries()){const{viewId:i,uid:o}=this.getUidAndviewId(t);o!==((e=this.control.collector)==null?void 0:e.uid)&&i!==r&&n.workState===de.Done&&(n.consumPoint=[void 0,void 0])}}animationCursor(){var t,n,i,o;this.animationId=void 0;const r=this.control.worker.now;for(const[a,c]of this.animationDrawWorkers.entries()){const{uid:l,viewId:u}=this.getUidAndviewId(a),h=this.roomMember.getRoomMember(l);if(!h){this.animationDrawWorkers.delete(a),this.drawActiveUids.delete(l);continue}const{consumPoint:d,timestamp:f,workState:g,cursorTool:y}=c,S=this.cursorInfoMap.get(u)||new Map;if(d&&ye.isNumber(d[0])&&ye.isNumber(d[1])&&f+this.expirationTime>r){const E=(t=h.payload)==null?void 0:t.uid;E&&(this.removeRenderedCursorByUid(E,u),jp(S,E,h.memberId)),S.set(h.memberId,{x:d[0],y:d[1],roomMember:h,timestamp:f,type:1,workState:g,cursorTool:y})}else S.delete(h.memberId),this.drawActiveUids.delete(l);S.size?this.cursorInfoMap.set(u,S):this.cursorInfoMap.delete(u),this.animationDrawWorkers.delete(a)}const e=new Set;for(const[a,c]of this.cursorInfoMap.entries())if(c)for(const[l,u]of c.entries())u.type===1&&u.workState!==de.Done&&e.add(l);else this.cursorInfoMap.delete(a);for(const[a,c]of this.willConsumeEventWorkers.entries()){const l=this.roomMember.getRoomMember(a);if(ye.isNumber(l==null?void 0:l.memberId)&&!e.has(l.memberId)){const u=c.pop();u?this.animationEventWorkers.set(a,u):this.willConsumeEventWorkers.delete(a)}}for(const[a,c]of this.animationEventWorkers.entries()){const l=this.roomMember.getRoomMember(a);if(!l){this.animationEventWorkers.delete(a);continue}const{viewId:u,consumPoint:h,timestamp:d,cursorTool:f}=c,g=this.cursorInfoMap.get(u)||new Map;if(h&&ye.isNumber(h[0])&&ye.isNumber(h[1])&&d+this.expirationTime>r){const y=(n=l.payload)==null?void 0:n.uid;y&&(this.removeRenderedCursorByUid(y,u),jp(g,y,l.memberId)),g.set(l.memberId,{x:h[0],y:h[1],roomMember:l,timestamp:d,type:0,cursorTool:f})}else g.delete(l.memberId);g.size?this.cursorInfoMap.set(u,g):this.cursorInfoMap.delete(u),this.animationEventWorkers.delete(a)}for(const a of this.doneRenderCursorInfoMap.keys())this.cursorInfoMap.has(a)||(this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]));for(const[a,c]of this.cursorInfoMap.entries())if(c!=null&&c.size){const l=[];for(const[h,d]of c.entries()){const{timestamp:f,...g}=d;if(f+this.expirationTime>r)l.push(g);else{const y=(o=(i=g.roomMember)==null?void 0:i.payload)==null?void 0:o.uid;y&&g.type===1&&g.workState!==de.Done&&this.drawActiveUids.delete(y),c.delete(h),c.size===0&&(this.cursorInfoMap.delete(a),this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]))}}const u=this.doneRenderCursorInfoMap.get(a);ye.isEqual(u,l)||(this.doneRenderCursorInfoMap.set(a,l),this.internalMsgEmitter.emit([We.Cursor,a],l))}else this.cursorInfoMap.delete(a),this.doneRenderCursorInfoMap.delete(a),this.internalMsgEmitter.emit([We.Cursor,a],[]);(this.willConsumeEventWorkers.size||this.cursorInfoMap.size)&&this.runAnimation()}sendEvent(r,e){var t;if(this.displayer&&ze(this.displayer)){const n=ye.isNumber(r[0])&&ye.isNumber(r[1])&&this.control.viewContainerManager.transformToScenePoint(r,e)||[void 0,void 0];this.willSendEventWorkers.push({consumPoint:n,viewId:e,cursorTool:Nc((t=this.control.worker.getCurrentToolsData())==null?void 0:t.toolsType)}),this.sendEventTimerId||(this.sendEventTimerId=setTimeout(()=>{this.dispatchMagixEvent()},this.maxLastSyncTime))}}dispatchMagixEvent(){var r;this.displayer&&ze(this.displayer)&&this.displayer.isWritable&&this.displayer.dispatchMagixEvent(this.eventName,{type:Ls.Cursor,op:ye.cloneDeep(this.willSendEventWorkers),uid:(r=this.control.collector)==null?void 0:r.uid}),this.willSendEventWorkers.length=0,this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}collectServiceCursor(r){var a,c,l,u;if(!this.isEnableCursor)return;const{op:e,uid:t,workState:n,viewId:i,cursorTool:o}=r;if(t&&e&&n&&i){const h=this.roomMember.getRoomMember(t);if(!h||t===((a=this.control.collector)==null?void 0:a.uid))return;this.dropAllEventCursor(t),n===de.Done?this.drawActiveUids.delete(t):this.drawActiveUids.add(t);const d=this.getKey(t,i);let f=[void 0,void 0];if(ye.isNumber(e[0])&&ye.isNumber(e[1])){const[E,C]=this.control.viewContainerManager.transformToOriginPoint(e,i);f=[E,C]}const g=((c=this.animationDrawWorkers.get(d))==null?void 0:c.cursorTool)||((u=(l=this.cursorInfoMap.get(i))==null?void 0:l.get(h.memberId))==null?void 0:u.cursorTool),y=gye(o,g)||De.pencil,S={consumPoint:f,workState:n,viewId:i,timestamp:this.control.worker.now,cursorTool:y};if(n===de.Start||n===de.Done){const E=this.willConsumeEventWorkers.get(t);n===de.Start&&E&&this.willConsumeEventWorkers.delete(t)}this.animationDrawWorkers.set(d,S),this.runAnimation()}}unabled(){var r;this.displayer&&ze(this.displayer)&&(this.willSendEventWorkers.length=0,this.displayer.dispatchMagixEvent(this.eventName,{type:Ls.Cursor,op:[{viewId:this.control.viewContainerManager.focuedViewId,consumPoint:[void 0,void 0]}],uid:(r=this.control.collector)==null?void 0:r.uid}),this.sendEventTimerId&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)),this.isEnableCursor||this.stopAnimation()}clearViewCursor(r){for(const[e]of this.animationDrawWorkers.entries()){const{viewId:t}=this.getUidAndviewId(e);t===r&&this.animationDrawWorkers.delete(e)}for(const[e,t]of this.willConsumeEventWorkers.entries()){const n=t.filter(i=>i.viewId!==r);n.length?this.willConsumeEventWorkers.set(e,n):this.willConsumeEventWorkers.delete(e)}for(const[e,t]of this.animationEventWorkers.entries())t.viewId===r&&this.animationEventWorkers.delete(e);this.cursorInfoMap.delete(r),this.doneRenderCursorInfoMap.delete(r),this.internalMsgEmitter.emit([We.Cursor,r],[])}stopAnimation(){this.animationId!==void 0&&(cancelAnimationFrame(this.animationId),this.animationId=void 0),this.animationDrawWorkers.clear(),this.willConsumeEventWorkers.clear(),this.animationEventWorkers.clear(),this.drawActiveUids.clear(),this.cursorInfoMap.clear(),this.doneRenderCursorInfoMap.clear(),this.willSendEventWorkers.length=0,this.sendEventTimerId!==void 0&&(clearTimeout(this.sendEventTimerId),this.sendEventTimerId=void 0)}destroy(){var r;(r=this.displayer)==null||r.removeMagixEventListener(this.eventName),this.stopAnimation()}}function $u(s,r,e){const t=e(s);return!!r&&!!t&&r===t}function J0e(s,r){return!s.isService||!s.viewId||s.isAllViews?!0:$u(s.viewId,s.scenePath,r)}function _0e(s,r,e){return J0e(s,e)?!s.viewId||s.isAllViews||r(s.viewId)?"dispatch":"pending":"discard"}class gr{constructor(){x(this,"activeScenePath");x(this,"activeUndoTickerId");x(this,"forceEndedContext");x(this,"useEmtMsg");x(this,"emtType");x(this,"control");x(this,"mainEngine");x(this,"collectListener",(r,e)=>{const t=r;if(t.workState===de.Start)this.forceEndedContext=void 0,this.useEmtMsg=!1;else if(this.forceEndedContext&&(!this.forceEndedContext.viewId||this.forceEndedContext.viewId===t.viewId)&&(!this.forceEndedContext.scenePath||!t.scenePath||this.forceEndedContext.scenePath===t.scenePath))return;this.collect(r,e)})}static dispatch(r,e,t){var n;(n=tt.InternalMsgEmitter)==null||n.emit([r,e],t)}get serviceColloctor(){return this.control.collector}registerForMainEngine(r,e){return this.emtType=r,this.control=e,this.mainEngine=e.worker,this.mainEngine.internalMsgEmitter.on([this.emtType,this.emitEventType],this.collectListener),this}destroy(){this.emtType&&this.mainEngine&&this.mainEngine.internalMsgEmitter.off([this.emtType,this.emitEventType],this.collectListener)}collectForLocalWorker(r,e){var t,n,i;for(const[o,a]of r)(t=this.mainEngine)==null||t.queryTaskBatchData(a).forEach(c=>{var l;(l=this.mainEngine)==null||l.taskBatchData.delete(c)}),(n=this.mainEngine)==null||n.taskBatchData.add(o);if(e){this.mainEngine.consume();return}(i=this.mainEngine)==null||i.runAnimation()}collectForServiceWorker(r){Dr(()=>{r.forEach(e=>{var t;(t=this.serviceColloctor)==null||t.dispatch(e)})},this.mainEngine.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback"))}onAbort(r){}abort(r,e){var u;const t=this.lastEmtData,n=(u=this.control)==null?void 0:u.collector,i=e?(n==null?void 0:n.getLocalId(e))||e:void 0,o=t?[t.workId,...t.workIds||[]].filter(h=>h!==void 0).map(h=>h.toString()):[],a=i===void 0||o.some(h=>{const d=(n==null?void 0:n.getLocalId(h))||h;return h===e||d===i}),c=!!t&&(!r||t.viewId===r)&&a,l=!!this.forceEndedContext&&(!r||this.forceEndedContext.viewId===r);if(!c&&!l)return!1;if(c){const h=this.activeUndoTickerId;this.onAbort(h),this.forceEndedContext={viewId:t.viewId,scenePath:this.activeScenePath||t.scenePath},this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0}return this.useEmtMsg=!1,c}async pause(r,e){var t;if(this.lastEmtData){const n=this.lastEmtData;if(r&&n.viewId!==r||e&&this.activeScenePath!==e)return;this.useEmtMsg=!0;const i=this.activeUndoTickerId,o={...n,scenePath:this.activeScenePath||n.scenePath,workState:de.Done};return await this.collect(o,!0),this.forceEndedContext={viewId:n.viewId,scenePath:o.scenePath},(t=tt.InternalMsgEmitter)==null||t.emit(Te.ActiveMethod,!1,n.viewId),i}}recover(r,e){var n;const t=this.forceEndedContext;!this.useEmtMsg||!t||r&&t.viewId!==r||e&&t.scenePath!==e||(this.useEmtMsg=!1,this.forceEndedContext=void 0,tt.InternalMsgEmitter.hasListeners(Te.ActiveMethod)&&((n=tt.InternalMsgEmitter)==null||n.emit(Te.ActiveMethod,!0,t.viewId)))}discardRecovery(r,e){const t=this.forceEndedContext;!t||r&&t.viewId!==r||e&&t.scenePath!==e||(this.useEmtMsg=!1,this.forceEndedContext=void 0)}}function Q0(s,r,e){return`${e.isLocalId(s)?s:e.getLocalId(s)}-${r}`}function eMe(s,r,e){const t=new Map,n=[];for(const i of s){const o=Q0(i,r,e);t.set(i,o),n.push(o)}return{copyNodeKeyBySourceKey:t,expectedWorkIds:n}}class tMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.CopyNode)}collect(e){var l;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n,requestId:i}=e,o=this.control.viewContainerManager.getView(n);if(!(o!=null&&o.displayer))return;const a=o.focusScenePath,c=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",c,n,{render:!0,storage:!0,copyAck:!0,source:$e.AsyncCopyNode});for(const u of t){const h=u.toString(),f=this.serviceColloctor.isLocalId(h)?this.serviceColloctor.transformKey(u):h,g=(l=this.serviceColloctor.getStorageData(n,a))==null?void 0:l[f];if(g){if(u===Le){const y=g&&this.copySelector({viewId:n,store:ht(g)});y&&this.pasteSelector({...y,viewId:n,scenePath:a,undoTickerId:c,requestId:i});break}if(g.toolsType===q.Text&&g.opt&&g.opt.workState&&g.opt.workState!==de.Done){const y=g&&this.copyText({viewId:n,store:ht(g)});y&&this.pasteText({...y,viewId:n,scenePath:a,key:f,store:g,undoTickerId:c,requestId:i});break}}}}copyText(e){const{viewId:t,store:n}=e,i=this.control.viewContainerManager.getView(t);if(!this.serviceColloctor||!i)return;const o=i==null?void 0:i.cameraOpt,a=o&&[o.centerX,o.centerY],c=n.opt,l=c.boxPoint&&c.boxSize&&[c.boxPoint[0]+c.boxSize[0]/2,c.boxPoint[1]+c.boxSize[1]/2];return{bgCenter:a,textCenter:l}}pasteText(e){var S,E;const{bgCenter:t,textCenter:n,store:i,key:o,viewId:a,scenePath:c,undoTickerId:l,requestId:u}=e,h=this.control.viewContainerManager.getView(a);if(!this.serviceColloctor||!h)return;const d=Math.floor(Math.random()*30+1),f=((S=h.cameraOpt)==null?void 0:S.scale)||1,g=t&&n&&[t[0]-n[0]+d,t[1]-n[1]+d]||[d/f,d/f],y=Q0(o,l,this.serviceColloctor);if(i.toolsType===q.Text&&i.opt){const C=i.opt;if(C&&C.boxPoint&&C.text){C.workState=de.Done;const L=C.boxPoint;C.boxPoint=[Math.round(L[0]+g[0]),Math.round(L[1]+g[1])],C.workState=de.Done;const T=this.control.viewContainerManager.transformToOriginPoint(C.boxPoint,a);this.control.textEditorManager.createTextForMasterController({workId:y,x:T[0],y:T[1],opt:C,scale:((E=h.cameraOpt)==null?void 0:E.scale)||1,type:Tr.Text,isActive:!1,viewId:a,scenePath:c,requestId:u,emitEventType:Te.CopyNode}),this.collectForServiceWorker([{...i,opt:C,type:le.FullWork,workId:y,viewId:a,scenePath:c,needUndoTicker:l,requestId:u,emitEventType:Te.CopyNode}]),l&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",l,a,[y],c)}}}copySelector(e){var y,S,E,C,L,T,p,m,M;const{viewId:t,store:n}=e,i=this.control.viewContainerManager.getView(t),o=n.selectIds;if(!this.serviceColloctor||!(o!=null&&o.length)||!i)return;const a=new Map,c={offset:{x:0,y:0},cameraOpt:{centerX:((y=i.cameraOpt)==null?void 0:y.centerX)||0,centerY:((S=i.cameraOpt)==null?void 0:S.centerY)||0,scale:((E=i.cameraOpt)==null?void 0:E.scale)||1}},l=this.control.hasOffscreenCanvas&&((C=i.displayer.canvasBgRef.current)==null?void 0:C.getBoundingClientRect())||((L=i.displayer.canvasContainerRef.current)==null?void 0:L.getBoundingClientRect()),u=(p=(T=i.displayer)==null?void 0:T.floatBarRef.current)==null?void 0:p.getBoundingClientRect(),h=l&&[l.x+l.width/2,l.y+l.height/2],d=u&&[u.x+u.width/2,u.y+u.height/2],f=h&&i.viewData&&i.viewData.convertToPointInWorld({x:h[0],y:h[1]}),g=d&&i.viewData&&i.viewData.convertToPointInWorld({x:d[0],y:d[1]});f&&g&&(c.offset={x:f.x-g.x,y:f.y-g.y});for(const v of o){const R=this.serviceColloctor.isLocalId(v)?this.serviceColloctor.transformKey(v):v,b=(M=(m=this.serviceColloctor)==null?void 0:m.getStorageData(i.id,i.focusScenePath))==null?void 0:M[R];b&&a.set(v,ht(b))}return{copyStores:a,copyCoordInfo:c}}pasteSelector(e){var L,T,p,m;const{copyStores:t,copyCoordInfo:n,viewId:i,scenePath:o,undoTickerId:a,requestId:c}=e,l=this.control.viewContainerManager.getView(i);if(!t.size||!this.serviceColloctor||!l)return;const{offset:u,cameraOpt:h}=n,{scale:d}=h,f=Math.floor(Math.random()*30+1),g=u&&[u.x+f,u.y+f]||[f/d,f/d],y=[],S=[],{copyNodeKeyBySourceKey:E,expectedWorkIds:C}=eMe(t.keys(),a,this.serviceColloctor);a&&C.length&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",a,i,C,o);for(const[M,v]of t.entries()){const R=E.get(M);if(!R)continue;const b={useAnimation:!1};if(v.toolsType===q.Text&&v.opt){const P=v.opt;if(P&&P.boxPoint&&P.text){P.workState=de.Done;const D=P.boxPoint;P.boxPoint=[Math.round(D[0]+g[0]),Math.round(D[1]+g[1])],P.workState=de.Done;const z=this.control.viewContainerManager.transformToOriginPoint(P.boxPoint,i);this.control.textEditorManager.createTextForMasterController({workId:R,x:z[0],y:z[1],opt:P,scale:((L=l.cameraOpt)==null?void 0:L.scale)||1,type:Tr.Text,isActive:!1,viewId:i,scenePath:o,requestId:c,emitEventType:Te.CopyNode})}S.push({...v,opt:P,type:le.FullWork,workId:R,viewId:i,scenePath:o,requestId:c,needUndoTicker:a,emitEventType:Te.CopyNode});continue}if((v.toolsType===q.Image||v.toolsType===q.BackgroundSVG)&&(v.opt.uuid=R,v.opt.centerX=v.opt.centerX+g[0],v.opt.centerY=v.opt.centerY+g[1]),v.ops){const P=Nn(v.ops).map((z,j)=>{const A=j%3;return A===0?z+g[0]:A===1?z+g[1]:z}),D=xt(P);v.ops=D}if((T=v==null?void 0:v.opt)!=null&&T.eraserlines&&(p=v==null?void 0:v.opt)!=null&&p.eraserlines.length)for(const P of(m=v==null?void 0:v.opt)==null?void 0:m.eraserlines){const{op:D}=P;for(let z=0;z<D.length;z++){const j=D[z].map((A,k)=>k%2?A+g[1]:A+g[0]);P.op[z]=j}}S.push({...v,updateNodeOpt:b,type:le.FullWork,workId:R,viewId:i,scenePath:o,requestId:c,needUndoTicker:a,emitEventType:Te.CopyNode}),y.push([{...v,updateNodeOpt:b,workId:R,msgType:le.FullWork,dataType:xe.Local,emitEventType:Te.CopyNode,willSyncService:!1,willRefresh:!0,viewId:i,scenePath:o,requestId:c,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i),isRunBackgroundThread:this.control.isUseBackgroundThread},{workId:R,msgType:le.FullWork,emitEventType:Te.CopyNode}])}y.length&&this.collectForLocalWorker(y),S.length&&this.collectForServiceWorker(S)}}class rMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetColorNode);x(this,"undoTickerId")}onAbort(e){this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId===e&&(this.control.textEditorManager.UndoTickerId=void 0)}ensureUndoTicker(e,t,n,i){if(!(n===de.Start||n===de.Done&&!this.undoTickerId))return this.undoTickerId;const a=this.mainEngine.now;return this.undoTickerId=a,this.activeUndoTickerId=a,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",a,e,{render:!0,storage:!0,source:$e.MethodSetColorNode}),a}setTextColor(e,t,n,i,o,a){const{fontColor:c,fontBgColor:l}=n;t.opt&&(c&&(t.opt.fontColor=c),l&&(t.opt.fontBgColor=l),this.control.textEditorManager.updateTextForMasterController({workId:e,opt:t.opt,viewId:i,canSync:!0,canWorker:!0,requestId:o,needUndoTicker:a}))}collect(e,t){var m,M;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,strokeColor:i,fillColor:o,fontColor:a,fontBgColor:c,viewId:l,workState:u,thickness:h,strokeType:d,requestId:f}=e,g=this.control.viewContainerManager.getView(l);if(!(g!=null&&g.displayer))return;if(u===de.Start)this.activeScenePath=e.scenePath||g.focusScenePath;else if(u===de.Doing&&!this.activeScenePath)return;const y=e.scenePath||this.activeScenePath||g.focusScenePath;u!==de.Done&&(this.lastEmtData={...e,scenePath:y});const S=[...n],E=this.serviceColloctor.storage,C=[],L={},T=this.ensureUndoTicker(l,y,u,n);this.undoTickerId&&(this.control.textEditorManager.UndoTickerId=this.undoTickerId);const p=new Set;for(;S.length;){const v=S.pop();if(!v)continue;const R=v.toString(),b=this.serviceColloctor.isLocalId(R),P=b?this.serviceColloctor.transformKey(v):R;let D=R;!b&&this.serviceColloctor.isOwn(D)&&(D=this.serviceColloctor.getLocalId(D));const z=(M=(m=E==null?void 0:E[l])==null?void 0:m[y])==null?void 0:M[P];if(z){const j=z.updateNodeOpt||{};if(a||c){if(a){j.fontColor=a;const[k,N,W,Y]=As(a);L.textColor=[k,N,W],L.textOpacity=Y}if(c)if(j.fontBgColor=ea(c)?"transparent":c,ea(c))L.textBgColor=void 0,L.textBgOpacity=void 0;else{const[k,N,W,Y]=As(c);L.textBgColor=[k,N,W],L.textBgOpacity=Y}if(z.toolsType===q.Text&&z.opt&&u!==de.Start){D&&u===de.Done&&p.add(D.toString()),this.setTextColor(D,ht(z),j,l,f,u===de.Done&&T||void 0);continue}}if(i){j.strokeColor=i;const[k,N,W,Y]=As(i);L.strokeColor=[k,N,W],L.strokeOpacity=Y}if(o)if(j.fillColor=ea(o)?"transparent":o,ea(o))L.fillColor=void 0,L.fillOpacity=void 0;else{const[k,N,W,Y]=As(o);L.fillColor=[k,N,W],L.fillOpacity=Y}h&&(j.thickness=h,L.strokeWidth=h),d&&(L.strokeType=d,j.strokeType=d,j.lineCap=this.control.getLineCap(d),j.lineDash=this.control.getLineDash(d));const A={workId:D,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:j,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,textUpdateForWoker:!0,viewId:l,scenePath:y,requestId:f,needUndoTicker:u===de.Done&&T||void 0};D&&u===de.Done&&p.add(D.toString()),C.push([A,{workId:D,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}if(u===de.Done&&T){const v=[...p];v.length&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",T,l,v,y)}C.length?(u===de.Done&&(this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId=void 0),this.collectForLocalWorker(C,t)):u===de.Done&&(this.undoTickerId=void 0,this.control.textEditorManager.UndoTickerId=void 0),Object.keys(L).length&&setTimeout(()=>{var v;(v=this.control.room)==null||v.setMemberState(L)},0),u===de.Done&&(this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class nMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.ZIndexNode);x(this,"zIndexMap",new Map);x(this,"zIndexMapForBackgroundSVG",new Map)}clearZIndex(e){this.zIndexMap.delete(e),this.zIndexMapForBackgroundSVG.delete(e)}getMinZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.min)||0}getMinZIndexForBackgroundSVG(e){var t;return((t=this.zIndexMapForBackgroundSVG.get(e))==null?void 0:t.min)||0}getMaxZIndex(e){var t;return((t=this.zIndexMap.get(e))==null?void 0:t.max)||0}getMaxZIndexForBackgroundSVG(e){var t;return((t=this.zIndexMapForBackgroundSVG.get(e))==null?void 0:t.max)||0}setMaxZIndex(e,t){const n=this.getMinZIndex(t);this.zIndexMap.set(t,{min:n,max:e})}setMaxZIndexForBackgroundSVG(e,t){const n=this.getMinZIndexForBackgroundSVG(t);this.zIndexMapForBackgroundSVG.set(t,{min:n,max:e})}setMinZIndex(e,t){const n=this.getMaxZIndex(t);this.zIndexMap.set(t,{min:e,max:n})}setMinZIndexForBackgroundSVG(e,t){const n=this.getMaxZIndexForBackgroundSVG(t);this.zIndexMapForBackgroundSVG.set(t,{min:e,max:n})}addMaxLayer(e){const t=this.getMaxZIndex(e)+1;this.setMaxZIndex(t,e)}addMaxLayerForBackgroundSVG(e){const t=this.getMaxZIndexForBackgroundSVG(e)+1;this.setMaxZIndexForBackgroundSVG(t,e)}addMinLayer(e){const t=this.getMinZIndex(e)-1;this.setMinZIndex(t,e)}addMinLayerForBackgroundSVG(e){const t=this.getMinZIndexForBackgroundSVG(e)-1;this.setMinZIndexForBackgroundSVG(t,e)}correct(e){const t=e.sort((n,i)=>n[1]-i[1]);for(let n=1;n<t.length;n++){const i=t[n][1],o=t[n-1][1];i<=o&&(t[n][1]=o+1)}return t}collect(e){var S,E;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,layer:n,viewId:i,requestId:o}=e,a=this.control.viewContainerManager.getView(i);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...t],u=this.serviceColloctor.storage,h=[],d=[],f=[],g=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,i,{render:!0,storage:!0,source:$e.AsyncZIndexNode});l.length;){const C=l.pop();if(!C)continue;const L=C.toString(),T=this.serviceColloctor.isLocalId(L),p=T?this.serviceColloctor.transformKey(C):L;let m=L;!T&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const M=ht(u[i][c][p]);let v,R;if(M&&m===Le){if(M.selectIds){for(const D of M.selectIds){const z=y(D,this.serviceColloctor),j=(E=(S=u==null?void 0:u[i])==null?void 0:S[c])==null?void 0:E[z];j&&j.toolsType===q.BackgroundSVG?(f.push(D),f.sort((A,k)=>{var Y,Q,ie,O;const N=((Q=(Y=u[y(A,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:Q.zIndex)||0,W=((O=(ie=u[y(A,this.serviceColloctor)])==null?void 0:ie.opt)==null?void 0:O.zIndex)||0;return N>W?1:A<k?-1:0})):(d.push(D),d.sort((A,k)=>{var Y,Q,ie,O;const N=((Q=(Y=u[y(A,this.serviceColloctor)])==null?void 0:Y.opt)==null?void 0:Q.zIndex)||0,W=((O=(ie=u[y(A,this.serviceColloctor)])==null?void 0:ie.opt)==null?void 0:O.zIndex)||0;return N>W?1:A<k?-1:0}))}const b=M.updateNodeOpt||{};b.zIndexLayer=n;const P={workId:C,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:b,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:i,requestId:o,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i)};d.length&&(n===In.Top?(this.addMaxLayer(i),v=this.getMaxZIndex(i)):(this.addMinLayer(i),v=this.getMinZIndex(i)),d.forEach(D=>{var k,N,W,Y,Q;const z=(k=this.serviceColloctor)==null?void 0:k.isLocalId(D);let j=z&&((N=this.serviceColloctor)==null?void 0:N.transformKey(D))||D;const A=(Y=(W=u==null?void 0:u[i])==null?void 0:W[c])==null?void 0:Y[j];A&&(!z&&((Q=this.serviceColloctor)!=null&&Q.isOwn(j))&&(j=this.serviceColloctor.getLocalId(j)),b.zIndex=v,A!=null&&A.opt&&(A.opt.zIndex=v))})),f.length&&(n===In.Top?(this.addMaxLayerForBackgroundSVG(i),R=this.getMaxZIndexForBackgroundSVG(i)):(this.addMinLayerForBackgroundSVG(i),R=this.getMinZIndexForBackgroundSVG(i)),f.forEach(D=>{var k,N,W,Y,Q;const z=(k=this.serviceColloctor)==null?void 0:k.isLocalId(D);let j=z&&((N=this.serviceColloctor)==null?void 0:N.transformKey(D))||D;const A=(Y=(W=u==null?void 0:u[i])==null?void 0:W[c])==null?void 0:Y[j];A&&(!z&&((Q=this.serviceColloctor)!=null&&Q.isOwn(j))&&(j=this.serviceColloctor.getLocalId(j)),b.zIndexForBackgroundSVG=R,A!=null&&A.opt&&(A.opt.zIndex=R))})),P.willSerializeData=!0,h.push([P,{workId:C,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}continue}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",g,i,h.map(([C])=>{var L;return(L=C.workId)==null?void 0:L.toString()}).filter(Boolean),c),this.collectForLocalWorker(h));function y(C,L){return L.isLocalId(C)&&L.transformKey(C)||C}}}class iMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.TranslateNode);x(this,"cachePosition")}onAbort(){this.cachePosition=void 0}collect(e,t){var y,S,E;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,position:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===de.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=[...n],h=(y=this.serviceColloctor)==null?void 0:y.storage,d=[],f=new Set,g=o===de.Start&&this.mainEngine.now||void 0;for(g&&(this.activeUndoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodTranslateNode}));u.length;){const C=u.pop();if(!C)continue;const L=C.toString(),T=this.serviceColloctor.isLocalId(L),p=T&&this.serviceColloctor.transformKey(C)||L;let m=L;!T&&this.serviceColloctor.isOwn(m)&&(m=this.serviceColloctor.getLocalId(m));const M=(E=(S=h==null?void 0:h[a])==null?void 0:S[l])==null?void 0:E[p];if(M&&m===Le){if(M.selectIds){o===de.Done&&M.selectIds.forEach(R=>{f.add(R.toString())});const v=this.control.viewContainerManager.transformToScenePoint([i.x,i.y],a);if(o===de.Start&&(this.cachePosition=v),this.cachePosition){const R=M.updateNodeOpt||{};R.translate=[v[0]-this.cachePosition[0],v[1]-this.cachePosition[1]],R.workState=o,this.control.cursor.isEnableCursor?R.useAnimation=!1:(R.uid=this.serviceColloctor.uid,o===de.Start?R.useAnimation=!1:o===de.Done&&(R.useAnimation=!0));const b={workId:C,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:R,emitEventType:this.emitEventType,willSyncService:!0,textUpdateForWoker:!0,viewId:a,scenePath:l,smoothSync:this.mainEngine.smoothSync};o===de.Done&&(b.textUpdateForWoker=!0,b.willSerializeData=!0,this.cachePosition=void 0,b.needUndoTicker=this.activeUndoTickerId),d.push([b,{workId:C,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:o}])}}continue}}if(o===de.Start?this.mainEngine.unWritable():o===de.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length){if(o===de.Done){const C=this.activeUndoTickerId;if(C){const L=[...f];this.mainEngine.internalMsgEmitter.emit("finalizeRequested",C,a,L,l)}}this.collectForLocalWorker(d,t)}o===de.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class sMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.DeleteNode)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n,requestId:i}=e,o=this.control.viewContainerManager.getView(n);if(!(o!=null&&o.displayer))return;const a=o.focusScenePath,c=this.serviceColloctor.storage,l=[...t],u=[],h=[],d=this.mainEngine.now;for(this.control.textEditorManager.UndoTickerId=d;l.length;){const y=l.pop();if(!y)continue;const S=y.toString(),E=this.serviceColloctor.isLocalId(S),C=E?this.serviceColloctor.transformKey(y):S,L=(g=(f=c==null?void 0:c[n])==null?void 0:f[a])==null?void 0:g[C];if(L){let T=S;if(!E&&this.serviceColloctor.isOwn(T)&&(T=this.serviceColloctor.getLocalId(T)),L.toolsType===q.Text){this.control.textEditorManager.delete(T,!0,!0);continue}h.push(T)}}h.length&&(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n,{render:!0,storage:!0,source:$e.AsyncDeleteNode}),this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,n,h.slice(),a),u.push([{msgType:le.RemoveNode,emitEventType:Te.DeleteNode,removeIds:h,dataType:xe.Local,willSyncService:!0,willRefresh:!0,viewId:n,requestId:i,isRunBackgroundThread:this.control.isUseBackgroundThread,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)},void 0]),this.collectForLocalWorker(u))}}class oMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.ScaleNode);x(this,"targetText",new Map);x(this,"cacheTextInfo",new Map)}onAbort(e){this.targetText.clear(),this.cacheTextInfo.clear(),this.control.textEditorManager.UndoTickerId===e&&(this.control.textEditorManager.UndoTickerId=void 0)}async setTextStyle(e,t,n){const i=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t,viewId:n,canSync:!1,canWorker:!1});return{key:e,textInfo:i}}async collect(e,t){var C,L,T,p,m,M,v;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,workState:i,viewId:o,originPoint:a,scenePoint:c,dir:l,scale:u,translate:h}=e,d=this.control.viewContainerManager.getView(o);if(!(d!=null&&d.displayer))return;if(i===de.Start)this.activeScenePath=e.scenePath||d.focusScenePath;else if(!this.activeScenePath)return;const f=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:f};const g=[...n],y=(C=this.serviceColloctor)==null?void 0:C.storage,S=[],E=i===de.Start&&this.mainEngine.now||void 0;for(E&&(this.activeUndoTickerId=E,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",E,o,{render:!0,storage:!0,isWritable:!0,source:$e.MethodScaleNode}),this.control.textEditorManager.UndoTickerId=E);g.length;){const R=g.pop();if(!R)continue;const b=R.toString(),P=this.serviceColloctor.isLocalId(b),D=P&&this.serviceColloctor.transformKey(R)||b;let z=b;!P&&this.serviceColloctor.isOwn(z)&&(z=this.serviceColloctor.getLocalId(z));const j=(T=(L=y==null?void 0:y[o])==null?void 0:L[f])==null?void 0:T[D];if(j&&z===Le&&j.selectIds){const A=j.updateNodeOpt||{};if(A.dir=l,A.originPoint=a,A.scenePoint=c,A.workState=i,A.scale=u,A.translate=h,i===de.Start){this.cacheTextInfo.clear();for(const N of j.selectIds){const W=(p=this.serviceColloctor)==null?void 0:p.isLocalId(N),Y=W&&((m=this.serviceColloctor)==null?void 0:m.transformKey(N))||N;let Q=Y;!W&&((M=this.serviceColloctor)!=null&&M.isOwn(Y))&&(Q=this.serviceColloctor.getLocalId(Y));const ie=this.control.textEditorManager.get(Q);ie&&i===de.Start&&this.targetText.set(Q,ht(ie))}}if(this.targetText.size&&i!==de.Start&&u){const N=[];for(const[Y,Q]of this.targetText.entries()){const{opt:ie}=Q,O=Math.floor(ie.fontSize*u[0]),V=this.cacheTextInfo.get(Y),Z=!V&&ie.fontSize!==O||V&&V.fontSize!==O||!1,$=(v=this.control.textEditorManager.get(Y))==null?void 0:v.opt;if(Z&&$&&ie.boxSize&&ie.boxPoint){const ee=this.setTextStyle(Y,{...$,fontSize:O},o);N.push(ee)}}const W=await Promise.all(N);for(const Y of W)if(Y){const{key:Q,textInfo:ie}=Y;this.cacheTextInfo.set(Q,{fontSize:ie.opt.fontSize,boxSize:ie.opt.boxSize,boxPoint:ie.opt.boxPoint})}A.textInfos=this.cacheTextInfo}this.control.cursor.isEnableCursor?A.useAnimation=!1:(A.uid=this.serviceColloctor.uid,i===de.Start?A.useAnimation=!1:i===de.Done&&(A.useAnimation=!0));const k={workId:R,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:A,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:o,scenePath:f,smoothSync:this.mainEngine.smoothSync};i===de.Done&&(k.willSerializeData=!0,this.targetText.clear(),k.needUndoTicker=this.activeUndoTickerId),S.push([k,{workId:R,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:i}]);continue}}if(i===de.Start?this.mainEngine.unWritable():i===de.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),S.length){if(i===de.Done){const R=this.activeUndoTickerId;R&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",R,o,S.map(([b])=>{var P;return(P=b.workId)==null?void 0:P.toString()}).filter(Boolean),f)}this.collectForLocalWorker(S,t)}i===de.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class aMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.RotateNode);x(this,"cacheOriginRotate",0)}onAbort(){this.cacheOriginRotate=0}collect(e,t){var y,S,E,C,L,T,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:n,angle:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===de.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=[...n],h=(y=this.serviceColloctor)==null?void 0:y.storage,d=[],f=new Set,g=o===de.Start&&this.mainEngine.now||void 0;for(g&&(this.activeUndoTickerId=g,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",g,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodRotateNode}));u.length;){const m=u.pop();if(!m)continue;const M=m.toString(),v=this.serviceColloctor.isLocalId(M),R=v&&this.serviceColloctor.transformKey(m)||M;let b=M;!v&&this.serviceColloctor.isOwn(b)&&(b=this.serviceColloctor.getLocalId(b));const P=(E=(S=h==null?void 0:h[a])==null?void 0:S[l])==null?void 0:E[R];if(P&&b===Le){if(((C=P.selectIds)==null?void 0:C.length)===1){const D=P.selectIds[0];if(o===de.Done&&f.add(D.toString()),o===de.Start){const k=((L=this.serviceColloctor)==null?void 0:L.isLocalId(D))&&((T=this.serviceColloctor)==null?void 0:T.transformKey(D))||D,N=h[a][l][k];this.cacheOriginRotate=((p=N==null?void 0:N.opt)==null?void 0:p.rotate)||0}const z=P.updateNodeOpt||{};z.angle=(i+this.cacheOriginRotate)%360,z.workState=o,this.control.cursor.isEnableCursor?z.useAnimation=!1:(z.uid=this.serviceColloctor.uid,o===de.Start?z.useAnimation=!1:o===de.Done&&(z.useAnimation=!0));const j={workId:m,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:z,emitEventType:this.emitEventType,willRefreshSelector:!1,willSyncService:!0,viewId:a,scenePath:l,smoothSync:this.mainEngine.smoothSync};o===de.Done&&(j.willRefreshSelector=!0,j.willSerializeData=!0,this.cacheOriginRotate=0,j.needUndoTicker=this.activeUndoTickerId),d.push([j,{workId:m,msgType:le.UpdateNode,emitEventType:this.emitEventType,workState:o}])}continue}}if(o===de.Start?this.mainEngine.unWritable():o===de.Done&&(this.mainEngine.abled(),this.lastEmtData=void 0),d.length){if(o===de.Done){const m=this.activeUndoTickerId;if(m){const M=[...f];this.mainEngine.internalMsgEmitter.emit("finalizeRequested",m,a,M,l)}}this.collectForLocalWorker(d,t)}o===de.Done&&(this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class cMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetFontStyle);x(this,"timerId")}async setTextStyle(e,t,n,i,o,a){const{bold:c,underline:l,lineThrough:u,italic:h,fontSize:d}=n;if(t.toolsType&&mye(t.toolsType)===Tr.Text){t.opt&&(c&&(t.opt.bold=c),ye.isBoolean(l)&&(t.opt.underline=l),ye.isBoolean(u)&&(t.opt.lineThrough=u),h&&(t.opt.italic=h),d&&(t.opt.fontSize=d));const g=await this.control.textEditorManager.updateTextControllerWithEffectAsync({workId:e,opt:t.opt,viewId:i,canSync:!1,canWorker:!1,requestId:o,needUndoTicker:a});return{key:e,textInfo:g}}}async collect(e){var p,m,M,v,R,b;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,bold:n,italic:i,lineThrough:o,underline:a,viewId:c,fontSize:l,requestId:u}=e,h=this.control.viewContainerManager.getView(c);if(!(h!=null&&h.displayer))return;const d=h.focusScenePath,f=[...t],g=this.serviceColloctor.storage,y={},S=this.mainEngine.now;this.mainEngine.internalMsgEmitter.emit("addUndoTicker",S,c,{render:!0,storage:!0,source:$e.AsyncSetFontStyle}),this.control.textEditorManager.UndoTickerId=S;const E=new Set,C=[];for(;f.length;){const P=f.pop();if(!P)continue;const D=P.toString(),z=this.serviceColloctor.isLocalId(D),j=z?this.serviceColloctor.transformKey(P):D;let A=D;!z&&this.serviceColloctor.isOwn(A)&&(A=this.serviceColloctor.getLocalId(A));const k=(m=(p=g==null?void 0:g[c])==null?void 0:p[d])==null?void 0:m[j];if(k){const N=k.updateNodeOpt||{};if(n&&(N.bold=n,y.bold=n==="bold"),i&&(N.italic=i,y.italic=i==="italic"),ye.isBoolean(o)&&(N.lineThrough=o,y.lineThrough=o),ye.isBoolean(a)&&(N.underline=a,y.underline=a),l&&(N.fontSize=l,y.textSize=l),k.toolsType===q.Text&&k.opt){const W=this.setTextStyle(A,ye.cloneDeep(k),N,c,u,S);E.add(A),C.push(W);continue}if(k&&A===Le&&((M=k.selectIds)!=null&&M.length))for(const W of k.selectIds){const Y=(v=this.serviceColloctor)==null?void 0:v.isLocalId(W);let Q=Y&&((R=this.serviceColloctor)==null?void 0:R.transformKey(W))||W;const ie=g[c][d][Q]||void 0;if(!Y&&((b=this.serviceColloctor)!=null&&b.isOwn(Q))&&(Q=this.serviceColloctor.getLocalId(Q)),ie&&ie.toolsType===q.Text&&ie.opt){const O=this.setTextStyle(Q,ye.cloneDeep(ie),N,c,u,S);E.add(Q),C.push(O);continue}}}}const L=[...E];if(!L.length){this.mainEngine.internalMsgEmitter.emit("cancelUndoTicker",S,c,d),this.control.textEditorManager.UndoTickerId===S&&(this.control.textEditorManager.UndoTickerId=void 0);return}this.mainEngine.internalMsgEmitter.emit("finalizeRequested",S,c,L,d);const T=await Promise.all(C);for(const P of T)if(P){const{key:D,textInfo:z}=P;z&&(z.canSync=!0,z.canWorker=!0,z.needUndoTicker=S,this.control.textEditorManager.updateForViewEdited(D,z))}Object.keys(y).length&&(this.timerId&&(clearTimeout(this.timerId),this.timerId=void 0),this.timerId=setTimeout(()=>{var P;this.timerId=void 0,(P=this.control.room)==null||P.setMemberState(y)},0))}}class lMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetPoint)}collect(e,t){var L,T,p;if(!this.serviceColloctor||!this.mainEngine)return;const{workId:n,pointMap:i,workState:o,viewId:a}=e,c=this.control.viewContainerManager.getView(a);if(!(c!=null&&c.displayer))return;if(o===de.Start)this.activeScenePath=e.scenePath||c.focusScenePath;else if(!this.activeScenePath)return;const l=e.scenePath||this.activeScenePath;this.lastEmtData={...e,scenePath:l};const u=(L=this.serviceColloctor)==null?void 0:L.storage,h=[],d=o===de.Start&&this.mainEngine.now||void 0;d&&(this.activeUndoTickerId=d,this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,a,{render:!0,storage:!0,isWritable:!0,source:$e.MethodSetPoint}));const f=n;if(!f)return;const g=f.toString(),y=this.serviceColloctor.isLocalId(g),S=y&&this.serviceColloctor.transformKey(f)||g;let E=g;!y&&this.serviceColloctor.isOwn(E)&&(E=this.serviceColloctor.getLocalId(E));const C=(p=(T=u==null?void 0:u[a])==null?void 0:T[l])==null?void 0:p[S];if(C&&E===Le&&C.selectIds){const m=C.updateNodeOpt||{};m.pointMap=i,m.workState=o;const M={workId:f,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:m,emitEventType:this.emitEventType,willRefreshSelector:!0,willSyncService:!0,viewId:a,scenePath:l,needUndoTicker:o===de.Done&&this.activeUndoTickerId||void 0};h.push([M,{workId:f,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}o===de.Start?this.mainEngine.unWritable():o===de.Done&&this.mainEngine.abled(),h.length&&(o===de.Done&&this.activeUndoTickerId&&this.mainEngine.internalMsgEmitter.emit("finalizeRequested",this.activeUndoTickerId,a,h.map(([m])=>{var M;return(M=m.workId)==null?void 0:M.toString()}).filter(Boolean),l),this.collectForLocalWorker(h,t)),o===de.Done&&(this.lastEmtData=void 0,this.activeScenePath=void 0,this.activeUndoTickerId=void 0)}}class uMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetLock)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,isLocked:n,viewId:i,requestId:o}=e,a=this.control.viewContainerManager.getView(i);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...t],u=this.serviceColloctor.storage,h=[],d=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,i,{render:!0,storage:!0,source:$e.AsyncSetLock});l.length;){const y=l.pop();if(!y)continue;const S=y.toString(),E=this.serviceColloctor.isLocalId(S),C=E?this.serviceColloctor.transformKey(y):S;let L=S;!E&&this.serviceColloctor.isOwn(L)&&(L=this.serviceColloctor.getLocalId(L));const T=(g=(f=u==null?void 0:u[i])==null?void 0:f[c])==null?void 0:g[C];if(T){const p=T.updateNodeOpt||{};p.isLocked=n;const m={workId:L,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:i,requestId:o,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(i)};h.push([m,{workId:L,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,i,h.map(([y])=>{var S;return(S=y.workId)==null?void 0:S.toString()}).filter(Boolean),c),this.collectForLocalWorker(h))}}class hMe extends gr{constructor(){super(...arguments);x(this,"lastEmtData");x(this,"emitEventType",Te.SetShapeOpt)}collect(e){var f,g;if(!this.serviceColloctor||!this.mainEngine)return;const{workIds:t,viewId:n,requestId:i,...o}=e,a=this.control.viewContainerManager.getView(n);if(!(a!=null&&a.displayer))return;const c=a.focusScenePath,l=[...t],u=this.serviceColloctor.storage,h=[],d=this.mainEngine.now;for(this.mainEngine.internalMsgEmitter.emit("addUndoTicker",d,n,{render:!0,storage:!0,source:$e.AsyncSetShapeOpt});l.length;){const y=l.pop();if(!y)continue;const S=y.toString(),E=this.serviceColloctor.isLocalId(S),C=E?this.serviceColloctor.transformKey(y):S;let L=S;!E&&this.serviceColloctor.isOwn(L)&&(L=this.serviceColloctor.getLocalId(L));const T=(g=(f=u==null?void 0:u[n])==null?void 0:f[c])==null?void 0:g[C];if(T){const p={...T.updateNodeOpt,...o,willRefresh:!0};if(T&&L===Le){const m={workId:L,msgType:le.UpdateNode,dataType:xe.Local,updateNodeOpt:p,emitEventType:this.emitEventType,willRefresh:!0,willRefreshSelector:!0,willSyncService:!0,viewId:n,requestId:i,needUndoTicker:this.control.viewContainerManager.getUndoTickerId(n)};h.push([m,{workId:L,msgType:le.UpdateNode,emitEventType:this.emitEventType}])}}}h.length&&(this.mainEngine.internalMsgEmitter.emit("finalizeRequested",d,n,h.map(([y])=>{var S;return(S=y.workId)==null?void 0:S.toString()}).filter(Boolean),c),this.collectForLocalWorker(h))}}const Fp=[Te.TranslateNode,Te.ScaleNode,Te.RotateNode,Te.SetPoint,Te.SetColorNode];class Ve{constructor(r){x(this,"builders",new Map);this.builders=new Map(r.map(e=>[e,this.build(e)]))}build(r){switch(r){case Te.TranslateNode:return new iMe;case Te.ZIndexNode:return new nMe;case Te.CopyNode:return new tMe;case Te.SetColorNode:return new rMe;case Te.DeleteNode:return new sMe;case Te.ScaleNode:return new oMe;case Te.RotateNode:return new aMe;case Te.SetFontStyle:return new cMe;case Te.SetPoint:return new lMe;case Te.SetLock:return new uMe;case Te.SetShapeOpt:return new hMe}}getBuilder(r){return this.builders.get(r)}registerForMainEngine(r,e){return this.builders.forEach(t=>{t&&t.registerForMainEngine(r,e)}),this}destroy(){this.builders.forEach(r=>{r&&r.destroy()}),this.builders.clear()}async pause(){return await Promise.all([...this.builders.values()].map(r=>r==null?void 0:r.pause())),this}async finishActiveContinuousMethods(r,e){return(await Promise.all(Fp.map(n=>{var i;return(i=this.builders.get(n))==null?void 0:i.pause(r,e)}))).filter(n=>n!==void 0)}abortActiveContinuousMethods(r,e){var n;let t=!1;return Fp.forEach(i=>{var o;t=((o=this.builders.get(i))==null?void 0:o.abort(r,e))||t}),t&&((n=tt.InternalMsgEmitter)==null||n.emit(Te.ActiveMethod,!1,r)),t}recover(r,e){return this.builders.forEach(t=>{t&&t.recover(r,e)}),this}discardRecovery(r,e){return this.builders.forEach(t=>{t==null||t.discardRecovery(r,e)}),this}static emitMethod(r,e,t){gr.dispatch(r,e,t)}static activeListener(r){tt.InternalMsgEmitter.on(Te.ActiveMethod,r)}static unmountActiveListener(r){tt.InternalMsgEmitter.off(Te.ActiveMethod,r)}}const dMe="xiaomi-android-webview-offscreen-v1",fMe=new Set(["offscreenTransfer+webgl2","offscreenTransfer+webgl","offscreenTransfer+canvas2d","imageBitmap+webgl2","imageBitmap+webgl","imageBitmap+canvas2d","mainThread+canvas2d"]);function q0(s){return typeof s=="string"&&fMe.has(s)}function gMe(s){if(s==="mainThread+canvas2d")return{renderMode:"main-thread",contextType:"2d"};const[r,e]=s.split("+");return{renderMode:r==="offscreenTransfer"?"worker-offscreen-transfer":"worker-image-bitmap",contextType:e==="canvas2d"?"2d":e}}function Ht(s,r){return s==="main-thread"?"mainThread+canvas2d":`${s==="worker-offscreen-transfer"?"offscreenTransfer":"imageBitmap"}+${r==="2d"?"canvas2d":r}`}function pMe(s,r){return!!(s.fullWorkerUrl&&(r||s.subWorkerUrl))}const mMe={worker:!1,offscreenCanvas:!1,workerUrl:!1,offscreenTransfer:!1,imageBitmap:!1,webgl2:!1,webgl:!1},yMe=new Set(["__proto__","constructor","prototype"]),Hl=64;function wd(s){const e=s.replace(/_/g,".").split(".");if(!(e.length<1||e.length>4||e.some(t=>!/^\d+$/.test(t)||Number(t)>99999)||Number(e[0])<1))return e.map(t=>String(Number(t))).join(".")}function yn(s,r){const e=s.match(r);return e?wd(e[1]):void 0}function Z0(s,r){const e=s.split(".").map(Number),t=r.split(".").map(Number);for(let n=0;n<t.length;n+=1){const i=(e[n]??0)-t[n];if(i!==0)return i}return 0}function Sd(s=typeof navigator>"u"?"":navigator.userAgent){if(yn(s,/\bArkWeb\/(\d+(?:\.\d+)*)/i)){const a=yn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);return a?{kind:"harmonyArkWeb",version:a}:void 0}if(/\bAndroid\b/i.test(s)&&(/;\s*wv\)/i.test(s)||/\bVersion\/4\.0\b/i.test(s)&&/\bChrome\/\d+/i.test(s))){const c=yn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);return c?{kind:"androidWebView",version:c}:void 0}const e=yn(s,/\b(?:iPhone|iPad|iPod).*?\bOS\s+(\d+(?:[_.]\d+)*)/i);if(e)return{kind:"iosWebView",version:e};const t=yn(s,/\bEdg(?:A)?\/(\d+(?:\.\d+)*)/i);if(t)return{kind:"web",browser:"edge",version:t};const n=yn(s,/\bChrome\/(\d+(?:\.\d+)*)/i);if(n)return{kind:"web",browser:"chrome",version:n};const i=yn(s,/\bFirefox\/(\d+(?:\.\d+)*)/i);if(i)return{kind:"web",browser:"firefox",version:i};const o=yn(s,/\bVersion\/(\d+(?:\.\d+)*).*\bSafari\//i);return o?{kind:"web",browser:"safari",version:o}:void 0}function vMe(s,r=Sd(s)){return(r==null?void 0:r.kind)!=="androidWebView"||Z0(r.version,"77")>0?!1:/\b(?:xiaomi|miui|mi[\s_-]*8)\b/i.test(s)}function Td(s){if(!s||typeof s!="object"||Array.isArray(s))return!1;try{const r=Object.getPrototypeOf(s);return r===Object.prototype||r===null}catch{return!1}}function K0(s,r){if(!Number.isInteger(s))return!1;switch(r){case"renderMode":return s===Ar.OffscreenTransfer||s===Ar.ImageBitmap||s===Ar.MainThread;case"canvasContext":return s===Ha.WebGL;case"maskTextureFormat":return s===rh.SingleChannelTexture;case"maskTextureUpload":return s===nh.TextureSubImage2D;case"fontFaceFallback":return s===Js.RefreshTextRender}}function MMe(s,r,e,t=[]){if(!Td(r))return;const n=Object.entries(r);n.length>Hl&&t.push(`worker blacklist exceeds ${Hl} rules`);let i;for(const[o,a]of n.slice(0,Hl)){if(yMe.has(o))continue;const c=wd(o);if(!c||!K0(a,e)){t.push(`invalid ${e} blacklist rule: ${o}`);continue}Z0(s,c)<=0&&(i=i===void 0?a:Math.max(i,a))}return i}function wMe(s,r){var e;return r.kind==="web"?(e=s==null?void 0:s.web)==null?void 0:e[r.browser]:s==null?void 0:s[r.kind]}function Ps(s,r,e){const t=[];if(!Td(s))return{issues:t};if(!r)return t.push(`${e} blacklist runtime version unavailable`),{issues:t};const n=wMe(s,r);return n?{level:MMe(r.version,n,e,t),runtime:r,issues:t}:{runtime:r,issues:t}}function Vn(s,r,e){const t={};for(const n of[s,r])if(Td(n))for(const[i,o]of Object.entries(n)){const a=wd(i);!a||!K0(o,e)||(t[a]=Math.max(t[a]??0,o))}return Object.keys(t).length>0?t:void 0}function Ts(s,r,e){var i,o,a,c,l,u,h,d;const t={chrome:Vn((i=s==null?void 0:s.web)==null?void 0:i.chrome,(o=r==null?void 0:r.web)==null?void 0:o.chrome,e),edge:Vn((a=s==null?void 0:s.web)==null?void 0:a.edge,(c=r==null?void 0:r.web)==null?void 0:c.edge,e),firefox:Vn((l=s==null?void 0:s.web)==null?void 0:l.firefox,(u=r==null?void 0:r.web)==null?void 0:u.firefox,e),safari:Vn((h=s==null?void 0:s.web)==null?void 0:h.safari,(d=r==null?void 0:r.web)==null?void 0:d.safari,e)},n={androidWebView:Vn(s==null?void 0:s.androidWebView,r==null?void 0:r.androidWebView,e),iosWebView:Vn(s==null?void 0:s.iosWebView,r==null?void 0:r.iosWebView,e),harmonyArkWeb:Vn(s==null?void 0:s.harmonyArkWeb,r==null?void 0:r.harmonyArkWeb,e),web:Object.values(t).some(Boolean)?t:void 0};return Object.fromEntries(Object.entries(n).filter(([,f])=>f!==void 0))}function SMe(s,r=typeof navigator>"u"?"":navigator.userAgent){const e=Sd(r);return Ps(s,e,"fontFaceFallback").level===Js.RefreshTextRender}function Up(s){var r,e;if(typeof OffscreenCanvas!="function")return!1;try{const t=new OffscreenCanvas(1,1).getContext(s);return t?((e=(r=t.getExtension)==null?void 0:r.call(t,"WEBGL_lose_context"))==null||e.loseContext(),!0):!1}catch{return!1}}function TMe(){if(typeof OffscreenCanvas!="function")return!1;try{return!!new OffscreenCanvas(1,1).getContext("2d")}catch{return!1}}function CMe(){return typeof OffscreenCanvas=="function"&&typeof OffscreenCanvas.prototype.transferToImageBitmap=="function"}function IMe(s=!0){const r=typeof OffscreenCanvas=="function",e=typeof CanvasRenderingContext2D=="function"&&typeof CanvasRenderingContext2D.prototype.drawImage=="function";return{worker:typeof Worker=="function",offscreenCanvas:r,workerUrl:s,offscreenTransfer:typeof HTMLCanvasElement=="function"&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen=="function",imageBitmap:r&&TMe()&&CMe()&&e,webgl2:Up("webgl2"),webgl:Up("webgl")}}function bMe(s,r,e,t){return s==="main-thread"||r==="2d"||e===Ha.WebGL?"2d":r==="webgl"?t.webgl?"webgl":"2d":t.webgl2?"webgl2":t.webgl?"webgl":"2d"}function EMe(s){const r=s.userAgent??(typeof navigator>"u"?"":navigator.userAgent),e=s.capabilities??(s.useWorker==="mainThread"?mMe:IMe(s.workerUrl)),t=Sd(r),n=[],i=Ps(s.workerRenderModeBlacklist,t,"renderMode"),o=Ps(s.workerCanvasContextBlacklist,t,"canvasContext"),a=Ps(s.workerMaskTextureFormatBlacklist,t,"maskTextureFormat"),c=Ps(s.workerMaskTextureUploadBlacklist,t,"maskTextureUpload");n.push(...i.issues,...o.issues,...a.issues,...c.issues);let l=i.level;const u=o.level,h=a.level,d=c.level;vMe(r,t)&&(l=Math.max(l||0,Ar.OffscreenTransfer),n.push(`compatibility-policy:${dMe}:skip-offscreen-transfer`));const f=(y,S)=>({renderMode:y,mainThreadRenderMode:l===Ar.MainThread?"readback":"normal",contextType:bMe(y,s.requestedContextType,u||void 0,e),reason:S,capabilities:e,runtime:t,effectiveRenderModeLevel:l,effectiveContextLevel:u,effectiveMaskTextureFormatLevel:h,effectiveMaskTextureUploadLevel:d,issues:n});if(s.useWorker==="mainThread")return f("main-thread","use-worker-main-thread");if(!e.worker||!e.offscreenCanvas||!e.workerUrl)return f("main-thread","worker-capability-missing");if(l!==void 0&&l>=Ar.ImageBitmap)return f("main-thread","render-mode-blacklist");if(!(!s.useSimple||l!==void 0&&l>=Ar.OffscreenTransfer)&&e.offscreenTransfer)return f("worker-offscreen-transfer","default-offscreen-transfer");if(e.imageBitmap){const y=l===Ar.OffscreenTransfer?"render-mode-blacklist":s.useSimple?"worker-capability-missing":"use-simple-false";return f("worker-image-bitmap",y)}return f("main-thread","image-bitmap-unavailable")}const xMe=500;function Cd(s){const r=Object.fromEntries(Object.entries(s).filter(([,e])=>e!==void 0));return Object.keys(r).length?` details=${JSON.stringify(r)}`:""}function RMe(s){return`[Appliance]: [${s.category}] stage=${s.stage} viewId=${s.viewId} generation=${s.generation??"pending"}${Cd(s.details||{})}`}function kMe(s){return`[Appliance]: [view-init] status=success viewId=${s.viewId} generation=${s.generation??"pending"} state=init-reconcile currentStage=ready${Cd(s.details||{})}`}class AMe{constructor(r,e={}){x(this,"delayMs");x(this,"schedule");x(this,"cancel");x(this,"states",new Map);x(this,"destroyed",!1);this.emit=r,this.delayMs=e.delayMs??xMe;const t=e.schedule,n=e.cancel;this.schedule=t?(i,o)=>t(i,o):(i,o)=>globalThis.setTimeout(i,o),this.cancel=n?i=>n(i):i=>globalThis.clearTimeout(i)}record(r){if(this.destroyed)return;r.restartView&&!this.hasViewLifecycle(r.viewId,r.lifecycleGeneration)&&this.cancelView(r.viewId);const e=r.viewId;let t=this.states.get(e);if(t&&r.generation!==void 0&&t.generation!==void 0&&r.generation!==t.generation&&(this.clearState(e,t),t=void 0),!t){const n={viewId:r.viewId,generation:r.generation,lifecycleGeneration:r.lifecycleGeneration,currentCategory:r.category,currentStage:r.stage,details:{},status:"pending"};t=n,this.states.set(e,n),this.updateState(n,r),this.scheduleState(e,n);return}this.updateState(t,r),this.scheduleState(e,t)}completeView(r){if(this.destroyed)return;this.record({category:"init-reconcile",viewId:r.viewId,generation:r.generation,stage:"ready",details:r.details});const e=this.states.get(r.viewId);e&&(r.generation!==void 0&&(e.generation=r.generation),e.status="success")}cancelView(r){const e=this.states.get(r);e&&this.clearState(r,e)}destroy(){if(!this.destroyed){this.destroyed=!0;for(const[r,e]of this.states)this.clearState(r,e)}}updateState(r,e){r.generation=e.generation??r.generation,r.lifecycleGeneration=e.lifecycleGeneration??r.lifecycleGeneration,r.currentCategory=e.category,r.currentStage=e.stage,r.details={...e.details||{}}}scheduleState(r,e){e.timer!==void 0&&(this.cancel(e.timer),e.timer=void 0);try{e.timer=this.schedule(()=>{this.states.get(r)===e&&(e.timer=void 0,this.emitSummary(e),e.status==="success"&&this.states.get(r)===e&&this.states.delete(r))},this.delayMs)}catch(t){throw this.states.get(r)===e&&this.states.delete(r),t}}clearState(r,e){e.timer!==void 0&&(this.cancel(e.timer),e.timer=void 0),this.states.get(r)===e&&this.states.delete(r)}hasViewLifecycle(r,e){var t;return e===void 0?!1:((t=this.states.get(r))==null?void 0:t.lifecycleGeneration)===e}formatSummary(r){return`[Appliance]: [view-init] status=${r.status} viewId=${r.viewId} generation=${r.generation??"pending"} state=${r.currentCategory} currentStage=${r.currentStage}${Cd(r.details)}`}emitSummary(r){try{this.emit(this.formatSummary(r))}catch{}}}const Ql=200;function PMe(s){return s instanceof TouchEvent||s instanceof window.TouchEvent||(s==null?void 0:s.touches)&&(s==null?void 0:s.touches.length)||(s==null?void 0:s.changedTouches)&&(s==null?void 0:s.changedTouches.length)}function DMe(s){return PMe(s)&&(s.touches&&s.touches.length===1||s.changedTouches&&s.changedTouches.length===1)}function LMe(s){return s.touches&&s.touches.length?{x:s.touches[0].pageX,y:s.touches[0].pageY}:s.changedTouches&&s.changedTouches.length?{x:s.changedTouches[0].pageX,y:s.changedTouches[0].pageY}:{x:s.pageX,y:s.pageY}}function NMe(s){const r=s.touches&&s.touches[0]||s.changedTouches&&s.changedTouches[0]||s;return{x:r.clientX,y:r.clientY}}class Xs{constructor(r){x(this,"_logger");x(this,"initLogAggregator");x(this,"pendingArgsByChannel",new Map);x(this,"flushTimerByChannel",new Map);this._logger=r,this.initLogAggregator=new AMe(e=>this.emit("info",[e]))}emit(r,e){try{if(this._logger){this._logger[r](...e);return}(r==="info"?console.info:r==="warn"?console.warn:console.error)(...e)}catch{}}flush(r,e){const t=this.pendingArgsByChannel.get(e)||null;this.flushTimerByChannel.delete(e),this.pendingArgsByChannel.delete(e),t&&this.emit(r,t)}debounce(r,e,t,n){this.pendingArgsByChannel.set(e,t);const i=this.flushTimerByChannel.get(e);i!=null&&clearTimeout(i),this.flushTimerByChannel.set(e,setTimeout(()=>this.flush(r,e),n))}error(...r){this.emit("error",r)}info(...r){this.emit("info",r)}warn(...r){this.emit("warn",r)}errorDebounced(r,...e){this.debounce("error",r,e,Ql)}infoDebounced(r,...e){this.debounce("info",r,e,Ql)}warnDebounced(r,...e){this.debounce("warn",r,e,Ql)}recordInitLogProgress(r){try{this.initLogAggregator.record(r)}catch{}}completeInitViewLogs(r){try{this.initLogAggregator.completeView(r)}catch{}}cancelInitViewLogs(r){try{this.initLogAggregator.cancelView(r)}catch{}}destroy(){this.initLogAggregator.destroy();for(const r of this.flushTimerByChannel.keys()){const e=this.flushTimerByChannel.get(r);e!==void 0&&clearTimeout(e)}this.flushTimerByChannel.clear(),this.pendingArgsByChannel.clear()}}function pt(s,r){try{const e=s;if(e.recordInitLogProgress){e.recordInitLogProgress(r);return}s.info(RMe(r))}catch{}}function OMe(s,r){try{const e=s;if(e.completeInitViewLogs){e.completeInitViewLogs(r);return}s.info(kMe(r))}catch{}}function ya(s,r){var e;try{(e=s==null?void 0:s.cancelInitViewLogs)==null||e.call(s,r)}catch{}}function zMe(s){return s===Be.Stroke?Be.Normal:s}function yi(s){const{pencilOptions:r}=s,e=zMe(r.strokeType);return{strokeColor:r.strokeColor,thickness:r.thickness,isOpacity:r.isOpacity,zIndex:r.zIndex,scale:r.scale,rotate:r.rotate,translate:r.translate,eraserlines:r.eraserlines,strokeType:e,lineCap:e===Be.Normal?void 0:r.lineCap,lineDash:e===Be.Normal?void 0:r.lineDash}}function X0(s){return[s.start[0],s.start[1],0,s.end[0],s.end[1],0]}function jc(s){const{minX:r,minY:e,maxX:t,maxY:n}=s.bbox;return[r,e,0,t,n,0]}function BMe(s){const{minX:r,minY:e,maxX:t,maxY:n}=s.bbox;return[r,e,0,t,e,0,t,n,0,r,n,0]}const jMe=(s,r)=>({toolsType:q.Straight,opt:yi(r),op:X0(s)}),FMe=(s,r)=>({toolsType:q.Arrow,opt:yi(r),op:X0(s)}),UMe=(s,r)=>({toolsType:q.Rectangle,opt:{...yi(r),fillColor:"transparent"},op:BMe(s)}),WMe=(s,r)=>({toolsType:q.Ellipse,opt:{...yi(r),fillColor:"transparent"},op:jc(s)}),VMe=(s,r)=>({toolsType:q.Polygon,opt:{...yi(r),fillColor:"transparent",vertices:3,shapeType:Zt.Triangle},op:jc(s)}),$Me=(s,r)=>({toolsType:q.Polygon,opt:{...yi(r),fillColor:"transparent",vertices:4,shapeType:Zt.Rhombus},op:jc(s)}),YMe=(s,r)=>({toolsType:q.Star,opt:{...yi(r),fillColor:"transparent",vertices:10,innerVerticeStep:2,innerRatio:.4,shapeType:Zt.Pentagram},op:jc(s)}),$n={straight:jMe,arrow:FMe,rectangle:UMe,ellipse:WMe,triangle:VMe,rhombus:$Me,star:YMe};function GMe(s){return xt(s.op)}function Rn(s){if(!s.length)return s;const[r,e]=s[0],[t,n]=s[s.length-1];return r===t&&e===n?s:[...s,s[0]]}function HMe(s,r){const e=Rn(s).slice(0,-1),t=(r%e.length+e.length)%e.length;return Rn(e.slice(t).concat(e.slice(0,t)))}function Id(s){return[...s].reverse()}function Ri(s,r,e,t,n){const i=[];for(let o=0;o<n;o++){const a=HMe(e,o),c=Id(a);i.push({id:`${r}-cw-${o}`,semanticKind:s,points:a,threshold:t},{id:`${r}-ccw-${o}`,semanticKind:s,points:c,threshold:t})}return i}function QMe(s,r,e,t){const n=[];return e.forEach((i,o)=>{n.push({id:`${r}-forward-${o}`,semanticKind:s,points:i,threshold:t},{id:`${r}-reverse-${o}`,semanticKind:s,points:Id(i),threshold:t})}),n}const Wp=[[0,.5],[.25,.5],[.5,.5],[.75,.5],[1,.5]],qMe=[[.05,.5],[.3,.5],[.55,.5],[.78,.5],[1,.5],[.8,.32],[1,.5],[.8,.68]],ZMe=[[.05,.5],[.3,.5],[.55,.5],[.78,.5],[1,.5],[.8,.68],[1,.5],[.8,.32]],KMe=Rn([[.15,.2],[.85,.2],[.85,.8],[.15,.8]]),XMe=Rn([[.5,.12],[.88,.82],[.12,.82]]),JMe=Rn([[.5,.08],[.92,.5],[.5,.92],[.08,.5]]),_Me=Rn([[.5,.04],[.62,.34],[.95,.36],[.68,.56],[.78,.9],[.5,.7],[.22,.9],[.32,.56],[.05,.36],[.38,.34]]),ewe=Rn([[.5,.04],[.74,.88],[.08,.34],[.92,.34],[.26,.88]]),twe=Array.from({length:24},(s,r)=>{const e=Math.PI*2*r/24;return[.5+Math.cos(e)*.42,.5+Math.sin(e)*.3]}),Yn=[{id:"straight-base",semanticKind:"straight",points:Wp,threshold:.72},{id:"straight-reverse",semanticKind:"straight",points:Id(Wp),threshold:.72},...QMe("arrow","arrow",[qMe,ZMe],.71),...Ri("rectangle","rectangle",KMe,.68,4),...Ri("ellipse","ellipse",Rn(twe),.64,12),...Ri("triangle","triangle",XMe,.68,3),...Ri("rhombus","rhombus",JMe,.66,4),...Ri("star","star",_Me,.7,5),...Ri("star","pentagram",ewe,.68,5)];function Cs(s,r,e,t){const{metrics:n}=r;return n.closureRatio>.24||n.cornerCount<e||n.cornerCount>t?null:s}const rwe=[{kind:"straight",templates:Yn.filter(s=>s.semanticKind==="straight"),postProcessor(s,r){const{metrics:e}=r;return e.bboxDiagonal<8||e.closureRatio<.75||e.straightness<.94&&s.score<.8?null:s},mapper:$n.straight,enabledInV1:!0},{kind:"arrow",templates:Yn.filter(s=>s.semanticKind==="arrow"),postProcessor(s,r){const{metrics:e}=r;return e.closureRatio<.12||e.cornerCount<4||e.cornerCount>7||e.straightness>.93?null:s.score>=Math.max(s.threshold,.71)?s:null},mapper:$n.arrow,enabledInV1:!0},{kind:"rectangle",templates:Yn.filter(s=>s.semanticKind==="rectangle"),postProcessor(s,r){const e=Cs(s,r,4,6);return!e||r.metrics.bboxCornerCloseness>.15||r.metrics.bboxCornerCloseness>=r.metrics.diamondCloseness?null:e},mapper:$n.rectangle,enabledInV1:!0},{kind:"ellipse",templates:Yn.filter(s=>s.semanticKind==="ellipse"),postProcessor(s,r){const e=Cs(s,r,6,12);return!e||r.metrics.radialVariance>.5?null:e},mapper:$n.ellipse,enabledInV1:!0},{kind:"triangle",templates:Yn.filter(s=>s.semanticKind==="triangle"),postProcessor(s,r){return Cs(s,r,3,4)},mapper:$n.triangle,enabledInV1:!0},{kind:"rhombus",templates:Yn.filter(s=>s.semanticKind==="rhombus"),postProcessor(s,r){const e=Cs(s,r,4,5);return!e||r.metrics.diamondCloseness>=r.metrics.bboxCornerCloseness?null:e},mapper:$n.rhombus,enabledInV1:!0},{kind:"star",templates:Yn.filter(s=>s.semanticKind==="star"),postProcessor(s,r){const e=s.templateId.startsWith("pentagram"),t=Cs(s,r,e?5:8,12);if(!t)return null;if(e){if(r.metrics.bboxCornerCloseness<.22||r.metrics.angleVariance<35)return null}else if(r.metrics.radialVariance<.34)return null;return t},mapper:$n.star,enabledInV1:!0}];function bd(){return rwe}const nwe=64,Yu=250;function _r(s,r){const e=s[0]-r[0],t=s[1]-r[1];return Math.hypot(e,t)}function iwe(s){const r=[];for(const e of s){const t=r[r.length-1];(!t||_r(t,e)>.5)&&r.push(e)}return r}function J0(s){let r=0;for(let e=1;e<s.length;e++)r+=_r(s[e-1],s[e]);return r}function _0(s){let r=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,t=Number.NEGATIVE_INFINITY,n=Number.NEGATIVE_INFINITY;for(const[i,o]of s)r=Math.min(r,i),e=Math.min(e,o),t=Math.max(t,i),n=Math.max(n,o);return{minX:r,minY:e,maxX:t,maxY:n}}function swe(s,r=nwe){if(s.length<=1)return s;const e=J0(s)/Math.max(r-1,1),t=[s[0]];let n=0,i=s[0],o=1;const a=[...s];for(;o<a.length;){const c=a[o],l=_r(i,c);if(l===0){o++;continue}if(n+l>=e){const u=(e-n)/l,h=[i[0]+u*(c[0]-i[0]),i[1]+u*(c[1]-i[1])];t.push(h),a.splice(o,0,h),n=0,i=h,o++}else n+=l,i=c,o++}for(;t.length<r;)t.push(a[a.length-1]);return t}function Fc(s){const r=s.reduce((e,t)=>[e[0]+t[0],e[1]+t[1]],[0,0]);return[r[0]/s.length,r[1]/s.length]}function owe(s,r){const e=Fc(s),t=Math.cos(r),n=Math.sin(r);return s.map(([i,o])=>{const a=i-e[0],c=o-e[1];return[a*t-c*n+e[0],a*n+c*t+e[1]]})}function awe(s){const r=Fc(s);return Math.atan2(r[1]-s[0][1],r[0]-s[0][0])}function cwe(s,r=Yu){const e=_0(s),t=Math.max(e.maxX-e.minX,1),n=Math.max(e.maxY-e.minY,1);return s.map(([i,o])=>[(i-e.minX)/t*r,(o-e.minY)/n*r])}function lwe(s){const r=Fc(s);return s.map(([e,t])=>[e-r[0],t-r[1]])}function eM(s){const r=swe(s),e=owe(r,-awe(r)),t=cwe(e);return lwe(t)}function uwe(s,r){let e=0;const t=Math.min(s.length,r.length);for(let n=0;n<t;n++)e+=_r(s[n],r[n]);return e/Math.max(t,1)}function hwe(s,r,e){const[t,n]=s,[i,o]=r,[a,c]=e,l=Math.abs((c-o)*t-(a-i)*n+a*o-c*i),u=Math.hypot(c-o,a-i)||1;return l/u}function Gu(s,r){if(s.length<=2)return s;let e=0,t=0;for(let o=1;o<s.length-1;o++){const a=hwe(s[o],s[0],s[s.length-1]);a>e&&(e=a,t=o)}if(e<=r)return[s[0],s[s.length-1]];const n=Gu(s.slice(0,t+1),r),i=Gu(s.slice(t),r);return n.slice(0,-1).concat(i)}function dwe(s){if(s.length<3)return[];const r=[];for(let e=0;e<s.length;e++){const t=s[(e-1+s.length)%s.length],n=s[e],i=s[(e+1)%s.length],o=[t[0]-n[0],t[1]-n[1]],a=[i[0]-n[0],i[1]-n[1]],c=o[0]*a[0]+o[1]*a[1],l=Math.hypot(o[0],o[1])*Math.hypot(a[0],a[1])||1,u=Math.acos(Math.max(-1,Math.min(1,c/l)));r.push(u*180/Math.PI)}return r}function fwe(s){const r=_0(s),e=Math.max(r.maxX-r.minX,1),t=Math.max(r.maxY-r.minY,1),n=Math.hypot(e,t)||1,i=J0(s),o=_r(s[0],s[s.length-1]),a=_r(s[0],s[s.length-1]),c=a/n,l=n*.045,h=c<.24&&s.length>2?s.slice(0,_r(s[0],s[s.length-1])<.5?-1:s.length):s,d=Gu(h,l),f=dwe(d),g=f.length>0?Math.max(...f.map(M=>Math.abs(M-90))):90,y=d.map(([M,v])=>[(M-r.minX)/e,(v-r.minY)/t]),S=[[0,0],[1,0],[1,1],[0,1]],E=[[.5,0],[1,.5],[.5,1],[0,.5]],C=(M,v)=>M.reduce((R,b)=>{const P=Math.min(...v.map(D=>_r(b,D)));return R+P},0)/Math.max(M.length,1),L=Fc(s),T=s.map(M=>_r(M,L)),p=T.reduce((M,v)=>M+v,0)/Math.max(T.length,1),m=p>0?T.reduce((M,v)=>M+Math.abs(v-p)/p,0)/Math.max(T.length,1):0;return{bbox:r,metrics:{pathLength:i,chordLength:o,straightness:o/Math.max(i,1),closureDistance:a,closureRatio:c,bboxWidth:e,bboxHeight:t,bboxDiagonal:n,aspectRatio:e/t,cornerCount:Math.max(0,d.length),angleVariance:g,radialVariance:m,bboxCornerCloseness:C(y,S),diamondCloseness:C(y,E)}}}function gwe(s){return s.map(r=>({template:r,normalized:eM(r.points)}))}const pwe=gwe(bd().flatMap(s=>s.templates));function mwe(s){const r=iwe(s.rawPoints);if(r.length<2)return null;const{bbox:e,metrics:t}=fwe(r);return{rawPoints:s.rawPoints,points:r,pencilOptions:s.pencilOptions,viewId:s.viewId,scenePath:s.scenePath,start:r[0],end:r[r.length-1],bbox:e,metrics:t}}function ywe(s){const r=eM(s.points),e=new Map;for(const{template:t,normalized:n}of pwe){const i=uwe(r,n),o=Math.max(0,1-i/(.5*Math.sqrt(2*Yu*Yu))),a={kind:t.semanticKind,templateId:t.id,threshold:t.threshold||.7,distance:i,score:o},c=e.get(t.semanticKind);(!c||a.score>c.score)&&e.set(t.semanticKind,a)}return[...e.values()].sort((t,n)=>n.score-t.score)}function vwe(s){const r=bd(),e=ywe(s);if(s.metrics.bboxDiagonal>=8&&s.metrics.straightness>.975&&s.metrics.closureRatio>.75){const n=e.find(i=>i.kind==="straight")||{templateId:"straight-heuristic",score:.99,threshold:.72};return{kind:"straight",score:n.score,threshold:n.threshold,recognized:!0,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:n.templateId,metrics:s.metrics,candidates:e}}for(const n of e){const i=r.find(a=>a.kind===n.kind);if(!i||n.score<n.threshold)continue;const o=i.postProcessor?i.postProcessor(n,s):n;if(o)return{kind:i.kind,score:o.score,threshold:o.threshold,recognized:!0,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:o.templateId,metrics:s.metrics,candidates:e}}const t=e[0];return{kind:"none",score:(t==null?void 0:t.score)||0,threshold:(t==null?void 0:t.threshold)||1,recognized:!1,bbox:s.bbox,start:s.start,end:s.end,points:s.points,templateId:t==null?void 0:t.templateId,metrics:s.metrics,candidates:e}}function Mwe(s){return mwe(s)}function wwe(s){return vwe(s)}function Vp(s,r){if(!s.recognized||s.kind==="none")return null;const e=bd().find(t=>t.kind===s.kind);return(e==null?void 0:e.mapper(s,r))||null}const Swe="__netless_appliance_plugin_markmap_runtime__";function Twe(){return globalThis}function Cwe(){return Twe()[Swe]}function Iwe(){return new Error('Markmap runtime is not registered. Install "markmap-lib", "markmap-view", and "mermaid", then import "@netless/appliance-plugin/markmap" before using insertMarkmap/updateMarkmap.')}function tM(){const s=Cwe();if(!s)throw Iwe();return s}function mr(){const s=new Error("Font database operation aborted");return s.name="AbortError",s}const Xn=class Xn{constructor(){x(this,"fontDB");x(this,"FONT_DB_NAME","__APPLIANCE_PLUGIN_FONT_DB");x(this,"FONT_STORE_NAME","fonts");x(this,"FONT_DB_VERSION",1)}static getInstance(){return Xn.instance||(Xn.instance=new Xn),Xn.instance}async initFontDB(r){if(r!=null&&r.aborted)throw mr();return this.fontDB?this.fontDB:new Promise((e,t)=>{let n=!1;const i=()=>{r==null||r.removeEventListener("abort",a)},o=l=>{n||(n=!0,i(),l())},a=()=>o(()=>t(mr())),c=indexedDB.open(this.FONT_DB_NAME,this.FONT_DB_VERSION);r==null||r.addEventListener("abort",a,{once:!0}),c.onerror=()=>o(()=>t(new Error(`Failed to open font database: ${c.error}`))),c.onsuccess=()=>{const l=c.result;if(n||r!=null&&r.aborted){l.close(),n||o(()=>t(mr()));return}o(()=>{this.fontDB=l,e(l)})},c.onupgradeneeded=l=>{const u=l.target.result;u.objectStoreNames.contains(this.FONT_STORE_NAME)||u.createObjectStore(this.FONT_STORE_NAME,{keyPath:"fontFamily"}).createIndex("url","url",{unique:!1})}})}async getFontFromDB(r,e,t){try{if(t!=null&&t.aborted||(this.fontDB||(this.fontDB=await this.initFontDB(t)),t!=null&&t.aborted))throw mr();return new Promise((n,i)=>{const o=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly"),c=o.objectStore(this.FONT_STORE_NAME).get(r);let l=!1,u=null;const h=()=>{t==null||t.removeEventListener("abort",f)},d=g=>{l||(l=!0,h(),g())},f=()=>{try{o.abort()}catch{}d(()=>i(mr()))};t==null||t.addEventListener("abort",f,{once:!0}),c.onsuccess=()=>{c.result&&c.result.buffer&&(!e||c.result.url===e)?u=c.result.buffer:u=null},c.onerror=()=>d(()=>i(c.error)),o.onerror=()=>d(()=>i(o.error||c.error)),o.onabort=()=>d(()=>i(o.error||mr())),o.oncomplete=()=>d(()=>n(u)),t!=null&&t.aborted&&f()})}catch(n){if(t!=null&&t.aborted)throw n;return console.error(`Failed to get font from database for ${r}:`,n),null}}async saveFontToDB(r,e,t,n){try{if(n!=null&&n.aborted||(this.fontDB||(this.fontDB=await this.initFontDB(n)),n!=null&&n.aborted))throw mr();return new Promise((i,o)=>{const a=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite"),c=a.objectStore(this.FONT_STORE_NAME),l={fontFamily:r,url:e,buffer:t,timestamp:Date.now()},u=c.put(l);let h=!1;const d=()=>{n==null||n.removeEventListener("abort",g)},f=y=>{h||(h=!0,d(),y())},g=()=>{try{a.abort()}catch{}f(()=>o(mr()))};n==null||n.addEventListener("abort",g,{once:!0}),u.onsuccess=()=>{},u.onerror=()=>f(()=>o(u.error)),a.onerror=()=>f(()=>o(a.error||u.error)),a.onabort=()=>f(()=>o(a.error||mr())),a.oncomplete=()=>f(()=>i(!0)),n!=null&&n.aborted&&g()})}catch(i){if(n!=null&&n.aborted)throw i;return console.error(`Failed to save font to database for ${r}:`,i),!1}}async clearFontCache(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((r,e)=>{const i=this.fontDB.transaction([this.FONT_STORE_NAME],"readwrite").objectStore(this.FONT_STORE_NAME).clear();i.onsuccess=()=>{r(!0)},i.onerror=()=>{e(i.error)}})}catch(r){return console.error("Failed to clear font cache:",r),!1}}async getFontCacheStatus(){try{return this.fontDB||(this.fontDB=await this.initFontDB()),new Promise((r,e)=>{const i=this.fontDB.transaction([this.FONT_STORE_NAME],"readonly").objectStore(this.FONT_STORE_NAME).getAll();i.onsuccess=()=>{const o=i.result||[],a=o.reduce((c,l)=>c+(l.buffer?l.buffer.byteLength:0),0);r({count:o.length,totalSize:a})},i.onerror=()=>{e(i.error)}})}catch(r){return console.error("Failed to get font cache status:",r),{count:0,totalSize:0}}}};x(Xn,"instance");let Hu=Xn;const bwe=3e3;function ta(s){const r=new Error(s);return r.name="AbortError",r}class Ewe{constructor(r){x(this,"control");x(this,"getFullWorker");x(this,"getSubWorker");x(this,"indexDBUtils",Hu.getInstance());x(this,"fontFaceWorkerResolveMap",new Map);x(this,"fontFaceLoadGeneration",0);x(this,"activeFontFaceAttempt");x(this,"lastFontFacesAlreadyReady",!1);x(this,"documentFontsReadyLogged",!1);x(this,"documentFontsReadyWaiters",new Set);this.control=r.control,this.getFullWorker=r.getFullWorker,this.getSubWorker=r.getSubWorker}destroy(){this.fontFaceLoadGeneration+=1;const r=this.activeFontFaceAttempt;this.activeFontFaceAttempt=void 0,r&&!r.settled&&(r.settled=!0,r.timer&&clearTimeout(r.timer),r.controller.abort(),r.resolve({status:"timeout"}));for(const e of this.documentFontsReadyWaiters)e.cancel();this.documentFontsReadyWaiters.clear();for(const e of[...this.fontFaceWorkerResolveMap.keys()])this.resolveFontFaceWorkerRequest(e,!1,!0);this.lastFontFacesAlreadyReady=!1,this.documentFontsReadyLogged=!1}get Logger(){return this.control.logger}async waitDocumentFontsReady(r,e=bwe,t){var n;t!=null&&t.aborted||typeof document>"u"||!((n=document.fonts)!=null&&n.ready)||await new Promise(i=>{let o=!1;const a=()=>{o||(o=!0,clearTimeout(c.timer),this.documentFontsReadyWaiters.delete(c),t==null||t.removeEventListener("abort",a),i())},c={timer:setTimeout(()=>{this.Logger.warn(`[Appliance]: document fonts ready timeout for ${r}; timeoutMs=${e}`),a()},e),cancel:a};this.documentFontsReadyWaiters.add(c),t==null||t.addEventListener("abort",a,{once:!0}),Promise.resolve(document.fonts.ready).then(()=>{o||(this.documentFontsReadyLogged||(this.documentFontsReadyLogged=!0,this.Logger.info(`[Appliance]: document fonts ready for ${r}`)),a())},l=>{o||(this.Logger.warn(`[Appliance]: document fonts ready failed for ${r}: ${(l==null?void 0:l.message)||l}`),a())})})}async clearFontCache(){return await this.indexDBUtils.clearFontCache()}async getFontCacheStatus(){return await this.indexDBUtils.getFontCacheStatus()}createFontFaceRequestId(r){return`${r}-${Date.now()}-${Math.random().toString(16).slice(2)}`}getFontFaceCssValue(r){return`12px "${r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}isDocumentFontFaceReady(r){if(typeof document>"u"||!document.fonts)return!1;let e=!1;for(const t of document.fonts)if(t.family===r&&(e=!0,t.status!=="loaded"))return!1;return e&&(!document.fonts.check||document.fonts.check(this.getFontFaceCssValue(r)))}areDocumentFontFacesReady(){return this.control.extendFontFaces.every(r=>this.isDocumentFontFaceReady(r.fontFamily))}resolveFontFaceWorkerRequest(r,e,t=!1){const n=this.fontFaceWorkerResolveMap.get(r);if(n){if(clearTimeout(n.timer),n.signal&&n.onAbort&&n.signal.removeEventListener("abort",n.onAbort),this.fontFaceWorkerResolveMap.delete(r),t)try{n.worker.postMessage(new Set([{msgType:le.CancelFontFace,dataType:xe.Local,viewId:"",requestId:r}]))}catch{}n.resolve(e)}}requestFontFaceWorker(r,e,t,n){const i=e.requestId;return i?new Promise(o=>{const a=setTimeout(()=>{this.Logger.warn(`[Appliance]: font face worker request timeout: ${i}`),this.resolveFontFaceWorkerRequest(i,!1,!0)},this.control.loadFontFacesTimeout),c=()=>this.resolveFontFaceWorkerRequest(i,!1,!0);if(this.fontFaceWorkerResolveMap.set(i,{timer:a,resolve:o,worker:r,signal:n,onAbort:c}),n==null||n.addEventListener("abort",c,{once:!0}),n!=null&&n.aborted){c();return}try{r.postMessage(new Set([e]),t||[])}catch{this.resolveFontFaceWorkerRequest(i,!1,!0)}}):Promise.resolve(!1)}getWorkers(){return[this.getFullWorker(),this.getSubWorker()].filter(Boolean)}async areWorkerFontFacesReady(r){if(!this.control.hasOffscreenCanvas)return!0;const e=this.getWorkers();if(!e.length)return!1;const t=this.control.extendFontFaces.map(({fontFamily:i})=>({fontFamily:i}));return(await Promise.all(e.map(i=>this.requestFontFaceWorker(i,{msgType:le.CheckFontFace,dataType:xe.Local,viewId:"",fontFaces:t,requestId:this.createFontFaceRequestId("check")},void 0,r)))).every(Boolean)}async waitWorkerReadyForFontFaces(r){if(!this.control.hasOffscreenCanvas)return!0;const e=()=>this.control.isUseSimple?!!this.getFullWorker():!!this.getFullWorker()&&!!this.getSubWorker();if(e())return!0;const t=Date.now();return new Promise(n=>{let i=!1,o;const a=u=>{i||(i=!0,o&&clearTimeout(o),r==null||r.removeEventListener("abort",c),n(u))},c=()=>a(!1),l=()=>{if(r!=null&&r.aborted){a(!1);return}if(e()){a(!0);return}if(Date.now()-t>=this.control.loadFontFacesTimeout){a(!1);return}o=setTimeout(l,16)};r==null||r.addEventListener("abort",c,{once:!0}),l()})}assertAttemptActive(r,e){if(r.aborted||!e())throw ta("Font face load attempt is no longer active")}async getRuntimeFontFacesReadyState(r){if(!this.control.hasExtendFontFaces)return{documentReady:!0,workerReady:!0};const e=this.areDocumentFontFacesReady(),t=await this.areWorkerFontFacesReady(r);return{documentReady:e,workerReady:t}}async loadFontFaceBuffers(r,e){const t=[];for(const n of this.control.extendFontFaces){this.assertAttemptActive(r,e);let i;const o=await this.indexDBUtils.getFontFromDB(n.fontFamily,n.src,r);if(this.assertAttemptActive(r,e),o&&o.byteLength>0&&this.validateFontData(new Uint8Array(o))&&(i=o),!i&&(i=await this.loadFontInMainThread(n.src,r),this.assertAttemptActive(r,e),i&&i.byteLength>0)){const a=await this.indexDBUtils.saveFontToDB(n.fontFamily,n.src,i,r);this.assertAttemptActive(r,e),a||this.Logger.warn(`[Appliance]: Failed to save font ${n.fontFamily} to IndexedDB, but continuing with font loading`)}i&&i.byteLength>0?t.push({fontFamily:n.fontFamily,buffer:i}):this.Logger.warn(`[Appliance]: Font ${n.fontFamily} could not be loaded from any source`)}return t}async setDocumentFontFaces(r,e,t){if(typeof document>"u"||!document.fonts)return!1;for(const{fontFamily:n,buffer:i}of r){let o;try{if(this.assertAttemptActive(e,t),this.isDocumentFontFaceReady(n))continue;o=new FontFace(n,i.slice(0)),await o.load(),this.assertAttemptActive(e,t),document.fonts.add(o),await o.loaded,this.assertAttemptActive(e,t)}catch(a){if(e.aborted||!t()){if(o)try{document.fonts.delete(o)}catch{}throw ta("Document font load attempt is no longer active")}return this.Logger.error(`[Appliance]: set document font faces error: ${(a==null?void 0:a.message)||a}`),!1}}return this.assertAttemptActive(e,t),this.areDocumentFontFacesReady()}async setWorkerFontFaces(r,e,t){if(!this.control.hasOffscreenCanvas)return!0;const n=this.getWorkers();if(!n.length)return!1;const i=await Promise.all(n.map(o=>{const a=r.map(({fontFamily:c,buffer:l})=>({fontFamily:c,buffer:l.slice(0)}));return this.requestFontFaceWorker(o,{msgType:le.SetFontFace,dataType:xe.Local,viewId:"",fontBuffers:a,requestId:this.createFontFaceRequestId("set")},a.map(({buffer:c})=>c),e)}));return this.assertAttemptActive(e,t),i.every(Boolean)&&await this.areWorkerFontFacesReady(e)}async doLoadFontFaces(r,e,t=()=>!0){if(!e)throw new Error("Font face load requires an attempt signal");if(this.assertAttemptActive(e,t),this.lastFontFacesAlreadyReady=!1,!this.control.hasExtendFontFaces)return this.assertAttemptActive(e,t),this.lastFontFacesAlreadyReady=!0,{status:"success"};if(await this.waitDocumentFontsReady("fontFaceLoad",void 0,e),this.assertAttemptActive(e,t),!await this.waitWorkerReadyForFontFaces(e))return this.assertAttemptActive(e,t),{status:"timeout"};this.assertAttemptActive(e,t);const n=await this.getRuntimeFontFacesReadyState(e);if(this.assertAttemptActive(e,t),n.documentReady&&n.workerReady)return this.lastFontFacesAlreadyReady=!0,{status:"success"};r==null||r(),this.Logger.info(`[Appliance]: load font faces ${JSON.stringify(this.control.extendFontFaces)}`);const i=await this.loadFontFaceBuffers(e,t);if(this.assertAttemptActive(e,t),i.length!==this.control.extendFontFaces.length)return{status:"error"};const o=n.documentReady||await this.setDocumentFontFaces(i,e,t);this.assertAttemptActive(e,t);const a=n.workerReady||await this.setWorkerFontFaces(i,e,t);return this.assertAttemptActive(e,t),o&&a?(this.Logger.info("[Appliance]: set font faces success"),{status:"success"}):{status:"error"}}getLastFontFacesAlreadyReady(){return this.lastFontFacesAlreadyReady}async loadFontFaces(){const r=this.activeFontFaceAttempt;if(r&&r.generation===this.fontFaceLoadGeneration)return r.promise;const e=++this.fontFaceLoadGeneration,t=new AbortController;let n;const i={generation:e,controller:t,promise:new Promise(l=>{n=l}),resolve:l=>n(l),settled:!1,started:!1};this.activeFontFaceAttempt=i,this.lastFontFacesAlreadyReady=!1;const o=()=>this.activeFontFaceAttempt===i&&this.fontFaceLoadGeneration===i.generation,a=()=>{!o()||i.started||(i.started=!0,this.control.emitFontFaceLoadState({status:"start"}))},c=(l,u)=>{if(i.settled)return;const h=o();i.settled=!0,i.timer&&clearTimeout(i.timer),h&&i.started&&this.control.emitFontFaceLoadState(l),h&&l.status!=="success"&&(this.activeFontFaceAttempt=void 0,this.fontFaceLoadGeneration+=1),u&&t.abort(),i.resolve(l)};return i.timer=setTimeout(()=>c({status:"timeout"},!0),this.control.loadFontFacesTimeout),this.doLoadFontFaces(a,t.signal,o).then(l=>c(l,l.status!=="success"),l=>{!i.settled&&o()&&this.Logger.error(`[Appliance]: load font faces error: ${(l==null?void 0:l.message)||l}`),c(t.signal.aborted?{status:"timeout"}:{status:"error"},!0)}),i.promise}async loadFontInMainThread(r,e){try{if(e.aborted)throw ta("Font fetch aborted");const t=await fetch(r,{signal:e});if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);const n=await t.arrayBuffer();if(e.aborted)throw ta("Font fetch aborted");if(!n||n.byteLength===0)throw new Error("Empty font data received");const i=new Uint8Array(n);if(!this.validateFontData(i))throw new Error("Invalid font data format: not a valid font file");return n}catch(t){if(e.aborted)throw t;this.Logger.error(`[Appliance]: Failed to load font from ${r}: ${t instanceof Error?t.message:String(t)}`);return}}validateFontData(r){return r.length<4?!1:r[0]===119&&r[1]===79&&r[2]===70&&r[3]===50||r[0]===119&&r[1]===79&&r[2]===70&&r[3]===70||r[0]===0&&r[1]===1&&r[2]===0&&r[3]===0||r[0]===79&&r[1]===84&&r[2]===84&&r[3]===79||r.length>36&&r[36]===0&&r[37]===1&&r[38]===0&&r[39]===0}handleWorkerMessage(r){const{type:e,requestId:t,setFontFaceResult:n,fontFaceCheckResult:i,failedFonts:o}=r;return e!==le.SetFontFace&&e!==le.CheckFontFace?!1:(e===le.SetFontFace&&(o!=null&&o.length)&&this.Logger.info("[Appliance]: set font face has failed fonts: "+o.join(", ")),t&&this.resolveFontFaceWorkerRequest(t,e===le.CheckFontFace?!!i:!!n&&!(o!=null&&o.length)),!0)}}const xwe=new Set([q.Eraser,q.PencilEraser,q.BitMapEraser]),Is=2e3,ra=8e3,Rwe=32,$p=8,kwe={x:1,y:1,width:3,height:2},Yp=2;function Gp(s,r){return r.map(({x:e,y:t,expected:n,inside:i})=>{const o=Array.from(s.getImageData(e,t,1,1).data.slice(0,4));return{x:e,y:t,expected:n,actual:o,inside:i,ok:i?o[3]>=16&&o[0]>=o[3]-5&&o[1]<=5&&o[2]<=5:o[3]<=5}})}function Qu(s){return!!s&&s.length>=4&&s.every(({ok:r})=>r)}function na(s){const r=s==null?void 0:s.programProbe;return(s==null?void 0:s.offscreenCanvas)===!0&&s.contextSupported===!0&&(r==null?void 0:r.passed)===!0&&Qu(r.destinationPixelChecks)}function Hp(s,r){var e;return{renderMode:s.renderMode,contextType:((e=r==null?void 0:r.programProbe)==null?void 0:e.actualContextType)||s.contextType}}function Awe(s){const r=Math.max(0,s-Date.now());return r===0?Promise.resolve():new Promise(e=>{let t=!1,n,i;const o=()=>{t||(t=!0,i!==void 0&&clearTimeout(i),n!==void 0&&typeof globalThis.cancelAnimationFrame=="function"&&globalThis.cancelAnimationFrame(n),e())};i=setTimeout(o,Math.min(Rwe,r)),typeof globalThis.requestAnimationFrame=="function"&&(n=globalThis.requestAnimationFrame(o))})}function Qr(s,r){var e,t;return((e=s.getRenderContextTypeForView)==null?void 0:e.call(s,r))??((t=s.renderingCompatibilityDecision)==null?void 0:t.contextType)??"2d"}function Pwe(s,r){const e=s||{},t=r||{},n=[],i=[],o=[];for(const a of Object.keys(t))a in e?ye.isEqual(e[a],t[a])||i.push(a):n.push(a);for(const a of Object.keys(e))a in t||o.push(a);return{added:n,updated:i,removed:o}}const ql=new Set([q.Pencil,q.Arrow,q.Straight,q.Ellipse,q.Rectangle,q.Star,q.Polygon,q.Triangle,q.Rhombus,q.SpeechBalloon]);function Qp(s){return s===q.Pencil?$e.DrawingPencil:s===q.Arrow||s===q.Straight?$e.DrawingArrow:s===q.Eraser?$e.DrawingEraser:s===q.PencilEraser?$e.DrawingPencilEraser:s===q.BitMapEraser?$e.DrawingBitMapEraser:$e.DrawingShape}function bs(s){switch(s){case $e.DrawingPencil:case $e.DrawingArrow:case $e.DrawingShape:case $e.DrawingEraser:case $e.DrawingPencilEraser:case $e.DrawingBitMapEraser:return{kind:"stop-event"};case $e.MethodTranslateNode:return{kind:"method-pause",emitEventType:Te.TranslateNode};case $e.MethodScaleNode:return{kind:"method-pause",emitEventType:Te.ScaleNode};case $e.MethodRotateNode:return{kind:"method-pause",emitEventType:Te.RotateNode};case $e.MethodSetPoint:return{kind:"method-pause",emitEventType:Te.SetPoint};case $e.MethodSetColorNode:return{kind:"method-pause",emitEventType:Te.SetColorNode};case $e.AsyncCopyNode:case $e.AsyncPasteNode:case $e.AsyncDeleteNode:case $e.AsyncSetFontStyle:case $e.AsyncSetShapeOpt:case $e.AsyncZIndexNode:case $e.AsyncSetLock:case $e.AsyncUpdateElement:case $e.AsyncImage:case $e.AsyncIcon:case $e.AsyncMarkmap:case $e.Text:case $e.Clear:return{kind:"wait-owner"}}}const ki=s=>typeof s=="number"&&xwe.has(s),qp=s=>s===le.FullWork||s===le.UpdateNode||s===le.RemoveNode||s===le.DrawWork||s===le.Select||s===le.TextUpdate,Zl=4096;class Dwe{get now(){var r;return((r=this.control.room)==null?void 0:r.calibrationTimestamp)||Date.now()}get newWorkId(){return this.now.toString()}setCurrentToolsData(r){this.currentToolsData=r}getCurrentToolsData(){return this.currentToolsData}setCurrentLocalWorkData(r){this.currentLocalWorkData=r}getWorkId(){return this.currentLocalWorkData.workId}get workState(){return this.currentLocalWorkData.workState}}class Ai extends Error{constructor(){super("render runtime recovery cancelled"),this.name="RenderRuntimeRecoveryCancelledError"}}class Lwe extends Dwe{constructor(e){super();x(this,"maxLastSyncTime",He.syncOpt.interval);x(this,"combineUnitTime",He.bezier.combineUnitTime);x(this,"maxCombineEraserTime",yd);x(this,"smoothSync",He.syncOpt.smoothSync);x(this,"isActive",!1);x(this,"currentToolsData");x(this,"currentLocalWorkData");x(this,"control");x(this,"internalMsgEmitter");x(this,"publicMsgEmitter");x(this,"taskBatchData",new Set);x(this,"fullWorker");x(this,"subWorker");x(this,"fullWorkerUrl");x(this,"subWorkerUrl");x(this,"methodBuilder");x(this,"zIndexNodeMethod");x(this,"subWorkerDrawCount",0);x(this,"fullWorkerDrawCount",0);x(this,"maxDrawCount",0);x(this,"_consumeCount",0);x(this,"_postCount",0);x(this,"reRenders",new Map);x(this,"localWorkViewId");x(this,"localPointsBatchData",new Map);x(this,"tasksqueue",new Map);x(this,"cameraUpdateStateByView",new Map);x(this,"cameraClearReplayByView",new Map);x(this,"cameraClearReplaySequence",0);x(this,"cameraFailureSequenceByView",new Map);x(this,"cameraUpdateEndWaitersByView",new Map);x(this,"viewLifecycleIdleWaitersByView",new Map);x(this,"cameraTaskSequenceByView",new Map);x(this,"cameraRecoverySequence",0);x(this,"pendingDprOwnerByView",new Map);x(this,"dprUpdateSequence",0);x(this,"localWorkFinalizeQueueByView",new Map);x(this,"localWorkFinalizeQueue",Promise.resolve());x(this,"operationBarrierQueueByView",new Map);x(this,"operationBarrierEpochByView",new Map);x(this,"operationBarrierInvalidationWaitersByView",new Map);x(this,"cancelledEraseTxnIds",new Set);x(this,"cancelledEraseTxnOwners",new Map);x(this,"cancelledLocalWorkOwners",new Map);x(this,"fullLayerBitmapEraseTxns",new Map);x(this,"fullLayerBitmapEraseTxnWaiters",new Map);x(this,"snapshotMap",new Map);x(this,"snapshotRequestIdByViewScene",new Map);x(this,"boundingRectMap",new Map);x(this,"boundingRectRequestIdByViewScene",new Map);x(this,"clearAllResolveMap",new Map);x(this,"localEventQueue",Promise.resolve());x(this,"localEventQueueByView",new Map);x(this,"localDoneDispatchTimersByView",new Map);x(this,"localEventSequence",0);x(this,"localInputEpochByView",new Map);x(this,"localInputTransactionEpochByView",new Map);x(this,"localDoneWaitSequence",0);x(this,"queuedLocalEventCount",0);x(this,"activeLocalEvent");x(this,"localDoneWaitByView",new Map);x(this,"delayWorkStateToDoneResolveByView",new Map);x(this,"localDoneWait");x(this,"delayWorkStateToDoneResolve");x(this,"animationId");x(this,"tmpImageConfigMap",new Map);x(this,"mainThread");x(this,"backgroundThreadManager");x(this,"willSelectorWorkIdByView",new Map);x(this,"isLockSentEventCursor",!1);x(this,"getVNodeInfoResolveMap",new Map);x(this,"refreshTextRenderResolveMap",new Map);x(this,"fontFaceManager");x(this,"isLocalWorkActive",!1);x(this,"hasMainViewInitAck",!1);x(this,"mainViewInitReady",new H0);x(this,"serviceSyncReadyViews",new Set);x(this,"mainViewInitAckCallbacks",new Set);x(this,"initAckedViewIds",new Set);x(this,"viewInitAckTimeoutTimers",new Map);x(this,"renderRuntimeCacheSavePromise");x(this,"pendingTransportMessages",new Map);x(this,"isRenderTransportReady",!1);x(this,"renderRuntimeFallbackSequence",0);x(this,"activeRenderRuntimeRecovery");x(this,"viewInitRecoveryAttempts",new Map);x(this,"viewInitRecoveryDestroying",new Set);x(this,"viewInitAckWaiters",new Map);x(this,"serviceSyncCommitWaiters",new Map);x(this,"viewServiceReadyWaiters",new Map);x(this,"initReconcileTasks",new Map);x(this,"serviceSyncSequence",0);x(this,"initGeneration",0);x(this,"viewGenerationById",new Map);x(this,"fullLayerFrameStateByView",new Map);x(this,"pendingDprByView",new Map);x(this,"viewRecoveryQueueByView",new Map);x(this,"initCameraOptByView",new Map);x(this,"markmapIdResolveMap",new Map);const{control:t,internalMsgEmitter:n,publicMsgEmitter:i}=e;this.control=t,this.maxLastSyncTime=this.control.pluginOptions.extras.syncOpt.interval,this.combineUnitTime=this.control.pluginOptions.extras.bezier.combineUnitTime||this.combineUnitTime,this.smoothSync=ye.isBoolean(this.control.pluginOptions.extras.syncOpt.smoothSync)?this.control.pluginOptions.extras.syncOpt.smoothSync:this.smoothSync,this.fullWorkerUrl=this.control.pluginOptions.cdn.fullWorkerUrl||"",this.subWorkerUrl=this.control.pluginOptions.cdn.subWorkerUrl||"",this.internalMsgEmitter=n,this.publicMsgEmitter=i,this.currentLocalWorkData={workState:de.Pending},this.fontFaceManager=new Ewe({control:this.control,getFullWorker:()=>this.fullWorker,getSubWorker:()=>this.subWorker})}getDoneWaitForView(e){var i;const t=(i=this.localDoneWaitByView)==null?void 0:i.get(e);if(t)return t;const n=this.localDoneWait;if(n&&(!n.viewId||n.viewId===e))return{...n,viewId:e}}getDoneResolverForView(e){var i,o;const t=(i=this.delayWorkStateToDoneResolveByView)==null?void 0:i.get(e);if(t)return t;const n=this.localDoneWait;if(this.delayWorkStateToDoneResolve&&!((o=this.delayWorkStateToDoneResolveByView)!=null&&o.size)&&(!(n!=null&&n.viewId)||n.viewId===e))return this.delayWorkStateToDoneResolve}getLocalWorkFinalizeQueue(e){return this.localWorkFinalizeQueueByView?this.localWorkFinalizeQueueByView.get(e)||Promise.resolve():this.localWorkFinalizeQueue||Promise.resolve()}setLocalWorkFinalizeQueue(e,t){if(this.localWorkFinalizeQueueByView){this.localWorkFinalizeQueueByView.set(e,t);return}this.localWorkFinalizeQueue=t}clearLocalWorkFinalizeQueue(e,t){if(this.localWorkFinalizeQueueByView){this.localWorkFinalizeQueueByView.get(e)===t&&this.localWorkFinalizeQueueByView.delete(e);return}this.localWorkFinalizeQueue===t&&(this.localWorkFinalizeQueue=Promise.resolve())}clearDoneWaitForView(e,t){var i,o,a,c,l,u;const n=(i=this.localDoneWaitByView)==null?void 0:i.get(e);t&&(n==null?void 0:n.token)!==t||((o=this.localDoneWaitByView)==null||o.delete(e),(a=this.delayWorkStateToDoneResolveByView)==null||a.delete(e),(!t||((c=this.localDoneWait)==null?void 0:c.token)===t)&&(((l=this.localDoneWait)==null?void 0:l.viewId)===void 0||((u=this.localDoneWait)==null?void 0:u.viewId)===e)&&(this.localDoneWait=void 0,this.delayWorkStateToDoneResolve=void 0))}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get Logger(){return this.control.logger}logRenderRuntimeFallback(e,t,n="info"){const i=`[Appliance]: [render-runtime-fallback] stage=${e} ${JSON.stringify(t)}`;this.Logger[n](i)}logMainViewCameraTrace(e,t){const n=this.Logger,i=`[Appliance]: [main-view-camera] stage=${e} ${JSON.stringify(t)}`;n.infoDebounced?n.infoDebounced(`main-view-camera:${e}`,i):n.info(i)}logAppViewCameraTrace(e,t,n){const i=this.Logger,o=`[Appliance]: [app-view-camera] stage=${t} ${JSON.stringify({viewId:e,...n})}`;i!=null&&i.infoDebounced?i.infoDebounced(`app-view-camera:${e}:${t}`,o):i&&i.info(o)}closeImageBitmap(e){var t;if(e)try{(t=e.close)==null||t.call(e)}catch(n){this.logLocalWorkBarrierError(`[Appliance]: ImageBitmap release failed; error=${n instanceof Error?n.message:String(n)}`)}}getViewSceneRequestKey(e,t){return`${e}\0${t}`}settleSnapshotFailure(e,t,n){const i=this.getViewSceneRequestKey(e,t);if(this.snapshotRequestIdByViewScene.get(i)!==n)return;const o=this.snapshotMap.get(i);!o||o.requestId!==n||o.resolve(o.value.map(a=>a||null))}settleBoundingRectFailure(e,t,n){const i=this.getViewSceneRequestKey(e,t);if(this.boundingRectRequestIdByViewScene.get(i)!==n)return;const o=this.boundingRectMap.get(i);!o||o.requestId!==n||o.resolve({x:0,y:0,w:0,h:0})}settleViewRenderRequests(e){var t,n;for(const[i,o]of this.snapshotMap)o.viewId===e&&(this.snapshotMap.delete(i),this.snapshotRequestIdByViewScene.get(i)===o.requestId&&this.snapshotRequestIdByViewScene.delete(i),o.resolve(o.value.map(a=>a||null)));for(const[i,o]of this.boundingRectMap)o.viewId===e&&(this.boundingRectMap.delete(i),this.boundingRectRequestIdByViewScene.get(i)===o.requestId&&this.boundingRectRequestIdByViewScene.delete(i),o.resolve({x:0,y:0,w:0,h:0}));try{(t=this.mainThread)==null||t.discardView(e)}catch(i){this.logLocalWorkBarrierError(`[Appliance]: main snapshot cleanup failed; viewId=${e}; error=${i instanceof Error?i.message:String(i)}`)}try{(n=this.backgroundThreadManager)==null||n.discardView(e)}catch(i){this.logLocalWorkBarrierError(`[Appliance]: background snapshot cleanup failed; viewId=${e}; error=${i instanceof Error?i.message:String(i)}`)}}afterMainViewInitAck(e){const t=this.initGeneration;if(this.hasMainViewInitAck){window.setTimeout(()=>{if(this.initGeneration===t)try{e()}catch{}},0);return}this.mainViewInitAckCallbacks.add(e)}get isMainViewInitAck(){return this.hasMainViewInitAck}waitForMainViewInitAck(e=6e4){return this.mainViewInitReady.wait(e)}isViewInitAck(e){return this.initAckedViewIds.has(e)}ackMainViewInit(e,t,n){var d;const i=this.viewGenerationById.get(e),o=Qr(this.control,e),a=Ht(this.control.renderMode,o);if(t!==void 0&&i!==t){this.Logger.warn(`[Appliance]: [render-init] stage=ack-ignored viewId=${e} receivedGeneration=${t} currentGeneration=${i} reason=generation-mismatch`);return}if(this.initAckedViewIds.has(e)){this.Logger.warn(`[Appliance]: [render-init] stage=ack-ignored viewId=${e} reason=duplicate-ack`);return}if(pt(this.Logger,{category:"render-init",viewId:e,generation:t??i??"unknown",stage:"ack-received",details:{transport:this.control.renderMode,context:o,actualWorkerContext:n||"unreported"}}),this.control.renderMode!=="main-thread"&&n!==o){this.Logger.error(`[Appliance]: [render-init] stage=ack-context-mismatch viewId=${e} generation=${t??i??"unknown"} expectedContext=${o} actualContext=${n||"unreported"}`),ya(this.Logger,e),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:t??i,reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:"init-context-mismatch",reportError:`expected ${o}, actual ${n||"unreported"}`,reportContextType:n});return}this.initAckedViewIds.add(e);const c=`${e}:${t??i}`,l=(d=this.viewInitAckTimeoutTimers)==null?void 0:d.get(c);l&&(clearTimeout(l),this.viewInitAckTimeoutTimers.delete(c)),this.activeRenderRuntimeRecovery&&this.logRenderRuntimeFallback("init-acked",{recoveryId:this.activeRenderRuntimeRecovery.recoveryId,viewId:e,generation:t,elapsedMs:Date.now()-this.activeRenderRuntimeRecovery.startedAt});const u=this.viewInitAckWaiters.get(e);if(u){for(const f of[...u])t!==void 0&&f.generation!==t||(clearTimeout(f.timer),u.delete(f),f.resolve(!0));u.size||this.viewInitAckWaiters.delete(e)}if(e===Fe&&!this.hasMainViewInitAck&&(this.hasMainViewInitAck=!0,this.mainViewInitReady.markReady()),pt(this.Logger,{category:"render-init",viewId:e,generation:i??"unknown",stage:"ack-completed",details:{transport:this.control.renderMode,context:o,renderModel:a}}),i!==void 0&&this.scheduleInitReconcile(e,i),e!==Fe)return;const h=[...this.mainViewInitAckCallbacks];this.mainViewInitAckCallbacks.clear();for(const f of h)window.setTimeout(()=>{try{f()}catch{}},0)}scheduleInitReconcile(e,t){if(this.initReconcileTasks.has(e))return;pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"ack-reconcile"});const n=this.reconcileViewInit(e,t).catch(i=>{this.viewGenerationById.get(e)===t&&(this.Logger.error(`[Appliance]: [init-reconcile] stage=failed viewId=${e} generation=${t} error=${i instanceof Error?i.message:String(i)}`),ya(this.Logger,e))}).finally(()=>{this.initReconcileTasks.get(e)===n&&this.initReconcileTasks.delete(e)});this.initReconcileTasks.set(e,n)}isCurrentViewGeneration(e,t){return this.viewGenerationById.get(e)===t&&!!this.viewContainerManager.getView(e)}async reconcileViewInit(e,t){var i,o,a,c,l,u,h,d,f,g,y,S,E,C,L,T,p,m,M,v,R,b,P,D;let n=0;for(;this.isCurrentViewGeneration(e,t);){const z=this.viewContainerManager.getView(e);if(!z)return;const j=((o=(i=this.control).getPendingInitTargetScenePath)==null?void 0:o.call(i,e))||z.focusScenePath;if(!j){this.finalizeViewInitReady(e,t,void 0);return}const A=((c=(a=this.control).getPendingInitReconcileRevision)==null?void 0:c.call(a,e,j))||{anchorRevision:0,cameraRevision:0,forceFullRevision:0};if(z.focusScenePath!==j){const B=this.viewContainerManager.setViewScenePathBeforeRenderInit(e,j);pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"retrigger-scene",details:{scenePath:j,applied:B}})}const k=(u=(l=this.control).getPendingInitCameraForScene)==null?void 0:u.call(l,e,j),N=k||z.cameraOpt,W=this.initCameraOptByView.get(e),Y=((h=this.cameraUpdateStateByView.get(e))==null?void 0:h.isRecovering)===!0,Q=!!(!Y&&N&&(!W||!this.isSameCameraOpt(W,N)));if(pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"retrigger-camera",details:{scenePath:j,source:Y?"camera-recovery":k?"padding":"window-manager",applied:Q}}),Q&&N){const B=((d=this.cameraFailureSequenceByView)==null?void 0:d.get(e))||0;this.updateCameraForReadyRenderer(e,N);const F=await this.waitForInitCameraCatchUp(e,t);if(!this.isCurrentViewGeneration(e,t))return;if(!F||(((f=this.cameraFailureSequenceByView)==null?void 0:f.get(e))||0)!==B){this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:t,reportErrorCode:"INIT_CAMERA_CATCH_UP_FAILED",reportStage:"init-camera-catch-up",reportError:F?"camera renderer reported failure":"camera catch-up timeout"});return}this.initCameraOptByView.set(e,{...N})}const ie=((g=this.collector)==null?void 0:g.readSceneStorageSnapshot(e,j))||{revision:0,storage:{}},O=((E=(S=(y=this.control).getPendingInitLastApplied)==null?void 0:S.call(y,e,j))==null?void 0:E.storage)||((L=(C=this.control).getPendingInitServiceBaseline)==null?void 0:L.call(C,e,j))||{},V=Pwe(O,ie.storage),Z=!((p=(T=this.control).hasPendingInitAppliedSnapshot)!=null&&p.call(T,e,j));pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"read-service-snapshot",details:{scenePath:j,revision:ie.revision,keys:Object.keys(ie.storage).length}}),pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"service-diff",details:{scenePath:j,added:V.added.length,updated:V.updated.length,removed:V.removed.length}}),pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"service-full-sync",details:{scenePath:j,reason:Z?"first-init":"post-commit-dirty"}});const $=await this.submitInitServiceSnapshot(e,j,t,ie.revision);if(!this.isCurrentViewGeneration(e,t))return;if(!$){if(n+=1,n<2)continue;this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:t,reportErrorCode:"SERVICE_SYNC_COMMIT_TIMEOUT",reportStage:"init-service-commit",reportError:"service sync commit timeout"});return}n=0,(M=(m=this.control).markPendingInitServiceApplied)==null||M.call(m,e,j,ie.storage,ie.revision);const ee=this.viewContainerManager.getView(e),se=((R=(v=this.control).getPendingInitTargetScenePath)==null?void 0:R.call(v,e))||(ee==null?void 0:ee.focusScenePath),ce=((P=(b=this.control).getPendingInitReconcileRevision)==null?void 0:P.call(b,e,j))||{anchorRevision:0,cameraRevision:0,forceFullRevision:0},me=((D=this.collector)==null?void 0:D.readSceneStorageSnapshot(e,j).revision)||0,pe=[];if((se!==j||ce.anchorRevision!==A.anchorRevision)&&pe.push("scene"),ce.cameraRevision!==A.cameraRevision&&pe.push("camera"),me!==ie.revision&&pe.push("service"),ce.forceFullRevision!==A.forceFullRevision&&pe.push("force"),pe.length){pt(this.Logger,{category:"init-reconcile",viewId:e,generation:t,stage:"post-commit-dirty",details:{scenePath:j,reason:pe.join(",")}});continue}this.finalizeViewInitReady(e,t,j);return}}submitInitServiceSnapshot(e,t,n,i){const o=`init-service-${n}-${++this.serviceSyncSequence}`,a=this.waitForServiceSyncCommit(o,e,n);return this.control.textEditorManager.clear(e,!0),this.taskBatchData.add({msgType:le.Clear,dataType:xe.Service,viewId:e,viewGeneration:n,scenePath:t}),this.pullServiceDataForReadyRenderer(e,t,{isAsync:!1,useAnimation:!1}),this.taskBatchData.add({msgType:le.ServiceSyncCommit,dataType:xe.Service,viewId:e,viewGeneration:n,scenePath:t,serviceSyncId:o,serviceRevision:i}),pt(this.Logger,{category:"init-reconcile",viewId:e,generation:n,stage:"service-commit-sent",details:{scenePath:t,syncId:o,revision:i}}),this.consume(),a}waitForInitCameraCatchUp(e,t,n=sa+1e3){let i;const o=new Promise(c=>{i=setTimeout(()=>c(!1),n)}),a=this.waitForCameraUpdateEnd(e).then(()=>this.isCurrentViewGeneration(e,t),()=>!1);return Promise.race([a,o]).finally(()=>{i&&clearTimeout(i)})}waitForServiceSyncCommit(e,t,n,i=5e3){return new Promise(o=>{const a=setTimeout(()=>{this.serviceSyncCommitWaiters.delete(e),this.Logger.error(`[Appliance]: [init-reconcile] stage=service-commit-timeout viewId=${t} generation=${n} syncId=${e}`),o(!1)},i);this.serviceSyncCommitWaiters.set(e,{viewId:t,generation:n,resolve:o,timer:a})})}ackServiceSyncCommit(e){const t=e.serviceSyncId;if(!t)return;const n=this.serviceSyncCommitWaiters.get(t);!n||n.viewId!==e.viewId||n.generation!==e.viewGeneration||this.viewGenerationById.get(n.viewId)!==n.generation||(this.serviceSyncCommitWaiters.delete(t),clearTimeout(n.timer),pt(this.Logger,{category:"init-reconcile",viewId:n.viewId,generation:n.generation,stage:"service-commit-acked",details:{scenePath:e.scenePath||"none",syncId:t,revision:e.serviceRevision??0}}),n.resolve(!0))}finalizeViewInitReady(e,t,n){var o,a,c,l,u,h,d,f,g;if(!this.isCurrentViewGeneration(e,t))return;(o=this.cameraUpdateStateByView.get(e))!=null&&o.isRecovering||(a=this.viewInitRecoveryAttempts)==null||a.delete(e),(c=this.viewInitRecoveryDestroying)==null||c.delete(e),this.initCameraOptByView.delete(e),this.markServiceSyncReady(e),(u=(l=this.control).clearPendingViewInitState)==null||u.call(l,e),this.activeRenderRuntimeRecovery||(this.control.onViewServiceReady(e),this.dispatchCameraRecoveryReplay(e,t)),OMe(this.Logger,{viewId:e,generation:t,details:{finalScenePath:n||"none",serviceSync:"ready"}}),this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"success"}),this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"success"});for(const[y,S]of this.viewInitAckTimeoutTimers||[])y.startsWith(`${e}:`)&&(clearTimeout(S),this.viewInitAckTimeoutTimers.delete(y));const i=this.viewServiceReadyWaiters.get(e);i==null||i.forEach(y=>{y.generation===t&&(clearTimeout(y.timer),y.resolve(!0),i.delete(y))}),i!=null&&i.size||this.viewServiceReadyWaiters.delete(e),((d=(h=this.control.pluginOptions)==null?void 0:h.extras)==null?void 0:d.useWorker)==="auto"&&this.control.renderingCompatibilityDecision.renderRuntimeCacheState!=="hit"&&!this.activeRenderRuntimeRecovery&&!this.renderRuntimeCacheSavePromise&&(this.renderRuntimeCacheSavePromise=((g=(f=this.control).persistRenderRuntimeDecision)==null?void 0:g.call(f))||Promise.resolve())}flushPendingTransportInitMessages(){if(!this.isRenderTransportReady)return;const e=new Set;for(const[t,n]of this.pendingTransportMessages)e.add(n),this.pendingTransportMessages.delete(t);if(e.size){for(const t of e)t.viewGeneration!==void 0&&this.armViewInitAckTimeout(t.viewId,t.viewGeneration),pt(this.Logger,{category:"render-init",viewId:t.viewId,generation:t.viewGeneration,stage:"sent",details:{renderModel:Ht(this.control.renderMode,Qr(this.control,t.viewId)),context:Qr(this.control,t.viewId),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}});e.size&&this.dispatchMessages(e)}}getPendingInitMessageKey(e){return`${e.msgType}:${e.viewId}:${e.scenePath||""}`}markServiceSyncReady(e){this.serviceSyncReadyViews.add(e)}waitForViewInitAck(e,t,n=5e3){return this.initAckedViewIds.has(e)&&this.viewGenerationById.get(e)===t?Promise.resolve(!0):new Promise(i=>{const o=this.viewInitAckWaiters.get(e)||new Set,a={generation:t,resolve:i,timer:setTimeout(()=>{o.delete(a),o.size||this.viewInitAckWaiters.delete(e),i(!1)},n)};o.add(a),this.viewInitAckWaiters.set(e,o)})}waitForViewServiceReady(e,t,n=1e4){return this.serviceSyncReadyViews.has(e)&&this.viewGenerationById.get(e)===t?Promise.resolve(!0):new Promise(i=>{const o=this.viewServiceReadyWaiters.get(e)||new Set,a={generation:t,resolve:i,timer:setTimeout(()=>{o.delete(a),o.size||this.viewServiceReadyWaiters.delete(e),i(!1)},n)};o.add(a),this.viewServiceReadyWaiters.set(e,o)})}armViewInitAckTimeout(e,t,n=1e4){const i=`${e}:${t}`,o=this.viewInitAckTimeoutTimers.get(i);o&&clearTimeout(o);const a=window.setTimeout(()=>{this.viewInitAckTimeoutTimers.delete(i),!(this.initAckedViewIds.has(e)||this.viewGenerationById.get(e)!==t)&&(this.Logger.error(`[Appliance]: [render-init] stage=ack-timeout viewId=${e} generation=${t}`),ya(this.Logger,e),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:t,reportErrorCode:"RENDER_INIT_TIMEOUT",reportStage:"worker-init-ack",reportError:"render init ack timeout"}))},n);this.viewInitAckTimeoutTimers.set(i,a)}async waitForViewInitCompletion(e){const t=this.viewGenerationById.get(e);if(t===void 0)return"stale";const n=await this.waitForViewInitAck(e,t,1e4);if(this.viewGenerationById.get(e)!==t)return"stale";if(!n)return"timeout";const i=await this.waitForViewServiceReady(e,t,15e3);return this.viewGenerationById.get(e)!==t?"stale":i?"completed":(this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:t,reportErrorCode:"RENDER_INIT_TIMEOUT",reportStage:"worker-service-ready",reportError:"render service ready timeout"}),"timeout")}failViewInitOnTerminalRuntime(e){var n,i,o,a;const t=[...new Set([...this.viewInitAckWaiters.keys(),...this.viewServiceReadyWaiters.keys(),...[...this.serviceSyncCommitWaiters.values()].map(({viewId:c})=>c),...this.initReconcileTasks.keys(),...this.viewGenerationById.keys(),...this.viewContainerManager.getAllViews().filter(c=>!!c).map(c=>c.id)])];(i=(n=this.control).invalidateAllPendingViewInit)==null||i.call(n),this.serviceSyncCommitWaiters.forEach(c=>{clearTimeout(c.timer),c.resolve(!1)}),this.serviceSyncCommitWaiters.clear();for(const c of t){this.releaseCameraRecovery(c,`terminal-render-runtime:${e.reportErrorCode||"unknown"}`);const l=e.viewId===c?e.viewGeneration??this.viewGenerationById.get(c):this.viewGenerationById.get(c);this.viewGenerationById.set(c,(this.viewGenerationById.get(c)??0)+1),this.initAckedViewIds.delete(c),this.serviceSyncReadyViews.delete(c);const u=this.viewInitAckWaiters.get(c);u==null||u.forEach(d=>{clearTimeout(d.timer),d.resolve(!1)}),this.viewInitAckWaiters.delete(c);const h=this.viewServiceReadyWaiters.get(c);h==null||h.forEach(d=>{clearTimeout(d.timer),d.resolve(!1)}),this.viewServiceReadyWaiters.delete(c);for(const[d,f]of this.viewInitAckTimeoutTimers)d.startsWith(`${c}:`)&&(clearTimeout(f),this.viewInitAckTimeoutTimers.delete(d));this.initCameraOptByView.delete(c),this.Logger.error(`[Appliance]: [render-init] stage=failed viewId=${c} generation=${l??"unknown"} errorCode=${e.reportErrorCode} reason=terminal-main-thread-runtime`)}this.initReconcileTasks.clear(),this.pendingTransportMessages.clear(),(o=this.viewInitRecoveryAttempts)==null||o.clear(),(a=this.viewInitRecoveryDestroying)==null||a.clear(),this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"error"})}settlePendingViewInitWaitersForRecovery(){var e,t,n,i,o,a,c,l;(e=this.viewInitAckWaiters)==null||e.forEach(u=>{u.forEach(h=>{clearTimeout(h.timer),h.resolve(!1)})}),(t=this.viewInitAckWaiters)==null||t.clear(),(n=this.viewServiceReadyWaiters)==null||n.forEach(u=>{u.forEach(h=>{clearTimeout(h.timer),h.resolve(!1)})}),(i=this.viewServiceReadyWaiters)==null||i.clear(),(o=this.serviceSyncCommitWaiters)==null||o.forEach(u=>{clearTimeout(u.timer),u.resolve(!1)}),(a=this.serviceSyncCommitWaiters)==null||a.clear();for(const u of((c=this.viewInitAckTimeoutTimers)==null?void 0:c.values())||[])clearTimeout(u);(l=this.viewInitAckTimeoutTimers)==null||l.clear()}isViewScopedInitFailure(e){return e.reportErrorCode==="INIT_CAMERA_CATCH_UP_FAILED"||e.reportErrorCode==="SERVICE_SYNC_COMMIT_TIMEOUT"||e.reportErrorCode==="RENDER_INIT_TIMEOUT"&&e.reportStage==="worker-service-ready"}scheduleViewInitRecovery(e,t){const{viewId:n,viewGeneration:i}=e;if(!n||i===void 0){this.failViewInitOnTerminalRuntime(e);return}const o=this.cameraUpdateStateByView.get(n),a=o==null?void 0:o.recoveryOwner;if(this.viewGenerationById.get(n)!==i||!this.viewContainerManager.getView(n)){this.logRenderRuntimeFallback("ignored-stale-view",{recoveryId:t,viewId:n,generation:i,errorCode:e.reportErrorCode},"warn"),this.releaseCameraRecovery(n,"stale-or-removed-view",o,a);return}if(this.viewInitRecoveryAttempts||(this.viewInitRecoveryAttempts=new Map),this.viewInitRecoveryDestroying||(this.viewInitRecoveryDestroying=new Set),this.viewInitRecoveryDestroying.has(n)){this.logRenderRuntimeFallback("ignored-view-recovery-running",{recoveryId:t,viewId:n,generation:i,errorCode:e.reportErrorCode},"warn");return}const c=this.viewInitRecoveryAttempts.get(n)||0,l=c>=Yp;l||this.viewInitRecoveryAttempts.set(n,c+1),this.logRenderRuntimeFallback(l?"view-init-recovery-exhausted":"view-init-recovery-start",{recoveryId:t,viewId:n,generation:i,attempt:c+1,maxAttempts:Yp,errorCode:e.reportErrorCode},l?"error":"warn"),l&&(this.viewInitRecoveryAttempts.delete(n),this.releaseCameraRecovery(n,"view-init-recovery-exhausted",o,a)),this.viewInitRecoveryDestroying.add(n);try{this.destroyViewWorker(n,"preserve-storage",!l&&(o==null?void 0:o.isRecovering)===!0)}finally{this.viewInitRecoveryDestroying.delete(n)}if(l){this.Logger.error(`[Appliance]: [render-init] stage=failed viewId=${n} generation=${i} errorCode=${e.reportErrorCode} reason=view-init-recovery-exhausted`),n===Fe&&this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"error"});return}const u=this.viewContainerManager.mountView(n);if(o!=null&&o.isRecovering){const d=o.replayCamera;d&&this.control.queuePendingInitCamera(n,d.cameraOpt,d.scenePath)}const h=this.viewGenerationById.get(n);u.catch(d=>{var f;this.Logger.error(`[Appliance]: [render-init] stage=remount-failed viewId=${n} error=${d instanceof Error?d.message:String(d)}`),this.viewGenerationById.get(n)===h&&((f=this.viewInitRecoveryAttempts)==null||f.delete(n)),this.releaseCameraRecovery(n,"view-remount-failed",o,a)})}scheduleRenderRuntimeFallback(e){var c,l,u,h;if(e.reportErrorCode!==L0e&&e.reportErrorCode!=="SERVICE_SYNC_COMMIT_TIMEOUT"&&e.reportErrorCode!=="IMAGE_BITMAP_RENDER_FAILED"&&e.reportErrorCode!=="INIT_CAMERA_CATCH_UP_FAILED"&&e.reportErrorCode!=="RENDER_INIT_TIMEOUT"&&e.reportErrorCode!=="CAMERA_TRANSPORT_TIMEOUT"&&e.reportErrorCode!=="RENDERER_RUNTIME_ERROR")return;if(((l=(c=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:l.call(c))===!1){e.viewId&&this.releaseCameraRecovery(e.viewId,"manager-lifecycle-ended");return}const t=`render-recovery-${Date.now()}-${++this.renderRuntimeFallbackSequence}`,n=this.activeRenderRuntimeRecovery;if(n){if(e.reportErrorCode==="CAMERA_TRANSPORT_TIMEOUT"&&e.viewId){const d=this.cameraUpdateStateByView.get(e.viewId),f=n.views.find(g=>g.viewId===e.viewId);d!=null&&d.isRecovering&&d.replayCamera&&f?(f.replayCamera=this.cloneCameraReplay(d.replayCamera),f.cameraRecoveryOwner=d.recoveryOwner,this.control.queuePendingInitCamera(e.viewId,d.replayCamera.cameraOpt,d.replayCamera.scenePath)):d!=null&&d.isRecovering&&!f&&this.releaseCameraRecovery(e.viewId,"view-not-in-active-runtime-recovery",d)}this.logRenderRuntimeFallback("ignored-already-running",{recoveryId:n.recoveryId,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode},"warn");return}if(this.isViewScopedInitFailure(e)||e.reportErrorCode==="CAMERA_TRANSPORT_TIMEOUT"&&this.control.renderMode==="main-thread"){this.scheduleViewInitRecovery(e,t);return}if(this.control.renderMode==="main-thread"){this.logRenderRuntimeFallback("ignored-terminal-runtime",{recoveryId:t,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,renderModel:"mainThread+canvas2d"},"warn"),this.failViewInitOnTerminalRuntime(e);return}(h=(u=this.control).invalidateAllPendingViewInit)==null||h.call(u),this.serviceSyncReadyViews.clear();const i=this.viewContainerManager.getAllViews().filter(d=>!!d).map(d=>{var y,S;const f=this.cameraUpdateStateByView.get(d.id),g=f?this.beginCameraRecovery(d.id,f):void 0;return(S=(y=this.control).armPendingViewInit)==null||S.call(y,d.id),g&&this.control.queuePendingInitCamera(d.id,g.cameraOpt,g.scenePath),{viewId:d.id,view:d,lifecycleGeneration:this.control.getViewLifecycleGeneration(d.id),viewGeneration:this.viewGenerationById.get(d.id),scenePath:d.focusScenePath,cameraOpt:d.cameraOpt?{...d.cameraOpt}:void 0,replayCamera:g,cameraRecoveryOwner:f==null?void 0:f.recoveryOwner}}),o={recoveryId:t,startedAt:Date.now(),fromRenderMode:this.control.renderMode,fromContextType:this.control.renderingCompatibilityDecision.contextType,views:i,cacheInvalidation:Promise.resolve()};this.activeRenderRuntimeRecovery=o,this.settlePendingViewInitWaitersForRecovery(),o.cacheInvalidation=(this.renderRuntimeCacheSavePromise||Promise.resolve()).catch(()=>{}).then(()=>{var d,f;return(f=(d=this.control).invalidateRenderRuntimeDecision)==null?void 0:f.call(d)}).then(()=>{}).catch(d=>{this.logRenderRuntimeFallback("cache-invalidate-failed",{recoveryId:o.recoveryId,error:d instanceof Error?d.message:String(d)},"warn")}),this.control.queuePendingRuntimeReset(()=>this.runRenderRuntimeFallback(e,o)).then(d=>{d&&this.persistRecoveredRenderRuntime(o,d)}).catch(d=>{this.releaseRenderRuntimeRecoveryCameras(o,"unexpected-runtime-recovery-failure"),this.activeRenderRuntimeRecovery===o&&(this.activeRenderRuntimeRecovery=void 0),this.logRenderRuntimeFallback("failed",{recoveryId:o.recoveryId,errorCode:e.reportErrorCode,failureStage:"unexpected",error:d instanceof Error?d.message:String(d),elapsedMs:Date.now()-o.startedAt},"error")})}isRenderRuntimeRecoveryCurrent(e){return this.activeRenderRuntimeRecovery===e}assertRenderRuntimeRecoveryCurrent(e){var t,n;if(!this.isRenderRuntimeRecoveryCurrent(e))throw new Ai;if(((n=(t=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:n.call(t))===!1)throw e.cancelReason||(e.cancelReason="manager-lifecycle-ended"),new Ai;if(!this.viewContainerManager.getAllViews().some(i=>!!i))throw e.cancelReason||(e.cancelReason="no-active-views"),new Ai}isRenderRuntimeRecoveryViewCurrent(e){return this.viewContainerManager.getView(e.viewId)===e.view&&this.control.isPendingViewInitCurrent(e.viewId,e.lifecycleGeneration)}finishRenderRuntimeRecovery(e){var n,i;this.assertRenderRuntimeRecoveryCurrent(e);const t=[];for(const o of e.views)this.isRenderRuntimeRecoveryViewCurrent(o)&&(t.push(o.viewId),(i=(n=this.control).invalidatePendingViewInit)==null||i.call(n,o.viewId));this.activeRenderRuntimeRecovery=void 0,t.forEach(o=>{if(this.isServiceSyncReady(o)){this.control.onViewServiceReady(o);const a=this.viewGenerationById.get(o);a!==void 0&&this.dispatchCameraRecoveryReplay(o,a)}})}persistRecoveredRenderRuntime(e,t){const n=e.cacheInvalidation.then(async()=>{var i,o,a,c;this.activeRenderRuntimeRecovery||((o=(i=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:o.call(i))!==!1&&(this.control.renderMode!==t.renderMode||this.control.renderingCompatibilityDecision.contextType!==t.contextType||await((c=(a=this.control).persistRenderRuntimeDecision)==null?void 0:c.call(a)))}).catch(i=>{this.logRenderRuntimeFallback("cache-save-failed",{recoveryId:e.recoveryId,error:i instanceof Error?i.message:String(i)},"warn")});this.renderRuntimeCacheSavePromise=n}cancelRenderRuntimeRecovery(e){const t=this.activeRenderRuntimeRecovery;t&&(t.cancelReason=e,this.activeRenderRuntimeRecovery=void 0)}async runRenderRuntimeFallback(e,t=this.activeRenderRuntimeRecovery){if(t)try{return await this.runActiveRenderRuntimeFallback(e,t)}catch(n){if(!(n instanceof Ai))throw this.activeRenderRuntimeRecovery===t&&(this.activeRenderRuntimeRecovery=void 0),n;this.logRenderRuntimeFallback("cancelled",{recoveryId:t.recoveryId,reason:t.cancelReason||"runtime-recovery-cancelled",elapsedMs:Date.now()-t.startedAt}),this.releaseRenderRuntimeRecoveryCameras(t,t.cancelReason||"runtime-recovery-cancelled"),this.activeRenderRuntimeRecovery===t&&(this.activeRenderRuntimeRecovery=void 0);return}}async runActiveRenderRuntimeFallback(e,t){var T,p,m,M;const{recoveryId:n,startedAt:i,fromRenderMode:o,fromContextType:a}=t,{views:c}=t;this.assertRenderRuntimeRecoveryCurrent(t),this.serviceSyncReadyViews.clear(),this.logRenderRuntimeFallback("triggered",{recoveryId:n,from:`${o}/${a}`,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,reportStage:e.reportStage,contextLost:e.reportContextLost,glError:e.reportGlError,currentProgram:e.reportCurrentProgram,programLinked:e.reportProgramLinked,programHasUniforms:e.reportProgramHasUniforms,elapsedMs:Date.now()-i}),this.logRenderRuntimeFallback("drain-start",{recoveryId:n,viewIds:c.map(({viewId:v})=>v)});const l=await Promise.all(c.map(async v=>{const{viewId:R,scenePath:b}=v;if(!this.isRenderRuntimeRecoveryViewCurrent(v))return{viewId:R,status:"stale"};if(!b)return{viewId:R,status:"success"};try{return await this.forceDoneLocalWorks(R,b,"render-runtime-fallback")}catch(P){return{viewId:R,status:"failed",failureReason:P instanceof Error?P.message:String(P)}}}));this.assertRenderRuntimeRecoveryCurrent(t);const u=l.filter(v=>v.status==="failed");this.logRenderRuntimeFallback("drain-result",{recoveryId:n,status:u.length?"partial-failure":"success",failures:u.map(v=>({viewId:v.viewId,reason:v.failureReason})),elapsedMs:Date.now()-i},u.length?"warn":"info");const h=this.getRenderProbeCandidates(),d=Date.now(),f=h.findIndex(v=>v.renderMode===o&&(v.contextType===a||v.contextType==="webgl2"&&a==="webgl")),g=this.getRenderProbeProfile();let y=g&&this.createRenderProbeSession(g);const S=new Map,E=new Set,C=v=>`${v.renderMode}:${v.contextType}`,L=(v,R)=>{const b=C(v);let P=S.get(b);if(!P&&(P=this.probeRenderRuntimeCandidate(v,Math.min(Is,R),y||void 0),S.set(b,P),v.renderMode==="worker-image-bitmap"&&v.contextType!=="2d")){const D=h.find(z=>z.renderMode===v.renderMode&&z.contextType==="2d");D&&!S.has(C(D))&&S.set(C(D),this.probeRenderRuntimeCandidate(D,Math.min(Is,R),y||void 0))}return P||Promise.resolve(void 0)};try{for(let v=f+1;v<h.length;v+=1){this.assertRenderRuntimeRecoveryCurrent(t);const R=h[v];if(E.has(C(R)))continue;const b=Ht(R.renderMode,R.contextType);this.logRenderRuntimeFallback("triggered",{recoveryId:n,from:`${o}/${a}`,to:b,viewId:e.viewId,generation:e.viewGeneration,errorCode:e.reportErrorCode,elapsedMs:Date.now()-i});const P=ra-(Date.now()-d);if(P<=0){this.logRenderRuntimeFallback("failed",{recoveryId:n,target:b,errorCode:e.reportErrorCode,failureStage:"candidate-probe-budget"},"warn");break}const D=await L(R,P);this.assertRenderRuntimeRecoveryCurrent(t);let z=na(D);if(z&&R.contextType!=="2d"&&((p=(T=this.control).requiresCanvas2DCompanionRenderProbe)!=null&&p.call(T))){const k=ra-(Date.now()-d),N=h.find(Y=>Y.renderMode===R.renderMode&&Y.contextType==="2d"),W=k>0&&N?await L(N,k):void 0;N&&E.add(C(N)),this.assertRenderRuntimeRecoveryCurrent(t),z=z&&na(W)}const j=Hp(R,D),A=Ht(j.renderMode,j.contextType);if(this.logRenderRuntimeFallback(z?"candidate-probe-success":"candidate-probe-failed",{recoveryId:n,target:A,errorCode:e.reportErrorCode,probeStage:(m=D==null?void 0:D.programProbe)==null?void 0:m.stage,probeError:((M=D==null?void 0:D.programProbe)==null?void 0:M.error)||(D?void 0:"timeout")},z?"info":"warn"),!!z){y&&(this.closeRenderProbeSession(y),y=void 0),this.control.applyRuntimeRenderingDecision(j.renderMode,j.contextType,"runtime-webgl-program-failure",`Runtime render recovery selected ${A}`),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback";try{return await this.rebuildRenderRuntimeOnSerialQueue(c,j.renderMode,t),this.assertRenderRuntimeRecoveryCurrent(t),this.logRenderRuntimeFallback("success",{recoveryId:n,from:`${o}/${a}`,to:A,elapsedMs:Date.now()-i}),this.finishRenderRuntimeRecovery(t),{renderMode:j.renderMode,contextType:j.contextType}}catch(k){if(k instanceof Ai)throw k;this.logRenderRuntimeFallback("failed",{recoveryId:n,target:b,errorCode:e.reportErrorCode,failureStage:"candidate-rebuild",error:k instanceof Error?k.message:String(k),elapsedMs:Date.now()-i},"warn"),S.clear(),y=g&&this.createRenderProbeSession(g)}}}}finally{y&&this.closeRenderProbeSession(y)}this.assertRenderRuntimeRecoveryCurrent(t),this.logRenderRuntimeFallback("fallback-main-thread-start",{recoveryId:n,from:`${o}/${a}`,to:"mainThread+canvas2d",errorCode:e.reportErrorCode,elapsedMs:Date.now()-i});try{return this.control.applyRuntimeRenderingDecision("main-thread","2d","runtime-webgl-program-failure","All worker render candidates failed; downgraded to mainThread Canvas2D"),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback",await this.rebuildRenderRuntimeOnSerialQueue(c,"main-thread",t),this.assertRenderRuntimeRecoveryCurrent(t),this.logRenderRuntimeFallback("fallback-main-thread-success",{recoveryId:n,to:"mainThread+canvas2d",elapsedMs:Date.now()-i}),this.logRenderRuntimeFallback("success",{recoveryId:n,to:"mainThread+canvas2d",elapsedMs:Date.now()-i}),this.finishRenderRuntimeRecovery(t),{renderMode:"main-thread",contextType:"2d"}}catch(v){if(v instanceof Ai)throw v;const R=v instanceof Error?v.message:String(v);this.logRenderRuntimeFallback("fallback-main-thread-failed",{recoveryId:n,errorCode:e.reportErrorCode,failureStage:"main-thread-canvas2d-rebuild",error:R,elapsedMs:Date.now()-i},"error"),this.logRenderRuntimeFallback("failed",{recoveryId:n,target:"mainThread+canvas2d",errorCode:e.reportErrorCode,failureStage:"main-thread-canvas2d-rebuild",error:R,elapsedMs:Date.now()-i},"error"),this.failViewInitOnTerminalRuntime(e),this.activeRenderRuntimeRecovery===t&&(this.activeRenderRuntimeRecovery=void 0);return}}async rebuildRenderRuntimeOnSerialQueue(e,t,n){var o,a,c,l,u,h,d,f,g,y,S,E;const{recoveryId:i}=n;this.assertRenderRuntimeRecoveryCurrent(n),this.destroy(!0,!0);for(const C of e){if(this.assertRenderRuntimeRecoveryCurrent(n),!this.isRenderRuntimeRecoveryViewCurrent(C)){this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,status:"view-stale"});continue}const{view:L}=C;(a=(o=this.control).clearPendingViewInitState)==null||a.call(o,C.viewId),(l=(c=this.control).armPendingViewInit)==null||l.call(c,C.viewId);const T=this.cameraUpdateStateByView.get(C.viewId),p=T!=null&&T.isRecovering&&T.replayCamera?this.cloneCameraReplay(T.replayCamera):C.replayCamera;p&&(C.replayCamera=this.cloneCameraReplay(p),(T==null?void 0:T.recoveryOwner)!==void 0&&(C.cameraRecoveryOwner=T.recoveryOwner),this.control.queuePendingInitCamera(C.viewId,p.cameraOpt,p.scenePath)),L.focusScenePath=C.scenePath;const m=(p==null?void 0:p.cameraOpt)||C.cameraOpt;if(m&&(L.cameraOpt={...m}),this.logRenderRuntimeFallback("surface-reset-start",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((u=this.activeRenderRuntimeRecovery)==null?void 0:u.startedAt)||Date.now())}),await L.displayer.resetRenderSurface(),this.assertRenderRuntimeRecoveryCurrent(n),this.logRenderRuntimeFallback("surface-reset-completed",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((h=this.activeRenderRuntimeRecovery)==null?void 0:h.startedAt)||Date.now())}),!this.isRenderRuntimeRecoveryViewCurrent(C)){this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,status:"view-removed",elapsedMs:Date.now()-(((d=this.activeRenderRuntimeRecovery)==null?void 0:d.startedAt)||Date.now())});continue}if(this.logRenderRuntimeFallback("surface-reset",{recoveryId:i,viewId:C.viewId,generation:this.viewGenerationById.get(C.viewId),target:`${t}/${this.control.renderingCompatibilityDecision.contextType}`,elapsedMs:Date.now()-(((f=this.activeRenderRuntimeRecovery)==null?void 0:f.startedAt)||Date.now())}),this.control.isUseOffscreenTransfer){const M=L.displayer.canvasBgRef.current,v=L.displayer.canvasServiceFloatRef.current,R=L.displayer.canvasFloatRef.current;if(!M||!v||!R)throw new Error(`render surface unavailable: ${C.viewId}`);L.displayer.setTransferControlToOffscreenCanvas({bgCanvas:M,serviceCanvas:v,localCanvas:R})}this.logRenderRuntimeFallback("surface-created",{recoveryId:i,viewId:C.viewId,elapsedMs:Date.now()-(((g=this.activeRenderRuntimeRecovery)==null?void 0:g.startedAt)||Date.now())})}if(this.logRenderRuntimeFallback("reinit-start",{recoveryId:i,target:`${t}/${this.control.renderingCompatibilityDecision.contextType}`,elapsedMs:Date.now()-(((y=this.activeRenderRuntimeRecovery)==null?void 0:y.startedAt)||Date.now())}),await this.init(!0),this.assertRenderRuntimeRecoveryCurrent(n),this.control.renderMode!==t)throw new Error(`render mode changed during reinit: expected=${t}, actual=${this.control.renderMode}`);for(const C of e){if(this.assertRenderRuntimeRecoveryCurrent(n),!this.isRenderRuntimeRecoveryViewCurrent(C))continue;const{view:L}=C,T=this.cameraUpdateStateByView.get(C.viewId);T!=null&&T.isRecovering&&T.replayCamera&&(C.replayCamera=this.cloneCameraReplay(T.replayCamera),C.cameraRecoveryOwner=T.recoveryOwner,L.cameraOpt={...T.replayCamera.cameraOpt});const p=this.viewContainerManager.getViewInitData(C.viewId);if(!p)throw new Error(`view init data unavailable: ${C.viewId}`);(E=(S=this.control).resetPendingInitRendererBaseline)==null||E.call(S,C.viewId),this.createViewWorker(C.viewId,p,L.displayer);const m=this.viewGenerationById.get(C.viewId);if(m===void 0)throw new Error(`view generation unavailable: ${C.viewId}`);this.logRenderRuntimeFallback("init-sent",{recoveryId:i,viewId:C.viewId,generation:m,elapsedMs:Date.now()-n.startedAt});const M=await this.waitForViewInitCompletion(C.viewId);if(this.assertRenderRuntimeRecoveryCurrent(n),!!this.isRenderRuntimeRecoveryViewCurrent(C)&&M==="timeout")throw new Error(`render view init completion timeout: ${C.viewId}`)}}assertMarkmapRuntimeRegistered(e,t){try{tM()}catch(n){const i=n instanceof Error?n.message:String(n);throw this.Logger.error(`[Appliance]: [markmap] ${e} failed: ${i}; viewId=${t}`),n}}destroy(e=!1,t=!1){var o,a,c,l,u,h,d,f,g,y,S,E,C,L,T,p,m,M;const n=[],i=(v,R)=>{try{R()}catch(b){n.push(`${v}: ${b instanceof Error?b.message:String(b)}`)}};e||this.cancelRenderRuntimeRecovery("external-destroy"),this.initGeneration++,this.viewGenerationById.forEach((v,R)=>{this.viewGenerationById.set(R,v+1)}),this.animationId!==void 0&&(cancelAnimationFrame(this.animationId),this.animationId=void 0),this.viewInitAckWaiters.forEach(v=>{v.forEach(R=>{clearTimeout(R.timer),R.resolve(!1)})}),this.viewInitAckWaiters.clear(),this.serviceSyncCommitWaiters.forEach(v=>{clearTimeout(v.timer),v.resolve(!1)}),this.serviceSyncCommitWaiters.clear(),this.viewServiceReadyWaiters.forEach(v=>{v.forEach(R=>{clearTimeout(R.timer),R.resolve(!1)})}),this.viewServiceReadyWaiters.clear(),this.initReconcileTasks.clear(),this.fullLayerFrameStateByView.clear(),this.hasMainViewInitAck=!1,e||this.mainViewInitReady.cancel(),this.serviceSyncReadyViews.clear(),this.initAckedViewIds.clear(),this.pendingTransportMessages.clear(),(o=this.viewInitRecoveryAttempts)==null||o.clear(),(a=this.viewInitRecoveryDestroying)==null||a.clear();for(const v of this.viewInitAckTimeoutTimers.values())clearTimeout(v);this.viewInitAckTimeoutTimers.clear(),this.renderRuntimeCacheSavePromise=void 0,this.isRenderTransportReady=!1,this.initCameraOptByView.clear(),this.mainViewInitAckCallbacks.clear(),i("method-builder",()=>{var v;return(v=this.methodBuilder)==null?void 0:v.destroy()}),i("un-writable",()=>this.unWritable()),i("task-queue",()=>this.destroyTaskQueue(t)),this.taskBatchData.clear(),t||(this.cameraUpdateStateByView.clear(),(c=this.cameraClearReplayByView)==null||c.clear()),this.cameraFailureSequenceByView.clear(),this.cameraTaskSequenceByView.clear(),(l=this.localWorkFinalizeQueueByView)==null||l.clear(),this.operationBarrierQueueByView.clear(),(u=this.willSelectorWorkIdByView)==null||u.clear(),(h=this.operationBarrierInvalidationWaitersByView)==null||h.forEach(v=>{v.forEach(R=>R())}),(d=this.operationBarrierInvalidationWaitersByView)==null||d.clear(),(f=this.operationBarrierEpochByView)==null||f.clear(),[...this.fullLayerBitmapEraseTxns.keys()].forEach(v=>{this.finishFullLayerBitmapEraseTxn(v,"aborted")}),this.fullLayerBitmapEraseTxnWaiters.forEach(v=>{v.forEach(R=>R("aborted"))}),this.fullLayerBitmapEraseTxnWaiters.clear(),this.cancelledEraseTxnIds.clear(),this.cancelledEraseTxnOwners.clear(),(g=this.cancelledLocalWorkOwners)==null||g.clear();for(const v of this.pendingDprByView.keys())(S=(y=this.control)==null?void 0:y.viewContainerManager.getView(v))==null||S.displayer.cancelDprUpdate();this.pendingDprByView.clear(),(E=this.pendingDprOwnerByView)==null||E.clear(),this.viewRecoveryQueueByView.clear(),this.cameraUpdateEndWaitersByView.forEach((v,R)=>{var b;t&&((b=this.cameraUpdateStateByView.get(R))!=null&&b.isRecovering)||(v.forEach(P=>P()),this.cameraUpdateEndWaitersByView.delete(R))}),this.viewLifecycleIdleWaitersByView.forEach((v,R)=>{var b;t&&((b=this.cameraUpdateStateByView.get(R))!=null&&b.isRecovering)||(v.forEach(P=>P()),this.viewLifecycleIdleWaitersByView.delete(R))}),this.tmpImageConfigMap.clear(),this.localPointsBatchData.clear(),this.localEventQueueByView.clear(),(C=this.localInputEpochByView)==null||C.clear(),(L=this.localInputTransactionEpochByView)==null||L.clear(),this.localEventQueue=Promise.resolve(),this.localDoneDispatchTimersByView.forEach(v=>{v.forEach(R=>clearTimeout(R)),v.clear()}),this.localDoneDispatchTimersByView.clear();for(const v of((T=this.delayWorkStateToDoneResolveByView)==null?void 0:T.values())||[])v(!1);(p=this.delayWorkStateToDoneResolveByView)==null||p.clear(),(m=this.localDoneWaitByView)==null||m.clear(),(M=this.delayWorkStateToDoneResolve)==null||M.call(this,!1),this.delayWorkStateToDoneResolve=void 0,this.localDoneWait=void 0,this.isActive=!1,this.clearAllResolveMap.forEach(({timer:v,resolve:R},b)=>{v&&clearTimeout(v),R==null||R(b)}),this.clearAllResolveMap.clear(),this.snapshotMap.forEach(({resolve:v,value:R})=>{v(R.map(b=>b||null))}),this.snapshotMap.clear(),this.snapshotRequestIdByViewScene.clear(),this.boundingRectMap.forEach(({resolve:v})=>{v({x:0,y:0,w:0,h:0})}),this.boundingRectMap.clear(),this.boundingRectRequestIdByViewScene.clear(),this.refreshTextRenderResolveMap.forEach(({timer:v,resolve:R})=>{v&&clearTimeout(v),R==null||R(!1)}),this.refreshTextRenderResolveMap.clear(),this.settlePendingMarkmapRequestsOnDestroy(),this.getVNodeInfoResolveMap.forEach(({timer:v,resolve:R},b)=>{v&&clearTimeout(v),R==null||R({uuid:b})}),this.getVNodeInfoResolveMap.clear(),this.clearReRenders(1/0),i("font-face",()=>this.fontFaceManager.destroy()),i("main-thread",()=>{var v;return(v=this.mainThread)==null?void 0:v.destroy()}),this.mainThread=void 0,i("background-thread",()=>{var v;return(v=this.backgroundThreadManager)==null?void 0:v.destroy()}),this.backgroundThreadManager=void 0,i("full-worker",()=>{var v;return(v=this.fullWorker)==null?void 0:v.terminate()}),this.fullWorker=void 0,i("sub-worker",()=>{var v;return(v=this.subWorker)==null?void 0:v.terminate()}),this.subWorker=void 0,n.length&&this.Logger.error(`[Appliance]: MainEngine destroy completed with cleanup errors: ${n.join("; ")}`)}settlePendingMarkmapRequestsOnDestroy(){this.markmapIdResolveMap.forEach(({timer:e,resolve:t})=>{e&&clearTimeout(e),t==null||t()}),this.markmapIdResolveMap.clear()}get consumeCount(){return this._consumeCount}set consumeCount(e){this._consumeCount=e}acceptConsumeAck(e,t){if(!ye.isNumber(e)||t&&!Array.from(this.localPointsBatchData.keys()).some(i=>i.toString()===t))return!1;const n=Math.max(this.consumeCount,e);if(n===this.consumeCount)return!1;if(this.consumeCount=n,t){const i=this.getFullLayerBitmapEraseTxns().get(t);i&&i.phase!=="committed"&&i.phase!=="aborting"&&i.phase!=="aborted"&&(i.doingAckCount=Math.max(i.doingAckCount||0,n))}return this.runAnimation(),!0}get postCount(){return this._postCount}isServiceSyncReady(e){return this.serviceSyncReadyViews.has(e)}isRenderRuntimeRecovering(){return this.activeRenderRuntimeRecovery!==void 0}isViewInitReady(e){return this.isViewInitAck(e)&&this.isServiceSyncReady(e)}set postCount(e){this._postCount=e}get viewContainerManager(){return this.control.viewContainerManager}get collector(){return this.control.collector}get isRunSubWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.PencilEraser||e===q.BitMapEraser||e===q.LaserPen||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Selector}get isCanDrawWork(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.LaserPen||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Triangle||e===q.Rhombus||e===q.BitMapEraser||e===q.PencilEraser}get isUseZIndex(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Text||e===q.Image}get isCanRecordUndoRedo(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Text||e===q.Image}get isCanSentCursor(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.Text||e===q.LaserPen||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Triangle||e===q.Rhombus||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser||e===q.Selector||e===q.Clicker}get isPostCountType(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.Arrow||e===q.Straight||e===q.Ellipse||e===q.Rectangle||e===q.Star||e===q.Polygon||e===q.SpeechBalloon||e===q.Triangle||e===q.Rhombus||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser||e===q.Selector}get isCanPostDraw(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Pencil||e===q.PencilEraser||e===q.BitMapEraser}get isCanStartEventConsum(){var t;const e=(t=this.currentToolsData)==null?void 0:t.toolsType;return e===q.Selector||e===q.Eraser||e===q.PencilEraser||e===q.BitMapEraser}async init(e=!1){e||this.destroy(!0),this.mainViewInitReady.begin(),this.control.emitInitLoadingChange({loading:!0,phase:"worker",status:"start"});try{this.Logger.info(`[Appliance]: [plugin-options] ${JSON.stringify(this.control.pluginOptions.extras)}`)}catch(t){this.Logger.warn(`[Appliance]: [plugin-options] stringify failed: ${(t==null?void 0:t.message)||t}`)}try{if(await this.on()===!1)return;this.internalMsgEmitterListener(),this.isActive=!0,this.control.emitInitLoadingChange({loading:!0,phase:"worker",status:"success"})}catch(t){throw this.mainViewInitReady.cancel(),this.control.emitInitLoadingChange({loading:!1,phase:"worker",status:"error"}),t}}async useBackgroundThread(){this.Logger.info("[Appliance]: use background thread");const{BackgroundThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-sAPxdyvQ.js"));this.backgroundThreadManager=new e(this)}async useMainThread(){this.Logger.info("[Appliance]: no OffscreenCanvas");const{MainThreadManagerImpl:e}=await Promise.resolve().then(()=>require("./index-Bf_s6RX4.js"));this.mainThread=new e(this),this.isRenderTransportReady=!0,this.flushPendingTransportInitMessages()}getRenderProbeCandidates(){const e=this.control.renderingCompatibilityDecision,t=e.capabilities,n=e.contextType==="webgl2"?["webgl2","2d"]:e.contextType==="webgl"?["webgl","2d"]:["2d"],i=e.renderMode==="worker-image-bitmap"&&e.reason!=="use-simple-false"?["worker-image-bitmap"]:["worker-offscreen-transfer","worker-image-bitmap"],o=[];for(const a of i)if(!(a==="worker-offscreen-transfer"&&!t.offscreenTransfer||a==="worker-image-bitmap"&&!t.imageBitmap))for(const c of n)c==="webgl2"&&!t.webgl2||c==="webgl"&&!t.webgl||o.push({renderMode:a,contextType:c});return o}getRenderProbeProfile(){return{width:$p,height:$p,dpr:1,testRect:{...kwe}}}createRenderProbeDOMCanvas(e){if(typeof document>"u")return;const t=document.createElement("div");t.className="appliance-render-test-container",t.setAttribute("aria-hidden","true"),Object.assign(t.style,{position:"fixed",left:"0",top:"0",width:"1px",height:"1px",overflow:"hidden",pointerEvents:"none",zIndex:"-2147483647",contain:"layout style size"});let n;const i=()=>(n==null||n.remove(),n=document.createElement("canvas"),n.className="appliance-render-test-canvas",n.width=Math.max(1,Math.floor(e.width*e.dpr)),n.height=Math.max(1,Math.floor(e.height*e.dpr)),Object.assign(n.style,{width:"1px",height:"1px",opacity:"0",pointerEvents:"none"}),t.appendChild(n),n);return document.body.appendChild(t),i(),{get canvas(){return n},replaceCanvas:i,cleanup:()=>t.remove()}}async probeRenderRuntimeCandidate(e,t=Is,n){const i=!n,o=(n==null?void 0:n.profile)||this.getRenderProbeProfile(),a=n||o&&this.createRenderProbeSession(o);if(a)try{return await this.requestRenderProbeCandidate(a,e,t)}finally{i&&this.closeRenderProbeSession(a)}}createRenderProbeSession(e){const t=this.createRenderProbeDOMCanvas(e);if(!t)return;let n;try{n=new Worker(this.fullWorkerUrl,{type:"classic"})}catch{t.cleanup();return}const i={worker:n,profile:e,domTest:t,pending:new Map,destinationQueue:Promise.resolve(),closed:!1};n.onmessage=a=>{var h,d,f;const c=a.data;if(!c||c.type!==le.ProbeRenderCapabilities||!c.requestId)return;const l=i.pending.get(c.requestId);if(!l){try{(f=(d=(h=c.workerCapabilities)==null?void 0:h.programProbe)==null?void 0:d.imageBitmap)==null||f.close()}catch{}return}clearTimeout(l.timer);const u=i.destinationQueue.then(()=>this.finalizeRenderProbeResponse(i,l,c.workerCapabilities));i.destinationQueue=u.then(()=>{},()=>{}),u.then(g=>this.resolveRenderProbeEntry(i,c.requestId,l,g),()=>this.resolveRenderProbeEntry(i,c.requestId,l,void 0))};const o=()=>{i.closed=!0;for(const[a,c]of i.pending)i.pending.delete(a),clearTimeout(c.timer),c.resolve(void 0)};return n.onerror=o,n.onmessageerror=o,i}closeRenderProbeSession(e){if(e.closed&&e.pending.size===0){e.worker.terminate(),e.domTest.cleanup();return}e.closed=!0;for(const[t,n]of e.pending)e.pending.delete(t),clearTimeout(n.timer),n.resolve(void 0);e.worker.terminate(),e.domTest.cleanup()}resolveRenderProbeEntry(e,t,n,i){e.pending.get(t)===n&&(e.pending.delete(t),clearTimeout(n.timer),n.resolve(i))}requestRenderProbeCandidate(e,t,n){if(e.closed)return Promise.resolve(void 0);const i=`render-probe-${Date.now()}-${Math.random().toString(36).slice(2)}`,o=Date.now()+n;let a,c,l;try{if(t.renderMode==="worker-offscreen-transfer"){const u=e.domTest.replaceCanvas();c=u,a=u.transferControlToOffscreen()}else e.imageBitmapDestination||(e.imageBitmapDestination=e.domTest.replaceCanvas()),l=e.imageBitmapDestination;return new Promise(u=>{var d;const h=setTimeout(()=>{const f=e.pending.get(i);f&&(e.pending.delete(i),f.resolve(void 0))},n);e.pending.set(i,{candidate:t,sourceCanvas:c,destinationCanvas:l,deadlineAt:o,timer:h,resolve:u});try{e.worker.postMessage(new Set([{msgType:le.ProbeRenderCapabilities,type:le.ProbeRenderCapabilities,requestId:i,requestedContextType:t.contextType,probeTransport:t.renderMode,probeCanvas:a,probeProfile:e.profile}]),a?[a]:[])}catch{if(((d=e.pending.get(i))==null?void 0:d.resolve)!==u)return;e.pending.delete(i),clearTimeout(h),u(void 0)}})}catch{return Promise.resolve(void 0)}}async finalizeRenderProbeResponse(e,t,n){var a,c,l;const i=n==null?void 0:n.programProbe,o=i==null?void 0:i.imageBitmap;if(!n||!i)return n;try{if(i.passed!==!0)return n;const u=t.candidate.renderMode==="worker-image-bitmap"&&i.expectedPixelChecks||i.pixelChecks;if(!u||u.length<4)throw new Error("probe-pixel-check-template-missing");const h={width:Math.max(1,Math.floor(e.profile.width*e.profile.dpr)),height:Math.max(1,Math.floor(e.profile.height*e.profile.dpr))};if(((a=i.canvasSize)==null?void 0:a.width)!==h.width||((c=i.canvasSize)==null?void 0:c.height)!==h.height)throw new Error("probe-canvas-size-mismatch");let d;if(t.candidate.renderMode==="worker-offscreen-transfer"){if(!t.sourceCanvas)throw new Error("offscreen-transfer-dom-canvas-unavailable");d=await this.readTransferredCanvasDestinationPixels(t.sourceCanvas,h,u,t.deadlineAt)}else{if(!o)throw new Error("image-bitmap-missing");if(!i.imageBitmapRect)throw new Error("image-bitmap-rect-missing");const g=(l=t.destinationCanvas)==null?void 0:l.getContext("2d");if(!g)throw new Error("destination-2d-context-unavailable");g.clearRect(0,0,h.width,h.height);const{x:y,y:S,width:E,height:C}=i.imageBitmapRect;g.drawImage(o,0,0,E,C,y,S,E,C),d=Gp(g,u)}const f=Qu(d);return n.contextSupported=n.contextSupported&&f,n.programProbe={...i,passed:i.passed===!0&&f,stage:f?i.stage:"destination-pixel-check",error:f?i.error:t.candidate.renderMode==="worker-offscreen-transfer"?"offscreen-transfer-destination-pixel-check-failed":"destination-pixel-check-failed",destinationPixelChecks:d,imageBitmap:void 0},n}catch(u){return n.contextSupported=!1,n.programProbe={...i,passed:!1,stage:"destination-pixel-check",error:yr(u),destinationPixelChecks:void 0,imageBitmap:void 0},n}finally{try{o==null||o.close()}catch{}}}async readTransferredCanvasDestinationPixels(e,t,n,i){if(typeof document>"u")return;const o=document.createElement("canvas");o.width=t.width,o.height=t.height;const a=o.getContext("2d");if(!a)return;let c,l=0;for(;Date.now()<i;)if(await Awe(i),l+=1,!(l<2)&&(a.clearRect(0,0,t.width,t.height),a.drawImage(e,0,0,t.width,t.height,0,0,t.width,t.height),c=Gp(a,n),Qu(c)))return c;return c}async probeAndLockRenderRuntime(){var u,h;const e=this.getRenderProbeCandidates(),t=this.getRenderProbeProfile(),n=Date.now();this.Logger.info(`[Appliance]: [render-probe] stage=probe-start candidates=${e.map(d=>Ht(d.renderMode,d.contextType)).join(",")}`);const i=t&&this.createRenderProbeSession(t),o=new Map,a=new Set,c=d=>`${d.renderMode}:${d.contextType}`,l=(d,f)=>{const g=c(d);let y=o.get(g);if(!y&&(y=this.probeRenderRuntimeCandidate(d,Math.min(Is,f),i||void 0),o.set(g,y),d.renderMode==="worker-image-bitmap"&&d.contextType!=="2d")){const S=e.find(E=>E.renderMode===d.renderMode&&E.contextType==="2d");S&&!o.has(c(S))&&o.set(c(S),this.probeRenderRuntimeCandidate(S,Math.min(Is,f),i||void 0))}return y||Promise.resolve(void 0)};try{for(const d of e){if(a.has(c(d)))continue;const f=ra-(Date.now()-n);if(f<=0)break;const g=Ht(d.renderMode,d.contextType);this.Logger.info(`[Appliance]: [render-probe] stage=candidate-start renderModel=${g} canvasSize=${t?`${Math.floor(t.width*t.dpr)}x${Math.floor(t.height*t.dpr)}`:"unavailable"} logicalSize=${t?`${t.width}x${t.height}`:"unavailable"} dpr=${(t==null?void 0:t.dpr)??"unavailable"} rect=${t?`${t.testRect.x},${t.testRect.y},${t.testRect.width}x${t.testRect.height}`:"unavailable"}`);const y=await l(d,f),S=na(y);let E=S,C,L;if(E&&d.contextType!=="2d"&&((h=(u=this.control).requiresCanvas2DCompanionRenderProbe)!=null&&h.call(u))){C=e.find(M=>M.renderMode===d.renderMode&&M.contextType==="2d");const m=ra-(Date.now()-n);L=C&&m>0?await l(C,m):void 0,C&&a.add(c(C)),E=E&&na(L)}const T=Hp(d,y),p=Ht(T.renderMode,T.contextType);if(!E){const m=S?"companion":"primary",M=S?L:y,v=M==null?void 0:M.programProbe,R=S?Ht((C==null?void 0:C.renderMode)||d.renderMode,(C==null?void 0:C.contextType)||"2d"):p,b=(v==null?void 0:v.error)||(M?"probe-result-incomplete":S?"timeout-or-budget":"timeout");this.Logger.warn(`[Appliance]: [render-probe] stage=candidate-failed renderModel=${p} requestedRenderModel=${g} failureSource=${m} failedRenderModel=${R} stageDetail=${(v==null?void 0:v.stage)||"probe-result-incomplete"} error=${b} canvasSize=${v!=null&&v.canvasSize?`${v.canvasSize.width}x${v.canvasSize.height}`:"unavailable"} rect=${v!=null&&v.testRect?`${v.testRect.x},${v.testRect.y},${v.testRect.width}x${v.testRect.height}`:"unavailable"} expected=rgba(255,0,0,255)/transparent workerActual=${JSON.stringify((v==null?void 0:v.pixelChecks)||[])} destinationActual=${JSON.stringify((v==null?void 0:v.destinationPixelChecks)||[])}`)}if(E)return this.control.applyRuntimeRenderingDecision(T.renderMode,T.contextType,"render-probe-passed",`render-probe-passed:${p}`),this.control.renderingCompatibilityDecision.renderRuntimeSource="probe",this.Logger.info(`[Appliance]: [render-probe] stage=probe-success renderModel=${p}${C?" companion=passed":""}`),!0}}finally{i&&this.closeRenderProbeSession(i)}return this.Logger.warn("[Appliance]: [render-probe] stage=probe-failed renderModel=mainThread+canvas2d"),this.control.applyRuntimeRenderingDecision("main-thread","2d","worker-program-probe-failed","All worker render candidates failed"),this.control.renderingCompatibilityDecision.renderRuntimeSource="fallback",await this.useMainThread(),!1}async on(e=!1){var a,c;const t=++this.initGeneration;if(!e&&(this.control.isUseBackgroundThread&&await this.useBackgroundThread(),t!==this.initGeneration))return!1;if(!this.control.hasOffscreenCanvas){await this.useMainThread(),this.control.logFinalRenderDecision();return}if(!this.fullWorkerUrl||!this.control.isUseSimple&&!this.subWorkerUrl)throw new Error("[Appliance]: no worker url config");if(((c=(a=this.control.pluginOptions)==null?void 0:a.extras)==null?void 0:c.useWorker)==="auto"&&this.control.renderingCompatibilityDecision.renderRuntimeCacheState!=="hit"&&!this.control.isRenderRuntimeDecisionLocked()){const l=await this.probeAndLockRenderRuntime();if(t!==this.initGeneration)return!1;if(!l){this.control.logFinalRenderDecision();return}}else this.control.renderingCompatibilityDecision.renderRuntimeCacheState==="hit"&&this.Logger.info(`[Appliance]: [render-probe] stage=probe-skipped reason=cache-hit renderModel=${Ht(this.control.renderMode,this.control.renderingCompatibilityDecision.contextType)}`);const i=(l,u)=>()=>{t!==this.initGeneration||!u()||this.scheduleRenderRuntimeFallback({type:le.ReportError,reportErrorCode:"RENDERER_RUNTIME_ERROR",reportStage:`${l}-transport-error`,reportError:`${l} transport error`})};if(this.fullWorker=new Worker(this.fullWorkerUrl,{type:"classic"}),!this.control.isUseSimple){this.subWorker=new Worker(this.subWorkerUrl,{type:"classic"});const l=this.subWorker;l.onerror=i("subWorker",()=>this.subWorker===l),l.onmessageerror=i("subWorker-message",()=>this.subWorker===l)}const o=this.fullWorker;o.onerror=i("fullWorker",()=>this.fullWorker===o),o.onmessageerror=i("fullWorker-message",()=>this.fullWorker===o),this.fullWorker.onmessage=l=>{if(l.data){if(!this.acceptWorkerBatch(l.data,"fullWorker"))return;const{render:u,sp:h,fullWorkerDrawCount:d,workerTasksqueueCount:f,cameraTaskId:g,cameraTaskStatus:y,cameraTaskError:S,cameraSettledTaskId:E,viewId:C,viewGeneration:L,consumeCount:T,consumeWorkId:p}=l.data;if(C&&ye.isNumber(g)){const P=R0(y,S,"fullWorker");P?this.failCameraTask(C,g,P,L):this.ackCameraTask(C,g,L)}C&&ye.isNumber(E)?this.ackCameraSettledTask(C,E,L):this.isBusy&&f&&this.setWorkerTasksqueueCount(f);const m=this.control.isUseOffscreenTransfer?[]:(h||[]).filter(({type:P})=>P===le.ServiceSyncCommit),M=m.length?(h||[]).filter(({type:P})=>P!==le.ServiceSyncCommit):h;M!=null&&M.length&&this.collectorSyncData(M);const v=this.filterCancelledEraseRenders(u);if(this.control.isUseSimple){if(this.control.isUseOffscreenTransfer){this.acceptConsumeAck(T,p);return}let P=!0;if(v.length)try{this.viewContainerManager.render(v)}catch(D){P=!1,this.Logger.error(`[Appliance]: Bitmap/Pencil render apply failed; viewId=${C||"unknown"}; workId=${p||"unknown"}; error=${D instanceof Error?D.message:String(D)}`),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:C,viewGeneration:C?this.viewGenerationById.get(C):void 0,reportErrorCode:"IMAGE_BITMAP_RENDER_FAILED",reportStage:"main-thread-draw-image-bitmap",reportError:D instanceof Error?D.message:String(D)})}P&&m.length&&this.collectorSyncData(m),this.acceptConsumeAck(T,p);return}const R=v;if(d&&C){if(this.fullWorkerDrawCount=d,this.fullWorkerDrawCount<1/0){const P=Math.max(this.maxDrawCount,this.fullWorkerDrawCount);this.setMaxDrawCount(P),this.clearReRenders(this.fullWorkerDrawCount)}else this.setMaxDrawCount(0),this.clearReRenders(1/0);if(this.reRenders.size)for(const P of this.reRenders.values())R.push(...P)}let b=!0;if(R.length)try{this.viewContainerManager.render(R)}catch(P){b=!1,this.Logger.error(`[Appliance]: Bitmap/Pencil render apply failed; viewId=${C||"unknown"}; workId=${p||"unknown"}; error=${P instanceof Error?P.message:String(P)}`),this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:C,viewGeneration:C?this.viewGenerationById.get(C):void 0,reportErrorCode:"IMAGE_BITMAP_RENDER_FAILED",reportStage:"main-thread-draw-image-bitmap",reportError:P instanceof Error?P.message:String(P)})}b&&m.length&&this.collectorSyncData(m),this.acceptConsumeAck(T,p)}},this.isRenderTransportReady=!0,this.control.lockRenderRuntimeDecision(),this.control.logFinalRenderDecision(),this.flushPendingTransportInitMessages(),this.subWorker&&(this.subWorker.onmessage=l=>{if(l.data){if(!this.acceptWorkerBatch(l.data,"subWorker"))return;const{render:u,sp:h,subWorkerDrawCount:d,consumeCount:f,consumeWorkId:g}=l.data;h!=null&&h.length&&this.collectorSyncData(h);const y=this.filterCancelledEraseRenders(u),S=y;if(ye.isNumber(d)){if(this.subWorkerDrawCount=d,this.fullWorkerDrawCount<1/0){const E=Math.max(this.maxDrawCount,this.subWorkerDrawCount);this.setMaxDrawCount(E)}if(y.length)if(this.subWorkerDrawCount>this.fullWorkerDrawCount){const E=[];for(const C of y)C.imageBitmap&&(C.isUnClose=!0,E.push(C));this.reRenders.set(this.subWorkerDrawCount,E)}else this.reRenders.size&&this.clearReRenders(this.subWorkerDrawCount)}if(S.length)try{this.viewContainerManager.render(S)}catch(E){this.Logger.error(`[Appliance]: SubWorker render apply failed; workId=${g||"unknown"}; error=${E instanceof Error?E.message:String(E)}`)}this.acceptConsumeAck(f,g)}})}async clearFontCache(){return await this.fontFaceManager.clearFontCache()}async getFontCacheStatus(){return await this.fontFaceManager.getFontCacheStatus()}getLastFontFacesAlreadyReady(){return this.fontFaceManager.getLastFontFacesAlreadyReady()}async loadFontFaces(){return await this.fontFaceManager.loadFontFaces()}createInternalRequestId(e){return`${e}_${this.now}_${Math.random().toString(36).slice(2)}`}waitRefreshTextRender(e){return new Promise(t=>{const n=setTimeout(()=>{this.refreshTextRenderResolveMap.delete(e),t(!1)},5e3);this.refreshTextRenderResolveMap.set(e,{timer:n,resolve:t})})}resolveRefreshTextRender(e,t=!0){var i;if(!e)return;const n=this.refreshTextRenderResolveMap.get(e);n&&(n.timer&&clearTimeout(n.timer),(i=n.resolve)==null||i.call(n,t),this.refreshTextRenderResolveMap.delete(e))}async refreshTextRenderForWorker(e){if(!e.length)return!0;const t=new Set,n=[];for(const o of e){if(!o.viewId||!this.isViewInitReady(o.viewId))continue;const a=this.createInternalRequestId("refresh_text_render");n.push(this.waitRefreshTextRender(a)),t.add({...o,requestId:a,msgType:le.UpdateNode,type:le.UpdateNode,dataType:xe.Service,toolsType:q.Text,refreshTextRender:!0,useAnimation:!1,willRefresh:!0})}return this.post(t),(await Promise.all(n)).every(Boolean)}buildPropertyAppliedData(e,t,n){switch(e){case Te.SetColorNode:return{strokeColor:t==null?void 0:t.strokeColor,fillColor:t==null?void 0:t.fillColor,fontColor:t==null?void 0:t.fontColor,fontBgColor:t==null?void 0:t.fontBgColor,thickness:t==null?void 0:t.thickness,strokeType:t==null?void 0:t.strokeType};case Te.SetFontStyle:return{fontSize:t==null?void 0:t.fontSize,bold:t==null?void 0:t.bold,italic:t==null?void 0:t.italic,underline:t==null?void 0:t.underline,lineThrough:t==null?void 0:t.lineThrough};case Te.SetLock:return{isLocked:n==null?void 0:n.isLocked};case Te.SetShapeOpt:return{vertices:t==null?void 0:t.vertices,innerVerticeStep:t==null?void 0:t.innerVerticeStep,innerRatio:t==null?void 0:t.innerRatio,placement:t==null?void 0:t.placement};case Te.ZIndexNode:return{zIndexLayer:n==null?void 0:n.zIndexLayer};default:return{}}}clearReRenders(e=1/0){for(const t of this.reRenders.keys())if(ye.isNumber(Number(t))&&Number(t)<=e){const n=this.reRenders.get(Number(t));n==null||n.forEach(i=>{try{this.retireRenderedImageBitmap(i)}catch(o){this.Logger.error(`[Appliance]: releasing deferred render bitmap failed; drawCount=${t}; error=${o instanceof Error?o.message:String(o)}`)}}),this.reRenders.delete(t)}}retireRenderedImageBitmap(e){var n;const t=(n=this.control)==null?void 0:n.viewContainerManager;t?t.retireRenderImageBitmap(e.viewId,e.imageBitmap):this.closeImageBitmap(e.imageBitmap)}getFullLayerBitmapEraseTxns(){return this.fullLayerBitmapEraseTxns||(this.fullLayerBitmapEraseTxns=new Map),this.fullLayerBitmapEraseTxns}getBitmapEraserRenderer(){return this.control.disableUseWorker?"main-thread":this.control.isUseSimple?"simple-worker":"full-worker"}logBitmapEraserTrace(e,t,n={}){try{const i=this.Logger,o=`[Appliance]: [bitmap-eraser] stage=${e} ${JSON.stringify({viewId:t.viewId,scenePath:t.scenePath,workId:t.workId,renderer:this.getBitmapEraserRenderer(),...n})}`;if(e==="point-limit-force-done"){i.info(o);return}i.infoDebounced?i.infoDebounced(`bitmap-eraser:${t.viewId}:${t.workId}`,o):i.info(o)}catch{}}finishFullLayerBitmapEraseTxn(e,t){var o,a,c,l;const n=this.getFullLayerBitmapEraseTxns().get(e);n!=null&&n.commitTimeoutId&&clearTimeout(n.commitTimeoutId),n&&(n.phase=t==="committed"?"committed":"aborted",this.logBitmapEraserTrace("terminal",n,{status:t,elapsedMs:Math.max(0,Date.now()-(n.startedAt??Date.now())),forceDoneReason:n.forceDoneReason,doingAckCount:n.doingAckCount||0,pointCount:n.inputPointCount||0,updatedTargets:((o=n.updatedTargetIds)==null?void 0:o.size)||0,deletedTargets:((a=n.deletedTargetIds)==null?void 0:a.size)||0})),this.getFullLayerBitmapEraseTxns().delete(e);const i=(c=this.fullLayerBitmapEraseTxnWaiters)==null?void 0:c.get(e);i==null||i.forEach(u=>u(t)),(l=this.fullLayerBitmapEraseTxnWaiters)==null||l.delete(e)}async waitForFullLayerBitmapEraseTxns(e,t){const n=[...t].filter(a=>this.getFullLayerBitmapEraseTxns().has(a));if(!n.length)return;if(this.fullLayerBitmapEraseTxnWaiters||(this.fullLayerBitmapEraseTxnWaiters=new Map),(await Promise.all(n.map(a=>new Promise(c=>{let l=this.fullLayerBitmapEraseTxnWaiters.get(a);l||(l=new Set,this.fullLayerBitmapEraseTxnWaiters.set(a,l)),l.add(c)})))).includes("aborted")){const a=this.viewRecoveryQueueByView.get(e);a&&await a.catch(()=>{})}}rememberCancelledEraseTxn(e){var o;this.cancelledEraseTxnOwners||(this.cancelledEraseTxnOwners=new Map),this.cancelledEraseTxnIds.delete(e),this.cancelledEraseTxnIds.add(e);const t=this.getFullLayerBitmapEraseTxns().get(e),n=this.localPointsBatchData.get(e),i=(t==null?void 0:t.viewId)||(n==null?void 0:n.viewId);for(this.cancelledEraseTxnOwners.set(e,{viewId:i,viewGeneration:i?(o=this.viewGenerationById)==null?void 0:o.get(i):void 0});this.cancelledEraseTxnOwners.size>Zl;){const a=this.cancelledEraseTxnOwners.keys().next().value;if(a===void 0)break;this.cancelledEraseTxnOwners.delete(a),this.cancelledEraseTxnIds.delete(a)}for(;this.cancelledEraseTxnIds.size>Zl;){const a=this.cancelledEraseTxnIds.values().next().value;if(a===void 0)break;this.cancelledEraseTxnIds.delete(a),this.cancelledEraseTxnOwners.delete(a)}}isCancelledEraseResult(e,t,n){var o;if(!e||!this.cancelledEraseTxnIds.has(e))return!1;const i=(o=this.cancelledEraseTxnOwners)==null?void 0:o.get(e);return i?!(i.viewId&&t&&i.viewId!==t):!0}rememberCancelledLocalWork(e,t){var n;for(this.cancelledLocalWorkOwners||(this.cancelledLocalWorkOwners=new Map),this.cancelledLocalWorkOwners.delete(e),this.cancelledLocalWorkOwners.set(e,{viewId:t,viewGeneration:(n=this.viewGenerationById)==null?void 0:n.get(t)});this.cancelledLocalWorkOwners.size>Zl;){const i=this.cancelledLocalWorkOwners.keys().next().value;if(i===void 0)break;this.cancelledLocalWorkOwners.delete(i)}}isCancelledLocalWorkResult(e){return e.dataType===xe.Service||e.workId===void 0?!1:this.isCancelledLocalWork(e.workId.toString(),e.viewId)}isCancelledLocalWork(e,t){var c,l,u,h;const n=e.toString(),o=typeof((c=this.collector)==null?void 0:c.isOwn)=="function"&&typeof((l=this.collector)==null?void 0:l.getLocalId)=="function"&&((u=this.collector)!=null&&u.isOwn(n))?this.collector.getLocalId(n):n,a=(h=this.cancelledLocalWorkOwners)==null?void 0:h.get(o);return a?!t||a.viewId===t:!1}filterCancelledEraseRenders(e){return e!=null&&e.length?e.filter(t=>{const n=this.viewGenerationById.get(t.viewId);if(t.viewGeneration!==void 0&&n!==void 0&&t.viewGeneration!==n)return this.closeImageBitmap(t.imageBitmap),!1;if(t.drawCanvas!==void 0&&[...t.renderWorkIds||[],...t.workId!==void 0?[t.workId.toString()]:[]].some(o=>this.isCancelledLocalWork(o,t.viewId)))return this.closeImageBitmap(t.imageBitmap),!1;const i=[...t.renderEraseTxnIds||[],...t.eraseTxnId!==void 0?[t.eraseTxnId]:[]].some(o=>this.isCancelledEraseResult(o,t.viewId,t.viewGeneration));if(i)try{this.closeImageBitmap(t.imageBitmap)}catch(o){this.logLocalWorkBarrierError(`[Appliance]: releasing cancelled erase bitmap failed; viewId=${t.viewId}; eraseTxnId=${t.eraseTxnId}; error=${o instanceof Error?o.message:String(o)}`)}return!i}):[]}reportRenderFrameError(e,t){this.Logger.error(`[Appliance]: [render-image-bitmap-frame] stage=rejected reason=${e} source=${t.source} layer=Bg viewId=${t.viewId} receivedGeneration=${t.receivedGeneration??"unknown"} currentGeneration=${t.currentGeneration??"unknown"} taskId=${t.taskId??"unknown"} sequence=${t.sequence??"unknown"} lastTaskId=${t.lastTaskId??"unknown"} lastSequence=${t.lastSequence??"unknown"} maxSequence=${t.maxSequence??"unknown"}`)}acceptFullLayerFrame(e,t,n){if(!e.isFullFrameImageBitmap||e.frameSequence===void 0)return!0;const i=e.viewGeneration??n;if(i===void 0)return!0;const o=this.fullLayerFrameStateByView.get(e.viewId),a=(o==null?void 0:o.generation)===i?o:{generation:i,maxSequence:0},c=a[t];if(c){if(e.frameSequence===c.sequence)return this.reportRenderFrameError("duplicate-sequence",{source:t,viewId:e.viewId,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(e.viewId),taskId:e.taskId,sequence:e.frameSequence,lastTaskId:c.taskId,lastSequence:c.sequence,maxSequence:a.maxSequence}),!1;if(e.frameSequence<c.sequence)return this.reportRenderFrameError("out-of-order-sequence",{source:t,viewId:e.viewId,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(e.viewId),taskId:e.taskId,sequence:e.frameSequence,lastTaskId:c.taskId,lastSequence:c.sequence,maxSequence:a.maxSequence}),!1}return this.fullLayerFrameStateByView.set(e.viewId,{...a,generation:i,maxSequence:Math.max(a.maxSequence,e.frameSequence),[t]:{sequence:e.frameSequence,taskId:e.taskId}}),!0}acceptWorkerBatch(e,t="fullWorker"){var a,c,l,u;const{viewId:n,viewGeneration:i,render:o}=e;if(n&&i!==void 0&&this.viewGenerationById.get(n)!==i){const h=o==null?void 0:o.find(d=>d.isFullFrameImageBitmap);return o!=null&&o.length&&this.reportRenderFrameError("stale-generation",{source:t,viewId:n,receivedGeneration:i,currentGeneration:this.viewGenerationById.get(n),taskId:h==null?void 0:h.taskId,sequence:h==null?void 0:h.frameSequence,maxSequence:(c=(a=this.fullLayerFrameStateByView)==null?void 0:a.get(n))==null?void 0:c.maxSequence}),o==null||o.forEach(d=>{try{this.closeImageBitmap(d.imageBitmap)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: releasing stale render bitmap failed; viewId=${n}; error=${f instanceof Error?f.message:String(f)}`)}}),(l=e.sp)==null||l.forEach(d=>{try{this.closeImageBitmap(d.imageBitmap)}catch(f){this.logLocalWorkBarrierError(`[Appliance]: releasing stale message bitmap failed; viewId=${n}; error=${f instanceof Error?f.message:String(f)}`)}}),!1}return(u=e.sp)!=null&&u.length&&i!==void 0&&(e.sp=e.sp.map(h=>{const d=h.viewId||n;return h.viewGeneration!==void 0||h.viewId&&h.viewId!==n?h:{...h,viewId:d,viewGeneration:i}})),o!=null&&o.length&&(e.render=o.filter(h=>{var y,S;const d=h.viewId||n,f=d?this.viewGenerationById.get(d):void 0,g=h.viewGeneration??i;return d&&f!==void 0&&g!==void 0&&g!==f?(this.reportRenderFrameError("stale-generation",{source:t,viewId:d,receivedGeneration:g,currentGeneration:f,taskId:h.taskId,sequence:h.frameSequence,maxSequence:(S=(y=this.fullLayerFrameStateByView)==null?void 0:y.get(d))==null?void 0:S.maxSequence}),this.closeImageBitmap(h.imageBitmap),!1):this.acceptFullLayerFrame(h,t,i)?!0:(this.closeImageBitmap(h.imageBitmap),!1)})),!0}scheduleViewRecovery(e,t){const n=this.viewGenerationById.get(e),o=(this.viewRecoveryQueueByView.get(e)||Promise.resolve()).catch(()=>{}).then(async()=>{if(this.viewGenerationById.get(e)!==n||!this.viewContainerManager.getView(e))return;const a=this.viewContainerManager.getCurScenePath(e);a&&(this.Logger.error(`[Appliance]: rebuilding view after bitmap eraser failure; viewId=${e}; reason=${t}`),await this.clearViewScenePath(e,!0),!(this.viewGenerationById.get(e)!==n||this.viewContainerManager.getCurScenePath(e)!==a)&&this.pullServiceData(e,a,{isAsync:!0,useAnimation:!1}))});return this.viewRecoveryQueueByView.set(e,o),o.then(()=>{this.viewRecoveryQueueByView.get(e)===o&&(this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e))},a=>{this.viewRecoveryQueueByView.get(e)===o&&(this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e)),this.logLocalWorkBarrierError(`[Appliance]: view recovery failed; viewId=${e}; error=${a instanceof Error?a.message:String(a)}`)}),o}get isBusy(){return this.cameraUpdateStateByView.size>0||this.pendingDprByView.size>0||this.viewRecoveryQueueByView.size>0}isViewBusy(e){var t;return((t=this.cameraUpdateStateByView.get(e))==null?void 0:t.isBusy)===!0||this.pendingDprByView.has(e)||this.viewRecoveryQueueByView.has(e)||this.control.isClearBusy(e)}getLockSentEventCursor(){return this.isLockSentEventCursor}setLockSentEventCursor(e){this.isLockSentEventCursor=e}getTasksqueueState(){return this.isBusy&&de.Doing||de.Done}setMaxDrawCount(e){this.maxDrawCount=e}getFullWorkDrawCount(){return this.fullWorkerDrawCount}getMaxDrawCount(){return this.maxDrawCount}setSubWorkerDrawCount(e){this.subWorkerDrawCount=e}setConsumeCount(e,t){this.acceptConsumeAck(e,t)}getConsumeCount(){return this.consumeCount}getLocalInputPointCount(e,t){let n=0;for(const i of this.localPointsBatchData.values())i.viewId!==e||t&&i.toolsType!==t||(n=Math.max(n,Math.floor(i.rawPoints.length/2)));return n}setWorkerTasksqueueCount(e){ye.isNumber(e)}collectorSyncData(e){var c,l,u,h,d,f,g,y,S,E,C,L,T,p,m,M;const t=e.filter(v=>{if(this.isStaleViewStorageMessage(v))return v.imageBitmap&&this.closeImageBitmap(v.imageBitmap),!1;if(this.isCancelledLocalWorkResult(v))return this.closeImageBitmap(v.imageBitmap),!1;const R=this.isCancelledEraseResult(v.eraseTxnId,v.viewId,v.viewGeneration);return R&&this.closeImageBitmap(v.imageBitmap),!R}),n=new Set(t.filter(v=>v.eraseTxnId&&v.eraseTxnPhase==="applied").map(v=>v.eraseTxnId)),i=new Set(t.filter(v=>v.eraseTxnId&&v.eraseTxnPhase==="failed").map(v=>v.eraseTxnId)),o=new Map;for(const v of t){if(v.eraseTxnRecoveryRequired&&v.viewId&&o.set(v.viewId,"bitmap-eraser-done-restore-failed"),!v.eraseTxnId)continue;const R=this.getFullLayerBitmapEraseTxns().get(v.eraseTxnId);if(R){if(v.eraseTxnBeforeImages){R.beforeImages||(R.beforeImages=new Map);const b=v.eraseTxnBeforeImages;b instanceof Map?b.forEach((P,D)=>{R.beforeImages.has(D)||R.beforeImages.set(D,ye.cloneDeep(P)),(R.affectedTargetIds||(R.affectedTargetIds=new Set)).add(D)}):Object.entries(b).forEach(([P,D])=>{R.beforeImages.has(P)||R.beforeImages.set(P,ye.cloneDeep(D)),(R.affectedTargetIds||(R.affectedTargetIds=new Set)).add(P)})}if(v.type===le.UpdateNode&&v.workId!==void 0&&v.workId.toString()!==v.eraseTxnId&&((R.updatedTargetIds||(R.updatedTargetIds=new Set)).add(v.workId.toString()),(R.appliedTargetIds||(R.appliedTargetIds=new Set)).add(v.workId.toString())),v.type===le.RemoveNode&&((c=v.removeIds)!=null&&c.length)){const b=R.deletedTargetIds||(R.deletedTargetIds=new Set);v.removeIds.forEach(P=>{const D=P.toString();D!==v.eraseTxnId&&(b.add(D),(R.appliedTargetIds||(R.appliedTargetIds=new Set)).add(D))})}}}let a=!1;for(const v of t){if(this.fontFaceManager.handleWorkerMessage(v))continue;const{type:R,selectIds:b,opt:P,selectRect:D,strokeColor:z,fillColor:j,willSyncService:A,isSync:k,imageBitmap:N,canvasHeight:W,canvasWidth:Y,rect:Q,op:ie,canTextEdit:O,points:V,selectorColor:Z,canRotate:$,scaleType:ee,textOpt:se,toolsType:ce,workId:me,viewId:pe,dataType:B,canLock:F,isLocked:J,shapeOpt:oe,toolsTypes:K,thickness:te,strokeType:w,useStroke:I,isgl:U,imageSrc:G,isSubWorker:_,updateNodeOpt:re,emitEventType:ne,requestId:X,viewOwner:ae,reportString:ue,reportBusiness:he,reportErrorCode:ge,index:Me,imageElement:we,workState:be,isSelecting:Ie,needUndoTicker:Ce}=v;if(R===le.Init&&pe){this.ackMainViewInit(pe,v.viewGeneration,v.reportContextType);continue}if(R===le.ServiceSyncCommit&&pe){Promise.resolve().then(()=>this.ackServiceSyncCommit(v));continue}if(!pe)continue;const Ae=v.scenePath||this.viewContainerManager.getCurScenePath(pe);switch(R){case le.RefreshTextRender:this.resolveRefreshTextRender(X,!0);break;case le.SelectorTransform:{if(ne&&be)try{(l=this.control.selectorApi)==null||l.onSelectorTransform({viewId:pe,emitEventType:ne,workState:be})}catch(Ee){(h=(u=this.Logger)==null?void 0:u.error)==null||h.call(u,`[Appliance]: [selector] onSelectorTransform failed: ${Ee==null?void 0:Ee.message}`)}break}case le.Select:{const Ee=b!=null&&b.length?{...D,selectIds:b,canvasHeight:W,canvasWidth:Y,points:V}:void 0;if(Ee&&(P!=null&&P.strokeColor)&&(Ee.selectorColor=P.strokeColor),Ee&&Z&&(Ee.selectorColor=Z),Ee&&z&&(Ee.strokeColor=z),Ee&&(P!=null&&P.fillColor)&&(Ee.fillColor=P.fillColor),Ee&&j&&(Ee.fillColor=j),Ee&&ye.isBoolean($)&&(Ee.canRotate=$),Ee&&ee&&(Ee.scaleType=ee),Ee&&O&&(Ee.canTextEdit=O),Ee&&se&&(Ee.textOpt=se),Ee&&ye.isBoolean(F)&&(Ee.canLock=F),Ee&&ye.isBoolean(J)&&(Ee.isLocked=J),Ee&&oe&&(Ee.shapeOpt=oe),Ee&&K&&(Ee.toolsTypes=K),Ee&&te&&(Ee.thickness=te),Ee&&w&&(Ee.strokeType=w),Ee&&ye.isBoolean(I)&&(Ee.useStroke=I),pe&&this.viewContainerManager.showFloatBar(pe,!!Ee,Ee),A&&((d=this.collector)==null||d.dispatch({type:R,selectIds:b,opt:P,isSync:k,viewId:pe,scenePath:Ae,needUndoTicker:Ce,requestId:X,emitEventType:ne})),Ie)break;try{(f=this.control.selectorApi)==null||f.onSelectorSync({viewId:pe,scenePath:Ae,selectIds:b,selectRect:D,selectorInfo:Ee})}catch(ke){(y=(g=this.Logger)==null?void 0:g.error)==null||y.call(g,`[Appliance]: [selector] onSelectorSync failed: ${ke==null?void 0:ke.message}`)}break}case le.Snapshot:if((N||we)&&Ae){const Ee=this.getViewSceneRequestKey(pe,Ae);if(!X||this.snapshotRequestIdByViewScene.get(Ee)!==X){this.closeImageBitmap(N);break}const ke=this.snapshotMap.get(Ee);if(ke&&ke.requestId===X){const{resolve:Ne,value:Oe}=ke;if(Oe&&Ne){const je=Me||0;Oe[je]=N||we,Oe.every(Je=>Je!==void 0)&&Ne(Oe)}}else this.closeImageBitmap(N)}break;case le.BoundingBox:if(Q&&Ae){const Ee=this.getViewSceneRequestKey(pe,Ae);if(!X||this.boundingRectRequestIdByViewScene.get(Ee)!==X)break;const ke=this.boundingRectMap.get(Ee);ke&&ke.requestId===X&&ke.resolve(Q)}break;case le.Cursor:ie&&this.control.cursor.collectServiceCursor({...v});break;case le.Clear:if(pe){this.viewContainerManager.showFloatBar(pe,!1);const Ee=(S=this.clearAllResolveMap.get(pe))==null?void 0:S.resolve;Ee&&Ee(pe);try{(E=this.control.selectorApi)==null||E.onSelectorCleared({viewId:pe,scenePath:Ae})}catch(ke){(L=(C=this.Logger)==null?void 0:C.error)==null||L.call(C,`[Appliance]: [selector] onSelectorCleared failed: ${ke==null?void 0:ke.message}`)}}break;case le.BackgroundSVGDelete:this.backgroundThreadManager&&pe&&this.backgroundThreadManager.consumeTargetOne(pe,{...v,msgType:le.BackgroundSVGDelete,viewId:pe,scenePath:Ae,dataType:xe.Local}).catch(Ee=>{this.logLocalWorkBarrierError(`[Appliance]: background SVG delete failed; viewId=${pe}; error=${Ee instanceof Error?Ee.message:String(Ee)}`)});break;case le.BackgroundSVGUpdate:this.backgroundThreadManager&&pe&&this.backgroundThreadManager.consumeTargetOne(pe,{...v,msgType:le.BackgroundSVGUpdate,viewId:pe,scenePath:Ae,dataType:xe.Local}).catch(Ee=>{this.logLocalWorkBarrierError(`[Appliance]: background SVG update failed; viewId=${pe}; error=${Ee instanceof Error?Ee.message:String(Ee)}`)});break;case le.TextUpdate:if(ce===q.Text&&me&&pe){const Ee=ne===Te.TranslateNode;ne&&[Te.SetColorNode,Te.SetFontStyle,Te.SetLock,Te.SetShapeOpt,Te.ZIndexNode].includes(ne)&&((T=this.control.selectorApi)==null||T.onPropertyApplied({type:ne,viewId:pe,scenePath:Ae,requestId:X,data:this.buildPropertyAppliedData(ne,P,re)}));const ke=this.viewContainerManager.transformToOriginPoint((P==null?void 0:P.boxPoint)||[0,0],pe),Ne=(P==null?void 0:P.boxSize)||[0,0],Oe=(p=this.viewContainerManager.getView(pe))==null?void 0:p.cameraOpt;P?this.control.textEditorManager.updateTextForWorker({x:ke[0],y:ke[1],w:Ne[0],h:Ne[1],scale:(Oe==null?void 0:Oe.scale)||1,workId:me,opt:P,dataType:B,viewId:pe,canSync:A||!1,canWorker:!1,updateNodeOpt:re,skipStorageDispatch:!0}):this.control.textEditorManager.delete(me,A||!1,!1),!!(Ce||Ee&&A)&&((m=this.collector)==null||m.dispatch({type:le.UpdateNode,workId:me,toolsType:q.Text,opt:P,updateNodeOpt:re,isSync:A||!1,viewId:pe,scenePath:Ae,needUndoTicker:Ce,requestId:X,emitEventType:ne}))}break;case le.GetTextActive:ce===q.Text&&me&&pe&&this.control.textEditorManager.updateTextForWorker({workId:me,isActive:!0,viewId:pe,dataType:xe.Local,canWorker:!1,canSync:!0},this.now);break;case le.GetImageBitMap:if(G&&pe&&me){const Ee=this.initGeneration,ke=this.viewGenerationById.get(pe),Ne=this.control.hasOffscreenCanvas;Wye({src:G,isgl:U,useImageBitmap:Ne}).then(Oe=>{var nt;const je=Ne?Oe:void 0,Je=Ne?void 0:Oe;if(!(Ee===this.initGeneration&&this.viewGenerationById.get(pe)===ke&&!!this.viewContainerManager.getView(pe))){this.closeImageBitmap(je);return}const et=new Set;et.add({msgType:le.GetImageBitMap,dataType:xe.Local,workId:me,viewId:pe,viewGeneration:ke,viewOwner:ae,imageSrc:G,requestId:X,isSubWorker:_,imageBitmap:je,imageElement:Je});try{if(Ne){const Qe=_&&this.subWorker?this.subWorker:this.fullWorker;if(!Qe||typeof Qe.postMessage!="function"){this.closeImageBitmap(je);return}je?Qe.postMessage(et,[je]):Qe.postMessage(et)}else{const Qe=(nt=this.mainThread)==null?void 0:nt.consume(et);Qe==null||Qe.catch(st=>{this.logLocalWorkBarrierError(`[Appliance]: image bitmap delivery failed; viewId=${pe}; workId=${me}; error=${st instanceof Error?st.message:String(st)}`)})}}catch(Qe){this.closeImageBitmap(je),this.logLocalWorkBarrierError(`[Appliance]: image bitmap delivery failed; viewId=${pe}; workId=${me}; error=${Qe instanceof Error?Qe.message:String(Qe)}`)}}).catch(Oe=>{this.logLocalWorkBarrierError(`[Appliance]: image bitmap load failed; viewId=${pe}; workId=${me}; src=${G}; error=${Oe instanceof Error?Oe.message:String(Oe)}`)})}break;case le.GetVNodeInfo:if(me){const Ee=me.toString(),ke=(M=this.getVNodeInfoResolveMap.get(Ee))==null?void 0:M.resolve,Ne={...v,uuid:Ee};ke&&ke(Ne)}break;case le.ReportError:case le.ReportLog:R===le.ReportError&&ge&&this.scheduleRenderRuntimeFallback(v),R===le.ReportError&&he&&Ae&&X&&(he==="snapshot"?this.settleSnapshotFailure(pe,Ae,X):this.settleBoundingRectFailure(pe,Ae,X)),ue&&(R===le.ReportError?this.Logger.error(`[Appliance]: [MasterControlForWorker] reportError ${ue}`):this.Logger.info(`[Appliance]: [MasterControlForWorker] reportLog ${ue}`));break;default:a=!0;break}}a&&this.collectorAsyncData(t),n.forEach(v=>{this.finishFullLayerBitmapEraseTxn(v,"committed")}),i.forEach(v=>{this.finishFullLayerBitmapEraseTxn(v,"aborted")}),o.forEach((v,R)=>{this.scheduleViewRecovery(R,v)})}collectorAsyncData(e){var t,n,i,o,a,c,l,u,h,d;for(const f of e){if(this.isStaleViewStorageMessage(f)){f.imageBitmap&&this.closeImageBitmap(f.imageBitmap);continue}if(this.isCancelledLocalWorkResult(f)){this.closeImageBitmap(f.imageBitmap);continue}if(this.isCancelledEraseResult(f.eraseTxnId,f.viewId,f.viewGeneration)){this.closeImageBitmap(f.imageBitmap);continue}const{type:g,op:y,workId:S,index:E,removeIds:C,ops:L,opt:T,updateNodeOpt:p,emitEventType:m,requestId:M,toolsType:v,isSync:R,viewId:b,isLockSentEventCursor:P,nextTasks:D,needUndoTicker:z,collectUndoTicker:j,undoScopeIds:A,undoScopePhase:k}=f;if(!b){console.error("[MasterControlForWorker] collectorAsyncData on viewId in",f);return}const N=f.scenePath||this.viewContainerManager.getCurScenePath(b),W=Number(j??z??void 0);if(W&&(A!=null&&A.length)&&(k==="collect"||k==="finalize")&&this.internalMsgEmitter.emit("collectExpectedWorkIds",W,b,A,N),k==="finalize"&&z&&Number(z)&&N){const Y=Number(z);Array.isArray(A)&&A.length===0?this.internalMsgEmitter.emit("cancelUndoTicker",Y,b,N):this.internalMsgEmitter.emit("finalizeRequested",Y,b,A||[],N)}switch(z&&Number(z)&&qp(g)&&(A!=null&&A.length)&&this.internalMsgEmitter.emit("reopenStorageAck",Number(z),b,A,N),g){case le.None:{const Y=this.initGeneration,Q=(t=this.viewGenerationById)==null?void 0:t.get(b),ie=()=>{var O;return this.isActive&&this.initGeneration===Y&&((O=this.viewGenerationById)==null?void 0:O.get(b))===Q};P&&Dr(()=>{ie()&&this.setLockSentEventCursor(!1)},this.maxLastSyncTime,this.control.hasPolyfillMethod("requestIdleCallback")),z&&Number(z)&&Dr(()=>{ie()&&this.internalMsgEmitter.emit("ackRenderUndoTicker",Number(z),b,N,{requestId:M,emitEventType:m})},0,this.control.hasPolyfillMethod("requestIdleCallback"));break}case le.DrawWork:{(n=this.collector)==null||n.dispatch({type:g,op:y,opt:T,toolsType:v,workId:S,index:E,isSync:R,viewId:b,scenePath:N,updateNodeOpt:p,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m});break}case le.FullWork:{if((i=this.collector)==null||i.dispatch({type:g,ops:L,workId:S,updateNodeOpt:p,opt:T,toolsType:v,isSync:R,viewId:b,scenePath:N,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m}),v===q.BackgroundSVG&&S&&this.markmapIdResolveMap.has(S.toString())){const Q=this.markmapIdResolveMap.get(S.toString());Q!=null&&Q.timer&&(clearTimeout(Q.timer),Q.timer=void 0),Q!=null&&Q.resolve&&Q.resolve(S.toString()),this.markmapIdResolveMap.delete(S.toString())}const Y=b?(o=this.willSelectorWorkIdByView)==null?void 0:o.get(b):void 0;Y&&S&&S.toString()===Y&&this.control.runEffectWork(()=>{var Q;this.setShapeSelectorByWorkId(Y,b),(Q=this.willSelectorWorkIdByView)==null||Q.delete(b)});break}case le.UpdateNode:{m&&[Te.SetColorNode,Te.SetFontStyle,Te.SetLock,Te.SetShapeOpt,Te.ZIndexNode].includes(m)&&((a=this.control.selectorApi)==null||a.onPropertyApplied({type:m,viewId:b,scenePath:N,requestId:M,data:this.buildPropertyAppliedData(m,T,p)})),(c=this.collector)==null||c.dispatch({type:g,updateNodeOpt:p,workId:S,opt:T,ops:L,op:y,isSync:R,viewId:b,scenePath:N,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m});break}case le.RemoveNode:{if(m===Te.DeleteNode&&((l=this.control.selectorApi)==null||l.onRemoveNodeApplied({viewId:b,requestId:M,removeIds:C})),C&&this.control.textEditorManager.deleteBatch(C,!1,!1),(u=this.collector)==null||u.dispatch({type:g,removeIds:C,isSync:R,viewId:b,scenePath:N,needUndoTicker:z,collectUndoTicker:j,requestId:M,emitEventType:m}),b){const Y=(h=this.willSelectorWorkIdByView)==null?void 0:h.get(b);Y&&(C!=null&&C.includes(Y))&&((d=this.willSelectorWorkIdByView)==null||d.delete(b))}break}}D&&this.collectorAsyncData(D)}}isStaleViewStorageMessage(e){var n;if(!e.viewId)return!1;const t=(n=this.viewGenerationById)==null?void 0:n.get(e.viewId);return t===void 0?!1:e.viewGeneration!==void 0?e.viewGeneration!==t:qp(e.type)}async onLocalEventEnd(e,t,n=this.initGeneration,i=(o=>(o=this.localInputEpochByView)==null?void 0:o.get(t))()||0){var y,S,E,C,L;const a=this.viewContainerManager.getView(t),c=this.viewGenerationById.get(t);if(!a||!this.isActive||this.initGeneration!==n||(((y=this.localInputEpochByView)==null?void 0:y.get(t))||0)!==i||this.viewGenerationById.get(t)!==c)return;const{focusScenePath:l,cameraOpt:u}=a,h=this.viewContainerManager.transformToScenePoint(e,t),d=[],f=[],g=new Map;for(const[T,p]of this.localPointsBatchData){if(p.viewId!==t)continue;if(p.toolsType===q.Text){const M=p.state;if(M&&M===de.Start){const v=p.opt;v.workState=de.Doing,v.boxPoint=[Math.round(h[0]),Math.round(h[1])],v.boxSize=[v.fontSize,v.fontSize],this.control.textEditorManager.checkEmptyTextBlur(),this.control.textEditorManager.createTextForMasterController({workId:this.newWorkId,x:e[0],y:e[1],scale:(u==null?void 0:u.scale)||1,opt:v,type:Tr.Text,isActive:!0,viewId:t,scenePath:l},this.now)}this.deleteLocalPoint(T);continue}else{const M=this.getFullLayerBitmapEraseTxns().get(T.toString());if(M&&M.phase!=="doing")continue;const v=this.getLocalPointInfo(T);M&&Math.floor(((v==null?void 0:v.rawPoints.length)||0)/2)>=this.getFullLayerBitmapEraserMaxInputPoints(v)||this.pushLocalPoint(T,h,de.Done,t),(M==null?void 0:M.phase)==="doing"&&this.markFullLayerBitmapEraseDoneStaging(M);const b=this.getLocalPointInfo(T);if(b){const P=this.createAutoShapeTask({workId:T,viewId:t,scenePath:l,points:[...b.rawPoints],opt:b.opt});P&&f.push(P),ki(b.toolsType)&&b.toolsType!==q.BitMapEraser&&b.undoTickerId&&l?g.set(b.undoTickerId,{scenePath:l,workIds:[]}):ql.has(b.toolsType)&&b.undoTickerId&&l&&g.set(b.undoTickerId,{scenePath:l,workIds:[T.toString()]})}d.push(T)}}if(d.length){let T;g.forEach(({scenePath:m,workIds:M},v)=>{this.internalMsgEmitter.emit("finalizeRequested",v,t,M,m)});try{this.localDoneWaitByView||(this.localDoneWaitByView=new Map),this.delayWorkStateToDoneResolveByView||(this.delayWorkStateToDoneResolveByView=new Map),T=`${t}:done:${++this.localDoneWaitSequence}`,this.localDoneWaitByView.set(t,{token:T,workIds:d.map(String),viewId:t,startedAt:Date.now()});const m=((C=(E=(S=this.control.pluginOptions)==null?void 0:S.extras)==null?void 0:E.undoRedo)==null?void 0:C.ackTimeout)||Ou,M=Ip(m);if(await new Promise(R=>{let b=!1,P,D;const z=()=>{if(D===void 0)return;const k=this.localDoneDispatchTimersByView.get(t);k==null||k.delete(D),k&&k.size===0&&this.localDoneDispatchTimersByView.delete(t),D=void 0},j=k=>{var N;b||(b=!0,P!==void 0&&clearTimeout(P),D!==void 0&&(clearTimeout(D),z()),((N=this.delayWorkStateToDoneResolveByView)==null?void 0:N.get(t))===j&&this.delayWorkStateToDoneResolveByView.delete(t),R(k))};P=setTimeout(()=>{const k=d.filter(N=>!this.getFullLayerBitmapEraseTxns().has(N.toString()));if(!k.length){j(!1);return}this.logLocalWorkBarrierError(`[Appliance]: local Done business wait failed; viewId=${t}; workIds=${k.join(",")}; timeoutMs=${M}`);try{this.timeoutLocalWorks(t,l||"","local-done-timeout",new Set(k.map(String)))}catch(N){this.logLocalWorkBarrierError(`[Appliance]: local Done timeout cleanup failed; viewId=${t}; error=${N instanceof Error?N.message:String(N)}`)}j(!1)},M),D=setTimeout(async()=>{var W;if(z(),b||!this.isActive||this.initGeneration!==n||(((W=this.localInputEpochByView)==null?void 0:W.get(t))||0)!==i||this.viewGenerationById.get(t)!==c||!this.viewContainerManager.getView(t)){j(!1);return}const k=new Set(f.map(Y=>{var Q;return(Q=Y.workId)==null?void 0:Q.toString()}).filter(Boolean));if(d.forEach(Y=>{if(k.has(Y.toString())){this.deleteLocalPoint(Y);return}this.setLocalPointIsFullWork(Y)}),f.forEach(Y=>{Y.needUndoTicker&&l&&Y.workId!==void 0&&Y.workId!==null&&this.internalMsgEmitter.emit("finalizeRequested",Number(Y.needUndoTicker),t,[Y.workId.toString()],l),this.taskBatchData.add(Y)}),this.delayWorkStateToDoneResolveByView.set(t,j),!d.some(Y=>this.localPointsBatchData.has(Y))){j(!1);return}f.length&&k.size===d.length&&j(!0),this.consume()},0);let A=this.localDoneDispatchTimersByView.get(t);A||(A=new Set,this.localDoneDispatchTimersByView.set(t,A)),D!==void 0&&A.add(D)})&&d[0]){const R=d[0];d.forEach(b=>{this.deleteLocalPoint(b)}),this.willSelectorWorkIdByView||(this.willSelectorWorkIdByView=new Map),this.willSelectorWorkIdByView.set(t,R.toString())}}catch(m){this.Logger.error(`[Appliance]: [MasterControlForWorker] onLocalEventEnd error: ${m instanceof Error?m.message:String(m)}`)}const p=this.getDoneWaitForView(t);T!==void 0&&(p==null?void 0:p.token)===T&&p.workIds.every(m=>d.some(M=>M.toString()===m))&&this.clearDoneWaitForView(t,T),T!==void 0&&((L=this.getDoneWaitForView(t))==null?void 0:L.token)===T&&this.clearDoneWaitForView(t,T),d.length=0}}onLocalEventDoing(e,t){var i;if(((i=this.currentToolsData)==null?void 0:i.toolsType)===q.Text)return;this.currentLocalWorkData.workState===de.Start&&this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:de.Doing});let n=!1;for(const[o,{state:a}]of this.localPointsBatchData.entries()){const c=this.localPointsBatchData.get(o);if(!c||c.viewId!==t)continue;const l=this.getFullLayerBitmapEraseTxns().get(o.toString());if(!(l&&l.phase!=="doing")&&this.isAbled()&&a!==de.Pending){const u=this.viewContainerManager.transformToScenePoint(e,t);this.pushLocalPoint(o,u,a===de.Start?de.Doing:a,t),n=!0}}if(!this.forceDoneFullLayerBitmapEraseAtPointLimit(t)&&n){this.runAnimation();return}}onLocalEventStart(e,t){var l,u;this.viewContainerManager.focuedViewId!==t&&this.viewContainerManager.setFocuedViewId(t),this.isCanDrawWork&&this.control.room&&!this.control.room.disableDeviceInputs&&(this.control.room.disableDeviceInputs=!0);const n=(l=this.currentToolsData)==null?void 0:l.toolsType,i=n===q.Selector?Le:this.newWorkId,o=this.setZIndex(t);let a;if(n!==void 0&&n!==q.Text&&n!==q.Selector&&this.isCanRecordUndoRedo){a=this.now;const h=ki(n)?{render:!0,storage:!0,scopeMode:"dynamic",source:Qp(n)}:{render:!0,storage:!0,source:Qp(n)};this.internalMsgEmitter.emit("addUndoTicker",a,t,h)}this.setCurrentLocalWorkData({workState:de.Start,toolsOpt:o,viewId:t,undoTickerId:a});const c=this.viewContainerManager.transformToScenePoint(e,t);if(this.pushLocalPoint(i,c,de.Start,t,o),n===q.BitMapEraser){const h={workId:i.toString(),viewId:t,scenePath:this.viewContainerManager.getCurScenePath(t),undoTickerId:a,phase:"doing",startedAt:Date.now(),doingAckCount:0,updatedTargetIds:new Set,deletedTargetIds:new Set};this.getFullLayerBitmapEraseTxns().set(i.toString(),h),this.logBitmapEraserTrace("start",h,{maxInputPoints:this.getFullLayerBitmapEraserMaxInputPoints(this.getLocalPointInfo(i))})}if(n!==q.Text){if(this.control.textEditorManager.checkEmptyTextBlur(),i&&o&&n&&this.isCanStartEventConsum&&this.prepareOnceWork({workId:i,toolsOpt:o,viewId:t},n),this.consumeCount=0,this.postCount=0,this.maxDrawCount=0,this.fullWorkerDrawCount=0,this.subWorkerDrawCount=0,this.clearReRenders(1/0),this.isCanDrawWork){const h=this.viewContainerManager.getCurScenePath(t);h&&((u=this.collector)!=null&&u.hasSelector(t,h))&&this.blurSelector(t,h)}this.consume()}}setLocalPointIsFullWork(e){const t=this.getLocalPointInfo(e);t&&(t.isFullWork=!0,this.localPointsBatchData.set(e,t))}getFullLayerBitmapEraserMaxInputPoints(e){var t;return Pc(((t=e==null?void 0:e.opt)==null?void 0:t.fullLayerDoingMaskMaxInputPoints)??this.control.pluginOptions.extras.pencilEraser.fullLayerDoingMaskMaxInputPoints)}forceDoneFullLayerBitmapEraseAtPointLimit(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==q.BitMapEraser)return!1;let t=!1;for(const[i,o]of this.localPointsBatchData.entries()){if(o.viewId!==e||o.toolsType!==q.BitMapEraser||o.state!==de.Start&&o.state!==de.Doing)continue;const a=this.getFullLayerBitmapEraseTxns().get(i.toString()),c=this.getFullLayerBitmapEraserMaxInputPoints(o);!a||a.phase!=="doing"||Math.floor(o.rawPoints.length/2)<c||(o.state=de.Done,o.isFullWork=!0,a.forceDoneReason??(a.forceDoneReason="point-limit"),this.logBitmapEraserTrace("point-limit-force-done",a,{pointCount:Math.floor(o.rawPoints.length/2),maxInputPoints:c}),this.markFullLayerBitmapEraseDoneStaging(a),this.localPointsBatchData.set(i,o),t=!0)}return t&&this.checkDrawingWork(e),t}pushLocalPoint(e,t,n,i,o){var c;let a=this.getLocalPointInfo(e);if(n===de.Start)a={state:de.Start,points:[...t],rawPoints:[...t],toolsType:(c=this.currentToolsData)==null?void 0:c.toolsType,opt:o||this.currentLocalWorkData.toolsOpt,isFullWork:!1,viewId:i,undoTickerId:this.currentLocalWorkData.undoTickerId,scenePath:this.viewContainerManager.getCurScenePath(i)};else if(a){a.state=n;const l=a.rawPoints.length-2;n===de.Done&&l>=0&&a.rawPoints[l]===t[0]&&a.rawPoints[l+1]===t[1]||(a.points.push(t[0],t[1]),a.rawPoints.push(t[0],t[1]))}a&&this.localPointsBatchData.set(e,a)}deleteLocalPoint(e){this.localPointsBatchData.delete(e)}getLocalPointInfo(e){return this.localPointsBatchData.get(e)}getLocalPointsInfo(){return this.localPointsBatchData}getLocalInputDebugState(){var c,l,u,h;const e=Date.now(),t=[...this.localPointsBatchData.entries()].map(([d,f])=>({workId:d,state:f.state,toolsType:f.toolsType,undoTickerId:f.undoTickerId,isFullWork:f.isFullWork,pointCount:Math.floor(f.points.length/2),rawPointCount:Math.floor(f.rawPoints.length/2),viewId:f.viewId})),n=[],i=this.viewContainerManager.getAllViews().flatMap(d=>{if(!d)return[];const f=d.focusScenePath;return f?d.displayer.commiter.getPendingTickerSnapshots(f):[]});this.control.isToolChangePending&&n.push("tool-change-pending"),this.queuedLocalEventCount>0&&n.push("local-event-queue-pending");const o=[...((c=this.localDoneWaitByView)==null?void 0:c.values())||[],...(l=this.localDoneWaitByView)!=null&&l.size?[]:this.localDoneWait?[this.localDoneWait]:[]];o.length&&(n.push("local-done-waiting"),t.length?t.every(d=>d.state===de.Done&&!d.pointCount)&&n.push("done-work-has-no-points"):n.push("done-waiting-without-local-work")),this.isLocalWorkActive&&this.currentLocalWorkData.workState===de.Pending&&n.push("active-work-with-pending-state"),i.some(d=>d.phase==="failed")&&n.push("undo-ticker-failed");const a=this.viewContainerManager.getAllViews().filter(d=>d&&this.control.isClearBusy(d.id)).map(d=>d.id);return a.length&&n.push("clear-operation-pending"),{timestamp:e,suspectedBlockers:n,toolChangePending:this.control.isToolChangePending,isAbled:this.isAbled(),isWritable:this.control.renderControl.isWritable,currentTool:(u=this.currentToolsData)==null?void 0:u.toolsType,currentLocalWorkData:{...this.currentLocalWorkData},isLocalWorkActive:this.isLocalWorkActive,localWorkViewId:this.getLocalWorkViewId(),queuedLocalEventCount:this.queuedLocalEventCount,activeLocalEvent:this.activeLocalEvent?{...this.activeLocalEvent,waitingMs:e-this.activeLocalEvent.startedAt}:void 0,localDoneWait:o[0]?{...o[0],waitingMs:e-(o[0].startedAt||e)}:void 0,localDoneWaits:o.map(d=>({...d,waitingMs:e-(d.startedAt||e)})),hasDoneResolver:(((h=this.delayWorkStateToDoneResolveByView)==null?void 0:h.size)||0)>0||!!this.delayWorkStateToDoneResolve,localPoints:t,taskBatchSize:this.taskBatchData.size,tasksqueueSize:this.tasksqueue.size,animationScheduled:this.animationId!==void 0,cameraStates:[...this.cameraUpdateStateByView.entries()].map(([d,f])=>{var g,y,S,E;return{viewId:d,isBusy:f.isBusy,hasPending:!!f.pendingCamera,hasPrepare:!!f.preparePromise,isRecovering:f.isRecovering===!0,recoveryFromGeneration:f.recoveryFromGeneration,recoveryOwner:f.recoveryOwner,hasReplayCamera:!!f.replayCamera,currentTaskId:f.currentTaskId,transactionTaskId:(g=f.transaction)==null?void 0:g.taskId,transactionGeneration:(y=f.transaction)==null?void 0:y.viewGeneration,coreAckReceived:(S=f.transaction)==null?void 0:S.coreAckReceived,settledAckReceived:(E=f.transaction)==null?void 0:E.settledAckReceived}}),operationBarrierViews:[...this.operationBarrierQueueByView.keys()],clearBusyViews:a,pendingTickers:i}}shouldUseAutoShape(e){var t;return((t=this.currentToolsData)==null?void 0:t.toolsType)===q.Pencil&&!!(e!=null&&e.autoShape)}toAutoShapePoints(e){const t=[];for(let n=0;n<e.length-1;n+=2)t.push([e[n],e[n+1]]);return t}emitAutoShapeResult(e){const{viewId:t,workId:n,scenePath:i,result:o,recognized:a,mappedToolsType:c}=e,l=o.candidates[0],u={workId:n.toString(),viewId:t,scenePath:i,recognized:a,fallbackToPencil:!a,kind:o.kind,score:o.score,threshold:o.threshold,templateId:o.templateId,mappedToolsType:c,topCandidate:l?{kind:l.kind,score:l.score,threshold:l.threshold,templateId:l.templateId}:void 0,metrics:{cornerCount:o.metrics.cornerCount,straightness:o.metrics.straightness,closureRatio:o.metrics.closureRatio,radialVariance:o.metrics.radialVariance,bboxCornerCloseness:o.metrics.bboxCornerCloseness,diamondCloseness:o.metrics.diamondCloseness}};this.publicMsgEmitter.emit("autoShape",u)}createAutoShapeTask(e){const{workId:t,viewId:n,scenePath:i,points:o,opt:a}=e;if(!this.shouldUseAutoShape(a))return;const c=Mwe({rawPoints:this.toAutoShapePoints(o),pencilOptions:ye.cloneDeep(a),viewId:n,scenePath:i});if(!c)return;const l=wwe(c),u=Vp(l,c)||this.mapAutoShapeFallback(l,c);if(this.emitAutoShapeResult({viewId:n,workId:t,scenePath:i,result:l,recognized:!!u,mappedToolsType:u==null?void 0:u.toolsType}),!!u)return{msgType:le.FullWork,dataType:xe.Local,workId:t,viewId:n,scenePath:i,toolsType:u.toolsType,opt:u.opt,ops:GMe(u),willRefresh:!0,willSyncService:!0,isRunSubWork:!0,clearPreviewLocalWork:!0,isLockSentEventCursor:!0,autoShapeResult:l,needUndoTicker:this.viewContainerManager.getUndoTickerId(n)}}mapAutoShapeFallback(e,t){const{metrics:n}=e;if(e.recognized||n.closureRatio>.1)return null;let i;return n.cornerCount>=4&&n.cornerCount<=6&&n.bboxCornerCloseness<=.15&&n.diamondCloseness>n.bboxCornerCloseness+.15?i="rectangle":n.cornerCount===3&&n.radialVariance<.28?i="triangle":n.cornerCount>=8&&n.cornerCount<=12&&n.radialVariance>.28?i="star":n.cornerCount>=5&&n.radialVariance<.22&&n.bboxCornerCloseness>.2&&(i="ellipse"),i?Vp({...e,kind:i,recognized:!0},t):null}correctStorage(e,t,n){var h,d;const i=new Map,o=[],a=new Map,c=[];Object.keys(e).forEach(f=>{var S,E,C;const g=(E=(S=e[f])==null?void 0:S.opt)==null?void 0:E.zIndex,y=(C=e[f])==null?void 0:C.toolsType;ye.isNumber(g)&&(y&&y===q.BackgroundSVG?c.push([f,g]):o.push([f,g]))});const l=o.length&&((h=this.zIndexNodeMethod)==null?void 0:h.correct(o))||[],u=c.length&&((d=this.zIndexNodeMethod)==null?void 0:d.correct(c))||[];this.zIndexNodeMethod&&l.length&&(this.zIndexNodeMethod.setMinZIndex(l[0][1]||0,t),this.zIndexNodeMethod.setMaxZIndex(l[l.length-1][1]||0,t)),this.zIndexNodeMethod&&u.length&&(this.zIndexNodeMethod.setMinZIndexForBackgroundSVG(u[0][1]||0,t),this.zIndexNodeMethod.setMaxZIndexForBackgroundSVG(u[u.length-1][1]||0,t));for(const[f,g]of l){if(!e[f])continue;const y=e[f];y.opt&&ye.isNumber(y.opt.zIndex)&&y.opt.zIndex!==g&&(y.opt.zIndex=g,i.set(f,y))}i.size&&i.forEach((f,g)=>{var y;(y=this.collector)==null||y.updateValue(g,f,{viewId:t,scenePath:n,isSync:!0}),e[g]=f});for(const[f,g]of u){if(!e[f])continue;const y=e[f];y.opt&&ye.isNumber(y.opt.zIndex)&&y.opt.zIndex!==g&&(y.opt.zIndex=g,a.set(f,y))}return a.size&&a.forEach((f,g)=>{var y;(y=this.collector)==null||y.updateValue(g,f,{viewId:t,scenePath:n,isSync:!0}),e[g]=f}),e}originalEventLintener(e,t,n){var f,g;const i=((f=this.localInputTransactionEpochByView)==null?void 0:f.has(n))===!0;if(e===de.Start){if(!this.control.canAcceptLocalMutation(n))return Promise.resolve()}else if(e===de.Doing&&!this.control.canAcceptLocalMutation(n)||(e===de.Doing||e===de.Done)&&!i)return Promise.resolve();const o=++this.localEventSequence,a=this.initGeneration,c=this.viewGenerationById.get(n),l=((g=this.localInputEpochByView)==null?void 0:g.get(n))||0;this.localInputTransactionEpochByView||(this.localInputTransactionEpochByView=new Map),e===de.Start&&this.localInputTransactionEpochByView.set(n,l);const u=this.localInputTransactionEpochByView.get(n)??l;this.queuedLocalEventCount++;const h=this.localEventQueue.then(async()=>{var y,S,E;this.activeLocalEvent={sequence:o,state:e,viewId:n,startedAt:Date.now()};try{if(this.initGeneration!==a||!this.isActive||(((y=this.localInputEpochByView)==null?void 0:y.get(n))||0)!==u||this.viewGenerationById.get(n)!==c||!this.viewContainerManager.getView(n))return;await this.consumeOriginalEvent(e,t,n,o,a,u)}finally{this.queuedLocalEventCount=Math.max(0,this.queuedLocalEventCount-1),((S=this.activeLocalEvent)==null?void 0:S.sequence)===o&&(this.activeLocalEvent=void 0),e===de.Done&&((E=this.localInputTransactionEpochByView)==null?void 0:E.get(n))===u&&this.localInputTransactionEpochByView.delete(n)}}),d=h.catch(()=>{});return this.localEventQueue=d,this.localEventQueueByView.set(n,d),d.then(()=>{this.localEventQueueByView.get(n)===d&&this.localEventQueueByView.delete(n)}),h}async waitForLocalEventQueue(e){await(e&&this.localEventQueueByView?this.localEventQueueByView.get(e)||Promise.resolve():this.localEventQueue)}async finishActiveContinuousMethods(e,t){var l,u,h;const n=this.viewContainerManager.getUndoTickerId(e),i=await((l=this.methodBuilder)==null?void 0:l.finishActiveContinuousMethods(e,t))||[],o=new Set(i);n!==void 0&&o.add(n);const a=this.viewContainerManager.getUndoTickerId(e);if(a!==void 0&&o.add(a),!o.size)return;const c=(h=(u=this.viewContainerManager.getView(e))==null?void 0:u.displayer)==null?void 0:h.commiter;c&&await Promise.all([...o].map(d=>c.waitForTickerEnd(d,Math.max(this.maxLastSyncTime*4,1e3))))}async forceDoneLocalWorks(e,t,n){var h;this.operationBarrierQueueByView||(this.operationBarrierQueueByView=new Map);const i=this.operationBarrierQueueByView.get(e)||Promise.resolve(),o=((h=this.operationBarrierEpochByView)==null?void 0:h.get(e))||0,a=this.viewContainerManager.getView(e),c=this.viewGenerationById.get(e),l=i.then(()=>this.executeTransactionBarrier(e,t,n,o)).then(()=>{var f;return(((f=this.operationBarrierEpochByView)==null?void 0:f.get(e))||0)===o&&this.viewGenerationById.get(e)===c&&this.viewContainerManager.getView(e)===a?{status:"success",viewId:e,scenePath:t,reason:n}:{status:"failed",viewId:e,scenePath:t,reason:n,failureReason:"lifecycle-invalidated"}}).catch(d=>{const f=yr(d);let g="";try{this.timeoutLocalWorks(e,t,`${n}-barrier-failed`,void 0,d)}catch(y){g=yr(y),this.logLocalWorkBarrierError(`[Appliance]: force-Done failure cleanup failed; viewId=${e}; scenePath=${t}; reason=${n}; error=${g}`)}return{status:"failed",viewId:e,scenePath:t,reason:n,failureReason:g?`${f}; cleanup=${g}`:f}}),u=l.then(()=>{},()=>{});this.operationBarrierQueueByView.set(e,u);try{return await l}finally{this.operationBarrierQueueByView.get(e)===u&&this.operationBarrierQueueByView.delete(e)}}invalidateTransactionBarrier(e){var t,n,i;this.operationBarrierEpochByView||(this.operationBarrierEpochByView=new Map),this.operationBarrierEpochByView.set(e,(this.operationBarrierEpochByView.get(e)||0)+1),(n=(t=this.operationBarrierInvalidationWaitersByView)==null?void 0:t.get(e))==null||n.forEach(o=>o()),(i=this.operationBarrierInvalidationWaitersByView)==null||i.delete(e)}async waitForCurrentTransactionBarrier(e,t,n){if(!t())return!1;this.operationBarrierInvalidationWaitersByView||(this.operationBarrierInvalidationWaitersByView=new Map);let i;const o=new Promise(c=>{i=c});let a=this.operationBarrierInvalidationWaitersByView.get(e);a||(a=new Set,this.operationBarrierInvalidationWaitersByView.set(e,a)),a.add(i);try{return await Promise.race([n,o]),t()}finally{a.delete(i),a.size||this.operationBarrierInvalidationWaitersByView.delete(e)}}async executeTransactionBarrier(e,t,n="camera-update",i=(o=>(o=this.operationBarrierEpochByView)==null?void 0:o.get(e))()||0){var b,P,D,z,j,A;const a=this.viewContainerManager.getView(e),c=this.viewGenerationById.get(e),l=()=>{var k;return this.viewGenerationById.get(e)===c&&(((k=this.operationBarrierEpochByView)==null?void 0:k.get(e))||0)===i&&this.viewContainerManager.getView(e)===a};if(!await this.waitForCurrentTransactionBarrier(e,l,this.waitForLocalEventQueue(e)))return;const u=(b=a==null?void 0:a.displayer)==null?void 0:b.commiter,h=[...this.getFullLayerBitmapEraseTxns().values()].filter(k=>k.viewId===e&&(!k.scenePath||k.scenePath===t)&&k.phase!=="aborting"&&k.phase!=="aborted"),d=new Set(h.map(k=>k.workId));h.forEach(k=>{k.phase==="doing"&&(k.forceDoneReason??(k.forceDoneReason=n),this.logBitmapEraserTrace("force-done",k,{reason:n}))});const f=n==="set-readonly"||n==="disconnect"||n==="destroy"||n==="view-destroy",g=n==="set-readonly"||n==="disconnect",y=f||n==="scene-change",S=()=>((u==null?void 0:u.getPendingTickerSnapshots(t))||[]).filter(k=>k.source===$e.Text?y:f||bs(k.source).kind!=="wait-owner");let E=S();const C=((z=(D=(P=this.control.pluginOptions)==null?void 0:P.extras)==null?void 0:D.undoRedo)==null?void 0:z.ackTimeout)||Ou,L=oye(C),T=Ip(C),p=[...this.localPointsBatchData.values()].some(k=>k.viewId===e&&(!k.scenePath||k.scenePath===t)&&k.toolsType!==q.Text&&(k.state===de.Start||k.state===de.Doing));let m=!1;for(const k of E){if(k.finalizeRequested||k.phase!=="doing")continue;const N=bs(k.source);if(N.kind==="stop-event"){if(!m&&(a!=null&&a.displayer)&&(m=!0,!await this.waitForCurrentTransactionBarrier(e,l,a.displayer.stopEventHandler())))return;continue}if(N.kind==="method-pause"&&!await this.waitForCurrentTransactionBarrier(e,l,Promise.resolve((A=(j=this.methodBuilder)==null?void 0:j.getBuilder(N.emitEventType))==null?void 0:A.pause(e,t))))return}if(p&&!m&&(a!=null&&a.displayer)&&(m=!0,!await this.waitForCurrentTransactionBarrier(e,l,a.displayer.stopEventHandler()))||!await this.waitForCurrentTransactionBarrier(e,l,this.waitForLocalEventQueue(e))||[...this.localPointsBatchData.values()].some(k=>k.viewId===e&&(!k.scenePath||k.scenePath===t)&&k.toolsType!==q.Text&&(k.state===de.Start||k.state===de.Doing))&&(!await this.waitForCurrentTransactionBarrier(e,l,this.checkDrawingWork(e))||!await this.waitForCurrentTransactionBarrier(e,l,this.waitForLocalEventQueue(e)))||!await this.waitForCurrentTransactionBarrier(e,l,this.waitForFullLayerBitmapEraseTxns(e,d)))return;if(u&&(E=S()),u){const k=E.filter(N=>!N.finalizeRequested&&bs(N.source).kind!=="wait-owner");for(const N of k)try{typeof u.cancelUndoTicker=="function"&&(u.cancelUndoTicker(N.tickerId,e,N.scenePath),this.logLocalWorkBarrierError(`[Appliance]: cancelled unfinalized Undo ticker before ${n}; viewId=${e}; tickerId=${N.tickerId}; source=${N.source}`))}catch(W){this.logLocalWorkBarrierError(`[Appliance]: cancelling unfinalized Undo ticker failed; viewId=${e}; tickerId=${N.tickerId}; source=${N.source}; error=${W instanceof Error?W.message:String(W)}`)}if(k.length){E=S();const N=E.filter(W=>!W.finalizeRequested&&bs(W.source).kind!=="wait-owner");typeof u.cancelUndoTicker=="function"&&N.length&&(N.forEach(W=>{this.logLocalWorkBarrierError(`[Appliance]: unfinalized Undo ticker was not removed by cancellation; continuing without waiting; viewId=${e}; tickerId=${W.tickerId}; source=${W.source}`)}),E=E.filter(W=>W.finalizeRequested||bs(W.source).kind==="wait-owner"))}}const v=u?E.filter(k=>!k.finalizeRequested).map(k=>u.waitForFinalizeRequested(k,T)):[];if(!await this.waitForCurrentTransactionBarrier(e,l,Promise.all(v)))return;const R=u?E.map(k=>u.waitForDataDone(k,T)):[];!await this.waitForCurrentTransactionBarrier(e,l,Promise.all(R))||!g||await this.waitForCurrentTransactionBarrier(e,l,Promise.all(E.map(k=>u==null?void 0:u.waitForUndoStackEnd(k,L))))}async consumeOriginalEvent(e,t,n,i,o=this.initGeneration,a=(c=>(c=this.localInputEpochByView)==null?void 0:c.get(n))()||0){var f,g,y,S,E;const l=(f=this.viewGenerationById)==null?void 0:f.get(n);if(!this.isAbled()||!this.isActive||this.initGeneration!==o||(((g=this.localInputEpochByView)==null?void 0:g.get(n))||0)!==a||(e===de.Start||e===de.Doing)&&!this.control.canAcceptLocalMutation(n))return;const u=(y=this.collector)==null?void 0:y.uid,h=this.viewContainerManager.getCurScenePath(n);if(u&&!this.control.renderControl.isWritable)return;const d=((S=this.currentToolsData)==null?void 0:S.toolsType)===q.Selector;switch((E=this.currentToolsData)==null?void 0:E.toolsType){case q.Eraser:case q.PencilEraser:case q.BitMapEraser:{if(u&&!this.control.renderControl.isClearAble({uid:u,viewId:n,scenePath:h}))return;break}default:{if(u&&!this.control.renderControl.isRenderAble({uid:u,viewId:n,scenePath:h}))return;break}}switch(e){case de.Start:{const C=this.control.isSceneBusy(n);if(this.isViewBusy(n)||C||this.control.isToolChangePending)return;this.isLocalWorkActive=!0,this.setLocalWorkViewId(n),n&&this.onLocalEventStart(t,n),d&&this.viewContainerManager.showFloatBarBtn(n,!1)}break;case de.Doing:n&&n===this.getLocalWorkViewId()&&this.onLocalEventDoing(t,n);break;case de.Done:if(n&&n===this.getLocalWorkViewId()){this.setCurrentLocalWorkData({...this.currentLocalWorkData,workState:de.Done});try{await this.onLocalEventEnd(t,n,o,a)}finally{this.isLocalWorkActive=!1,this.setCurrentLocalWorkData({workState:de.Pending}),d&&this.viewContainerManager.showFloatBarBtn(n,!0),this.setLocalWorkViewId(void 0)}}break}this.isLocalWorkActive&&this.viewContainerManager.focuedViewId===n&&this.publicMsgEmitter.emit("workState",e,n),Dr(()=>{var C,L,T;!this.isActive||this.initGeneration!==o||(((C=this.localInputEpochByView)==null?void 0:C.get(n))||0)!==a||((L=this.viewGenerationById)==null?void 0:L.get(n))!==l||(T=this.control.pluginManager)==null||T.dispatchPluginEvent("localEvent",n,e,t)},Qa,this.control.hasPolyfillMethod("requestIdleCallback"))}getLocalWorkViewId(){return this.localWorkViewId}setLocalWorkViewId(e){this.localWorkViewId=e}setCurrentToolsData(e){var a,c,l,u;const t=e.toolsType,i=((a=this.currentToolsData)==null?void 0:a.toolsType)!==e.toolsType,o=this.getLocalWorkViewId()||((c=this.viewContainerManager)==null?void 0:c.focuedViewId);if(i){const h=new Map;for(const d of this.getFullLayerBitmapEraseTxns().values()){if(d.phase!=="doing"||o&&d.viewId!==o)continue;let f=h.get(d.viewId);f||(f=new Set,h.set(d.viewId,f)),f.add(d.workId)}h.forEach((d,f)=>{this.cancelLocalWorks(f,!1,d)})}if(super.setCurrentToolsData(e),i){const h=o?(l=this.viewContainerManager)==null?void 0:l.getView(o):void 0;h!=null&&h.focusScenePath&&((u=this.collector)!=null&&u.hasSelector(h.id,h.focusScenePath)&&this.blurSelector(h.id,h.focusScenePath),this.control.textEditorManager.checkEmptyTextBlur()),this.taskBatchData.add({msgType:le.UpdateTools,dataType:xe.Local,toolsType:t,opt:{...e.toolsOpt,syncUnitTime:this.maxLastSyncTime},combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,isRunSubWork:this.isRunSubWork,viewId:Bu,isRunBackgroundThread:this.control.isUseBackgroundThread}),this.runAnimation()}}prepareOnceWork(e,t){const{workId:n,toolsOpt:i,viewId:o}=e,a={msgType:le.CreateWork,dataType:xe.Local,viewId:o,toolsType:t};this.queryTaskBatchData(a).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add({...a,workId:n,opt:{...i,syncUnitTime:this.maxLastSyncTime},dataType:xe.Local,isRunSubWork:this.isRunSubWork}),this.runAnimation()}createViewWorker(e,t,n){var d,f,g,y;(d=this.collector)==null||d.restoreViewPendingSync(e),this.fullLayerFrameStateByView.delete(e);const i=(this.viewGenerationById.get(e)||0)+1;this.viewGenerationById.set(e,i),(g=(f=this.control).bindPendingViewInit)==null||g.call(f,e,i),pt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"create-view",details:{renderModel:Ht(this.control.renderMode,Qr(this.control,e)),context:Qr(this.control,e),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}}),this.pendingTransportMessages.delete(`destroy:${e}`);const{offscreenCanvasOpt:o,layerOpt:a,dpr:c,cameraOpt:l}=t;l&&this.initCameraOptByView.set(e,{...l});const u={singleChannelTexture:this.control.renderingCompatibilityDecision.effectiveMaskTextureFormatLevel===void 0,textureSubImage2D:this.control.renderingCompatibilityDecision.effectiveMaskTextureUploadLevel===void 0},h={msgType:le.Init,dataType:xe.Local,viewId:e,viewGeneration:i,offscreenCanvasOpt:o,layerOpt:{...a,bitmapEraserMaskOptions:u},dpr:c,cameraOpt:l,isRunSubWork:!0,isSafari:navigator.userAgent.indexOf("Safari")!==-1&&navigator.userAgent.indexOf("Chrome")===-1,combineUnitTime:this.isBezier?this.combineUnitTime:1/0,maxCombineEraserTime:this.maxCombineEraserTime,syncUnitTime:this.maxLastSyncTime,isUseSimple:this.control.isUseSimple,offscreenCanvas:n.transferControlToOffscreenCanvas,bitmapEraserMaskOptions:u};if(!this.isRenderTransportReady){this.pendingTransportMessages.set(this.getPendingInitMessageKey(h),h),pt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"sent-queued",details:{renderModel:Ht(this.control.renderMode,Qr(this.control,e)),context:Qr(this.control,e),reason:"transport-not-ready"}});return}pt(this.Logger,{category:"render-init",viewId:e,generation:i,stage:"sent",details:{renderModel:Ht(this.control.renderMode,Qr(this.control,e)),context:Qr(this.control,e),source:this.control.renderingCompatibilityDecision.renderRuntimeSource||"config"}}),(y=this.cameraUpdateStateByView.get(e))!=null&&y.isRecovering||this.cameraUpdateDestroy(e),this.armViewInitAckTimeout(e,i),this.post(new Set([h])),this.taskBatchData.size&&this.consume()}discardViewTransactions(e){var a,c,l,u,h,d,f,g;this.invalidateTransactionBarrier(e);const t=(a=this.localDoneDispatchTimersByView)==null?void 0:a.get(e);t==null||t.forEach(y=>clearTimeout(y)),t==null||t.clear(),(c=this.localDoneDispatchTimersByView)==null||c.delete(e);const n=new Set;for(const[y,S]of this.localPointsBatchData){if(S.viewId!==e)continue;const E=y.toString();n.add(E),ki(S.toolsType)&&this.rememberCancelledEraseTxn(E),this.localPointsBatchData.delete(y)}for(const[y,S]of this.getFullLayerBitmapEraseTxns())S.viewId===e&&(n.add(y),this.rememberCancelledEraseTxn(y),this.finishFullLayerBitmapEraseTxn(y,"aborted"));for(const y of[...this.taskBatchData])y.viewId===e&&this.taskBatchData.delete(y);this.tasksqueue.delete(e);for(const[y,S]of this.tasksqueue)S.viewId===e&&this.tasksqueue.delete(y);for(const[y,S]of this.reRenders){const E=S.filter(C=>{const L=C.viewId===e;return L&&this.retireRenderedImageBitmap(C),!L});E.length?this.reRenders.set(y,E):this.reRenders.delete(y)}const i=this.getDoneWaitForView(e);if(i&&i.workIds.some(y=>n.has(y))){const y=this.getDoneResolverForView(e);this.clearDoneWaitForView(e),y==null||y(!1)}this.currentLocalWorkData.viewId===e&&(this.setCurrentLocalWorkData({workState:de.Pending}),this.isLocalWorkActive=!1),(l=this.localEventQueueByView)==null||l.delete(e),this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),(h=(u=this.control)==null?void 0:u.viewContainerManager.getView(e))==null||h.displayer.cancelDprUpdate(),this.pendingDprByView.delete(e),(d=this.pendingDprOwnerByView)==null||d.delete(e),this.viewRecoveryQueueByView.delete(e),this.resolveViewLifecycleIdleWaiters(e),this.operationBarrierQueueByView.delete(e),(f=this.willSelectorWorkIdByView)==null||f.delete(e);const o=this.clearAllResolveMap.get(e);o!=null&&o.timer&&clearTimeout(o.timer),(g=o==null?void 0:o.resolve)==null||g.call(o,e),this.clearAllResolveMap.delete(e),this.settleViewRenderRequests(e)}destroyViewWorker(e,t,n=!1){var u,h,d,f,g,y;(u=this.viewInitRecoveryDestroying)!=null&&u.has(e)||(h=this.viewInitRecoveryAttempts)==null||h.delete(e),this.discardViewTransactions(e),this.fullLayerFrameStateByView.delete(e);const o=(this.viewGenerationById.get(e)||0)+1;this.viewGenerationById.set(e,o),this.initAckedViewIds.delete(e),this.serviceSyncReadyViews.delete(e);for(const[S,E]of this.serviceSyncCommitWaiters)E.viewId===e&&(clearTimeout(E.timer),E.resolve(!1),this.serviceSyncCommitWaiters.delete(S));const a=this.viewServiceReadyWaiters.get(e);a==null||a.forEach(S=>{clearTimeout(S.timer),S.resolve(!1)}),this.viewServiceReadyWaiters.delete(e);const c=this.viewInitAckWaiters.get(e);c==null||c.forEach(S=>{clearTimeout(S.timer),S.resolve(!1)}),this.viewInitAckWaiters.delete(e);for(const[S,E]of this.viewInitAckTimeoutTimers)S.startsWith(`${e}:`)&&(clearTimeout(E),this.viewInitAckTimeoutTimers.delete(S));this.initReconcileTasks.delete(e),this.control.invalidatePendingViewInit(e),(!n||!((d=this.cameraUpdateStateByView.get(e))!=null&&d.isRecovering))&&this.cameraUpdateDestroy(e,!1),this.initCameraOptByView.delete(e);for(const[S,E]of this.pendingTransportMessages)E.viewId===e&&this.pendingTransportMessages.delete(S);this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e);const l={msgType:le.Destroy,dataType:xe.Local,viewId:e,viewGeneration:o,isRunSubWork:!0};this.isRenderTransportReady?this.dispatchMessages(new Set([l])):this.pendingTransportMessages.set(`destroy:${e}`,l),t==="delete-storage"?((f=this.collector)==null||f.dispatch({type:le.Clear,viewId:e,isSync:!0}),(g=this.collector)==null||g.discardViewPendingSync(e)):t==="storage-already-deleted"&&((y=this.collector)==null||y.discardViewPendingSync(e)),this.control.renderControl.destoryByViewId(e,t!=="delete-storage")}onServiceDerive(e,t){var f,g,y,S,E,C,L,T;const{viewId:n}=t;if(!n||!this.isViewInitAck(n)||!this.isServiceSyncReady(n)){n&&this.control.queuePendingServiceDerive(n,e,t);return}const{newValue:i,oldValue:o,scenePath:a}=t,c=ye.cloneDeep(i)||{},l=e;let u=c.type;if(!i&&o&&(u=le.RemoveNode),!i&&o){if(l&&((f=this.collector)==null?void 0:f.getLocalId(l))===Le){this.collector.isOwn(l)?this.blurSelector(n,a):this.blurSelector(n,a,l);return}if(o.toolsType===q.LaserPen)return}if(!$u(n,a,p=>{var m;return(m=this.viewContainerManager.getView(p))==null?void 0:m.focusScenePath}))return;if((g=this.collector)!=null&&g.isSelector(e)){const p=(y=this.collector)==null?void 0:y.getUidFromKey(e);if(p&&!this.control.roomMember.isOnLine(p))return}if(u&&l){if(!this.control.renderControl.isFilterAble({viewId:n,elementId:e,scenePath:a},u))return;const p=c;if(p.workId=(S=this.collector)!=null&&S.isOwn(l)?(E=this.collector)==null?void 0:E.getLocalId(l):l,p.msgType=u,p.toolsType===q.LaserPen&&(p.isRunSubWork=!0),p.toolsType===q.BackgroundSVG){if(!this.control.isUseBackgroundThread)return;p.isRunBackgroundThread=!0}if(p.dataType=xe.Service,p.viewId=n,p.scenePath=a,p.useAnimation=this.smoothSync&&((C=p.updateNodeOpt)==null?void 0:C.useAnimation)||!1,p.selectIds&&(p.selectIds=p.selectIds.map(m=>{var M,v;return(M=this.collector)!=null&&M.isOwn(m)?(v=this.collector)==null?void 0:v.getLocalId(m):m})),p&&p.toolsType===q.Text||(o==null?void 0:o.toolsType)===q.Text){this.control.textEditorManager.onServiceDerive(p);return}p.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(p)}this.runAnimation();const h=t.newValue&&((L=t.newValue)==null?void 0:L.toolsType),d=t.newValue&&((T=t.newValue.opt)==null?void 0:T.zIndex);if(h&&h===q.BackgroundSVG){if(this.zIndexNodeMethod&&ye.isNumber(d)){const p=this.zIndexNodeMethod.getMinZIndexForBackgroundSVG(n);this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(n)<d&&this.zIndexNodeMethod.setMaxZIndexForBackgroundSVG(d,n),p>d&&this.zIndexNodeMethod.setMinZIndexForBackgroundSVG(d,n)}}else if(this.zIndexNodeMethod&&ye.isNumber(d)){const p=this.zIndexNodeMethod.getMinZIndex(n);this.zIndexNodeMethod.getMaxZIndex(n)<d&&this.zIndexNodeMethod.setMaxZIndex(d,n),p>d&&this.zIndexNodeMethod.setMinZIndex(d,n)}}pullServiceData(e,t,n={isAsync:!1,useAnimation:!1}){if(!this.isViewInitReady(e)){this.control.queuePendingInitServicePull(e,t);return}this.pullServiceDataForReadyRenderer(e,t,n)}pullServiceDataForReadyRenderer(e,t,n){var c,l,u,h,d,f,g;if(!$u(e,t,y=>{var S;return(S=this.viewContainerManager.getView(y))==null?void 0:S.focusScenePath}))return;let i=(c=this.collector)==null?void 0:c.getStorageData(e,t);const{isAsync:o,useAnimation:a}=n;if(i){this.control.syncLogger.append("pullServiceData",e,t,Object.entries(i).map(([S,E])=>({key:S,type:E==null?void 0:E.type,toolsType:E==null?void 0:E.toolsType}))),this.control.renderControl.isWritable&&(i=this.correctStorage(i,e,t));const y=Object.keys(i);for(const S of y){if((l=this.collector)!=null&&l.isSelector(S)){const C=(u=this.collector)==null?void 0:u.getUidFromKey(S);if(C&&!this.control.roomMember.isOnLine(C))continue}const E=(h=i[S])==null?void 0:h.type;if(E&&S){if(!this.control.renderControl.isFilterAble({viewId:e,elementId:S,scenePath:t},E))continue;const C=i[S];if(C.workId=(d=this.collector)!=null&&d.isOwn(S)?(f=this.collector)==null?void 0:f.getLocalId(S):S,C.msgType=E,C.dataType=xe.Service,C.viewId=e,C.scenePath=t,C.useAnimation=this.smoothSync&&(C.ops?!!a:(g=C.updateNodeOpt)==null?void 0:g.useAnimation)||!1,C.selectIds&&(C.selectIds=C.selectIds.map(L=>{var T,p;return(T=this.collector)!=null&&T.isOwn(L)?(p=this.collector)==null?void 0:p.getLocalId(L):L})),C.toolsType===q.Text){this.control.shouldHoldServiceTextRenderForFontFace()?this.control.markInitFontFaceTextRenderSkipped():this.control.textEditorManager.onServiceDerive(C);continue}if(C.toolsType===q.BackgroundSVG){if(!this.control.isUseBackgroundThread)continue;C.isRunBackgroundThread=!0}o&&C.updateNodeOpt&&C.updateNodeOpt.useAnimation&&(C.updateNodeOpt.useAnimation=!1),C.isEnableCursor=this.control.cursor.isEnableCursor,this.taskBatchData.add(C)}this.internalMsgEmitter.emit("excludeIds",y,e)}o?this.consume():this.runAnimation()}}runAnimation(){this.animationId||(this.animationId=requestAnimationFrame(this.consume.bind(this)))}consume(){var e;if(this.animationId=void 0,this.isAbled()&&this.localPointsBatchData.size)for(const[t,{state:n,isFullWork:i,points:o,opt:a,toolsType:c,undoTickerId:l,viewId:u}]of this.localPointsBatchData.entries()){if(!u||n===de.Done&&!i||n===de.Start&&!this.isCanStartEventConsum)continue;const h=o.map(d=>d);if(h.length||n===de.Done){if(this.isPostCountType&&n===de.Doing){if(this.postCount>this.consumeCount)continue;this.postCount++}const d=this.getDoneResolverForView(u),f=this.getDoneWaitForView(u);d&&n===de.Done&&(f!=null&&f.workIds.includes(t.toString()))&&(d(!0),this.setLockSentEventCursor(!0));const g=((e=this.getLocalPointInfo(t))==null?void 0:e.scenePath)||u&&this.viewContainerManager.getCurScenePath(u);n===de.Done&&l&&g&&ql.has(c)&&this.internalMsgEmitter.emit("finalizeRequested",l,u,[t.toString()],g),this.taskBatchData.add({op:h,workState:n,workId:t,dataType:xe.Local,msgType:le.DrawWork,isRunSubWork:this.isRunSubWork,toolsType:c,viewId:u,scenePath:g,opt:a,smoothSync:this.smoothSync,isLockSentEventCursor:this.getLockSentEventCursor(),syncUnitTime:this.maxLastSyncTime,disableEraseImage:this.control.disableEraseImage,disableEraseText:this.control.disableEraseText,postCount:this.isPostCountType&&this.postCount||void 0,fullWorkerDrawCount:this.isCanPostDraw&&this.fullWorkerDrawCount||void 0,needUndoTicker:n===de.Done&&l||void 0,collectUndoTicker:n!==de.Done&&ki(c)&&l||void 0}),o.length=0}}if(this.taskBatchData.size){const t=new Set(this.taskBatchData),n=new Set,i=new Set;for(const o of t){const a=_0e({isService:o.dataType===xe.Service,isAllViews:o.viewId===Bu,viewId:o.viewId,scenePath:o.scenePath},c=>this.isViewInitAck(c),c=>{var l;return(l=this.viewContainerManager.getView(c))==null?void 0:l.focusScenePath});a==="dispatch"?n.add(o):a==="pending"&&i.add(o)}for(const o of n)if(o.msgType===le.DrawWork&&o.workState===de.Done&&o.workId!==void 0){const a=this.getFullLayerBitmapEraseTxns().get(o.workId.toString());a&&a.phase!=="aborting"&&(a.phase="committing",this.armBitmapEraserCommitTimeout(a))}this.post(n),this.taskBatchData.clear(),i.forEach(o=>this.taskBatchData.add(o))}}armBitmapEraserCommitTimeout(e){e.commitTimeoutId&&clearTimeout(e.commitTimeoutId),e.commitDeadlineAt??(e.commitDeadlineAt=Date.now()+Cpe);const t=Math.max(0,e.commitDeadlineAt-Date.now());e.commitTimeoutId=setTimeout(()=>{const n=this.getFullLayerBitmapEraseTxns().get(e.workId);!n||n.phase!=="done-staging"&&n.phase!=="committing"||this.timeoutLocalWorks(e.viewId,e.scenePath||this.viewContainerManager.getCurScenePath(e.viewId)||"","bitmap-eraser-commit-timeout",new Set([e.workId]))},t)}markFullLayerBitmapEraseDoneStaging(e){var t;e.phase==="doing"&&(e.phase="done-staging",e.inputPointCount=Math.floor((((t=this.getLocalPointInfo(e.workId))==null?void 0:t.rawPoints.length)||0)/2),this.logBitmapEraserTrace("done-staging",e,{pointCount:e.inputPointCount,doingAckCount:e.doingAckCount||0}),this.armBitmapEraserCommitTimeout(e))}unWritable(){const e=new Set;this.localPointsBatchData.forEach(({viewId:t})=>{e.add(t)}),this.getFullLayerBitmapEraseTxns().forEach(({viewId:t})=>{e.add(t)}),e.forEach(t=>this.cancelLocalWorks(t,!1)),this.setCurrentLocalWorkData({workState:de.Unwritable}),this.setLockSentEventCursor(!0)}abled(){this.setCurrentLocalWorkData({workState:de.Pending}),this.setLockSentEventCursor(!1)}isAbled(){return this.currentLocalWorkData.workState!==de.Unwritable}postMainThread(e){if(!this.control.hasOffscreenCanvas&&this.mainThread){this.mainThread.consume(e).catch(t=>{this.logLocalWorkBarrierError(`[Appliance]: main-thread message consumption failed; error=${t instanceof Error?t.message:String(t)}`)});return}}postWebWorker(e){if(this.control.isUseSimple){const t=[...e].find(n=>n.msgType===le.Init&&n.offscreenCanvas);t!=null&&t.offscreenCanvas?this.fullWorker.postMessage(e,[t.offscreenCanvas.bgCanvas,t.offscreenCanvas.localCanvas,t.offscreenCanvas.serviceCanvas]):this.fullWorker.postMessage(e);return}else if(this.subWorker){this.fullWorker.postMessage(e);const t=new Set;for(const n of e.values()){const i=n.msgType;(i===le.Init||i===le.Clear||i===le.Destroy||i===le.UpdateCamera||i===le.Console||n.isRunSubWork)&&t.add(n)}t.size&&this.subWorker.postMessage(t)}}post(e){!this.isRenderTransportReady||!e.size||this.dispatchMessages(e)}dispatchMessages(e){const t=this.initGeneration,n=()=>{const i=ye.cloneDeep([...e]);setTimeout(()=>{if(this.initGeneration===t)for(const o of i)this.taskBatchData.add(o)},0)};if(this.control.isUseBackgroundThread){if(!this.backgroundThreadManager){n();return}const i=new Set;for(const o of e.values()){const a=o.msgType;(a===le.Init||a===le.Clear||a===le.Destroy||a===le.Console||o.isRunBackgroundThread)&&i.add(o)}i.size&&this.backgroundThreadManager.consume(i).catch(o=>{this.logLocalWorkBarrierError(`[Appliance]: background-thread message consumption failed; error=${o instanceof Error?o.message:String(o)}`)})}if(!this.control.hasOffscreenCanvas){if(!this.mainThread){n();return}this.postMainThread(e);return}this.postWebWorker(e)}updateNode(e,t,n,i){this.taskBatchData.add({msgType:le.UpdateNode,workId:e,updateNodeOpt:t,viewId:n,scenePath:i,dataType:xe.Local}),this.runAnimation()}destroyTaskQueue(e=!1){for(const[t,n]of this.cameraUpdateStateByView){if(e&&n.isRecovering){this.clearCameraTaskTimeouts(n),n.pendingCamera=void 0,n.transaction=void 0,n.preparePromise=void 0,n.currentTaskId=void 0;continue}this.cameraUpdateDestroy(t,!1)}this.tasksqueue.clear()}updateDpr(e,t){this.pendingDprOwnerByView||(this.pendingDprOwnerByView=new Map);const n=(this.dprUpdateSequence||0)+1;this.dprUpdateSequence=n,this.pendingDprOwnerByView.set(e,n),this.pendingDprByView.set(e,t);const i=this.initGeneration,o=this.viewGenerationById.get(e),a=()=>{var h;return((h=this.pendingDprOwnerByView)==null?void 0:h.get(e))===n},c=()=>a()&&(this.initGeneration!==i||this.viewGenerationById.get(e)!==o)?(this.releasePendingDprUpdate(e,n),!0):!a(),u=this.getLocalWorkFinalizeQueue(e).then(async()=>{if(await this.waitForLocalEventQueue(e),c())return;const h=this.viewContainerManager.getCurScenePath(e);if(h&&await this.forceDoneLocalWorks(e,h,"dpr-update"),c())return;const d=this.pendingDprByView.get(e);d!==void 0&&(this.applyDprUpdate(e,d),this.releasePendingDprUpdate(e,n))}).catch(async h=>{if(c())return;this.Logger.error(`[Appliance]: DPR transaction barrier failed; viewId=${e}; error=${h instanceof Error?h.message:String(h)}`);try{await this.scheduleViewRecovery(e,"dpr-transaction-barrier-failed")}catch{this.cancelPendingDprUpdate(e,n);return}if(c())return;const d=this.pendingDprByView.get(e);if(d!==void 0)try{this.applyDprUpdate(e,d),this.releasePendingDprUpdate(e,n)}catch(f){this.Logger.error(`[Appliance]: DPR apply failed after view recovery; viewId=${e}; error=${f instanceof Error?f.message:String(f)}`),this.cancelPendingDprUpdate(e,n)}});this.setLocalWorkFinalizeQueue(e,u),u.then(()=>this.clearLocalWorkFinalizeQueue(e,u),()=>this.clearLocalWorkFinalizeQueue(e,u))}releasePendingDprUpdate(e,t){var n;return((n=this.pendingDprOwnerByView)==null?void 0:n.get(e))!==t?!1:(this.pendingDprOwnerByView.delete(e),this.pendingDprByView.delete(e),this.resolveViewLifecycleIdleWaiters(e),!0)}cancelPendingDprUpdate(e,t){var n,i;((n=this.pendingDprOwnerByView)==null?void 0:n.get(e))===t&&((i=this.viewContainerManager.getView(e))==null||i.displayer.cancelDprUpdate(),this.releasePendingDprUpdate(e,t))}applyDprUpdate(e,t){var n;(n=this.viewContainerManager.getView(e))==null||n.displayer.commitDprUpdate(t),this.queryTaskBatchData({msgType:le.UpdateDpr,dataType:xe.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add({dataType:xe.Local,msgType:le.UpdateDpr,viewId:e,dpr:t,isRunSubWork:!0}),this.runAnimation()}cloneCameraReplay(e){return{cameraOpt:{...e.cameraOpt},scenePath:e.scenePath}}beginCameraClearReplay(e,t){this.cameraClearReplayByView||(this.cameraClearReplayByView=new Map);const n=this.cameraClearReplayByView.get(e),i=this.cameraUpdateStateByView.get(e),o=this.getActiveRenderRuntimeRecoveryView(e),a=(n==null?void 0:n.replay)||(i?this.getCameraReplayCandidate(e,i):o==null?void 0:o.replayCamera);this.cameraClearReplaySequence=(this.cameraClearReplaySequence||0)+1;const c={owner:this.cameraClearReplaySequence,viewGeneration:this.viewGenerationById.get(e),replay:a?{...this.cloneCameraReplay(a),scenePath:a.scenePath||t}:void 0,preserveRecovery:(n==null?void 0:n.preserveRecovery)===!0||(i==null?void 0:i.isRecovering)===!0||(i==null?void 0:i.recoveryOwner)!==void 0||!!o};if(this.cameraClearReplayByView.set(e,c),c.preserveRecovery&&a){let l=i;!l&&o&&(l={isBusy:!0},this.cameraUpdateStateByView.set(e,l)),l&&(this.clearCameraTaskTimeouts(l),l.pendingCamera=void 0,l.transaction=void 0,l.preparePromise=void 0,l.currentTaskId=void 0,l.isRecovering=!0,l.recoveryFromGeneration??(l.recoveryFromGeneration=(o==null?void 0:o.viewGeneration)??c.viewGeneration),l.recoveryOwner??(l.recoveryOwner=(o==null?void 0:o.cameraRecoveryOwner)??this.nextCameraRecoveryOwner()),this.updateCameraRecoveryReplay(e,l,a))}return c}finishCameraClearReplay(e,t){var u,h;if(((h=(u=this.cameraClearReplayByView)==null?void 0:u.get(e))==null?void 0:h.owner)!==t.owner)return;this.cameraClearReplayByView.delete(e);const n=t.replay,i=this.cameraUpdateStateByView.get(e),o=this.getActiveRenderRuntimeRecoveryView(e),a=(i==null?void 0:i.isRecovering)===!0||!!o,c=d=>{!t.preserveRecovery||!i||!i.isRecovering&&i.recoveryOwner===void 0||(i.isRecovering=!0,this.releaseCameraRecovery(e,d,i,i.recoveryOwner))};if(!n){c("missing-replay-camera-after-clear");return}if(this.viewGenerationById.get(e)!==t.viewGeneration&&!t.preserveRecovery&&!a)return;if(!this.viewContainerManager.getView(e)){c("view-removed-during-clear");return}const l=this.viewContainerManager.getCurScenePath(e);if(!l||n.scenePath&&n.scenePath!==l){c(`scene-superseded-during-clear:${n.scenePath||"unknown"}->${l||"unknown"}`);return}if(i!=null&&i.isRecovering){this.updateCameraRecoveryReplay(e,i,n);const d=this.viewGenerationById.get(e);d!==void 0&&!this.activeRenderRuntimeRecovery&&this.isViewInitReady(e)&&this.dispatchCameraRecoveryReplay(e,d);return}this.updateCamera(e,n.cameraOpt)}getCameraReplayCandidate(e,t){if(t.pendingCamera)return this.cloneCameraReplay(t.pendingCamera);if(t.replayCamera)return this.cloneCameraReplay(t.replayCamera);if(t.transaction)return{cameraOpt:{...t.transaction.camera},scenePath:t.transaction.scenePath};const n=this.viewContainerManager.getView(e);if(n!=null&&n.cameraOpt)return{cameraOpt:{...n.cameraOpt},scenePath:n.focusScenePath}}getActiveRenderRuntimeRecoveryView(e){var t;return(t=this.activeRenderRuntimeRecovery)==null?void 0:t.views.find(n=>n.viewId===e)}nextCameraRecoveryOwner(){return this.cameraRecoverySequence=(this.cameraRecoverySequence||0)+1,this.cameraRecoverySequence}updateCameraRecoveryReplay(e,t,n){const i=this.cloneCameraReplay(n);t.replayCamera=i;const o=this.getActiveRenderRuntimeRecoveryView(e);o&&(o.replayCamera=this.cloneCameraReplay(i),o.cameraRecoveryOwner=t.recoveryOwner),(!this.initAckedViewIds||!this.serviceSyncReadyViews||!this.isViewInitReady(e))&&this.control.queuePendingInitCamera(e,i.cameraOpt,i.scenePath)}beginCameraRecovery(e,t){const n=this.getCameraReplayCandidate(e,t);if(this.clearCameraTaskTimeouts(t),t.pendingCamera=void 0,t.transaction=void 0,t.preparePromise=void 0,t.currentTaskId=void 0,!n)return;t.isRecovering=!0,t.recoveryFromGeneration=this.viewGenerationById.get(e),t.recoveryOwner=this.nextCameraRecoveryOwner(),t.replayCamera=this.cloneCameraReplay(n);const i=this.getActiveRenderRuntimeRecoveryView(e);return i&&(i.replayCamera=this.cloneCameraReplay(n),i.cameraRecoveryOwner=t.recoveryOwner),this.cloneCameraReplay(n)}releaseCameraRecovery(e,t,n,i){const o=this.cameraUpdateStateByView.get(e);!(o!=null&&o.isRecovering)||n!==void 0&&o!==n||i!==void 0&&o.recoveryOwner!==i||(this.Logger.error(`[Appliance]: Camera recovery failed viewId=${e} recoveryOwner=${o.recoveryOwner??"unknown"} fromGeneration=${o.recoveryFromGeneration??"unknown"} reason=${t}`),this.cameraUpdateDestroy(e,!1))}releaseRenderRuntimeRecoveryCameras(e,t){for(const n of e.views){const i=this.cameraUpdateStateByView.get(n.viewId);!(i!=null&&i.isRecovering)||n.cameraRecoveryOwner===void 0||this.releaseCameraRecovery(n.viewId,t,i,n.cameraRecoveryOwner)}}dispatchCameraRecoveryReplay(e,t){var c,l,u;const n=this.cameraUpdateStateByView.get(e);if(!(n!=null&&n.isRecovering)||this.viewGenerationById.get(e)!==t)return!1;if(((l=(c=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:l.call(c))===!1)return this.releaseCameraRecovery(e,"manager-lifecycle-ended",n,n.recoveryOwner),!1;if(!this.viewContainerManager.getView(e))return this.releaseCameraRecovery(e,"view-removed-before-replay",n,n.recoveryOwner),!1;if(n.recoveryOwner===void 0)return this.releaseCameraRecovery(e,"missing-recovery-owner",n),!1;if(n.recoveryFromGeneration===t)return!1;const i=n.replayCamera;if(!i)return this.releaseCameraRecovery(e,"missing-replay-camera",n),!1;const o=this.viewContainerManager.getCurScenePath(e);if(!o)return this.releaseCameraRecovery(e,"missing-current-scene",n,n.recoveryOwner),!1;if(i.scenePath&&i.scenePath!==o)return this.releaseCameraRecovery(e,`scene-superseded:${i.scenePath}->${o}`,n,n.recoveryOwner),!1;const a=(u=this.cameraClearReplayByView)==null?void 0:u.get(e);return a?(a.preserveRecovery=!0,a.viewGeneration=t,a.replay=this.cloneCameraReplay(i),!1):(n.isRecovering=!1,n.replayCamera=void 0,n.pendingCamera=this.cloneCameraReplay(i),this.schedulePendingCameraForView(e,n),!0)}updateCamera(e,t){var a;const n=(a=this.cameraClearReplayByView)==null?void 0:a.get(e);let i=this.cameraUpdateStateByView.get(e);const o=this.getActiveRenderRuntimeRecoveryView(e);if(n){const c={cameraOpt:{...t},scenePath:this.viewContainerManager.getCurScenePath(e)};n.replay=c,n.viewGeneration=this.viewGenerationById.get(e),i!=null&&i.isRecovering?(n.preserveRecovery=!0,this.updateCameraRecoveryReplay(e,i,c)):o&&(n.preserveRecovery=!0,i||(i={isBusy:!0},this.cameraUpdateStateByView.set(e,i)),this.clearCameraTaskTimeouts(i),i.pendingCamera=void 0,i.transaction=void 0,i.preparePromise=void 0,i.currentTaskId=void 0,i.isRecovering=!0,i.recoveryFromGeneration=o.viewGeneration,i.recoveryOwner=this.nextCameraRecoveryOwner(),this.updateCameraRecoveryReplay(e,i,c));return}if(i!=null&&i.isRecovering){this.updateCameraRecoveryReplay(e,i,{cameraOpt:t,scenePath:this.viewContainerManager.getCurScenePath(e)});return}if(o){i||(i={isBusy:!0},this.cameraUpdateStateByView.set(e,i)),this.clearCameraTaskTimeouts(i),i.pendingCamera=void 0,i.transaction=void 0,i.preparePromise=void 0,i.currentTaskId=void 0,i.isRecovering=!0,i.recoveryFromGeneration=o.viewGeneration,i.recoveryOwner=this.nextCameraRecoveryOwner(),this.updateCameraRecoveryReplay(e,i,{cameraOpt:t,scenePath:this.viewContainerManager.getCurScenePath(e)});return}if(!this.isViewInitReady(e)){this.control.queuePendingInitCamera(e,t,this.viewContainerManager.getCurScenePath(e));return}this.updateCameraForReadyRenderer(e,t)}updateCameraForReadyRenderer(e,t){if(this.control.isSceneBusy(e)){this.control.deferSceneCamera(e,t);return}if(this.control.isClearBusy(e)){this.control.deferClearCamera(e,t);return}let n=this.cameraUpdateStateByView.get(e);n||(n={isBusy:!0},this.cameraUpdateStateByView.set(e,n)),n.pendingCamera={cameraOpt:t,scenePath:this.viewContainerManager.getCurScenePath(e)},this.schedulePendingCameraForView(e,n)}schedulePendingCameraForView(e,t){if(!t.isRecovering&&!t.preparePromise&&t.currentTaskId===void 0){if(!t.transaction){const n=this.enqueueCameraPreparation(e);t.preparePromise=n,n.then(()=>{this.cameraUpdateStateByView.get(e)!==t||(t==null?void 0:t.preparePromise)!==n||t.isRecovering||this.control.isSceneBusy(e)||(t.preparePromise=void 0,this.consumePendingCameraForView(e,t))}).catch(()=>{this.cameraUpdateStateByView.get(e)!==t||t.preparePromise!==n||t.isRecovering||(t.preparePromise=void 0,this.cameraUpdateDestroy(e))});return}this.consumePendingCameraForView(e,t)}}isSameCameraOpt(e,t){return e.scale===t.scale&&e.centerX===t.centerX&&e.centerY===t.centerY&&e.width===t.width&&e.height===t.height}enqueueCameraPreparation(e){const t=this.getLocalWorkFinalizeQueue(e).then(async()=>{await this.waitForLocalEventQueue(e);const i=this.viewContainerManager.getCurScenePath(e);!i||this.control.isSceneBusy(e)||await this.forceDoneLocalWorks(e,i,"camera-update")}),n=t.catch(()=>{});return this.setLocalWorkFinalizeQueue(e,n),n.then(()=>this.clearLocalWorkFinalizeQueue(e,n),()=>this.clearLocalWorkFinalizeQueue(e,n)),t}consumePendingCameraForView(e,t){var l,u,h;if(this.cameraUpdateStateByView.get(e)!==t||t.preparePromise||t.currentTaskId!==void 0||t.isRecovering||this.control.isSceneBusy(e))return;const n=t.pendingCamera;if(!n)return;const i=this.viewContainerManager.getCurScenePath(e);if(n.scenePath&&n.scenePath!==i){t.pendingCamera=void 0;return}t.pendingCamera=void 0;const o=(this.cameraTaskSequenceByView.get(e)||0)+1,a=this.viewGenerationById.get(e);this.cameraTaskSequenceByView.set(e,o),t.currentTaskId=o,t.transaction={taskId:o,camera:{...n.cameraOpt},scenePath:i,viewGeneration:a,recoveryOwner:t.recoveryOwner,coreAckReceived:!1,settledAckReceived:!1},this.blurCursor(e);const c={msgType:le.UpdateCamera,dataType:xe.Local,cameraOpt:n.cameraOpt,scenePath:i,isRunSubWork:!0,viewId:e,viewGeneration:a,cameraTaskId:o};this.post(new Set([{msgType:le.TasksQueue,dataType:xe.Local,isRunSubWork:!0,isRunBackgroundThread:this.control.isUseBackgroundThread,mainTasksqueueCount:o,cameraTaskId:o,tasksqueue:new Map([[e,c]]),viewId:e,viewGeneration:a}])),this.control.textEditorManager.onCameraChange(n.cameraOpt,e);try{(l=this.control.selectorApi)==null||l.onCameraChange(e)}catch(d){(h=(u=this.Logger)==null?void 0:u.error)==null||h.call(u,`[Appliance]: [selector] onCameraChange failed: ${d==null?void 0:d.message}`)}this.startCameraTaskTimeouts(e,t,o,a)}clearCameraTaskTimeouts(e){e.cameraAckSlowTimeoutId&&(clearTimeout(e.cameraAckSlowTimeoutId),e.cameraAckSlowTimeoutId=void 0),e.cameraTransportTimeoutId&&(clearTimeout(e.cameraTransportTimeoutId),e.cameraTransportTimeoutId=void 0)}startCameraTaskTimeouts(e,t,n,i){this.clearCameraTaskTimeouts(t),t.cameraAckSlowTimeoutId=setTimeout(()=>{var o,a;!this.isCurrentCameraTransaction(e,t,n,i)||t.currentTaskId!==n||(t.cameraAckSlowTimeoutId=void 0,(a=(o=this.Logger)==null?void 0:o.warn)==null||a.call(o,`[Appliance]: camera render ACK slow viewId=${e} taskId=${n} hasPending=${!!t.pendingCamera} elapsedMs=${ru}`))},ru),t.cameraTransportTimeoutId=setTimeout(()=>{!this.isCurrentCameraTransaction(e,t,n,i)||t.currentTaskId!==n||(t.cameraTransportTimeoutId=void 0,this.failCameraTask(e,n,{code:"CAMERA_TRANSPORT_TIMEOUT",business:"updateCamera",message:"renderer returned neither success nor failure ACK",elapsedMs:sa,stage:"transport"},i))},sa)}isCurrentCameraTransaction(e,t,n,i){const o=t.transaction;return this.cameraUpdateStateByView.get(e)===t&&(o==null?void 0:o.taskId)===n&&o.viewGeneration===i&&this.viewGenerationById.get(e)===i}completeCameraTransactionIfReady(e,t){const n=t.transaction;!n||!this.isCurrentCameraTransaction(e,t,n.taskId,n.viewGeneration)||t.currentTaskId!==void 0||t.pendingCamera||!n.coreAckReceived||!n.settledAckReceived||(e===Fe?this.logMainViewCameraTrace("completed",{taskId:n.taskId,scenePath:n.scenePath,camera:n.camera,renderFinished:!0}):this.logAppViewCameraTrace(e,"completed",{taskId:n.taskId,scenePath:n.scenePath,camera:n.camera,renderFinished:!0}),this.cameraUpdateDestroy(e))}ackCameraTask(e,t,n){const i=this.cameraUpdateStateByView.get(e);!i||i.currentTaskId!==t||!this.isCurrentCameraTransaction(e,i,t,n)||(this.clearCameraTaskTimeouts(i),i.currentTaskId=void 0,i.transaction.coreAckReceived=!0,i.pendingCamera?this.consumePendingCameraForView(e,i):this.completeCameraTransactionIfReady(e,i))}failCameraTask(e,t,n,i){var a,c;const o=this.cameraUpdateStateByView.get(e);if(!(!o||!this.isCurrentCameraTransaction(e,o,t,i))){if(this.cameraFailureSequenceByView.set(e,(this.cameraFailureSequenceByView.get(e)||0)+1),this.clearCameraTaskTimeouts(o),o.currentTaskId=void 0,this.Logger.error(`[Appliance]: renderer Camera task failed code=${n.code} business=${n.business} viewId=${e} taskId=${t} stage=${n.stage||"unknown"} elapsedMs=${n.elapsedMs??0} blockers=${JSON.stringify(n.blockingWorks||[])} error=${n.message}`),n.code==="CAMERA_TRANSPORT_TIMEOUT"){if(!this.beginCameraRecovery(e,o)){this.Logger.error(`[Appliance]: Camera recovery cannot start viewId=${e} taskId=${t} reason=missing-replay-camera`),this.cameraUpdateDestroy(e,!1);return}if(((c=(a=this.control).isRenderRuntimeRecoveryAllowed)==null?void 0:c.call(a))===!1){this.releaseCameraRecovery(e,"manager-lifecycle-ended",o);return}this.scheduleRenderRuntimeFallback({type:le.ReportError,viewId:e,viewGeneration:i,reportErrorCode:"CAMERA_TRANSPORT_TIMEOUT",reportStage:n.stage||"camera-transport",reportError:n.message});return}o.pendingCamera?this.consumePendingCameraForView(e,o):this.cameraUpdateDestroy(e)}}ackCameraSettledTask(e,t,n){const i=this.cameraUpdateStateByView.get(e);!i||!this.isCurrentCameraTransaction(e,i,t,n)||(i.transaction.settledAckReceived=!0,this.completeCameraTransactionIfReady(e,i))}cameraUpdateDestroy(e,t=!0){var o,a,c,l;const n=this.cameraUpdateStateByView.get(e),i=this.getActiveRenderRuntimeRecoveryView(e);if(i&&(i.replayCamera=void 0,i.cameraRecoveryOwner=void 0),(n==null?void 0:n.recoveryOwner)!==void 0&&((o=this.viewInitRecoveryAttempts)==null||o.delete(e)),!n){t||(a=this.methodBuilder)==null||a.discardRecovery(e),this.resolveCameraUpdateEndWaiters(e);return}if(this.clearCameraTaskTimeouts(n),n.pendingCamera=void 0,n.transaction=void 0,n.preparePromise=void 0,n.currentTaskId=void 0,this.cameraUpdateStateByView.delete(e),this.resolveCameraUpdateEndWaiters(e),this.resolveViewLifecycleIdleWaiters(e),!t){(c=this.methodBuilder)==null||c.discardRecovery(e);return}!this.control.isSceneBusy(e)&&!this.control.isClearBusy(e)&&((l=this.methodBuilder)==null||l.recover(e,this.viewContainerManager.getCurScenePath(e)),this.runAnimation())}resolveCameraUpdateEndWaiters(e){var n;const t=(n=this.cameraUpdateEndWaitersByView)==null?void 0:n.get(e);t&&(this.cameraUpdateEndWaitersByView.delete(e),t.forEach(i=>i()))}waitForCameraUpdateEnd(e){var t;return(t=this.cameraUpdateStateByView)!=null&&t.has(e)?(this.cameraUpdateEndWaitersByView||(this.cameraUpdateEndWaitersByView=new Map),new Promise(n=>{const i=this.cameraUpdateEndWaitersByView.get(e)||new Set;i.add(n),this.cameraUpdateEndWaitersByView.set(e,i)})):Promise.resolve()}waitForViewLifecycleIdle(e){return this.hasPendingViewLifecycleWork(e)?(this.viewLifecycleIdleWaitersByView||(this.viewLifecycleIdleWaitersByView=new Map),new Promise(t=>{const n=this.viewLifecycleIdleWaitersByView.get(e)||new Set;n.add(t),this.viewLifecycleIdleWaitersByView.set(e,n)})):Promise.resolve()}hasPendingViewLifecycleWork(e){var t,n,i;return((t=this.cameraUpdateStateByView)==null?void 0:t.has(e))||((n=this.pendingDprByView)==null?void 0:n.has(e))||((i=this.viewRecoveryQueueByView)==null?void 0:i.has(e))||!1}resolveViewLifecycleIdleWaiters(e){var n;if(this.hasPendingViewLifecycleWork(e))return;const t=(n=this.viewLifecycleIdleWaitersByView)==null?void 0:n.get(e);t&&(this.viewLifecycleIdleWaitersByView.delete(e),t.forEach(i=>i()))}recoverAfterSceneChange(e){var t;(t=this.methodBuilder)==null||t.recover(e),this.runAnimation()}abortActiveContinuousMethods(e,t){var n;return((n=this.methodBuilder)==null?void 0:n.abortActiveContinuousMethods(e,t))||!1}abortActiveLocalInput(e,t){var g,y,S,E,C;const n=t==null?void 0:t.toString(),i=n?((g=this.collector)==null?void 0:g.getLocalId(n))||n:void 0,o=[...this.localPointsBatchData.entries()].filter(([,L])=>L.viewId===e).map(([L])=>L.toString()),a=[...this.getFullLayerBitmapEraseTxns().values()].filter(L=>L.viewId===e&&L.phase!=="committed"&&L.phase!=="aborted"),c=!n||((y=this.collector)==null?void 0:y.isLocalId(n))||((S=this.collector)==null?void 0:S.isOwn(n)),l=i!==void 0&&!!c&&o.includes(i),u=i!==void 0&&a.some(L=>{var T,p,m,M;return L.workId===i||((T=L.updatedTargetIds)==null?void 0:T.has(i))||((p=L.updatedTargetIds)==null?void 0:p.has(n||i))||((m=L.deletedTargetIds)==null?void 0:m.has(i))||((M=L.deletedTargetIds)==null?void 0:M.has(n||i))}),h=i===void 0||l||u,d=((E=this.localEventQueueByView)==null?void 0:E.has(e))||!1;return!(this.getLocalWorkViewId()===e||this.currentLocalWorkData.viewId===e||((C=this.activeLocalEvent)==null?void 0:C.viewId)===e||o.length>0||a.length>0||d)||!h?!1:(this.localInputEpochByView||(this.localInputEpochByView=new Map),this.localInputEpochByView.set(e,(this.localInputEpochByView.get(e)||0)+1),o.forEach(L=>this.rememberCancelledLocalWork(L,e)),this.currentLocalWorkData.viewId===e&&this.setCurrentLocalWorkData({workState:de.Pending}),this.getLocalWorkViewId()===e&&this.setLocalWorkViewId(void 0),this.isLocalWorkActive=!1,!0)}async clearViewScenePath(e,t,n){var c,l;const i=this.viewContainerManager.getCurScenePath(e),o=this.isViewInitReady(e);if(n){const u=(c=this.collector)==null?void 0:c.uid;if(!(!u||this.control.renderControl.isClearAble({uid:u,viewId:e,scenePath:i})))return}const a=this.beginCameraClearReplay(e,i);try{if(o||this.control.queuePendingInitClear(e,i),a.preserveRecovery||this.cameraUpdateDestroy(e),this.cancelLocalWorks(e,!t),this.control.textEditorManager.clear(e,t),o&&(this.queryTaskBatchData({dataType:xe.Service,viewId:e}).forEach(u=>{this.taskBatchData.delete(u)}),this.queryTaskBatchData({msgType:le.Clear,dataType:xe.Local,viewId:e}).forEach(u=>{this.taskBatchData.delete(u)}),this.taskBatchData.add({dataType:xe.Local,msgType:le.Clear,viewId:e}),this.runAnimation()),t||(this.control.renderControl.isUsePageAuth(e)&&i?this.control.renderControl.clearRenderPage(e,i):(l=this.collector)==null||l.dispatch({type:le.Clear,viewId:e,scenePath:i})),this.zIndexNodeMethod&&this.zIndexNodeMethod.clearZIndex(e),!o)return;await new Promise(u=>{const h=this.clearAllResolveMap.get(e)||{resolve:void 0,timer:void 0};h.timer&&clearTimeout(h.timer),h.resolve=u,h.timer=setTimeout(()=>{const d=this.clearAllResolveMap.get(e);d!=null&&d.resolve&&d.resolve(e)},this.maxLastSyncTime),this.clearAllResolveMap.set(e,h)}).then(u=>{this.clearAllResolveMap.delete(u)})}finally{this.finishCameraClearReplay(e,a)}}internalMsgEmitterListener(){var e;this.methodBuilder=new Ve([Te.CopyNode,Te.SetColorNode,Te.DeleteNode,Te.RotateNode,Te.ScaleNode,Te.TranslateNode,Te.ZIndexNode,Te.SetFontStyle,Te.SetPoint,Te.SetLock,Te.SetShapeOpt]).registerForMainEngine(We.MainEngine,this.control),this.zIndexNodeMethod=(e=this.methodBuilder)==null?void 0:e.getBuilder(Te.ZIndexNode)}setZIndex(e){const t=this.currentToolsData&&ye.cloneDeep(this.currentToolsData.toolsOpt);return t&&this.zIndexNodeMethod&&this.isUseZIndex&&(this.zIndexNodeMethod.addMaxLayer(e),t.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),t}async checkDrawingWork(e){const t=new Set;let n=!1;for(const[i,o]of this.localPointsBatchData.entries()){const{state:a,viewId:c,toolsType:l,undoTickerId:u}=o,h=this.getFullLayerBitmapEraseTxns().get(i.toString()),d=a===de.Done&&o.isFullWork===!0&&l===q.BitMapEraser&&(h==null?void 0:h.phase)==="done-staging";if(e===c&&(a===de.Start||a===de.Doing||d)){if(l===q.Text)continue;o.state=de.Done,o.isFullWork=!0,this.localPointsBatchData.set(i,o),(h==null?void 0:h.phase)==="doing"&&this.markFullLayerBitmapEraseDoneStaging(h),u&&(t.add(u),o.scenePath&&l&&ql.has(l)?this.internalMsgEmitter.emit("finalizeRequested",u,c,[i.toString()],o.scenePath):l&&ki(l)&&l!==q.BitMapEraser&&o.scenePath&&this.internalMsgEmitter.emit("finalizeRequested",u,c,[],o.scenePath)),n=!0}}if(n){this.consume();for(const[i,o]of this.localPointsBatchData.entries())o.viewId===e&&o.state===de.Done&&this.deleteLocalPoint(i)}return[...t]}cancelLocalWorks(e,t=!0,n){var f;const i=this.viewContainerManager.getCurScenePath(e);let o=i;const a=new Set,c=new Set,l=new Map;let u=!1;const h=new Set(n||[]);if(!n){for(const[g,y]of this.localPointsBatchData.entries())y.viewId===e&&h.add(g.toString());for(const g of this.getFullLayerBitmapEraseTxns().values())g.viewId===e&&h.add(g.workId)}for(const g of h){const y=this.getFullLayerBitmapEraseTxns().get(g);!y||y.viewId!==e||(y.phase="aborting",y.commitTimeoutId&&clearTimeout(y.commitTimeoutId),y.scenePath&&(o=y.scenePath),y.undoTickerId&&y.scenePath&&l.set(y.undoTickerId,y.scenePath),this.rememberCancelledEraseTxn(g))}for(const[g,y]of this.localPointsBatchData.entries()){const S=g.toString();if(y.viewId!==e||!h.has(S))continue;const E=y.scenePath||i;y.scenePath&&(o=y.scenePath),y.undoTickerId&&E&&l.set(y.undoTickerId,E),ki(y.toolsType)&&this.rememberCancelledEraseTxn(S);const C=this.getDoneWaitForView(e);C!=null&&C.workIds.includes(g.toString())&&(u=!0),g!==Le&&(this.rememberCancelledLocalWork(S,e),a.add(S),y.state!==de.Start&&c.add(S)),this.localPointsBatchData.delete(g)}for(const g of h)g!==Le&&(this.rememberCancelledLocalWork(g,e),a.add(g)),this.finishFullLayerBitmapEraseTxn(g,"aborted");const d=this.getDoneWaitForView(e);d!=null&&d.workIds.some(g=>h.has(g))&&(u=!0);for(const g of[...this.taskBatchData])g.viewId===e&&g.workId!==void 0&&h.has(g.workId.toString())&&(g.msgType===le.CreateWork||g.msgType===le.DrawWork||g.msgType===le.RemoveNode)&&this.taskBatchData.delete(g);this.reRenders||(this.reRenders=new Map);for(const[g,y]of this.reRenders.entries()){const S=y.filter(E=>{const L=[...E.renderEraseTxnIds||[],...E.eraseTxnId!==void 0?[E.eraseTxnId]:[]].some(T=>h.has(T));return L&&this.retireRenderedImageBitmap(E),!L});S.length?this.reRenders.set(g,S):this.reRenders.delete(g)}if(u){const g=this.getDoneResolverForView(e);this.clearDoneWaitForView(e),g==null||g(!1)}l.forEach((g,y)=>{this.internalMsgEmitter.emit("cancelUndoTicker",y,e,g)}),a.size&&([...a].forEach(y=>{this.taskBatchData.add({msgType:le.RemoveNode,workId:y,viewId:e,dataType:xe.Local,isRunSubWork:!0,scenePath:o})}),t&&c.size&&((f=this.collector)==null||f.dispatch({type:le.RemoveNode,removeIds:[...c],viewId:e,scenePath:o})),this.consume()),this.currentLocalWorkData.viewId===e&&this.setCurrentLocalWorkData({workState:de.Pending})}timeoutLocalWorks(e,t,n,i,o){var d,f;this.invalidateTransactionBarrier(e);const a=(f=(d=this.viewContainerManager.getView(e))==null?void 0:d.displayer)==null?void 0:f.commiter,c=new Set;i&&i.forEach(g=>{const y=this.getFullLayerBitmapEraseTxns().get(g);(y==null?void 0:y.undoTickerId)!==void 0&&c.add(y.undoTickerId);const S=this.localPointsBatchData.get(g);(S==null?void 0:S.undoTickerId)!==void 0&&c.add(S.undoTickerId)});let l=[];try{l=(a==null?void 0:a.getPendingTickerSnapshots(t))||[],i&&(l=l.filter(g=>c.has(g.tickerId)))}catch(g){this.logLocalWorkBarrierError(`[Appliance]: reading pending Undo tickers failed; viewId=${e}; reason=${n}; error=${yr(g)}`)}const u=o?`; error=${yr(o)}`:"";this.logLocalWorkBarrierError(`[Appliance]: local work barrier failed; viewId=${e}; scenePath=${t}; reason=${n}${u}`);const h=new Set;[...i||this.getFullLayerBitmapEraseTxns().keys()].forEach(g=>{const y=this.getFullLayerBitmapEraseTxns().get(g.toString());(y==null?void 0:y.viewId)===e&&h.add(g.toString())}),h.forEach(g=>{const y=this.getFullLayerBitmapEraseTxns().get(g);y&&this.rollbackBitmapEraserTxn(y)});try{this.cancelLocalWorks(e,!1,i)}catch(g){this.logLocalWorkBarrierError(`[Appliance]: cancelling timed-out local work failed; viewId=${e}; reason=${n}; error=${yr(g)}`)}finally{l.forEach(g=>{try{a==null||a.cancelUndoTicker(g.tickerId,e,g.scenePath)}catch(y){this.logLocalWorkBarrierError(`[Appliance]: forcing Undo stack-end failed; viewId=${e}; tickerId=${g.tickerId}; reason=${n}; error=${yr(y)}`)}})}}rollbackBitmapEraserTxn(e){var o,a,c,l;if(e.phase==="aborted"||e.phase==="committed")return;e.phase="aborting",e.rollbackStartedAt=Date.now(),this.rememberCancelledEraseTxn(e.workId);try{this.post(new Set([{msgType:le.CancelBitmapEraser,dataType:xe.Local,viewId:e.viewId,workId:e.workId,isRunSubWork:!0,isRunBackgroundThread:!0}]))}catch(u){this.logLocalWorkBarrierError(`[Appliance]: bitmap eraser abort notification failed; viewId=${e.viewId}; workId=${e.workId}; error=${yr(u)}`)}const t=this.localPointsBatchData.get(e.workId);t&&(t.state=de.Pending,t.points=[],t.isFullWork=!1,this.localPointsBatchData.set(e.workId,t));const n=e.beforeImages;if(!(n!=null&&n.size)){this.scheduleViewRecovery(e.viewId,"bitmap-eraser-timeout-without-snapshot");return}const i=e.scenePath||this.viewContainerManager.getCurScenePath(e.viewId)||"";for(const[u,h]of n){const d=xt(h.op||[]);this.taskBatchData.add({msgType:le.FullWork,dataType:xe.Local,viewId:e.viewId,scenePath:i,workId:u,toolsType:h.toolsType,opt:ye.cloneDeep(h.opt),ops:d,isFullWork:!0,isRunSubWork:!0,updateNodeOpt:{useAnimation:!1}});const f=(o=e.deletedTargetIds)==null?void 0:o.has(u),g=(a=this.collector)==null?void 0:a.hasId(e.viewId,i,u);f||!g?(c=this.collector)==null||c.dispatch({type:le.FullWork,viewId:e.viewId,scenePath:i,workId:u,toolsType:h.toolsType,opt:ye.cloneDeep(h.opt),ops:d,isSync:!0}):(l=this.collector)==null||l.dispatch({type:le.UpdateNode,viewId:e.viewId,scenePath:i,workId:u,toolsType:h.toolsType,opt:ye.cloneDeep(h.opt),ops:d,isSync:!0,updateNodeOpt:{useAnimation:!1}})}try{this.consume()}catch(u){this.scheduleViewRecovery(e.viewId,"bitmap-eraser-timeout-render-compensation-failed"),this.logLocalWorkBarrierError(`[Appliance]: bitmap eraser render compensation enqueue failed; viewId=${e.viewId}; workId=${e.workId}; error=${yr(u)}`)}}logLocalWorkBarrierError(e){var t;(t=this.Logger)==null||t.error(e)}removeDrawingWork(e){this.abortActiveLocalInput(e),this.cancelLocalWorks(e)}removeNodes(e,t){var i,o;const n=(i=this.viewContainerManager.getView(e))==null?void 0:i.focusScenePath;if(n&&t.length){for(const a of t)this.taskBatchData.add({msgType:le.RemoveNode,workId:a,viewId:e,dataType:xe.Local,isRunSubWork:!1});this.consume(),(o=this.collector)==null||o.dispatch({type:le.RemoveNode,removeIds:t,viewId:e,scenePath:n})}}hoverCursor(e,t){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)===q.Selector&&!this.isViewBusy(t)){const i=this.viewContainerManager.getView(t);if(i&&i.displayer&&i.displayer.vDom){const c=i.displayer.vDom.state.floatBarData;if(c){const{x:l,y:u,w:h,h:d}=c;if(Y0(e,{x:l,y:u,w:h,h:d}))return}}const o=this.viewContainerManager.transformToScenePoint(e,t),a={msgType:le.CursorHover,dataType:xe.Local,point:o,toolsType:this.currentToolsData.toolsType,opt:this.currentToolsData.toolsOpt,isRunSubWork:!1,viewId:t};this.queryTaskBatchData({msgType:le.CursorHover,dataType:xe.Local,toolsType:this.currentToolsData.toolsType,viewId:t}).forEach(c=>{this.taskBatchData.delete(c)}),this.taskBatchData.add(a),this.runAnimation()}}blurCursor(e){var n;if(((n=this.currentToolsData)==null?void 0:n.toolsType)!==q.Selector)return;const t={msgType:le.CursorBlur,dataType:xe.Local,isRunSubWork:!1,viewId:e};this.queryTaskBatchData({msgType:le.CursorHover,dataType:xe.Local,viewId:e}).forEach(i=>{this.taskBatchData.delete(i)}),this.taskBatchData.add(t),this.consume()}sendCursorEvent(e,t){var c,l,u;if(!this.currentLocalWorkData||this.currentLocalWorkData.workState===de.Unwritable||this.isViewBusy(t))return;const n=(c=this.currentToolsData)==null?void 0:c.toolsType;if(this.workState===de.Pending&&n===q.Selector&&(ye.isNumber(e[0])&&ye.isNumber(e[1])?this.hoverCursor(e,t):e[0]===void 0&&e[1]===void 0&&this.blurCursor(t)),!this.currentToolsData||!this.isCanSentCursor||!this.control.pluginOptions.extras.cursor.enable)return;const i=(l=this.collector)==null?void 0:l.uid,o=this.viewContainerManager.getCurScenePath(t);switch((u=this.currentToolsData)==null?void 0:u.toolsType){case q.Eraser:case q.PencilEraser:case q.BitMapEraser:{if(i&&!this.control.renderControl.isClearAble({uid:i,viewId:t,filterLocalSelf:!1,scenePath:o}))return;break}default:if(i&&!this.control.renderControl.isWritable||i&&!this.control.renderControl.isRenderAble({uid:i,viewId:t,filterLocalSelf:!1,scenePath:o}))return;break}let a=[void 0,void 0];this.currentToolsData&&this.isCanSentCursor&&!this.localPointsBatchData.size&&!this.getLockSentEventCursor()&&(a=e,this.control.cursor.sendEvent(a,t))}getBoundingRect(e){var t,n;{const i=(t=this.collector)==null?void 0:t.getScenePathData(e);if(!i)return;if(Object.keys(i).forEach(o=>{var a;((a=this.collector)==null?void 0:a.getLocalId(o))===Le&&delete i[o]}),Object.keys(i).length&&this.viewContainerManager.mainView&&this.viewContainerManager.mainView.cameraOpt){const o=this.viewContainerManager.mainView.id,a=this.getViewSceneRequestKey(o,e),c=(n=this.boundingRectMap)==null?void 0:n.get(a);if(c)return c.promise;const l=this.createInternalRequestId("bounding_rect");let u;const d=new Promise(g=>{u=g}).then(g=>{const y=this.boundingRectMap.get(a);return(y==null?void 0:y.requestId)===l&&(this.boundingRectMap.delete(a),this.boundingRectRequestIdByViewScene.delete(a)),g});this.boundingRectMap.set(a,{resolve:u,requestId:l,viewId:o,promise:d});const f={msgType:le.BoundingBox,dataType:xe.Local,scenePath:e,scenes:i,cameraOpt:{...this.viewContainerManager.mainView.cameraOpt},isRunSubWork:!0,viewId:o,requestId:l};return this.boundingRectRequestIdByViewScene.set(a,f.requestId),this.taskBatchData.add(f),this.runAnimation(),d}}}getSnapshot(e,t,n,i){var o,a,c,l,u;{const h=(o=this.collector)==null?void 0:o.getViewIdBySecenPath(e);if(!h)return;const d=this.getViewSceneRequestKey(h,e),f=(a=this.snapshotMap)==null?void 0:a.get(d);if(f)return f.promise;const g=(c=this.collector)==null?void 0:c.getStorageData(h,e);if(!g)return;if(Object.keys(g).forEach(y=>{var S;((S=this.collector)==null?void 0:S.getLocalId(y))===Le&&delete g[y]}),Object.keys(g).length){const y=this.viewContainerManager.mainView;if(!y)return;const S=t||((l=y.cameraOpt)==null?void 0:l.width),E=n||((u=y.cameraOpt)==null?void 0:u.height),C=this.createInternalRequestId("snapshot"),L=this.control.isUseBackgroundThread?[void 0,void 0]:[void 0];let T;const m=new Promise(v=>{T=v}).then(v=>{const R=this.snapshotMap.get(d);return(R==null?void 0:R.requestId)===C&&(this.snapshotMap.delete(d),this.snapshotRequestIdByViewScene.delete(d)),v.reverse()});this.snapshotMap.set(d,{resolve:T,value:L,requestId:C,viewId:h,promise:m});const M={msgType:le.Snapshot,dataType:xe.Local,scenePath:e,scenes:g,w:S,h:E,cameraOpt:i&&{...i,width:S,height:E}||y.cameraOpt,isRunSubWork:!0,isRunBackgroundThread:this.control.isUseBackgroundThread,viewId:h,requestId:C};return this.snapshotRequestIdByViewScene.set(d,M.requestId),this.taskBatchData.add(M),this.runAnimation(),m}}}queryTaskBatchData(e){const t=[];if(e)for(const n of this.taskBatchData.values()){let i=!0;for(const[o,a]of Object.entries(e))if(n[o]!==a){i=!1;break}i&&t.push(n)}return t}insertIconify(e,t){var a;if(!this.control.canAcceptLocalMutation(e))return;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertIconify viewId is not exist");if(!t.src)throw new Error("iconify src must be required");if(!/^(http|https):\/\//.test(t.src))throw new Error("iconify src must be http or https");t.strokeColor||(t.strokeColor=(a=this.currentLocalWorkData.toolsOpt)==null?void 0:a.strokeColor);const o=n==null?void 0:n.focusScenePath;if(e&&o){const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncIcon}),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[t.uuid],o);const l={...t,type:on.Iconify};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:xe.Local,toolsType:q.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation()}}insertBackgroundSVG(e,t){if(!this.control.canAcceptLocalMutation(e))return;if(!this.control.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertBackgroundSVG viewId is not exist");if(!t.src)throw new Error("src must be required");if(t.src&&!/^(http|https):\/\//.test(t.src))throw new Error("iconify src must be http or https");const i=n==null?void 0:n.focusScenePath;if(e&&i){const o=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",o,e,{render:!0,storage:!0,source:$e.AsyncIcon}),tt.InternalMsgEmitter.emit("finalizeRequested",o,e,[t.uuid],i);const a={...t,locked:t.locked??!0,type:Wi.url};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayerForBackgroundSVG(e),a.zIndex=this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:xe.Local,toolsType:q.BackgroundSVG,workId:t.uuid,opt:a,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:o,isRunBackgroundThread:!0,scenePath:i}),this.runAnimation()}}async insertBackgroundMarkMap(e,t){var o;if(!this.control.canAcceptLocalMutation(e))return;if(this.assertMarkmapRuntimeRegistered("insertBackgroundMarkMap",e),!this.control.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");const n=this.viewContainerManager.getView(e);if(!n)throw new Error("instertBackgroundMarkMap viewId is not exist");if(!t.data)throw new Error("data must be required");if(t.data&&!Q0e(t.data))throw new Error("data must be markdown string");const i=n==null?void 0:n.focusScenePath;if(e&&i){const a=t.uuid.toString();if((o=this.collector)!=null&&o.hasId(e,i,a))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already exist");if(this.markmapIdResolveMap.has(a))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already resolving");const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncMarkmap}),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[a],i);const l={...t,locked:t.locked??!0,type:Wi.markmap};return this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayerForBackgroundSVG(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndexForBackgroundSVG(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:xe.Local,toolsType:q.BackgroundSVG,workId:a,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c,isRunBackgroundThread:!0}),this.runAnimation(),new Promise((u,h)=>{this.markmapIdResolveMap.set(a,{resolve:u,timer:setTimeout(()=>{const d=this.markmapIdResolveMap.get(a);d!=null&&d.timer&&(d.timer=void 0),h(a)},this.control.pluginOptions.extras.markmap.timeout)})}).then(u=>{if(u)return this.markmapIdResolveMap.delete(u),u}).catch(u=>{throw this.markmapIdResolveMap.delete(u),tt.InternalMsgEmitter.emit("ackRenderUndoTicker",c,e,i),tt.InternalMsgEmitter.emit("ackStorageUndoTicker",c,e,i),new Error(`instertBackgroundMarkMap svgInfo.uuid ${u} insert timeout`)})}}async updateBackgroundMarkMap(e,t,n){var l;if(!this.control.canAcceptLocalMutation(e))return;this.assertMarkmapRuntimeRegistered("updateBackgroundMarkMap",e);const i=this.viewContainerManager.getView(e);if(!i)throw new Error("updateBackgroundMarkMap viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(!o)throw new Error("updateBackgroundMarkMap scenePath is not exist");if((l=this.collector)!=null&&l.hasId(e,o,t))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already exist");if(this.markmapIdResolveMap.has(t))throw new Error("instertBackgroundMarkMap svgInfo.uuid is already resolving");const a=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",a,e,{render:!0,storage:!0,source:$e.AsyncMarkmap}),tt.InternalMsgEmitter.emit("finalizeRequested",a,e,[t],o);const c={...n,type:Wi.markmap};this.taskBatchData.add({msgType:le.UpdateNode,dataType:xe.Local,toolsType:q.BackgroundSVG,workId:t,opt:c,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:a,isRunBackgroundThread:!0}),this.runAnimation()}insertImage(e,t){if(!this.control.canAcceptLocalMutation(e))return;const n=this.viewContainerManager.getView(e);if(!n)throw new Error("insertImage viewId is not exist");if(t.src&&!/^(http|https):\/\//.test(t.src))throw new Error("Image src must be http or https");const i=n==null?void 0:n.focusScenePath;if(e&&i){const{src:o,uuid:a}=t;if(a&&!o){this.tmpImageConfigMap.set(a,t);return}const c=this.now;tt.InternalMsgEmitter.emit("addUndoTicker",c,e,{render:!0,storage:!0,source:$e.AsyncImage});const l={...t,type:on.Image};this.zIndexNodeMethod&&(this.zIndexNodeMethod.addMaxLayer(e),l.zIndex=this.zIndexNodeMethod.getMaxZIndex(e)),this.taskBatchData.add({msgType:le.FullWork,dataType:xe.Local,toolsType:q.Image,workId:t.uuid,opt:l,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:c}),this.runAnimation(),tt.InternalMsgEmitter.emit("finalizeRequested",c,e,[t.uuid],i)}}lockImage(e,t,n){var a,c;if(!this.control.canAcceptLocalMutation(e))return;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(e&&o&&this.collector){const l=this.collector.getStorageData(e,o);if(!l)return;for(const[u,h]of Object.entries(l))if(h&&h.toolsType===q.Image&&h.opt.uuid===t){const d=this.now,f=(a=this.collector)!=null&&a.isOwn(u)?(c=this.collector)==null?void 0:c.getLocalId(u):u;tt.InternalMsgEmitter.emit("addUndoTicker",d,e,{render:!0,storage:!0,source:$e.AsyncImage});const g={...h.opt,locked:n,type:on.Image};this.taskBatchData.add({msgType:le.FullWork,dataType:xe.Local,toolsType:q.Image,workId:f,opt:g,viewId:e,willRefresh:!0,willSyncService:!0,needUndoTicker:d}),this.runAnimation(),tt.InternalMsgEmitter.emit("finalizeRequested",d,e,[f],o);return}}}completeImageUpload(e,t,n){if(!this.control.canAcceptLocalMutation(e))return;const i=this.viewContainerManager.getView(e);if(!i)throw new Error("insertImage viewId is not exist");const o=i==null?void 0:i.focusScenePath;if(e&&o){const a=this.tmpImageConfigMap.get(t);a&&(a.src=n,this.insertImage(e,a),this.tmpImageConfigMap.delete(t));return}}getImagesInformation(e){const t=[];if(this.collector){const n=this.collector.getScenePathData(e);if(!n)return t;for(const i of Object.values(n))if(i&&i.toolsType===q.Image){const o=i.opt;t.push({uuid:o.uuid,centerX:o.centerX,centerY:o.centerY,width:o.width,height:o.height,locked:o.locked,uniformScale:o.uniformScale,crossOrigin:o.crossOrigin})}}return t}setShapeSelectorByWorkId(e,t){this.taskBatchData.add({workId:Le,selectIds:[e],msgType:le.Select,dataType:xe.Local,viewId:t,willSyncService:!0}),this.runAnimation()}blurSelector(e,t,n){this.taskBatchData.add({workId:n||Le,selectIds:[],msgType:le.Select,dataType:xe.Service,viewId:e,scenePath:t}),this.runAnimation()}consoleWorkerInfo(){this.taskBatchData.add({msgType:le.Console,dataType:xe.Local,isRunSubWork:!0,viewId:""}),this.consume()}sendClearUids(e,t){var i,o;const n=new Set;if(n.add({msgType:le.AuthClear,dataType:xe.Local,viewId:e,clearUids:t,localUid:(i=this.collector)==null?void 0:i.uid}),this.control.hasOffscreenCanvas)this.fullWorker.postMessage(n);else{const a=(o=this.mainThread)==null?void 0:o.consume(n);a==null||a.catch(c=>{this.logLocalWorkBarrierError(`[Appliance]: AuthClear delivery failed; viewId=${e}; error=${c instanceof Error?c.message:String(c)}`)})}}async getVNodeInfo(e,t,n){if(!this.getVNodeInfoResolveMap.has(e))return this.taskBatchData.add({msgType:le.GetVNodeInfo,dataType:xe.Local,isRunSubWork:!0,viewId:t,workIds:n,workId:e}),this.consume(),await new Promise(i=>{const o=this.getVNodeInfoResolveMap.get(e)||{resolve:void 0,timer:void 0};o.timer&&clearTimeout(o.timer),o.resolve=i,o.timer=setTimeout(()=>{const a=this.getVNodeInfoResolveMap.get(e);a!=null&&a.resolve&&a.resolve({uuid:e})},this.maxLastSyncTime*5),this.getVNodeInfoResolveMap.set(e,o)}).then(i=>{const{uuid:o}=i;return this.getVNodeInfoResolveMap.delete(o),i})}}class Nwe{constructor(r){x(this,"internalMsgEmitter");x(this,"control");x(this,"roomHotkeyCheckers");x(this,"tmpCopyStore",new Map);x(this,"tmpCopyCoordInfo");var n;const{control:e,internalMsgEmitter:t}=r;this.control=e,this.internalMsgEmitter=t,this.roomHotkeyCheckers=((n=this.control.room)==null?void 0:n.viewsParams.hotKeys.nodes)||[]}get isUseSelf(){var r,e;return((e=(r=this.control)==null?void 0:r.room)==null?void 0:e.disableDeviceInputs)||!1}get isSelector(){var r;return((r=this.control.worker.currentToolsData)==null?void 0:r.toolsType)===q.Selector}get collector(){return this.control.collector}get mainEngine(){return this.control.worker}get keyboardKind(){return/^Mac/i.test(navigator.platform)?"mac":"windows"}getEventKey(r){switch(r.type){case"keydown":return"KeyDown"}return"KeyUp"}onActiveHotkey(r){var n,i,o;const e=this.control.viewContainerManager.focuedViewId,t=(n=this.control.viewContainerManager.focuedView)==null?void 0:n.focusScenePath;if(e&&t)switch(r){case"delete":this.isSelector&&((i=this.collector)!=null&&i.hasSelector(e,t))&&Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:[Le],viewId:e});break;case"copy":this.isSelector&&((o=this.collector)!=null&&o.hasSelector(e,t))&&this.copySelectorToTemp(e,t);break;case"paste":this.tmpCopyStore.size&&this.pasteTempToFocusView(e,t);break}(r==="changeToPencil"||r==="redo"||r==="undo")&&this.onSelfActiveHotkey(r)}colloctHotkey(r){if(this.isUseSelf){const e=this.checkHotkey(r);e&&this.onSelfActiveHotkey(e)}}onSelfActiveHotkey(r){switch(r){case"changeToPencil":this.setMemberState({currentApplianceName:De.pencil,useNewPencil:!0});break;case"changeToArrow":this.setMemberState({currentApplianceName:De.arrow});break;case"changeToClick":this.setMemberState({currentApplianceName:De.clicker});break;case"changeToEllipse":this.setMemberState({currentApplianceName:De.ellipse});break;case"changeToEraser":this.setMemberState({currentApplianceName:De.eraser});break;case"changeToHand":this.setMemberState({currentApplianceName:De.hand});break;case"changeToLaserPointer":this.setMemberState({currentApplianceName:De.laserPointer});break;case"changeToSelector":this.setMemberState({currentApplianceName:De.selector});break;case"changeToRectangle":this.setMemberState({currentApplianceName:De.rectangle});break;case"changeToStraight":this.setMemberState({currentApplianceName:De.straight});break;case"redo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.redo();break;case"undo":this.control.room&&!this.control.room.disableSerialization&&this.control.viewContainerManager.undo();break;case"changeToText":this.setMemberState({currentApplianceName:De.text});break;case"changeToPencilEraser":this.setMemberState({currentApplianceName:De.pencilEraser});break;case"delete":case"copy":case"paste":this.onActiveHotkey(r);break}}checkHotkey(r){for(const e of this.roomHotkeyCheckers){const{kind:t,checker:n}=e;if(n({nativeEvent:r,kind:this.getEventKey(r),key:r.key,altKey:r.altKey,ctrlKey:r.ctrlKey,shiftKey:r.shiftKey},this.keyboardKind))return t}}copySelectorToTemp(r,e){var l,u;const t=this.control.viewContainerManager.getView(r),n=(u=(l=this.mainEngine)==null?void 0:l.methodBuilder)==null?void 0:u.getBuilder(Te.CopyNode);if(!t||!this.collector||!n)return;const i=this.collector.transformKey(Le),o=this.collector.getStorageData(r,e);if(!o)return;const a=o[i],c=a&&n.copySelector({viewId:r,store:a});c&&(this.tmpCopyCoordInfo=c==null?void 0:c.copyCoordInfo,this.tmpCopyStore=c==null?void 0:c.copyStores)}pasteTempToFocusView(r,e){var i,o;const t=this.control.viewContainerManager.getView(r),n=(o=(i=this.mainEngine)==null?void 0:i.methodBuilder)==null?void 0:o.getBuilder(Te.CopyNode);if(!(!t||!this.tmpCopyCoordInfo||!this.tmpCopyStore.size||!this.collector||!n)&&t.viewData&&this.tmpCopyCoordInfo){const a=ye.cloneDeep(this.tmpCopyCoordInfo.offset),c=this.tmpCopyCoordInfo.cameraOpt,l=t.viewData.camera;a.x=a.x+l.centerX-c.centerX,a.y=a.y+l.centerY-c.centerY;const u=this.control.worker.now;this.control.worker.internalMsgEmitter.emit("addUndoTicker",u,r,{render:!0,storage:!0,copyAck:!0,source:$e.AsyncPasteNode}),n.pasteSelector({viewId:r,scenePath:e,copyStores:ye.cloneDeep(this.tmpCopyStore),copyCoordInfo:{offset:a,cameraOpt:l},undoTickerId:u})}}setMemberState(r){var e;(e=this.control.room)==null||e.setMemberState(r)}}const Zp=50;function Owe(s){if("diffType"in s){if(s.diffType==="view")return`view:${s.viewId}`;if(s.diffType==="scenePath")return`scenePath:${s.viewId}:${s.scenePath}`}return`data:${s.key}:${s.type??""}:${s.toolsType??""}`}class zwe{constructor(r,e){x(this,"batches",new Map);this.logger=r,this.batchWindowMs=e}append(r,e,t,n){if(!n.length)return;const i=`${r}:${e}:${t}`;let o=this.batches.get(i);o||(o={items:[],indexByIdentity:new Map,flushTimer:setTimeout(()=>this.flush(i),this.batchWindowMs)},this.batches.set(i,o));const a=Date.now();for(const c of n){const l=Owe(c),u=o.indexByIdentity.get(l);u!==void 0?o.items[u]={timestamp:a,item:c}:(o.indexByIdentity.set(l,o.items.length),o.items.push({timestamp:a,item:c}))}}flush(r){const e=this.batches.get(r);if(!e)return;clearTimeout(e.flushTimer),this.batches.delete(r);const[t,n,...i]=r.split(":"),o=i.join(":"),a=o?` viewId=${n} scenePath=${o}`:` viewId=${n} scope=view`;for(let c=0;c<e.items.length;c+=Zp){const u=e.items.slice(c,c+Zp).map(({timestamp:h,item:d})=>"diffType"in d&&d.diffType!=="data"?{timestamp:h,...d}:`${d.key},${d.type??""},${d.toolsType??""},${h}`);this.logger.info(`[Appliance]: [sync-data] source=${t}${a} changesLength=${u.length} changes=${JSON.stringify(u)}`)}}destroy(){this.clearPending()}clearPending(){for(const r of this.batches.values())clearTimeout(r.flushTimer);this.batches.clear()}}const Kp=3,Bwe="__APPLIANCE_PLUGIN_RENDER_MODE_DB",zi="renderModes",jwe="appliance-plugin-render-runtime",Ed=1500,xd=1500;function Fwe(s){return SM.hash(s)}function Rd(){return globalThis.indexedDB}const Xp=new WeakSet;function Uwe(s){if(!(typeof s!="object"||s===null)&&!Xp.has(s)&&(Xp.add(s),!!s.deleteDatabase))try{const r=s.deleteDatabase(jwe),e=()=>{r.onerror=null,r.onsuccess=null,r.onblocked=null};r.onerror=e,r.onsuccess=e,r.onblocked=e}catch{}}function kd(s,r){return Uwe(s),new Promise((e,t)=>{const n=s.open(Bwe,Kp);let i=!1;const o=()=>{n.onerror=null,n.onsuccess=null,n.onupgradeneeded=null,n.onblocked=null},a=(l,u=!1)=>{i||(i=!0,clearTimeout(c),u?n.onblocked=null:o(),t(l))},c=setTimeout(()=>{a(new Error("render runtime cache open timeout"),!0)},r);n.onerror=()=>{if(i){o();return}a(n.error||new Error("render runtime cache open failed"))},n.onblocked=()=>{a(new Error("render runtime cache open blocked"),!0)},n.onupgradeneeded=l=>{var u;try{const h=l.oldVersion||0;h>0&&h<Kp&&n.result.objectStoreNames.contains(zi)&&n.result.deleteObjectStore(zi),n.result.objectStoreNames.contains(zi)||n.result.createObjectStore(zi)}catch(h){try{(u=n.transaction)==null||u.abort()}catch{}a(h instanceof Error?h:new Error(`render runtime cache upgrade failed: ${String(h)}`),!0)}},n.onsuccess=()=>{const l=n.result;if(i){l.close(),o();return}i=!0,clearTimeout(c),o(),e(l)}})}function Ad(s,r,e,t){return new Promise((n,i)=>{let o,a;try{o=s.transaction(zi,r),a=e(o.objectStore(zi))}catch(d){i(d);return}let c=!1;const l=()=>{clearTimeout(h),a.onsuccess=null,a.onerror=null,o.oncomplete=null,o.onabort=null,o.onerror=null},u=(d,f=!1)=>{if(!c){if(c=!0,l(),f)try{o.abort()}catch{}i(d instanceof Error?d:new Error(`render runtime cache request failed: ${String(d)}`))}},h=setTimeout(()=>{u(new Error("render runtime cache operation timeout"),!0)},t);a.onsuccess=()=>{},a.onerror=()=>u(a.error||new Error("render runtime cache request failed")),o.onabort=()=>u(o.error||new Error("render runtime cache transaction aborted")),o.onerror=()=>u(o.error||new Error("render runtime cache transaction failed")),o.oncomplete=()=>{if(c)return;c=!0;let d;try{d=a.result}catch(f){l(),i(f);return}l(),n(d)}})}async function Wwe(s,r=Rd(),e={}){if(!r)return{reason:"indexeddb-unavailable"};const t=e.timeoutMs??xd;let n;try{n=await kd(r,e.timeoutMs??Ed)}catch(i){return{readFailed:!0,reason:i instanceof Error?i.message:String(i)}}try{const i=await Ad(n,"readonly",o=>o.get(s),t);return i===void 0?{reason:"miss"}:q0(i)?{renderModel:i}:{reason:"invalid-render-model"}}catch(i){return{readFailed:!0,reason:i instanceof Error?i.message:String(i)}}finally{n.close()}}async function Vwe(s,r,e=Rd(),t={}){if(!e||!q0(r))return!1;const n=t.timeoutMs??xd;let i;try{i=await kd(e,t.timeoutMs??Ed)}catch{return!1}try{return await Ad(i,"readwrite",o=>o.put(r,s),n),!0}catch{return!1}finally{i.close()}}async function $we(s,r=Rd(),e={}){if(!r)return!1;const t=e.timeoutMs??xd;let n;try{n=await kd(r,e.timeoutMs??Ed)}catch{return!1}try{return await Ad(n,"readwrite",i=>i.delete(s),t),!0}catch{return!1}finally{n.close()}}class Ywe{constructor(r){x(this,"control");x(this,"roomMemberManager");x(this,"worker");x(this,"publicMsgEmitter");x(this,"renderUids",new Map);x(this,"pageAuth",new Map);x(this,"isLocalRender",!1);x(this,"isCurWritable",!1);var n;const{control:e,publicMsgEmitter:t}=r;this.control=e,this.publicMsgEmitter=t,this.roomMemberManager=e.roomMember,this.worker=e.worker,this.isCurWritable=((n=this.control.room)==null?void 0:n.isWritable)||!1}get isWritable(){return this.isCurWritable}onWritableChange(r){this.isCurWritable=r}addPage(r,e=!0){var l,u;const{viewId:t,render:n="localSelf",elementIds:i,pageId:o=(l=this.control.collector)==null?void 0:l.uid}=r,a=this.pageAuth.get(t)||new Map,c=this.control.viewContainerManager.getCurScenePath(t);if(c&&o){const h=a.get(c)||{render:"localSelf",pages:new Map};e&&(h.render=n);const d=i&&this.cloneElementIds(t,c,i,o)||new Set;h.pages.set(o,d),a.set(c,h),this.pageAuth.set(t,a),e&&this.pageAuthEffect(t),this.isLocalRender=!1,(u=this.control.collector)==null||u.dispatchPageAuth({operation:wt.addPage,viewId:t,scenePath:c,pageId:o,pageData:{render:n,elementIds:d}},!0)}}delPage(r,e){var o,a;const t=this.pageAuth.get(e);if(!t)return;const n=[...t.keys()].find(c=>{const l=t.get(c);return!!(l&&l.pages.has(r))});if(!n)return;const i=t.get(n);if(i){const{render:c,pages:l}=i,u=c==="localSelf"?(o=this.control.collector)==null?void 0:o.uid:c,h=l.get(r);h!=null&&h.size&&this.delElementIds(e,n,h),l.delete(r),u===r&&this.pageAuthEffect(e)}(a=this.control.collector)==null||a.dispatchPageAuth({operation:wt.deletePage,viewId:e,scenePath:n,pageId:r},!0)}delViewPage(r,e=!0){var n;this.pageAuth.get(r)&&(this.pageAuth.delete(r),e&&((n=this.control.collector)==null||n.dispatchPageAuth({operation:wt.clearView,viewId:r},e)))}clearRenderPage(r,e,t=!0){var a,c;const n=this.pageAuth.get(r);if(!n)return;const i=n.get(e);let o;if(i){const{render:l,pages:u}=i,h=l==="localSelf"?(a=this.control.collector)==null?void 0:a.uid:l;if(h){if(t){const d=u.get(h);d&&this.delElementIds(r,e,d)}u.set(h,new Set),o=h}}t&&o&&((c=this.control.collector)==null||c.dispatchPageAuth({operation:wt.clearPage,viewId:r,scenePath:e,pageId:o},t))}hasPage(r,e,t){const n=this.pageAuth.get(e);if(!n)return!1;const i=n.get(t);return i?i.pages.has(r):!1}getPageInfo(r,e,t){const n=this.pageAuth.get(e);if(!n)return;const i=n.get(t);if(i)return i.pages.get(r)}addRenderPageElementId(r,e=!0,t=!1){var u,h;const{viewId:n,elementId:i,scenePath:o}=r,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(o);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const y=f.get(g)||new Set;y.add(i),f.set(g,y),l=g}}t&&this.pageAuthEffect(n),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:wt.addElement,viewId:n,scenePath:o,pageId:l,pageData:{elementId:i}},e))}delRenderPageElementId(r,e=!0,t=!1){var u,h;const{viewId:n,elementId:i,scenePath:o}=r,a=this.pageAuth.get(n);if(!a)throw new Error(`no view info in viewId: ${n}`);const c=a.get(o);let l;if(c){const{render:d,pages:f}=c,g=d==="localSelf"?(u=this.control.collector)==null?void 0:u.uid:d;if(g&&f.has(g)){const y=f.get(g);y&&(y.delete(i),f.set(g,y),l=g)}}t&&this.pageAuthEffect(n),e&&l&&((h=this.control.collector)==null||h.dispatchPageAuth({operation:wt.deleteElement,viewId:n,scenePath:o,pageId:l,pageData:{elementId:i}},e))}setPageRender(r,e,t,n=!0){var a;const i=this.pageAuth.get(r);if(!i)throw new Error(`no view info in viewId: ${r}`);const o=i.get(e);o&&(o.render=t),e===this.control.viewContainerManager.getCurScenePath(r)&&this.pageAuthEffect(r),n||(this.isLocalRender=!0),n&&(this.isLocalRender=!1,(a=this.control.collector)==null||a.dispatchPageAuth({operation:wt.renderPage,viewId:r,scenePath:e,pageData:{render:t}},n))}isRenderAble(r){var c,l;const{uid:e,viewId:t,filterLocalSelf:n=!0,scenePath:i}=r,o=this.renderUids.get(t);if(o){const{render:u,hide:h}=o;if(u===void 0&&h===void 0)return!0;if(ye.isSet(u)){if(u.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&u.has("localSelf"))return!0}else if(u===!0&&(!h||ye.isSet(h)&&!h.has(e)&&!(n&&h.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===e)))return!0;return!1}const a=this.pageAuth.get(t);if(a&&i){const u=a.get(i);if(u){const{render:h}=u;if(h)return!(h==="localSelf"&&!n)}}return!0}isClearAble(r){var c;const{uid:e,viewId:t,filterLocalSelf:n=!0,scenePath:i}=r,o=this.renderUids.get(t);if(o){const{clear:l}=o;return!!(l===void 0||l===!0||ye.isSet(l)&&(l.has(e)||n&&((c=this.control.collector)==null?void 0:c.uid)===e&&l.has("localSelf")))}const a=this.pageAuth.get(t);if(a&&i){const l=a.get(i);if(l){const{render:u}=l;if(u)return!(u==="localSelf"&&!n)}}return!0}isFilterAble(r,e){var c,l,u,h;const{viewId:t,scenePath:n,elementId:i}=r,o=this.renderUids.get(t);if(o&&i){const{render:d,hide:f}=o;if(d===void 0&&f===void 0)return!0;const g=(c=this.control.collector)==null?void 0:c.getUidFromKey(i);return g?!!(ye.isSet(d)&&(d.has(g)||d.has("localSelf")&&((l=this.control.collector)==null?void 0:l.uid)===g)||d===!0&&(!f||ye.isSet(f)&&!f.has(g)&&!(f.has("localSelf")&&((u=this.control.collector)==null?void 0:u.uid)===g))):!1}const a=this.pageAuth.get(t);if(a&&n&&i){const d=a.get(n);if(d){const{render:f,pages:g}=d;if(!f)return!0;const y=(h=this.control.collector)==null?void 0:h.uid,S=f==="localSelf"?y:f,E=S&&g.get(S)||void 0;if(E)switch(e){case le.RemoveNode:return!0;default:return E.has(i)}return!1}}return!0}isFilterCursor(r){if(this.isUsePageAuth(r)){const e=this.control.viewContainerManager.getCurScenePath(r),t=this.pageAuth.get(r);if(e&&t){const n=t.get(e);if(n){const{render:i}=n;return i!=="localSelf"}}}return!0}isUsePageAuth(r){var n;if(!this.pageAuth.has(r))return!1;const t=this.control.viewContainerManager.getCurScenePath(r);return t&&((n=this.pageAuth.get(r))==null?void 0:n.has(t))||!1}publishRender(r){var o;const{viewId:e,option:t,isSync:n=!0}=r,i={};if(t){const{render:a,hide:c,clear:l}=t;a&&(i.render=a===!0&&!0||new Set(a)),c&&(i.hide=c===!0&&!0||new Set(c)),l&&(i.clear=l===!0&&!0||new Set(l)),this.renderUids.set(e,i)}else this.renderUids.delete(e);n&&((o=this.control.collector)==null||o.dispatchRenderAuth({operation:Mr.setAuth,viewId:e,renderData:i},n)),this.renderEffect(e)}publishOneRender(r,e,t,n=!0){var a;const i=this.renderUids.get(r);let o;switch(t){case"show":i?(i.render||(i.render=new Set),ye.isSet(i.render)&&i.render.add(e),ye.isSet(i.hide)&&i.hide.delete(e)):this.renderUids.set(r,{render:new Set([e])}),o=Mr.setShow;break;case"hide":i?(i.hide||(i.hide=new Set),ye.isSet(i.hide)&&i.hide.add(e),ye.isSet(i.render)&&i.render.delete(e)):this.renderUids.set(r,{hide:new Set([e])}),o=Mr.setHide;break}i?this.renderUids.set(r,i):this.renderUids.delete(r),n&&o&&((a=this.control.collector)==null||a.dispatchRenderAuth({operation:o,viewId:r,uid:e},n)),this.renderEffect(r)}publishOneClear(r,e,t,n=!0){var o;const i=this.renderUids.get(r);t?i?(i.clear||(i.clear=new Set),ye.isSet(i.clear)&&i.clear.add(e)):this.renderUids.set(r,{clear:new Set([e])}):i&&ye.isSet(i.clear)&&i.clear.has(e)&&i.clear.delete(e),i?this.renderUids.set(r,i):this.renderUids.delete(r),n&&((o=this.control.collector)==null||o.dispatchRenderAuth({operation:Mr.setClear,viewId:r,uid:e,isClear:t},n)),this.renderEffect(r)}syncRenderUids(r,e,t,n){const i=e===!0?!0:e&&Object.keys(e)?new Set(Object.keys(e)):void 0,o=t===!0?!0:t&&Object.keys(t)?new Set(Object.keys(t)):void 0,a=n===!0?!0:n&&Object.keys(n)?new Set(Object.keys(n)):void 0;i||o||a?this.renderUids.set(r,{render:i,hide:o,clear:a}):this.renderUids.delete(r),this.renderEffect(r),this.publicMsgEmitter.emit("syncRenderUids",r,{render:i,hide:o,clear:a})}syncPageAuth(r,e,t=!1){let n=!1;if(!e)this.pageAuth.delete(r);else{const i=this.pageAuth.get(r)||new Map;for(const[o,a]of Object.entries(e)){const{render:c,pages:l}=a,u=i.get(o),h=this.isLocalRender?u==null?void 0:u.render:c;if(h){h!==(u==null?void 0:u.render)&&(n=!0);const d=new Map;for(const[g,y]of Object.entries(l))d.set(g,new Set(Object.keys(y)));const f={render:h,pages:d};d.size&&i.set(o,f)}}i.size&&(this.pageAuth.set(r,i),this.publicMsgEmitter.emit("syncPageAuth",r,i))}(t||n)&&this.pageAuthEffect(r)}destoryByViewId(r,e=!1){var t;this.renderUids.has(r)&&(this.renderUids.delete(r),e||(t=this.control.collector)==null||t.dispatchRenderAuth({operation:Mr.setAuth,viewId:r})),this.pageAuth.has(r)&&this.control.renderControl.delViewPage(r,!e)}renderEffect(r){var t;const e=(t=this.control.viewContainerManager.getView(r))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(r,!0).then(()=>{var n;this.worker.pullServiceData(r,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(r,(n=this.renderUids.get(r))==null?void 0:n.clear)})}pageAuthEffect(r){var t;const e=(t=this.control.viewContainerManager.getView(r))==null?void 0:t.focusScenePath;e&&this.worker.clearViewScenePath(r,!0).then(()=>{this.worker.pullServiceData(r,e,{isAsync:!0,useAnimation:!1}),this.worker.sendClearUids(r,!0)})}cloneElementIds(r,e,t,n){var a,c;const i=(a=this.control.collector)==null?void 0:a.getStorageData(r,e),o=new Set;if(i){for(const l of Object.keys(i))if(t.has(l)){const u=`${l}_${n}`;if(o.add(u),!Object.keys(i).includes(u)){const h=ye.cloneDeep(i[l]);(c=this.control.collector)==null||c.updateValue(u,{type:le.FullWork,...h,workId:u},{isSync:!0,viewId:r,scenePath:e})}}}return o}delElementIds(r,e,t){var i,o;const n=(i=this.control.collector)==null?void 0:i.getStorageData(r,e);if(n)for(const a of Object.keys(n))t.has(a)&&Object.keys(n).includes(a)&&((o=this.control.collector)==null||o.updateValue(a,void 0,{isSync:!0,viewId:r,scenePath:e}))}}class Gwe{constructor(r){x(this,"internalMsgEmitter");x(this,"control");x(this,"maps",new Map);x(this,"showId");x(this,"color");x(this,"timer");x(this,"updateMiniMapCamera",ye.debounce(async r=>{const e=this.maps.get(r);if(e){const t=await this.getMiniMapCamera(r);if(t){const n=t.width/t.scale,i=t.height/t.scale,o=e.miniMapCamera.width/e.miniMapCamera.scale,a=e.miniMapCamera.height/e.miniMapCamera.scale;(n>=o||i>=a)&&(e.miniMapCamera=t);const c=e.miniMapCanvas.current;if(c){const l=c.getContext("2d");if(l){const u=this.control.viewContainerManager.getView(r);if(!(u!=null&&u.focusScenePath))return;const{miniMapCamera:h,contianer:d}=e,{width:f,height:g}=d.getBoundingClientRect(),y=Math.min(f/h.width,g/h.height);l.clearRect(0,0,c.width,c.height),c.width=h.width,c.height=h.height,c.style.width=`${h.width*y}px`,c.style.height=`${h.height*y}px`,await this.control.screenshotToCanvas(l,u.focusScenePath,h.width,h.height,h),this.listener.emitAsync([r,"viewCameraUpate"],1)}}}}},2e3,{maxWait:5e3}));var n;const{control:e,internalMsgEmitter:t}=r;this.control=e,this.internalMsgEmitter=t,this.color=((n=this.control.worker.currentToolsData)==null?void 0:n.toolsOpt.strokeColor)||"#000"}get listener(){return this.internalMsgEmitter}get activeViewId(){return this.showId}get highlightColor(){return this.color}setHighlightColor(r){this.color=r}async createMiniMap(r,e,t){const n=this.control.viewContainerManager.getView(r);if(!n)throw new Error("view not found");const i=n.cameraOpt;if(!i)throw new Error("view camera not found");const{width:o,height:a}=e.getBoundingClientRect();if(!o||!a)throw new Error("contianer width or height is 0");const c=H.createRef();this.maps.set(r,{contianer:e,miniMapCanvas:c,miniMapCamera:t,viewCamera:i}),this.showId=r,this.control.viewContainerManager.setActiveMiniMap(this.showId,!0);const l=Math.min(o/t.width,a/t.height),u=await new Promise(h=>{this.listener.once([r,"miniMapCreate"],()=>{const d=c.current;d&&(d.width=t.width,d.height=t.height,d.style.width=`${t.width*l}px`,d.style.height=`${t.height*l}px`),h(!0)}),this.timer=setTimeout(()=>{h(!1)},2e3)});return this.timer&&clearTimeout(this.timer),u}async getMiniMapCamera(r){const e=this.control.viewContainerManager.getView(r);if(!e)return;const{cameraOpt:t,focusScenePath:n}=e;if(!t||!n)return;const i={originX:t.centerX-t.width/t.scale/2,originY:t.centerY-t.height/t.scale/2,width:t.width/t.scale,height:t.height/t.scale};let o=await this.control.getBoundingRect(n)||i;o=vd(o,i)||i;let a=o.width,c=o.height,l=1;const u=a>t.width&&Math.min(t.width/a,l)||l,h=c>t.height&&Math.min(t.height/c,l)||l;return u<=h?(a=u<1&&t.width||a,c=Math.floor(c*u)+1,l=u):u>h&&(c=h<1&&t.height||c,a=Math.floor(a*h)+1,l=h),{scale:l,centerX:o.originX+o.width/2,centerY:o.originY+o.height/2,width:a,height:c}}getMiniMapCanvas(r){const e=this.maps.get(r);return(e==null?void 0:e.miniMapCanvas.current)||null}updateViewCamera(r,e){const t=this.maps.get(r);t&&(t.viewCamera=e,this.listener.emitAsync([r,"viewCameraUpate"],1))}destroyMiniMap(r){const e=r||this.showId;e&&(this.maps.delete(e),this.control.viewContainerManager.setActiveMiniMap(e,!1))}}const Ge="[Appliance]: [selector]",Hwe=["bold","normal"],Qwe=["italic","normal"],qwe=["top","left","right","bottom","topLeft","topRight","bottomLeft","bottomRight","leftTop","leftBottom","rightTop","rightBottom"];class Zwe{constructor(r){x(this,"control");x(this,"logger");x(this,"lastSelectedIdsByView",new Map);x(this,"lastViewRectByView",new Map);x(this,"updateResolveMap",new Map);x(this,"clearResolveMap",new Map);x(this,"copyResolveMap",new Map);x(this,"deleteResolveMap",new Map);x(this,"lastRemoteSelectorByView",new Map);x(this,"cameraEmitThrottleByView",new Map);x(this,"pendingCameraChangeByView",new Map);x(this,"pendingPropertyGeometryByKey",new Map);x(this,"publicStorageHandler");x(this,"onUndoAckApplied",r=>{var a,c;const{viewId:e,scenePath:t,requestId:n,emitEventType:i}=r;if(!n)return;const o=this.copyResolveMap.get(n);!o||o.viewId!==e||i===Te.CopyNode&&(this.copyResolveMap.delete(n),o.timer&&clearTimeout(o.timer),(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,`${Ge} copySelectedElements done requestId=${n} viewId=${e} scenePath=${t} sourceCount=${o.sourceSelectedIds.length}`),o.resolve({ok:!0,requestId:n,sourceSelectedIds:o.sourceSelectedIds,createdIds:[]}))});this.control=r,this.logger=r.logger,this.bindPublicStorageListener(),this.control.internalMsgEmitter.on("undoAckApplied",this.onUndoAckApplied)}canAcceptLocalMutation(r){const e=this.control.canAcceptLocalMutation;return typeof e!="function"||e.call(this.control,r)}formatFieldsFromChanges(r){return Ss(r).join("/")||"-"}hasShapeChanges(r){var e,t,n,i;return((e=r.shape)==null?void 0:e.vertices)!==void 0||((t=r.shape)==null?void 0:t.innerVerticeStep)!==void 0||((n=r.shape)==null?void 0:n.innerRatio)!==void 0||((i=r.shape)==null?void 0:i.placement)!==void 0}resolveShapeDispatchToolsTypes(r,e,t,n){if(!this.hasShapeChanges(n))return[];const i=Ss(n).filter(a=>a.startsWith("shape.")),o=[];return t.forEach(a=>{const c=this.lookupToolsType(r,e,a);c&&(!n.toolsType||c===n.toolsType)&&i.some(l=>Oi(c,l))&&!o.includes(c)&&o.push(c)}),o}cancelUndoTicker(r,e,t){var i,o,a;if(!r)return;const n=t||((i=this.control.viewContainerManager)==null?void 0:i.getCurScenePath(e));n&&((a=(o=this.control.worker)==null?void 0:o.internalMsgEmitter)==null||a.emit("cancelUndoTicker",r,e,n))}resolveCancelableUndoTickerId(r,e){var t,n;return r??((n=(t=this.control.viewContainerManager)==null?void 0:t.getUndoTickerId)==null?void 0:n.call(t,e))}captureUndoTickerDuringDispatch(r){var n,i;let e;const t=(o,a)=>{a===r&&e===void 0&&(e=o)};return(i=(n=this.control.internalMsgEmitter)==null?void 0:n.on)==null||i.call(n,"addUndoTicker",t),{getUndoTickerId:()=>e,dispose:()=>{var o,a;(a=(o=this.control.internalMsgEmitter)==null?void 0:o.off)==null||a.call(o,"addUndoTicker",t)}}}destroy(){for(const[,r]of this.updateResolveMap)r.timer&&clearTimeout(r.timer),r.resolve({requestId:"",ok:!1,viewId:r.viewId,reason:"busy",selectedIds:r.selectedIds,skippedIds:r.skippedIds.length?r.skippedIds:void 0,warnings:r.warnings.length?r.warnings:void 0,geometryChanged:r.geometryChanged});this.updateResolveMap.clear();for(const[,r]of this.clearResolveMap)r.timer&&clearTimeout(r.timer),r.resolve({ok:!1,requestId:"",reason:"busy"});this.clearResolveMap.clear();for(const[,r]of this.copyResolveMap)r.timer&&clearTimeout(r.timer),r.resolve({ok:!1,requestId:"",reason:"busy"});this.copyResolveMap.clear();for(const[,r]of this.deleteResolveMap)r.timer&&clearTimeout(r.timer),r.resolve({ok:!1,requestId:"",reason:"busy"});this.deleteResolveMap.clear();for(const[,r]of this.pendingPropertyGeometryByKey)r.timer&&clearTimeout(r.timer);this.pendingPropertyGeometryByKey.clear(),this.control.internalMsgEmitter.off("undoAckApplied",this.onUndoAckApplied),this.unbindPublicStorageListener()}disposeView(r){var t;for(const[n,i]of this.updateResolveMap)i.viewId===r&&(i.timer&&clearTimeout(i.timer),i.resolve({requestId:"",ok:!1,viewId:r,reason:"busy",selectedIds:i.selectedIds,skippedIds:i.skippedIds.length?i.skippedIds:void 0,warnings:i.warnings.length?i.warnings:void 0,geometryChanged:i.geometryChanged}),this.updateResolveMap.delete(n));for(const[n,i]of this.clearResolveMap)i.viewId===r&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.clearResolveMap.delete(n));for(const[n,i]of this.copyResolveMap)i.viewId===r&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.copyResolveMap.delete(n));for(const[n,i]of this.deleteResolveMap)i.viewId===r&&(i.timer&&clearTimeout(i.timer),i.resolve({ok:!1,requestId:"",reason:"busy"}),this.deleteResolveMap.delete(n));const e=this.cameraEmitThrottleByView.get(r);(t=e==null?void 0:e.cancel)==null||t.call(e),this.cameraEmitThrottleByView.delete(r),this.clearPendingCameraChange(r),this.lastSelectedIdsByView.delete(r),this.lastViewRectByView.delete(r),this.lastRemoteSelectorByView.delete(r);for(const[n,i]of this.pendingPropertyGeometryByKey)i.viewId===r&&(i.timer&&clearTimeout(i.timer),this.pendingPropertyGeometryByKey.delete(n))}resolveViewId(r){const e=this.control.viewContainerManager;return r||(e==null?void 0:e.focuedViewId)||Fe}getSelectedElements(r){var u,h,d;const e=this.resolveViewId(r);if(!e)return;const t=this.control.viewContainerManager,n=t==null?void 0:t.getView(e);if(!n)return;const i=(d=(h=(u=n.displayer)==null?void 0:u.vDom)==null?void 0:h.state)==null?void 0:d.floatBarData,o=(i==null?void 0:i.selectIds)??[],a=i&&ye.isNumber(i.x)&&ye.isNumber(i.y)&&ye.isNumber(i.w)&&ye.isNumber(i.h)?{x:i.x,y:i.y,w:i.w,h:i.h}:void 0,c=n.focusScenePath,l=[];for(const f of o){const g=this.buildSelectedElementInfo(e,c,f,i);g&&l.push(g)}return{viewId:e,scenePath:c,viewRect:a,selectedIds:o,selectedElements:l}}isElementPropertySupported(r,e){return Oi(r,e)}async blurSelector(r){var c,l,u,h,d,f,g,y,S;const e=this.genRequestId("clear"),t=this.resolveViewId(r);if(!t)return(l=(c=this.logger)==null?void 0:c.warn)==null||l.call(c,`${Ge} blurSelector rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(t))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(t),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(h=(u=this.logger)==null?void 0:u.warn)==null||h.call(u,`${Ge} blurSelector rejected: no-selection requestId=${e} viewId=${t}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(t);if(o)return(f=(d=this.logger)==null?void 0:d.warn)==null||f.call(d,`${Ge} blurSelector rejected: ${o} requestId=${e} viewId=${t}`),{ok:!1,requestId:e,reason:o};(y=(g=this.logger)==null?void 0:g.info)==null||y.call(g,`${Ge} blurSelector request requestId=${e} viewId=${t} selectedCount=${i.length}`);const a=(n==null?void 0:n.scenePath)||((S=this.control.viewContainerManager)==null?void 0:S.getCurScenePath(t));return new Promise(E=>{var L,T,p;const C=setTimeout(()=>{var m,M;this.clearResolveMap.has(e)&&(this.clearResolveMap.delete(e),(M=(m=this.logger)==null?void 0:m.warn)==null||M.call(m,`${Ge} blurSelector timeout requestId=${e} viewId=${t}`),E({ok:!1,requestId:e,reason:"busy"}))},5e3);this.clearResolveMap.set(e,{timer:C,resolve:E,viewId:t});try{(L=this.control.worker)==null||L.blurSelector(t,a||"",Le)}catch(m){this.clearResolveMap.delete(e),clearTimeout(C),(p=(T=this.logger)==null?void 0:T.error)==null||p.call(T,`${Ge} blurSelector failed requestId=${e} viewId=${t} err=${m==null?void 0:m.message}`),E({ok:!1,requestId:e,reason:"busy"})}})}async updateSelectedElements(r,e){var E,C,L,T,p,m,M,v,R,b,P,D,z,j;const t=this.genRequestId("update"),n=this.resolveViewId(r),i=e||{};if(!n)return(C=(E=this.logger)==null?void 0:E.warn)==null||C.call(E,`${Ge} updateSelectedElements rejected: no-view requestId=${t}`),{requestId:t,viewId:"",ok:!1,reason:"no-selection"};if(!this.canAcceptLocalMutation(n))return{requestId:t,viewId:n,ok:!1,reason:"busy"};const o=this.getSelectedElements(n),a=(o==null?void 0:o.selectedIds)??[];if(!a.length)return(T=(L=this.logger)==null?void 0:L.warn)==null||T.call(L,`${Ge} updateSelectedElements rejected: no-selection requestId=${t} viewId=${n}`),{requestId:t,viewId:n,ok:!1,reason:"no-selection",selectedIds:a};const c=this.detectSelectorTransforming(n);if(c)return(m=(p=this.logger)==null?void 0:p.warn)==null||m.call(p,`${Ge} updateSelectedElements rejected: ${c} requestId=${t} viewId=${n}`),{requestId:t,viewId:n,ok:!1,reason:c,selectedIds:a};if(!Object.keys(i).some(A=>i[A]!==void 0))return(v=(M=this.logger)==null?void 0:M.warn)==null||v.call(M,`${Ge} updateSelectedElements rejected: unsupported-change requestId=${t} viewId=${n}`),{requestId:t,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a};const u=[],h=[],d=[];let f={...i};for(const A of a){const k=this.lookupToolsType(n,o==null?void 0:o.scenePath,A);if(!k){h.push(A);continue}const N=this.validateStrokeTypeForChanges(A,f,k,u);N.strokeType!==f.strokeType&&(f=N)}if(f.strokeType!==void 0){const A=a.map(N=>this.lookupToolsType(n,o==null?void 0:o.scenePath,N)).filter(N=>!!N&&Oi(N,"strokeType"));A.length>0?f.strokeType===Be.Stroke&&(A.every(W=>W===q.Pencil)||(delete f.strokeType,u.push({id:a.join(","),field:"strokeType",code:"unsupported-by-toolsType",message:"strokeType=Stroke requires all strokeType-capable selected elements to be Pencil"}))):delete f.strokeType}if(!this.collectPendingMethods(f).size)return this.flushUpdateSelectedElementsWarnings(n,t,u),(b=(R=this.logger)==null?void 0:R.warn)==null||b.call(R,`${Ge} updateSelectedElements no-valid-fields requestId=${t} viewId=${n} warnings=${u.length}`),{requestId:t,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0};const y=Ss(f);for(const A of a){const k=this.lookupToolsType(n,o==null?void 0:o.scenePath,A),N=this.hasShapeChanges(f)&&!!f.toolsType&&k!==f.toolsType;this.hasApplicableChangesForToolsType(f,k)?d.push(A):h.includes(A)||(h.push(A),k&&y.length&&u.push({id:A,field:y.join(","),code:"unsupported-by-toolsType",toolsType:k,message:N?`selected element id=${A} toolsType=${k} skipped by requested toolsType=${f.toolsType}`:`selected element id=${A} toolsType=${k} does not support requested fields=[${y.join(",")}]`}))}const S=this.resolveShapeDispatchToolsTypes(n,o==null?void 0:o.scenePath,d,f);return d.length?((j=(z=this.logger)==null?void 0:z.info)==null||j.call(z,`${Ge} updateSelectedElements request requestId=${t} viewId=${n} scenePath=${(o==null?void 0:o.scenePath)||"-"} selectedCount=${a.length} fields=[${this.formatFieldsFromChanges(i)}]`),this.flushUpdateSelectedElementsWarnings(n,t,u),new Promise(A=>{var W,Y;const k=setTimeout(()=>{var ie,O;const Q=this.updateResolveMap.get(t);Q&&(this.updateResolveMap.delete(t),(O=(ie=this.logger)==null?void 0:ie.warn)==null||O.call(ie,`${Ge} updateSelectedElements timeout requestId=${t} viewId=${n}`),A({requestId:t,viewId:n,ok:!1,reason:"worker-failed",selectedIds:Q.selectedIds,skippedIds:Q.skippedIds.length?Q.skippedIds:void 0,warnings:Q.warnings.length?Q.warnings:void 0,geometryChanged:Q.geometryChanged}))},8e3);this.updateResolveMap.set(t,{timer:k,resolve:A,viewId:n,selectedIds:a,appliedIds:d,skippedIds:h,warnings:u,geometryChanged:!1});const N=this.captureUndoTickerDuringDispatch(n);try{this.dispatchUpdate(n,[Le],f,t,S)}catch(Q){this.updateResolveMap.delete(t),clearTimeout(k),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(N.getUndoTickerId(),n),n,o==null?void 0:o.scenePath),(Y=(W=this.logger)==null?void 0:W.error)==null||Y.call(W,`${Ge} updateSelectedElements dispatch failed requestId=${t} viewId=${n} err=${Q==null?void 0:Q.message}`),A({requestId:t,viewId:n,ok:!1,reason:"worker-failed",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0})}finally{N.dispose()}})):(this.flushUpdateSelectedElementsWarnings(n,t,u),(D=(P=this.logger)==null?void 0:P.warn)==null||D.call(P,`${Ge} updateSelectedElements rejected: no-applicable-selection requestId=${t} viewId=${n}`),{requestId:t,viewId:n,ok:!1,reason:"unsupported-change",selectedIds:a,skippedIds:h.length?h:void 0,warnings:u.length?u:void 0})}async copySelectedElements(r){var a,c,l,u,h,d,f,g;const e=this.genRequestId("copy"),t=this.resolveViewId(r);if(!t)return(c=(a=this.logger)==null?void 0:a.warn)==null||c.call(a,`${Ge} copySelectedElements rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(t))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(t),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(u=(l=this.logger)==null?void 0:l.warn)==null||u.call(l,`${Ge} copySelectedElements rejected: no-selection requestId=${e} viewId=${t}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(t);return o?((d=(h=this.logger)==null?void 0:h.warn)==null||d.call(h,`${Ge} copySelectedElements rejected: ${o} requestId=${e} viewId=${t}`),{ok:!1,requestId:e,reason:o}):((g=(f=this.logger)==null?void 0:f.info)==null||g.call(f,`${Ge} copySelectedElements request requestId=${e} viewId=${t} scenePath=${(n==null?void 0:n.scenePath)||"-"} selectedCount=${i.length}`),new Promise(y=>{var C,L;const S=setTimeout(()=>{var T,p;this.copyResolveMap.has(e)&&(this.copyResolveMap.delete(e),(p=(T=this.logger)==null?void 0:T.warn)==null||p.call(T,`${Ge} copySelectedElements timeout requestId=${e} viewId=${t}`),y({ok:!1,requestId:e,reason:"busy"}))},5e3);this.copyResolveMap.set(e,{timer:S,resolve:y,viewId:t,sourceSelectedIds:i});const E=this.captureUndoTickerDuringDispatch(t);try{Ve.emitMethod(We.MainEngine,Te.CopyNode,{workIds:[Le],viewId:t,requestId:e})}catch(T){this.copyResolveMap.delete(e),clearTimeout(S),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(E.getUndoTickerId(),t),t,n==null?void 0:n.scenePath),(L=(C=this.logger)==null?void 0:C.error)==null||L.call(C,`${Ge} copySelectedElements failed requestId=${e} viewId=${t} err=${T==null?void 0:T.message}`),y({ok:!1,requestId:e,reason:"busy"})}finally{E.dispose()}}))}async deleteSelectedElements(r){var a,c,l,u,h,d,f,g;const e=this.genRequestId("delete"),t=this.resolveViewId(r);if(!t)return(c=(a=this.logger)==null?void 0:a.warn)==null||c.call(a,`${Ge} deleteSelectedElements rejected: no-view requestId=${e}`),{ok:!1,requestId:e,reason:"no-selection"};if(!this.canAcceptLocalMutation(t))return{ok:!1,requestId:e,reason:"busy"};const n=this.getSelectedElements(t),i=(n==null?void 0:n.selectedIds)??[];if(!i.length)return(u=(l=this.logger)==null?void 0:l.warn)==null||u.call(l,`${Ge} deleteSelectedElements rejected: no-selection requestId=${e} viewId=${t}`),{ok:!1,requestId:e,reason:"no-selection"};const o=this.detectSelectorTransforming(t);return o?((d=(h=this.logger)==null?void 0:h.warn)==null||d.call(h,`${Ge} deleteSelectedElements rejected: ${o} requestId=${e} viewId=${t}`),{ok:!1,requestId:e,reason:o}):((g=(f=this.logger)==null?void 0:f.info)==null||g.call(f,`${Ge} deleteSelectedElements request requestId=${e} viewId=${t} scenePath=${(n==null?void 0:n.scenePath)||"-"} selectedCount=${i.length}`),new Promise(y=>{var C,L;const S=setTimeout(()=>{var T,p;this.deleteResolveMap.has(e)&&(this.deleteResolveMap.delete(e),(p=(T=this.logger)==null?void 0:T.warn)==null||p.call(T,`${Ge} deleteSelectedElements timeout requestId=${e} viewId=${t}`),y({ok:!1,requestId:e,reason:"busy"}))},5e3);this.deleteResolveMap.set(e,{timer:S,resolve:y,viewId:t,removedIds:i.slice()});const E=this.captureUndoTickerDuringDispatch(t);try{Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:[Le],viewId:t,requestId:e})}catch(T){this.deleteResolveMap.delete(e),clearTimeout(S),this.cancelUndoTicker(this.resolveCancelableUndoTickerId(E.getUndoTickerId(),t),t,n==null?void 0:n.scenePath),(L=(C=this.logger)==null?void 0:C.error)==null||L.call(C,`${Ge} deleteSelectedElements failed requestId=${e} viewId=${t} err=${T==null?void 0:T.message}`),y({ok:!1,requestId:e,reason:"busy"})}finally{E.dispose()}}))}async updateElement(r,e,t,n,i=!0){var g,y,S,E,C,L,T,p,m,M,v,R,b;if(!this.canAcceptLocalMutation(t))return!1;const o=this.control.collector,a=this.control.worker;if(!o||!a||!r||!e||!t||!n)return(y=(g=this.logger)==null?void 0:g.warn)==null||y.call(g,`${Ge} updateElement ignored: invalid-args viewId=${t||"-"} scenePath=${e||"-"} elementId=${r||"-"}`),!1;const c=(S=o.isLocalId)!=null&&S.call(o,r)&&typeof o.transformKey=="function"?o.transformKey(r):r;if((E=o.isSelector)!=null&&E.call(o,c))return(L=(C=this.logger)==null?void 0:C.warn)==null||L.call(C,`${Ge} updateElement ignored: selector-not-allowed viewId=${t} scenePath=${e}`),!1;let l=(m=(p=(T=o.storage)==null?void 0:T[t])==null?void 0:p[e])==null?void 0:m[c];if(!l)return(v=(M=this.logger)==null?void 0:M.warn)==null||v.call(M,`${Ge} updateElement ignored: not-found viewId=${t} scenePath=${e} elementId=${r}`),!1;const u=l.toolsType;if(!u||n.toolsType!==u)return(b=(R=this.logger)==null?void 0:R.warn)==null||b.call(R,`${Ge} updateElement ignored: toolsType-mismatch viewId=${t} scenePath=${e} elementId=${r} declared=${n.toolsType} actual=${u}`),!1;const h=this.normalizeUpdateElementInfo(n,u),d=this.buildUpdatedElementValue(l,h),f=a.now;return i&&(a.internalMsgEmitter.emit("addUndoTicker",f,t,{render:!0,storage:!0,source:$e.AsyncUpdateElement}),a.internalMsgEmitter.emit("finalizeRequested",f,t,[c],e)),await new Promise(P=>{Dr(()=>{var z,j;if(!this.canAcceptLocalMutation(t)){i&&this.cancelUndoTicker(f,t,e),P(!1);return}const D=o.plugin;D==null||D.updateAttributes([Jr.namespace,t,e,c],d),i&&(a.internalMsgEmitter.emit("ackRenderUndoTicker",f,t,e),a.internalMsgEmitter.emit("ackStorageUndoTicker",f,t,e,c)),P(!0),(j=(z=this.logger)==null?void 0:z.info)==null||j.call(z,`${Ge} updateElement notify viewId=${t} scenePath=${e} elementId=${r} toolsType=${u} fields=[${Ss(h).join("/")||"-"}]`)},0,this.control.hasPolyfillMethod("requestIdleCallback")).catch(D=>{var z,j;this.cancelUndoTicker(f,t,e),(j=(z=this.logger)==null?void 0:z.warn)==null||j.call(z,`${Ge} updateElement err: ${D.message??"has unknown error"} viewId=${t} scenePath=${e} elementId=${r}`),P(!1)})})}onSelectorTransform(r){var a,c;const{viewId:e,emitEventType:t,workState:n}=r;this.control.publicMsgEmitter.emit("selectorTransformChange",r);const i=`${Ge} selectorTransformChange viewId=${e} emitEventType=${t} workState=${n}`,o=this.getDebounceLogger();o!=null&&o.infoDebounced?o.infoDebounced(`selector-transform-change:${e}`,i):(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,i)}onSelectorSync(r){var y,S,E,C;const{viewId:e,scenePath:t,selectIds:n,selectRect:i,selectorInfo:o}=r,a=n&&n.slice().sort()||[],c=this.lastSelectedIdsByView.get(e)||[],l=!this.isArrayEqual(a,c),u=i&&ye.isNumber(i.x)&&ye.isNumber(i.y)&&ye.isNumber(i.w)&&ye.isNumber(i.h)?{x:i.x,y:i.y,w:i.w,h:i.h}:void 0,d=!!this.pendingCameraChangeByView.get(e)&&!l&&!!(n!=null&&n.length);if(l){const L=this.getSelectedElements(e),T={viewId:e,scenePath:t,selectorId:Le,reason:n!=null&&n.length?"select":"clear",viewRect:u,selectedIds:(L==null?void 0:L.selectedIds)??n??[],selectorInfo:o};this.lastSelectedIdsByView.set(e,a),this.control.publicMsgEmitter.emit("selectedElementsChange",T);const p=`${Ge} selectedElementsChange reason=${T.reason} viewId=${e} count=${T.selectedIds.length}`,m=this.getDebounceLogger();m!=null&&m.infoDebounced?m.infoDebounced(`selected-elements-change:${e}`,p):(S=(y=this.logger)==null?void 0:y.info)==null||S.call(y,p)}const f=this.lastViewRectByView.get(e),g=!this.isRectEqual(f,u);if(g||l){let L="selector-action",T=n!=null&&n.length?"select":"clear";d&&g?(L="camera-change",T="cameraTransform"):g&&!l&&(n!=null&&n.length)&&(T="selectorTransform"),this.lastViewRectByView.set(e,u);const p={viewId:e,scenePath:t,selectorId:Le,source:L,action:T,viewRect:u};this.control.publicMsgEmitter.emit("selectorGeometryChange",p),this.logGeometry(e,T,(n==null?void 0:n.length)||0),L==="camera-change"&&this.clearPendingCameraChange(e)}if(!(n!=null&&n.length)&&l)for(const[L,T]of this.clearResolveMap.entries())T.viewId===e&&(this.clearResolveMap.delete(L),T.timer&&clearTimeout(T.timer),(C=(E=this.logger)==null?void 0:E.info)==null||C.call(E,`${Ge} blurSelector done requestId=${L} viewId=${e}`),T.resolve({ok:!0,requestId:L}))}onSelectorCleared(r){var a,c,l,u;const{viewId:e,scenePath:t,requestId:n}=r;if((this.lastSelectedIdsByView.get(e)||[]).length){const h={viewId:e,scenePath:t,selectorId:Le,reason:"clear",viewRect:void 0,selectedIds:[]};this.lastSelectedIdsByView.set(e,[]),this.control.publicMsgEmitter.emit("selectedElementsChange",h);const d=`${Ge} selectedElementsChange reason=clear viewId=${e} requestId=${n||"-"}`,f=this.logger;f!=null&&f.infoDebounced?f.infoDebounced(`selected-elements-change:${e}`,d):(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,d)}if(this.lastViewRectByView.get(e)){const h={viewId:e,scenePath:t,selectorId:Le,source:"selector-action",action:"clear",viewRect:void 0,requestId:n};this.lastViewRectByView.set(e,void 0),this.control.publicMsgEmitter.emit("selectorGeometryChange",h),this.logGeometry(e,"clear",0)}if(n&&this.clearResolveMap.has(n)){const h=this.clearResolveMap.get(n);this.clearResolveMap.delete(n),h.timer&&clearTimeout(h.timer),(u=(l=this.logger)==null?void 0:l.info)==null||u.call(l,`${Ge} blurSelector done requestId=${n} viewId=${e}`),h.resolve({ok:!0,requestId:n})}}onCameraChange(r){const e=this.getSelectedElements(r);if(!(e!=null&&e.selectedIds.length)){this.clearPendingCameraChange(r);return}this.setPendingCameraChange(r,{ts:Date.now(),viewRect:e.viewRect,selectedIds:e.selectedIds.slice()});let t=this.cameraEmitThrottleByView.get(r);t||(t=ye.throttle(n=>this.emitCameraGeometry(n),60,{leading:!0,trailing:!0}),this.cameraEmitThrottleByView.set(r,t)),t(r)}emitCameraGeometry(r){const e=this.getSelectedElements(r);if(!e||!e.selectedIds.length||!e.viewRect){this.clearPendingCameraChange(r);return}const t=this.lastViewRectByView.get(r);if(this.isRectEqual(t,e.viewRect))return;this.lastViewRectByView.set(r,e.viewRect);const n={viewId:r,scenePath:e.scenePath,selectorId:Le,source:"camera-change",action:"cameraTransform",viewRect:e.viewRect};this.control.publicMsgEmitter.emit("selectorGeometryChange",n),this.logGeometry(r,"cameraTransform",e.selectedIds.length),this.clearPendingCameraChange(r)}bindPublicStorageListener(){this.publicStorageHandler||(this.publicStorageHandler=r=>this.onSyncStorageChange(r),this.control.publicMsgEmitter.on("syncStorageChange",this.publicStorageHandler))}unbindPublicStorageListener(){this.publicStorageHandler&&(this.control.publicMsgEmitter.off("syncStorageChange",this.publicStorageHandler),this.publicStorageHandler=void 0)}tryResolveUpdateElements(r,e,t,n){var o,a;if(!e)return;const i=this.updateResolveMap.get(e);!i||i.viewId!==r||(i.geometryChanged=i.geometryChanged||n,this.updateResolveMap.delete(e),i.timer&&clearTimeout(i.timer),(a=(o=this.logger)==null?void 0:o.info)==null||a.call(o,`${Ge} updateSelectedElements done requestId=${e} viewId=${r} type=${t} geometryChanged=${i.geometryChanged} applied=${i.appliedIds.length}`),i.resolve({requestId:e,viewId:r,ok:!0,selectedIds:i.selectedIds,appliedIds:i.appliedIds,skippedIds:i.skippedIds.length?i.skippedIds:void 0,warnings:i.warnings.length?i.warnings:void 0,geometryChanged:i.geometryChanged}))}onRemoveNodeApplied(r){var i,o;const{viewId:e,requestId:t,removeIds:n}=r;if(t){const a=this.deleteResolveMap.get(t);if(a&&a.viewId===e){const c=n!=null&&n.length?n:a.removedIds;this.deleteResolveMap.delete(t),a.timer&&clearTimeout(a.timer),(o=(i=this.logger)==null?void 0:i.info)==null||o.call(i,`${Ge} deleteSelectedElements done requestId=${t} viewId=${e} removedCount=${c.length}`),a.resolve({ok:!0,requestId:t,removedIds:c});return}}}onSyncStorageChange(r){var n,i,o;if(!r||typeof r!="object")return;const e=this.control.collector;if(!e)return;const t=e.uid;for(const[a,c]of Object.entries(r)){if(!c)continue;let l=this.lastRemoteSelectorByView.get(a);l||(l=new Map,this.lastRemoteSelectorByView.set(a,l));const u=new Set;for(const[h,d]of Object.entries(c))if(d)for(const[f,g]of Object.entries(d)){if(((n=e.isLocalId)!=null&&n.call(e,f)?f:((i=e.getLocalId)==null?void 0:i.call(e,f))??f)!==Le)continue;const S=((o=e.getUidFromKey)==null?void 0:o.call(e,f))??(f.split(Bt)[0]||"");!S||S===t||(u.add(S),this.handleRemoteSelectorState(a,h,S,f,g,l))}for(const h of[...l.keys()]){if(u.has(h))continue;const d=l.get(h);if(!d||!d.selectedIds.length){l.delete(h);continue}this.handleRemoteSelectorState(a,"",h,`${h}${Bt}${Le}`,void 0,l)}}}handleRemoteSelectorState(r,e,t,n,i,o){var g;const a=o.get(t)||{selectedIds:[]};let c="update",l=[],u;if(i){const y=i,S=(y.selectIds||[]).slice().sort(),E=a.selectedIds,C=!this.isArrayEqual(S,E);!E.length&&S.length?c="select":C&&!S.length?c="clear":c=C?"select":"update",l=y.selectIds||[];const L=y.selectRect||y.rect||((g=y.updateNodeOpt)==null?void 0:g.rect);L&&ye.isNumber(L.x)&&ye.isNumber(L.y)&&ye.isNumber(L.w)&&ye.isNumber(L.h)&&(u={x:L.x,y:L.y,w:L.w,h:L.h})}else{if(!a.selectedIds.length)return;c="clear",l=[],u=void 0}const h=!this.isRectEqual(a.viewRect,u);if(!!this.isArrayEqual(a.selectedIds,l)&&!h)return;o.set(t,{selectedIds:l,viewRect:u});const f={viewId:r,scenePath:e,uid:t,selectorId:n,source:"sync",action:c,viewRect:u,selectedIds:l,selectedElements:this.buildRemoteSelectedElements(r,e,t,l)};this.control.publicMsgEmitter.emit("remoteSelectorChange",f),this.logRemoteSelector(r,t,c,l.length)}logRemoteSelector(r,e,t,n){var a,c;const i=`${Ge} remoteSelectorChange uid=${e} action=${t} viewId=${r} count=${n}`,o=this.getDebounceLogger();if(o!=null&&o.infoDebounced){o.infoDebounced(`remote-selector:${r}@${e}`,i);return}(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,i)}genRequestId(r){return`${r}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}setPendingCameraChange(r,e){this.clearPendingCameraChange(r);const t=setTimeout(()=>{const n=this.pendingCameraChangeByView.get(r);(n==null?void 0:n.ts)===e.ts&&this.pendingCameraChangeByView.delete(r)},400);this.pendingCameraChangeByView.set(r,{...e,timer:t})}clearPendingCameraChange(r){const e=this.pendingCameraChangeByView.get(r);e!=null&&e.timer&&clearTimeout(e.timer),this.pendingCameraChangeByView.delete(r)}getDebounceLogger(){return this.logger}detectSelectorTransforming(r){var l,u,h,d,f;const e=this.control.worker;if(!e)return null;const t=(l=e.getLocalWorkViewId)==null?void 0:l.call(e),n=e.isLocalWorkActive===!0&&t===r,i=(u=e.currentLocalWorkData)==null?void 0:u.workState,o=(f=(d=(h=this.control.viewContainerManager.getView(r))==null?void 0:h.displayer)==null?void 0:d.vDom)==null?void 0:f.state,a=o==null?void 0:o.operationType,c=a===Te.TranslateNode||a===Te.ScaleNode||a===Te.RotateNode||a===Te.SetPoint;return n&&c&&i&&i!==de.Pending&&i!==de.Done||n&&c?"selector-transforming":e.isBusy===!0?"busy":null}isArrayEqual(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(r[t]!==e[t])return!1;return!0}isRectEqual(r,e){return!r&&!e?!0:!r||!e?!1:r.x===e.x&&r.y===e.y&&r.w===e.w&&r.h===e.h}onPropertyApplied(r){const{type:e,viewId:t,requestId:n,data:i}=r,o=e===Te.SetFontStyle&&i.fontSize!==void 0||e===Te.SetColorNode&&i.thickness!==void 0;this.tryResolveUpdateElements(t,n,e,o),o&&this.schedulePropertyGeometryEmit(t,e,n)}schedulePropertyGeometryEmit(r,e,t){const n=t?`property-geometry:${r}:${e}:${t}`:`property-geometry:${r}:${e}`,i=this.pendingPropertyGeometryByKey.get(n);i!=null&&i.timer&&clearTimeout(i.timer);const o=setTimeout(()=>{this.pendingPropertyGeometryByKey.delete(n);const a=this.getSelectedElements(r);if(!a||!a.selectedIds.length)return;const c=e===Te.SetFontStyle?"setFontStyle":"setStyle",l={viewId:r,scenePath:a.scenePath,selectorId:Le,source:"property-change",action:c,viewRect:a.viewRect,requestId:t};this.lastViewRectByView.set(r,a.viewRect),this.control.publicMsgEmitter.emit("selectorGeometryChange",l),this.logGeometry(r,c,a.selectedIds.length)},0);this.pendingPropertyGeometryByKey.set(n,{timer:o,viewId:r,type:e,requestId:t})}lookupToolsType(r,e,t){var a,c,l,u;const n=this.control.collector;if(!n)return;const i=(a=n.isLocalId)!=null&&a.call(n,t)&&typeof n.transformKey=="function"?n.transformKey(t):t,o=(u=(l=(c=n.storage)==null?void 0:c[r])==null?void 0:l[e||""])==null?void 0:u[i];return o==null?void 0:o.toolsType}validateStrokeTypeForChanges(r,e,t,n){return e.strokeType===void 0?e:I0(e.strokeType)?(Ap(t,e.strokeType)||n.push({id:r,field:"strokeType",code:"unsupported-by-toolsType",toolsType:t,message:`strokeType not supported by toolsType=${t} for id=${r}, skipped`}),e):(n.push({id:r,field:"strokeType",code:"unsupported-value",toolsType:t,message:`strokeType=${e.strokeType} is not a valid EStrokeType for id=${r}, skipped`}),e)}flushUpdateSelectedElementsWarnings(r,e,t){var o,a,c,l;if(!t.length)return;const n=new Map,i=new Map;for(const u of t)if(u.code==="unsupported-by-toolsType"){const h=n.get(u.field)||{ids:[],toolsTypes:[]};h.ids.push(u.id),h.toolsTypes.push(u.toolsType),n.set(u.field,h)}else if(u.code==="unsupported-value"){const h=i.get(u.field)||[];h.push(u.id),i.set(u.field,h)}for(const[u,h]of n.entries()){const d=[...new Set(h.toolsTypes.filter(Boolean))].join(","),f=[...new Set(h.ids)].join(",");(a=(o=this.logger)==null?void 0:o.warn)==null||a.call(o,`${Ge} updateSelectedElements warn unsupported-by-toolsType requestId=${e} viewId=${r} field=${u} toolsTypes=[${d}] ids=[${f}]`)}for(const[u,h]of i.entries())(l=(c=this.logger)==null?void 0:c.warn)==null||l.call(c,`${Ge} updateSelectedElements warn unsupported-value requestId=${e} viewId=${r} field=${u} ids=[${[...new Set(h)].join(",")}]`)}collectPendingMethods(r){var t,n,i,o;const e=new Set;return(r.strokeColor!==void 0||r.fillColor!==void 0||r.fontColor!==void 0||r.fontBgColor!==void 0||r.thickness!==void 0||r.strokeType!==void 0)&&e.add(Te.SetColorNode),(r.fontSize!==void 0||r.bold!==void 0||r.italic!==void 0||r.underline!==void 0||r.lineThrough!==void 0)&&e.add(Te.SetFontStyle),r.isLocked!==void 0&&e.add(Te.SetLock),r.zIndexLayer!==void 0&&e.add(Te.ZIndexNode),(((t=r.shape)==null?void 0:t.vertices)!==void 0||((n=r.shape)==null?void 0:n.innerVerticeStep)!==void 0||((i=r.shape)==null?void 0:i.innerRatio)!==void 0||((o=r.shape)==null?void 0:o.placement)!==void 0)&&e.add(Te.SetShapeOpt),e}hasApplicableChangesForToolsType(r,e){return e?Ss(r).some(t=>t.startsWith("shape.")&&r.toolsType&&e!==r.toolsType?!1:Oi(e,t)):!1}buildUpdatedElementValue(r,e){var o,a,c,l;const t=e,n={...r,opt:r.opt?{...r.opt}:void 0},i=n.opt||{};return t.strokeColor!==void 0&&(i.strokeColor=t.strokeColor),t.fillColor!==void 0&&(i.fillColor=t.fillColor),t.thickness!==void 0&&(i.thickness=t.thickness),t.strokeType!==void 0&&(i.strokeType=t.strokeType),t.fontColor!==void 0&&(i.fontColor=t.fontColor),t.fontBgColor!==void 0&&(i.fontBgColor=t.fontBgColor),t.fontSize!==void 0&&(i.fontSize=t.fontSize),t.bold!==void 0&&(i.bold=t.bold),t.italic!==void 0&&(i.italic=t.italic),t.underline!==void 0&&(i.underline=t.underline),t.lineThrough!==void 0&&(i.lineThrough=t.lineThrough),t.isLocked!==void 0&&(i.locked=t.isLocked),((o=t.shape)==null?void 0:o.vertices)!==void 0&&(i.vertices=t.shape.vertices),((a=t.shape)==null?void 0:a.innerVerticeStep)!==void 0&&(i.innerVerticeStep=t.shape.innerVerticeStep),((c=t.shape)==null?void 0:c.innerRatio)!==void 0&&(i.innerRatio=t.shape.innerRatio),((l=t.shape)==null?void 0:l.placement)!==void 0&&(i.placement=t.shape.placement),n.opt=i,t.zIndexLayer!==void 0&&(n.updateNodeOpt={...n.updateNodeOpt||{},zIndexLayer:t.zIndexLayer}),n}normalizeUpdateElementInfo(r,e){var d,f;const t={...r},n=[],i=g=>{var y,S;g in t&&(delete t[g],n.push(g),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn unsupported-by-toolsType toolsType=${e} field=${g}`))},o=g=>{var y,S;t.shape&&g in t.shape&&(delete t.shape[g],n.push(`shape.${g}`),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn unsupported-by-toolsType toolsType=${e} field=shape.${g}`)),t.shape&&!Object.keys(t.shape).length&&delete t.shape},a=g=>{var y,S;g in t&&(n.push(g),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn invalid-format toolsType=${e} field=${g} value=${JSON.stringify(t[g])}`),delete t[g])},c=g=>{var y,S;!t.shape||!(g in t.shape)||(n.push(`shape.${g}`),(S=(y=this.logger)==null?void 0:y.warn)==null||S.call(y,`${Ge} updateElement warn invalid-format toolsType=${e} field=shape.${g} value=${JSON.stringify(t.shape[g])}`),delete t.shape[g],Object.keys(t.shape).length||delete t.shape)};"strokeColor"in t&&typeof t.strokeColor!="string"&&a("strokeColor"),"fillColor"in t&&typeof t.fillColor!="string"&&a("fillColor"),"fontColor"in t&&typeof t.fontColor!="string"&&a("fontColor"),"fontBgColor"in t&&typeof t.fontBgColor!="string"&&a("fontBgColor"),"thickness"in t&&!Number.isFinite(t.thickness)&&a("thickness"),"fontSize"in t&&!Number.isFinite(t.fontSize)&&a("fontSize"),"strokeType"in t&&!Object.values(Be).includes(t.strokeType)&&a("strokeType"),"strokeType"in t&&t.strokeType!==void 0&&!Ap(e,t.strokeType)&&i("strokeType"),"bold"in t&&!Hwe.includes(t.bold)&&a("bold"),"italic"in t&&!Qwe.includes(t.italic)&&a("italic"),"underline"in t&&typeof t.underline!="boolean"&&a("underline"),"lineThrough"in t&&typeof t.lineThrough!="boolean"&&a("lineThrough"),"isLocked"in t&&typeof t.isLocked!="boolean"&&a("isLocked"),"zIndexLayer"in t&&![In.Top,In.Bottom].includes(t.zIndexLayer)&&a("zIndexLayer"),t.shape&&("vertices"in t.shape&&!Number.isFinite(t.shape.vertices)&&c("vertices"),"innerVerticeStep"in t.shape&&!Number.isFinite(t.shape.innerVerticeStep)&&c("innerVerticeStep"),"innerRatio"in t.shape&&!Number.isFinite(t.shape.innerRatio)&&c("innerRatio"),"placement"in t.shape&&!qwe.includes(t.shape.placement)&&c("placement"));const l=new Set(Nye(e));return["strokeColor","fillColor","thickness","strokeType","fontColor","fontBgColor","fontSize","bold","italic","underline","lineThrough","isLocked","zIndexLayer"].forEach(g=>{l.has(g)||i(g)}),["vertices","innerVerticeStep","innerRatio","placement"].forEach(g=>{l.has(`shape.${g}`)||o(g)}),n.length&&((f=(d=this.logger)==null?void 0:d.info)==null||f.call(d,`${Ge} updateElement filtered toolsType=${e} dropped=[${n.join(",")}]`)),t}dispatchUpdate(r,e,t,n,i=[]){const o=We.MainEngine,a={};t.strokeColor!==void 0&&(a.strokeColor=t.strokeColor),t.fillColor!==void 0&&(a.fillColor=t.fillColor),t.fontColor!==void 0&&(a.fontColor=t.fontColor),t.fontBgColor!==void 0&&(a.fontBgColor=t.fontBgColor),t.thickness!==void 0&&(a.thickness=t.thickness),t.strokeType!==void 0&&(a.strokeType=t.strokeType),Object.keys(a).length&&Ve.emitMethod(o,Te.SetColorNode,{workIds:e,viewId:r,requestId:n,workState:de.Done,...a});const c={};if(t.fontSize!==void 0&&(c.fontSize=t.fontSize),t.bold!==void 0&&(c.bold=t.bold),t.italic!==void 0&&(c.italic=t.italic),t.underline!==void 0&&(c.underline=t.underline),t.lineThrough!==void 0&&(c.lineThrough=t.lineThrough),Object.keys(c).length&&Ve.emitMethod(o,Te.SetFontStyle,{workIds:e,viewId:r,requestId:n,workState:de.Done,...c}),t.isLocked!==void 0&&Ve.emitMethod(o,Te.SetLock,{workIds:e,viewId:r,requestId:n,workState:de.Done,isLocked:t.isLocked}),t.zIndexLayer!==void 0&&Ve.emitMethod(o,Te.ZIndexNode,{workIds:e,viewId:r,requestId:n,workState:de.Done,layer:t.zIndexLayer}),t.shape){const l={};if(t.shape.vertices!==void 0&&(l.vertices=t.shape.vertices),t.shape.innerVerticeStep!==void 0&&(l.innerVerticeStep=t.shape.innerVerticeStep),t.shape.innerRatio!==void 0&&(l.innerRatio=t.shape.innerRatio),t.shape.placement!==void 0&&(l.placement=t.shape.placement),Object.keys(l).length){if(!i.length)return;i.forEach(u=>{Ve.emitMethod(o,Te.SetShapeOpt,{workIds:e,viewId:r,toolsType:u,requestId:n,workState:de.Done,...l})})}}}buildSelectedElementInfo(r,e,t,n){var y,S,E;const i=this.control.collector,o=i&&i.isLocalId(t)?i.transformKey(t):t,a=(E=(S=(y=i==null?void 0:i.storage)==null?void 0:y[r])==null?void 0:S[e||""])==null?void 0:E[o];if(!a)return;const c=a.toolsType,l=a.opt,u=a.updateNodeOpt||{},h={};(l==null?void 0:l.strokeColor)!==void 0&&(h.strokeColor=l.strokeColor),(l==null?void 0:l.fillColor)!==void 0&&(h.fillColor=l.fillColor),(l==null?void 0:l.thickness)!==void 0&&(h.thickness=l.thickness),(l==null?void 0:l.strokeType)!==void 0&&(h.strokeType=l.strokeType),(l==null?void 0:l.fontColor)!==void 0&&(h.fontColor=l.fontColor),(l==null?void 0:l.fontBgColor)!==void 0&&(h.fontBgColor=l.fontBgColor),(l==null?void 0:l.zIndex)!==void 0&&(h.zIndex=l.zIndex);const d={id:t,toolsType:c,style:h};if(n&&(ye.isBoolean(n.canRotate)&&(d.canRotate=n.canRotate),ye.isBoolean(n.canLock)&&(d.canLock=n.canLock),n.scaleType&&(d.scaleType=n.scaleType),ye.isBoolean(n.isLocked)&&(d.isLocked=n.isLocked)),c===q.Text&&l){const C=l,L={text:C.text,fontSize:C.fontSize,fontFamily:C.fontFamily,bold:C.bold,italic:C.italic,underline:C.underline,lineThrough:C.lineThrough,textAlign:C.textAlign,verticalAlign:C.verticalAlign,boxPoint:C.boxPoint,boxSize:C.boxSize};d.text=L}if(c===q.Polygon){const C=l;d.shape={vertices:C.vertices}}else if(c===q.Star){const C=l;d.shape={vertices:C.vertices,innerVerticeStep:C.innerVerticeStep,innerRatio:C.innerRatio}}else if(c===q.SpeechBalloon){const C=l;d.shape={placement:C.placement}}const f=u.rect;f&&(d.rect={x:f.x,y:f.y,w:f.w,h:f.h});const g=u.centerPos;return g&&(d.centerPos=g),d}buildRemoteSelectedElements(r,e,t,n){if(!n.length)return[];const i=[];for(const o of n){const a=this.buildSelectedElementInfo(r,e,`${t}${Bt}${o}`,void 0);a&&(a.id=o,i.push(a))}return i}logGeometry(r,e,t){var a,c;const n=`${Ge} selectorGeometryChange action=${e} viewId=${r} count=${t}`,i=this.getDebounceLogger();if((e==="select"||e==="selectorTransform"||e==="cameraTransform")&&i!=null&&i.infoDebounced){i.infoDebounced(`selector-geometry:${r}:${e}`,n);return}(c=(a=this.logger)==null?void 0:a.info)==null||c.call(a,n)}}async function Kwe({previousScenePath:s,attemptedScenePath:r,getCurrentScenePath:e,getTargetScenePath:t,yieldToNextTask:n=()=>new Promise(i=>window.setTimeout(i,0))}){const i=e(),o=t();if(i===o)return!1;if(i!==s||o!==r)return!0;await n();const a=e(),c=t();return a===c?!1:a!==s||c!==r}const cr=class cr{constructor(r){x(this,"backgroundImageLoadCoordinator");x(this,"toolChangePending",!1);x(this,"toolChangePendingTimer");x(this,"pendingSceneChecks",new Set);x(this,"pendingSceneChanges",new Map);x(this,"pendingClears",new Map);x(this,"pendingViewInitStates",new Map);x(this,"renderRuntimeCacheKey");x(this,"renderRuntimeBuildMarker",Spe);x(this,"renderRuntimeActivationPromise");x(this,"pendingViewInitQueue",Promise.resolve());x(this,"clearQueueByView",new Map);x(this,"viewOperationQueueByView",new Map);x(this,"forceDoneQueue",Promise.resolve());x(this,"forceDoneQueueByView",new Map);x(this,"localMutationFenceCount",0);x(this,"localMutationFenceByView",new Map);x(this,"roomLifecycleTerminal",!1);x(this,"destroyPromise");x(this,"isDestroying",!1);x(this,"isDestroyed",!1);x(this,"orphanRepairTimer");x(this,"lifecycleGeneration",0);x(this,"viewLifecycleGeneration",new Map);x(this,"version",Dc);x(this,"plugin");x(this,"logger");x(this,"syncLogger");x(this,"room");x(this,"play");x(this,"collector");x(this,"hasSwitchToSelectorEffect");x(this,"snapshootStateMap");x(this,"_disableDeviceInputs");x(this,"_disableEraseImage");x(this,"_disableEraseText");x(this,"_disableCameraTransform");x(this,"initFontFaceTextRenderGate",!1);x(this,"initFontFaceTextRenderSkipped",!1);x(this,"mainViewMountedReady",new H0);x(this,"effectResolve");x(this,"hotkeyManager");x(this,"pluginOptions");x(this,"renderMode");x(this,"renderRuntimeDecisionLocked",!1);x(this,"renderingCompatibilityDecision");x(this,"roomMember");x(this,"cursor");x(this,"textEditorManager");x(this,"worker");x(this,"renderControl");x(this,"miniMapManager");x(this,"pluginManager");x(this,"callbacks");x(this,"selectorApi");x(this,"_isPolyfill",{requestIdleCallback:!1,cancelIdleCallback:!1});x(this,"onSceneChange",(r,e)=>{var a,c,l,u,h;if(this.isDestroying||this.isDestroyed)return Promise.resolve();const t=typeof r=="string"&&r.trim()?r:void 0,n=t||this.viewContainerManager.getAuthoritativeScenePath(e);if(!e||!n)return(c=(a=this.logger).warn)==null||c.call(a,`[Appliance]: [scene-path] stage=dropped-empty viewId=${e||""}`),Promise.resolve();if(t||this.logger.info(`[Appliance]: [scene-path] stage=authoritative-fallback viewId=${e} scenePath=${n}`),!this.worker.isViewInitAck(e)||!this.worker.isServiceSyncReady(e))return this.queuePendingInitScenePath(e,n),this.logger.info(`[Appliance]: [scene-path] stage=queued-before-ready viewId=${e} scenePath=${n}`),Promise.resolve();let i=this.pendingSceneChanges.get(e);i?(i.targetScenePath=n,i.isSceneBusy=!0,(l=i.deferredCamera)!=null&&l.scenePath&&i.deferredCamera.scenePath!==n&&(i.deferredCamera=void 0)):(i={targetScenePath:n,isSceneBusy:!0,running:!1,releaseMutationFence:this.acquireLocalMutationFence([e]),waiters:new Set},this.pendingSceneChanges.set(e,i)),this.worker.cameraUpdateDestroy(e),(h=(u=this.viewContainerManager.getView(e))==null?void 0:u.displayer)==null||h.setActive(!1);const o=new Promise(d=>{i==null||i.waiters.add(d)});return i.running||(i.running=!0,this.consumePendingSceneChanges(e,i).catch(d=>{var f,g;(g=(f=this.logger)==null?void 0:f.error)==null||g.call(f,`[Appliance]: scene change failed viewId=${e} scenePath=${(i==null?void 0:i.targetScenePath)||""} error=${(d==null?void 0:d.message)||d}`)})),o});x(this,"onRoomMembersChange",r=>{this.isDestroying||this.isDestroyed||(this.roomMember.setRoomMembers(oa(r)),this.scheduleOrphanRepair())});x(this,"onMemberChange",ye.throttle(r=>{var o,a;if(this.setToolChangePending(!1,"member-change"),!this.room||!this.worker||!r||!this.room.isWritable)return;const e=this.getToolsKey(r),t=(o=this.worker.getCurrentToolsData())==null?void 0:o.toolsType,n=this.viewContainerManager.focuedViewId;n&&t===q.Selector&&e!==q.Selector&&this.worker.blurCursor(n);const i=this.getToolsOpt(e,r);this.worker.setCurrentToolsData(i),(a=this.pluginManager)==null||a.dispatchPluginEvent("setToolkey",e),this.effectViewContainer(e),this.effectResolve&&this.effectResolve(!0)},100,{leading:!1}));x(this,"internalSceneChange",(r,e)=>{var t,n,i,o;if(!this.worker.isViewInitAck(r)||!this.worker.isServiceSyncReady(r)){this.queuePendingInitScenePath(r,e);return}this.isUseSimple||((t=this.miniMapManager)==null?void 0:t.activeViewId)===r&&((n=this.miniMapManager)==null||n.destroyMiniMap(r)),(i=this.pluginManager)==null||i.dispatchPluginEvent("sceneChange",r,e),(o=this.worker)==null||o.clearViewScenePath(r,!0).then(()=>{var a;(a=this.worker)==null||a.pullServiceData(r,e,{isAsync:!0,useAnimation:!1})})});x(this,"internalCameraChange",(r,e)=>{var t,n;(t=this.worker)==null||t.updateCamera(r,e),this.isUseSimple||(n=this.miniMapManager)==null||n.updateViewCamera(r,e)});var S,E,C;const{displayer:e,plugin:t,options:n,callbacks:i}=r;this.plugin=t,this.callbacks=i,this.room=ze(e)?e:void 0,this.play=ih(e)?e:void 0;let o;this.room&&(o=(S=this.room)==null?void 0:S.logger,this._disableDeviceInputs=this.room.disableDeviceInputs,this._disableEraseImage=this.room.disableEraseImage,this._disableEraseText=!1);const a=pMe(n.cdn,n.extras.useSimple),c=Ts(He.workerRenderModeBlacklist,n.extras.workerRenderModeBlacklist,"renderMode"),l=Ts(He.workerCanvasContextBlacklist,n.extras.workerCanvasContextBlacklist,"canvasContext"),u=Ts(He.workerMaskTextureFormatBlacklist,n.extras.workerMaskTextureFormatBlacklist,"maskTextureFormat"),h=Ts(He.workerMaskTextureUploadBlacklist,n.extras.workerMaskTextureUploadBlacklist,"maskTextureUpload"),d=Ts(He.fontFaceFallbackBlacklist,n.extras.fontFaceFallbackBlacklist,"fontFaceFallback"),f=typeof navigator>"u"?"":navigator.userAgent;this.renderRuntimeCacheKey=Fwe(f),this.renderingCompatibilityDecision=EMe({useWorker:n.extras.useWorker,useSimple:n.extras.useSimple,requestedContextType:(E=n.extras.canvasOpt)==null?void 0:E.contextType,workerRenderModeBlacklist:c,workerCanvasContextBlacklist:l,workerMaskTextureFormatBlacklist:u,workerMaskTextureUploadBlacklist:h,workerUrl:a}),this.pluginOptions={...n,extras:{...n.extras,canvasOpt:n.extras.canvasOpt,workerRenderModeBlacklist:c,workerCanvasContextBlacklist:l,workerMaskTextureFormatBlacklist:u,workerMaskTextureUploadBlacklist:h,fontFaceFallbackBlacklist:d}},this.backgroundImageLoadCoordinator=new hpe(this.pluginOptions.extras.backgroundImageLoadOptions,(C=this.callbacks)==null?void 0:C.onBackgroundImageLoadEvent),this.renderMode=this.renderingCompatibilityDecision.renderMode,this.renderingCompatibilityDecision.renderRuntimeSource="config",this.roomMember=new K0e;const g={control:this,internalMsgEmitter:cr.InternalMsgEmitter,publicMsgEmitter:cr.PublicMsgEmitter};this.cursor=new X0e(g),this.textEditorManager=new Cye(g),this.worker=new Lwe(g),this.hotkeyManager=new Nwe(g),this.renderControl=new Ywe(g),this.pluginManager=new cm.PluginManager(g),this.isUseSimple||(this.miniMapManager=new Gwe(g)),this.logger=new Xs(o);const y=this.pluginOptions.extras.syncLogger.batchWindowMs??He.syncLogger.batchWindowMs;this.syncLogger=new zwe(this.logger,y>0?y:He.syncLogger.batchWindowMs)}get publicMsgEmitter(){return cr.PublicMsgEmitter}get internalMsgEmitter(){return cr.InternalMsgEmitter}emitInitLoadingChange(r){var e,t,n,i;try{(t=(e=this.callbacks)==null?void 0:e.onInitLoadingChange)==null||t.call(e,r)}catch(o){(i=(n=this.logger)==null?void 0:n.error)==null||i.call(n,`[Appliance]: onInitLoadingChange error: ${(o==null?void 0:o.message)||o}`)}}notifyMainViewMounted(){this.mainViewMountedReady.markReady()}isMainViewMounted(){var r;return((r=this.mainViewMountedReady)==null?void 0:r.isReady())??!0}waitForMainViewMounted(r){var e;return((e=this.mainViewMountedReady)==null?void 0:e.wait(r))??Promise.resolve("ready")}isRenderRuntimeRecoveryAllowed(){return!this.isDestroying&&!this.isDestroyed&&!this.roomLifecycleTerminal}appendPendingViewInitTask(r){this.pendingViewInitQueue||(this.pendingViewInitQueue=Promise.resolve());const e=this.pendingViewInitQueue.catch(()=>{}).then(r);return this.pendingViewInitQueue=e.then(()=>{},()=>{}),e}queuePendingRuntimeReset(r){return this.appendPendingViewInitTask(r)}queuePendingViewInit(r,e,t=this.getViewLifecycleGeneration(r)){const n=()=>this.appendPendingViewInitTask(async()=>{this.isPendingViewInitCurrent(r,t)&&await e()});return r===Fe||this.isMainViewMounted()?n():this.waitForMainViewMounted().then(i=>{if(!(i!=="ready"||!this.isPendingViewInitCurrent(r,t)))return n()})}emitFontFaceLoadState(r){var e,t;try{this.publicMsgEmitter.emit("fontFaceLoadState",r)}catch(n){(t=(e=this.logger)==null?void 0:e.error)==null||t.call(e,`[Appliance]: fontFaceLoadState listener error: ${(n==null?void 0:n.message)||n}`)}}emitFontFaceRenderState(r){var e,t;try{this.publicMsgEmitter.emit("fontFaceRenderState",r)}catch(n){(t=(e=this.logger)==null?void 0:e.error)==null||t.call(e,`[Appliance]: fontFaceRenderState listener error: ${(n==null?void 0:n.message)||n}`)}}hasPolyfillMethod(r){return this._isPolyfill[r]}registerPolyfillMethod(r){this._isPolyfill[r]=!0}get hasExtendFontFaces(){return this.extendFontFaces.length>0}get extendFontFaces(){var r;return((r=this.pluginOptions.extras.textEditor)==null?void 0:r.extendFontFaces)??He.textEditor.extendFontFaces}get loadFontFacesTimeout(){var r;return((r=this.pluginOptions.extras.textEditor)==null?void 0:r.loadFontFacesTimeout)??He.textEditor.loadFontFacesTimeout}loadFontFaces(){return this.worker.loadFontFaces()}beginInitFontFaceTextRenderGate(){this.initFontFaceTextRenderGate=!0,this.initFontFaceTextRenderSkipped=!1}markInitFontFaceTextRenderSkipped(){this.initFontFaceTextRenderGate&&(this.initFontFaceTextRenderSkipped=!0)}shouldHoldServiceTextRenderForFontFace(){return this.initFontFaceTextRenderGate}hasInitFontFaceTextRenderSkipped(){return this.initFontFaceTextRenderSkipped}endInitFontFaceTextRenderGate(){this.initFontFaceTextRenderGate=!1,this.initFontFaceTextRenderSkipped=!1}startInitFontFaceLoadAndRender(){if(!this.hasExtendFontFaces)return;this.beginInitFontFaceTextRenderGate();const r=this.lifecycleGeneration;setTimeout(()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==r){this.endInitFontFaceTextRenderGate();return}this.loadFontFaces().then(e=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==r)return;const t=this.hasInitFontFaceTextRenderSkipped();if(e.status==="success"&&(!this.worker.getLastFontFacesAlreadyReady()||t)||e.status!=="success"&&t&&SMe(this.pluginOptions.extras.fontFaceFallbackBlacklist))return this.refreshTextRender()}).catch(e=>{var t,n;(n=(t=this.logger)==null?void 0:t.error)==null||n.call(t,`[Appliance]: init font face load and render failed: ${(e==null?void 0:e.message)||e}`)}).finally(()=>{this.endInitFontFaceTextRenderGate()})},0)}waitNextFrame(){return new Promise(r=>requestAnimationFrame(()=>r()))}getSortedRefreshViews(){const r=this.viewContainerManager.getAllViews().filter(t=>!!t),e=this.viewContainerManager.focuedViewId;return r.sort((t,n)=>t.id===e?-1:n.id===e?1:0)}escapeCssIdentifier(r){return typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(r):r.replace(/([ #;?%&,.+*~':"!^$[\]()=>|/@])/g,"\\$1")}getTextEditorElement(r,e){var i;const t=`.editor-box #${this.escapeCssIdentifier(e)}`,n=[];r.container&&n.push(r.container),(i=r.viewData)!=null&&i.divElement&&n.push(r.viewData.divElement),r.displayer.eventTragetElement&&n.push(r.displayer.eventTragetElement),n.push(document);for(const o of n){const a=o.querySelector(t);if(a)return a}return document.getElementById(e)}measureViewTextEditorsForRender(r){const e=this.viewContainerManager.getView(r);if(!e)return{changed:!1,tasks:[]};let t=!1;const n=[];return this.textEditorManager.filterEditor(r).forEach((o,a)=>{const c=this.getTextEditorElement(e,a);let l=o.opt;if(c){const h=[c.offsetWidth,c.offsetHeight];h[0]&&h[1]&&!ye.isEqual(o.opt.boxSize,h)&&(l={...o.opt,boxSize:h},this.textEditorManager.updateForViewEdited(a,{...o,opt:l,canSync:!1,canWorker:!1,skipStorageDispatch:!0}),t=!0)}const u=this.textEditorManager.get(a)||o;n.push({viewId:r,scenePath:u.scenePath,workId:a,opt:u.opt})}),{changed:t,tasks:n}}async refreshViewTextRenderInternal(r){const e=this.viewContainerManager.getView(r),t=e==null?void 0:e.focusScenePath;if(!t||!this.collector)return{status:"error"};const n=this.collector.getStorageData(r,t);if(this.textEditorManager.clear(r,!0),n)for(const c of Object.keys(n)){const l=n[c];if(!l||l.toolsType!==q.Text)continue;const u=l.type;if(!u||!this.renderControl.isFilterAble({viewId:r,elementId:c,scenePath:t},u))continue;const h={...l,workId:this.collector.isOwn(c)?this.collector.getLocalId(c):c,msgType:u,dataType:xe.Service,viewId:r,scenePath:t};this.textEditorManager.deriveTextEditorInfoFromServiceData(h,{canWorker:!1,canSync:!1,updateView:!1})}await this.viewContainerManager.renderTextEditorInfoAsync(r,this.textEditorManager.activeId),await this.waitNextFrame();const{changed:i,tasks:o}=this.measureViewTextEditorsForRender(r);return i&&(await this.viewContainerManager.renderTextEditorInfoAsync(r,this.textEditorManager.activeId),await this.waitNextFrame()),{status:await this.worker.refreshTextRenderForWorker(o)?"success":"error"}}async refreshViewTextRender(r,e=!0){var t,n;e&&this.emitFontFaceRenderState({status:"start"});try{const i=await this.refreshViewTextRenderInternal(r);return e&&this.emitFontFaceRenderState({status:i.status==="success"?"success":"error"}),i}catch(i){return(n=(t=this.logger)==null?void 0:t.error)==null||n.call(t,`[Appliance]: refreshViewTextRender failed: ${(i==null?void 0:i.message)||i}`),e&&this.emitFontFaceRenderState({status:"error"}),{status:"error"}}}async refreshTextRender(){var e,t;this.emitFontFaceRenderState({status:"start"});let r="success";try{for(const n of this.getSortedRefreshViews())(await this.refreshViewTextRenderInternal(n.id)).status==="error"&&(r="error");return this.emitFontFaceRenderState({status:r}),{status:r}}catch(n){return(t=(e=this.logger)==null?void 0:e.error)==null||t.call(e,`[Appliance]: refreshTextRender failed: ${(n==null?void 0:n.message)||n}`),this.emitFontFaceRenderState({status:"error"}),{status:"error"}}}async refreshViewRender(r){var e,t;try{const n=this.viewContainerManager.getView(r),i=(n==null?void 0:n.focusScenePath)||this.viewContainerManager.getAuthoritativeScenePath(r);return i?n!=null&&n.focusScenePath?(await this.worker.clearViewScenePath(r,!0),this.worker.pullServiceData(r,i,{isAsync:!0,useAnimation:!1}),await this.viewContainerManager.updateTextEditorInfoAsync(r,this.textEditorManager.activeId),await this.waitNextFrame(),{status:"success"}):(await this.onSceneChange(i,r),await this.viewContainerManager.updateTextEditorInfoAsync(r,this.textEditorManager.activeId),await this.waitNextFrame(),{status:"success"}):{status:"error"}}catch(n){return(t=(e=this.logger)==null?void 0:e.error)==null||t.call(e,`[Appliance]: refreshViewRender failed: ${(n==null?void 0:n.message)||n}`),{status:"error"}}}async refreshRender(){let r="success";for(const e of this.getSortedRefreshViews())(await this.refreshViewRender(e.id)).status==="error"&&(r="error");return{status:r}}get disableEraseText(){return this._disableEraseText||!1}set disableEraseText(r){this._disableEraseText=r}get disableEraseImage(){return this._disableEraseImage||!1}set disableEraseImage(r){this._disableEraseImage=r,this.room.disableEraseImage=r}get disableDeviceInputs(){return this._disableDeviceInputs||!1}set disableDeviceInputs(r){var t;this._disableDeviceInputs=r;const e=(t=this.worker.getCurrentToolsData())==null?void 0:t.toolsType;e&&this.effectViewContainer(e)}get disableCameraTransform(){return this._disableCameraTransform||!1}set disableCameraTransform(r){this._disableCameraTransform=r,this.room.disableCameraTransform=r}get disableUseWorker(){return this.renderMode==="main-thread"}get hasOffscreenCanvas(){return this.renderMode!=="main-thread"}get isUseOffscreenTransfer(){return this.renderMode==="worker-offscreen-transfer"}isServiceSyncReady(r){return this.worker.isServiceSyncReady(r)}onViewServiceReady(r){const e=this.viewContainerManager.getView(r);e&&e.displayer.setActive(this.canAcceptLocalMutation(r))}lockRenderRuntimeDecision(){this.renderRuntimeDecisionLocked=!0}isRenderRuntimeDecisionLocked(){return this.renderRuntimeDecisionLocked}ensureRenderRuntimeReady(){return this.worker.isActive?Promise.resolve():(this.renderRuntimeActivationPromise||(this.renderRuntimeActivationPromise=this.activeWorker().catch(r=>{throw this.renderRuntimeActivationPromise=void 0,r})),this.renderRuntimeActivationPromise)}getRenderContextTypeForView(r){var e,t;return((t=(e=this.viewContainerManager)==null?void 0:e.mainView)==null?void 0:t.id)===r?this.renderingCompatibilityDecision.contextType:"2d"}requiresCanvas2DCompanionRenderProbe(){return!1}async restoreCachedRenderRuntimeDecision(){if(this.pluginOptions.extras.useWorker!=="auto")return;const r=await Wwe(this.renderRuntimeCacheKey),e=r.renderModel;let t;const n=e?gMe(e):void 0;if(n){const i=this.renderingCompatibilityDecision,o={"worker-offscreen-transfer":0,"worker-image-bitmap":1,"main-thread":2},a={webgl2:0,webgl:1,"2d":2},c=n.renderMode==="main-thread"||n.renderMode==="worker-offscreen-transfer"&&i.capabilities.offscreenTransfer||n.renderMode==="worker-image-bitmap"&&i.capabilities.imageBitmap,l=n.contextType==="2d"||n.contextType==="webgl2"&&i.capabilities.webgl2||n.contextType==="webgl"&&i.capabilities.webgl,u=o[n.renderMode]>=o[i.renderMode]&&a[n.contextType]>=a[i.contextType];(!c||!l||!u)&&(t="cache-capability-mismatch")}if(n&&e&&!t){const i=this.renderingCompatibilityDecision;this.renderMode=n.renderMode,i.renderMode=n.renderMode,i.contextType=n.contextType,i.reason="cached-render-runtime-decision",i.renderRuntimeCacheState="hit",i.renderRuntimeSource="cache";const o=`cached-render-runtime:${n.renderMode}/${n.contextType}`;i.issues.includes(o)||(i.issues=[...i.issues,o]),this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=${e}`),this.logFinalRenderDecision();return}this.logger.info(`[Appliance]: [render-cache] stage=read-result renderModel=none${r.reason||t?` reason=${t||r.reason}`:""}`)}async persistRenderRuntimeDecision(){var n,i;if(this.pluginOptions.extras.useWorker!=="auto")return;const r=this.renderingCompatibilityDecision,e=Ht(r.renderMode,r.contextType);await Vwe(this.renderRuntimeCacheKey,e)?this.logger.info(`[Appliance]: [render-cache] stage=save renderModel=${e}`):(i=(n=this.logger).warn)==null||i.call(n,`[Appliance]: [render-cache] stage=save-failed renderModel=${e} reason=indexeddb-write-failed`)}async invalidateRenderRuntimeDecision(){var t,n;if(this.pluginOptions.extras.useWorker!=="auto")return;const r=await $we(this.renderRuntimeCacheKey);this.renderingCompatibilityDecision.renderRuntimeCacheState=void 0;const e=Ht(this.renderMode,this.renderingCompatibilityDecision.contextType);r?this.logger.info(`[Appliance]: [render-cache] stage=invalidate renderModel=${e}`):(n=(t=this.logger).warn)==null||n.call(t,`[Appliance]: [render-cache] stage=invalidate-failed renderModel=${e}`)}ensurePendingViewInitState(r){var t,n,i,o;let e=this.pendingViewInitStates.get(r);if(!e){const a=(n=(t=this.collector)==null?void 0:t.readViewStorageSnapshot)==null?void 0:n.call(t,r);e={sequence:0,anchorRevision:0,serviceBaselineRevision:(a==null?void 0:a.revision)||0,serviceBaseline:(a==null?void 0:a.storage)||((o=(i=this.collector)==null?void 0:i.getServiceStorageViewSnapshot)==null?void 0:o.call(i,r))||{},scenes:new Map},this.pendingViewInitStates.set(r,e)}return e}armPendingViewInit(r){var n;const e=this.ensurePendingViewInitState(r),t=this.getViewLifecycleGeneration(r);(n=this.viewContainerManager.getView(r))==null||n.displayer.setActive(!1),pt(this.logger,{category:"init-padding",viewId:r,stage:"armed",restartView:!0,lifecycleGeneration:t,details:{lifecycleGeneration:t,baselineRevision:e.serviceBaselineRevision}})}bindPendingViewInit(r,e){const t=this.pendingViewInitStates.get(r);t&&(t.generation=e)}nextInitPaddingSequence(r){return r.sequence+=1,r.sequence}getSceneInitPaddingState(r,e){let t=r.scenes.get(e);return t||(t={cameraRevision:0,serviceDirty:!1,forceFullRefresh:!1,forceFullRevision:0,journal:[]},r.scenes.set(e,t)),t}appendInitPaddingJournal(r,e,t,n){const i=this.getSceneInitPaddingState(r,e);i.journal.push({kind:t,sequence:this.nextInitPaddingSequence(r),storageKey:n}),i.journal.length>128&&i.journal.shift()}queuePendingInitScenePath(r,e){if(!r||!e)return;const t=this.ensurePendingViewInitState(r);t.latestScenePath=e,t.anchorRevision=this.nextInitPaddingSequence(t),pt(this.logger,{category:"init-padding",viewId:r,generation:t.generation,stage:"accepted-scene",details:{scenePath:e,revision:t.anchorRevision}})}queuePendingInitServicePull(r,e){if(!r||!e)return;const t=this.ensurePendingViewInitState(r),n=this.getSceneInitPaddingState(t,e);n.serviceDirty=!0,n.forceFullRefresh=!0,n.forceFullRevision=this.nextInitPaddingSequence(t),this.appendInitPaddingJournal(t,e,"servicePull"),pt(this.logger,{category:"init-padding",viewId:r,generation:t.generation,stage:"accepted-service-pull",details:{scenePath:e,revision:n.forceFullRevision}})}queuePendingInitCamera(r,e,t){var a,c,l,u;if(!r)return;const n=t||((c=(a=this.viewContainerManager)==null?void 0:a.getView(r))==null?void 0:c.focusScenePath)||((u=(l=this.viewContainerManager)==null?void 0:l.getCurScenePath)==null?void 0:u.call(l,r));if(!n)return;const i=this.ensurePendingViewInitState(r),o=this.getSceneInitPaddingState(i,n);o.camera={...e},o.cameraRevision=this.nextInitPaddingSequence(i),pt(this.logger,{category:"init-padding",viewId:r,generation:i.generation,stage:"accepted-camera",details:{scenePath:n,revision:o.cameraRevision}})}queuePendingServiceDerive(r,e,t){if(!r||!e||!(t!=null&&t.scenePath))return;const n=this.ensurePendingViewInitState(r),i=this.getSceneInitPaddingState(n,t.scenePath);i.serviceDirty=!0,this.appendInitPaddingJournal(n,t.scenePath,"serviceDerive",e),pt(this.logger,{category:"init-padding",viewId:r,generation:n.generation,stage:"accepted-service-diff",details:{scenePath:t.scenePath,revision:n.sequence}})}queuePendingInitClear(r,e){var o,a,c,l;if(!r)return;const t=e||((a=(o=this.viewContainerManager)==null?void 0:o.getView(r))==null?void 0:a.focusScenePath)||((l=(c=this.viewContainerManager)==null?void 0:c.getCurScenePath)==null?void 0:l.call(c,r));if(!t)return;const n=this.ensurePendingViewInitState(r),i=this.getSceneInitPaddingState(n,t);i.serviceDirty=!0,i.forceFullRefresh=!0,i.forceFullRevision=this.nextInitPaddingSequence(n),this.appendInitPaddingJournal(n,t,"clear"),pt(this.logger,{category:"init-padding",viewId:r,generation:n.generation,stage:"accepted-clear",details:{scenePath:t,revision:n.sequence}})}getPendingInitTargetScenePath(r){var e;return(e=this.pendingViewInitStates.get(r))==null?void 0:e.latestScenePath}getPendingInitCameraForScene(r,e){var n,i;const t=(i=(n=this.pendingViewInitStates.get(r))==null?void 0:n.scenes.get(e))==null?void 0:i.camera;return t?{...t}:void 0}markPendingInitServiceApplied(r,e,t,n){const i=this.pendingViewInitStates.get(r);if(!i)return;const o=this.getSceneInitPaddingState(i,e);o.lastApplied=t?ye.cloneDeep(t):{},o.lastAppliedRevision=n,o.serviceDirty=!1,o.forceFullRefresh=!1}resetPendingInitRendererBaseline(r){var t,n;const e=[...((t=this.pendingViewInitStates.get(r))==null?void 0:t.scenes.keys())||[]];for(const i of e){const o=(n=this.pendingViewInitStates.get(r))==null?void 0:n.scenes.get(i);o&&(o.lastApplied=void 0,o.serviceDirty=!0,o.forceFullRefresh=!0)}}getPendingInitServiceBaseline(r,e){var t;return ye.cloneDeep(((t=this.pendingViewInitStates.get(r))==null?void 0:t.serviceBaseline[e])||{})}getPendingInitReconcileRevision(r,e){const t=this.pendingViewInitStates.get(r),n=t==null?void 0:t.scenes.get(e);return{anchorRevision:(t==null?void 0:t.anchorRevision)||0,cameraRevision:(n==null?void 0:n.cameraRevision)||0,forceFullRevision:(n==null?void 0:n.forceFullRevision)||0}}getPendingInitLastApplied(r,e){var n;const t=(n=this.pendingViewInitStates.get(r))==null?void 0:n.scenes.get(e);return{revision:t==null?void 0:t.lastAppliedRevision,storage:t!=null&&t.lastApplied?ye.cloneDeep(t.lastApplied):void 0}}hasPendingInitAppliedSnapshot(r,e){var t,n;return((n=(t=this.pendingViewInitStates.get(r))==null?void 0:t.scenes.get(e))==null?void 0:n.lastApplied)!==void 0}isPendingInitForceFullRefresh(r,e){var t,n;return((n=(t=this.pendingViewInitStates.get(r))==null?void 0:t.scenes.get(e))==null?void 0:n.forceFullRefresh)===!0}hasPendingInitServiceChanges(r,e){var t,n;return((n=(t=this.pendingViewInitStates.get(r))==null?void 0:t.scenes.get(e))==null?void 0:n.serviceDirty)===!0}clearPendingViewInitState(r){var e;(e=this.pendingViewInitStates)==null||e.delete(r)}getViewLifecycleGeneration(r){return this.viewLifecycleGeneration.get(r)||0}isPendingViewInitCurrent(r,e){return this.getViewLifecycleGeneration(r)===e}invalidatePendingViewInit(r){const e=this.getViewLifecycleGeneration(r)+1;return this.viewLifecycleGeneration.set(r,e),this.clearPendingViewInitState(r),ya(this.logger,r),e}invalidateAllPendingViewInit(){const r=new Set(this.viewLifecycleGeneration.keys());for(const e of this.viewContainerManager.getAllViews())e!=null&&e.id&&r.add(e.id);for(const e of r)this.invalidatePendingViewInit(e);return this.pendingViewInitStates.clear(),r.size}applyWorkerRenderProbe(r){const e=this.renderingCompatibilityDecision,t=r.contextSupported;e.workerProbe=t?"passed":"failed",e.workerProgramProbe=r.programProbe,this.logFinalRenderDecision()}applyRuntimeRenderingDecision(r,e,t,n){this.renderMode=r;const i=this.renderingCompatibilityDecision;i.renderMode=r,i.contextType=e,i.reason=t,i.issues.includes(n)||(i.issues=[...i.issues,n])}logFinalRenderDecision(){const r=this.renderingCompatibilityDecision;this.logger.info(`[Appliance]: [render-capabilities] ${JSON.stringify({renderMode:r.renderMode,mainThreadRenderMode:r.mainThreadRenderMode,contextType:r.contextType,reason:r.reason,workerProbe:r.workerProbe,workerProgramProbe:r.workerProgramProbe,issues:r.issues})}`)}get isUseSimple(){return this.pluginOptions.extras.useSimple}get isUseBackgroundThread(){return this.pluginOptions.extras.useBackgroundThread}bindPlugin(r){this.plugin=r,this.collector&&(this.collector.removeStorageStateListener(),this.collector.removeAuthStateListener()),this.collector=new Jr(this,r,this.pluginOptions.extras.syncOpt.interval),this.activePlugin(),this.selectorApi&&this.selectorApi.destroy(),this.selectorApi=new Zwe(this)}handleRemoteStorageRemoval(r,e,t={}){var a,c,l,u,h;const n=t.clearView===!0,i=(c=(a=this.worker)==null?void 0:a.abortActiveLocalInput)==null?void 0:c.call(a,r,e),o=(l=this.worker)==null?void 0:l.abortActiveContinuousMethods(r,t.abortAllContinuousMethods?void 0:e);i&&!n&&((u=this.worker)==null||u.cancelLocalWorks(r,!1)),(n||t.cancelTicker||i||o)&&this.viewContainerManager.cancelViewUndoTicker(r),n&&((h=this.worker)==null||h.clearViewScenePath(r,!0))}canForceDoneLocalWorks(){return!this.isDestroyed&&!!this.room&&this.room.phase===Pi.Connected&&this.room.isWritable&&this.renderControl.isWritable}isLocalMutationRuntimeAvailable(r){var e,t,n,i;return this.isDestroying||this.isDestroyed||this.roomLifecycleTerminal||!this.room||this.room.phase!==Pi.Connected||!this.room.isWritable||!this.renderControl.isWritable||this.localMutationFenceCount>0||((t=(e=this.worker)==null?void 0:e.isRenderRuntimeRecovering)==null?void 0:t.call(e))===!0?!1:!r||((i=(n=this.worker)==null?void 0:n.isServiceSyncReady)==null?void 0:i.call(n,r))===!0}canAcceptLocalMutation(r){var e,t;return this.isLocalMutationRuntimeAvailable(r)?!r||!this.localMutationFenceByView.has(r)&&!this.isSceneBusy(r)&&!this.isClearBusy(r)&&!((t=(e=this.worker)==null?void 0:e.isViewBusy)!=null&&t.call(e,r)):!1}markRoomLifecycleTerminal(){var r,e;this.roomLifecycleTerminal||(this.roomLifecycleTerminal=!0,(e=(r=this.worker)==null?void 0:r.cancelRenderRuntimeRecovery)==null||e.call(r,"room-lifecycle-terminal"),this.viewContainerManager.getAllViews().forEach(t=>{t==null||t.displayer.setActive(!1)}))}canQueueViewLifecycleOperation(r){return this.isLocalMutationRuntimeAvailable(r)&&!!this.viewContainerManager.getView(r)}acquireLocalMutationFence(r){const e=r?new Set(r):void 0;e?e.forEach(n=>{this.localMutationFenceByView.set(n,(this.localMutationFenceByView.get(n)||0)+1)}):this.localMutationFenceCount++,this.viewContainerManager.getAllViews().forEach(n=>{n&&(!e||e.has(n.id))&&n.displayer.setActive(!1)});let t=!1;return()=>{t||(t=!0,e?e.forEach(n=>{const i=this.localMutationFenceByView.get(n)||0;i<=1?this.localMutationFenceByView.delete(n):this.localMutationFenceByView.set(n,i-1)}):this.localMutationFenceCount=Math.max(0,this.localMutationFenceCount-1),this.viewContainerManager.getAllViews().forEach(n=>{n&&(!e||e.has(n.id))&&this.canAcceptLocalMutation(n.id)&&!this.isSceneBusy(n.id)&&!this.isClearBusy(n.id)&&n.displayer.setActive(!0)}))}}forceDoneLocalWorks(r,e){this.forceDoneQueueByView||(this.forceDoneQueueByView=new Map);const t=this.acquireLocalMutationFence(e),n=e?[...new Set(e)]:void 0,i=n?[this.forceDoneQueue,...n.map(c=>this.forceDoneQueueByView.get(c)||Promise.resolve())]:[this.forceDoneQueue,...this.forceDoneQueueByView.values()],o=Promise.all(i).then(async()=>{if(!this.canForceDoneLocalWorks())return this.logLifecycleError(`[Appliance]: force-Done unavailable reason=${r}`),{status:"failed",reason:r,views:[],failureReasons:["lifecycle-unavailable"]};const c=[];try{this.textEditorManager.forceDoneLocalText(e)}catch(g){const y=g instanceof Error?g.message:String(g);c.push(`text-finalize: ${y}`),this.logLifecycleError(`[Appliance]: force-Done Text finalize failed reason=${r} error=${y}`)}const l=e?new Set(e):void 0,u=this.viewContainerManager.getAllViews().filter(g=>!!g&&(!l||l.has(g.id))),h=await Promise.allSettled(u.map(async g=>{if(!this.canForceDoneLocalWorks())return{status:"failed",viewId:g.id,scenePath:g.focusScenePath,reason:r,failureReason:"lifecycle-unavailable"};const y=this.worker.forceDoneLocalWorks(g.id,g.focusScenePath,r);return this.waitForForceDoneOrInvalidation(y,g,r)})),d=[];let f=c.length===0;return h.forEach((g,y)=>{var S,E,C,L,T;if(g.status==="rejected"){f=!1;const p=((S=g.reason)==null?void 0:S.message)||String(g.reason);d.push({status:"failed",viewId:((E=u[y])==null?void 0:E.id)||"unknown",scenePath:((C=u[y])==null?void 0:C.focusScenePath)||"",reason:r,failureReason:p}),c.push(`view=${((L=u[y])==null?void 0:L.id)||"unknown"}: ${p}`),this.logLifecycleError(`[Appliance]: force-Done failed viewId=${((T=u[y])==null?void 0:T.id)||"unknown"} reason=${r} error=${p}`)}else{if(d.push(g.value),g.value.status==="success")return;f=!1,c.push(`view=${g.value.viewId}: ${g.value.failureReason||"barrier-failed"}`),this.logLifecycleError(`[Appliance]: force-Done failed ACK viewId=${g.value.viewId} scenePath=${g.value.scenePath} reason=${r} error=${g.value.failureReason||"barrier-failed"}`)}}),this.canForceDoneLocalWorks()||(f=!1,c.push("lifecycle-invalidated"),this.logLifecycleError(`[Appliance]: force-Done lifecycle invalidated reason=${r}`)),{status:f?"success":"failed",reason:r,views:d,failureReasons:c}}).catch(c=>{const l=c instanceof Error?c.message:String(c);return this.logLifecycleError(`[Appliance]: force-Done aggregation failed reason=${r} error=${l}`),{status:"failed",reason:r,views:[],failureReasons:[`aggregation: ${l}`]}}).finally(()=>{try{t()}catch(c){this.logLifecycleError(`[Appliance]: force-Done mutation fence release failed reason=${r} error=${c instanceof Error?c.message:String(c)}`)}}),a=o.then(()=>{},()=>{});if(n){n.forEach(l=>{this.forceDoneQueueByView.set(l,a)});const c=()=>{n.forEach(l=>{this.forceDoneQueueByView.get(l)===a&&this.forceDoneQueueByView.delete(l)})};o.then(c,c)}else this.forceDoneQueue=a;return o}waitForForceDoneOrInvalidation(r,e,t){return new Promise((n,i)=>{let o=!1;const a=l=>{o||(o=!0,clearInterval(c),n(l))},c=setInterval(()=>{this.canForceDoneLocalWorks()||(this.worker.invalidateTransactionBarrier(e.id),a({status:"failed",viewId:e.id,scenePath:e.focusScenePath,reason:t,failureReason:"lifecycle-invalidated"}))},25);r.then(l=>a(l),l=>{o||(o=!0,clearInterval(c),i(l))})})}logLifecycleError(r){var e;(e=this.logger)==null||e.error(r)}destroy(r={}){var t,n;if(this.destroyPromise)return this.destroyPromise;const e=r.preserveStorage!==!1;return this.isDestroying=!0,(n=(t=this.worker)==null?void 0:t.cancelRenderRuntimeRecovery)==null||n.call(t,"manager-destroy"),this.destroyPromise=(async()=>{try{e&&this.canForceDoneLocalWorks()&&await this.forceDoneLocalWorks("destroy")}catch(i){this.logLifecycleError(`[Appliance]: force-Done before destroy failed: ${(i==null?void 0:i.message)||i}`)}finally{this.destroyImmediately()}})(),this.destroyPromise}destroyImmediately(){var t,n;if(this.isDestroyed)return;this.isDestroyed=!0;const r=[],e=(i,o)=>{try{o()}catch(a){r.push(`${i}: ${(a==null?void 0:a.message)||a}`)}};e("background-image",()=>this.backgroundImageLoadCoordinator.cancelAll()),e("main-view-ready",()=>this.mainViewMountedReady.cancel()),this.lifecycleGeneration++,this.viewLifecycleGeneration.forEach((i,o)=>{this.viewLifecycleGeneration.set(o,this.viewLifecycleGeneration.get(o)+1)}),e("sync-logger",()=>this.syncLogger.destroy()),this.pendingSceneChecks.clear(),(t=this.pendingViewInitStates)==null||t.clear(),this.pendingSceneChanges.forEach(i=>{i.releaseMutationFence(),i.waiters.forEach(o=>o())}),this.pendingSceneChanges.clear(),this.pendingClears.clear(),this.clearQueueByView.clear(),this.viewOperationQueueByView.clear(),(n=this.forceDoneQueueByView)==null||n.clear(),e("room-member",()=>this.roomMember.destroy()),e("orphan-repair",()=>{this.orphanRepairTimer&&clearTimeout(this.orphanRepairTimer),this.orphanRepairTimer=void 0}),e("tool-change",()=>{this.toolChangePendingTimer!==void 0&&(clearTimeout(this.toolChangePendingTimer),this.toolChangePendingTimer=void 0),this.toolChangePending=!1,this.onMemberChange.cancel()}),e("effect-waiter",()=>{const i=this.effectResolve;this.effectResolve=void 0,i==null||i(!1)}),e("view-container",()=>{var i;return(i=this.viewContainerManager)==null?void 0:i.destroy()}),e("worker",()=>{var i;return(i=this.worker)==null?void 0:i.destroy()}),e("collector",()=>{var i;return(i=this.collector)==null?void 0:i.destroy()}),e("cursor",()=>{var i;return(i=this.cursor)==null?void 0:i.destroy()}),e("text-editor",()=>{var i;return(i=this.textEditorManager)==null?void 0:i.destory()}),e("plugin-manager",()=>{var i;return(i=this.pluginManager)==null?void 0:i.destroy()}),e("mini-map",()=>{var i;return(i=this.miniMapManager)==null?void 0:i.destroyMiniMap()}),e("selector-api",()=>{var i;return(i=this.selectorApi)==null?void 0:i.destroy()}),this.selectorApi=void 0,e("logger",()=>{var i,o;return(o=(i=this.logger).destroy)==null?void 0:o.call(i)}),r.length&&this.logger.error(`[Appliance]: destroy completed with disposer errors: ${r.join("; ")}`)}async cleanCurrentScene(r=!0){if(this.isDestroying)return!1;const e=this.viewContainerManager.getPreferredFocusedViewId();if(!this.canQueueViewLifecycleOperation(e))return!1;const t=this.lifecycleGeneration,n=this.viewLifecycleGeneration.get(e)||0,i=()=>t===this.lifecycleGeneration&&(this.viewLifecycleGeneration.get(e)||0)===n&&!!this.viewContainerManager.getView(e);let o=this.pendingClears.get(e);o?o.isClearBusy=!0:(o={isClearBusy:!0},this.pendingClears.set(e,o));const a=this.enqueueViewOperation(e,async()=>{var g,y;const u=this.viewContainerManager.getCurScenePath(e);if(!u||(await this.worker.waitForViewLifecycleIdle(e),!i())||r&&(await this.worker.forceDoneLocalWorks(e,u,"clean-scene"),!i()))return!1;const h=this.worker.now;cr.InternalMsgEmitter.emit("addUndoTicker",h,e,{render:!0,storage:!0,source:$e.Clear}),cr.InternalMsgEmitter.emit("finalizeRequested",h,e,[si],u);const d=(y=(g=this.viewContainerManager.getView(e))==null?void 0:g.displayer)==null?void 0:y.commiter,f=d==null?void 0:d.getPendingTickerSnapshots(u).find(S=>S.tickerId===h);if(await this.worker.clearViewScenePath(e,!1,!0),!i())return!1;if(cr.InternalMsgEmitter.emit("ackRenderUndoTicker",h,e,u),cr.InternalMsgEmitter.emit("ackStorageUndoTicker",h,e,u,si),f&&d){try{await d.waitForUndoStackEnd(f,Tpe)}catch(S){if(!i())return!1;this.logger.error(`[Appliance]: Clear Undo stack-end wait failed; viewId=${e}; scenePath=${u}; tickerId=${h}; error=${S instanceof Error?S.message:String(S)}`);try{d.cancelUndoTicker(h,e,u)}catch(E){this.logger.error(`[Appliance]: forcing Clear Undo stack-end failed; viewId=${e}; scenePath=${u}; tickerId=${h}; error=${E instanceof Error?E.message:String(E)}`)}}if(!i())return!1}return!0}),c=a.then(()=>{},()=>{});this.clearQueueByView.set(e,c);let l=!1;try{const u=await a;return l=!0,u}catch(u){throw u}finally{if(this.clearQueueByView.get(e)===c){this.clearQueueByView.delete(e);const u=this.pendingClears.get(e);this.pendingClears.delete(e),l&&(u!=null&&u.deferredCamera)?this.worker.updateCamera(e,u.deferredCamera):l&&!this.isSceneBusy(e)&&this.worker.recoverAfterSceneChange(e)}}}isClearBusy(r){var e;return((e=this.pendingClears.get(r))==null?void 0:e.isClearBusy)===!0}deferClearCamera(r,e){const t=this.pendingClears.get(r);t!=null&&t.isClearBusy&&(t.deferredCamera=e)}enqueueViewOperation(r,e){const n=(this.viewOperationQueueByView.get(r)||Promise.resolve()).then(()=>e()),i=n.then(()=>{},()=>{});this.viewOperationQueueByView.set(r,i);const o=()=>{this.viewOperationQueueByView.get(r)===i&&this.viewOperationQueueByView.delete(r)};return n.then(o,o),n}async setWritable(r){var t,n;let e;if(!r){if(e=await this.forceDoneLocalWorks("set-readonly"),this.isDestroyed)return e;(t=this.cursor)==null||t.unabled(),this.textEditorManager.checkEmptyTextBlur();const i=this.viewContainerManager.getAllViews();for(const o of i){o!=null&&o.focusScenePath&&(n=this.collector)!=null&&n.hasSelector(o.id,o.focusScenePath)&&this.worker.blurSelector(o.id,o.focusScenePath);const a=o==null?void 0:o.displayer;a&&(a.setActive(!1),await a.stopEventHandler())}}return e}onWritableChange(r){var n;if(this.isDestroying||this.isDestroyed)return;r?(this.worker.abled(),this.scheduleOrphanRepair()):this.worker.unWritable(),((n=this.worker.getCurrentToolsData())==null?void 0:n.toolsType)===q.Text&&this.viewContainerManager.focuedViewId&&(r?this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId):this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId)),this.renderControl.onWritableChange(r),this.viewContainerManager.getAllViews().forEach(i=>{const o=i==null?void 0:i.displayer;o&&(o.bindToolsClass(),r?this.canAcceptLocalMutation(i==null?void 0:i.id)&&!this.isSceneBusy(i==null?void 0:i.id)&&!this.isClearBusy(i==null?void 0:i.id)&&o.setActive(!0):o.setActive(!1))})}async consumePendingSceneChanges(r,e){var t,n;try{for(;this.pendingSceneChanges.get(r)===e;){const i=(t=this.viewContainerManager.getView(r))==null?void 0:t.focusScenePath,o=e.targetScenePath;if(i===o)break;if(!i){if(this.logger.info(`[Appliance]: [scene-path] stage=recover-missing-current viewId=${r} scenePath=${o}`),this.viewContainerManager.setViewScenePath(r,o),((n=this.viewContainerManager.getView(r))==null?void 0:n.focusScenePath)!==o)break;continue}if(await this.applySceneChange(r,i,e),!await Kwe({previousScenePath:i,attemptedScenePath:o,getCurrentScenePath:()=>{var c;return(c=this.viewContainerManager.getView(r))==null?void 0:c.focusScenePath},getTargetScenePath:()=>e.targetScenePath}))break}}finally{const i=this.pendingSceneChanges.get(r)===e,o=i?e.deferredCamera:void 0;e.running=!1,e.isSceneBusy=!1,i&&this.pendingSceneChanges.delete(r);try{i&&o&&(!o.scenePath||o.scenePath===e.targetScenePath)?this.worker.updateCamera(r,o.cameraOpt):i&&this.worker.recoverAfterSceneChange(r)}finally{try{e.releaseMutationFence()}finally{e.waiters.forEach(a=>a()),e.waiters.clear()}}}}isSceneBusy(r){var e;return((e=this.pendingSceneChanges.get(r))==null?void 0:e.isSceneBusy)===!0}deferSceneCamera(r,e){const t=this.pendingSceneChanges.get(r);t!=null&&t.isSceneBusy&&(t.deferredCamera={cameraOpt:e,scenePath:this.viewContainerManager.getCurScenePath(r)})}destroySceneChange(r){this.invalidatePendingViewInit(r);const e=this.pendingSceneChanges.get(r);this.pendingClears.delete(r),this.clearQueueByView.delete(r),this.viewOperationQueueByView.delete(r),e&&(e.isSceneBusy=!1,e.waiters.forEach(t=>t()),e.waiters.clear(),this.pendingSceneChanges.delete(r),e.releaseMutationFence())}async applySceneChange(r,e,t){await this.enqueueViewOperation(r,()=>this.applySceneChangeExclusive(r,e,t))}async applySceneChangeExclusive(r,e,t){var u;const n=this.lifecycleGeneration,i=this.viewLifecycleGeneration.get(r)||0,o=()=>n===this.lifecycleGeneration&&(this.viewLifecycleGeneration.get(r)||0)===i&&!!this.viewContainerManager.getView(r),a=this.viewContainerManager.getView(r);this.textEditorManager.forceDoneLocalText([r]);const c=a==null?void 0:a.displayer;if(c&&c.setActive(!1),await this.worker.forceDoneLocalWorks(r,e,"scene-change"),!o())return;const l=t.targetScenePath;l!==e&&(this.pendingSceneChecks.add(this.getPendingSceneCheckKey(r,e)),await this.reconcileSceneStorageIfPending(r,l),o()&&((u=this.collector)!=null&&u.hasSelector(r,e)&&this.worker.blurSelector(r,e),this.viewContainerManager.setViewScenePath(r,l),this.schedulePendingSceneChecks(r,l)))}getPendingSceneCheckKey(r,e){return JSON.stringify([r,e])}parsePendingSceneCheckKey(r){try{const e=JSON.parse(r);if(Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&typeof e[1]=="string")return[e[0],e[1]]}catch{}}async reconcileSceneStorageIfPending(r,e){const t=this.getPendingSceneCheckKey(r,e);this.pendingSceneChecks.has(t)&&await this.reconcileSceneStorage(r,e)}async reconcileSceneStorage(r,e){var i;if(this.isDestroying||this.isDestroyed)return;const t=this.getPendingSceneCheckKey(r,e),n=(i=this.collector)==null?void 0:i.getStorageData(r,e);if(!n||!this.collector){this.pendingSceneChecks.delete(t);return}for(const[o,a]of Object.entries(n)){if(!a)continue;if(o===Le||this.collector.isOwn(o)&&this.collector.getLocalId(o)===Le){this.collector.updateValue(o,void 0,{viewId:r,scenePath:e,isSync:!0});continue}if(!this.collector.isOwn(o))continue;const l=await Pp(a);if(l.status==="unrecoverable")continue;const u=l.value;if(l.status==="already-stable")continue;const h=this.collector.getLocalId(o);h&&this.collector.dispatch({...u,workId:h,viewId:r,scenePath:e,isSync:!0})}this.pendingSceneChecks.delete(t)}schedulePendingSceneChecks(r,e){const t=this.lifecycleGeneration,n=()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==t)return;const o=this.getPendingSceneCheckKey(r,e);for(const a of[...this.pendingSceneChecks]){if(a===o||!this.pendingSceneChecks.has(a))continue;const c=this.parsePendingSceneCheckKey(a);c?this.reconcileSceneStorage(c[0],c[1]):this.pendingSceneChecks.delete(a)}},i=window.requestIdleCallback;i?i(n,{timeout:500}):window.setTimeout(n,0)}scheduleOrphanRepair(){this.isDestroying||this.isDestroyed||(this.orphanRepairTimer&&clearTimeout(this.orphanRepairTimer),this.orphanRepairTimer=setTimeout(()=>{this.orphanRepairTimer=void 0,this.repairOrphanStorage()},750))}captureOrphanRepairMembers(){var o;const r=this.roomMember.getAllRoomMembers(),e=(o=this.collector)==null?void 0:o.uid;if(!e)return;const t=r.filter(a=>{var c;return typeof a.memberId=="number"&&!!((c=a.payload)!=null&&c.uid)}).map(a=>{var c;return{memberId:a.memberId,uid:(c=a.payload)==null?void 0:c.uid}}).sort((a,c)=>a.memberId-c.memberId),n=t.find(a=>a.uid===e),i=t[0];if(!(!n||!i))return{digest:JSON.stringify(t),leaderMemberId:i.memberId,selfMemberId:n.memberId,selfUid:e,onlineUids:new Set(t.map(a=>a.uid))}}isCurrentOrphanRepairMembers(r){var t;if(this.isDestroying||this.isDestroyed||!((t=this.room)!=null&&t.isWritable)||this.room.phase!==Pi.Connected)return!1;const e=this.captureOrphanRepairMembers();return!!e&&e.digest===r.digest}async repairOrphanStorage(){var n,i,o,a,c,l,u;if(this.isDestroying||this.isDestroyed||!((n=this.room)!=null&&n.isWritable)||this.room.phase!==Pi.Connected||!this.collector)return;const r=this.collector,e=this.captureOrphanRepairMembers();if(!e||e.selfUid!==r.uid||e.selfMemberId!==e.leaderMemberId)return;const t=e.onlineUids;for(const[h,d]of Object.entries(r.storage)){if(this.isDestroying||this.isDestroyed)return;if(!r.isViewPendingSyncDiscarded(h))for(const[f,g]of Object.entries(d||{})){if(r.isViewPendingSyncDiscarded(h))break;for(const[y,S]of Object.entries(g||{})){if(!this.isCurrentOrphanRepairMembers(e))return;if(!S)continue;const E=S.lastOperator||((i=S.opt)==null?void 0:i.uid);if(!E||t.has(E)||!((((o=S.opt)==null?void 0:o.workState)||((a=S.updateNodeOpt)==null?void 0:a.workState))!==de.Done||!!((c=S.op)!=null&&c.length)&&!S.ops))continue;if(r.getLocalId(y)===Le||S.toolsType===q.Selector){r.updateExistingValue(y,void 0,{viewId:h,scenePath:f,isSync:!0});continue}const T=await Pp(S);if(!this.isCurrentOrphanRepairMembers(e))return;if(T.status==="unrecoverable"||T.status==="already-stable")continue;const p=(u=(l=r.storage[h])==null?void 0:l[f])==null?void 0:u[y];!p||p!==S||(T.value.lastOperator=E,r.updateExistingValue(y,T.value,{viewId:h,scenePath:f,isSync:!0,preserveLastOperator:!0}))}}}}requestToolChange(r){var i,o;const e={...(i=this.room)==null?void 0:i.state.memberState,...r},t=this.getToolsKey(e),n=(o=this.worker.getCurrentToolsData())==null?void 0:o.toolsType;if(t===n){this.setToolChangePending(!1,"same-tool",t);return}this.setToolChangePending(!0,"requested",t)}setToolChangePending(r,e="manual",t){this.toolChangePendingTimer!==void 0&&(clearTimeout(this.toolChangePendingTimer),this.toolChangePendingTimer=void 0),this.toolChangePending=r,r&&(this.toolChangePendingTimer=window.setTimeout(()=>{this.toolChangePendingTimer=void 0,this.toolChangePending=!1},500))}get isToolChangePending(){return this.toolChangePending||this.isDestroying}getToolsKey(r){const e=r.currentApplianceName;switch(this.hasSwitchToSelectorEffect=!1,e){case De.text:return r.textCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Text;case De.pencil:return r.useLaserPen?q.LaserPen:q.Pencil;case De.eraser:return q.Eraser;case De.pencilEraser:return this.pluginOptions.extras.pencilEraser.useBitMap===!1?q.PencilEraser:q.BitMapEraser;case De.selector:return q.Selector;case De.clicker:return q.Clicker;case De.hand:return q.Hand;case De.laserPointer:return q.Hand;case De.arrow:return r.arrowCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Arrow;case De.straight:return r.straightCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Straight;case De.ellipse:return r.ellipseCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Ellipse;case De.rectangle:return r.rectangleCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),q.Rectangle;case De.shape:if(r.shapeCompleteToSelector&&(this.hasSwitchToSelectorEffect=!0),r.shapeType===Zt.Pentagram||r.shapeType===Zt.Star)return q.Star;if(r.shapeType===Zt.Polygon||r.shapeType===Zt.Triangle||r.shapeType===Zt.Rhombus)return q.Polygon;if(r.shapeType===Zt.SpeechBalloon)return q.SpeechBalloon;break}return q.Hand}getToolsOpt(r,e){if(r===q.Clicker)return{toolsType:r,toolsOpt:{}};const t={strokeColor:qn(e.strokeColor[0],e.strokeColor[1],e.strokeColor[2],e.strokeOpacity||1),thickness:e.strokeWidth,isOpacity:(e==null?void 0:e.strokeOpacity)&&e.strokeOpacity<1||(e==null?void 0:e.fillOpacity)&&e.fillOpacity<1||(e==null?void 0:e.textOpacity)&&e.textOpacity<1||(e==null?void 0:e.textBgOpacity)&&e.textBgOpacity<1||!1};switch(r){case q.Text:t.fontFamily=window.getComputedStyle(document.documentElement).getPropertyValue("font-family"),t.fontSize=(e==null?void 0:e.textSizeOverride)||(e==null?void 0:e.textSize)||Number(window.getComputedStyle(document.body).fontSize),t.textAlign=(e==null?void 0:e.textAlign)||"left",t.verticalAlign=(e==null?void 0:e.verticalAlign)||"middle",t.fontColor=(e==null?void 0:e.textColor)&&qn(e.textColor[0],e.textColor[1],e.textColor[2],e.textOpacity||1)||t.strokeColor||"rgba(0,0,0,1)",t.fontBgColor=Array.isArray(e==null?void 0:e.textBgColor)&&qn(e.textBgColor[0],e.textBgColor[1],e.textBgColor[2],e.textBgOpacity||1)||"transparent",t.bold=(e==null?void 0:e.bold)&&"bold"||void 0,t.italic=(e==null?void 0:e.italic)&&"italic"||void 0,t.underline=(e==null?void 0:e.underline)||void 0,t.lineThrough=(e==null?void 0:e.lineThrough)||void 0,t.text="",t.strokeColor=void 0;break;case q.Pencil:{const n=(e==null?void 0:e.strokeType)||Be.Normal;t.strokeType=n,t.autoShape=!!(e!=null&&e.autoShape),t.previewLocalOnly=!!(e!=null&&e.autoShape),t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case q.PencilEraser:case q.BitMapEraser:case q.Eraser:if(t.thickness=Math.min(4,Math.max(1,Math.floor(e.pencilEraserSize||1)))-1,r===q.BitMapEraser){const n=t;n.fullLayerDoingMaskMaxInputPoints=Pc(this.pluginOptions.extras.pencilEraser.fullLayerDoingMaskMaxInputPoints),n.removeOnDone=this.pluginOptions.extras.pencilEraser.removeOnDone!==!1,n.maxImageWidth=this.pluginOptions.extras.pencilEraser.maxImageWidth,n.maxImageHeight=this.pluginOptions.extras.pencilEraser.maxImageHeight}break;case q.LaserPen:{t.duration=(e==null?void 0:e.duration)||1,e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?t.strokeType=Be.Normal:t.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=t.strokeType;t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case q.Arrow:case q.Straight:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?t.strokeType=Be.Normal:t.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=t.strokeType;t.strokeType=n,t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n);break}case q.Ellipse:case q.Rectangle:case q.Star:case q.Polygon:case q.SpeechBalloon:{e!=null&&e.strokeType&&(e==null?void 0:e.strokeType)===Be.Stroke?t.strokeType=Be.Normal:t.strokeType=(e==null?void 0:e.strokeType)||Be.Normal;const n=t.strokeType;t.lineCap=this.getLineCap(n),t.lineDash=this.getLineDash(n),r===q.Star&&(e.shapeType===Zt.Pentagram?(t.vertices=10,t.innerVerticeStep=2,t.innerRatio=.4):e!=null&&e.vertices&&(e!=null&&e.innerVerticeStep)&&(e!=null&&e.innerRatio)&&(t.vertices=e.vertices,t.innerVerticeStep=e.innerVerticeStep,t.innerRatio=e.innerRatio)),r===q.Polygon&&(e.shapeType===Zt.Triangle?t.vertices=3:e.shapeType===Zt.Rhombus?t.vertices=4:e.vertices&&(t.vertices=e.vertices)),t.fillColor=(e==null?void 0:e.fillColor)&&qn(e.fillColor[0],e.fillColor[1],e.fillColor[2],e==null?void 0:e.fillOpacity)||"transparent",r===q.SpeechBalloon&&(t.placement=e.placement||"bottomLeft");break}}return{toolsType:r,toolsOpt:t}}getLineCap(r){switch(r){case Be.Normal:return this.pluginOptions.extras.normalStroke.lineCap||He.normalStroke.lineCap;case Be.Dotted:return this.pluginOptions.extras.dottedStroke.lineCap||He.dottedStroke.lineCap;case Be.LongDotted:return this.pluginOptions.extras.longDottedStroke.lineCap||He.longDottedStroke.lineCap;default:return}}getLineDash(r){switch(r){case Be.Normal:return;case Be.Dotted:{const{segment:e,gap:t}=this.pluginOptions.extras.dottedStroke||He.dottedStroke;return[e,t]}case Be.LongDotted:{const{segment:e,gap:t}=this.pluginOptions.extras.longDottedStroke||He.longDottedStroke;return[e,t]}default:return}}effectViewContainer(r){var t,n,i,o,a;if(this.disableDeviceInputs===!0)this.room.disableDeviceInputs=!0,(t=this.worker)==null||t.unWritable(),(n=this.cursor)==null||n.unabled();else switch(r!==q.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.unActiveTextEditor(this.viewContainerManager.focuedViewId),r){case q.Text:case q.Pencil:case q.LaserPen:case q.Arrow:case q.Straight:case q.Rectangle:case q.Ellipse:case q.Star:case q.Polygon:case q.SpeechBalloon:case q.Triangle:case q.Rhombus:case q.Eraser:case q.PencilEraser:case q.BitMapEraser:case q.Selector:case q.Clicker:this.room.disableDeviceInputs=!0,(i=this.worker)==null||i.abled(),r===q.Text&&this.viewContainerManager.focuedViewId&&this.viewContainerManager.activeTextEditor(this.viewContainerManager.focuedViewId);break;default:this.room.disableDeviceInputs=!1,(o=this.worker)==null||o.unWritable(),(a=this.cursor)==null||a.unabled();break}const e=this.lifecycleGeneration;setTimeout(()=>{if(this.isDestroying||this.isDestroyed||this.lifecycleGeneration!==e)return;this.viewContainerManager.getAllViews().forEach(l=>{l!=null&&l.displayer&&l.displayer.bindToolsClass()})},0)}async getBoundingRect(r){var t,n,i,o,a;const e=await((t=this.worker)==null?void 0:t.getBoundingRect(r));if(e){const c=((i=(n=this.viewContainerManager.mainView)==null?void 0:n.viewData)==null?void 0:i.convertToPointInWorld({x:e.x,y:e.y}))||{x:e.x,y:e.y},l=((a=(o=this.viewContainerManager.mainView)==null?void 0:o.viewData)==null?void 0:a.camera.scale)||1;return{width:Math.floor(e.w/l)+1,height:Math.floor(e.h/l)+1,originX:c.x,originY:c.y}}}async screenshotToCanvas(r,e,t,n,i,o,a){const c=await this.worker.getSnapshot(e,t,n,i);c&&c.forEach(l=>{if(l)try{r.drawImage(l,o||0,a||0)}catch(u){console.error("[screenshotToCanvas] Failed to draw ImageBitmap:",u)}l instanceof ImageBitmap?l.close():l instanceof HTMLImageElement&&l.remove()})}async scenePreview(r,e){var o,a,c,l;const t=(o=this.collector)==null?void 0:o.getViewIdBySecenPath(r);if(!t)return;const n=this.viewContainerManager.getView(t);if(!n||!((a=n.cameraOpt)!=null&&a.width)||!((c=n.cameraOpt)!=null&&c.height))return;const i=await((l=this.worker)==null?void 0:l.getSnapshot(r));if(i&&this.worker){const u=document.createElement("canvas"),h=u.getContext("2d"),{width:d,height:f}=n.cameraOpt;u.width=d,u.height=f,h&&(i.forEach(g=>{g&&(h.drawImage(g,0,0),g instanceof ImageBitmap?g.close():g instanceof HTMLImageElement&&g.remove())}),e.crossOrigin="anonymous",e.src=u.toDataURL(),e.onload=()=>{u.remove()},e.onerror=()=>{u.remove(),e.remove()})}}switchToText(){var r;(r=this.room)==null||r.setMemberState({currentApplianceName:De.text})}switchToSelector(){var r;(r=this.room)==null||r.setMemberState({currentApplianceName:De.selector})}async runEffectWork(r){if(this.hasSwitchToSelectorEffect){const e=await new Promise(t=>{this.effectResolve=t;try{this.switchToSelector()}catch(n){this.effectResolve=void 0,this.logLifecycleError(`[Appliance]: switchToSelector effect failed: ${n instanceof Error?n.message:String(n)}`),t(!1)}});this.effectResolve=void 0,e&&r&&r()}}setSnapshootData(){var r;this.room&&(this.snapshootStateMap=new Map,this.snapshootStateMap.set("memberState",(r=this.room)==null?void 0:r.state.memberState))}getSnapshootData(r){var e;return(e=this.snapshootStateMap)==null?void 0:e.get(r)}clearSnapshootData(){var r;(r=this.snapshootStateMap)==null||r.clear(),this.snapshootStateMap=void 0}useBitMapEraser(r){this.pluginOptions.extras.pencilEraser.useBitMap=r}consoleWorkerInfo(){var r;this.logger.info(`[Appliance]: [render-runtime] buildMarker=${this.renderRuntimeBuildMarker}`),(r=this.worker)==null||r.consoleWorkerInfo()}filterRenderByUid(r,e,t=!0){var i;this.viewContainerManager.getView(r)&&((i=this.renderControl)==null||i.publishRender({viewId:r,option:e,isSync:t}))}cancelFilterRender(r,e=!0){var t;(t=this.renderControl)==null||t.publishRender({viewId:r,isSync:e})}async createMiniMap(r,e){var n,i,o;if(this.isUseSimple)throw new Error("simple mode not support createMiniMap");const t=await((n=this.miniMapManager)==null?void 0:n.getMiniMapCamera(r));if(t&&await((i=this.miniMapManager)==null?void 0:i.createMiniMap(r,e,t))){const c=(o=this.miniMapManager)==null?void 0:o.getMiniMapCanvas(r);if(c){const l=c.getContext("2d");if(l){const u=this.viewContainerManager.getView(r);u!=null&&u.focusScenePath&&this.screenshotToCanvas(l,u.focusScenePath,t.width,t.height,t)}}}}async destroyMiniMap(r){var e;(e=this.miniMapManager)==null||e.destroyMiniMap(r)}insertIconify(r,e){var n;if(this.viewContainerManager.getView(r)&&this.room){const i=this.room.state.memberState,o=qn(i.strokeColor[0],i.strokeColor[1],i.strokeColor[2],i.strokeOpacity||1);(n=this.worker)==null||n.insertIconify(r,{...e,strokeColor:o})}}insertBackgroundSVG(r,e){var t;if(!this.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");(t=this.worker)==null||t.insertBackgroundSVG(r,e)}reloadBackgroundImage(r){if(r.source!=="appliance")return{accepted:!1,reloadedCount:0,reason:"resourceNotFound"};const e=this.viewContainerManager.getView(r.viewId);return e?!e.focusScenePath||r.scenePath!==void 0&&e.focusScenePath!==r.scenePath?{accepted:!1,reloadedCount:0,reason:"sceneNotFocused"}:this.backgroundImageLoadCoordinator.reload({...r,scenePath:r.scenePath??e.focusScenePath}):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}}async insertBackgroundMarkMap(r,e){var t;if(!this.isUseBackgroundThread)throw new Error("useBackgroundThread of pluginOptions should be true");return await((t=this.worker)==null?void 0:t.insertBackgroundMarkMap(r,e))}updateBackgroundMarkMap(r,e,t){var i;const n=this.viewContainerManager.getView(r);if(n&&this.collector&&this.collector.hasTargetDataByViewId(r,e)){const{data:o,scenePath:a}=this.collector.getTargetDataByViewId(r,e);if(!a)throw new Error("updateBackgroundMarkMap scenePath is not exist");const c=n.focusScenePath;if(c&&c!==a)throw new Error("updateBackgroundMarkMap scenePath is not the focus scene path");if(o&&a)(i=this.worker)==null||i.updateBackgroundMarkMap(r,e,t);else throw new Error("updateBackgroundMarkMap data or scenePath is not exist")}}usePlugin(r){var e;return(e=this.pluginManager)==null?void 0:e.use(r)}async stopDraw(r){var t;const e=this.viewContainerManager.getView(r);e&&await((t=e.displayer)==null?void 0:t.stopEventHandler())}async setViewLocalScenePathChange(r,e){this.viewContainerManager.getView(r)&&await this.onSceneChange(e,r)}};x(cr,"InternalMsgEmitter",new tu),x(cr,"PublicMsgEmitter",new tu);let tt=cr;var qu=(s=>(s.Undo="undo",s.Redo="redo",s))(qu||{});const Xe=class Xe{createProxy(r,e,t){const n=new Proxy(r,{get(i,o,a){if(typeof o=="string"&&/^\d+$/.test(o))return Reflect.get(i,o,a);const c=Xe.interceptors.hasOwnProperty(o)?Xe.interceptors:i,l=Reflect.get(c,o,a);return typeof l=="function"&&c===Xe.interceptors?l.bind(n):l},set(i,o,a,c){const l=Xe.proxyCallbacks.get(c),u=(l==null?void 0:l.arrayType)||"undo";if(o==="length"){const h=i.length,d=[];if(a<h)for(let g=a;g<h;g++)d.push(i[g]);const f=Reflect.set(i,o,a,c);if(l!=null&&l.callback)for(let g=0;g<d.length;g++)l.callback({operation:"delete",index:a+g,oldValue:d[g],arrayType:u});return f}return typeof o=="string"&&/^\d+$/.test(o),Reflect.set(i,o,a,c)},deleteProperty(i,o){const a=Xe.proxyCallbacks.get(n),c=(a==null?void 0:a.arrayType)||"undo";if(typeof o=="string"&&/^\d+$/.test(o)){const l=parseInt(o,10),u=i[l],h=Reflect.deleteProperty(i,o);return a!=null&&a.callback&&u!==void 0&&a.callback({operation:"delete",index:l,oldValue:u,arrayType:c}),h}return Reflect.deleteProperty(i,o)}});return Xe.proxyToRaw.set(n,r),Xe.proxyCallbacks.set(n,{callback:e,arrayType:t}),n}};x(Xe,"proxyToRaw",new WeakMap),x(Xe,"proxyCallbacks",new WeakMap),x(Xe,"interceptors",{entries(...r){return Xe.proxyToRaw.get(this).entries(...r)},forEach(...r){return Xe.proxyToRaw.get(this).forEach(...r)},map(...r){return Xe.proxyToRaw.get(this).map(...r)},filter(...r){return Xe.proxyToRaw.get(this).filter(...r)},find(...r){return Xe.proxyToRaw.get(this).find(...r)},findIndex(...r){return Xe.proxyToRaw.get(this).findIndex(...r)},includes(...r){return Xe.proxyToRaw.get(this).includes(...r)},indexOf(...r){return Xe.proxyToRaw.get(this).indexOf(...r)},slice(...r){return Xe.proxyToRaw.get(this).slice(...r)},concat(...r){return Xe.proxyToRaw.get(this).concat(...r)},push(...r){const e=Xe.proxyToRaw.get(this),t=this,n=Xe.proxyCallbacks.get(t),i=(n==null?void 0:n.arrayType)||"undo",o=e.length,a=e.push(...r);if(n!=null&&n.callback)for(let c=o;c<e.length;c++)n.callback({operation:"add",index:c,newValue:e[c],arrayType:i});return a},customPush(...r){return Xe.proxyToRaw.get(this).push(...r)},pop(){const r=Xe.proxyToRaw.get(this),e=this,t=Xe.proxyCallbacks.get(e),n=(t==null?void 0:t.arrayType)||"undo",i=r.length,o=r[i-1],a=r.pop();return t!=null&&t.callback&&i>0&&t.callback({operation:"delete",index:i-1,oldValue:o,arrayType:n}),a},shift(){const r=Xe.proxyToRaw.get(this),e=this,t=Xe.proxyCallbacks.get(e),n=(t==null?void 0:t.arrayType)||"undo",i=r[0],o=r.shift();return t!=null&&t.callback&&r.length>0&&t.callback({operation:"delete",index:0,oldValue:i,arrayType:n}),o},unshift(...r){const e=Xe.proxyToRaw.get(this),t=this,n=Xe.proxyCallbacks.get(t),i=(n==null?void 0:n.arrayType)||"undo",o=e.unshift(...r);if(n!=null&&n.callback)for(let a=0;a<r.length;a++)n.callback({operation:"add",index:a,newValue:e[a],arrayType:i});return o},splice(r,e,...t){const n=Xe.proxyToRaw.get(this),i=this,o=Xe.proxyCallbacks.get(i),a=(o==null?void 0:o.arrayType)||"undo",c=e??n.length-r,l=n.slice(r,r+c),u=n.splice(r,c,...t);if(o!=null&&o.callback){for(let h=0;h<l.length;h++)o.callback({operation:"delete",index:r+h,oldValue:l[h],arrayType:a});for(let h=0;h<t.length;h++)o.callback({operation:"add",index:r+h,newValue:n[r+h],arrayType:a})}return u},customSplice(r,e,...t){const n=Xe.proxyToRaw.get(this),i=e??n.length-r;return n.splice(r,i,...t)},get length(){return Xe.proxyToRaw.get(this).length},set length(r){const e=Xe.proxyToRaw.get(this),t=this,n=Xe.proxyCallbacks.get(t),i=(n==null?void 0:n.arrayType)||"undo",o=e.length,a=[];if(r<o)for(let c=r;c<o;c++)a.push(e[c]);if(e.length=r,n!=null&&n.callback)for(let c=0;c<a.length;c++)n.callback({operation:"delete",index:r+c,oldValue:a[c],arrayType:i})}});let Zu=Xe;const Xr=class Xr{constructor(r){x(this,"emitter",new tu);x(this,"undoStack");x(this,"redoStack");x(this,"worker");x(this,"control");x(this,"room");x(this,"viewId");x(this,"enableGlobal");x(this,"isTicking");x(this,"_undoTickerId");x(this,"scenePath");x(this,"tickStartStorerCache");x(this,"excludeIds",new Set);x(this,"pendingState",new Map);x(this,"tickerEndWaiters",new Map);x(this,"undoLifecycleListeners",new Set);x(this,"pendingWaitCancels",new Set);x(this,"destroyed",!1);x(this,"lifecycleCache",new Map);x(this,"stackRevision",0);x(this,"tickStartCaches",new Map);x(this,"tickStartExcludeIds",new Map);x(this,"timingFix");x(this,"ackTimeout");x(this,"isGlobalStackTransaction",!1);x(this,"pendingGlobalServiceData");x(this,"pendingArrayChanges",[]);x(this,"onChangeScene",ye.debounce(()=>{if(this.destroyed)return;const r=this.control.viewContainerManager.getCurScenePath(this.viewId);if(r){const e=this.undoStack.filter(n=>n.scenePath===r).length,t=this.redoStack.filter(n=>n.scenePath===r).length;this.emitUndoStepsUpdate(e),this.emitRedoStepsUpdate(t)}},Xr.waitTime));const{control:e,internalMsgEmitter:t,viewId:n,enableGlobal:i}=r;this.control=e,this.emitter=t;const o=this.control.pluginOptions.extras.undoRedo;Xr.MaxStackLength=o.maxStackLength||He.undoRedo.maxStackLength,this.timingFix=o.timingFix??He.undoRedo.timingFix,this.ackTimeout=o.ackTimeout||He.undoRedo.ackTimeout;const a=new Zu,c=[],l=[];this.undoStack=a.createProxy(c,u=>{this.control.renderControl.isWritable&&this.handleArrayChange(u,wt.syncUndoStack)},qu.Undo),this.redoStack=a.createProxy(l,u=>{this.control.renderControl.isWritable&&this.handleArrayChange(u,wt.syncRedoStack)},qu.Redo),this.room=e.room,this.worker=e.worker,this.isTicking=!1,this.viewId=n,this.enableGlobal=i}reportStackLength(r,e=this.undoStack.length,t=this.redoStack.length){var n,i,o;(o=(i=(n=this.room)==null?void 0:n.logger)==null?void 0:i.info)==null||o.call(i,`[Appliance]: [undo-stack] ${r} viewId=${this.viewId} undoLength=${e} redoLength=${t}`)}lifecycleKey(r){return`${r.viewId}|${r.scenePath}|${r.tickerId}|${r.transactionId}`}getIdentity(r,e){return{viewId:e.viewId,scenePath:e.scenePath,tickerId:r,transactionId:e.transactionId}}emitUndoLifecycle(r){if(this.destroyed)return;const e=this.lifecycleKey(r);for(this.lifecycleCache.set(e,r);this.lifecycleCache.size>100;){const t=this.lifecycleCache.keys().next().value;if(t===void 0)break;this.lifecycleCache.delete(t)}this.undoLifecycleListeners.forEach(t=>t(r))}onUndoLifecycle(r){return this.destroyed?()=>{}:(this.undoLifecycleListeners.add(r),()=>this.undoLifecycleListeners.delete(r))}getPendingTickerSnapshots(r){const e=[];return this.pendingState.forEach((t,n)=>{t.scenePath===r&&e.push({...this.getIdentity(n,t),source:t.source,startedAt:t.startedAt,barrierEpoch:t.barrierEpoch,phase:t.phase,ownerPromiseActive:t.ownerPromiseActive,finalizeRequested:t.finalizeRequested,scopeMode:t.scopeMode})}),e}waitForUndoStackEnd(r,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const t=this.lifecycleCache.get(this.lifecycleKey(r));return(t==null?void 0:t.phase)==="stack-end"?Promise.resolve(t):(t==null?void 0:t.phase)==="failed"?Promise.reject(t):new Promise((n,i)=>{let o,a=!1,c=!1,l=()=>{};const u=()=>{o!==void 0&&clearTimeout(o),l(),this.pendingWaitCancels.delete(h)},h=()=>{c||(c=!0,u(),i(new Error(`undo view destroyed: ${this.viewId}`)))},d=y=>{if(a)return;a=!0;const S=Math.max(0,y+e-Date.now());o=setTimeout(()=>{c=!0,u(),i(new Error(`undo stack end timeout: ${this.lifecycleKey(r)}`))},S)},f=()=>{const y=this.pendingState.get(r.tickerId);(y==null?void 0:y.transactionId)===r.transactionId&&y.finalizedAt!==void 0&&d(y.finalizedAt)},g=y=>{if(this.lifecycleKey(y)===this.lifecycleKey(r)){if(y.phase==="finalize-requested"){d(y.finalizedAt);return}if(y.phase==="data-done"){f();return}c=!0,u(),y.phase==="stack-end"?n(y):i(y)}};l=this.onUndoLifecycle(g),this.pendingWaitCancels.add(h),(t==null?void 0:t.phase)==="finalize-requested"?d(t.finalizedAt):(t==null?void 0:t.phase)==="data-done"&&f()})}waitForDataDone(r,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const t=this.lifecycleCache.get(this.lifecycleKey(r));return(t==null?void 0:t.phase)==="data-done"||(t==null?void 0:t.phase)==="stack-end"?Promise.resolve():(t==null?void 0:t.phase)==="failed"?Promise.reject(t):new Promise((n,i)=>{let o=!1,a,c=()=>{};const l=()=>{a!==void 0&&clearTimeout(a),c(),this.pendingWaitCancels.delete(u)},u=()=>{o||(o=!0,l(),i(new Error(`undo view destroyed: ${this.viewId}`)))},h=d=>{this.lifecycleKey(d)===this.lifecycleKey(r)&&d.phase!=="finalize-requested"&&(o=!0,l(),d.phase==="data-done"||d.phase==="stack-end"?n():i(d))};c=this.onUndoLifecycle(h),this.pendingWaitCancels.add(u),e!==void 0&&e>0&&(a=setTimeout(()=>{o||(o=!0,l(),i(new Error(`undo data done timeout: ${this.lifecycleKey(r)}`)))},e))})}waitForFinalizeRequested(r,e){if(this.destroyed)return Promise.reject(new Error(`undo view destroyed: ${this.viewId}`));const t=this.lifecycleCache.get(this.lifecycleKey(r));return(t==null?void 0:t.phase)==="finalize-requested"||(t==null?void 0:t.phase)==="data-done"||(t==null?void 0:t.phase)==="stack-end"?Promise.resolve():(t==null?void 0:t.phase)==="failed"?Promise.reject(t):new Promise((n,i)=>{let o,a=!1,c=()=>{};const l=()=>{o!==void 0&&clearTimeout(o),c(),this.pendingWaitCancels.delete(u)},u=()=>{a||(a=!0,l(),i(new Error(`undo view destroyed: ${this.viewId}`)))},h=d=>{this.lifecycleKey(d)===this.lifecycleKey(r)&&(a=!0,l(),d.phase==="finalize-requested"||d.phase==="data-done"||d.phase==="stack-end"?n():i(d))};c=this.onUndoLifecycle(h),this.pendingWaitCancels.add(u),o=setTimeout(()=>{a=!0,l(),i(new Error(`undo finalize timeout: ${this.lifecycleKey(r)}`))},e)})}emitUndoStepsUpdate(r){this.emitter.emitAsync("onCanUndoStepsUpdate",r,this.viewId)}emitRedoStepsUpdate(r){this.emitter.emitAsync("onCanRedoStepsUpdate",r,this.viewId)}beginGlobalStackTransaction(){this.enableGlobal&&(this.isGlobalStackTransaction=!0)}flushPendingArrayChanges(){if(!this.enableGlobal||!this.pendingArrayChanges.length)return;const r=this.pendingArrayChanges.splice(0);for(const e of r)this.handleArrayChange(e.params,e.operation)}endGlobalStackTransaction(){if(!this.enableGlobal)return;const r=this.pendingGlobalServiceData;this.isGlobalStackTransaction=!1,this.pendingGlobalServiceData=void 0,this.flushPendingArrayChanges(),r&&this.pullServiceData(r)}ackRender(r,e,t){if(!this.timingFix){this.undoTickerEnd(r,e);return}const n=this.pendingState.get(r);!n||n.scenePath!==e||(n.gotRender=!0,this.mergeMeta(n,t),n.finalizeRequested&&(this.armAckTimeout(r,n),this.tryEnd(r)))}ackStorage(r,e,t,n){if(!this.timingFix)return;const i=this.pendingState.get(r);!i||i.scenePath!==e||(t&&i.ackedStorageKeys.add(t),dye(i.scopeKeys,t)&&i.finalizeRequested&&(i.scopeKeys.size?i.gotStorage=[...i.scopeKeys].every(a=>i.ackedStorageKeys.has(a)):i.gotStorage=!0),this.mergeMeta(i,n),!i.finalizeRequested)||(this.armAckTimeout(r,i),this.tryEnd(r))}collectExpectedWorkIds(r,e,t){const n=this.pendingState.get(r);if(!n||n.scenePath!==e||!t.length)return;Wl(this.collector,this.viewId,e,t).forEach(o=>n.collectedScopeKeys.add(o)),n.scopeMode==="dynamic"&&n.finalizeRequested&&(n.scopeKeys.clear(),n.collectedScopeKeys.forEach(o=>n.scopeKeys.add(o)),n.expectedStorage&&n.scopeKeys.size?n.gotStorage=[...n.scopeKeys].every(o=>n.ackedStorageKeys.has(o)):n.expectedStorage&&!n.scopeKeys.size&&(n.gotStorage=!1),n.ackTimer&&clearTimeout(n.ackTimer),n.ackTimer=void 0,this.armAckTimeout(r,n),this.tryEnd(r))}reopenStorageAck(r,e,t){const n=this.pendingState.get(r);if(!n||n.scenePath!==e||!t.length)return;const i=Wl(this.collector,this.viewId,e,t);i.size&&(i.forEach(o=>n.ackedStorageKeys.delete(o)),n.finalizeRequested&&(n.expectedStorage&&n.scopeKeys.size?n.gotStorage=[...n.scopeKeys].every(o=>n.ackedStorageKeys.has(o)):n.expectedStorage&&!n.scopeKeys.size&&(n.gotStorage=n.scopeMode==="static"),n.ackTimer&&clearTimeout(n.ackTimer),n.ackTimer=void 0,this.armAckTimeout(r,n)))}finalizeRequested(r,e,t){const n=this.pendingState.get(r);if(!n||n.scenePath!==e)return;const i=n.finalizeRequested,o=Wl(this.collector,this.viewId,e,t);n.scopeMode==="dynamic"?(o.forEach(a=>n.collectedScopeKeys.add(a)),n.scopeKeys.clear(),n.collectedScopeKeys.forEach(a=>n.scopeKeys.add(a))):o.forEach(a=>n.scopeKeys.add(a)),n.finalizeRequested=!0,n.finalizedAt??(n.finalizedAt=Date.now()),n.phase="finalizing",n.gotStorage=hye(n),this.armAckTimeout(r,n),i||this.emitUndoLifecycle({...this.getIdentity(r,n),phase:"finalize-requested",source:n.source,scopeMode:n.scopeMode,finalizedAt:n.finalizedAt}),this.tryEnd(r)}mergeMeta(r,e){cye(r,e)}armAckTimeout(r,e){e.finalizeRequested&&uye(e)&&(e.ackTimer=setTimeout(()=>{this.forceFlushPending(r)},this.ackTimeout))}tryEnd(r){const e=this.pendingState.get(r);if(!e||!lye(e))return;const t=e.meta,n=e.phase==="failed";if(n||this.emitUndoLifecycle({...this.getIdentity(r,e),phase:"data-done",source:e.source,completedAt:Date.now()}),this.undoTickerEndSync(r,e.viewId,e.scenePath,!0),!n){const i=this.undoStack.some(o=>o.id===`${r}-${this.uid}`);e.phase="completed",this.stackRevision++,this.emitUndoLifecycle({...this.getIdentity(r,e),phase:"stack-end",source:e.source,outcome:i?"committed":"no-change",undoItemCreated:i,stackRevision:this.stackRevision})}t.copyAck&&t.emitEventType&&t.requestId&&this.emitter.emit("undoAckApplied",{viewId:e.viewId,scenePath:e.scenePath,requestId:t.requestId,emitEventType:t.emitEventType}),t.isWritable&&this.worker.abled()}forceFlushPending(r){const e=this.pendingState.get(r);if(!e)return;e.phase="failed";const t={...this.getIdentity(r,e),phase:"failed",source:e.source,reason:"timeout",missingRender:e.expectedRender&&!e.gotRender,missingStorageIds:[...e.scopeKeys].filter(n=>!e.ackedStorageKeys.has(n))};this.emitUndoLifecycle(t),e.gotRender=e.expectedRender,e.gotStorage=e.expectedStorage,this.tryEnd(r)}clearPendingState(r){const e=this.pendingState.get(r);e&&(e.ackTimer&&clearTimeout(e.ackTimer),this.pendingState.delete(r)),this.tickStartCaches.delete(r),this.tickStartExcludeIds.delete(r);const t=this.tickerEndWaiters.get(r);t&&(this.tickerEndWaiters.delete(r),t.forEach(n=>n()))}waitForTickerEnd(r,e){return!this.pendingState.has(r)&&this.undoTickerId!==r?Promise.resolve():new Promise(t=>{let n;const i=()=>{n!==void 0&&clearTimeout(n);const a=this.tickerEndWaiters.get(r);a==null||a.delete(i),(a==null?void 0:a.size)===0&&this.tickerEndWaiters.delete(r),t()},o=this.tickerEndWaiters.get(r)||new Set;o.add(i),this.tickerEndWaiters.set(r,o),e!==void 0&&(n=setTimeout(i,e))})}disposeViewTickers(r="view-destroyed"){var o,a,c;if(this.destroyed)return;const e=this.undoStack.length,t=this.redoStack.length,n=this.pendingState.size,i=this.isTicking;this.onChangeScene.cancel();for(const l of[...this.pendingWaitCancels])l();this.pendingWaitCancels.clear();for(const l of[...this.pendingState.keys()])this.clearPendingState(l);this.tickerEndWaiters.forEach(l=>{l.forEach(u=>u())}),this.tickerEndWaiters.clear(),this.undoLifecycleListeners.clear(),this.lifecycleCache.clear(),this.tickStartCaches.clear(),this.tickStartExcludeIds.clear(),this.excludeIds.clear(),this.pendingArrayChanges.length=0,this.pendingGlobalServiceData=void 0,this.isGlobalStackTransaction=!1,this.isTicking=!1,this._undoTickerId=void 0,this.scenePath=void 0,this.tickStartStorerCache=void 0,this.destroyed=!0,this.undoStack.customSplice(0),this.redoStack.customSplice(0),(e>0||t>0||n>0||i)&&((c=(a=(o=this.room)==null?void 0:o.logger)==null?void 0:a.info)==null||c.call(a,`[Appliance]: [undo-stack] undo-disposed:${r} viewId=${this.viewId} discardedUndoLength=${e} discardedRedoLength=${t} pendingTickerCount=${n} wasTicking=${i}`))}cancelUndoTicker(r,e,t){const n=this.pendingState.has(r),i=this.undoTickerId===r&&this.viewId===e&&this.scenePath===t;if(!n&&!i)return;const o=this.pendingState.get(r);i&&(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()),this.clearPendingState(r),o&&(o.phase="cancelled",this.stackRevision++,this.emitUndoLifecycle({...this.getIdentity(r,o),phase:"stack-end",source:o.source,outcome:"no-change",undoItemCreated:!1,stackRevision:this.stackRevision}))}cancelViewUndoTicker(){const r=this.undoTickerId,e=this.scenePath;r===void 0||!e||this.cancelUndoTicker(r,this.viewId,e)}getStartCache(r){return this.tickStartCaches.get(r)||this.tickStartStorerCache}getExcludeIds(r){return this.tickStartExcludeIds.get(r)||this.excludeIds}resetLegacyTicker(){this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()}handleArrayChange(r,e){if(!this.collector||!this.enableGlobal)return;if(this.isGlobalStackTransaction){this.pendingArrayChanges.push({operation:e,params:{...r}});return}const{operation:t,oldValue:n,newValue:i}=r;let o,a;t==="delete"&&n?(o=n,a=n.id):t==="add"&&i&&(o=i,a=i.id),o&&a&&this.collector.dispatchUndoTicker({operation:e,syncType:t,viewId:this.viewId,undoTickerId:a,data:o})}get collector(){return this.control.collector}get undoTickerId(){return this._undoTickerId}get tmpTickStartStorerCache(){return this.tickStartStorerCache}get uid(){var r;return((r=this.control.collector)==null?void 0:r.uid)||""}addExcludeIds(r){const e=this.undoTickerId!==void 0?this.pendingState.get(this.undoTickerId):void 0;if(!(this.timingFix&&(e!=null&&e.scopeKeys.size))){if(this.timingFix&&this.undoTickerId!==void 0){const t=this.tickStartExcludeIds.get(this.undoTickerId);if(t)for(const n of r)t.add(n);return}if(this.isTicking)for(const t of r)this.excludeIds.add(t)}}undoTickerStart(r,e,t){var n,i,o;if(!this.destroyed){if(!this.timingFix){this.legacyUndoTickerStart(r,e);return}if(!t)throw new Error("[appliance-plugin] addUndoTicker expectedAcks is required");if(!t.source)throw new Error("[appliance-plugin] addUndoTicker source is required");if(this.collector&&(this.undoTickerId!==r||this.scenePath!==e)){if(this.undoTickerId&&this.viewId&&this.scenePath){const h=this.undoTickerId;this.pendingState.get(h)||this.undoTickerEndSync(h,this.viewId,this.scenePath)}this.isTicking=!0;const a=this.collector.transformKey(Le);this.excludeIds.add(a),this._undoTickerId=r,this.scenePath=e;const c=((n=this.collector)==null?void 0:n.storage[this.viewId])&&((i=this.collector)==null?void 0:i.storage[this.viewId][this.scenePath])||{},l=new Map(Object.entries(ye.cloneDeep(c))),u=new Set([a]);this.tickStartStorerCache=l,this.tickStartCaches.set(r,l),this.tickStartExcludeIds.set(r,u),this.pendingState.set(r,aye({tickerId:r,viewId:this.viewId,scenePath:e,expectedAcks:t})),(o=t.workIds)!=null&&o.length&&this.finalizeRequested(r,e,t.workIds.map(String))}}}legacyUndoTickerStart(r,e){var t,n;if(this.collector&&(this.undoTickerId!==r||this.scenePath!==e)){this.undoTickerId&&this.viewId&&this.scenePath&&this.undoTickerEndSync(this.undoTickerId,this.viewId,this.scenePath),this.isTicking=!0;const i=this.collector.transformKey(Le);this.excludeIds.add(i),this._undoTickerId=r,this.scenePath=e;const o=((t=this.collector)==null?void 0:t.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][this.scenePath])||{};this.tickStartStorerCache=new Map(Object.entries(ye.cloneDeep(o)))}}undoTickerEnd(r,e,t){if(this.timingFix){this.forceFlushPending(r);return}this.undoTickerId&&r===this.undoTickerId&&e===this.scenePath?this.undoTickerEndSync(r,this.viewId,e,!0,t):this.resetLegacyTicker()}undoTickerEndSync(r,e,t,n=!0,i){var c,l;if(i&&i.length)for(const u of i)this.excludeIds.delete(u);const o=r===this.undoTickerId&&e===this.viewId&&t===this.scenePath,a=this.pendingState.has(r)&&e===this.viewId&&!!this.getStartCache(r);if((o||a)&&this.getStartCache(r)){const u=((c=this.collector)==null?void 0:c.storage[e])&&((l=this.collector)==null?void 0:l.storage[e][t])||{},h=this.pendingState.get(r),d=this.diffFun(this.getStartCache(r),new Map(Object.entries(u)),!0,this.getExcludeIds(r),h==null?void 0:h.scopeKeys);d.size&&(this.undoStack.push({id:`${r}-${this.uid}`,data:ye.cloneDeep(d),scenePath:t}),this.undoStack.length>Xr.MaxStackLength&&this.undoStack.shift(),n&&this.emitUndoStepsUpdate(this.undoStack.length),this.redoStack.length&&(this.redoStack.length=0,n&&this.emitRedoStepsUpdate(this.redoStack.length))),o&&(this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear()),this.clearPendingState(r),this.reportStackLength("undo-ticker-end")}}transformToUndoStackItem(r){const e=[];for(const[t,n]of Object.entries(r)){if(!(n!=null&&n.data))continue;const i=new Set;for(const[o,a]of Object.entries(n.data))i.add({key:o,dataType:a.dataType,data:a.data});e.push({id:t,scenePath:n.scenePath,data:i})}return e}pullServiceData(r){if(this.enableGlobal&&this.isGlobalStackTransaction){this.pendingGlobalServiceData=r;return}if(r){const{undoStack:e,redoStack:t}=r;if(e){const n=this.transformToUndoStackItem(e);for(let i=this.undoStack.length-1;i>=0;i--){const o=this.undoStack[i];n.findIndex(c=>c.id===o.id)===-1&&this.undoStack.customSplice(i,1)}for(const i of n){const o=this.undoStack.findIndex(a=>a.id===i.id);o!==-1?this.undoStack[o]=i:this.undoStack.customPush(i)}this.undoStack.sort((i,o)=>{const a=parseInt(i.id.split("-")[0]),c=parseInt(o.id.split("-")[0]);return a-c}),this.emitUndoStepsUpdate(this.undoStack.length)}if(t){const n=this.transformToUndoStackItem(t);for(let i=this.redoStack.length-1;i>=0;i--){const o=this.redoStack[i];n.findIndex(c=>c.id===o.id)===-1&&this.redoStack.customSplice(i,1)}for(const i of n){const o=this.redoStack.findIndex(a=>a.id===i.id);o!==-1?this.redoStack[o]=i:this.redoStack.customPush(i)}this.redoStack.sort((i,o)=>{const a=parseInt(i.id.split("-")[0]);return parseInt(o.id.split("-")[0])-a}),this.emitRedoStepsUpdate(this.redoStack.length)}}else this.clear()}undo(r){var t,n;let e;this.beginGlobalStackTransaction();try{if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=this.undoTickerId;this.timingFix&&this.forceFlushPending(a)}if(this.undoTickerId&&this.tickStartStorerCache&&this.scenePath){const a=this.undoTickerId,c=this.scenePath,l=this.getStartCache(a),u=this.pendingState.get(a);if(!l)return this.resetLegacyTicker(),this.undo(r);const h=((t=this.collector)==null?void 0:t.storage[this.viewId])&&((n=this.collector)==null?void 0:n.storage[this.viewId][c])||{},d=this.diffFun(l,new Map(Object.entries(h)),!1,this.getExcludeIds(a),u==null?void 0:u.scopeKeys),f=this.diffFun(l,new Map(Object.entries(h)),!0,this.getExcludeIds(a),u==null?void 0:u.scopeKeys);d.size===f.size?(this.undoStack.push({id:`${a}-${this.uid}`,data:ye.cloneDeep(d),scenePath:c}),this.undoStack.length>Xr.MaxStackLength&&this.undoStack.shift()):d.size&&!f.size&&(e={id:`${a}-${this.uid}`,data:ye.cloneDeep(d),scenePath:c}),this.isTicking=!1,this.scenePath=void 0,this.tickStartStorerCache=void 0,this._undoTickerId=void 0,this.excludeIds.clear(),this.clearPendingState(a)}if(e)this.refreshPlugin(e);else{let a=this.undoStack.length-1;for(;a>=0;){const c=this.undoStack[a];if(c.scenePath===r){const l=c.id;c&&(this.redoStack.push(c),c.data&&this.refreshPlugin(c));const u=this.undoStack.findIndex(h=>h.id===l);u!==-1&&this.undoStack.splice(u,1);break}a--}}const i=this.undoStack.filter(a=>a.scenePath===r).length,o=this.redoStack.filter(a=>a.scenePath===r).length;return this.emitUndoStepsUpdate(i),this.emitRedoStepsUpdate(o),this.reportStackLength("undo-final",i,o),i}finally{this.endGlobalStackTransaction()}}redo(r){this.beginGlobalStackTransaction();try{let e=this.redoStack.length-1;for(;e>=0;){const i=this.redoStack[e];if(i.scenePath===r){const o=i.id;i&&(this.undoStack.push(i),i.data&&this.refreshPlugin(i,!0));const a=this.redoStack.findIndex(c=>c.id===o);a!==-1&&this.redoStack.splice(a,1);break}e--}const t=this.undoStack.filter(i=>i.scenePath===r).length,n=this.redoStack.filter(i=>i.scenePath===r).length;return this.emitUndoStepsUpdate(t),this.emitRedoStepsUpdate(n),this.reportStackLength("redo-final",t,n),n}finally{this.endGlobalStackTransaction()}}clear(){this.clearUndo(),this.clearRedo()}destroy(){this.destroyed||(this.onChangeScene.cancel(),this.disposeViewTickers("plugin-destroyed"),this.undoStack.customSplice(0),this.redoStack.customSplice(0))}clearUndo(){this.undoStack.length=0,this.emitUndoStepsUpdate(this.undoStack.length)}clearRedo(){this.redoStack.length=0,this.emitRedoStepsUpdate(this.redoStack.length)}canUndo(){return!!this.undoStack.length}canRedo(){return!!this.redoStack.length}onFocusView(){if(this.destroyed)return;const r=this.control.viewContainerManager.getCurScenePath(this.viewId);if(r){const e=this.undoStack.filter(n=>n.scenePath===r).length,t=this.redoStack.filter(n=>n.scenePath===r).length;this.emitUndoStepsUpdate(e),this.emitRedoStepsUpdate(t)}}especialDiff(r,e,t,n){if(e===nr.Update)switch(t==null?void 0:t.toolsType){case q.Text:{if(n!=null&&n.opt&&(t!=null&&t.opt)){const o=ye.omit(n.opt,["uid","workState"]),a=ye.omit(t.opt,["uid","workState"]);if(r&&ye.isEqual(o,a))return!0;n.opt.workState!==de.Done&&(n.opt.workState=de.Done),t.opt.workState!==de.Done&&(t.opt.workState=de.Done)}break}}else if(e===nr.Draw||e===nr.Delete)switch(t==null?void 0:t.toolsType){case q.Text:{if(t!=null&&t.opt){const o=t.opt.text;if(r&&!o)return!0;t.opt.workState!==de.Done&&(t.opt.workState=de.Done)}break}}return!1}normalizeUndoSnapshotValue(r,e){var n,i;if(!e)return e;if(((i=(n=this.collector)==null?void 0:n.getLocalId)==null?void 0:i.call(n,r))===Le||e.toolsType===q.Selector)return;const t=Uye(e);return t.status==="unrecoverable"?ye.cloneDeep(e):t.value}diffFun(r,e,t=!0,n=this.excludeIds,i){const o=new Set,a=r.keys(),c=e.keys();for(const l of a){if(!bp(l,n,i))continue;const u=this.normalizeUndoSnapshotValue(l,r.get(l)),h=this.normalizeUndoSnapshotValue(l,e.get(l));if(!(!u&&!h)){if(u&&h){if(ye.isEqual(h,u)||this.especialDiff(t,nr.Update,h,u))continue;o.add({dataType:nr.Update,key:l,data:[u,h]});continue}this.especialDiff(t,nr.Delete,u)||u&&o.add({dataType:nr.Delete,key:l,data:u})}}for(const l of c){if(!bp(l,n,i))continue;const u=this.normalizeUndoSnapshotValue(l,e.get(l));if(u&&!r.has(l)){if(this.especialDiff(t,nr.Draw,u))continue;o.add({dataType:nr.Draw,key:l,data:u})}}return o}isDrawEffectiveScene(r,e){const{key:t}=r;return!e.includes(t)}isDeleteEffectiveScene(r,e){const{key:t}=r;return!!e.includes(t)}isOldEffectiveScene(r,e){const{key:t}=r;return!!e.includes(t)}isNewEffectiveScene(r,e){const{key:t}=r;return!!e.includes(t)}refreshPlugin(r,e=!1){var l,u,h,d,f,g,y,S,E,C,L,T,p,m,M,v,R;let t;const{scenePath:n}=r,i=r.data;if(!i||!this.collector)return;const a={...this.collector.getStorageData(this.viewId,n)||{}};let c=!1;for(const b of i.values()){const{dataType:P,data:D,key:z}=b,j=this.collector.getStorageData(this.viewId,n),A=j&&Object.keys(j)||[];switch(P){case nr.Draw:if(t=e?this.isDrawEffectiveScene(b,A):this.isDeleteEffectiveScene(b,A),t)if(e&&!Array.isArray(D)){if((l=D.updateNodeOpt)!=null&&l.useAnimation&&(D.updateNodeOpt.useAnimation=!1),((u=this.collector)==null?void 0:u.getLocalId(z))===Le&&((h=this.collector)!=null&&h.isOwn(b.key))){const k=D.selectIds;if(k){const N=A.filter(Y=>{var Q,ie;return((Q=this.collector)==null?void 0:Q.getLocalId(Y))===Le&&!((ie=this.collector)!=null&&ie.isOwn(Y))}).map(Y=>{var Q;return(Q=this.collector)==null?void 0:Q.storage[this.viewId][n][Y]});let W=!1;for(const Y of N)for(let Q=0;Q<k.length;Q++)(d=Y==null?void 0:Y.selectIds)!=null&&d.includes(k[Q])&&(delete k[Q],W=!0);W&&(D.selectIds=k.filter(Y=>!!Y))}}a[b.key]=D,c=!0}else!e&&!Array.isArray(b.data)&&(delete a[b.key],c=!0);break;case nr.Delete:if(t=e?this.isDeleteEffectiveScene(b,A):this.isDrawEffectiveScene(b,A),t){if(e&&!Array.isArray(D))delete a[z],c=!0;else if(!e&&!Array.isArray(D)){if((f=D.updateNodeOpt)!=null&&f.useAnimation&&(D.updateNodeOpt.useAnimation=!1),((g=this.collector)==null?void 0:g.getLocalId(b.key))===Le&&((y=this.collector)!=null&&y.isOwn(b.key))){const k=D.selectIds;if(k){const N=A.filter(Y=>{var Q,ie;return((Q=this.collector)==null?void 0:Q.getLocalId(Y))===Le&&!((ie=this.collector)!=null&&ie.isOwn(Y))}).map(Y=>{var Q;return(Q=this.collector)==null?void 0:Q.storage[this.viewId][n][Y]});let W=!1;for(const Y of N)for(let Q=0;Q<k.length;Q++)(S=Y==null?void 0:Y.selectIds)!=null&&S.includes(k[Q])&&(delete k[Q],W=!0);W&&(D.selectIds=k.filter(Y=>!!Y))}}a[b.key]=D,c=!0}}break;case nr.Update:if(t=e?this.isNewEffectiveScene(b,A):this.isOldEffectiveScene(b,A),t){if(e&&Array.isArray(D)&&D.length===2){const k=D[1];if((E=k.updateNodeOpt)!=null&&E.useAnimation&&(k.updateNodeOpt.useAnimation=!1),((C=this.collector)==null?void 0:C.getLocalId(b.key))===Le&&((L=this.collector)!=null&&L.isOwn(b.key))){const N=k.selectIds;if(N){const W=A.filter(Q=>{var ie,O;return((ie=this.collector)==null?void 0:ie.getLocalId(Q))===Le&&!((O=this.collector)!=null&&O.isOwn(Q))}).map(Q=>{var ie;return(ie=this.collector)==null?void 0:ie.storage[this.viewId][n][Q]});let Y=!1;for(const Q of W)for(let ie=0;ie<N.length;ie++)Q!=null&&Q.selectIds&&((T=Q.selectIds)!=null&&T.includes(N[ie]))&&(delete N[ie],Y=!0);Y&&(k.selectIds=N.filter(Q=>!!Q))}}a[z]=k,c=!0}else if(!e&&Array.isArray(D)&&D.length===2){const k=D[0];if((p=k.updateNodeOpt)!=null&&p.useAnimation&&(k.updateNodeOpt.useAnimation=!1),((m=this.collector)==null?void 0:m.getLocalId(b.key))===Le&&((M=this.collector)!=null&&M.isOwn(b.key))){const N=k.selectIds;if(N){const W=A.filter(Q=>{var ie,O;return((ie=this.collector)==null?void 0:ie.getLocalId(Q))===Le&&!((O=this.collector)!=null&&O.isOwn(Q))}).map(Q=>{var ie;return(ie=this.collector)==null?void 0:ie.storage[this.viewId][n][Q]});let Y=!1;for(const Q of W)for(let ie=0;ie<N.length;ie++)Q!=null&&Q.selectIds&&Q.selectIds.includes(N[ie])&&(delete N[ie],Y=!0);Y&&(k.selectIds=N.filter(Q=>!!Q))}}a[b.key]=k,c=!0}}break}}if(c){const b=this.collector.plugin,P=(v=b==null?void 0:b.getAttributesValue)==null?void 0:v.call(b,[Jr.namespace]),D=(R=b==null?void 0:b.getAttributesValue)==null?void 0:R.call(b,[Jr.namespace,this.viewId]);P?D?b==null||b.updateAttributes([Jr.namespace,this.viewId,n],a):b==null||b.updateAttributes([Jr.namespace,this.viewId],{[n]:a}):b==null||b.updateAttributes([Jr.namespace],{[this.viewId]:{[n]:a}})}}};x(Xr,"sdkCallBack"),x(Xr,"MaxStackLength",He.undoRedo.maxStackLength),x(Xr,"waitTime",100);let Ku=Xr;const Xwe=(s,r)=>({...s,...r}),Jp=(s,...r)=>r.reduce((e,t)=>({images:Xwe(e.images,t==null?void 0:t.images),size:(t==null?void 0:t.size)||e.size,offset:{...e.offset,...t==null?void 0:t.offset}}),s),ia={[q.Selector]:{applianceKey:De.selector,classSuffix:"selector",hostClassName:"cursor-selector"},[q.Clicker]:{applianceKey:De.clicker,classSuffix:"clicker",hostClassName:"cursor-clicker"},[q.Text]:{applianceKey:De.text,classSuffix:"text",hostClassName:"cursor-text"},[q.Pencil]:{applianceKey:De.pencil,classSuffix:"pencil",hostClassName:"cursor-pencil"},[q.LaserPen]:{applianceKey:De.laserPen,classSuffix:"laser-pen",hostClassName:"cursor-pencil"},[q.Arrow]:{applianceKey:De.arrow,classSuffix:"arrow",hostClassName:"cursor-arrow"},[q.Straight]:{applianceKey:De.straight,classSuffix:"straight",hostClassName:"cursor-straight"},[q.Rectangle]:{applianceKey:De.rectangle,classSuffix:"rectangle",hostClassName:"cursor-rectangle"},[q.Ellipse]:{applianceKey:De.ellipse,classSuffix:"ellipse",hostClassName:"cursor-ellipse"},[q.Star]:{applianceKey:or.star,classSuffix:"star",hostClassName:"cursor-shape"},[q.Polygon]:{applianceKey:or.polygon,classSuffix:"polygon",hostClassName:"cursor-shape"},[q.SpeechBalloon]:{applianceKey:or.speechBalloon,classSuffix:"speech-balloon",hostClassName:"cursor-shape"},[q.Eraser]:{applianceKey:De.eraser,classSuffix:"eraser",hostClassName:"cursor-eraser"},[q.PencilEraser]:{applianceKey:De.pencilEraser,classSuffix:"pencil-eraser",hostClassName:"cursor-eraser"},[q.BitMapEraser]:{applianceKey:or.bitMapEraser,classSuffix:"bitmap-eraser",hostClassName:"cursor-eraser"}},Jwe={[q.Selector]:De.selector,[q.Clicker]:De.clicker,[q.Text]:De.text,[q.Pencil]:De.pencil,[q.Arrow]:De.arrow,[q.Straight]:De.straight,[q.Rectangle]:De.rectangle,[q.Ellipse]:De.ellipse,[q.Eraser]:De.eraser,[q.PencilEraser]:De.pencilEraser};function _we(s,r){if(!(!s||r===void 0)&&s.currentApplianceName!==De.laserPointer)return r===q.LaserPen?s.currentApplianceName===De.pencil&&s.useLaserPen?ia[r]:void 0:r===q.Star||r===q.Polygon||r===q.SpeechBalloon?s.currentApplianceName===De.shape?ia[r]:void 0:r===q.BitMapEraser?s.currentApplianceName===De.pencilEraser?ia[r]:void 0:Jwe[r]===s.currentApplianceName?ia[r]:void 0}class rM{constructor(r){x(this,"options");this.options=cd(r)}getAppearance(r){return this.options.appearance[r]||ma[r]}getLocal(r){var i;const e=ma[r],t=this.getAppearance(r),n=Jp(e,e.local,t,t.local);return{...n,size:n.size||e.local.size,fallback:((i=t.local)==null?void 0:i.fallback)||"auto"}}getSynced(r){const e=ma[r],t=this.getAppearance(r);return Jp(e,e.synced,t,t.synced)}getSyncedEnableShowName(r){return vpe(this.options,r)}getLocalCursorOwnership(r){const e=this.options.appearance[r];return e&&(e.local||e.images||e.offset||e.size)?"custom":"plugin-default"}}function _p(s){const r=s.trim().toLowerCase();return r.startsWith("data:image/svg+xml")||/\.svg(?:[?#]|$)/i.test(r)}function Pd(s){const r=s.highResolution;if(!(!r||r===s.standardResolution||_p(s.standardResolution)||_p(r)))return r}function eSe(s){var c,l;const r=Math.round(-s.offset.x),e=Math.round(s.size.height-s.offset.y),t=s.fallback,n=`url("${s.images.standardResolution}") ${r} ${e}, ${t}`,i=Pd(s.images);if(!i)return n;const o=`image-set(url("${s.images.standardResolution}") 1x, url("${i}") 2x) ${r} ${e}, ${t}`,a=`-webkit-image-set(url("${s.images.standardResolution}") 1x, url("${i}") 2x) ${r} ${e}, ${t}`;return typeof CSS<"u"&&((c=CSS.supports)!=null&&c.call(CSS,"cursor",o))?o:typeof CSS<"u"&&((l=CSS.supports)!=null&&l.call(CSS,"cursor",a))?a:n}const nM=5e3,iM=128*1024*1024,sM=128,tSe=5e3;function rSe(s,r){if(r.activeCount!==0||r.estimatedBytes!==0||r.closeErrorCount!==0)return"error";if(s.activeCount>0||r.totalRetiredCount>0||r.totalReleasedCount>0)return"info"}class nSe{constructor(r={}){x(this,"pending",new Set);x(this,"awaitingPaint",new Set);x(this,"entries",new Map);x(this,"timeoutMs");x(this,"memoryPressureBytes");x(this,"memoryPressureCount");x(this,"memoryPressureReportIntervalMs");x(this,"scheduler");x(this,"onCloseError");x(this,"onScheduleError");x(this,"onTimeout");x(this,"onMemoryPressure");x(this,"activeEstimatedBytes",0);x(this,"peakActiveCount",0);x(this,"peakEstimatedBytes",0);x(this,"totalRetiredCount",0);x(this,"totalReleasedCount",0);x(this,"watchdogReleasedCount",0);x(this,"closeErrorCount",0);x(this,"lastMemoryPressureReportAt",-1/0);x(this,"frameHandle");x(this,"watchdogHandle");x(this,"destroyed",!1);x(this,"onFrame",()=>{if(this.frameHandle=void 0,!this.destroyed){for(const r of[...this.awaitingPaint])this.releaseEntry(r);this.awaitingPaint=this.pending,this.pending=new Set,this.entries.size?this.ensureFrame():this.stopSchedulersWhenEmpty()}});x(this,"onWatchdog",()=>{var o;if(this.watchdogHandle=void 0,this.destroyed)return;const r=this.scheduler.now(),e=new Set;let t=0,n=0,i=0;for(const a of[...this.entries.values()])a.deadlineAt<=r&&(e.add(a.viewId),t+=1,n+=a.estimatedBytes,i=Math.max(i,r-a.createdAt),this.releaseEntry(a));e.size&&(this.watchdogReleasedCount+=t,(o=this.onTimeout)==null||o.call(this,{viewIds:e,releasedCount:t,releasedEstimatedBytes:n,oldestAgeMs:i,snapshot:this.getMemorySnapshot()})),this.entries.size?this.ensureWatchdog():this.stopSchedulersWhenEmpty()});this.timeoutMs=r.timeoutMs??nM,this.memoryPressureBytes=r.memoryPressureBytes??iM,this.memoryPressureCount=r.memoryPressureCount??sM,this.memoryPressureReportIntervalMs=r.memoryPressureReportIntervalMs??tSe,this.scheduler={requestFrame:e=>requestAnimationFrame(e),cancelFrame:e=>cancelAnimationFrame(e),setTimer:(e,t)=>setTimeout(e,t),clearTimer:e=>clearTimeout(e),now:()=>Date.now(),...r.scheduler},this.onCloseError=r.onCloseError,this.onScheduleError=r.onScheduleError,this.onTimeout=r.onTimeout,this.onMemoryPressure=r.onMemoryPressure}retire(r,e){if(this.destroyed){this.closeBitmap(r,e);return}if(this.entries.has(e))return;const t=this.scheduler.now(),n={bitmap:e,viewId:r,createdAt:t,deadlineAt:t+this.timeoutMs,estimatedBytes:this.estimateBitmapBytes(e)};this.entries.set(e,n),this.pending.add(n),this.activeEstimatedBytes+=n.estimatedBytes,this.totalRetiredCount+=1,this.peakActiveCount=Math.max(this.peakActiveCount,this.entries.size),this.peakEstimatedBytes=Math.max(this.peakEstimatedBytes,this.activeEstimatedBytes),this.reportMemoryPressure(t),this.ensureWatchdog(),this.ensureFrame()}getMemorySnapshot(){const r=this.scheduler.now(),e=new Map;let t=0;for(const i of this.entries.values()){const o=Math.max(0,r-i.createdAt);t=Math.max(t,o);const a=e.get(i.viewId)||{activeCount:0,estimatedBytes:0,oldestAgeMs:0};a.activeCount+=1,a.estimatedBytes+=i.estimatedBytes,a.oldestAgeMs=Math.max(a.oldestAgeMs,o),e.set(i.viewId,a)}const n=[...e.entries()].map(([i,o])=>({viewId:i,...o})).sort((i,o)=>i.viewId.localeCompare(o.viewId));return{activeCount:this.entries.size,estimatedBytes:this.activeEstimatedBytes,peakActiveCount:this.peakActiveCount,peakEstimatedBytes:this.peakEstimatedBytes,totalRetiredCount:this.totalRetiredCount,totalReleasedCount:this.totalReleasedCount,watchdogReleasedCount:this.watchdogReleasedCount,closeErrorCount:this.closeErrorCount,oldestAgeMs:t,activeViews:n,destroyed:this.destroyed}}closeNow(r,e){const t=this.entries.get(e);t?this.releaseEntry(t):this.closeBitmap(r,e),this.stopSchedulersWhenEmpty()}releaseView(r){for(const e of[...this.entries.values()])e.viewId===r&&this.releaseEntry(e);this.stopSchedulersWhenEmpty()}destroy(){if(this.destroyed)return this.getMemorySnapshot();this.destroyed=!0,this.cancelSchedulers();for(const r of[...this.entries.values()])this.releaseEntry(r);return this.getMemorySnapshot()}ensureFrame(){var r;if(!(this.frameHandle!==void 0||!this.entries.size))try{this.frameHandle=this.scheduler.requestFrame(this.onFrame)}catch(e){(r=this.onScheduleError)==null||r.call(this,"request-frame",e,this.getMemorySnapshot())}}ensureWatchdog(){var e;if(this.watchdogHandle!==void 0||!this.entries.size)return;let r=1/0;for(const t of this.entries.values())r=Math.min(r,t.deadlineAt);try{this.watchdogHandle=this.scheduler.setTimer(this.onWatchdog,Math.max(0,r-this.scheduler.now()))}catch(t){(e=this.onScheduleError)==null||e.call(this,"set-watchdog",t,this.getMemorySnapshot());for(const n of[...this.entries.values()])this.releaseEntry(n)}}releaseEntry(r){this.entries.delete(r.bitmap)&&(this.pending.delete(r),this.awaitingPaint.delete(r),this.activeEstimatedBytes=Math.max(0,this.activeEstimatedBytes-r.estimatedBytes),this.closeBitmap(r.viewId,r.bitmap))}closeBitmap(r,e){var t;try{e.close(),this.totalReleasedCount+=1}catch(n){this.closeErrorCount+=1,(t=this.onCloseError)==null||t.call(this,r,n,this.getMemorySnapshot())}}estimateBitmapBytes(r){const e=Number.isFinite(r.width)?Math.max(0,r.width):0,t=Number.isFinite(r.height)?Math.max(0,r.height):0,n=Math.ceil(e*t*4);return Number.isSafeInteger(n)?n:0}reportMemoryPressure(r){var e;this.entries.size<this.memoryPressureCount&&this.activeEstimatedBytes<this.memoryPressureBytes||r-this.lastMemoryPressureReportAt<this.memoryPressureReportIntervalMs||(this.lastMemoryPressureReportAt=r,(e=this.onMemoryPressure)==null||e.call(this,this.getMemorySnapshot()))}stopSchedulersWhenEmpty(){this.entries.size||this.cancelSchedulers()}cancelSchedulers(){this.frameHandle!==void 0&&(this.scheduler.cancelFrame(this.frameHandle),this.frameHandle=void 0),this.watchdogHandle!==void 0&&(this.scheduler.clearTimer(this.watchdogHandle),this.watchdogHandle=void 0)}}const em=3,tm=128;function iSe(){return globalThis.__APPLIANCE_IMAGE_BITMAP_PIXEL_DIAGNOSTIC__===!0}class Yi{constructor(r){x(this,"internalMsgEmitter");x(this,"control");x(this,"mainView");x(this,"mainViewOrigin");x(this,"appViewOrigins",new Map);x(this,"appViews",new Map);x(this,"renderImageBitmapRetirement");x(this,"renderImageBitmapRecoveryViews",new Set);x(this,"renderImageBitmapPixelDiagnosticCanvas");x(this,"undoTickerStart",(r,e,t)=>{const n=this.getView(e);n&&n.displayer&&n.focusScenePath&&n.displayer.commiter.undoTickerStart(r,n.focusScenePath,t)});x(this,"addExcludeIds",(r,e)=>{const t=this.getView(e);t&&t.displayer&&t.focusScenePath&&t.displayer.commiter.addExcludeIds(r)});x(this,"onAckRenderUndoTicker",(r,e,t,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=t||i.focusScenePath;i.displayer.commiter.ackRender(r,o,n)});x(this,"onAckStorageUndoTicker",(r,e,t,n,i)=>{const o=this.getView(e);if(!(o!=null&&o.displayer)||!o.focusScenePath)return;const a=t||o.focusScenePath;o.displayer.commiter.ackStorage(r,a,n,i)});x(this,"onCollectExpectedWorkIds",(r,e,t,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.collectExpectedWorkIds(r,o,t)});x(this,"onFinalizeRequested",(r,e,t,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.finalizeRequested(r,o,t)});x(this,"onReopenStorageAck",(r,e,t,n)=>{const i=this.getView(e);if(!(i!=null&&i.displayer)||!i.focusScenePath)return;const o=n||i.focusScenePath;i.displayer.commiter.reopenStorageAck(r,o,t)});x(this,"onCancelUndoTicker",(r,e,t)=>{const n=this.getView(e);if(!(n!=null&&n.displayer)||!n.focusScenePath)return;const i=t||n.focusScenePath;n.displayer.commiter.cancelUndoTicker(r,e,i)});const{control:e,internalMsgEmitter:t}=r;this.control=e,this.internalMsgEmitter=t,this.renderImageBitmapRetirement=new nSe({onCloseError:(n,i,o)=>{var a,c;(c=(a=this.control.logger)==null?void 0:a.error)==null||c.call(a,`[Appliance]: [render-image-bitmap-memory] stage=close-error viewId=${n} activeCount=${o.activeCount} estimatedBytes=${o.estimatedBytes} closeErrorCount=${o.closeErrorCount} error=${i instanceof Error?i.message:String(i)}`)},onScheduleError:(n,i,o)=>{var a,c;(c=(a=this.control.logger)==null?void 0:a.error)==null||c.call(a,`[Appliance]: [render-image-bitmap-memory] stage=${n} activeCount=${o.activeCount} estimatedBytes=${o.estimatedBytes} error=${i instanceof Error?i.message:String(i)}`)},onMemoryPressure:n=>{var i,o;(o=(i=this.control.logger)==null?void 0:i.warn)==null||o.call(i,`[Appliance]: [render-image-bitmap-memory] stage=pressure activeCount=${n.activeCount} estimatedBytes=${n.estimatedBytes} peakActiveCount=${n.peakActiveCount} peakEstimatedBytes=${n.peakEstimatedBytes} oldestAgeMs=${n.oldestAgeMs} countThreshold=${sM} bytesThreshold=${iM}`)},onTimeout:n=>{var i,o;(o=(i=this.control.logger)==null?void 0:i.error)==null||o.call(i,`[Appliance]: [render-image-bitmap-memory] stage=watchdog-timeout viewIds=${[...n.viewIds].join(",")} timeoutMs=${nM} releasedCount=${n.releasedCount} releasedEstimatedBytes=${n.releasedEstimatedBytes} oldestAgeMs=${n.oldestAgeMs} remainingCount=${n.snapshot.activeCount} remainingEstimatedBytes=${n.snapshot.estimatedBytes}`);for(const a of n.viewIds)!this.getView(a)||this.renderImageBitmapRecoveryViews.has(a)||(this.renderImageBitmapRecoveryViews.add(a),this.control.refreshViewRender(a).catch(c=>{var l,u;(u=(l=this.control.logger)==null?void 0:l.error)==null||u.call(l,`[Appliance]: render ImageBitmap timeout recovery failed; viewId=${a}; error=${c instanceof Error?c.message:String(c)}`)}).finally(()=>this.renderImageBitmapRecoveryViews.delete(a)))}}),this.internalMsgEmitter.on("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.on("excludeIds",this.addExcludeIds),this.internalMsgEmitter.on("ackRenderUndoTicker",this.onAckRenderUndoTicker),this.internalMsgEmitter.on("ackStorageUndoTicker",this.onAckStorageUndoTicker),this.internalMsgEmitter.on("collectExpectedWorkIds",this.onCollectExpectedWorkIds),this.internalMsgEmitter.on("reopenStorageAck",this.onReopenStorageAck),this.internalMsgEmitter.on("finalizeRequested",this.onFinalizeRequested),this.internalMsgEmitter.on("cancelUndoTicker",this.onCancelUndoTicker)}get worker(){return this.control.worker}getUndoTickerId(r){const e=this.getView(r);if(e&&e.displayer&&e.focusScenePath)return e.displayer.commiter.undoTickerId}cancelViewUndoTicker(r){var t;const e=this.getView(r);(t=e==null?void 0:e.displayer)==null||t.commiter.cancelViewUndoTicker()}undo(){const r=this.focuedView;let e=0;if(r&&this.control.canAcceptLocalMutation(r.id)){const t=r.focusScenePath;e=r.displayer.commiter.undo(t)||0}return e}redo(){const r=this.focuedView;let e=0;if(r&&this.control.canAcceptLocalMutation(r.id)){const t=r.focusScenePath;e=r.displayer.commiter.redo(t)||0}return e}validator(r,e,t){var o;const n=ye.clone(r[e]),i=ye.clone(t);e==="focusScenePath"&&!ye.isEqual(n,i)&&(this.control.backgroundImageLoadCoordinator.cancelByViewScene(r.id,n),this.control.internalSceneChange(r.id,i),(o=r.displayer)==null||o.commiter.onChangeScene()),e==="cameraOpt"&&!ye.isEqual(n,i)&&this.control.internalCameraChange(r.id,i)}destroyAppView(r,e=!1){var n;this.disposeViewRenderImageBitmaps(r),this.renderImageBitmapRecoveryViews.delete(r),this.control.backgroundImageLoadCoordinator.cancelByViewScene(r),this.control.destroySceneChange(r),this.control.worker.cameraUpdateDestroy(r,!1);const t=this.appViews.get(r);t&&(t.displayer.commiter.disposeViewTickers("view-destroyed"),(n=this.control.selectorApi)==null||n.disposeView(r),this.control.textEditorManager.clear(r,e),t.displayer.destroy(),this.appViewOrigins.delete(r),this.appViews.delete(r))}createMianView(r){this.mainView&&this.disposeViewRenderImageBitmaps(Fe),this.mainViewOrigin=r,this.mainView=new Proxy(r,{set:(e,t,n)=>(this.worker.isActive&&this.validator(e,t,n),e[t]=n,!0)})}createAppView(r){const e=r.id;this.appViews.has(e)&&this.disposeViewRenderImageBitmaps(e),this.appViewOrigins.set(e,r);const t=new Proxy(r,{set:(n,i,o)=>(this.worker.isActive&&this.validator(n,i,o),n[i]=o,!0)});this.appViews.set(e,t)}isAppView(r){return r!==Fe&&this.appViews.has(r)}getPreferredFocusedViewId(){return this.focuedViewId||Fe}getView(r){var e;return r===Fe?this.mainView:(e=this.appViews)==null?void 0:e.get(r)}resolveView(r){const e=r||this.focuedViewId||Fe,t=this.getView(e);return!r&&!t&&e!==Fe?{viewId:Fe,view:this.getView(Fe)}:{viewId:e,view:t}}getViewElement(r){var e;return((e=r.viewData)==null?void 0:e.divElement)||r.container||r.displayer.eventTragetElement}getFloatbarContainer(r){const{view:e}=this.resolveView(r);return(e==null?void 0:e.displayer.customFloatbarContainerRef.current)||void 0}getViewOffsetToContainer(r,e){if(!r)return;const{viewId:t,view:n}=this.resolveView(e);if(!n)return;const i=this.getViewElement(n);if(!i)return;const o=i.getBoundingClientRect(),a=r.getBoundingClientRect();return{x:o.left-a.left,y:o.top-a.top,viewId:t}}getCurScenePath(r){const e=this.getView(r);if(e)return e.focusScenePath}getAuthoritativeScenePath(r){return this.getCurScenePath(r)}getAllViews(){return[this.mainView,...this.appViews.values()]}setViewScenePath(r,e){var t;if(r===Fe&&this.mainView)this.mainView.focusScenePath=e;else{const n=r&&((t=this.appViews)==null?void 0:t.get(r))||void 0;n&&(n.focusScenePath=e)}}setViewScenePathBeforeRenderInit(r,e){var i,o;const t=r===Fe?this.mainViewOrigin:this.appViewOrigins.get(r);if(!t)return!1;const n=t.focusScenePath!==e;return t.focusScenePath=e,n&&((o=(i=t.displayer)==null?void 0:i.commiter)==null||o.onChangeScene()),!0}setViewData(r,e){var t;if(r===Fe&&this.mainView)this.mainView.viewData=e;else{const n=r&&((t=this.appViews)==null?void 0:t.get(r))||void 0;n&&(n.viewData=e)}}setFocuedViewId(r){var e;this.focuedViewId=r,r===Fe?this.focuedView=this.mainView:this.focuedView=r&&((e=this.appViews)==null?void 0:e.get(r))||void 0,this.worker.currentToolsData&&this.worker.currentToolsData.toolsType===q.Text&&this.activeTextEditor(r),this.control.cursor.onFocusViewChange(),this.focuedView&&this.focuedView.displayer.commiter.onFocusView()}setViewFocusScenePath(r,e){var n;let t;r===Fe?t=this.mainView:t=(n=this.appViews)==null?void 0:n.get(r),t&&(t.focusScenePath=e)}destroy(){var o,a,c,l,u,h;this.internalMsgEmitter.off("addUndoTicker",this.undoTickerStart),this.internalMsgEmitter.off("excludeIds",this.addExcludeIds),this.internalMsgEmitter.off("ackRenderUndoTicker",this.onAckRenderUndoTicker),this.internalMsgEmitter.off("ackStorageUndoTicker",this.onAckStorageUndoTicker),this.internalMsgEmitter.off("collectExpectedWorkIds",this.onCollectExpectedWorkIds),this.internalMsgEmitter.off("reopenStorageAck",this.onReopenStorageAck),this.internalMsgEmitter.off("finalizeRequested",this.onFinalizeRequested),this.internalMsgEmitter.off("cancelUndoTicker",this.onCancelUndoTicker),this.mainView&&(this.disposeViewRenderImageBitmaps(this.mainView.id),this.mainView.displayer.commiter.disposeViewTickers("view-destroyed"),(o=this.control.selectorApi)==null||o.disposeView(this.mainView.id)),(a=this.mainView)==null||a.displayer.destroy(),this.control.destroyMiniMap(Fe),this.appViews.forEach(d=>{this.destroyAppView(d.id,!0),this.control.destroyMiniMap(d.id)});const r=this.getRenderImageBitmapMemoryState(),e=this.renderImageBitmapRetirement.destroy(),t=e.closeErrorCount-r.closeErrorCount,n=`[Appliance]: [render-image-bitmap-memory] stage=destroy releasedCount=${r.activeCount-e.activeCount} releasedEstimatedBytes=${r.estimatedBytes-e.estimatedBytes} activeCount=${e.activeCount} estimatedBytes=${e.estimatedBytes} peakActiveCount=${e.peakActiveCount} peakEstimatedBytes=${e.peakEstimatedBytes} totalRetiredCount=${e.totalRetiredCount} totalReleasedCount=${e.totalReleasedCount} watchdogReleasedCount=${e.watchdogReleasedCount} closeErrorCount=${e.closeErrorCount} closeErrorsDuringDestroy=${t}`,i=rSe(r,e);i==="error"?(l=(c=this.control.logger)==null?void 0:c.error)==null||l.call(c,n):i==="info"&&((h=(u=this.control.logger)==null?void 0:u.info)==null||h.call(u,n)),this.renderImageBitmapRecoveryViews.clear()}setFocuedViewCameraOpt(r){if(this.focuedView){const e=this.focuedView.cameraOpt;ye.isEqual(e,r)||(this.focuedView.cameraOpt=r)}}transformToOriginPoint(r,e){const t=this.getView(e);if(t!=null&&t.viewData){const n=t.viewData.convertToPointOnScreen(r[0],r[1]);return[n.x,n.y]}return r}transformToScenePoint(r,e){const t=this.getView(e);if(t!=null&&t.viewData){const n=t.viewData.convertToPointInWorld({x:r[0],y:r[1]});return[n.x,n.y]}return r}inspectRenderImageBitmapPixels(r,e,t){const n=Math.min(1,tm/Math.max(e,1),tm/Math.max(t,1)),i=Math.max(1,Math.round(e*n)),o=Math.max(1,Math.round(t*n)),a=this.renderImageBitmapPixelDiagnosticCanvas||document.createElement("canvas");this.renderImageBitmapPixelDiagnosticCanvas=a,a.width!==i&&(a.width=i),a.height!==o&&(a.height=o);const c=a.getContext("2d");if(!c)throw new Error("render ImageBitmap pixel probe unavailable");c.clearRect(0,0,i,o),c.drawImage(r,0,0,i,o);const l=c.getImageData(0,0,i,o).data;let u=0,h=0;for(let d=0;d<l.length;d+=4){const f=l[d],g=l[d+1],y=l[d+2];l[d+3]!==0&&(u+=1,(f!==0||g!==0||y!==0)&&(h+=1))}return{sampleWidth:i,sampleHeight:o,visiblePixels:u,nonBlackPixels:h}}render(r){var n,i,o,a,c,l,u;let e,t=!1;for(const h of r){const{rect:d,imageBitmap:f,isFullFrameImageBitmap:g,isClear:y,isUnClose:S,drawCanvas:E,clearCanvas:C,viewId:L,viewGeneration:T,frameSequence:p,taskId:m}=h,M=(n=this.getView(L))==null?void 0:n.displayer;let v=!1;try{if(!(y&&C!==_e.None||E!==void 0&&E!==_e.None))continue;if(!M)throw new Error(`render View is unavailable: ${L}`);if(!d)throw new Error(`render rect is unavailable: ${L}`);const{dpr:b,canvasBgRef:P,canvasFloatRef:D,canvasServiceFloatRef:z,canvasTopRef:j}=M,A=Math.floor(d.w*b),k=Math.floor(d.h*b),N=d.x*b,W=d.y*b,Y=Q=>{let ie;switch(Q){case _e.TopFloat:ie=j==null?void 0:j.current;break;case _e.Float:ie=D.current;break;case _e.ServiceFloat:ie=z.current;break;case _e.Bg:ie=P.current;break;default:throw new Error(`render canvas target is unavailable: ${L}/${String(Q)}`)}if(!ie)throw new Error(`render canvas is unavailable: ${L}/${String(Q)}`);const O=ie.getContext("2d");if(!O)throw new Error(`render 2d context is unavailable: ${L}/${String(Q)}`);return O};if(y&&C!==_e.None){Y(C).clearRect(N,W,A,k);continue}if(E!==void 0&&E!==_e.None){if(!f)throw new Error(`render ImageBitmap is unavailable: ${L}/${String(E)}`);const Q=Y(E);let ie;const O=iSe()&&g&&E===_e.Bg;if(O)try{ie=this.inspectRenderImageBitmapPixels(f,f.width,f.height)}catch(V){(o=(i=this.control.logger)==null?void 0:i.warn)==null||o.call(i,`[Appliance]: [render-image-bitmap] stage=pixel-diagnostic-failed source=bitmap viewId=${L} generation=${T??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} error=${V instanceof Error?V.message:String(V)}`)}if(g?(Q.clearRect(0,0,Q.canvas.width,Q.canvas.height),Q.drawImage(f,0,0,Q.canvas.width,Q.canvas.height)):Q.drawImage(f,0,0,A,k,N,W,A,k),O&&ie)try{const V=this.inspectRenderImageBitmapPixels(Q.canvas,Q.canvas.width,Q.canvas.height);(ie.visiblePixels>0&&V.visiblePixels===0||ie.nonBlackPixels>0&&V.nonBlackPixels===0)&&((c=(a=this.control.logger)==null?void 0:a.warn)==null||c.call(a,`[Appliance]: [render-image-bitmap] stage=destination-pixel-loss viewId=${L} generation=${T??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} sourceVisible=${ie.visiblePixels} destinationVisible=${V.visiblePixels} sourceNonBlack=${ie.nonBlackPixels} destinationNonBlack=${V.nonBlackPixels}`))}catch(V){(u=(l=this.control.logger)==null?void 0:l.warn)==null||u.call(l,`[Appliance]: [render-image-bitmap] stage=pixel-diagnostic-failed source=destination viewId=${L} generation=${T??"unknown"} taskId=${m??"unknown"} sequence=${p??"unknown"} error=${V instanceof Error?V.message:String(V)}`)}v=!0}}catch(R){t||(e=R,t=!0)}finally{f&&!S&&(v?this.retireRenderImageBitmap(L,f):this.renderImageBitmapRetirement.closeNow(L,f))}}if(t)throw e}retireRenderImageBitmap(r,e){e&&this.renderImageBitmapRetirement.retire(r,e)}disposeViewRenderImageBitmaps(r){this.renderImageBitmapRetirement.releaseView(r)}getRenderImageBitmapMemoryState(){return this.renderImageBitmapRetirement.getMemorySnapshot()}showFloatBar(r,e,t){const n=this.getView(r),i=n==null?void 0:n.displayer.vDom;i&&i.showFloatBar(e,t)}activeTextEditor(r){const e=this.getView(r),t=e==null?void 0:e.displayer.vDom;t&&t.activeTextEditor()}unActiveTextEditor(r){const e=this.getView(r),t=e==null?void 0:e.displayer.vDom;t&&t.unActiveTextEditor()}showFloatBarBtn(r,e){const t=this.getView(r),n=t==null?void 0:t.displayer.vDom;n&&n.showFloatBarBtn(e)}updateTextEditorInfo(r,e,t){const n=this.getView(r),i=n==null?void 0:n.displayer.vDom;if(i){i.updateTextEditorInfo(e,t);return}t==null||t()}renderTextEditorInfo(r,e,t){const n=this.getView(r),i=n==null?void 0:n.displayer.vDom;if(i){i.renderTextEditorInfo(e,t);return}t==null||t()}renderTextEditorInfoAsync(r,e){return new Promise(t=>{this.renderTextEditorInfo(r,e,t)})}updateTextEditorInfoAsync(r,e){return new Promise(t=>{this.updateTextEditorInfo(r,e,t)})}setActiveMiniMap(r,e){const t=this.getView(r),n=t==null?void 0:t.displayer.vDom;n&&n.setActiveMiniMap(e&&r||void 0)}}x(Yi,"defaultCameraOpt",{centerX:0,centerY:0,scale:1}),x(Yi,"defaultScreenCanvasOpt",{autoRender:!1,contextType:"2d"}),x(Yi,"defaultLayerOpt",{offscreen:!0,handleEvent:!1,depth:!1});class oM{constructor(r,e,t){x(this,"control");x(this,"internalMsgEmitter");x(this,"commiter");x(this,"cachePoint");x(this,"cacheCursorPoint");x(this,"active",!0);x(this,"toolsKey");x(this,"activePointers",new Set);x(this,"currentDrawingPointerId");x(this,"pointerDrawingSession",0);x(this,"currentPointerDrawingSession");x(this,"pointerDonePromise");x(this,"isTouchDrawing",!1);x(this,"cursorMouseMove");x(this,"cursorMouseMoveDebounced");x(this,"cursorMouseMoveThrottled");x(this,"cursorMouseMoveFun");x(this,"cursorEventElement");x(this,"eventTargetTouchAction");x(this,"appliedCursorClassNames",[]);x(this,"pendingDpr");x(this,"dprMediaQuery");x(this,"dprMediaQueryListener");x(this,"pointLimitStopPending",!1);x(this,"localBitmapEraserPointCount",0);x(this,"_transferControlToOffscreenCanvas");x(this,"cursorMouseLeave",()=>{this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled.cancel():this.cursorMouseMoveDebounced.cancel(),this.cacheCursorPoint=[void 0,void 0],this.worker.sendCursorEvent(this.cacheCursorPoint,this.viewId)});x(this,"keydown",r=>{r.stopPropagation(),r.stopImmediatePropagation(),this.control.hotkeyManager.colloctHotkey(r)});x(this,"windowBlur",()=>{this.currentDrawingPointerId!==void 0&&this.cancelPointerDrawing("window-blur")});x(this,"visibilitychange",()=>{document.visibilityState==="hidden"&&this.currentDrawingPointerId!==void 0&&this.cancelPointerDrawing("document-hidden")});x(this,"pointerdown",r=>{var e;if(!this.pointerDonePromise){if(this.active&&this.consumeClickerEvent(r)){const t=this.getPoint(r);t&&this.worker.sendCursorEvent(t,this.viewId);return}if(!(!this.active||this.worker.isViewBusy(this.viewId)||this.control.isSceneBusy(this.viewId))){if(r.pointerType==="touch"&&(this.activePointers.add(r.pointerId),this.activePointers.size>1)){this.cancelPointerDrawing("multi-pointer-down",!0);return}if(r.button===0&&this.viewId){this.toolsKey=(e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId),this.reflashContainerOffset();const t=this.getPoint(r);this.cachePoint=t,t&&(this.localBitmapEraserPointCount=this.isBitmapEraserTool()?1:0,this.currentDrawingPointerId=r.pointerId,this.currentPointerDrawingSession=++this.pointerDrawingSession,this.worker.originalEventLintener(de.Start,t,this.viewId),this.addPointerDocumentEvents())}}}});x(this,"pointermove",r=>{if(this.active){if(r.pointerType==="touch"){if(this.activePointers.size>1){this.cancelPointerDrawing("multi-pointer-move",!0);return}if(this.currentDrawingPointerId!==void 0&&r.pointerId!==this.currentDrawingPointerId)return;if(!this.worker.isAbled()){this.cancelPointerDrawing("worker-disabled",!0);return}}if(this.viewId){const e=this.getPoint(r);if(this.checkConsumeCount(e!==void 0))return;this.cachePoint=e,e&&this.worker.originalEventLintener(de.Doing,e,this.viewId)}}});x(this,"pointerup",r=>{if(this.active&&(r.pointerType==="touch"&&this.activePointers.delete(r.pointerId),!(this.currentDrawingPointerId!==void 0&&r.pointerId!==this.currentDrawingPointerId))){if(this.currentDrawingPointerId===void 0){this.clearPointerDocumentEvents();return}if(!this.pointLimitStopPending){if(r.pointerType==="touch"&&(this.activePointers.size>0||!this.worker.isAbled())){this.cancelPointerDrawing("touch-pointer-up-invalid",!0);return}if(r.button===0&&this.viewId){const e=this.getPoint(r)||this.cachePoint;e?this.finishPointerDone(e):this.cancelPointerDrawing("pointer-up-without-point")}r.pointerType==="touch"&&this.activePointers.size===0&&this.activePointers.clear()}}});x(this,"pointercancel",r=>{this.pointLimitStopPending||this.currentDrawingPointerId!==void 0&&r.pointerId!==this.currentDrawingPointerId||this.cancelPointerDrawing("pointer-cancel")});x(this,"touchstart",r=>{var t;if(this.pointerDonePromise)return;if(this.active&&this.consumeClickerEvent(r)){const n=this.getPoint(r);n&&this.worker.sendCursorEvent(n,this.viewId);return}if(!this.active||this.worker.isViewBusy(this.viewId)||this.control.isSceneBusy(this.viewId))return;if(r.touches.length!==1){this.cancelTouchDrawing();return}if(r.preventDefault(),!this.viewId)return;this.toolsKey=(t=this.worker.getCurrentToolsData())==null?void 0:t.toolsType,!this.worker.isAbled()&&this.toolsKey&&this.control.effectViewContainer(this.toolsKey),this.worker.checkDrawingWork(this.viewId);const e=this.getPoint(r);this.cachePoint=e,e&&(this.localBitmapEraserPointCount=this.isBitmapEraserTool()?1:0,this.isTouchDrawing=!0,this.worker.originalEventLintener(de.Start,e,this.viewId),document.addEventListener("touchmove",this.touchmove,{passive:!1}),document.addEventListener("touchend",this.touchend,!1),document.addEventListener("touchcancel",this.touchcancel,!1))});x(this,"touchmove",r=>{if(!this.active||!this.isTouchDrawing)return;if(r.touches.length!==1||!this.worker.isAbled()){this.cancelTouchDrawing();return}r.preventDefault();const e=this.getPoint(r);this.checkConsumeCount(e!==void 0)||(this.cachePoint=e,e&&this.worker.originalEventLintener(de.Doing,e,this.viewId))});x(this,"touchend",r=>{if(!this.active||!this.isTouchDrawing||this.pointLimitStopPending)return;if(r.touches.length>0||!this.worker.isAbled()){this.cancelTouchDrawing();return}r.preventDefault();const e=this.getPoint(r)||this.cachePoint;e?this.finishPointerDone(e):(this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0)});x(this,"touchcancel",()=>{this.pointLimitStopPending||this.cancelTouchDrawing("touch-cancel",!1)});this.control=r,this.internalMsgEmitter=e;const n={control:this.control,internalMsgEmitter:this.internalMsgEmitter,viewId:t,enableGlobal:!!this.control.pluginOptions.extras.undoRedo.enableGlobal};this.commiter=new Ku(n),this.cursorMouseMoveFun=i=>{const o=this.getPoint(i);this.cacheCursorPoint&&ye.isEqual(o,this.cacheCursorPoint)||(this.cacheCursorPoint=o,o&&this.worker.sendCursorEvent(o,this.viewId))},this.cursorMouseMoveDebounced=ye.debounce(this.cursorMouseMoveFun,this.moveDelayTime,{trailing:!0}),this.cursorMouseMoveThrottled=ye.throttle(this.cursorMouseMoveFun,this.moveDelayTime,{leading:!0}),this.cursorMouseMove=i=>{this.consumeClickerEvent(i),this.control.pluginOptions.extras.cursor.enable?this.cursorMouseMoveThrottled(i):this.cursorMouseMoveDebounced(i)},this.setActive(r.renderControl.isWritable)}consumeClickerEvent(r){var e;return((e=this.worker.getCurrentToolsData())==null?void 0:e.toolsType)!==q.Clicker?!1:(r.preventDefault(),r.stopPropagation(),r.stopImmediatePropagation(),!0)}get moveDelayTime(){var r,e;return((e=(r=this.control.pluginOptions.extras)==null?void 0:r.cursor)==null?void 0:e.moveDelayTime)??He.cursor.moveDelayTime}requestDprUpdate(r){r===this.dpr&&this.pendingDpr===void 0||this.pendingDpr!==r&&(this.pendingDpr=r,this.worker.updateDpr(this.viewId,r))}commitDprUpdate(r){var e;this.pendingDpr===r&&(this.pendingDpr=void 0),this.dpr!==r&&(this.dpr=r,this.resizeCanvasBackingStore(),(e=this.vDom)==null||e.setDpr(r))}cancelDprUpdate(){this.pendingDpr=void 0}resizeCanvasBackingStore(){var n;if(this.control.isUseOffscreenTransfer)return;const r=this.width*this.dpr,e=this.height*this.dpr,t=[this.canvasBgRef.current,this.canvasFloatRef.current,this.canvasServiceFloatRef.current,(n=this.canvasTopRef)==null?void 0:n.current];for(const i of t)i&&(i.width=r,i.height=e)}observeDpr(){if(this.stopObservingDpr(),typeof window>"u"||!window.matchMedia)return;const r=window.devicePixelRatio||1,e=window.matchMedia(`(resolution: ${r}dppx)`),t=()=>{this.observeDpr(),this.setCanvassStyle()};this.dprMediaQuery=e,this.dprMediaQueryListener=t,e.addEventListener?e.addEventListener("change",t):e.addListener(t)}stopObservingDpr(){const r=this.dprMediaQuery,e=this.dprMediaQueryListener;r&&e&&(r.removeEventListener?r.removeEventListener("change",e):r.removeListener(e)),this.dprMediaQuery=void 0,this.dprMediaQueryListener=void 0}setTransferControlToOffscreenCanvas(r){this._transferControlToOffscreenCanvas={bgCanvas:r.bgCanvas.transferControlToOffscreen(),serviceCanvas:r.serviceCanvas.transferControlToOffscreen(),localCanvas:r.localCanvas.transferControlToOffscreen()}}async resetRenderSurface(){var r;this._transferControlToOffscreenCanvas=void 0,await((r=this.vDom)==null?void 0:r.resetRenderSurface()),this.resizeCanvasBackingStore()}get transferControlToOffscreenCanvas(){return this._transferControlToOffscreenCanvas}get worker(){return this.control.worker}bindToolsClass(){var c,l,u;const r=(l=(c=this.worker)==null?void 0:c.currentToolsData)==null?void 0:l.toolsType,e=this.control.renderControl.isWritable,t=this.worker.isAbled(),n=(u=this.control.room)==null?void 0:u.state.memberState,i=_we(n,r),o=[],a=e&&t;if(a&&i){o.push(i.hostClassName),o.push(`cursor-tool-${i.classSuffix}`);const h=new rM(this.control.pluginOptions.extras.cursor),d=h.getLocalCursorOwnership(i.applianceKey),f=h.getLocal(i.applianceKey);o.push(d==="custom"?"custom-cursor":"plugin-cursor",`${d==="custom"?"custom-cursor":"plugin-cursor"}-${i.classSuffix}`),this.eventTragetElement&&this.eventTragetElement.style.setProperty("cursor",eSe(f),"important")}this.eventTragetElement&&(this.eventTragetElement.classList.remove(...this.appliedCursorClassNames),o.length&&this.eventTragetElement.classList.add(...o),this.appliedCursorClassNames=o,(!a||!i)&&this.eventTragetElement.style.removeProperty("cursor"))}mountView(){this.setCanvassStyle(),this.observeDpr(),this.control.viewContainerManager.mountView(this.viewId).catch(r=>{var t,n;const e=r instanceof Error?r.message:String(r);(n=(t=this.control.logger)==null?void 0:t.error)==null||n.call(t,`[Appliance]: view mount failed viewId=${this.viewId} error=${e}`)})}updateSize(){this.setCanvassStyle(),this.reflashContainerOffset()}reflashContainerOffset(){this.eventTragetElement&&(this.containerOffset=this.getContainerOffset(this.eventTragetElement,{x:0,y:0}))}get parentElement(){var r;return(r=this.eventTragetElement)==null?void 0:r.parentElement}destroy(){this.cancelPointerDrawing("destroy"),this.pointerDonePromise=void 0,this.cancelDprUpdate(),this.stopObservingDpr(),this.cursorMouseMoveDebounced.cancel(),this.cursorMouseMoveThrottled.cancel(),this.commiter.destroy(),this.eventTragetElement&&this.removeDisplayerEvent(this.eventTragetElement),this.vDom=void 0,this.control.cursor.clearViewCursor(this.viewId),this.internalMsgEmitter.removeAllListeners([We.Cursor,this.viewId])}getPoint(r){if(!this.eventTragetElement)return;const e=NMe(r);if(!ye.isNumber(e.x)||!ye.isNumber(e.y))return;const t=this.eventTragetElement.getBoundingClientRect();return[e.x-t.left,e.y-t.top]}getActive(){return this.active}setActive(r){this.active=r,this.control.isUseBackgroundThread&&this.backgroundContainerRef&&this.backgroundContainerRef.current&&this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",r)}focusElement(){var r;(r=this.eventTragetElement)==null||r.focus()}async stopEventHandler(){if(this.pointerDonePromise){await this.pointerDonePromise;return}this.cachePoint&&await this.finishPointerDone(this.cachePoint)}finishPointerDone(r,e=0){if(this.pointerDonePromise)return this.pointerDonePromise;const t=this.currentPointerDrawingSession,n=this.viewId,i=this.toolsKey;this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0,this.currentPointerDrawingSession=void 0,this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0;let o;try{e>0?o=(async()=>{if(await this.worker.waitForLocalEventQueue(n),this.worker.getLocalInputPointCount(n,i)<e){this.worker.removeDrawingWork(n);return}await this.worker.originalEventLintener(de.Done,r,n)})():o=Promise.resolve(this.worker.originalEventLintener(de.Done,r,n))}catch(c){o=Promise.reject(c)}const a=o.finally(()=>{this.pointerDonePromise===a&&(this.pointerDonePromise=void 0,this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.activePointers.clear(),this.currentDrawingPointerId=void 0,(t===void 0||t===this.currentPointerDrawingSession)&&(this.currentPointerDrawingSession=void 0),this.isTouchDrawing=!1,this.localBitmapEraserPointCount=0)});return this.pointerDonePromise=a,a.catch(()=>{}),a}getTranslate(r){const t=(r.style.WebkitTransform||getComputedStyle(r,"").getPropertyValue("-webkit-transform")||r.style.transform||getComputedStyle(r,"").getPropertyValue("transform")).match(/-?[0-9]+\.?[0-9]*/g),n=t&&parseInt(t[0])||0,i=t&&parseInt(t[1])||0;return[n,i]}getContainerOffset(r,e){var i;const t=this.getTranslate(r);let n={x:e.x+r.offsetLeft-r.scrollLeft+t[0],y:e.y+r.offsetTop-r.scrollTop+t[1]};return(i=r.offsetParent)!=null&&i.nodeName&&r.offsetParent.nodeName!=="BODY"&&(n=this.getContainerOffset(r.offsetParent,n)),n}addPointerDocumentEvents(){document.addEventListener("pointermove",this.pointermove,!1),document.addEventListener("pointerup",this.pointerup,!1),document.addEventListener("pointercancel",this.pointercancel,!1),document.addEventListener("visibilitychange",this.visibilitychange,!1),window.addEventListener("blur",this.windowBlur,!1)}clearPointerDocumentEvents(){document.removeEventListener("pointermove",this.pointermove,!1),document.removeEventListener("pointerup",this.pointerup,!1),document.removeEventListener("pointercancel",this.pointercancel,!1),document.removeEventListener("visibilitychange",this.visibilitychange,!1),window.removeEventListener("blur",this.windowBlur,!1)}resetPointerDrawingState(){this.cachePoint=void 0,this.currentDrawingPointerId=void 0,this.currentPointerDrawingSession=void 0,this.activePointers.clear(),this.localBitmapEraserPointCount=0}cancelPointerDrawing(r,e=!1){const t=this.currentDrawingPointerId!==void 0;if(t&&r!=="destroy"&&!e&&this.toolsKey===q.Pencil&&this.cachePoint){this.finishPointerDone(this.cachePoint,em);return}t&&this.viewId&&(e&&this.worker.unWritable(),this.worker.removeDrawingWork(this.viewId)),this.clearPointerDocumentEvents(),this.resetPointerDrawingState()}clearTouchDocumentEvents(){document.removeEventListener("touchmove",this.touchmove,!1),document.removeEventListener("touchend",this.touchend,!1),document.removeEventListener("touchcancel",this.touchcancel,!1)}cancelTouchDrawing(r="invalid-touch",e=!0){if(this.isTouchDrawing&&r==="touch-cancel"&&!e&&this.toolsKey===q.Pencil&&this.cachePoint){this.finishPointerDone(this.cachePoint,em);return}this.isTouchDrawing&&(e&&this.worker.unWritable(),this.viewId&&this.worker.removeDrawingWork(this.viewId)),this.clearTouchDocumentEvents(),this.cachePoint=void 0,this.localBitmapEraserPointCount=0,this.isTouchDrawing=!1}suppressNativeTouchGestures(r){var e;((e=this.eventTargetTouchAction)==null?void 0:e.element)!==r&&(this.restoreNativeTouchGestures(),this.eventTargetTouchAction={element:r,value:r.style.getPropertyValue("touch-action"),priority:r.style.getPropertyPriority("touch-action")},r.style.setProperty("touch-action","none","important"))}restoreNativeTouchGestures(r){const e=this.eventTargetTouchAction;!e||r&&e.element!==r||(e.value?e.element.style.setProperty("touch-action",e.value,e.priority):e.element.style.removeProperty("touch-action"),this.eventTargetTouchAction=void 0)}bindDisplayerEvent(r){this.suppressNativeTouchGestures(r),"PointerEvent"in window?r.addEventListener("pointerdown",this.pointerdown,!1):r.addEventListener("touchstart",this.touchstart,{passive:!1}),this.cursorEventElement=r.parentElement||r,this.cursorEventElement.addEventListener("mousemove",this.cursorMouseMove,!0),this.cursorEventElement.addEventListener("mouseleave",this.cursorMouseLeave,!1),r.addEventListener("keydown",this.keydown,!0)}removeDisplayerEvent(r){var e,t;r.removeEventListener("pointerdown",this.pointerdown,!1),r.removeEventListener("touchstart",this.touchstart,!1),this.restoreNativeTouchGestures(r),this.clearPointerDocumentEvents(),this.clearTouchDocumentEvents(),(e=this.cursorEventElement)==null||e.removeEventListener("mousemove",this.cursorMouseMove,!0),(t=this.cursorEventElement)==null||t.removeEventListener("mouseleave",this.cursorMouseLeave,!1),this.cursorEventElement=void 0,r.removeEventListener("keydown",this.keydown,!0)}get isBezier(){return this.control.pluginOptions.extras.bezier.enable}get maxDrawCount(){return this.control.pluginOptions.extras.bezier.maxDrawCount||He.bezier.maxDrawCount}isBitmapEraserTool(){const r=this.worker.getCurrentToolsData();return this.toolsKey===q.BitMapEraser&&(r==null?void 0:r.toolsType)===q.BitMapEraser}getFullLayerBitmapEraserMaxInputPoints(){var e;const r=this.worker.getCurrentToolsData();return this.toolsKey!==q.BitMapEraser||(r==null?void 0:r.toolsType)!==q.BitMapEraser?0:Pc((e=r.toolsOpt)==null?void 0:e.fullLayerDoingMaskMaxInputPoints)}checkConsumeCount(r=!0){if(this.pointLimitStopPending)return!0;const e=this.isBitmapEraserTool(),t=e?this.getFullLayerBitmapEraserMaxInputPoints():0;if(e&&r&&Math.max(this.localBitmapEraserPointCount,this.worker.getLocalInputPointCount(this.viewId,q.BitMapEraser))>=t)return this.pointLimitStopPending=!0,this.stopEventHandler().catch(i=>{this.control.logger.error(`[Appliance]: Bitmap Eraser force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",Ds.longBitmapEraser,this.viewId),this.pointLimitStopPending=!1,this.localBitmapEraserPointCount=0}),!0;e&&r&&(this.localBitmapEraserPointCount++,this.localBitmapEraserPointCount>=t&&(this.pointLimitStopPending=!0,Promise.resolve().then(()=>this.stopEventHandler()).catch(i=>{this.control.logger.error(`[Appliance]: Bitmap Eraser force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",Ds.longBitmapEraser,this.viewId),this.pointLimitStopPending=!1,this.localBitmapEraserPointCount=0})));const n=this.worker.getConsumeCount();return this.cachePoint&&this.toolsKey&&this.toolsKey===q.Pencil&&n>this.maxDrawCount?(this.stopEventHandler().catch(i=>{this.control.logger.error(`[Appliance]: Pencil force-Done failed: ${i instanceof Error?i.message:String(i)}`)}).finally(()=>{this.worker.publicMsgEmitter.emit("forceStop",Ds.longPencil,this.viewId)}),!0):!1}}class sSe extends oM{constructor(e,t,n){super(t,n,e);x(this,"_viewId");this._viewId=e}get viewId(){return this._viewId}setViewId(e){this._viewId=e}}class aM extends oM{constructor(r,e){super(r,e,Fe)}get viewId(){return Fe}updateSize(){this.setCanvassStyle()}}const oSe="index-module__Container__nLsM3",aSe="index-module__BackgroundBox__zfthZ",cSe="index-module__BackgroundSvgBox__Fv1ay",lSe="index-module__BackgroundSnapshotContent__NFLAl",uSe="index-module__BackgroundSnapshotBox__NEM-C",hSe="index-module__CanvasBox__j2Xe-",dSe="index-module__FloatCanvas__d1YR7",fSe="index-module__TopFloatCanvas__7IaCw",gSe="index-module__CanvasBoxSub__hcMeK",pSe="index-module__SnapshotBox__--eeE",mSe="index-module__FloatBar__cm-EL",ySe="index-module__RotateBtn__HSSkf",vSe="index-module__ResizeBtn__yjvda",MSe="index-module__CursorBox__2UHvI",wSe="index-module__TextEditorContainer__Qm8KC",SSe="index-module__ResizeTowBox__HOllX",TSe="index-module__FloatBarBtn__FJrOG",mt={Container:oSe,BackgroundBox:aSe,BackgroundSvgBox:cSe,BackgroundSnapshotContent:lSe,BackgroundSnapshotBox:uSe,CanvasBox:hSe,FloatCanvas:dSe,TopFloatCanvas:fSe,CanvasBoxSub:gSe,SnapshotBox:pSe,FloatBar:mSe,RotateBtn:ySe,ResizeBtn:vSe,CursorBox:MSe,TextEditorContainer:wSe,ResizeTowBox:SSe,FloatBarBtn:TSe},CSe={delete:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDZ2NmEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2aDBtMS0yYTIgMiAwIDAgMSAyLTJoMmEyIDIgMCAwIDEgMiAyaDBNMyA0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",duplicate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0xMSAySDZhMSAxIDAgMCAwLTEgMXY4YTEgMSAwIDAgMCAxIDFoNmExIDEgMCAwIDAgMS0xVjRoMGwtMi0yeiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PHBhdGggZD0iTTExIDJ2MWExIDEgMCAwIDAgMSAxaDFsLTItMnoiLz48cGF0aCBkPSJNOSAxNEg0YTEgMSAwIDAgMS0xLTFWNWgwIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L2c+PC9zdmc+","layer-pressed":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzMzODFGRiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",layer:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2IDEwLTYgNCA2IDQgNi00em0tNiA4IDYgNCA2LTQiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+",rotate:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEzIDZhNiA2IDAgMSAxLTMuNzA5IDEuMjgzIi8+PHBhdGggZD0ibTEzIDYgMS40MTQgMi40NUwxMyA2bDIuNDUtMS40MTQiLz48L2c+PC9zdmc+","rotation-button":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+",rotation:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjRkZGIiBvcGFjaXR5PSIuMDEiIGQ9Ik0wIDI0VjBoMjR2MjR6Ii8+PHBhdGggZD0iTTUuNzI0IDUuNzI0QTguODQ3IDguODQ3IDAgMCAxIDEyIDMuMTI1YzIuMjcxIDAgNC41NDMuODY2IDYuMjc2IDIuNmE4Ljg0NiA4Ljg0NiAwIDAgMSAyLjU5OCA2LjE0IDguODQ5IDguODQ5IDAgMCAxLTIuNTU5IDYuMzdsLTEuNS0uOTgzQTcuMTA1IDcuMTA1IDAgMCAwIDE5LjEyNSAxMmE3LjEwMyA3LjEwMyAwIDAgMC0yLjA4Ny01LjAzOEE3LjEwMyA3LjEwMyAwIDAgMCAxMiA0Ljg3NWE3LjEwMyA3LjEwMyAwIDAgMC01LjAzOCAyLjA4NyA3LjEwMSA3LjEwMSAwIDAgMC0yLjA4NiA0LjkyIDcuMTAzIDcuMTAzIDAgMCAwIDEuNzY2IDQuODE1bDEuOTQ1LTEuNTg0IDIuMzk0IDcuMTgyLTcuMjIyLTIuNDA4IDEuNzkxLTEuNzlBOC44NDYgOC44NDYgMCAwIDEgMy4xMjUgMTJjMC0yLjI3MS44NjYtNC41NDMgMi42LTYuMjc2eiIgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9Ii41IiBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48L2c+PC9zdmc+","font-colors-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","font-colors":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQgMTEgNC05IDQgOU02IDdoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","to-bottom":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDEwdjhtMCAwLTItMm0yIDIgMi0ybS00IDZoMTJtLTYtNGg2bS02LTRoNm0tNi00aDYiIHN0cm9rZT0iIzQ0NEU2MCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+PC9zdmc+","to-top":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDIydi04bTAgMC0yIDJtMi0yIDIgMm0tNC02aDEybS02IDRoNm0tNiA0aDZtLTYgNGg2IiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","bold-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",bold:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQuNSAySDhhMi41IDIuNSAwIDAgMSAwIDVINS41aDBtLTEgMGg0YTMgMyAwIDAgMSAwIDZoLTQgMG0wIDFWMiIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","underline-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==",underline:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTEyIDJ2NWE0IDQgMCAxIDEtOCAwVjJoME0zIDE0aDEwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiMzMzgxRkYiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","line-through":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQgOGg4bS0xLTNhMyAzIDAgMCAwLTMtM2gtLjkzOEEyLjY0IDIuNjQgMCAwIDAgNC41IDRhMi41NyAyLjU3IDAgMCAwIDEuMzQ0IDIuOTIybDQuMzEyIDIuMTU2QTIuNTcgMi41NyAwIDAgMSAxMS41IDEyYTIuNjQgMi42NCAwIDAgMS0yLjU2MiAySDdhMyAzIDAgMCAxLTMtM2gwIiBzdHJva2U9IiM0NDRFNjAiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjwvc3ZnPg==","italic-active":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjMzM4MUZGIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=",italic:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcgMTQgOSAyTTUgMTRoNE03IDJoNCIgc3Ryb2tlPSIjNDQ0RTYwIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L3N2Zz4=","unlock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiMzMzgxRkYiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0xYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDN2MyIgc3Ryb2tlPSIjMzM4MUZGIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+","lock-new":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiM0NDRFNjAiIGN4PSIxNiIgY3k9IjE3IiByPSIxIi8+PHJlY3Qgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHg9IjExIiB5PSIxNCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjgiIHJ4PSIyIi8+PHBhdGggZD0iTTEzIDE0di0zYTMgMyAwIDAgMSA2IDB2MWgwbS0zIDV2MyIgc3Ryb2tlPSIjNDQ0RTYwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48L2c+PC9zdmc+",shapes:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","shapes-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTY4Mi42NjY2NjcgMTAyNEM2ODIuNjY2NjY3IDEwMjQgNjgyLjY2NjY2NyAxMDI0IDY4Mi42NjY2NjcgMTAyNEwxNzAuNjY2NjY3IDEwMjRjLTE3LjA2NjY2NyAwLTI5Ljg2NjY2Ny04LjUzMzMzMy0zOC40LTIxLjMzMzMzMy04LjUzMzMzMy0xMi44LTguNTMzMzMzLTI5Ljg2NjY2NyAwLTQyLjY2NjY2N2wyNTYtMzg0YzE3LjA2NjY2Ny0yNS42IDU1LjQ2NjY2Ny0yNS42IDcyLjUzMzMzMyAwbDI1MS43MzMzMzMgMzc5LjczMzMzM2M4LjUzMzMzMyA4LjUzMzMzMyAxMi44IDE3LjA2NjY2NyAxMi44IDI5Ljg2NjY2N0M3MjUuMzMzMzMzIDEwMDYuOTMzMzMzIDcwOC4yNjY2NjcgMTAyNCA2ODIuNjY2NjY3IDEwMjR6TTI1MS43MzMzMzMgOTM4LjY2NjY2N2wzNTQuMTMzMzMzIDBMNDI2LjY2NjY2NyA2NzQuMTMzMzMzIDI1MS43MzMzMzMgOTM4LjY2NjY2N3oiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48cGF0aCBkPSJNOTgxLjMzMzMzMyA3MjUuMzMzMzMzbC0zNDEuMzMzMzMzIDBjLTI1LjYgMC00Mi42NjY2NjctMTcuMDY2NjY3LTQyLjY2NjY2Ny00Mi42NjY2NjdMNTk3LjMzMzMzMyAzNDEuMzMzMzMzYzAtMjUuNiAxNy4wNjY2NjctNDIuNjY2NjY3IDQyLjY2NjY2Ny00Mi42NjY2NjdsMzQxLjMzMzMzMyAwYzI1LjYgMCA0Mi42NjY2NjcgMTcuMDY2NjY3IDQyLjY2NjY2NyA0Mi42NjY2NjdsMCAzNDEuMzMzMzMzQzEwMjQgNzA4LjI2NjY2NyAxMDA2LjkzMzMzMyA3MjUuMzMzMzMzIDk4MS4zMzMzMzMgNzI1LjMzMzMzM3pNNjgyLjY2NjY2NyA2NDBsMjU2IDBMOTM4LjY2NjY2NyAzODRsLTI1NiAwTDY4Mi42NjY2NjcgNjQweiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjxwYXRoIGQ9Ik0yNzcuMzMzMzMzIDU1NC42NjY2NjdDMTIzLjczMzMzMyA1NTQuNjY2NjY3IDAgNDMwLjkzMzMzMyAwIDI3Ny4zMzMzMzNTMTIzLjczMzMzMyAwIDI3Ny4zMzMzMzMgMCA1NTQuNjY2NjY3IDEyMy43MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDQzMC45MzMzMzMgNTU0LjY2NjY2NyAyNzcuMzMzMzMzIDU1NC42NjY2Njd6TTI3Ny4zMzMzMzMgODUuMzMzMzMzQzE3MC42NjY2NjcgODUuMzMzMzMzIDg1LjMzMzMzMyAxNzAuNjY2NjY3IDg1LjMzMzMzMyAyNzcuMzMzMzMzUzE3MC42NjY2NjcgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDQ2OS4zMzMzMzMgNDY5LjMzMzMzMyAzODQgNDY5LjMzMzMzMyAyNzcuMzMzMzMzIDM4NCA4NS4zMzMzMzMgMjc3LjMzMzMzMyA4NS4zMzMzMzN6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","font-style-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","font-style":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTM2MC4yMzQ2NjcgMjEzLjMzMzMzM0w1NTQuNjY2NjY3IDc3Ni4yNzczMzNoLTc2LjU0NGwtNTQuNjEzMzM0LTE3Mi4wMzJIMjE0LjE4NjY2N2wtNTUuNDY2NjY3IDE3Mi4wMzJIODUuMzMzMzMzTDI3OS43NjUzMzMgMjEzLjMzMzMzM2g4MC40NjkzMzR6IG00MTAuMDI2NjY2IDE3My44MjRjOTAuMTEyIDAgMTI4LjM0MTMzMyA2MC43NTczMzMgMTI4LjM0MTMzNCAxNTIuMjM0NjY3djIyOC4wMTA2NjdoLTUxLjJsLTUuNDYxMzM0LTQ0LjM3MzMzNGgtMi4wNDhjLTM1LjQ5ODY2NyAyOS4zNTQ2NjctNzcuMTQxMzMzIDUzLjI0OC0xMjIuODggNTMuMjQ4LTYyLjEyMjY2NyAwLTEwOC41NDQtMzguMjI5MzMzLTEwOC41NDQtMTA1LjEzMDY2NiAwLTgwLjU1NDY2NyA3MC4zMTQ2NjctMTIwLjgzMiAyMjguMDEwNjY3LTEzOC41ODEzMzQgMC00Ny43ODY2NjctMTUuNzAxMzMzLTkzLjUyNTMzMy03Ni40NTg2NjctOTMuNTI1MzMzLTQzLjAwOCAwLTgxLjkyIDE5Ljc5NzMzMy0xMTEuMjc0NjY2IDM5LjU5NDY2N2wtMjQuNTc2LTQzLjAwOGMzNC4xMzMzMzMtMjEuODQ1MzMzIDg2LjY5ODY2Ny00OC40NjkzMzMgMTQ2LjA5MDY2Ni00OC40NjkzMzR6IG02Ni4yMTg2NjcgMTg2LjM2OGMtMTI0LjkyOCAxNS4wMTg2NjctMTY3LjI1MzMzMyA0NS43Mzg2NjctMTY3LjI1MzMzMyA5My41MjUzMzQgMCA0Mi4zMjUzMzMgMjguNjcyIDU5LjM5MiA2NS41MzYgNTkuMzkyIDM2LjE4MTMzMyAwIDY1LjUzNi0xNy4wNjY2NjcgMTAxLjcxNzMzMy00OS4xNTJ6TTMyMC4zODQgMjcwLjkzMzMzM2gtMy4xMTQ2NjdjLTE3Ljk2MjY2NyA2Ni4wNDgtMzYuNjkzMzMzIDEyNi43Mi01Ny4wMDI2NjYgMTkwLjQ2NGwtMjguMTYgODYuMDE2aDE3My4zOTczMzNsLTI3LjMwNjY2Ny04Ni4wMTZBNDkxMy40OTMzMzMgNDkxMy40OTMzMzMgMCAwIDEgMzIwLjM4NCAyNzAuOTMzMzMzeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",polygon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==","polygon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkzMy4xMiA0OTAuNjY2NjY3bC0xOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTM3LjEyLTIxLjMzMzMzM2gtMzg0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtMzcuMTIgMjEuMzMzMzMzbC0xOTIgMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAgNDIuNjY2NjY2bDE5MiAzMzIuMzczMzM0YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAgMzcuMTIgMjEuMzMzMzMzaDM4NGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDM3LjEyLTIxLjMzMzMzM2wxOTItMzMyLjM3MzMzNGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDAtNDIuNjY2NjY2eiBtLTI1NiAzMTEuMDRIMzQ0Ljc0NjY2N0wxNzcuMDY2NjY3IDUxMmwxNjcuNjgtMjg5LjcwNjY2N2gzMzQuNTA2NjY2TDg0Ni45MzMzMzMgNTEyeiIgZmlsbD0iIzMzODFGRiI+PC9wYXRoPjwvc3ZnPg==","polygon-vertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTA3NyAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU0My40NzQ1MjYgNDIuMzA3MzY4YTExOS4zNzY4NDIgMTE5LjM3Njg0MiAwIDAgMSAxMTAuODA3NTc5IDE2My44NGwxOTAuNTcxNzkgMTM4LjYxNzI2NGExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEgODMuMzc1MTU4IDIxOC43MDQ4NDJsLTc0LjMyMDg0MiAyMjguODM3MDUyYTExOS4zMjI5NDcgMTE5LjMyMjk0NyAwIDAgMS02MS4yNzgzMTYgMjIxLjg4NDYzMmMtNDYuNzgwNjMyIDAtODcuMzA5NDc0LTI2Ljk0NzM2OC0xMDYuODczMjYzLTY2LjEyODg0MmgtMjg5LjQxNDczN2ExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAxIDEtMTc5LjczODk0OC0xNDcuODMzMjYzbC03Mi4yNzI4NDItMjIyLjY5MzA1My0zLjM5NTM2OCAwLjEwNzc4OUExMTkuMzc2ODQyIDExOS4zNzY4NDIgMCAwIDEgMjEuODI3MzY4IDQ2Ni43Mjg0MjFMMjEuNTU3ODk1IDQ1OC4yMTMwNTNhMTE5LjM3Njg0MiAxMTkuMzc2ODQyIDAgMCAxIDE4My44MzQ5NDctMTAwLjUxMzY4NWwyMjMuNTAxNDc0LTE2Mi4zODQ4NDJhMTE5LjQzMDczNyAxMTkuNDMwNzM3IDAgMCAxIDExNC41ODAyMS0xNTMuMDYxMDUyek0yODkuNDE0NzM3IDg0MC4wNTcyNjNhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6IG01MDMuMTYxMjYzIDBhNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDEgMCAwIDEwOS40MDYzMTYgNTQuNzAzMTU4IDU0LjcwMzE1OCAwIDAgMCAwLTEwOS40MDYzMTZ6TTQ2Mi42ODYzMTYgMjQ5LjU4NjUyNkwyNDguMTMxMzY4IDQwNS41NTc4OTVhMTE5LjMyMjk0NyAxMTkuMzIyOTQ3IDAgMCAxLTQyLjg0NjMxNSAxNTMuMjIyNzM3bDcwLjcwOTg5NCAyMTcuMzU3NDczYTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMSAxMzIuNDE5MzY5IDEwOC4yMjA2MzJINjczLjY4NDIxMWExMTkuNDMwNzM3IDExOS40MzA3MzcgMCAwIDEgMTE5LjE2MTI2My0xMDguOTc1MTU4bDcxLjE0MTA1Mi0yMTguOTc0MzE2YTExOS40MzA3MzcgMTE5LjQzMDczNyAwIDAgMS02Mi4wODY3MzctMTY0LjIxNzI2M2wtMTg2LjM2OC0xMzUuMjc1Nzg5Yy0xOS45OTQ5NDcgMTUuMDkwNTI2LTQ1LjAwMjEwNSAyNC4xNDQ4NDItNzIuMDU3MjYzIDI0LjE0NDg0MmExMTguOTQ1Njg0IDExOC45NDU2ODQgMCAwIDEtODAuNzg4MjEtMzEuNDc0NTI3eiBtLTMyMS43NTE1NzkgMTUzLjkyMzM2OWE1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQwNjMxNiA1NC43MDMxNTggNTQuNzAzMTU4IDAgMCAwIDAtMTA5LjQwNjMxNnogbTc2Ny43MzA1MjYtMTIuNTU3NDc0YTU0LjcwMzE1OCA1NC43MDMxNTggMCAxIDAgMCAxMDkuNDA2MzE2IDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE2eiBtLTM2NS4xOTA3MzctMjg0LjAyNTI2M2E1NC43MDMxNTggNTQuNzAzMTU4IDAgMSAwIDAgMTA5LjQ2MDIxIDU0LjcwMzE1OCA1NC43MDMxNTggMCAwIDAgMC0xMDkuNDA2MzE1eiIgZmlsbD0iIzQ0NEU2MCI+PC9wYXRoPjwvc3ZnPg==",star:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjNDQ0RTYwIj48L3BhdGg+PC9zdmc+","star-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTkwOC4xIDM1My4xbC0yNTMuOS0zNi45TDU0MC43IDg2LjFjLTMuMS02LjMtOC4yLTExLjQtMTQuNS0xNC41LTE1LjgtNy44LTM1LTEuMy00Mi45IDE0LjVMMzY5LjggMzE2LjJsLTI1My45IDM2LjljLTcgMS0xMy40IDQuMy0xOC4zIDkuMy0xMi4zIDEyLjctMTIuMSAzMi45IDAuNiA0NS4zbDE4My43IDE3OS4xLTQzLjQgMjUyLjljLTEuMiA2LjktMC4xIDE0LjEgMy4yIDIwLjMgOC4yIDE1LjYgMjcuNiAyMS43IDQzLjIgMTMuNEw1MTIgNzU0bDIyNy4xIDExOS40YzYuMiAzLjMgMTMuNCA0LjQgMjAuMyAzLjIgMTcuNC0zIDI5LjEtMTkuNSAyNi4xLTM2LjlsLTQzLjQtMjUyLjkgMTgzLjctMTc5LjFjNS00LjkgOC4zLTExLjMgOS4zLTE4LjMgMi43LTE3LjUtOS41LTMzLjctMjctMzYuM3pNNjY0LjggNTYxLjZsMzYuMSAyMTAuM0w1MTIgNjcyLjcgMzIzLjEgNzcybDM2LjEtMjEwLjMtMTUyLjgtMTQ5TDQxNy42IDM4MiA1MTIgMTkwLjcgNjA2LjQgMzgybDIxMS4yIDMwLjctMTUyLjggMTQ4Ljl6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PC9zdmc+","star-innerVertex":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTg1LjMzMzMzMyAwYTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODEuNDA4IDU5LjczMzMzM2g0OC4yMTMzMzR2ODUuMzMzMzM0TDE3MC42NjY2NjcgMTQ0Ljk4MTMzM1Y4NTMuMzMzMzMzaDY5My4zMzMzMzNsLTI2LjQ1MzMzMy02My40ODggNzguNzYyNjY2LTMyLjc2OCAzMi44NTMzMzQgNzguNzYyNjY3LTQyLjI0IDE3LjQ5MzMzM0g5MzguNjY2NjY3YTg1LjMzMzMzMyA4NS4zMzMzMzMgMCAwIDEgODQuNzM2IDc1LjM0OTMzNEwxMDI0IDkzOC42NjY2NjdhODUuMzMzMzMzIDg1LjMzMzMzMyAwIDAgMS0xNzAuNjY2NjY3IDBIMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxLTg1LjMzMzMzNC04NS4zMzMzMzRWMTcwLjY2NjY2N2E4NS4zMzMzMzMgODUuMzMzMzMzIDAgMSAxIDAtMTcwLjY2NjY2N3ogbTc2NS4zNTQ2NjcgNTk5LjQ2NjY2N2wzMi44NTMzMzMgNzguNzYyNjY2LTc4Ljg0OCAzMi44NTMzMzQtMzIuNzY4LTc4Ljc2MjY2NyA3OC43NjI2NjctMzIuODUzMzMzeiBtLTY1LjcwNjY2Ny0xNTcuNTI1MzM0bDMyLjg1MzMzNCA3OC43NjI2NjctNzguNzYyNjY3IDMyLjg1MzMzMy0zMi43NjgtNzguNzYyNjY2IDc4Ljc2MjY2Ny0zMi44NTMzMzR6TTcxOS4zNiAyODQuNDE2bDMyLjg1MzMzMyA3OC43NjI2NjctNzguNzYyNjY2IDMyLjg1MzMzMy0zMi44NTMzMzQtNzguNzYyNjY3IDc4Ljc2MjY2Ny0zMi44NTMzMzN6IG0tNjUuNjIxMzMzLTE1Ny41MjUzMzNsMzIuODUzMzMzIDc4Ljc2MjY2Ni03OC43NjI2NjcgMzIuODUzMzM0LTMyLjg1MzMzMy03OC43NjI2NjcgNzguNzYyNjY3LTMyLjg1MzMzM3pNMzg1LjcwNjY2NyA1OS43MzMzMzN2ODUuMzMzMzM0aC04NS4zMzMzMzR2LTg1LjMzMzMzNGg4NS4zMzMzMzR6IG0xNzAuNjY2NjY2IDB2ODUuMzMzMzM0aC04NS4zMzMzMzN2LTg1LjMzMzMzNGg4NS4zMzMzMzN6IiBmaWxsPSIjNDQ0RTYwIiA+PC9wYXRoPjwvc3ZnPg==","star-innerRatio":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU2OS4zNDQgNDQ5LjUzNmwxNDYuOTQ0IDI4LjY3MiAxLjAyNC00LjYwOHY0LjYwOGgxLjAyNGM5LjcyOCAwIDE2Ljg5Ni03LjY4IDIwLjQ4LTE0Ljg0OGwxLjAyNC0yLjA0OHYtMi41NmMwLTUuNjMyIDAtMTEuMjY0LTUuMTItMTYuMzg0LTMuMDcyLTMuMDcyLTcuMTY4LTcuMTY4LTEyLjgtNy42OGwtMTI0LjkyOC0yNC4wNjRMNTQxLjY5NiAyODYuNzJjLTIuMDQ4LTQuNjA4LTYuNjU2LTguMTkyLTExLjc3Ni05LjcyOC01LjEyLTEuNTM2LTEwLjc1Mi0xLjUzNi0xNS4zNiAxLjAyNGwtMS41MzYgMC41MTItMS4wMjQgMS4wMjRjLTguMTkyIDguMTkyLTEwLjc1MiAxOS40NTYtNi42NTYgMjcuMTM2bDY0IDE0Mi44NDh6IiBmaWxsPSIjMzM4MUZGIj48L3BhdGg+PHBhdGggZD0iTTkzMS4zMjggNDAzLjQ1NmMtMTAuMjQtMzUuMzI4LTM4LjQtNjEuNDQtNzEuNjgtNjYuNTZsLTE4NC44MzItMzUuODQtODIuNDMyLTE4Mi43ODRjLTEyLjgtMzMuMjgtNDYuMDgtNTYuMzItODAuMzg0LTU2LjMyLTMzLjc5MiAwLTY0LjUxMiAyMC40OC03OS44NzIgNTMuNzZMMzQ5LjE4NCAyOTkuMDA4bC0xODQuMzIgMzUuMzI4Yy0zMy43OTIgNS4xMi02MS45NTIgMzEuMjMyLTcyLjE5MiA2Ni41Ni05LjcyOCAzNC4zMDQtMS4wMjQgNzIuMTkyIDIzLjA0IDk4LjgxNmwxMzEuNTg0IDEzMy42MzItMzUuODQgMTk2LjYwOGMtNS42MzIgMzQuODE2IDguNzA0IDcxLjY4IDM1Ljg0IDk0LjIwOCAxMy44MjQgMTEuMjY0IDM0LjMwNCAxOC40MzIgNTIuMjI0IDE4LjQzMiAxNi44OTYgMCAyOS42OTYtMy4wNzIgNDEuNDcyLTEwLjI0bDE2OC45Ni05MS4xMzYgMTY2LjkxMiA5MS4xMzYgMS4wMjQgMC41MTJjMTYuODk2IDYuNjU2IDI5LjY5NiA5LjcyOCA0MC40NDggOS43MjggMTQuMzM2IDAgMjcuNjQ4LTQuMDk2IDQwLjQ0OC03LjY4IDQuNjA4LTEuNTM2IDkuNzI4LTMuMDcyIDE0Ljg0OC00LjA5NmwyLjU2LTAuNTEyIDIuMDQ4LTEuNTM2YzI1LjA4OC0yMy4wNCAzNy44ODgtNTguODggMzIuNzY4LTkzLjY5NmwtMzMuMjgtMTk2LjYwOCAxMzEuNTg0LTEzNi4xOTJjMjQuMDY0LTI3LjY0OCAzMi4yNTYtNjIuOTc2IDIyLjAxNi05OC44MTZ6TTI3Ni45OTIgODM2LjA5Nmw0MS45ODQtMjMxLjkzNi0xNTcuMTg0LTE1OS4yMzJjLTUuNjMyLTUuNjMyLTguMTkyLTE3LjQwOC02LjY1Ni0yOS4xODQgMy41ODQtMTAuMjQgMTAuMjQtMTYuMzg0IDE5LjQ1Ni0xNy45MmwyMTguMTEyLTQxLjk4NCA5Ni4yNTYtMjE1LjU1MmMzLjA3Mi03LjE2OCAxMi44LTE0LjMzNiAyMC40OC0xNC4zMzZzMTcuNDA4IDcuMTY4IDIwLjQ4IDE0Ljg0OGw5OC4zMDQgMjE1LjA0IDIxOC4xMTIgNDEuOTg0YzcuMTY4IDEuNTM2IDE1LjM2IDcuMTY4IDE2Ljg5NiAxNi4zODR2My4wNzJjMi4wNDggMTEuNzc2LTAuNTEyIDIyLjUyOC02LjY1NiAzMC43Mkw2OTkuOTA0IDYwOS4yOGwzOS45MzYgMjMxLjQyNGMxLjUzNiAxMC43NTItMi4wNDggMjAuNDgtMTAuMjQgMjcuMTM2bC0xLjAyNCAwLjUxMmMtMi41NiAyLjU2LTYuNjU2IDQuMDk2LTExLjI2NCA0LjA5Ni0yLjA0OCAwLTcuMTY4LTEuNTM2LTExLjI2NC0zLjU4NGwtMTk3LjEyLTEwOC4wMzItMTk5LjE2OCAxMDIuOTEyYy00LjA5NiAyLjA0OC05LjIxNiAzLjU4NC0xMS43NzYgMy41ODQtNC42MDggMC04LjcwNC0xLjUzNi0xMS4yNjQtNC4wOTZsLTEuMDI0LTAuNTEyYy02LjY1Ni02LjE0NC0xMC43NTItMTYuMzg0LTguNzA0LTI2LjYyNHoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=",speechBallon:"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4=","speechBallon-active":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTgzMiA4MzJINDQ4bC0xMjggMTkyLTEyOC0xOTJjLTEwNi4wNDggMC0xOTItODYuMDE2LTE5Mi0xOTJWMTkyYTE5MiAxOTIgMCAwIDEgMTkyLTE5Mmg2NDBjMTA1Ljk4NCAwIDE5MiA4NS45NTIgMTkyIDE5MnY0NDhjMCAxMDUuOTg0LTg2LjAxNiAxOTItMTkyIDE5MnogbTY0LTY0MGE2NCA2NCAwIDAgMC02NC02NEgxOTJDMTU2LjY3MiAxMjggMTI4IDE1Ni42NzIgMTI4IDE5MnY0NDhhNjQgNjQgMCAwIDAgNjQgNjRoNDIuNjg4TDMyMCA4MzJsODUuMzEyLTEyOEg4MzJjMzUuMzkyIDAgNjQtMjguNjA4IDY0LTY0VjE5MnoiIGZpbGw9IiMzMzgxRkYiPjwvcGF0aD48L3N2Zz4=","speechBallon-placement":"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTU3NiAyMTMuMzMzMzMzbDIyLjYxMzMzMyAyMi42MTMzMzRhMzIgMzIgMCAwIDAgMC00NS4yMjY2NjdMNTc2IDIxMy4zMzMzMzN6IG0tNjIuNzItMTA3Ljk0NjY2NmEzMiAzMiAwIDEgMC00NS4yMjY2NjcgNDUuMjI2NjY2bDQ1LjIyNjY2Ny00NS4yMjY2NjZ6IG0tNDUuMjI2NjY3IDE3MC42NjY2NjZhMzIgMzIgMCAwIDAgNDUuMjI2NjY3IDQ1LjIyNjY2N2wtNDUuMjI2NjY3LTQ1LjIyNjY2N3pNNDQ4IDgxMC42NjY2NjdsLTIyLjYxMzMzMy0yMi42MTMzMzRhMzIgMzIgMCAwIDAgMCA0NS4yMjY2NjdsMjIuNjEzMzMzLTIyLjYxMzMzM3ogbTEwNy45NDY2NjctNjIuNzJhMzIgMzIgMCAxIDAtNDUuMjI2NjY3LTQ1LjIyNjY2N2w0NS4yMjY2NjcgNDUuMjI2NjY3eiBtLTQ1LjIyNjY2NyAxNzAuNjY2NjY2YTMyIDMyIDAgMSAwIDQ1LjIyNjY2Ny00NS4yMjY2NjZsLTQ1LjIyNjY2NyA0NS4yMjY2NjZ6TTgxMC42NjY2NjcgNTc2bC0yMi42MTMzMzQgMjIuNjEzMzMzYTMyIDMyIDAgMCAwIDQ1LjIyNjY2NyAwTDgxMC42NjY2NjcgNTc2eiBtMTA3Ljk0NjY2Ni02Mi43MmEzMiAzMiAwIDEgMC00NS4yMjY2NjYtNDUuMjI2NjY3bDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAtNDUuMjI2NjY3IDQ1LjIyNjY2N2w0NS4yMjY2NjctNDUuMjI2NjY3ek0yMTMuMzMzMzMzIDQ0OGwyMi42MTMzMzQtMjIuNjEzMzMzYTMyIDMyIDAgMCAwLTQ1LjIyNjY2NyAwbDIyLjYxMzMzMyAyMi42MTMzMzN6IG02Mi43MiAxMDcuOTQ2NjY3YTMyIDMyIDAgMCAwIDQ1LjIyNjY2Ny00NS4yMjY2NjdsLTQ1LjIyNjY2NyA0NS4yMjY2Njd6IG0tMTcwLjY2NjY2Ni00NS4yMjY2NjdhMzIgMzIgMCAxIDAgNDUuMjI2NjY2IDQ1LjIyNjY2N2wtNDUuMjI2NjY2LTQ1LjIyNjY2N3pNMzA5LjMzMzMzMyAyMTMuMzMzMzMzQTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMjM0LjY2NjY2NyAyODh2NjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDM3My4zMzMzMzMgMjEzLjMzMzMzM2gtNjR6TTIzNC42NjY2NjcgMjg4QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgMTYwIDIxMy4zMzMzMzNoLTY0QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAyMzQuNjY2NjY3IDM1MnYtNjR6TTE2MCAyMTMuMzMzMzMzYzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2NnYtNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDk2IDIxMy4zMzMzMzNoNjR6TTIzNC42NjY2NjcgMTM4LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NiA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIzNC42NjY2NjcgNzQuNjY2NjY3djY0ek0zNDEuMzMzMzMzIDI0NS4zMzMzMzNoMjM0LjY2NjY2N3YtNjRIMzQxLjMzMzMzM3Y2NHogbTI1Ny4yOC01NC42MTMzMzNsLTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NiA4NS4zMzMzMzQgODUuMzMzMzM0IDQ1LjIyNjY2Ni00NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsLTg1LjMzMzMzNCA4NS4zMzMzMzMgNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2Njd6TTY1MC42NjY2NjcgODEwLjY2NjY2N2ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2NiAxMzguNjY2NjY2di02NEE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxIDcxNC42NjY2NjcgODEwLjY2NjY2N2gtNjR6IG0xMzguNjY2NjY2IDEzOC42NjY2NjZBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDkyOCA4MTAuNjY2NjY3aC02NGE3NC42NjY2NjcgNzQuNjY2NjY3IDAgMCAxLTc0LjY2NjY2NyA3NC42NjY2NjZ2NjR6TTkyOCA4MTAuNjY2NjY3YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY3LTEzOC42NjY2Njd2NjRjNDEuMjE2IDAgNzQuNjY2NjY3IDMzLjQ1MDY2NyA3NC42NjY2NjcgNzQuNjY2NjY3aDY0eiBtLTEzOC42NjY2NjctMTM4LjY2NjY2N0ExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgNjUwLjY2NjY2NyA4MTAuNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY2LTc0LjY2NjY2N3YtNjR6IG0tMTA2LjY2NjY2NiAxMDYuNjY2NjY3aC0yMzQuNjY2NjY3djY0SDY4Mi42NjY2Njd2LTY0eiBtLTIxMi4wNTMzMzQgNTQuNjEzMzMzbDg1LjMzMzMzNC04NS4zMzMzMzMtNDUuMjI2NjY3LTQ1LjIyNjY2Ny04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2Njd6IG0tNDUuMjI2NjY2IDBsODUuMzMzMzMzIDg1LjMzMzMzMyA0NS4yMjY2NjctNDUuMjI2NjY2LTg1LjMzMzMzNC04NS4zMzMzMzQtNDUuMjI2NjY2IDQ1LjIyNjY2N3pNNjcyIDIzNC42NjY2NjdBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDgxMC42NjY2NjcgMzczLjMzMzMzM3YtNjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjctNzQuNjY2NjY2aC02NHpNODEwLjY2NjY2NyAzNzMuMzMzMzMzYTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCAxMzguNjY2NjY2LTEzOC42NjY2NjZoLTY0QTc0LjY2NjY2NyA3NC42NjY2NjcgMCAwIDEgODEwLjY2NjY2NyAzMDkuMzMzMzMzdjY0eiBtMTM4LjY2NjY2Ni0xMzguNjY2NjY2QTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMCA4MTAuNjY2NjY3IDk2djY0YzQxLjIxNiAwIDc0LjY2NjY2NyAzMy40NTA2NjcgNzQuNjY2NjY2IDc0LjY2NjY2N2g2NHpNODEwLjY2NjY2NyA5NmExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAtMTM4LjY2NjY2NyAxMzguNjY2NjY3aDY0YzAtNDEuMjE2IDMzLjQ1MDY2Ny03NC42NjY2NjcgNzQuNjY2NjY3LTc0LjY2NjY2N3YtNjR6TTc3OC42NjY2NjcgMzQxLjMzMzMzM3YyMzQuNjY2NjY3aDY0VjM0MS4zMzMzMzNoLTY0eiBtNTQuNjEzMzMzIDI1Ny4yOGw4NS4zMzMzMzMtODUuMzMzMzMzLTQ1LjIyNjY2Ni00NS4yMjY2NjctODUuMzMzMzM0IDg1LjMzMzMzNCA0NS4yMjY2NjcgNDUuMjI2NjY2eiBtMC00NS4yMjY2NjZsLTg1LjMzMzMzMy04NS4zMzMzMzQtNDUuMjI2NjY3IDQ1LjIyNjY2NyA4NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2Ny00NS4yMjY2NjZ6TTEzOC42NjY2NjcgNzg5LjMzMzMzM2MwLTQxLjIxNiAzMy40NTA2NjctNzQuNjY2NjY3IDc0LjY2NjY2Ni03NC42NjY2NjZ2LTY0YTEzOC42NjY2NjcgMTM4LjY2NjY2NyAwIDAgMC0xMzguNjY2NjY2IDEzOC42NjY2NjZoNjR6TTIxMy4zMzMzMzMgNzE0LjY2NjY2N2M0MS4yMTYgMCA3NC42NjY2NjcgMzMuNDUwNjY3IDc0LjY2NjY2NyA3NC42NjY2NjZoNjRBMTM4LjY2NjY2NyAxMzguNjY2NjY3IDAgMCAwIDIxMy4zMzMzMzMgNjUwLjY2NjY2N3Y2NHogbTc0LjY2NjY2NyA3NC42NjY2NjZBNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMSAyMTMuMzMzMzMzIDg2NHY2NGExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMTM4LjY2NjY2Ny0xMzguNjY2NjY3aC02NHpNMjEzLjMzMzMzMyA4NjRhNzQuNjY2NjY3IDc0LjY2NjY2NyAwIDAgMS03NC42NjY2NjYtNzQuNjY2NjY3aC02NEExMzguNjY2NjY3IDEzOC42NjY2NjcgMCAwIDAgMjEzLjMzMzMzMyA5Mjh2LTY0ek0yNDUuMzMzMzMzIDY4Mi42NjY2Njd2LTIzNC42NjY2NjdoLTY0VjY4Mi42NjY2NjdoNjR6IG0tNTQuNjEzMzMzLTIxMi4wNTMzMzRsODUuMzMzMzMzIDg1LjMzMzMzNCA0NS4yMjY2NjctNDUuMjI2NjY3LTg1LjMzMzMzMy04NS4zMzMzMzMtNDUuMjI2NjY3IDQ1LjIyNjY2NnogbTAtNDUuMjI2NjY2bC04NS4zMzMzMzMgODUuMzMzMzMzIDQ1LjIyNjY2NiA0NS4yMjY2NjcgODUuMzMzMzM0LTg1LjMzMzMzNC00NS4yMjY2NjctNDUuMjI2NjY2eiIgIGZpbGw9IiM0NDRFNjAiPjwvcGF0aD48L3N2Zz4="};function At(s){return CSe[s]}const ISe=s=>{const{workIds:r,mananger:e}=s;return H.createElement("div",{className:"button normal-button",style:{touchAction:"none"},onPointerUp:t=>{t.cancelable&&t.preventDefault(),t.stopPropagation(),t.nativeEvent.stopImmediatePropagation(),Ve.emitMethod(We.MainEngine,Te.DeleteNode,{workIds:r||[Le],viewId:e.viewId})}},H.createElement("img",{alt:"icon",src:At("delete")}))},bSe=s=>{const{workIds:r,viewId:e}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:t=>{t.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.CopyNode,{workIds:r||[Le],viewId:e})}},H.createElement("img",{alt:"icon",src:At("duplicate")}))},rm=s=>{const{icon:r,onPointerUpHandler:e}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:e},H.createElement("img",{src:At(r)}))},ESe=s=>{const{open:r,setOpen:e,floatBarRef:t}=s,{floatBarData:n,mananger:i}=H.useContext(lt),[o,a]=H.useState([]),c=H.useMemo(()=>{if(t!=null&&t.current&&ye.isNumber(n==null?void 0:n.y)&&(i!=null&&i.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>180){const h={};return h.top="inherit",h.bottom=50,h}else if(!t.current.offsetTop&&(i==null?void 0:i.height)-t.current.offsetTop-n.y<120){const h={};return h.top="inherit",h.bottom=50,h}}},[t==null?void 0:t.current,n,i]),l=H.useMemo(()=>r?H.createElement("div",{className:"image-layer-menu",style:c},H.createElement(rm,{icon:"to-top",onPointerUpHandler:h=>{h.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.ZIndexNode,{workIds:[Le],layer:In.Top,viewId:i==null?void 0:i.viewId})}}),H.createElement(rm,{icon:"to-bottom",onPointerUpHandler:h=>{h.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.ZIndexNode,{workIds:[Le],layer:In.Bottom,viewId:i==null?void 0:i.viewId})}})):null,[r,c]),u=h=>{h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),e(!r)};return H.useEffect(()=>{ye.isEqual(n==null?void 0:n.selectIds,o)||n!=null&&n.selectIds&&!ye.isEqual(n==null?void 0:n.selectIds,o)&&(a(n==null?void 0:n.selectIds),e(!1))},[r,n,o,e]),H.createElement("div",{className:`button normal-button ${r&&"active"}`,onPointerUp:u},l,H.createElement("img",{alt:"icon",src:At(r?"layer-pressed":"layer")}))},mo=s=>{s.stopPropagation(),s.nativeEvent.stopImmediatePropagation()},xSe=()=>H.createElement("svg",{style:{marginLeft:"2px"},viewBox:"0 0 1025 1024",width:"14",height:"14"},H.createElement("path",{d:"M1016.5248 493.8752c-9.984-9.984-26.2144-9.984-36.1984 0l-183.6032 183.6032c-29.952 29.952-78.6944 29.952-108.5952 0l-239.2064-239.2064c-14.4384-14.4384-22.3744-33.6896-22.3744-54.3232s7.936-39.8848 22.3744-54.3232l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984s-26.2144-9.984-36.1984 0l-183.6032 183.6032c-24.1152 24.1152-37.376 56.2176-37.376 90.5216 0 14.592 2.4576 28.8256 7.0656 42.1888l-374.8864 374.8864c-4.8128 4.8128-7.4752 11.3152-7.4752 18.1248l0 76.8c0 14.1312 11.4688 25.6 25.6 25.6l486.4 0c6.8096 0 13.312-2.7136 18.1248-7.4752l170.0864-170.0864c13.3632 4.6592 27.5968 7.0656 42.1888 7.0656 34.2528 0 66.4064-13.2608 90.5216-37.376l183.6032-183.6032c9.984-9.984 9.984-26.2144 0-36.1984zM501.4016 870.4l-450.2016 0 0-40.6016 358.5024-358.5024c1.024 1.0752 1.9968 2.1504 3.0208 3.1744l239.2064 239.2064c1.024 1.024 2.0992 2.048 3.1744 3.0208l-153.7024 153.7024z",fill:"#000000"})),cM=s=>{const{activeColor:r,onPointerUpHandler:e}=s;return H.createElement("div",{className:`font-color-button ${r==="transparent"?"active":""}`,onPointerUp:e},H.createElement("div",{className:"circle none"}))},Uc=s=>{const{color:r,activeColor:e,onPointerUpHandler:t}=s;return H.createElement("div",{className:`font-color-button ${r===e?"active":""}`,onPointerUp:t},H.createElement("div",{className:"circle",style:{backgroundColor:Et(r,1)}}))},Wc=s=>{const{opacity:r,activeColor:e,setCurOpacity:t}=s,[n,i]=H.useState({x:108,y:0}),o=H.useRef(0);if(H.useEffect(()=>{i({x:r*100+8,y:0})},[]),!e)return null;const a=(h,d)=>{const f=Math.min(Math.max(h-8,0),100)/100;(r!==f||d===de.Done)&&t(f,e,d)},c=(h,d)=>{d.x!==(n==null?void 0:n.x)&&i({x:d.x,y:0}),!o.current&&(o.current=setTimeout(()=>{o.current=0,a(d.x,de.Doing)},100))},l=()=>{t(r,e,de.Start)},u=(h,d)=>{d.x!==(n==null?void 0:n.x)&&i({x:d.x,y:0}),o.current&&(clearTimeout(o.current),o.current=0),a(d.x,de.Done)};return H.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:h=>{o.current&&(clearTimeout(o.current),o.current=0);const d=h.nativeEvent.offsetX,f=Math.min(Math.max(d-12,0),100)/100;i({x:f*100+8,y:0}),t(f,e,de.Done)}},H.createElement("div",{className:"range-color",style:{background:`linear-gradient(to right, ${Et(e,0)}, ${Et(e,1)})`}}),H.createElement("div",{className:"range-opacity"},H.createElement(Qi,{bounds:"parent",axis:"x",position:n,onDrag:c,onStart:l,onStop:u},H.createElement("div",{className:"circle",style:{backgroundColor:Et(e,r)},onPointerUp:mo}))))},RSe=s=>{const{min:r,max:e,activeNumber:t,setActiveNumber:n,color:i}=s,[o,a]=H.useState({x:108,y:0}),c=H.useRef(0);if(H.useEffect(()=>{const f=Math.ceil((t-r)/(e-r)*100)+8;a({x:f,y:0})},[]),!t)return null;const l=(f,g)=>{const y=Math.ceil(Math.max(f-8,0)/100*(e-r)+r);(t!==y||g===de.Done)&&n(y,g)},u=(f,g)=>{g.x!==(o==null?void 0:o.x)&&a({x:g.x,y:0}),!c.current&&(c.current=setTimeout(()=>{c.current=0,l(g.x,de.Doing)},100))},h=()=>{n(t,de.Start)},d=(f,g)=>{g.x!==(o==null?void 0:o.x)&&a({x:g.x,y:0}),c.current&&(clearTimeout(c.current),c.current=0),l(g.x,de.Done)};return H.createElement("div",{className:"font-color-opacity",style:{marginLeft:"10px"},onPointerUp:f=>{c.current&&(clearTimeout(c.current),c.current=0);const g=f.nativeEvent.offsetX,y=Math.ceil(Math.max(g-12,0)/100*(e-r)+r),S=Math.ceil((y-r)/(e-r)*100)+8;a({x:S,y:0}),n(y,de.Done)}},H.createElement("div",{className:"range-color",style:{backgroundColor:i}}),H.createElement("div",{className:"range-opacity"},H.createElement(Qi,{bounds:"parent",axis:"x",position:o,onDrag:u,onStart:h,onStop:d},H.createElement("div",{className:"circle",style:{backgroundColor:i},onPointerUp:mo},H.createElement("div",{className:"range-opacity-data-icon"},t)))))},kSe=s=>{const{useStroke:r,color:e,activeStrokeType:t,setStrokeType:n}=s;return H.createElement("div",{className:"stroke-type-box"},!!r&&H.createElement("div",{className:`stroke-type-box-item Stroke ${t===Be.Stroke&&"active"}`,style:{backgroundColor:e},onPointerUp:()=>{n(Be.Stroke)}}),H.createElement("div",{className:`stroke-type-box-item Normal ${t===Be.Normal&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.Normal)}}),H.createElement("div",{className:`stroke-type-box-item Dotted ${t===Be.Dotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.Dotted)}}),H.createElement("div",{className:`stroke-type-box-item LongDotted ${t===Be.LongDotted&&"active"}`,style:{borderColor:e},onPointerUp:()=>{n(Be.LongDotted)}}))},ASe=s=>{const{open:r,setOpen:e,floatBarRef:t}=s,{floatBarData:n,floatBarColors:i,mananger:o,setFloatBarData:a}=H.useContext(lt),[c,l]=H.useState(),[u,h]=H.useState(1);H.useEffect(()=>{if(n!=null&&n.strokeColor){const[C,L]=Lc(n.strokeColor);l(C),h(L)}},[n]);const d=H.useMemo(()=>{if(t!=null&&t.current&&n&&ye.isNumber(n==null?void 0:n.y)&&(o!=null&&o.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!t.current.offsetTop&&(o==null?void 0:o.height)-t.current.offsetTop-n.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[n,t,o==null?void 0:o.height]),f=H.useMemo(()=>H.createElement(Wc,{key:"strokeColors",opacity:u,activeColor:c,setCurOpacity:(C,L,T)=>{h(C);const p=Et(L,C);n!=null&&n.strokeColor&&a({strokeColor:p}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],strokeColor:p,workState:T,viewId:o==null?void 0:o.viewId})}}),[u,c,n==null?void 0:n.strokeColor,o==null?void 0:o.viewId,a]),g=H.useMemo(()=>c&&n&&n.thickness?H.createElement(RSe,{key:"strokeThickness",min:Math.min(n.thickness,(o==null?void 0:o.control.pluginOptions.extras.strokeWidth.min)||He.strokeWidth.min),max:Math.max(n.thickness,(o==null?void 0:o.control.pluginOptions.extras.strokeWidth.max)||He.strokeWidth.max),activeNumber:n.thickness,setActiveNumber:(C,L)=>{n!=null&&n.thickness&&a({thickness:C}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],thickness:C,workState:L,viewId:o==null?void 0:o.viewId})},color:c}):null,[c,n,o==null?void 0:o.control.pluginOptions.extras.strokeWidth.max,o==null?void 0:o.control.pluginOptions.extras.strokeWidth.min,o==null?void 0:o.viewId,a]),y=H.useMemo(()=>c&&n&&(n!=null&&n.strokeType)?H.createElement(kSe,{key:"strokeType",useStroke:n==null?void 0:n.useStroke,activeStrokeType:n.strokeType,setStrokeType:C=>{n.strokeType&&a({strokeType:C}),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],strokeType:C,workState:de.Done,viewId:o==null?void 0:o.viewId})},color:c}):null,[c,n,o==null?void 0:o.viewId,a]),S=H.useMemo(()=>r?H.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},y,g,H.createElement("div",{className:"font-colors-line"}),i.concat().map((C,L)=>{const T=po(...C);return H.createElement(Uc,{key:L,color:T,activeColor:c,onPointerUpHandler:p=>{p.stopPropagation(),l(T);const m=Et(T,u);n!=null&&n.strokeColor&&(n.strokeColor=m,a({strokeColor:m})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],workState:de.Done,strokeColor:m,viewId:o==null?void 0:o.viewId})}})}),f):null,[r,d,y,g,i,f,c,u,n,o==null?void 0:o.viewId,a]),E=H.useMemo(()=>c?H.createElement("div",{className:"color-bar-ring",style:{backgroundColor:Et(c,u)}},H.createElement("div",{className:"circle"})):null,[c,u]);return H.createElement("div",{className:`button normal-button font-colors-icon ${r&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!r)}},E,S)},PSe=s=>{const{open:r,setOpen:e,floatBarRef:t}=s,{floatBarData:n,floatBarColors:i,mananger:o,setFloatBarData:a}=H.useContext(lt),[c,l]=H.useState(),[u,h]=H.useState(1);H.useEffect(()=>{if(n!=null&&n.fillColor){const[S,E]=(n==null?void 0:n.fillColor)==="transparent"&&["transparent",1]||Lc(n.fillColor);l(S),h(E)}},[n]);const d=H.useMemo(()=>{if(t!=null&&t.current&&ye.isNumber(n==null?void 0:n.y)&&(o!=null&&o.height)){if(t.current.offsetTop&&t.current.offsetTop+n.y>200){const S={};return S.top="inherit",S.bottom=50,S}else if(!t.current.offsetTop&&(o==null?void 0:o.height)-t.current.offsetTop-n.y<140){const S={};return S.top="inherit",S.bottom=50,S}}},[t,n,o==null?void 0:o.height]),f=H.useMemo(()=>c&&c!=="transparent"?H.createElement(Wc,{key:"fillColors",opacity:u||0,activeColor:c,setCurOpacity:(S,E,C)=>{h(S);const L=Et(E,S);n!=null&&n.fillColor&&(n.fillColor=L,a({fillColor:L})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],fillColor:c&&Et(E,S),workState:C,viewId:o==null?void 0:o.viewId})}}):null,[c,u,n,o==null?void 0:o.viewId,a]),g=H.useMemo(()=>r?H.createElement("div",{className:"font-colors-menu",style:d,onPointerUp:S=>{S.stopPropagation(),S.nativeEvent.stopImmediatePropagation()}},H.createElement(cM,{activeColor:c,onPointerUpHandler:S=>{S.stopPropagation(),l("transparent");const E="transparent";n!=null&&n.fillColor&&(n.fillColor=E,a({fillColor:E})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],workState:de.Done,fillColor:E,viewId:o==null?void 0:o.viewId})}}),i.map((S,E)=>{const C=po(...S);return H.createElement(Uc,{key:E,color:C,activeColor:c,onPointerUpHandler:L=>{L.cancelable&&L.preventDefault(),L.stopPropagation(),l(C);const T=Et(C,u);n!=null&&n.fillColor&&(n.fillColor=T,a({fillColor:T})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:[Le],workState:de.Done,fillColor:T,viewId:o==null?void 0:o.viewId})}})}),f):null,[r,d,c,i,f,n,o==null?void 0:o.viewId,a,u]),y=H.useMemo(()=>{const S=c&&c!=="transparent"&&Et(c,u)||"transparent";return H.createElement("div",{className:"color-bar-fill"},H.createElement("div",{className:"circle",style:{backgroundColor:S}}))},[c,u]);return H.createElement("div",{className:`button normal-button font-colors-icon ${r&&"active"}`,onPointerUp:S=>{S.stopPropagation(),S.nativeEvent.stopImmediatePropagation(),e(!r)}},y,g)},DSe=s=>{const{open:r,setOpen:e,textOpt:t,workIds:n,floatBarRef:i}=s,{floatBarColors:o,mananger:a,setFloatBarData:c,floatBarData:l}=H.useContext(lt),[u,h]=H.useState(),[d,f]=H.useState(1);H.useEffect(()=>{if(t!=null&&t.fontColor){const[C,L]=(t==null?void 0:t.fontColor)==="transparent"&&["transparent",0]||Lc(t.fontColor);h(C),f(L)}},[t==null?void 0:t.fontColor]);const g=H.useMemo(()=>{if(i!=null&&i.current&&l&&ye.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+l.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-l.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[i,l,a==null?void 0:a.height]),y=H.useMemo(()=>u&&u!=="transparent"?H.createElement(Wc,{key:"fontColors",opacity:d,activeColor:u,setCurOpacity:(C,L,T)=>{f(C);const p=Et(L,C);l!=null&&l.textOpt&&(l.textOpt.fontColor=p,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],fontColor:u&&p,workState:T,viewId:a==null?void 0:a.viewId})}}):null,[c,u,d,a==null?void 0:a.control.room,a==null?void 0:a.viewId,l==null?void 0:l.textOpt,n]),S=H.useMemo(()=>r?H.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},o.map((C,L)=>{const T=po(...C);return H.createElement(Uc,{key:L,color:T,activeColor:u,onPointerUpHandler:p=>{p.stopPropagation(),h(T);const m=Et(T,d);l!=null&&l.textOpt&&(l.textOpt.fontColor=m,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],workState:de.Done,fontColor:m,viewId:a==null?void 0:a.viewId})}})}),y):null,[c,r,o,y,u,d,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),E=H.useMemo(()=>{const C=u&&u!=="transparent"&&Et(u,d)||"transparent";return H.createElement("div",{className:"color-bar"},H.createElement("div",{className:"color-bar-color",style:{backgroundColor:C}}))},[u,d]);return H.createElement("div",{className:`button normal-button font-colors-icon ${r&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!r)}},H.createElement("img",{alt:"icon",src:At("font-colors")}),E,S)},LSe=s=>{const{open:r,setOpen:e,textOpt:t,workIds:n,floatBarRef:i}=s,{floatBarColors:o,mananger:a,setFloatBarData:c,floatBarData:l}=H.useContext(lt),[u,h]=H.useState(),[d,f]=H.useState(1);H.useEffect(()=>{if(t!=null&&t.fontBgColor){const[C,L]=(t==null?void 0:t.fontBgColor)==="transparent"&&["transparent",1]||Lc(t.fontBgColor);h(C),f(L)}},[t==null?void 0:t.fontBgColor]);const g=H.useMemo(()=>{if(i!=null&&i.current&&l&&ye.isNumber(l==null?void 0:l.y)&&(a!=null&&a.height)){if(i.current.offsetTop&&i.current.offsetTop+l.y>180){const C={};return C.top="inherit",C.bottom=50,C}else if(!i.current.offsetTop&&(a==null?void 0:a.height)-i.current.offsetTop-l.y<120){const C={};return C.top="inherit",C.bottom=50,C}}},[i,l,a==null?void 0:a.height]),y=H.useMemo(()=>u&&u!=="transparent"?H.createElement(Wc,{key:"fontBgColor",opacity:d||0,activeColor:u,setCurOpacity:(C,L,T)=>{f(C);const p=Et(L,C);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=p,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],fontBgColor:u&&Et(L,C),workState:T,viewId:a==null?void 0:a.viewId})}}):null,[u,d,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,c]),S=H.useMemo(()=>r?H.createElement("div",{className:"font-colors-menu",style:g,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation()}},H.createElement(cM,{activeColor:u,onPointerUpHandler:C=>{C.stopPropagation();const L="transparent";h(L),l!=null&&l.textOpt&&(l.textOpt.fontBgColor=L,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],workState:de.Done,fontBgColor:L,viewId:a==null?void 0:a.viewId})}}),o.map((C,L)=>{const T=po(...C);return H.createElement(Uc,{key:L,color:T,activeColor:u,onPointerUpHandler:p=>{p.stopPropagation(),h(T);const m=Et(T,d);l!=null&&l.textOpt&&(l.textOpt.fontBgColor=m,c({textOpt:l.textOpt})),Ve.emitMethod(We.MainEngine,Te.SetColorNode,{workIds:n||[Le],workState:de.Done,fontBgColor:Et(T,d),viewId:a==null?void 0:a.viewId})}})}),y):null,[c,r,o,y,d,u,l==null?void 0:l.textOpt,n,a==null?void 0:a.viewId,g]),E=H.useMemo(()=>{const C=u&&u!=="transparent"&&Et(u,d)||"transparent";return H.createElement("div",{className:"color-bar",style:{marginTop:0}},H.createElement("div",{className:"color-bar-color",style:{backgroundColor:C}}))},[u,d]);return H.createElement("div",{className:`button normal-button font-colors-icon ${r&&"active"}`,onPointerUp:C=>{C.stopPropagation(),C.nativeEvent.stopImmediatePropagation(),e(!r)}},H.createElement(xSe,null),E,S)},NSe=s=>{const{bold:r,setBold:e,workIds:t,viewId:n}=s,i=o=>{const a=r==="bold"?"normal":"bold";o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:t,viewId:n,bold:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(r==="bold"?"bold-active":"bold")}))},OSe=s=>{const{underline:r,setUnderline:e,workIds:t,viewId:n}=s,i=o=>{const a=!r;o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:t,viewId:n,underline:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(r?"underline-active":"underline")}))},zSe=s=>{const{lineThrough:r,setLineThrough:e,workIds:t,viewId:n}=s,i=o=>{const a=!r;o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:t,viewId:n,lineThrough:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(r?"line-through-active":"line-through")}))},BSe=s=>{const{italic:r,setItalic:e,workIds:t,viewId:n}=s,i=o=>{const a=r==="italic"?"normal":"italic";o==null||o.stopPropagation(),e(a),Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:t,viewId:n,italic:a})};return H.createElement("div",{className:"font-style-button",onPointerUp:i},H.createElement("img",{alt:"icon",src:At(r==="italic"?"italic-active":"italic")}))},jSe=s=>{const{open:r,setOpen:e,textOpt:t,workIds:n,style:i,floatBarRef:o}=s,{mananger:a,floatBarData:c}=H.useContext(lt),[l,u]=H.useState("normal"),[h,d]=H.useState("normal"),[f,g]=H.useState(!1),[y,S]=H.useState(!1);H.useEffect(()=>{t!=null&&t.bold&&u(t.bold),ye.isBoolean(t==null?void 0:t.underline)&&g(t.underline||!1),ye.isBoolean(t==null?void 0:t.lineThrough)&&S(t.lineThrough||!1),t!=null&&t.italic&&d(t.italic)},[t]);const E=H.useMemo(()=>{if(i&&(o!=null&&o.current)&&ye.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+c.y>180){const L={};return L.top="inherit",L.bottom=50,L}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-c.y<120){const L={};return L.top="inherit",L.bottom=50,L}}},[i,o==null?void 0:o.current,c,a]),C=H.useMemo(()=>r?H.createElement("div",{className:"font-style-menu",style:E,onPointerUp:L=>{L.stopPropagation(),L.nativeEvent.stopImmediatePropagation()}},H.createElement(NSe,{workIds:n||[Le],bold:l,setBold:u,viewId:a==null?void 0:a.viewId}),H.createElement(OSe,{workIds:n||[Le],underline:f,setUnderline:g,viewId:a==null?void 0:a.viewId}),H.createElement(zSe,{workIds:n||[Le],lineThrough:y,setLineThrough:S,viewId:a==null?void 0:a.viewId}),H.createElement(BSe,{workIds:n||[Le],italic:h,setItalic:d,viewId:a==null?void 0:a.viewId})):null,[r,n,l,a==null?void 0:a.viewId,f,y,h,E]);return H.createElement("div",{className:`button normal-button ${r&&"active"}`,onPointerUp:L=>{L.stopPropagation(),L.nativeEvent.stopImmediatePropagation(),e(!r)}},H.createElement("img",{alt:"icon",src:At(r?"font-style-active":"font-style")}),C)},FSe=s=>{const{style:r,onClickHandler:e}=s;return H.createElement("div",{className:"font-size-menu",style:r,onPointerUp:t=>{t.stopPropagation(),t.nativeEvent.stopImmediatePropagation()}},kr.map(t=>H.createElement("div",{className:"font-size-btn",key:t,onPointerUp:()=>{e(t)}},t)))},USe=s=>{const r=H.useRef(null),{open:e,setOpen:t,textOpt:n,workIds:i,floatBarRef:o}=s,{mananger:a,floatBarData:c}=H.useContext(lt),[l,u]=H.useState(0),h=kr.length-1;H.useEffect(()=>{n!=null&&n.fontSize&&(u(n.fontSize),r.current&&(r.current.value=n.fontSize.toString()))},[n==null?void 0:n.fontSize]);const d=H.useMemo(()=>{if(o!=null&&o.current&&ye.isNumber(c==null?void 0:c.y)&&(a!=null&&a.height)){if(o.current.offsetTop&&o.current.offsetTop+c.y>180){const E={};return E.top="inherit",E.bottom=35,E}else if(!o.current.offsetTop&&(a==null?void 0:a.height)-o.current.offsetTop-c.y<120){const E={};return E.top="inherit",E.bottom=35,E}}},[o==null?void 0:o.current,c,a]);function f(E){u(E),E&&E>=kr[0]&&E<=kr[h]&&Ve.emitMethod(We.MainEngine,Te.SetFontStyle,{workIds:i||[Le],fontSize:E,viewId:a==null?void 0:a.viewId})}const g=E=>{var C;(C=r.current)==null||C.blur(),t(!1),S(E)},y=H.useMemo(()=>e?H.createElement(FSe,{onClickHandler:g,style:d}):null,[e,g,d]),S=E=>{E>kr[h]&&(E=kr[h]),E<kr[0]&&(E=kr[0]),f(E)};return H.createElement("div",{className:"button normal-button font-size-barBtn",style:{width:50},onPointerUp:E=>{E.stopPropagation(),E.nativeEvent.stopImmediatePropagation()}},H.createElement("input",{className:"font-size-input",ref:r,onTouchEnd:()=>{r.current&&r.current.focus()},onClick:()=>{t(!e),r.current&&r.current.focus()},onKeyDown:E=>{if(E.stopPropagation(),E.nativeEvent.stopImmediatePropagation(),E.key==="Backspace"){const C=window.getSelection(),L=C==null?void 0:C.getRangeAt(0);if(L!=null&&L.collapsed)return E.cancelable&&E.preventDefault(),document.execCommand("delete",!1),!1}return!1},onKeyUp:E=>{var C;if(E.stopPropagation(),E.nativeEvent.stopImmediatePropagation(),r.current){const L=r.current.value,T=parseInt(L);isNaN(T)?r.current.value="0":r.current.value=T.toString(),T&&E.key==="Enter"&&(S(T),(C=r.current)==null||C.blur(),t(!1))}}}),H.createElement("div",{className:"font-size-btns"},H.createElement("div",{className:"font-size-add",onPointerUp:()=>{S(l+kr[0])}}),H.createElement("div",{className:"font-size-cut",onPointerUp:()=>{S(l-kr[0])}})),y)},WSe=s=>{const{workIds:r,mananger:e,islocked:t}=s;return H.createElement("div",{className:"button normal-button",onPointerUp:n=>{n.stopPropagation(),Ve.emitMethod(We.MainEngine,Te.SetLock,{workIds:r||[Le],isLocked:!t,viewId:e==null?void 0:e.viewId})}},H.createElement("img",{alt:"icon",src:At(t?"unlock-new":"lock-new")}))},Xu=s=>{const{icon:r,min:e,max:t,step:n,value:i,onInputHandler:o}=s,[a,c]=H.useState(0),l=H.useRef(null),u=h=>{h>t&&(h=t),h<e&&(h=e),c(h),o(h),l.current&&(l.current.value=h.toString())};return H.useEffect(()=>{i&&(c(i),l.current&&(l.current.value=i.toString()))},[i]),H.createElement("div",{className:"button input-button"},H.createElement("img",{src:At(r)}),H.createElement("input",{className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&l.current.focus()},onKeyDown:h=>{if(h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),h.key==="Backspace"){const d=window.getSelection(),f=d==null?void 0:d.getRangeAt(0);if(f!=null&&f.collapsed)return h.cancelable&&h.preventDefault(),document.execCommand("delete",!1),!1}},onKeyUp:h=>{if(h.stopPropagation(),h.nativeEvent.stopImmediatePropagation(),l.current){const d=l.current.value,f=parseInt(d);isNaN(f)?l.current.value="0":l.current.value=f.toString()}},onChange:h=>{const d=h.target.value,f=parseInt(d);f&&f&&f>=e&&f<=t&&u(f)}}),H.createElement("div",{className:"input-number-btns"},H.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(a+n)}}),H.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(a-n)}})))},VSe=s=>{const{icon:r,min:e,max:t,step:n,value:i,onInputHandler:o}=s;return H.createElement("div",{className:"button input-button"},H.createElement("img",{src:At(r)}),H.createElement($Se,{min:e,max:t,step:n,value:i,onInputHandler:o}))},$Se=s=>{const{value:r,min:e,max:t,onInputHandler:n}=s,[i,o]=H.useState({x:0,y:0});H.useEffect(()=>{o({x:r*100,y:0})},[]);const a=(u,h)=>{let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,t*100)),h.x!==(i==null?void 0:i.x)&&o({x:d,y:0});const f=d/100;r!==f&&n(f)},c=()=>{},l=(u,h)=>{let d=Math.floor(Math.max(h.x,e*100));d=Math.floor(Math.min(d,t*100)),h.x!==(i==null?void 0:i.x)&&o({x:d,y:0});const f=d/100;r!==f&&n(f)};return H.createElement("div",{className:"range-number-container",onPointerUp:u=>{const h=u.nativeEvent.offsetX-6;let d=Math.floor(Math.max(h,e*100));d=Math.floor(Math.min(d,t*100)),o({x:d,y:0});const f=d/100;r!==f&&n(f)}},H.createElement("div",{className:"range-number-color"}),H.createElement("div",{className:"range-number"},H.createElement(Qi,{bounds:"parent",axis:"x",position:i,onDrag:a,onStart:c,onStop:l},H.createElement("div",{className:"circle",onPointerUp:mo}))))},YSe=s=>{const{icon:r,value:e,onChangeHandler:t,style:n}=s,[i,o]=H.useState(0),[a,c]=H.useState(),l=H.useRef(null),u=H.useCallback(f=>{f>=bi.length&&(f=0),f<0&&(f=bi.length-1),o(f),t(bi[f]),c(!1),l.current&&(l.current.value=bi[f])},[t]),h=H.useMemo(()=>{if(n&&n.bottom){const f={};return f.top="inherit",f.bottom=50,f}},[n]);H.useEffect(()=>{e&&(o(bi.indexOf(e)),l.current&&(l.current.value=e))},[e]);const d=H.useMemo(()=>a?H.createElement(GSe,{options:bi,onClickHandler:u,style:h}):null,[a,u,h]);return H.createElement("div",{className:"button input-button"},H.createElement("img",{src:At(r)}),H.createElement("input",{readOnly:!0,className:"input-number",type:"text",ref:l,onPointerUp:()=>{l.current&&(l.current.focus(),c(!a))}}),H.createElement("div",{className:"input-number-btns"},H.createElement("div",{className:"input-number-add",onPointerUp:()=>{u(i+1)}}),H.createElement("div",{className:"input-number-cut",onPointerUp:()=>{u(i-1)}})),d)},GSe=s=>{const{options:r,style:e,onClickHandler:t}=s;return H.createElement("div",{className:"select-option-menu",style:e},r.map((n,i)=>H.createElement("div",{className:"select-option-btn",key:n,onPointerUp:()=>{t(i)}},n)))},HSe=s=>{const{innerRatio:r,innerVerticeStep:e,vertices:t,mananger:n,setShapeOpt:i}=s,o=l=>{i({vertices:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:q.Star,viewId:n.viewId,vertices:l})},a=l=>{i({innerVerticeStep:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:q.Star,viewId:n.viewId,innerVerticeStep:l})},c=l=>{i({innerRatio:l}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:q.Star,viewId:n.viewId,innerRatio:l})};return H.createElement(H.Fragment,null,H.createElement(Xu,{value:t,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:o}),H.createElement(Xu,{value:e,icon:"star-innerVertex",min:1,max:100,step:1,onInputHandler:a}),H.createElement(VSe,{value:r,icon:"star-innerRatio",min:.1,max:1,step:.1,onInputHandler:c}))},QSe=s=>{const{mananger:r,vertices:e,setShapeOpt:t}=s,n=i=>{t({vertices:i}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:q.Polygon,viewId:r.viewId,vertices:i})};return H.createElement(Xu,{value:e,icon:"polygon-vertex",min:3,max:100,step:1,onInputHandler:n})},qSe=s=>{const{mananger:r,placement:e,setShapeOpt:t}=s,n=i=>{t({placement:i}),Ve.emitMethod(We.MainEngine,Te.SetShapeOpt,{workIds:[Le],toolsType:q.SpeechBalloon,viewId:r.viewId,placement:i})};return H.createElement(YSe,{value:e,icon:"speechBallon-placement",onChangeHandler:n})},Kl=s=>{const{icon:r,isActive:e,onPointerUpHandler:t}=s;return H.createElement("div",{className:`button tab-button ${e?"active":""}`,onPointerUp:t},H.createElement("img",{src:At(r)}))},ZSe=s=>{const{toolsTypes:r,style:e,mananger:t,shapeOpt:n,setShapeOpt:i}=s,[o,a]=H.useState();H.useEffect(()=>{r.includes(q.Polygon)?a(q.Polygon):r.includes(q.Star)?a(q.Star):a(q.SpeechBalloon)},[r]);const c=d=>{a(d)},l=H.useMemo(()=>o===q.Polygon&&t&&n.vertices?H.createElement(QSe,{vertices:n.vertices,mananger:t,setShapeOpt:i}):null,[t,o,n,i]),u=H.useMemo(()=>o===q.Star&&t&&n.vertices&&n.innerVerticeStep&&n.innerRatio?H.createElement(HSe,{mananger:t,vertices:n.vertices,innerVerticeStep:n.innerVerticeStep,innerRatio:n.innerRatio,setShapeOpt:i}):null,[t,o,n,i]),h=H.useMemo(()=>o===q.SpeechBalloon&&t&&n.placement?H.createElement(qSe,{mananger:t,placement:n.placement,setShapeOpt:i}):null,[o,t,n.placement,i]);return H.createElement("div",{className:"shapeOpt-sub-menu",style:e,onPointerUp:mo},H.createElement("div",{className:"shapeOpt-sub-menu-tabs"},r.includes(q.Polygon)&&H.createElement(Kl,{isActive:o===q.Polygon,icon:o===q.Polygon?"polygon-active":"polygon",onPointerUpHandler:c.bind(void 0,q.Polygon)})||null,r.includes(q.Star)&&H.createElement(Kl,{isActive:o===q.Star,icon:o===q.Star?"star-active":"star",onPointerUpHandler:c.bind(void 0,q.Star)})||null,r.includes(q.SpeechBalloon)&&H.createElement(Kl,{isActive:o===q.SpeechBalloon,icon:o===q.SpeechBalloon?"speechBallon-active":"speechBallon",onPointerUpHandler:c.bind(void 0,q.SpeechBalloon)})||null),H.createElement("div",{className:"shapeOpt-sub-menu-content"},l,u,h))},KSe=s=>{const{open:r,setOpen:e,floatBarRef:t,toolsTypes:n,shapeOpt:i}=s,{floatBarData:o,mananger:a,setFloatBarData:c}=H.useContext(lt),l=H.useRef(null),u=H.useMemo(()=>{if(t!=null&&t.current&&ye.isNumber(o==null?void 0:o.x)&&ye.isNumber(o==null?void 0:o.y)&&(a!=null&&a.height)){if(t.current.offsetTop&&t.current.offsetTop+o.y>200){const g={};return g.top="inherit",g.bottom=50,g}else if(!t.current.offsetTop&&(a==null?void 0:a.height)-t.current.offsetTop-(o==null?void 0:o.y)<140){const g={};return g.top="inherit",g.bottom=50,g}}},[t,o==null?void 0:o.x,o==null?void 0:o.y,a==null?void 0:a.height]),h=H.useCallback(g=>{c({shapeOpt:{...i,...g}})},[c,i]),d=H.useMemo(()=>r&&n&&a&&i?H.createElement(ZSe,{shapeOpt:i,style:u,toolsTypes:n,mananger:a,setShapeOpt:h}):null,[r,u,n,a,i,h]),f=()=>{e(!r)};return H.createElement("div",{ref:l,className:`button normal-button ${r&&"active"}`,onPointerUp:f},d,H.createElement("img",{alt:"icon",src:At(r?"shapes-active":"shapes")}))},lM=H.memo(s=>{const{textOpt:r,workIds:e,noLayer:t,position:n,noDelete:i,noCopy:o}=s,{floatBarData:a,mananger:c}=H.useContext(lt),[l,u]=H.useState(0),[h,d]=H.useState(),f=H.useRef(null);H.useEffect(()=>{var b,P,D,z;const M={},v=(a==null?void 0:a.w)||((b=r==null?void 0:r.boxSize)==null?void 0:b[0])||0,R=(a==null?void 0:a.h)||((P=r==null?void 0:r.boxSize)==null?void 0:P[1])||0;if(n&&v&&R&&(c!=null&&c.width)&&(c!=null&&c.height)){if(n.y<60?n.y+R<c.height-60?M.bottom=-120:n.y+R<c.height?M.bottom=-58:n.y>0?M.top=62:M.top=-n.y+62:M.top=0,n.x<0)M.left=-n.x+3;else if(n.x+(((D=f.current)==null?void 0:D.offsetWidth)||v)>c.width){const j=c.width-(((z=f.current)==null?void 0:z.offsetWidth)||v)-n.x;M.left=j}d(M);return}d(void 0)},[f,n,a==null?void 0:a.w,a==null?void 0:a.h,c==null?void 0:c.width,c==null?void 0:c.height,r==null?void 0:r.boxSize]);const g=H.useMemo(()=>a!=null&&a.fillColor?H.createElement(PSe,{floatBarRef:f,open:l===3,setOpen:M=>{u(M===!0?3:0)}}):null,[a==null?void 0:a.fillColor,l,f]),y=H.useMemo(()=>a!=null&&a.strokeColor?H.createElement(ASe,{floatBarRef:f,open:l===2,setOpen:M=>{u(M===!0?2:0)}}):null,[a==null?void 0:a.strokeColor,l,f]),S=H.useMemo(()=>r!=null&&r.fontColor&&(c!=null&&c.viewId)?H.createElement(DSe,{floatBarRef:f,open:l===4,setOpen:M=>{u(M===!0?4:0)},textOpt:r,workIds:e}):null,[r,l,e,c,f]),E=H.useMemo(()=>r!=null&&r.fontBgColor&&(c!=null&&c.viewId)?H.createElement(LSe,{floatBarRef:f,open:l===5,setOpen:M=>{u(M===!0?5:0)},textOpt:r,workIds:e}):null,[r,l,e,c,f]),C=H.useMemo(()=>r&&(c!=null&&c.viewId)?H.createElement(jSe,{floatBarRef:f,open:l===6,setOpen:M=>{u(M===!0?6:0)},textOpt:r,workIds:e,style:h}):null,[r,l,e,c,h,f]),L=H.useMemo(()=>r&&(c!=null&&c.viewId)?H.createElement(USe,{open:l===7,setOpen:M=>{u(M===!0?7:0)},textOpt:r,workIds:e,floatBarRef:f}):null,[r,l,e,c,f]),T=H.useMemo(()=>t?null:H.createElement(ESe,{open:l===1,setOpen:M=>{u(M===!0?1:0)},floatBarRef:f}),[t,l,f]),p=H.useMemo(()=>a!=null&&a.canLock&&c?H.createElement(WSe,{workIds:e,mananger:c,islocked:a.isLocked}):null,[a,c,e]),m=H.useMemo(()=>c&&(c!=null&&c.viewId)&&h&&(a!=null&&a.shapeOpt)&&(a!=null&&a.toolsTypes)?H.createElement(KSe,{open:l===8,setOpen:M=>{u(M===!0?8:0)},floatBarRef:f,workIds:e,toolsTypes:a.toolsTypes,shapeOpt:a.shapeOpt}):null,[a,c,l,h,e,f]);return H.createElement("div",{className:"appliance-plugin-floatbtns",style:h,ref:f},c&&!i&&H.createElement(ISe,{workIds:e,mananger:c}),T,p,!!(c!=null&&c.viewId)&&!o&&H.createElement(bSe,{workIds:e,viewId:c.viewId}),m,C,L,S,E,y,g)}),XSe=s=>{const{data:r,workId:e,updateOptInfo:t}=s,{opt:n,scale:i,translate:o,x:a,y:c}=r,l=H.useRef(null),{floatBarData:u}=H.useContext(lt),h=H.useMemo(()=>{const{fontSize:g,fontFamily:y,underline:S,fontColor:E,lineThrough:C,textAlign:L,strokeColor:T,lineHeight:p,bold:m,italic:M}=n,v=p||g*1.2,R={fontSize:`${g}px`,lineHeight:`${v}px`,color:"transparent",caretColor:E,borderColor:T,minHeight:`${v}px`,pointerEvents:"none",paddingRight:`${M==="italic"?Math.round(g*.3):5}px`};return y&&(R.fontFamily=`${y}`),(C||S)&&(R.textDecoration=`${C&&"line-through"||""}${S&&" underline"||""}`),L&&(R.textAlign=`${L}`),m&&(R.fontWeight=`${m}`),M&&(R.fontStyle=`${M}`),R},[n]),d=H.useMemo(()=>{const g=[];if(n.text){const y=Nn(n.text);for(let S=0;S<y.length;S++){const E=y[S];E===""?g.push(H.createElement("div",{key:S})):g.push(H.createElement("div",{key:S},E))}}return g.length?g:H.createElement("div",null)},[n.text]),f=H.useMemo(()=>{if(!u)return{};const g=`scale(${i||1}) ${o&&"translate("+o[0]+"px,"+o[1]+"px)"||""}`;return{left:`${a-u.x}px`,top:`${c-u.y}px`,zIndex:1,transform:g,transformOrigin:"left top",opacity:0,pointerEvents:"auto"}},[i,o,a,c,u]);return H.useEffect(()=>{if(!l.current)return;const g=l.current.offsetWidth,y=l.current.offsetHeight;if(!g||!y)return;const S=n.boxSize;if((S==null?void 0:S[0])!==g||S[1]!==y||!S){t({activeTextId:e,update:{boxSize:[g,y],workState:de.Done}});return}},[n.fontSize,n.italic,n.bold,n.boxSize,e,t]),H.createElement("div",{className:"editor-box readonly","data-text-work-id":e,style:f},H.createElement("div",{className:"editor",ref:l,style:h},d))},JSe=s=>{const{mananger:r}=H.useContext(lt),e=H.useMemo(()=>{var n;const t=i=>{var u,h;if(!r)return;const{activeTextId:o,update:a,syncData:c}=i,l=o&&ye.cloneDeep(((u=r.control.textEditorManager)==null?void 0:u.get(o))||((h=s.editors)==null?void 0:h.get(o)));l&&l.opt&&(l.opt={...l.opt,...a},c&&(l.canSync=Object.keys(c).includes("canSync")&&c.canSync||l.canSync,l.canWorker=Object.keys(c).includes("canWorker")&&c.canWorker||l.canWorker),r.control.textEditorManager.updateForViewEdited(o,l))};if((n=s.editors)!=null&&n.size){const i=[];return s.editors.forEach((o,a)=>{if(s.selectIds&&s.selectIds.includes(a)){const c=H.createElement(XSe,{key:a,workId:a,data:o,updateOptInfo:t});i.push(c)}}),i}return null},[s.editors,s.selectIds,r]);return H.createElement(H.Fragment,null,e)},_Se=s=>{const{position:r,textOpt:e,workIds:t,noLayer:n,noCopy:i,noDelete:o,style:a}=s,c=H.useRef(null);return H.createElement("div",{className:mt.FloatBarBtn,ref:c,style:a},H.createElement(lM,{position:r,textOpt:e,workIds:t,noLayer:n,noCopy:i,noDelete:o}))},eTe=s=>{const{data:r,workId:e,showFloatBtns:t,handleKeyUp:n,handleFocus:i,runAnimation:o,updateSize:a,rightBoundBreak:c}=s,{activeTextEditor:l,activeTextId:u,mananger:h}=H.useContext(lt),{opt:d,scale:f,translate:g,x:y,y:S}=r,{fontSize:E,fontFamily:C,underline:L,fontColor:T,lineThrough:p,textAlign:m,lineHeight:M,bold:v,italic:R}=d,b=H.useRef(null),P=H.useMemo(()=>{const w=E,I=M||w*1.2,U={fontSize:`${w}px`,lineHeight:`${I}px`,caretColor:T,color:"transparent",minHeight:`${I}px`,paddingRight:`${R==="italic"?Math.round(w*.3):5}px`,borderWidth:0};return C&&(U.fontFamily=`${C}`),(p||L)&&(U.textDecoration=`${p&&"line-through"||""} ${L&&" underline"||""}`),m&&(U.textAlign=`${m}`),v&&(U.fontWeight=`${v}`),R&&(U.fontStyle=`${R}`),U},[v,T,C,E,R,M,p,f,m,L]),D=H.useRef(!1),z=H.useRef(6),j=H.useRef(),A=H.useRef(),k=H.useRef(!1),N=H.useRef(!1),W=H.useRef({fontSize:P.fontSize,lineHeight:P.lineHeight,fontStyle:P.fontStyle,fontWeight:P.fontWeight,fontFamily:P.fontFamily}),Y=H.useMemo(()=>typeof window>"u"?!1:navigator.maxTouchPoints>0||"ontouchstart"in window,[]),Q=H.useMemo(()=>u===e?"hover":d.workState===de.Doing||d.workState===de.Start?"editing":l?"active":"none",[u,e,d.workState,l]);function ie(w){if(!b.current)return;const U=w&&DMe(w.nativeEvent)?LMe(w.nativeEvent):void 0,G=()=>{j.current&&(cancelAnimationFrame(j.current),j.current=void 0),A.current&&(window.clearTimeout(A.current),A.current=void 0)},_=re=>{const ne=b.current,X=window==null?void 0:window.getSelection();if(!(!ne||!X||!k.current)){if(document.activeElement!==ne)try{ne.focus({preventScroll:!0})}catch{ne.focus()}if(re){const{x:ae,y:ue}=re;if(document.caretPositionFromPoint){const he=document.caretPositionFromPoint(ae,ue);if(he){const ge=ne.contains(he.offsetNode);if(ge){const Me=document.createRange();Me.setStart(he.offsetNode,he.offset),Me.collapse(!0),X.removeAllRanges(),X.addRange(Me),N.current=!0}if(ge)return}}else if(document.caretRangeFromPoint){const he=document.caretRangeFromPoint(ae,ue);if(he){const ge=ne.contains(he.startContainer);if(ge&&(X.removeAllRanges(),X.addRange(he),N.current=!0),ge)return}}if(wye(X,ne,re)){N.current=!0;return}}Tye({hasPoint:!!re,previousByPoint:N.current,hasSelectionInEditor:Ep(X,ne),rangeCount:X.rangeCount,isCollapsed:X.isCollapsed})||(yye(X,ne),N.current=!1)}};G(),_(U),Y&&(j.current=requestAnimationFrame(()=>{_(),A.current=window.setTimeout(()=>{_(),A.current=void 0},32),j.current=void 0}))}const O=H.useMemo(()=>{const w=`scale(${f||1}) ${g&&"translate("+g[0]+"px,"+g[1]+"px)"||""}`;return{left:`${y-Ni*(f||1)}px`,top:`${S-Ni*(f||1)}px`,zIndex:2,transform:w,transformOrigin:"left top",borderColor:Q==="editing"||Q==="hover"?T:"transparent"}},[f,g,y,S,T,Q]),V=H.useMemo(()=>{let w="";const I="<div></div>";if(d.text){const U=Nn(d.text);for(let G=0;G<U.length;G++){const _=U[G];if(_==="")w=w+I;else{const re=_.replace(/[<>&]/g,ne=>({"<":"&lt;",">":"&gt;","&":"&amp;"})[ne]);w=w+`<div>${re}</div>`}}}else w=I;return w},[d.fontBgColor,d.text]),Z=H.useMemo(()=>{var w,I;if(Q==="hover"){if(f&&t&&ye.isNumber(y)&&ye.isNumber(S)&&d.boxSize&&ye.isNumber((w=d.boxSize)==null?void 0:w[0])&&ye.isNumber((I=d.boxSize)==null?void 0:I[1])){const U={x:y,y:S},G={left:y,top:S,width:d.boxSize[0]*f,height:d.boxSize[1]*f};return H.createElement(_Se,{position:U,style:G,textOpt:d,workIds:[e],noLayer:!0,noCopy:!0,noDelete:!0})}return null}return null},[d,t,e,y,S,f,Q]);H.useEffect(()=>{k.current=u===e,u!==e&&(j.current&&(cancelAnimationFrame(j.current),j.current=void 0),A.current&&(window.clearTimeout(A.current),A.current=void 0),N.current=!1)},[u,e]),H.useEffect(()=>{if(u===e&&b.current){const w=window==null?void 0:window.getSelection(),I=Ep(w,b.current);(document.activeElement!==b.current||!I)&&ie(),i(b.current)}},[u,i,e,Y]),H.useEffect(()=>{const w=b.current;if(!w)return;const I=S0(w),U=d.text||"";I!==U&&(u===e&&D.current||(w.innerHTML=V))},[u,V,d.boxSize,d.text,d.workState,e]),H.useEffect(()=>()=>{j.current&&cancelAnimationFrame(j.current),A.current&&window.clearTimeout(A.current)},[]),H.useEffect(()=>{if(b.current){const w=parseInt(getComputedStyle(b.current).paddingRight,10)+parseInt(getComputedStyle(b.current).borderWidth,10);z.current=Number(w)}},[]),H.useEffect(()=>{if(b.current){const w={fontSize:P.fontSize,lineHeight:P.lineHeight,fontStyle:P.fontStyle,fontWeight:P.fontWeight,fontFamily:P.fontFamily};if(!ye.isEqual(W.current,w)){W.current=w;const I=[b.current.offsetWidth,b.current.offsetHeight];a(e,I)}}},[P,e,a,Q,l,u]);const $=H.useCallback(w=>{const I=h==null?void 0:h.parentElement,U=b.current;if(!I||!U||!c)return!1;const{lastLine:G}=xp(U);if(!G||G instanceof Text)return!1;const _=G==null?void 0:G.getBoundingClientRect(),re=I==null?void 0:I.getBoundingClientRect();if(!_||!re)return!1;if(_.right+w>re.right){const{textContent:ne,textNodes:X}=Sye(G);if(!X.length)return!1;const ae=ne.length,ue=ws(X,0);if(!ue)return!1;let he=0,ge=0,Me=ae;for(;ge<Me;){const we=Math.floor((ge+Me)/2),be=ws(X,we);if(!be)break;const Ie=document.createRange();Ie.setStart(ue.node,ue.offset),Ie.setEnd(be.node,be.offset);const Ce=Ie.getBoundingClientRect(),Ae=re.right-Ce.right;if(Ae<w){if(we>0){const Ee=ws(X,we-1);if(!Ee)break;const ke=document.createRange();ke.setStart(ue.node,ue.offset),ke.setEnd(Ee.node,Ee.offset);const Ne=ke.getBoundingClientRect();if(re.right-Ne.right>=w){he=we-1;break}}Me=we}else{const Ee=we+1;if(Ee<ae){const ke=ws(X,Ee);if(!ke)break;const Ne=document.createRange();Ne.setStart(ue.node,ue.offset),Ne.setEnd(ke.node,ke.offset);const Oe=Ne.getBoundingClientRect();if(re.right-Oe.right<=w&&Ae>w){he=we;break}}ge=Ee}}if(!he){const we=ws(X,ge);if(!we)return!1;const be=document.createRange();be.setStart(ue.node,ue.offset),be.setEnd(we.node,we.offset);const Ie=be.getBoundingClientRect();re.right-Ie.right>w?he=ge:ge>0&&(he=ge-1)}if(he>0){const we=ne.slice(0,he),be=ne.slice(he);G.textContent=we;const Ie=document.createElement("div");return be&&(Ie.textContent=be),b.current.appendChild(Ie),$(w),!0}}return!1},[h==null?void 0:h.parentElement,d.fontBgColor,c]);function ee(w){if(w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),w.key==="Backspace"){const I=window.getSelection(),U=I==null?void 0:I.getRangeAt(0);if(U!=null&&U.collapsed)return w.cancelable&&w.preventDefault(),document.execCommand("delete",!1),!1}return!1}function se(w,I){const U=window==null?void 0:window.getSelection();if(U!=null&&U.rangeCount&&w&&U&&U.anchorNode){const G=U.anchorOffset,_=U.anchorNode.textContent||"",re=_.slice(0,G)||"",ne=_.slice(G)||"",X=re.concat(w)||"";ce(X,ne,I)}}function ce(w,I,U){const G=window==null?void 0:window.getSelection();if(!(G!=null&&G.rangeCount)||!G.anchorNode)return;const _=w.split(/\n/);let re=G.anchorNode.parentNode;re===U&&(re=G.anchorNode);const ne=[...U.childNodes],X=[];let ae,ue=G.anchorOffset;for(;ne.length;){const he=ne.pop();if(he){if(he===re){let ge=_[0];_.length===1&&(ue=_[0].length,ge=_[0].concat(I)),re.nodeName==="#text"?(re.textContent=ge,ae=re):re.nodeName==="DIV"&&(re.innerText=ge,ae=re.childNodes[0]);break}X.push(he),U.removeChild(he)}}if(_.length>1)for(let he=1;he<_.length;he++){let ge=_[he];const Me=document.createElement("div");he===_.length-1&&(ue=ge.length,ge=ge.concat(I)),Me.innerText=ge,U.appendChild(Me),he===_.length-1&&(ae=Me.childNodes[0])}if(X.length){X.reverse();for(const he of X)U.appendChild(he)}if(ae&&ae.nodeName==="#text"){G.deleteFromDocument();const he=document.createRange(),ge=Math.min(ue,(ae==null?void 0:ae.length)||0);he.setStart(ae,ge),he.collapse(!0),G.removeAllRanges(),G.addRange(he)}}function me(w){if(w.cancelable&&w.preventDefault(),w.stopPropagation(),w.nativeEvent.stopImmediatePropagation(),b.current){const I=(w.clipboardData||window.clipboardData).getData("text"),U=window==null?void 0:window.getSelection();if(!(U!=null&&U.rangeCount))return;if(I&&U&&U.anchorNode){const G=eu(I,{whiteList:{},stripIgnoreTag:!0,stripIgnoreTagBody:["script"]});se(G,b.current),$((f||1)*z.current),n(b.current)}o()}return!1}function pe(w){xp(w)}const B=H.useCallback(()=>{const w=b.current;o(()=>{if(w){pe(w);let I=!1;if(!D.current&&(I=$((f||1)*z.current),I)){const U=window.getSelection();if(!(U!=null&&U.rangeCount))return!1;const G=document.createRange(),_=b.current.lastChild;G.selectNodeContents(_),G.collapse(!1),U.removeAllRanges(),U.addRange(G)}n(w)}})},[n,$,o,f]);function F(){D.current=!0,o()}function J(){D.current=!1,B()}function oe(){B(),o()}const K=H.useCallback(()=>{if(Q==="active"&&b.current&&b.current.parentElement){const w=b.current.parentElement;w.style.borderColor=T}},[Q,T]),te=H.useCallback(()=>{if(Q==="active"&&b.current&&b.current.parentElement){const w=b.current.parentElement;w.style.borderColor="transparent"}},[Q]);return H.createElement(H.Fragment,null,Z,H.createElement("div",{className:`editor-box ${Q}`,style:O,onPointerUp:()=>{var w;if(Q==="editing"){o(()=>{var I;(I=document.activeElement)==null||I.blur(),h==null||h.control.textEditorManager.checkEmptyTextBlur()});return}if(Q==="active"&&h){if((w=h.control.collector)!=null&&w.hasIncludeSelector(e)){o(()=>{var I;(I=document.activeElement)==null||I.blur(),h==null||h.control.textEditorManager.checkEmptyTextBlur()});return}if(h&&u!==e){h.control.textEditorManager.checkEmptyTextBlur(),h.control.textEditorManager.active(e,h.worker.now);return}}},onMouseOver:K,onMouseLeave:te},H.createElement("div",{id:e,suppressContentEditableWarning:!0,contentEditable:!0,className:"editor",ref:b,style:P,onKeyDown:ee,onPaste:me,onTouchEnd:ie,onInput:B,onCompositionStart:F,onCompositionUpdate:oe,onCompositionEnd:J,dangerouslySetInnerHTML:{__html:V}})))},tTe=s=>{const r=H.useRef(null),{mananger:e}=H.useContext(lt),t=H.useRef(),n=H.useRef(),i=H.useRef();H.useEffect(()=>()=>{t.current&&cancelAnimationFrame(t.current),n.current&&cancelAnimationFrame(n.current),i.current&&cancelAnimationFrame(i.current)},[]);const o=H.useCallback(c=>{var f,g;const{activeTextId:l,update:u,syncData:h}=c;if(!e)return;const d=l&&ye.cloneDeep(((f=e.control.textEditorManager)==null?void 0:f.get(l))||((g=s.editors)==null?void 0:g.get(l)));d&&d.opt&&(d.opt={...d.opt,...u},h&&(d.canSync=Object.keys(h).includes("canSync")&&h.canSync||d.canSync,d.canWorker=Object.keys(h).includes("canWorker")&&h.canWorker||d.canWorker),e.control.textEditorManager.updateForViewEdited(l,d))},[e,s.editors]),a=H.useMemo(()=>{var g;const c=y=>{if(!e)return;const S=y.id,E=e.control.textEditorManager.get(S),C=de.Doing,L=[y.offsetWidth,y.offsetHeight];(!E||E&&(!ye.isEqual(E.opt.boxSize,L)||!ye.isEqual(E.opt.workState,C)))&&o({activeTextId:S,update:{boxSize:L,workState:C},syncData:{canSync:!0,canWorker:!0}})},l=y=>{var m,M;if(!e)return;const S=w0(y),E=y.id,C=e.control.textEditorManager.get(E),L=S0(y),T=de.Doing,p=[y.offsetWidth,y.offsetHeight];if(!C||C&&(C.opt.text!==L||!ye.isEqual(C.opt.boxSize,p)||!ye.isEqual(C.opt.workState,T))){const v=E&&ye.cloneDeep(((m=e.control.textEditorManager)==null?void 0:m.get(E))||((M=s.editors)==null?void 0:M.get(E)));v&&v.opt&&(v.opt={...v.opt,text:L,boxSize:p,workState:T},v.canSync=!0,v.canWorker=!0,e.control.textEditorManager.updateForViewEdited(E,v)),e.control.textEditorManager.publicMsgEmitter.emit("textChange",E,y,S,v)}},u=(y,S)=>{if(!e)return;const E=y,C=e.control.textEditorManager.get(E);if(C&&!(!S[0]||!S[1])&&!ye.isEqual(C.opt.boxSize,S)){const L=ye.cloneDeep(C);L.opt={...L.opt,boxSize:S},L.canSync=!1,L.canWorker=!1,e.control.textEditorManager.updateForViewEdited(E,L)}},h=()=>{r.current&&r.current.scrollTo({left:0,top:0,behavior:"instant"})},d=()=>{n.current&&(cancelAnimationFrame(n.current),n.current=void 0),i.current&&(cancelAnimationFrame(i.current),i.current=void 0),n.current=requestAnimationFrame(()=>{h(),n.current=void 0,i.current=requestAnimationFrame(()=>{h(),i.current=void 0})})},f=y=>{t.current&&cancelAnimationFrame(t.current),t.current=requestAnimationFrame(()=>{r!=null&&r.current&&(h(),y&&y(),d(),t.current=void 0)})};if((g=s.editors)!=null&&g.size){const y=[];return s.editors.forEach((S,E)=>{y.push(H.createElement(eTe,{key:E,workId:E,data:S,showFloatBtns:s.showFloatBtns||!1,handleFocus:c,handleKeyUp:l,updateSize:u,runAnimation:f,rightBoundBreak:s.rightBoundBreak||!1}))}),y}return null},[s.editors,s.showFloatBtns,s.rightBoundBreak,e,o]);return H.createElement("div",{className:`${s.className}`,ref:r},a)},lr=(s,r,e)=>({...s,...e==null?void 0:e[r]}),rTe=()=>{const{floatBarData:s,overwriteSelectorStyles:r}=H.useContext(lt),e={borderColor:s==null?void 0:s.selectorColor,...r.highlightBox},t={backgroundColor:s==null?void 0:s.selectorColor,...r.highlightBoxPoint};return H.createElement("div",{className:"appliance-plugin-highlight-box",style:e},H.createElement("div",{className:"point LT nwse-resize",style:lr(t,"LT",r.highlightBoxPoints)}),H.createElement("div",{className:"point LC ew-resize",style:lr(t,"LC",r.highlightBoxPoints)}),H.createElement("div",{className:"point LB nesw-resize",style:lr(t,"LB",r.highlightBoxPoints)}),H.createElement("div",{className:"point TC ns-resize",style:lr(t,"TC",r.highlightBoxPoints)}),H.createElement("div",{className:"point RT nesw-resize",style:lr(t,"RT",r.highlightBoxPoints)}),H.createElement("div",{className:"point RC ew-resize",style:lr(t,"RC",r.highlightBoxPoints)}),H.createElement("div",{className:"point RB nwse-resize",style:lr(t,"RB",r.highlightBoxPoints)}),H.createElement("div",{className:"point BC ns-resize",style:lr(t,"BC",r.highlightBoxPoints)}))},nTe=()=>{const{floatBarData:s,mananger:r,overwriteSelectorStyles:e}=H.useContext(lt),[t,n]=H.useState(),[i,o]=H.useState();H.useEffect(()=>{const l=[];if(r&&ye.isNumber(s==null?void 0:s.x)&&ye.isNumber(s==null?void 0:s.y)&&(s!=null&&s.points)){const u=r.viewId;if(r.control.viewContainerManager.getView(u))for(const d of s.points){const f=r.control.viewContainerManager.transformToOriginPoint(d,u);l.push(f)}l[0]&&n({x:l[0][0]-((s==null?void 0:s.x)||0),y:l[0][1]-((s==null?void 0:s.y)||0)}),l[1]&&o({x:l[1][0]-((s==null?void 0:s.x)||0),y:l[1][1]-((s==null?void 0:s.y)||0)})}},[r,s==null?void 0:s.points,s==null?void 0:s.x,s==null?void 0:s.y]);const a=H.useMemo(()=>t?H.createElement("div",{className:"point point-dot",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBoxPoint,...e.highlightBoxPointDot,left:t.x,top:t.y}}):null,[s==null?void 0:s.selectorColor,t]),c=H.useMemo(()=>i?H.createElement("div",{className:"point point-dot",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBoxPoint,...e.highlightBoxPointDot,left:i.x,top:i.y}}):null,[i,s==null?void 0:s.selectorColor]);return H.createElement("div",{className:"appliance-plugin-highlight-box",style:{borderColor:s==null?void 0:s.selectorColor,...e.highlightBox}},a,c)},iTe=()=>{const{floatBarData:s,overwriteSelectorStyles:r}=H.useContext(lt),e={borderColor:s==null?void 0:s.selectorColor,...r.highlightBox},t={backgroundColor:s==null?void 0:s.selectorColor,...r.highlightBoxPoint};return H.createElement("div",{className:"appliance-plugin-highlight-box",style:e},H.createElement("div",{className:"point LT nwse-resize",style:lr(t,"LT",r.highlightBoxPoints)}),H.createElement("div",{className:"point LB nesw-resize",style:lr(t,"LB",r.highlightBoxPoints)}),H.createElement("div",{className:"point RT nesw-resize",style:lr(t,"RT",r.highlightBoxPoints)}),H.createElement("div",{className:"point RB nwse-resize",style:lr(t,"RB",r.highlightBoxPoints)}))},sTe=()=>{const{floatBarData:s,overwriteSelectorStyles:r}=H.useContext(lt);return H.createElement("div",{className:"appliance-plugin-highlight-box",style:{borderColor:s==null?void 0:s.selectorColor,...r.highlightBox}},H.createElement("img",{className:"lock",alt:"lock",src:"https://sdk.netless.link/resource/icons/lock.svg",style:r.highlightBoxLock}))};function bt(s){return!!(s&&s.control.canAcceptLocalMutation(s.viewId))}const oTe=s=>{const{className:r}=s,{floatBarData:e,angle:t,setAngle:n,setOperationType:i,mananger:o,viewId:a}=H.useContext(lt),[c,l]=H.useState(de.Pending),[u,h]=H.useState(),[d,f]=H.useState(!1),[g,y]=H.useState(new Pe),[S,E]=H.useState(new Pe),[C,L]=H.useState(!1),T=H.useRef(0),p=H.useRef(!1),m=H.useRef(null),M=(z,j)=>{n(z),i(j===de.Done?Te.None:Te.RotateNode),l(j),j===de.Done?(f(!1),o==null||o.focusElement()):f(!0),Ve.emitMethod(We.MainEngine,Te.RotateNode,{workIds:[Le],angle:j===de.Start?0:z,workState:j,viewId:o==null?void 0:o.viewId})},v=(z,j)=>{if(!(j&&j!==a)){if(!z){p.current=!0,T.current&&clearTimeout(T.current),T.current=0,L(!0),f(!1),i(Te.None),l(de.Pending);return}L(!1)}},R=(z,j)=>{T.current&&(clearTimeout(T.current),T.current=0),l(de.Done),f(!1);const A=Math.round(Pe.GetAngleByPoints(g,S,new Pe(j.x,j.y)))||0;M(A,de.Done)};H.useEffect(()=>{const z=()=>{p.current&&(T.current&&clearTimeout(T.current),T.current=0,l(de.Pending),f(!1),i(Te.None))};return Ve.activeListener(v),document.addEventListener("pointercancel",z),()=>{Ve.unmountActiveListener(v),document.removeEventListener("pointercancel",z)}},[]),H.useEffect(()=>{if(window.__selectorE2E__)return window.__selectorRotateE2E__={start:(z=g.x,j=g.y)=>{if(!bt(o))return;p.current=!1;const A=Math.round(Pe.GetAngleByPoints(g,S,new Pe(z,j)))||0;M(A,de.Start)},doing:(z,j)=>{if(p.current)return;if(!bt(o)){p.current=!0,l(de.Pending),i(Te.None);return}const A=Math.round(Pe.GetAngleByPoints(g,S,new Pe(z,j)))||0;h({x:z,y:j}),M(A,de.Doing)},done:(z,j)=>{if(p.current||!bt(o))return;const A=Math.round(Pe.GetAngleByPoints(g,S,new Pe(z,j)))||0;h({x:z,y:j}),M(A,de.Done)}},()=>{window.__selectorRotateE2E__&&delete window.__selectorRotateE2E__}},[S,o,g]),H.useEffect(()=>{if(e&&(c===de.Pending||c===de.Done)){const z={x:(e==null?void 0:e.x)-20,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)},j={x:(e==null?void 0:e.x)+(e==null?void 0:e.w)/2,y:(e==null?void 0:e.y)+(e==null?void 0:e.h)/2};E(new Pe(j.x,j.y)),y(new Pe(z.x,z.y)),h({x:z.x,y:z.y})}},[e,c]);const b=(z,j)=>{if(!bt(o))return!1;p.current=!1,T.current&&(clearTimeout(T.current),T.current=0),l(de.Start),f(!0);const A=Math.round(Pe.GetAngleByPoints(g,S,new Pe(j.x,j.y)))||0;M(A,de.Start)},P=(z,j)=>{if(p.current){T.current&&clearTimeout(T.current),T.current=0,f(!1),i(Te.None);return}if(!bt(o)){p.current=!0,l(de.Pending),f(!1),i(Te.None);return}R(z,j)},D=(z,j)=>{if(!p.current){if(!bt(o))return p.current=!0,T.current&&clearTimeout(T.current),T.current=0,l(de.Pending),f(!1),i(Te.None),!1;T.current||(h({x:j.x,y:j.y}),f(!0),T.current=setTimeout(()=>{if(T.current=0,p.current||!bt(o))return;const A=Math.round(Pe.GetAngleByPoints(g,S,new Pe(j.x,j.y)))||0;M(A,de.Doing)},60))}};return H.createElement(Qi,{disabled:C,position:u,onStart:b,onDrag:D,onStop:P},H.createElement("div",{className:`${r}`,style:e?{left:0,top:0,touchAction:"none"}:void 0},!d&&H.createElement("div",{className:"appliance-plugin-rotate-btn",style:{backgroundColor:e==null?void 0:e.selectorColor}},H.createElement("img",{alt:"icon",src:At("rotation-button")})),H.createElement("div",{ref:m,className:`appliance-plugin-rotate-mouse-pointer ${d?"active":""}`},H.createElement("img",{alt:"icon",src:At("rotation")}),H.createElement("div",{className:"angle-icon"},t,"°"))))};function aTe(s){const r=s==null?void 0:s.viewId;if(!r)return;const e=s.control.viewContainerManager.getView(r),t=e==null?void 0:e.focusScenePath,n=s.control.viewContainerManager.getUndoTickerId(r);!n||!t||(s.control.internalMsgEmitter.emit("cancelUndoTicker",n,r,t),s.control.worker.abled())}function cTe(s,r){const e=s.control.worker.now;return s.control.textEditorManager.active(r,e),e}const lTe="data-text-work-id";function uTe(s){var r,e;if(s instanceof HTMLElement)return((e=(r=s.closest(`[${lTe}]`))==null?void 0:r.dataset)==null?void 0:e.textWorkId)||void 0}const hTe=H.memo(s=>{const{editors:r,canSelectorSwitch:e}=s,{floatBarData:t,setOperationType:n,mananger:i,isNoPointerEvents:o,viewId:a}=H.useContext(lt),[c,l]=H.useState(),[u,h]=H.useState(!1),d=H.useRef(0),f=H.useRef(),g=H.useRef(de.Pending),y=H.useRef(!1),S=H.useMemo(()=>!!((t==null?void 0:t.scaleType)===Ye.none&&(t!=null&&t.canLock)),[t]),E=H.useMemo(()=>t&&t.w&&t.h?{position:"absolute",left:0,top:0,width:t.w,height:t.h,zIndex:2,pointerEvents:S||o?"none":"auto",touchAction:"none"}:{display:"none",pointerEvents:"none"},[t,S,o]),C=(M,v)=>{if(!(v&&v!==a)){if(!M||t!=null&&t.isLocked){y.current=!0,d.current&&clearTimeout(d.current),d.current=0,h(!0),g.current=de.Pending,n(Te.None);return}h(!1)}},L=(M,v)=>{d.current&&(clearTimeout(d.current),d.current=0);const R={x:v.x,y:v.y};n(Te.None),g.current=de.Done,l(R),Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Le],position:R,workState:de.Done,viewId:i==null?void 0:i.viewId})};H.useEffect(()=>{const M=()=>{y.current&&(d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=de.Pending,n(Te.None))};return Ve.activeListener(C),document.addEventListener("pointercancel",M),()=>{Ve.unmountActiveListener(C),document.removeEventListener("pointercancel",M)}},[]),H.useEffect(()=>{if(t&&(t!=null&&t.isLocked)){h(!0);return}h(!1)},[t]),H.useEffect(()=>{(g.current===de.Pending||g.current===de.Done)&&ye.isNumber(t==null?void 0:t.x)&&ye.isNumber(t==null?void 0:t.y)&&l({x:t==null?void 0:t.x,y:t==null?void 0:t.y})},[t==null?void 0:t.x,t==null?void 0:t.y]);const T=M=>{const v=M&&"target"in M?M.target:null,R=e?uTe(v):void 0;if(!bt(i)||!ye.isNumber(t==null?void 0:t.x)||!ye.isNumber(t==null?void 0:t.y))return!1;y.current=!1,d.current&&(clearTimeout(d.current),d.current=0),f.current=R,n(Te.TranslateNode),g.current=de.Start,Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Le],position:{x:t.x,y:t.y},workState:de.Start,viewId:i==null?void 0:i.viewId})},p=(M,v)=>{var D,z;if(y.current){d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,n(Te.None);return}if(!bt(i)){y.current=!0,d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=de.Pending,n(Te.None);return}const R=g.current,b=f.current;if(!!b&&R===de.Start&&i&&e){aTe(i),cTe(i,b),f.current=void 0,g.current=de.Pending,n(Te.None);const j=(D=i.control.viewContainerManager.getView(i.viewId))==null?void 0:D.focusScenePath;j&&i.control.worker.blurSelector(i.viewId,j);return}if(L(M,v),f.current&&(f.current=void 0),R===de.Start&&(r!=null&&r.size)&&b){const j=(z=i==null?void 0:i.control.viewContainerManager.getView(i.viewId))==null?void 0:z.focusScenePath;j&&(i==null||i.control.worker.blurSelector(i.viewId,j))}i==null||i.focusElement()},m=(M,v)=>{if(y.current)return;if(!bt(i))return y.current=!0,d.current&&clearTimeout(d.current),d.current=0,f.current=void 0,g.current=de.Pending,n(Te.None),!1;if(d.current)return;const R={x:v.x,y:v.y};l(R),d.current=setTimeout(()=>{d.current=0,!(y.current||!bt(i))&&(R.x!==(c==null?void 0:c.x)||R.y!==(c==null?void 0:c.y))&&(f.current&&(f.current=void 0),g.current=de.Doing,Ve.emitMethod(We.MainEngine,Te.TranslateNode,{workIds:[Le],position:R,workState:de.Doing,viewId:i==null?void 0:i.viewId}))},60)};return H.createElement(Qi,{disabled:u,position:c,onStart:T,onDrag:m,onStop:p},H.createElement("div",{style:E},H.createElement(dTe,{editors:r,selectIds:(t==null?void 0:t.selectIds)||[]})))},(s,r)=>!!ye.isEqual(s,r)),dTe=H.memo(s=>{const{editors:r,selectIds:e}=s;return r?H.createElement(JSe,{editors:r,selectIds:e||[]}):null},(s,r)=>!(!ye.isEqual(s.editors,r.editors)||!ye.isEqual(s.selectIds,r.selectIds))),fTe=s=>{const{className:r}=s,[e,t]=H.useState({x:0,y:0,h:0,w:0}),[n,i]=H.useState(),[o,a]=H.useState(),[c,l]=H.useState(),{floatBarData:u,mananger:h,isNoPointerEvents:d,setOperationType:f,viewId:g}=H.useContext(lt),[y,S]=H.useState(),[E,C]=H.useState(!1),L=H.useRef(0),T=H.useRef(!1);H.useEffect(()=>{const z=()=>{T.current&&(L.current&&clearTimeout(L.current),L.current=0,f(Te.None))};if(u&&h){const j={x:u.x,y:u.y,w:u.w,h:u.h};t(j)}return Ve.activeListener(m),document.addEventListener("pointercancel",z),()=>{Ve.unmountActiveListener(m),document.removeEventListener("pointercancel",z)}},[]);const p=()=>{if(L.current&&(clearTimeout(L.current),L.current=0),y){const{scale:z,translate:j}=y;f(Te.None),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Le],scale:z,dir:c,translate:j,originPoint:n,scenePoint:o,workState:de.Done,viewId:h==null?void 0:h.viewId})}h==null||h.focusElement()},m=(z,j)=>{if(!(j&&j!==g)){if(!z){T.current=!0,L.current&&clearTimeout(L.current),L.current=0,S(void 0),C(!0);return}C(!1)}},M=z=>[[z.x,z.y],[z.x+z.w,z.y],[z.x+z.w,z.y+z.h],[z.x,z.y+z.h]],v=(z,j)=>{switch(j){case"top":case"topLeft":case"left":return z[2];case"topRight":return z[3];case"right":case"bottomRight":case"bottom":return z[0];case"bottomLeft":return z[1]}},R=(z,j,A,k)=>{let N=!1,W=!1;const Y={x:e.x,y:e.y,w:e.w,h:e.h},Q=[1,1],ie=[0,0];switch(z){case"top":{const $=j.height+e.h;$<0?(W=!0,Y.y=e.y+e.h,Y.h=Math.abs($)):(Y.y=e.y-j.height,Y.h=e.h+j.height);break}case"topLeft":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-j.width,Y.w=e.w+j.width);const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+e.h,Y.h=Math.abs(ee)):(Y.y=e.y-j.height,Y.h=e.h+j.height);break}case"topRight":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+j.width;const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+e.h,Y.h=Math.abs(ee)):(Y.y=e.y-j.height,Y.h=e.h+j.height);break}case"bottom":{const $=j.height+e.h;$<0?(W=!0,Y.y=e.y+$,Y.h=Math.abs($)):Y.h=e.h+j.height;break}case"bottomLeft":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-j.width,Y.w=e.w+j.width);const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+ee,Y.h=Math.abs(ee)):Y.h=e.h+j.height;break}case"left":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+e.w,Y.w=Math.abs($)):(Y.x=e.x-j.width,Y.w=e.w+j.width);break}case"bottomRight":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+j.width;const ee=j.height+e.h;ee<0?(W=!0,Y.y=e.y+ee,Y.h=Math.abs(ee)):Y.h=e.h+j.height;break}case"right":{const $=j.width+e.w;$<0?(N=!0,Y.x=e.x+$,Y.w=Math.abs($)):Y.w=e.w+j.width;break}}Q[0]=Y.w/e.w,Q[1]=Y.h/e.h;const V=M(Y).map($=>A.control.viewContainerManager.transformToScenePoint($,A.viewId)),Z=v(V,z);return W&&(ie[1]=Z[1]-k[1]),N&&(ie[0]=Z[0]-k[0]),{scale:Q,translate:ie}},b=(z,j)=>{if(!bt(h)||!(u!=null&&u.w)||!(u!=null&&u.h))return!1;T.current=!1,S(void 0),L.current&&(clearTimeout(L.current),L.current=0);const A={x:u.x,y:u.y,w:u.w,h:u.h},k=M(A),N=k.map(Q=>h.control.viewContainerManager.transformToScenePoint(Q,h.viewId)),W=v(k,j),Y=v(N,j);t(A),i(W),a(Y),l(j),f(Te.ScaleNode),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Le],originPoint:W,scenePoint:Y,workState:de.Start,viewId:h.viewId})},P=(z,j,A,k)=>{if(!T.current&&!(!h||!n||!o)){if(!bt(h))return T.current=!0,L.current&&clearTimeout(L.current),L.current=0,f(Te.None),!1;L.current||(L.current=setTimeout(()=>{if(L.current=0,T.current||!bt(h))return;const{scale:N,translate:W}=R(j,k,h,o);(!ye.isEqual(N,y==null?void 0:y.scale)||!ye.isEqual(W,y==null?void 0:y.translate))&&(S({scale:N,translate:W}),f(Te.ScaleNode),Ve.emitMethod(We.MainEngine,Te.ScaleNode,{workIds:[Le],scale:N,dir:j,translate:W,originPoint:n,scenePoint:o,workState:de.Doing,viewId:h.viewId}))},60))}},D=()=>{if(T.current){L.current&&clearTimeout(L.current),L.current=0,f(Te.None);return}if(!bt(h)){T.current=!0,L.current&&clearTimeout(L.current),L.current=0,f(Te.None);return}p()};return H.createElement(TM.Resizable,{className:`${r}`,boundsByDirection:!0,minWidth:-(((u==null?void 0:u.x)||0)+((u==null?void 0:u.w)||0)),minHeight:-(((u==null?void 0:u.y)||0)+((u==null?void 0:u.h)||0)),size:{width:(u==null?void 0:u.w)||0,height:(u==null?void 0:u.h)||0},style:{position:"absolute",left:u==null?void 0:u.x,top:u==null?void 0:u.y,pointerEvents:d?"none":"auto"},enable:E?!1:{top:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,right:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,bottom:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,left:(u==null?void 0:u.scaleType)===Ye.all&&!0||!1,topRight:!0,bottomRight:!0,bottomLeft:!0,topLeft:!0},lockAspectRatio:(u==null?void 0:u.scaleType)===Ye.proportional,onResizeStart:b,onResize:P,onResizeStop:D})},nm=s=>{const{id:r,pos:e,pointMap:t,type:n}=s,{setOperationType:i,mananger:o,floatBarData:a,viewId:c}=H.useContext(lt),[l,u]=H.useState({x:0,y:0}),[h,d]=H.useState(de.Pending),[f,g]=H.useState(!1),y=H.useRef(0),S=H.useRef(!1),E=H.useMemo(()=>a?{left:0,top:0}:{},[a]),C=(M,v)=>{if(!(v&&v!==c)){if(!M||a!=null&&a.isLocked){S.current=!0,y.current&&clearTimeout(y.current),y.current=0,g(!0),d(de.Pending),i(Te.None);return}g(!1)}};H.useEffect(()=>{const M=()=>{S.current&&(y.current&&clearTimeout(y.current),y.current=0,d(de.Pending),i(Te.None))};return Ve.activeListener(C),document.addEventListener("pointercancel",M),()=>{Ve.unmountActiveListener(C),document.removeEventListener("pointercancel",M)}},[]),H.useEffect(()=>{ye.isNumber(e.x)&&ye.isNumber(e.y)&&(h===de.Pending||h===de.Done)&&u({x:e.x,y:e.y})},[e,h]),H.useEffect(()=>{if(a&&(a!=null&&a.isLocked)){g(!0);return}g(!1)},[a]);const L=(M,v)=>{y.current&&(clearTimeout(y.current),y.current=0),i(Te.None),d(de.Done);const R={x:v.x,y:v.y};if(u(R),o!=null&&o.control.viewContainerManager){const b=o.control.viewContainerManager.transformToScenePoint([R.x,R.y],o.viewId),P=t.get(r);P&&n==="start"?P[0]=b:P&&n==="end"&&(P[1]=b),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Le,pointMap:t,workState:de.Done,viewId:o==null?void 0:o.viewId})}o==null||o.focusElement()},T=()=>{if(!bt(o)||!ye.isNumber(e.x)||!ye.isNumber(e.y))return!1;S.current=!1,y.current&&(clearTimeout(y.current),y.current=0),i(Te.SetPoint),d(de.Start),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Le,pointMap:t,workState:de.Start,viewId:o==null?void 0:o.viewId})},p=(M,v)=>{if(S.current)return;if(!bt(o))return S.current=!0,y.current&&clearTimeout(y.current),y.current=0,d(de.Pending),i(Te.None),!1;if(y.current)return;const R={x:v.x,y:v.y};u(R),y.current=setTimeout(()=>{if(y.current=0,!(S.current||!bt(o))&&o!=null&&o.control.viewContainerManager){const b=o.control.viewContainerManager.transformToScenePoint([R.x,R.y],o.viewId),P=t.get(r);P&&n==="start"?P[0]=b:P&&n==="end"&&(P[1]=b),d(de.Doing),Ve.emitMethod(We.MainEngine,Te.SetPoint,{workId:Le,pointMap:t,workState:de.Doing,viewId:o==null?void 0:o.viewId})}},60)},m=(M,v)=>{if(S.current){y.current&&clearTimeout(y.current),y.current=0,i(Te.None);return}if(!bt(o)){S.current=!0,y.current&&clearTimeout(y.current),y.current=0,d(de.Pending),i(Te.None);return}L(M,v)};return H.createElement(Qi,{disabled:f,position:l,onStart:T,onDrag:p,onStop:m},H.createElement("div",{className:"appliance-plugin-point-draggable-btn",style:E}))},gTe=s=>{const{className:r}=s,{floatBarData:e,mananger:t}=H.useContext(lt),[n,i]=H.useState(),[o,a]=H.useState(),[c,l]=H.useState(new Map);H.useEffect(()=>{const d=[];if(t&&(e!=null&&e.points)){const f=t.viewId;if(t.control.viewContainerManager.getView(f))for(const y of e.points){const S=t.control.viewContainerManager.transformToOriginPoint(y,f);d.push(S)}e!=null&&e.selectIds&&e.selectIds.length===1&&(c.set(e.selectIds[0],e.points),l(c))}d[0]&&i({x:d[0][0],y:d[0][1]}),d[1]&&a({x:d[1][0],y:d[1][1]})},[t,e==null?void 0:e.points,e==null?void 0:e.selectIds,c]);const u=H.useMemo(()=>n&&(e!=null&&e.selectIds)?H.createElement(nm,{pos:n,type:"start",id:e.selectIds[0],pointMap:c}):null,[n,e==null?void 0:e.selectIds,c]),h=H.useMemo(()=>o&&(e!=null&&e.selectIds)?H.createElement(nm,{pos:o,type:"end",id:e.selectIds[0],pointMap:c}):null,[o,e==null?void 0:e.selectIds,c]);return H.createElement("div",{className:`${r}`},u,h)},pTe=H.forwardRef((s,r)=>{const{floatBarData:e,operationType:t}=H.useContext(lt),n=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.all||t===Te.RotateNode?null:H.createElement(rTe,null),[e,t]),i=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.both||t===Te.RotateNode?null:H.createElement(nTe,null),[e,t]),o=H.useMemo(()=>(e==null?void 0:e.scaleType)!==Ye.proportional||t===Te.RotateNode?null:H.createElement(iTe,null),[e,t]),a=H.useMemo(()=>(e==null?void 0:e.scaleType)===Ye.none&&(e!=null&&e.canLock)?H.createElement(sTe,null):null,[e]);return H.createElement("div",{ref:r,style:e?{transform:`translate(${e.x}px,${e.y}px)`,width:e.w,height:e.h,pointerEvents:"none"}:void 0},a,n,i,o,s.children)}),mTe=H.memo(s=>{const{isHide:r,operationType:e,floatBarData:t}=s;return r&&e===Te.None&&ye.isNumber(t==null?void 0:t.x)&&ye.isNumber(t==null?void 0:t.y)&&ye.isNumber(t==null?void 0:t.w)&&ye.isNumber(t==null?void 0:t.h)?H.createElement("div",{className:mt.FloatBarBtn,style:{left:t==null?void 0:t.x,top:t==null?void 0:t.y,width:t.w,height:t.h}},H.createElement(lM,{position:{x:t.x,y:t.y},textOpt:t==null?void 0:t.textOpt,noLayer:t==null?void 0:t.isLocked})):null},(s,r)=>!!ye.isEqual(s,r)),yTe=H.forwardRef((s,r)=>{const{floatBarData:e,operationType:t,mananger:n}=H.useContext(lt),{editors:i,isHide:o,canSelectorSwitch:a}=s,c=H.useRef(null);H.useEffect(()=>{const d=c.current;if(!d)return;const f=g=>{g.stopPropagation(),g.stopImmediatePropagation(),n==null||n.control.worker.blurCursor(n.viewId)};return d.addEventListener("pointerdown",f,!1),()=>{d.removeEventListener("pointerdown",f,!1)}},[n]);const l=H.useMemo(()=>{var d;return e!=null&&e.canRotate&&((d=e==null?void 0:e.selectIds)==null?void 0:d.length)===1&&(t===Te.None||t===Te.RotateNode)?H.createElement(oTe,{className:mt.RotateBtn}):null},[e,t]),u=H.useMemo(()=>((e==null?void 0:e.scaleType)===Ye.all||(e==null?void 0:e.scaleType)===Ye.proportional)&&(t===Te.None||t===Te.ScaleNode)&&ye.isNumber(e==null?void 0:e.x)&&ye.isNumber(e==null?void 0:e.y)?H.createElement(fTe,{className:mt.ResizeBtn}):null,[e==null?void 0:e.scaleType,t,e==null?void 0:e.x,e==null?void 0:e.y]),h=H.useMemo(()=>(e==null?void 0:e.scaleType)===Ye.both&&(t===Te.None||t===Te.SetPoint)?H.createElement(gTe,{className:mt.ResizeTowBox}):null,[e==null?void 0:e.scaleType,t]);return H.createElement("div",{ref:c,className:mt.FloatBar,onPointerOver:d=>(mo(d),n==null||n.control.worker.blurCursor(n.viewId),!1)},H.createElement(pTe,{ref:r}),H.createElement(hTe,{editors:i,canSelectorSwitch:a}),l,u,h,H.createElement(mTe,{isHide:o,operationType:t,floatBarData:e}))}),vTe=H.memo(yTe,(s,r)=>!!ye.isEqual(s,r)),MTe=s=>{var l,u;const{tool:r,visual:e,imageKey:t}=s,n=ma[r],[i,o]=H.useState(e.images);H.useEffect(()=>o(e.images),[r,t,e.images]);const a=Pd(i),c=a?`${i.standardResolution} 1x, ${a} 2x`:void 0;return H.createElement("img",{className:"appliance-plugin-cursor-image","data-cursor-image-key":t,src:i.standardResolution,srcSet:c,width:(l=e.size)==null?void 0:l.width,height:(u=e.size)==null?void 0:u.height,alt:`${r}Cursor`,onError:()=>{i.standardResolution!==n.images.standardResolution&&o(n.images)}})};class wTe extends H.Component{constructor(){super(...arguments);x(this,"getCursorName",e=>{var t,n,i;return((t=e.payload)==null?void 0:t.nickName)||((n=e.payload)==null?void 0:n.cursorName)||((i=e.payload)==null?void 0:i.uid)});x(this,"detectAvatar",e=>{var t;return!!((t=e.payload)!=null&&t.avatar)});x(this,"getCursorBackgroundColor",e=>{var t;if((t=e.payload)!=null&&t.cursorBackgroundColor)return e.payload.cursorBackgroundColor;if(this.getCursorName(e))return`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`});x(this,"renderAvatar",(e,t)=>{var i;if(!this.detectAvatar(e))return null;const n=`rgb(${e.memberState.strokeColor[0]}, ${e.memberState.strokeColor[1]}, ${e.memberState.strokeColor[2]})`;return H.createElement("img",{className:"appliance-plugin-cursor-avatar",style:{width:t?19:28,height:t?19:28,position:t?"initial":"absolute",borderColor:t?"white":n,marginRight:t?4:0},src:(i=e.payload)==null?void 0:i.avatar,alt:"avatar"})});x(this,"renderTag",e=>{var t;return(t=e.payload)!=null&&t.cursorTagName?H.createElement("span",{className:"appliance-plugin-cursor-tag",style:{backgroundColor:e.payload.cursorTagBackgroundColor||this.getCursorBackgroundColor(e)}},e.payload.cursorTagName):null})}render(){var g,y,S,E,C;const{roomMember:e,cursorTool:t,resolver:n,labelOptions:i}=this.props;if(!t)return null;const o=n.getSynced(t),a=o.images.key||"external",c=this.getCursorName(e),l=n.getSyncedEnableShowName(t),u=l&&!!c,h=l&&this.detectAvatar(e),d=l&&!!((g=e.payload)!=null&&g.cursorTagName),f=u||h||d;return H.createElement("div",{className:"appliance-plugin-cursor-box","data-appliance":t},H.createElement("div",{className:`appliance-plugin-cursor-visual${o.size?" appliance-plugin-cursor-visual-sized":""}`,style:{width:(y=o.size)==null?void 0:y.width,height:(S=o.size)==null?void 0:S.height,transform:`translate(${o.offset.x}px, calc(-100% + ${o.offset.y}px))`}},f&&H.createElement("div",{className:`appliance-plugin-cursor-label appliance-plugin-cursor-label-${i.placement}`,style:{gap:i.gap,"--cursor-label-gap":`${i.gap}px`}},H.createElement("div",{style:{opacity:f?1:0,backgroundColor:this.getCursorBackgroundColor(e),color:((E=e.payload)==null?void 0:E.cursorTextColor)||"#FFFFFF"},className:(C=e.payload)!=null&&C.theme?"appliance-plugin-cursor-inner-mellow":"appliance-plugin-cursor-inner"},h&&this.renderAvatar(e,u||d),u&&H.createElement("span",{className:"appliance-plugin-cursor-name-text",style:{maxWidth:i.maxWidth}},c),d&&this.renderTag(e))),H.createElement(MTe,{key:`${t}:${a}`,tool:t,visual:o,imageKey:a})))}}const STe=s=>{var l;const{className:r,info:e,resolver:t,labelOptions:n}=s,{roomMember:i,cursorTool:o,...a}=e||{},c=typeof a.x=="number"&&typeof a.y=="number";return H.createElement("div",{"data-cursor-uid":(l=i==null?void 0:i.payload)==null?void 0:l.uid,className:r,style:c?{transform:`translate(${a.x}px, ${a.y}px)`}:{display:"none"}},i&&H.createElement(wTe,{roomMember:i,cursorTool:o,resolver:t,labelOptions:n}))},TTe=s=>{const{className:r,manager:e}=s,[t,n]=H.useState(),i=H.useMemo(()=>new rM(e.control.pluginOptions.extras.cursor),[e]),o=e.control.pluginOptions.extras.cursor.syncedLabel;H.useEffect(()=>(e.internalMsgEmitter.on([We.Cursor,e.viewId],a),()=>{e.internalMsgEmitter.off([We.Cursor,e.viewId],a)}),[e]);function a(c){n(c)}return H.useMemo(()=>t!=null&&t.length?H.createElement(H.Fragment,null,t.map(c=>c.roomMember?H.createElement(STe,{key:c.roomMember.memberId,className:r,info:c,resolver:i,labelOptions:o}):null)):null,[r,t,o,i])},CTe=s=>{const{viewId:r,miniMapCanvas:e,highlightColor:t,miniMapManager:n,contianer:i}=s,[o,a]=H.useState();H.useEffect(()=>(c(),n.listener.addListener([r,"viewCameraUpate"],c),n.listener.emitAsync([r,"miniMapCreate"],!0),()=>{n.listener.removeListener([r,"viewCameraUpate"],c)}),[]);const c=()=>{const h=n.maps.get(r);h&&l(h.miniMapCamera,h.viewCamera)},l=(h,d)=>{const{width:f,height:g}=i.getBoundingClientRect(),y=Math.min(f/h.width,g/h.height),S=d.width/d.scale,E=d.height/d.scale,C=[d.centerX,d.centerY],L=[h.centerX,h.centerY],T=[C[0]-L[0],C[1]-L[1]],p=Math.min(h.scale*y,h.scale*y),m=[T[0]*p,T[1]*p,S,E,p];a(m)},u=h=>{var d;if(n.control.renderControl.isWritable){const f=h.nativeEvent.target||h.nativeEvent.srcElement;if(f&&h.nativeEvent&&o){const{width:g,height:y}=f.getBoundingClientRect(),[S,E]=[g/2,y/2],[C,L]=[(h.nativeEvent.offsetX-S)/o[4],(h.nativeEvent.offsetY-E)/o[4]],T=n.maps.get(r);if(T!=null&&T.viewCamera){const[p,m]=[T.miniMapCamera.centerX+C,T.miniMapCamera.centerY+L];(d=n.control.room)==null||d.moveCamera({centerX:p,centerY:m,animationMode:"immediately"})}}}};return H.createElement("div",{style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pointerEvents:"auto"},onClick:u},H.createElement("canvas",{style:{pointerEvents:"none"},ref:e}),o&&H.createElement("div",{className:"minimap-highlightBox",style:{position:"absolute",top:"50%",left:"50%",width:o[2]*o[4],height:o[3]*o[4],boxSizing:"content-box",border:`2px solid ${t}`,transform:`translate(calc(-50% + ${o[0]}px), calc(-50% + ${o[1]}px))`,pointerEvents:"none"}}))},ITe=s=>{const{miniMapManager:r,active:e,className:t}=s,n=H.useMemo(()=>{const i=r.maps;if(e){const o=i.get(e);if(o){const{miniMapCamera:a,viewCamera:c,...l}=o;if(l.contianer&&a&&c){const u=r.highlightColor;return Ga.createPortal(H.createElement(CTe,{viewId:e,...l,highlightColor:u,miniMapManager:r}),l.contianer)}}}return null},[e,r]);return H.createElement("div",{className:t},n)},bTe=s=>{const{hasOffscreenCanvas:r,isUseSimple:e,generation:t,refs:n}=s;return r?H.createElement("div",{key:`worker-${t}`,className:mt.CanvasBox},H.createElement("canvas",{id:"bgCanvas",ref:n.canvasBgRef,style:{width:"100%",height:"100%"}}),H.createElement("canvas",{id:"serviceCanvas",className:mt.FloatCanvas,ref:n.canvasServiceFloatRef,style:{width:"100%",height:"100%"}}),H.createElement("canvas",{id:"localCanvas",className:mt.FloatCanvas,ref:n.canvasFloatRef,style:{width:"100%",height:"100%"}}),!e&&H.createElement("div",{id:"subLocalCanvas",className:mt.CanvasBoxSub,ref:n.subLocalCanvasContainerRef}),!e&&H.createElement("canvas",{id:"topCanvas",className:mt.TopFloatCanvas,ref:n.canvasTopRef,style:{width:"100%",height:"100%"}})):H.createElement("div",{key:`main-thread-${t}`,className:mt.CanvasBox,ref:n.canvasContainerRef})},ETe=2e3,lt=H.createContext({viewId:"",mananger:void 0,floatBarColors:[],overwriteSelectorStyles:{},floatBarData:void 0,dpr:1,angle:0,operationType:Te.None,scale:[1,1],isNoPointerEvents:!1,activeTextEditor:!1,activeTextId:void 0,setAngle:()=>{},setOperationType:()=>{},setFloatBarData:()=>{}});class Dd extends H.Component{constructor(e){var n,i;super(e);x(this,"showTextFloatBar");x(this,"canSelectorSwitch");x(this,"rightBoundBreak");x(this,"isUnmounted",!1);x(this,"renderSurfaceResetWaiters",new Set);x(this,"setAngle",e=>{this.setState({angle:e})});x(this,"setOperationType",e=>{this.setState({operationType:e})});this.state={floatBarData:void 0,showFloatBar:!1,showFloatBarBtn:!0,dpr:1,angle:0,operationType:Te.None,scale:[1,1],editors:this.editors,activeTextId:(n=this.props.mananger.control.textEditorManager)==null?void 0:n.activeId,activeMiniMapViewId:(i=this.props.mananger.control.miniMapManager)==null?void 0:i.activeViewId,renderSurfaceGeneration:0};const t=this.props.mananger.control.pluginOptions.extras.textEditor;this.showTextFloatBar=ye.isBoolean(t.showFloatBar)?t.showFloatBar:He.textEditor.showFloatBar,this.canSelectorSwitch=ye.isBoolean(t==null?void 0:t.canSelectorSwitch)?t.canSelectorSwitch:He.textEditor.canSelectorSwitch,this.rightBoundBreak=ye.isBoolean(t==null?void 0:t.rightBoundBreak)?t.rightBoundBreak:He.textEditor.rightBoundBreak}get editors(){return ht(this.props.mananger.control.textEditorManager.filterEditor(this.props.mananger.viewId))}componentDidMount(){this.isUnmounted=!1,this.props.mananger.vDom=this,this.props.mananger.mountView(),this.setState({dpr:this.props.mananger.dpr})}componentWillUnmount(){this.isUnmounted=!0;for(const e of this.renderSurfaceResetWaiters)clearTimeout(e.timer),e.resolve();this.renderSurfaceResetWaiters.clear(),this.props.mananger.vDom===this&&(this.props.mananger.vDom=void 0)}setDpr(e){this.state.dpr!==e&&this.setState({dpr:e})}resetRenderSurface(e=ETe){return this.isUnmounted?Promise.resolve():new Promise((t,n)=>{let i=!1;const o=c=>{i||(i=!0,clearTimeout(a.timer),this.renderSurfaceResetWaiters.delete(a),c?n(c):t())},a={timer:setTimeout(()=>o(new Error(`render surface reset timeout: ${this.props.viewId}; timeoutMs=${e}`)),e),resolve:()=>o(),reject:c=>o(c)};this.renderSurfaceResetWaiters.add(a),this.setState(c=>({renderSurfaceGeneration:c.renderSurfaceGeneration+1}),a.resolve)})}setActiveMiniMap(e){this.setState({activeMiniMapViewId:e})}showFloatBarBtn(e){this.setState({showFloatBarBtn:e})}showFloatBar(e,t){const n=e&&t&&{...this.state.floatBarData,...t}||void 0;this.setState({showFloatBar:e,floatBarData:n,angle:0})}activeTextEditor(){this.setState({activeTextEditor:!0})}unActiveTextEditor(){this.setState({activeTextEditor:!1})}updateTextEditorInfo(e,t){this.renderTextEditorInfo(e,t)}renderTextEditorInfo(e,t){this.setState({activeTextId:e,editors:this.editors},t)}setFloatBarData(e){this.state.floatBarData&&this.setState({floatBarData:{...this.state.floatBarData,...e}})}render(){var t,n,i,o,a,c;const e=!!((n=(t=this.props.mananger.control)==null?void 0:t.room)!=null&&n.floatBarOptions);return H.createElement("div",{className:mt.Container},H.createElement(bTe,{hasOffscreenCanvas:this.props.mananger.control.hasOffscreenCanvas,isUseSimple:this.props.mananger.control.isUseSimple,generation:this.state.renderSurfaceGeneration,refs:this.props.refs}),!this.props.mananger.control.hasOffscreenCanvas&&this.props.refs.snapshotContainerRef&&H.createElement("div",{className:mt.SnapshotBox,ref:this.props.refs.snapshotContainerRef})||null,this.props.mananger.control.isUseBackgroundThread&&!!this.props.refs.backgroundContainerRef&&H.createElement("div",{className:mt.BackgroundBox},H.createElement("div",{className:mt.BackgroundSvgBox,ref:this.props.refs.backgroundContainerRef}),!!this.props.refs.backgroundSnapshotContainerRef&&H.createElement("div",{className:mt.BackgroundSnapshotBox},H.createElement("div",{className:mt.BackgroundSnapshotContent,ref:this.props.refs.backgroundSnapshotContainerRef})))||null,H.createElement(lt.Provider,{value:{viewId:this.props.viewId,mananger:this.props.mananger,floatBarColors:e&&((a=(o=(i=this.props.mananger.control)==null?void 0:i.room)==null?void 0:o.floatBarOptions)==null?void 0:a.colors)||[],overwriteSelectorStyles:this.props.mananger.control.pluginOptions.extras.overwriteSelectorStyles||{},isNoPointerEvents:!this.state.showFloatBarBtn,floatBarData:this.state.floatBarData,dpr:this.state.dpr,angle:this.state.angle,operationType:this.state.operationType,scale:this.state.scale,activeTextEditor:this.state.activeTextEditor,activeTextId:this.state.activeTextId,setAngle:this.setAngle.bind(this),setOperationType:this.setOperationType.bind(this),setFloatBarData:this.setFloatBarData.bind(this)}},this.state.showFloatBar&&H.createElement(vTe,{ref:this.props.refs.floatBarRef,editors:this.state.editors,isHide:e&&this.state.showFloatBarBtn,canSelectorSwitch:this.canSelectorSwitch})||null,((c=this.state.editors)==null?void 0:c.size)&&H.createElement(tTe,{className:mt.TextEditorContainer,showFloatBtns:this.showTextFloatBar&&e&&this.state.showFloatBarBtn||!1,editors:this.state.editors,rightBoundBreak:this.rightBoundBreak})||null),H.createElement("div",{className:"appliance-plugin-custom-floatbar-container","data-view-id":this.props.viewId,ref:this.props.refs.customFloatbarContainerRef}),H.createElement(TTe,{className:mt.CursorBox,manager:this.props.mananger}),!this.props.mananger.control.isUseSimple&&H.createElement(ITe,{className:mt.MiniMapBox,active:this.state.activeMiniMapViewId,miniMapManager:this.props.mananger.control.miniMapManager}))}}class xTe extends aM{constructor(e,t){super(e,t);x(this,"width",1e3);x(this,"height",1e3);x(this,"dpr",Hi());x(this,"vDom");x(this,"eventTragetElement");x(this,"snapshotContainerRef");x(this,"backgroundSnapshotContainerRef");x(this,"canvasContainerRef",H.createRef());x(this,"subLocalCanvasContainerRef");x(this,"canvasTopRef");x(this,"canvasServiceFloatRef",H.createRef());x(this,"canvasFloatRef",H.createRef());x(this,"canvasBgRef",H.createRef());x(this,"backgroundContainerRef");x(this,"floatBarRef",H.createRef());x(this,"customFloatbarContainerRef",H.createRef());x(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=H.createRef()),this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef(),this.backgroundSnapshotContainerRef=H.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=this.eventTragetElement.offsetWidth||this.width,n=this.eventTragetElement.offsetHeight||this.height,i=Hi();i!==this.dpr&&this.requestDprUpdate(i),t&&n&&this.canvasContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.canvasContainerRef.current.style.width=`${t}px`,this.canvasContainerRef.current.style.height=`${n}px`),t&&n&&this.snapshotContainerRef&&this.snapshotContainerRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n),t&&n&&this.canvasBgRef.current&&(t!==this.width||n!==this.height)&&(this.width=t,this.height=n,this.resizeCanvasBackingStore()),t&&n&&this.backgroundContainerRef&&((e=this.backgroundContainerRef)!=null&&e.current)&&(t!==this.width||n!==this.height)&&(this.backgroundContainerRef.current.style.width=`${t}px`,this.backgroundContainerRef.current.style.height=`${n}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable))}}destroy(){if(super.destroy(),this.eventTragetElement){const e=this.eventTragetElement.parentElement;if(e){const t=e.querySelectorAll(".appliance-plugin-main-view-displayer");for(const n of t)n.remove()}}}createMainViewDisplayer(e){const t=document.createElement("div");return t.className="appliance-plugin-main-view-displayer",e.appendChild(t),this.eventTragetElement=e.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Ga.render(H.createElement(Dd,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef,backgroundSnapshotContainerRef:this.backgroundSnapshotContainerRef}}),t),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class RTe extends sSe{constructor(e,t,n){super(e,t,n);x(this,"dpr",Hi());x(this,"width",1e3);x(this,"height",1e3);x(this,"vDom");x(this,"eventTragetElement");x(this,"canvasContainerRef",H.createRef());x(this,"subLocalCanvasContainerRef");x(this,"canvasTopRef");x(this,"canvasServiceFloatRef",H.createRef());x(this,"canvasFloatRef",H.createRef());x(this,"canvasBgRef",H.createRef());x(this,"backgroundContainerRef");x(this,"floatBarRef",H.createRef());x(this,"customFloatbarContainerRef",H.createRef());x(this,"containerOffset",{x:0,y:0});this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef())}setCanvassStyle(){var e;if(this.eventTragetElement){const t=Hi();if(t!==this.dpr&&this.requestDprUpdate(t),this.canvasContainerRef.current){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.width=n,this.height=i,this.canvasContainerRef.current.style.width=`${n}px`,this.canvasContainerRef.current.style.height=`${i}px`)}if(this.canvasBgRef.current){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.width=n,this.height=i,this.resizeCanvasBackingStore())}if(this.backgroundContainerRef&&((e=this.backgroundContainerRef)!=null&&e.current)){const n=this.eventTragetElement.offsetWidth||this.width,i=this.eventTragetElement.offsetHeight||this.height;n&&i&&(n!==this.width||i!==this.height)&&(this.backgroundContainerRef.current.style.width=`${n}px`,this.backgroundContainerRef.current.style.height=`${i}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable))}}}createAppViewDisplayer(e,t){const n=document.createElement("div");return n.className="appliance-plugin-app-view-displayer",t.appendChild(n),this.eventTragetElement=t.children[0],this.containerOffset=this.getContainerOffset(this.eventTragetElement,this.containerOffset),this.bindToolsClass(),Ga.render(H.createElement(Dd,{viewId:e,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef}}),n),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement),this}}class Kn extends Yi{constructor(e){super(e);x(this,"focuedViewId");x(this,"focuedView");x(this,"control");x(this,"tmpFocusedViewId");x(this,"checkScaleTimer");x(this,"windowManager");x(this,"mainViewLifecycleRevision",0);x(this,"appViewLifecycleRevisionById",new Map);x(this,"appScenePathRetryTimerById",new Map);x(this,"focusedChangeListener",e=>{var i;const t=((i=this.windowManager)==null?void 0:i.focused)||e||Fe;this.getView(t)?(this.tmpFocusedViewId=void 0,this.focuedViewId!==t&&this.setFocuedViewId(t)):t!==Fe?this.tmpFocusedViewId=t:this.tmpFocusedViewId=void 0});x(this,"mainViewScenePathChangeListener",e=>{this.control.onSceneChange(e,Fe)});x(this,"boxCloseListener",e=>{this.bumpAppViewLifecycleRevision(e.appId),this.appViews.get(e.appId)&&(this.destroyAppView(e.appId),this.control.worker.destroyViewWorker(e.appId,"delete-storage"))});x(this,"appScenePathChangeListener",e=>{const{appId:t,view:n}=e;!t||!n||this.consumeAppScenePathWhenReady(t,n)});x(this,"appsChangeListener",e=>{for(const t of this.appViews.keys())e.includes(t)||(this.bumpAppViewLifecycleRevision(t),this.destroyAppView(t),this.control.worker.destroyViewWorker(t,"storage-already-deleted"))});x(this,"mainViewHotkeyListener",e=>{this.onActiveHotkeyChange(e)});x(this,"appViewListeners",new Map);x(this,"onMainViewRelease",async e=>{const t=++this.mainViewLifecycleRevision;if(await this.mainViewDestroy(e),t!==this.mainViewLifecycleRevision||(await new Promise(i=>{setTimeout(()=>{i(!0)},0)}),t!==this.mainViewLifecycleRevision))return;this.mountMainView(e,t);const n=this.control.getSnapshootData("memberState");this.control.room&&this.control.onMemberChange(n),this.control.clearSnapshootData()});x(this,"mainViewDestroy",async e=>{var n,i;const t=this.mainView;if(t!=null&&t.displayer){if(this.control.invalidatePendingViewInit(t.id),await this.control.forceDoneLocalWorks("view-destroy",[t.id]),this.mainView!==t)return;this.control.backgroundImageLoadCoordinator.cancelByViewScene(t.id),this.control.destroySceneChange(t.id),(n=this.control.selectorApi)==null||n.disposeView(t.id),this.control.textEditorManager.clear(Fe,!0),this.removeMainViewListeners(t.viewData),this.disposeViewRenderImageBitmaps(t.id),t.displayer.destroy();const o=e.divElement;if(o){const a=o.getElementsByClassName("appliance-plugin-main-view-displayer");for(const c of a)c.remove()}if(t.container&&o!==t.container){const a=t.container.getElementsByClassName("appliance-plugin-main-view-displayer");for(const c of a)c.remove()}(i=this.control.worker)==null||i.destroyViewWorker(t.id,"preserve-storage"),this.mainView===t&&(this.mainView=void 0)}});x(this,"onMainViewMounted",async e=>{const t=++this.mainViewLifecycleRevision;await this.mainViewDestroy(e),t===this.mainViewLifecycleRevision&&this.mountMainView(e,t)});x(this,"onMainViewSizeUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData?this.updateMainViewCamera("size-updated"):this.logMainViewCameraTrace("listener-dropped",{source:"size-updated",reason:"main-view-missing"})});x(this,"onMainViewCameraUpdated",async()=>{await new Promise(e=>{setTimeout(()=>{e(!0)},0)}),this.mainView&&this.mainView.viewData?this.updateMainViewCamera("camera-updated"):this.logMainViewCameraTrace("listener-dropped",{source:"camera-updated",reason:"main-view-missing"})});x(this,"updateMainViewCamera",e=>{if(this.mainView&&this.mainView.viewData){const t=this.mainView.viewData.camera;if(!ye.isNumber(t.scale)||t.scale===1/0){this.logMainViewCameraTrace("listener-dropped",{source:e,reason:"invalid-camera-scale",sourceCamera:t,sourceSize:this.mainView.viewData.size});return}const n=this.mainView.cameraOpt;if(n){const i=n.width,o=n.height,{width:a,height:c}=this.mainView.viewData.size;(a!==i||c!==o)&&this.mainView.displayer.updateSize();const l=t.scale===1/0?1:t.scale,u=t.centerX||0,h=t.centerY||0,d={...n,scale:l,centerX:u,centerY:h,width:a,height:c};!ye.isEqual(n,d)&&(this.mainView.cameraOpt=d),this.checkScaleTimer&&t.scale==1/0&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),!this.checkScaleTimer&&t.scale===1/0&&this.mainView.viewData&&this.mainView.viewData.camera.scale===1/0&&(this.checkScaleTimer=setTimeout(()=>{var g,y;(y=(g=this.mainView)==null?void 0:g.viewData)==null||y.moveCamera({scale:l,centerX:u,centerY:h,animationMode:"immediately"}),this.checkScaleTimer=void 0},500))}}});x(this,"onAppViewMounted",async e=>{var f;const{appId:t,view:n}=e,i=this.bumpAppViewLifecycleRevision(t);this.cancelAppScenePathRetry(t);const o=n.divElement;if(!o||!n.focusScenePath)return;const a=this.appViews.get(t);if(a&&a.displayer){if(this.control.invalidatePendingViewInit(t),await this.control.forceDoneLocalWorks("view-destroy",[t]),!this.isCurrentAppViewLifecycleRevision(t,i)||this.appViews.get(t)!==a)return;let g=o.getElementsByClassName("appliance-plugin-app-view-displayer");for(const y of g)y.remove();if(a.container&&a.container!==o){g=a.container.getElementsByClassName("appliance-plugin-app-view-displayer");for(const y of g)y.remove()}if(this.destroyAppView(e.appId,!0),(f=this.control.worker)==null||f.destroyViewWorker(t,"preserve-storage"),await new Promise(y=>{setTimeout(()=>{y(!0)},0)}),!this.isCurrentAppViewLifecycleRevision(t,i))return}if(!this.isCurrentAppViewLifecycleRevision(t,i))return;const c=new RTe(t,this.control,tt.InternalMsgEmitter),l=n.size.width||c.width,u=n.size.height||c.height;c.dpr;const h={cameraOpt:{...Kn.defaultCameraOpt,...n.camera,width:l,height:u}};this.createAppView({id:t,container:o,displayer:c,cameraOpt:h.cameraOpt,focusScenePath:n.focusScenePath,viewData:n}),c.createAppViewDisplayer(t,o);const d=this.getAppViewListeners(t);n.callbacks.on("onSizeUpdated",d.onSizeUpdated),n.callbacks.on("onCameraUpdated",d.onCameraUpdated),n.callbacks.on("onActiveHotkey",d.onActiveHotkey),this.tmpFocusedViewId===t?(this.setFocuedViewId(t),this.tmpFocusedViewId=void 0):this.getPreferredFocusedViewId()===t&&this.setFocuedViewId(t),setTimeout(()=>{this.isCurrentAppViewLifecycleRevision(t,i)&&this.onAppViewCameraUpdated(t)},0)});x(this,"onAppViewSizeUpdated",async e=>{await new Promise(n=>{setTimeout(()=>{n(!0)},0)});const t=this.appViews.get(e);t&&t.viewData&&this.updateAppCamera(e)});x(this,"onAppViewCameraUpdated",async e=>{await new Promise(t=>{setTimeout(()=>{t(!0)},0)}),this.updateAppCamera(e)});x(this,"updateAppCamera",e=>{const t=this.appViews.get(e);if(t&&t.viewData){const n=t.viewData.camera,i=t.cameraOpt;if(i){const{width:o,height:a}=t.viewData.size,c=i.width,l=i.height;(o!==c||a!==l)&&t.displayer.updateSize();const u=n.scale===1/0?1:n.scale,h=n.centerX||0,d=n.centerY||0,f={...i,scale:u,centerX:h,centerY:d,width:o,height:a};ye.isEqual(f,i)||(t.cameraOpt=f)}}});this.control=e.control}bumpAppViewLifecycleRevision(e){const t=(this.appViewLifecycleRevisionById.get(e)||0)+1;return this.appViewLifecycleRevisionById.set(e,t),t}isCurrentAppViewLifecycleRevision(e,t){return this.appViewLifecycleRevisionById.get(e)===t}cancelAppScenePathRetry(e){const t=this.appScenePathRetryTimerById.get(e);t!==void 0&&clearTimeout(t),this.appScenePathRetryTimerById.delete(e)}consumeAppScenePathWhenReady(e,t){const n=this.appViewLifecycleRevisionById.get(e);if(n===void 0)return;this.cancelAppScenePathRetry(e);const i=()=>{var l,u,h,d,f;if(this.appScenePathRetryTimerById.delete(e),!this.isCurrentAppViewLifecycleRevision(e,n)||((l=this.getView(e))==null?void 0:l.viewData)!==t)return;const o=t.focusScenePath,a=(f=(d=(h=(u=this.windowManager)==null?void 0:u.queryOne)==null?void 0:h.call(u,e))==null?void 0:d.getFullScenePath)==null?void 0:f.call(d);if(o&&(!a||o===a)){this.control.onSceneChange(o,e);return}const c=setTimeout(i,0);this.appScenePathRetryTimerById.set(e,c)};i()}getPreferredFocusedViewId(){var t;const e=(t=this.windowManager)==null?void 0:t.focused;return e&&this.getView(e)?e:this.tmpFocusedViewId&&this.getView(this.tmpFocusedViewId)?this.tmpFocusedViewId:Fe}getAuthoritativeScenePath(e){var n,i,o,a,c,l,u,h;if(e!==Fe){const d=(a=(o=(i=(n=this.windowManager)==null?void 0:n.queryOne)==null?void 0:i.call(n,e))==null?void 0:o.getFullScenePath)==null?void 0:a.call(o);if(d)return d}else{const d=(l=(c=this.windowManager)==null?void 0:c.mainView)==null?void 0:l.focusScenePath;if(d)return d}return((h=(u=this.getView(e))==null?void 0:u.viewData)==null?void 0:h.focusScenePath)||super.getAuthoritativeScenePath(e)}logMainViewCameraTrace(e,t){const n=this.control.logger,i=`[Appliance]: [main-view-camera] stage=${e} ${JSON.stringify(t)}`;n.infoDebounced?n.infoDebounced(`main-view-camera:${e}`,i):n.info(i)}getAppViewListeners(e){let t=this.appViewListeners.get(e);return t||(t={onSizeUpdated:()=>{this.onAppViewSizeUpdated(e)},onCameraUpdated:()=>{this.onAppViewCameraUpdated(e)},onActiveHotkey:n=>{this.onActiveHotkeyChange(n)}},this.appViewListeners.set(e,t)),t}removeMainViewListeners(e){e&&(e.callbacks.off("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.off("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.off("onActiveHotkey",this.mainViewHotkeyListener))}removeAppViewListeners(e,t){const n=this.appViewListeners.get(e);t&&n&&(t.callbacks.off("onSizeUpdated",n.onSizeUpdated),t.callbacks.off("onCameraUpdated",n.onCameraUpdated),t.callbacks.off("onActiveHotkey",n.onActiveHotkey)),this.appViewListeners.delete(e)}destroyAppView(e,t=!1){this.cancelAppScenePathRetry(e);const n=this.appViews.get(e);this.removeAppViewListeners(e,n==null?void 0:n.viewData),super.destroyAppView(e,t)}destroy(){var e;this.mainViewLifecycleRevision++;for(const t of this.appScenePathRetryTimerById.keys())this.cancelAppScenePathRetry(t);this.appViewLifecycleRevisionById.clear(),this.removeWindowManagerListeners(),this.checkScaleTimer&&(clearTimeout(this.checkScaleTimer),this.checkScaleTimer=void 0),this.removeMainViewListeners((e=this.mainView)==null?void 0:e.viewData);for(const[t,n]of this.appViews.entries())this.removeAppViewListeners(t,n.viewData);super.destroy(),this.appViewListeners.clear()}removeWindowManagerListeners(){var t;for(const n of this.appScenePathRetryTimerById.keys())this.cancelAppScenePathRetry(n);const e=(t=this.windowManager)==null?void 0:t.emitter;e&&(e.off("focusedChange",this.focusedChangeListener),e.off("mainViewScenePathChange",this.mainViewScenePathChangeListener),e.off("onMainViewMounted",this.onMainViewMounted),e.off("onAppViewMounted",this.onAppViewMounted),e.off("onMainViewRebind",this.onMainViewRelease),e.off("onBoxClose",this.boxCloseListener),e.off("onAppScenePathChange",this.appScenePathChangeListener),e.off("appsChange",this.appsChangeListener),this.windowManager=void 0)}getViewInitData(e){var n,i;const t=this.getView(e);if(t){const{width:o,height:a,dpr:c}=t.displayer,l={dpr:c,originalPoint:[o/2,a/2],offscreenCanvasOpt:{...Kn.defaultScreenCanvasOpt,contextType:((i=(n=this.control).getRenderContextTypeForView)==null?void 0:i.call(n,e))??this.control.renderingCompatibilityDecision.contextType,width:o,height:a},layerOpt:{...Kn.defaultLayerOpt,width:o,height:a},cameraOpt:{...Kn.defaultCameraOpt,width:o,height:a}};if(t.viewData){const{scale:u,...h}=t.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u}}return l}}async mountView(e){const t=this.getView(e);if(!t)return;const n=this.control.getViewLifecycleGeneration(e),i=()=>this.getView(e)===t&&this.control.isPendingViewInitCurrent(e,n);if(i())return this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"start"}),this.control.armPendingViewInit(e),this.control.queuePendingViewInit(e,async()=>{var a,c,l,u,h,d;if(!i()||(this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.ensureRenderRuntimeReady()),!i())||(await t.displayer.resetRenderSurface(),!i()))return;this.control.isUseOffscreenTransfer&&t.displayer.canvasBgRef.current&&t.displayer.canvasServiceFloatRef.current&&t.displayer.canvasFloatRef.current&&t.displayer.setTransferControlToOffscreenCanvas({bgCanvas:t.displayer.canvasBgRef.current,serviceCanvas:t.displayer.canvasServiceFloatRef.current,localCanvas:t.displayer.canvasFloatRef.current});const o=this.getViewInitData(e);if(o&&((a=this.control.worker)==null||a.createViewWorker(e,o,t.displayer)),t.focusScenePath&&this.control.collector){let f=!1;if(this.control.collector.authStorage){const{renderAuth:g,pageAuth:y}=this.control.collector.authStorage;if(g){const S=g[e];if(S){const{render:E,hide:C,clear:L}=S;this.control.renderControl.syncRenderUids(e,E,C,L),f=!0}}if(!f&&y){const S=y[e];S&&(this.control.renderControl.syncPageAuth(e,S,!0),f=!0)}}(u=(l=(c=this.control.pluginOptions)==null?void 0:c.extras)==null?void 0:l.undoRedo)!=null&&u.enableGlobal&&t.displayer.commiter&&((h=this.control.collector)!=null&&h.globalUndoRedoStackStorage[t.id])&&t.displayer.commiter.pullServiceData(this.control.collector.globalUndoRedoStackStorage[t.id])}if((d=this.control.worker)!=null&&d.isActive){const f=await this.control.worker.waitForViewInitCompletion(e);if(!i())return;if(f==="timeout")throw this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"timeout"}),new Error(`view init completion timeout: ${e}`)}},n)}listenerWindowManager(e){this.removeWindowManagerListeners(),this.windowManager=e,e.emitter.on("focusedChange",this.focusedChangeListener),e.emitter.on("mainViewScenePathChange",this.mainViewScenePathChangeListener),e.emitter.on("onMainViewMounted",this.onMainViewMounted),e.emitter.on("onAppViewMounted",this.onAppViewMounted),e.emitter.on("onMainViewRebind",this.onMainViewRelease),e.emitter.on("onBoxClose",this.boxCloseListener),e.emitter.on("onAppScenePathChange",this.appScenePathChangeListener),e.emitter.on("appsChange",this.appsChangeListener)}mountMainView(e,t){if(t!==this.mainViewLifecycleRevision)return;const n=e.divElement;if(!n||!e.focusScenePath||!(e.focusScenePath||e.scenePath))return;const o=new xTe(this.control,tt.InternalMsgEmitter),a=e.size.width||o.width,c=e.size.height||o.height;o.dpr;const l={cameraOpt:{...Kn.defaultCameraOpt,width:a,height:c}},{scale:u,...h}=e.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u},this.createMianView({id:Fe,container:n,displayer:o,focusScenePath:e.focusScenePath,cameraOpt:l.cameraOpt,viewData:e});const d=this.getPreferredFocusedViewId();(!d||!this.getView(d))&&this.setFocuedViewId(Fe),o.createMainViewDisplayer(n),this.control.notifyMainViewMounted(),e.callbacks.on("onSizeUpdated",this.onMainViewSizeUpdated),e.callbacks.on("onCameraUpdated",this.onMainViewCameraUpdated),e.callbacks.on("onActiveHotkey",this.mainViewHotkeyListener)}onActiveHotkeyChange(e){this.control.hotkeyManager.onActiveHotkey(e)}}class Rr extends tt{constructor(e){super(e);x(this,"windowManager");x(this,"viewContainerManager");const t={control:this,internalMsgEmitter:tt.InternalMsgEmitter,publicMsgEmitter:tt.PublicMsgEmitter};this.viewContainerManager=new Kn(t)}requiresCanvas2DCompanionRenderProbe(){return!0}init(){}activePlugin(){this.collector&&(this.collector.addAuthStateListener((e,t)=>{e&&Object.keys(e).forEach(n=>{var o;const i=(o=e[n])==null?void 0:o.newValue;this.renderControl.syncRenderUids(n,i==null?void 0:i.render,i==null?void 0:i.hide,i==null?void 0:i.clear)}),t&&Object.keys(t).forEach(n=>{var o;const i=(o=t[n])==null?void 0:o.newValue;this.renderControl.syncPageAuth(n,i)})}),this.collector.addStorageStateListener(e=>{var a;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){const l=Object.keys(e.diffView||{});for(const u of l.length?l:[Fe])this.handleRemoteStorageRemoval(u,void 0,{clearView:!0});return}const{diffView:t,diffScenePath:n,diffData:i}=e,o=new Map;if(t){let c;Object.keys(t).forEach(l=>{const u=t[l];if(u&&!u.newValue)this.handleRemoteStorageRemoval(l,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue);else if(u&&u.newValue){for(const h of Object.keys(u.newValue))this.worker.pullServiceData(l,h,{isAsync:!1,useAnimation:!1});c=u.newValue}if(c)for(const h of Object.values(c)){const d=new Set;for(const f of Object.keys(h))f&&d.add(f);o.set(l,d)}})}if(n){let c;Object.keys(n).forEach(l=>{const u=n[l],h=(u==null?void 0:u.scenePath)??l;if(u&&u.viewId&&!u.newValue?(this.handleRemoteStorageRemoval(u.viewId,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!1}),c=u.newValue),u!=null&&u.viewId&&c){const d=new Set;for(const f of Object.keys(c))f&&d.add(f),o.set(u.viewId,d)}})}i&&Object.keys(i).forEach(c=>{var u,h,d,f;const l=i[c];if(l){const g=l.storageKey??c,{viewId:y}=l,S=!l.newValue&&((u=this.collector)==null?void 0:u.isOwn(g));if(!l.newValue){const C=!!S&&!!((h=this.collector)!=null&&h.isSelector(g));this.handleRemoteStorageRemoval(y,g,{abortAllContinuousMethods:C,cancelTicker:C})}const E=o.get(y)||new Set;E.add(g),o.set(y,E),(d=this.worker)==null||d.onServiceDerive(g,l),(f=this.miniMapManager)==null||f.updateMiniMapCamera(y)}});for(const[c,l]of o.entries())tt.InternalMsgEmitter.emit("excludeIds",[...l],c)}),this.pluginOptions.extras.undoRedo.enableGlobal&&this.collector.addGlobalUndoRedoStackListener(e=>{Object.keys(e).forEach(t=>{var o;const n=e[t],i=(o=this.viewContainerManager.getView(t))==null?void 0:o.displayer.commiter;i&&i.pullServiceData(n==null?void 0:n.newValue)})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})}),this.room&&this.roomMember.onUidChangeHook(e=>{var t,n;(t=this.collector)!=null&&t.serviceStorage&&this.viewContainerManager.getAllViews().forEach(i=>{var o,a,c,l;if(i&&i.focusScenePath&&((o=this.collector)!=null&&o.serviceStorage[i.id])&&this.collector.serviceStorage[i.id][i.focusScenePath]){const u=Object.keys(this.collector.serviceStorage[i.id][i.focusScenePath]);for(const h of u){const d=(a=this.collector)==null?void 0:a.getUidFromKey(h);if(d&&!e.online.includes(d))if((c=this.collector)!=null&&c.isSelector(h))this.renderControl.isWritable&&((l=this.collector)==null||l.updateValue(h,void 0,{viewId:i.id,scenePath:i.focusScenePath,isSync:!0})),this.worker.blurSelector(i.id,i.focusScenePath,h);else{const f=this.textEditorManager.editors.get(h);f&&f.opt&&(f.opt.workState===de.Doing||f.opt.workState===de.Start)&&(js(f.opt.text)?this.textEditorManager.unActive(h):this.textEditorManager.delete(h))}}}}),(n=this.cursor)==null||n.updateRoomMembers(e)}))}async activeWorker(){await this.restoreCachedRenderRuntimeDecision(),await this.worker.init()}setWindowManager(e){var t,n,i,o,a;this.windowManager=e,(n=(t=this.windowManager)==null?void 0:t.mainView)!=null&&n.divElement&&this.viewContainerManager.onMainViewMounted(this.windowManager.mainView),(a=(o=(i=this.windowManager.appManager)==null?void 0:i.viewManager)==null?void 0:o.views)!=null&&a.size&&this.windowManager.appManager.viewManager.views.forEach((c,l)=>{this.viewContainerManager.onAppViewMounted({appId:l,view:c})}),this.viewContainerManager.listenerWindowManager(this.windowManager)}}const Xl=new WeakMap;function im(s){return/^https?:\/\//i.test(s.trim())}function kTe(s){var e,t;const r=[];for(const[n,i]of Object.entries(s.appearance||{})){if(!i)continue;const o=[["default",i.images],["local",(e=i.local)==null?void 0:e.images],["synced",(t=i.synced)==null?void 0:t.images]];for(const[a,c]of o){if(!c)continue;im(c.standardResolution)&&r.push({appliance:n,scope:a,density:"standard",key:c.key||"external",url:c.standardResolution});const l=Pd(c);l&&im(l)&&r.push({appliance:n,scope:a,density:"high",key:c.key||"external",url:l})}}return r}function uM(s){Xl.has(s)||(Xl.set(s,new Map),window.setTimeout(()=>{try{const r=cd(s),e=kTe(r);if(!e.length)return;const t=Xl.get(s);if(!t)return;const n=new Set;for(const i of e){if(n.has(i.url))continue;n.add(i.url);const o=new Image;let a;const c=()=>{a!==void 0&&window.clearTimeout(a),o.onload=null,o.onerror=null,t.delete(i.url)};o.onload=c,o.onerror=c,t.set(i.url,o),a=window.setTimeout(c,r.preloadTimeout),o.src=i.url}}catch{}},0))}function hM(s,r){var t;if(!r||!Array.isArray(r.sources)||!r.sources.includes("appliance")||typeof r.viewId!="string"||typeof r.scenePath!="string"||typeof r.imageUrl!="string")return!1;const e=(t=s==null?void 0:s[r.viewId])==null?void 0:t[r.scenePath];return e?Object.values(e).some(n=>{var i;return(n==null?void 0:n.toolsType)===q.BackgroundSVG&&((i=n.opt)==null?void 0:i.src)===r.imageUrl}):!1}function dM(s,r,e){return new Proxy(s,{get(t,n,i){const o=Reflect.get(t,n,i);if(n==="destroy")return o;if(e()===r)return typeof o!="function"?o:(...a)=>{if(e()===r)return Reflect.apply(o,i,a)}},set(t,n,i,o){return e()!==r?!0:Reflect.set(t,n,i,o)}})}const Se=class Se extends fm{constructor(){super(...arguments);x(this,"callbackDisplayer");x(this,"callbackStateName");x(this,"callbackOwnerManager");x(this,"ownedManager");x(this,"roomLifecycleDisposer");x(this,"roomLifecycleOwnerManager");x(this,"undoStepForwarderDisposer");x(this,"undoStepForwarderOwnerManager");x(this,"onPhaseChanged",e=>{var t;e===Pi.Reconnecting&&((t=this.ownedManager)==null||t.setSnapshootData())});x(this,"updateRoomWritable",()=>{var t;const e=this.callbackDisplayer||this.displayer;(t=this.ownedManager)==null||t.onWritableChange(e.isWritable)});x(this,"roomStateChangeListener",async e=>{var n,i;e!=null&&e.roomMembers&&((n=this.ownedManager)==null||n.onRoomMembersChange(e.roomMembers));const t=this.callbackDisplayer||this.displayer;ze(t)&&!t.isWritable||e.memberState&&((i=this.ownedManager)==null||i.onMemberChange(e.memberState))})}static async getInstance(e,t){var L,T,p;(m=>{var M,v;try{(v=(M=t.callbacks)==null?void 0:M.onInitLoadingChange)==null||v.call(M,m)}catch(R){Se.logger.error(`[ApplianceMultiPlugin] onInitLoadingChange error: ${(R==null?void 0:R.message)||R}`)}})({loading:!0,phase:"plugin",status:"start"});const i=e.displayer,o=new Xs(ze(i)&&i.logger||Se.logger),a=typeof navigator>"u"?"unknown":navigator.userAgent;o.info(`[Appliance]: [init-enter] version=${Dc} userAgent=${a}`);const c=i.callbacks.on,l=i.callbacks.off,u=i.callbacks.once,h=e.cleanCurrentScene,d=e.mainView.setMemberState;t!=null&&t.logger&&(Se.logger=new Xs(t.logger));let f=i.getInvisiblePlugin(Se.kind);f||(f=await Se.createApplianceMultiPlugin(i,Se.kind)),i&&f&&await Se.createCurrentManager(e,{cdn:t.options.cdn,extras:Jv(t.options.extras)},f,t.callbacks),(L=Se.currentManager)==null||L.emitInitLoadingChange({loading:!0,phase:"plugin",status:"success"});const g={displayer:i,windowManager:e,currentManager:Se.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,getBoundingRectAsync:async function(m){var R;Se.logger.info("[ApplianceMultiPlugin] getBoundingRectAsync");const M=(e.mainView||i).getBoundingRect(m),v=await((R=Se.currentManager)==null?void 0:R.getBoundingRect(m));return!M.width||!M.height?v:vd(M,v)},screenshotToCanvasAsync:async function(m,M,v,R,b,P){var N;Se.logger.info("[ApplianceMultiPlugin] screenshotToCanvasAsync");let D=v,z=R,j=b.scale;D>this.maxScreenshotWidth&&(j=this.maxScreenshotWidth/D*j,D=this.maxScreenshotWidth),z>this.maxScreenshotHeight&&(j=Math.min(this.maxScreenshotHeight/z*j,j),z=this.maxScreenshotHeight),b.scale=j;const A=document.createElement("canvas"),k=A.getContext("2d");A.width=D*(P||1),A.height=z*(P||1),k&&((e.mainView||i).screenshotToCanvas(k,M,D,z,b,P),m.drawImage(A,Math.floor((v-D)/2),Math.floor((R-z)/2),D*(P||1),z*(P||1),0,0,D,z),A.remove()),Se.currentManager&&await((N=Se.currentManager)==null?void 0:N.screenshotToCanvas(m,M,D,z,b,Math.floor((v-D)/2),Math.floor((R-z)/2)))},scenePreviewAsync:async function(m,M,v,R,b){Se.logger.info("[ApplianceMultiPlugin] scenePreviewAsync"),(e.mainView||i).scenePreview(m,M,v,R,b);const P=document.createElement("img");P.className="appliance-plugin-fill-scene-snapshot-img",M.append(P),getComputedStyle(M).position||(M.style.position="relative"),Se.currentManager&&await Se.currentManager.scenePreview(m,P)},fillSceneSnapshotAsync:async function(m,M,v,R,b){Se.logger.info("[ApplianceMultiPlugin] fillSceneSnapshotAsync"),M.innerHTML="",(e.mainView||i).fillSceneSnapshot(m,M,v,R,b);const P=v||e.mainView.size.width,D=R||e.mainView.size.height;let z=await this.getBoundingRectAsync(m);z||(z={originX:0,originY:0,width:P,height:D});let j=Math.max(z==null?void 0:z.width,P),A=Math.max(z==null?void 0:z.height,D),k=1;const N=j>P&&Math.min(P/j,k)||k,W=A>D&&Math.min(D/A,k)||k;N<=W?(j=N<1&&P||j,A=Math.floor(A*N)+1,k=N):N>W&&(A=W<1&&D||A,j=Math.floor(j*W)+1,k=W);const Y={scale:k,centerX:z.originX+z.width/2,centerY:z.originY+z.height/2},Q=document.createElement("canvas"),ie=Q.getContext("2d");Q.width=j,Q.height=A,ie&&await this.screenshotToCanvasAsync(ie,m,j,A,Y,devicePixelRatio);const O=document.createElement("img");O.className="appliance-plugin-fill-scene-snapshot-img",O.src=Q.toDataURL(),O.onload=()=>{Q.remove()},O.onerror=()=>{Q.remove(),O.remove()},M.append(O),getComputedStyle(M).position||(M.style.position="relative")},_callbacksOn:function(m,M){Se.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&ze(i)&&i.isWritable?Rr.InternalMsgEmitter.on(m,M):c.call(i.callbacks,m,M))},_callbacksOnce:function(m,M){Se.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&ze(i)&&i.isWritable?Rr.InternalMsgEmitter.on(m,M):u.call(i.callbacks,m,M))},_callbacksOff:function(m,M){Se.currentManager===g.currentManager&&((m==="onCanUndoStepsUpdate"||m==="onCanRedoStepsUpdate")&&ze(i)&&i.isWritable?Rr.InternalMsgEmitter.off(m,M):l.call(i.callbacks,m,M))},canRedoSteps(){if(Se.logger.info("[ApplianceMultiPlugin] canRedoSteps"),Se.currentManager&&ze(i)&&!i.disableSerialization){const m=Se.currentManager.viewContainerManager.focuedView,M=m==null?void 0:m.focusScenePath;if(m&&M)return m.displayer.commiter.redoStack.filter(v=>v.scenePath===M).length}return 0},canUndoSteps(){if(Se.logger.info("[ApplianceMultiPlugin] canUndoSteps"),Se.currentManager&&ze(i)&&!i.disableSerialization){const m=Se.currentManager.viewContainerManager.focuedView,M=m==null?void 0:m.focusScenePath;if(m&&M)return m.displayer.commiter.undoStack.filter(b=>b.scenePath===M).length}return 0},undo:function(){return Se.logger.info("[ApplianceMultiPlugin] undo"),Se.currentManager&&ze(i)&&!i.disableSerialization&&i.isWritable?Se.currentManager.viewContainerManager.undo():0},redo:function(){return Se.logger.info("[ApplianceMultiPlugin] redo"),Se.currentManager&&ze(i)&&!i.disableSerialization&&i.isWritable?Se.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(){Se.logger.info("[ApplianceMultiPlugin] cleanCurrentScene"),Se.currentManager&&ze(i)&&i.isWritable&&(Se.currentManager.logger.info("[Appliance]: cleanCurrentScene"),Se.currentManager.cleanCurrentScene().then(m=>{m&&h.call(e)}).catch(m=>{var M;(M=Se.currentManager)==null||M.logger.error(`[Appliance]: cleanCurrentScene failed: ${(m==null?void 0:m.message)||m}`)}))},insertImage:function(m){if(Se.logger.info("[ApplianceMultiPlugin] insertImage"),Se.currentManager&&ze(i)&&i.isWritable){const M=Se.currentManager.viewContainerManager.focuedViewId||Fe;Se.currentManager.worker.insertImage(M,m)}},lockImage:function(m,M){if(Se.logger.info("[ApplianceMultiPlugin] lockImage"),Se.currentManager&&ze(i)&&i.isWritable){const v=Se.currentManager.viewContainerManager.focuedViewId||Fe;Se.currentManager.worker.lockImage(v,m,M)}},completeImageUpload:function(m,M){if(Se.logger.info("[ApplianceMultiPlugin] completeImageUpload"),Se.currentManager&&ze(i)&&i.isWritable){const v=Se.currentManager.viewContainerManager.focuedViewId||Fe;Se.currentManager.worker.completeImageUpload(v,m,M)}},getImagesInformation:function(m){return Se.logger.info("[ApplianceMultiPlugin] completeImageUpload"),Se.currentManager&&ze(i)&&i.isWritable?Se.currentManager.worker.getImagesInformation(m):[]},insertText:function(m,M,v){if(Se.logger.info("[ApplianceMultiPlugin] insertText"),Se.currentManager&&ze(i)&&i.isWritable){const R=Se.currentManager.viewContainerManager.focuedViewId||Fe;return Se.currentManager.textEditorManager.insertText(R,m,M,v)}},updateText:function(m,M){Se.logger.info("[ApplianceMultiPlugin] updateText"),Se.currentManager&&ze(i)&&i.isWritable&&Se.currentManager.textEditorManager.updateText(m,M)},callbacks:()=>({...i.callbacks,on:g._callbacksOn.bind(g),once:g._callbacksOnce.bind(g),off:g._callbacksOff.bind(g)}),destroy(){return Se.logger.info("[Appliance]: [ApplianceMultiPlugin] destroy"),f?f.destroyOwnedPluginInstance(g.currentManager):Promise.resolve()},setMemberState(m){if(Se.currentManager){Se.currentManager.logger.info(`[Appliance]: setMemberState ${JSON.stringify(m)}`);const M=Object.keys(m);if(ze(i)&&i.isWritable){if(M.includes("currentApplianceName"))if(Se.currentManager.requestToolChange(m),m.currentApplianceName&&m.currentApplianceName===De.laserPen){if(Se.currentManager.isUseSimple)throw Se.currentManager.logger.error("[Appliance]: [ApplianceMultiPlugin] laserPen must be not support in simple mode"),new Error("[Appliance]: [ApplianceMultiPlugin] laserPen must be not support in simple mode");m.currentApplianceName=De.pencil,m.useLaserPen=!0}else m.currentApplianceName&&m.currentApplianceName===De.pencil&&(m.useLaserPen=!1);try{d.call(e.mainView,m)}catch(v){throw Se.currentManager.setToolChangePending(!1,"set-member-state-error"),v}return}}throw Se.logger.error("[Appliance]: [ApplianceMultiPlugin] setMemberState must be called in writable room"),new Error("[Appliance]: [ApplianceMultiPlugin] setMemberState must be called in writable room")},createMiniMap:async function(m,M){if(Se.logger.info("[ApplianceMultiPlugin] createMiniMap"),Se.currentManager&&ze(i)&&i.isWritable)return Se.currentManager.logger.info("[Appliance]: [ApplianceMultiPlugin] createMiniMap"),Se.currentManager.createMiniMap(m,M)},destroyMiniMap:async function(m){if(Se.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),Se.currentManager&&ze(i)&&i.isWritable)return Se.currentManager.logger.info("[Appliance]: [ApplianceMultiPlugin] destroyeMiniMap"),Se.currentManager.destroyMiniMap(m)},filterRenderByUid(m,M,v){if(Se.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),Se.currentManager&&ze(i)&&i.isWritable)return Se.currentManager.filterRenderByUid(m,M,v)},cancelFilterRender(m,M){if(Se.logger.info("[ApplianceMultiPlugin] filterRenderByUid"),Se.currentManager&&ze(i)&&i.isWritable)return Se.currentManager.cancelFilterRender(m,M)},addListener:(m,M)=>{Rr.PublicMsgEmitter.on(m,M)},removeListener:(m,M)=>{Rr.PublicMsgEmitter.off(m,M)},usePlugin:m=>{var M;Se.logger.info("[ApplianceMultiPlugin] usePlugin",m.kind),(M=Se.currentManager)==null||M.usePlugin(m)},getDisableDeviceInputs(){if(Se.currentManager&&ze(i))return Se.currentManager.disableDeviceInputs},setDisableDeviceInputs(m){Se.logger.info(`[ApplianceMultiPlugin] setDisableDeviceInputs ${m}`),Se.currentManager&&ze(i)&&(Se.currentManager.disableDeviceInputs=m)},getDisableCameraTransform(){if(Se.currentManager&&ze(i))return Se.currentManager.disableCameraTransform},setDisableCameraTransform(m){Se.logger.info(`[ApplianceMultiPlugin] setDisableCameraTransform ${m}`),Se.currentManager&&ze(i)&&(Se.currentManager.disableCameraTransform=m)},getDisableEraseImage(){if(Se.currentManager&&ze(i))return Se.currentManager.disableEraseImage},setDisableEraseImage(m){Se.logger.info(`[ApplianceMultiPlugin] setDisableEraseImage ${m}`),Se.currentManager&&ze(i)&&(Se.currentManager.disableEraseImage=m)},setWritable:m=>g.setWritable(m),requestIdleCallback:(m,M)=>{const v=(M==null?void 0:M.timeout)||0,R=performance.now();let b;const P=new MessageChannel;let D;const z=j=>{try{m({didTimeout:j,timeRemaining:()=>{const k=performance.now()-R;return Math.max(0,v-k)}})}catch(A){Se.logger.error("[ApplianceMultiPlugin] requestIdleCallback error:",A)}finally{P.port1.close(),P.port2.close(),b!==void 0&&cancelAnimationFrame(b),D!==void 0&&clearTimeout(D)}};return P.port1.onmessage=()=>{b=requestAnimationFrame(()=>{v>0&&performance.now()-R>=v?z(!0):z(!1)})},P.port2.postMessage(null),v>0&&(D=setTimeout(()=>{z(!0)},v)),D||b||0},cancelIdleCallback:m=>{try{clearTimeout(m),cancelAnimationFrame(m)}catch(M){Se.logger.error("[ApplianceMultiPlugin] cancelIdleCallback error:",M)}},injectMethodToObject:(m,M)=>{if(typeof m[M]=="function"||typeof m[M]>"u"){(M==="requestIdleCallback"||M==="cancelIdleCallback")&&Se.currentManager&&Se.currentManager.registerPolyfillMethod(M);const v=g[M];m[M]=function(...R){if(Se.currentManager===g.currentManager)return Reflect.apply(v,this,R)};return}M==="callbacks"&&(m.callbacks.on=g._callbacksOn.bind(g),m.callbacks.off=g._callbacksOff.bind(g),m.callbacks.once=g._callbacksOnce.bind(g))},blurText:()=>{Se.logger.info("[ApplianceMultiPlugin] blurText"),Se.currentManager&&ze(i)&&i.isWritable&&Se.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(m,M)=>{var v;if(Se.logger.info(`[ApplianceMultiPlugin] hasElements ${m}`),Se.currentManager&&ze(i)&&i.isWritable){let R=m;if(!R){const b=Se.currentManager.viewContainerManager.focuedView;R=b==null?void 0:b.focusScenePath}if(R){const b=(v=Se.currentManager.collector)==null?void 0:v.getScenePathData(R);if(b){const P=Object.values(b);return P.length>0?M?P.some(D=>M(D.toolsType)):!0:!1}return!1}return!1}},getElements:(m,M)=>{var v;if(Se.logger.info(`[ApplianceMultiPlugin] getElements ${m}`),Se.currentManager&&ze(i)&&i.isWritable){let R=m;if(!R){const b=Se.currentManager.viewContainerManager.focuedView;R=b==null?void 0:b.focusScenePath}if(R){const b=(v=Se.currentManager.collector)==null?void 0:v.getScenePathData(R),P=b&&Object.values(b)||[];return b&&P.length>0&&M?P.filter(D=>M(D.toolsType)):P}return[]}},hasBackgroundImage:m=>{var M,v;return hM((v=(M=Se.currentManager)==null?void 0:M.collector)==null?void 0:v.storage,m)},stopDraw:m=>{if(Se.logger.info(`[ApplianceMultiPlugin] stopDraw ${m}`),Se.currentManager&&ze(i))return Se.currentManager.stopDraw(m)},loadFontFaces:()=>{var m;return Se.logger.info("[ApplianceMultiPlugin] loadFontFaces"),((m=Se.currentManager)==null?void 0:m.loadFontFaces())||Promise.resolve({status:"error"})},refreshViewRender:m=>{var M;return Se.logger.info(`[ApplianceMultiPlugin] refreshViewRender ${m}`),((M=Se.currentManager)==null?void 0:M.refreshViewRender(m))||Promise.resolve({status:"error"})},refreshRender:()=>{var m;return Se.logger.info("[ApplianceMultiPlugin] refreshRender"),((m=Se.currentManager)==null?void 0:m.refreshRender())||Promise.resolve({status:"error"})},refreshViewTextRender:m=>{var M;return Se.logger.info(`[ApplianceMultiPlugin] refreshViewTextRender ${m}`),((M=Se.currentManager)==null?void 0:M.refreshViewTextRender(m))||Promise.resolve({status:"error"})},refreshTextRender:()=>{var m;return Se.logger.info("[ApplianceMultiPlugin] refreshTextRender"),((m=Se.currentManager)==null?void 0:m.refreshTextRender())||Promise.resolve({status:"error"})},setViewLocalScenePathChange:async(m,M)=>{Se.logger.info(`[ApplianceMultiPlugin] setViewLocalScenePathChange ${m} ${M}`),Se.currentManager&&await Se.currentManager.setViewLocalScenePathChange(M,m)},insertMarkmap:async(m,M)=>{if(Se.logger.info(`[ApplianceMultiPlugin] insertMarkmap: ${m}, info: ${JSON.stringify(M)}`),Se.currentManager&&Se.currentManager.isUseBackgroundThread)return Se.currentManager.worker.insertBackgroundMarkMap(m,M)},updateMarkmap:async(m,M,v)=>{if(Se.logger.info(`[ApplianceMultiPlugin] updateMarkmap: ${m}, markmapId: ${M}, info: ${JSON.stringify(v)}`),Se.currentManager&&Se.currentManager.isUseBackgroundThread)return Se.currentManager.worker.updateBackgroundMarkMap(m,M,v)},insertBackgroundImage:async(m,M)=>{if(Se.logger.info(`[ApplianceMultiPlugin] insertBackgroundImage: ${m}, info: ${JSON.stringify(M)}`),Se.currentManager&&Se.currentManager.isUseBackgroundThread)return Se.currentManager.worker.insertBackgroundSVG(m,M)},reloadBackgroundImage:async m=>{const M=Se.currentManager;return M?M.reloadBackgroundImage(m):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}},getSelectedElements:m=>{var M,v;return(v=(M=Se.currentManager)==null?void 0:M.selectorApi)==null?void 0:v.getSelectedElements(m)},isElementPropertySupported:(m,M)=>{var v,R;return((R=(v=Se.currentManager)==null?void 0:v.selectorApi)==null?void 0:R.isElementPropertySupported(m,M))||!1},blurSelector:m=>{var M;if(Se.currentManager&&ze(i)&&i.isWritable){const v=(M=Se.currentManager)==null?void 0:M.selectorApi;return v?v.blurSelector(m):Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},updateSelectedElements:(m,M)=>{var v;if(Se.currentManager&&ze(i)&&i.isWritable){const R=(v=Se.currentManager)==null?void 0:v.selectorApi;return R?R.updateSelectedElements(m,M):Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:m,ok:!1,reason:"no-selection"})}return Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:m,ok:!1,reason:"no-writable permission"})},updateElement:(m,M,v,R,b=!0)=>{var P;if(Se.currentManager&&ze(i)&&i.isWritable){const D=(P=Se.currentManager)==null?void 0:P.selectorApi;return D?D.updateElement(m,M,v,R,b):Promise.resolve(!1)}return Promise.resolve(!1)},copySelectedElements:m=>{var M;if(Se.currentManager&&ze(i)&&i.isWritable){const v=(M=Se.currentManager)==null?void 0:M.selectorApi;return v?v.copySelectedElements(m):Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},deleteSelectedElements:m=>{var M;if(Se.currentManager&&ze(i)&&i.isWritable){const v=(M=Se.currentManager)==null?void 0:M.selectorApi;return v?v.deleteSelectedElements(m):Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:m||Fe,reason:"no-selection"})},getFloatbarContainer:m=>{var M;return(M=Se.currentManager)==null?void 0:M.viewContainerManager.getFloatbarContainer(m)},getViewOffsetToContainer:(m,M)=>{var v;return(v=Se.currentManager)==null?void 0:v.viewContainerManager.getViewOffsetToContainer(m,M)}};g.injectMethodToObject(e,"undo"),g.injectMethodToObject(e,"redo"),g.injectMethodToObject(e,"cleanCurrentScene"),g.injectMethodToObject(e,"blurSelector"),g.injectMethodToObject(e,"updateElement"),g.injectMethodToObject(e,"insertImage"),g.injectMethodToObject(e,"completeImageUpload"),g.injectMethodToObject(e,"lockImage"),g.injectMethodToObject(e,"insertText"),g.injectMethodToObject(e,"updateText"),g.injectMethodToObject(i,"getImagesInformation"),g.injectMethodToObject(i,"callbacks"),g.injectMethodToObject(i,"screenshotToCanvasAsync"),g.injectMethodToObject(i,"getBoundingRectAsync"),g.injectMethodToObject(i,"scenePreviewAsync"),g.injectMethodToObject(i,"fillSceneSnapshotAsync"),g.injectMethodToObject(i,"blurSelector"),g.injectMethodToObject(i,"updateElement"),g.injectMethodToObject(e.mainView,"setMemberState"),ze(i)&&f&&(f.disposeRoomLifecycleInterceptor(),f.roomLifecycleDisposer=gm(i,()=>g.currentManager,Se.logger),f.roomLifecycleOwnerManager=g.currentManager),Object.defineProperty(e,"canUndoSteps",{get(){return g.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return g.canRedoSteps()}}),f==null||f.bindUndoStepForwarders(e);const y={...g,callbacks:g.callbacks()};Object.defineProperty(y,"disableDeviceInputs",{set(m){g.setDisableDeviceInputs(m)},get(){return g.getDisableDeviceInputs()}}),Object.defineProperty(y,"disableCameraTransform",{set(m){g.setDisableCameraTransform(m)},get(){return g.getDisableCameraTransform()}}),Object.defineProperty(y,"disableEraseImage",{set(m){g.setDisableEraseImage(m)},get(){return g.getDisableEraseImage()}});const S=dM(y,g.currentManager,()=>Se.currentManager);f&&Se.currentManager&&(Se.currentManager.bindPlugin(f),f.init(i));const E=Se.currentManager;e._appliancePlugin=S;const C=(T=Se.currentManager)==null?void 0:T.pluginOptions.extras.cursor;if(C&&((p=Se.currentManager)==null||p.worker.afterMainViewInitAck(()=>{uM(C)})),!E)throw e._appliancePlugin===S&&delete e._appliancePlugin,new Error("ApplianceMultiPlugin initialization was cancelled");if(E.startInitFontFaceLoadAndRender(),E.isMainViewMounted()){const m=await E.worker.waitForMainViewInitAck();if(m!=="ready"||Se.currentManager!==E)throw e._appliancePlugin===S&&delete e._appliancePlugin,new Error(`ApplianceMultiPlugin initialization ${m==="timeout"?"timed out":"was cancelled"}`)}else E.logger.info("[Appliance]: main view not mounted yet, deferring render-init ack wait"),E.waitForMainViewMounted().then(m=>{if(!(m!=="ready"||Se.currentManager!==E))return E.worker.waitForMainViewInitAck().then(M=>{E.logger.info(`[Appliance]: deferred render-init ${M}`)})}).catch(m=>{E.logger.error(`[Appliance]: deferred render-init failed: ${(m==null?void 0:m.message)||m}`)});return S}static onCreate(e){e&&Se.currentManager&&(Se.currentManager.bindPlugin(e),e.init(e.displayer))}static async createApplianceMultiPlugin(e,t){try{await e.createInvisiblePlugin(Se,{})}catch(i){if(!e.isWritable){await e.setWritable(!0);const a=await this.createApplianceMultiPlugin(e,t);return await e.setWritable(!1),a}throw(e.logger||Se.logger).error(`[Appliance]: create invisible plugin failed: ${(i==null?void 0:i.message)||i}`),i}let n=e.getInvisiblePlugin(t);return n||(n=await Se.createApplianceMultiPlugin(e,t)),n}static beginManagerDestroy(e){if(!e)return Promise.resolve();if(Se.drainingManager===e&&Se.drainingPromise)return Se.drainingPromise;Se.currentManager===e&&(Se.currentManager=void 0),Se.drainingManager=e;const t=e.destroy({preserveStorage:!0}).finally(()=>{Se.drainingManager===e&&(Se.drainingManager=void 0),Se.drainingPromise===t&&(Se.drainingPromise=void 0)});return Se.drainingPromise=t,t}init(e){this.unbindDisplayerCallbacks();const t=this.ownedManager,n=e.state;t==null||t.onRoomMembersChange(n.roomMembers),ze(e)&&(t==null||t.onMemberChange(n.memberState));const i=ih(e)?"onPlayerStateChanged":"onRoomStateChanged";this.callbackDisplayer=e,this.callbackStateName=i,this.callbackOwnerManager=t,e.callbacks.on(i,this.roomStateChangeListener),e.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),e.callbacks.on("onPhaseChanged",this.onPhaseChanged)}unbindDisplayerCallbacks(e){if(e!==void 0&&this.callbackOwnerManager!==e)return;const t=this.callbackDisplayer,n=this.callbackStateName;t&&n&&(t.callbacks.off(n,this.roomStateChangeListener),t.callbacks.off("onEnableWriteNowChanged",this.updateRoomWritable),t.callbacks.off("onPhaseChanged",this.onPhaseChanged)),this.callbackDisplayer=void 0,this.callbackStateName=void 0,this.callbackOwnerManager=void 0}disposeRoomLifecycleInterceptor(e){var t;e!==void 0&&this.roomLifecycleOwnerManager!==e||((t=this.roomLifecycleDisposer)==null||t.call(this),this.roomLifecycleDisposer=void 0,this.roomLifecycleOwnerManager=void 0)}bindUndoStepForwarders(e){this.disposeUndoStepForwarders();let t=!0;const n=new Set,i=(l,u,h,d=3)=>{if(!t||this.ownedManager!==o)return;const f=e.focused||Fe;if(d>0&&f!==u){const g=setTimeout(()=>{n.delete(g),i(l,u,h,d-1)},100);n.add(g);return}e.emitter.emit(l,h)},o=this.ownedManager,a=(l,u)=>i("canUndoStepsChange",u,l),c=(l,u)=>i("canRedoStepsChange",u,l);Rr.InternalMsgEmitter.on("onCanUndoStepsUpdate",a),Rr.InternalMsgEmitter.on("onCanRedoStepsUpdate",c),this.undoStepForwarderDisposer=()=>{t=!1,n.forEach(l=>clearTimeout(l)),n.clear(),Rr.InternalMsgEmitter.off("onCanUndoStepsUpdate",a),Rr.InternalMsgEmitter.off("onCanRedoStepsUpdate",c)},this.undoStepForwarderOwnerManager=o}disposeUndoStepForwarders(e){var t;e!==void 0&&this.undoStepForwarderOwnerManager!==e||((t=this.undoStepForwarderDisposer)==null||t.call(this),this.undoStepForwarderDisposer=void 0,this.undoStepForwarderOwnerManager=void 0)}destroyOwnedPluginInstance(e){return this.unbindDisplayerCallbacks(e),this.disposeRoomLifecycleInterceptor(e),this.disposeUndoStepForwarders(e),this.destroyOwnedManager(e)}destroyOwnedManager(e=this.ownedManager){return e?(this.ownedManager===e&&(this.ownedManager=void 0),Se.beginManagerDestroy(e)):Promise.resolve()}destroy(){Se.logger.info("[ApplianceMultiPlugin] passive destroy"),this.unbindDisplayerCallbacks(),this.disposeRoomLifecycleInterceptor(),this.disposeUndoStepForwarders(),this.destroyOwnedManager()}};x(Se,"drainingManager"),x(Se,"drainingPromise"),x(Se,"kind","appliance-multi-plugin"),x(Se,"currentManager"),x(Se,"logger",{info:console.log,warn:console.warn,error:console.error}),x(Se,"createCurrentManager",async(e,t,n,i)=>{Se.drainingPromise&&await Se.drainingPromise;const o=Se.currentManager;if(o)try{await Se.beginManagerDestroy(o),o.logger.info("[Appliance]: replace old manager success")}catch(l){throw o.logger.error(`[Appliance]: replace old manager failed: ${(l==null?void 0:l.message)||l}`),l}const a={plugin:n,displayer:e.displayer,options:t,callbacks:i},c=new Rr(a);c.setWindowManager(e),Se.currentManager=c,n.ownedManager=c});let Ju=Se;var ATe=Er,PTe=function(){return ATe.Date.now()},DTe=PTe,LTe=/\s/;function NTe(s){for(var r=s.length;r--&&LTe.test(s.charAt(r)););return r}var OTe=NTe,zTe=OTe,BTe=/^\s+/;function jTe(s){return s&&s.slice(0,zTe(s)+1).replace(BTe,"")}var FTe=jTe,UTe=pi,WTe=zr,VTe="[object Symbol]";function $Te(s){return typeof s=="symbol"||WTe(s)&&UTe(s)==VTe}var YTe=$Te,GTe=FTe,sm=Dn,HTe=YTe,om=NaN,QTe=/^[-+]0x[0-9a-f]+$/i,qTe=/^0b[01]+$/i,ZTe=/^0o[0-7]+$/i,KTe=parseInt;function XTe(s){if(typeof s=="number")return s;if(HTe(s))return om;if(sm(s)){var r=typeof s.valueOf=="function"?s.valueOf():s;s=sm(r)?r+"":r}if(typeof s!="string")return s===0?s:+s;s=GTe(s);var e=qTe.test(s);return e||ZTe.test(s)?KTe(s.slice(2),e?2:8):QTe.test(s)?om:+s}var JTe=XTe,_Te=Dn,Jl=DTe,am=JTe,e1e="Expected a function",t1e=Math.max,r1e=Math.min;function n1e(s,r,e){var t,n,i,o,a,c,l=0,u=!1,h=!1,d=!0;if(typeof s!="function")throw new TypeError(e1e);r=am(r)||0,_Te(e)&&(u=!!e.leading,h="maxWait"in e,i=h?t1e(am(e.maxWait)||0,r):i,d="trailing"in e?!!e.trailing:d);function f(m){var M=t,v=n;return t=n=void 0,l=m,o=s.apply(v,M),o}function g(m){return l=m,a=setTimeout(E,r),u?f(m):o}function y(m){var M=m-c,v=m-l,R=r-M;return h?r1e(R,i-v):R}function S(m){var M=m-c,v=m-l;return c===void 0||M>=r||M<0||h&&v>=i}function E(){var m=Jl();if(S(m))return C(m);a=setTimeout(E,y(m))}function C(m){return a=void 0,d&&t?f(m):(t=n=void 0,o)}function L(){a!==void 0&&clearTimeout(a),l=0,t=c=n=a=void 0}function T(){return a===void 0?o:C(Jl())}function p(){var m=Jl(),M=S(m);if(t=arguments,n=this,c=m,M){if(a===void 0)return g(c);if(h)return clearTimeout(a),a=setTimeout(E,r),f(c)}return a===void 0&&(a=setTimeout(E,r)),o}return p.cancel=L,p.flush=T,p}var i1e=n1e,s1e=i1e,o1e=Dn,a1e="Expected a function";function c1e(s,r,e){var t=!0,n=!0;if(typeof s!="function")throw new TypeError(a1e);return o1e(e)&&(t="leading"in e?!!e.leading:t,n="trailing"in e?!!e.trailing:n),s1e(s,r,{leading:t,maxWait:r,trailing:n})}var l1e=c1e;const u1e=ln(l1e);class h1e extends aM{constructor(e,t){super(e,t);x(this,"width",1e3);x(this,"height",1e3);x(this,"dpr",Hi());x(this,"vDom");x(this,"eventTragetElement");x(this,"snapshotContainerRef");x(this,"backgroundContainerRef");x(this,"backgroundSnapshotContainerRef");x(this,"canvasContainerRef",H.createRef());x(this,"subLocalCanvasContainerRef");x(this,"canvasTopRef");x(this,"canvasServiceFloatRef",H.createRef());x(this,"canvasFloatRef",H.createRef());x(this,"canvasBgRef",H.createRef());x(this,"floatBarRef",H.createRef());x(this,"customFloatbarContainerRef",H.createRef());x(this,"containerOffset",{x:0,y:0});this.control.hasOffscreenCanvas||(this.snapshotContainerRef=H.createRef()),this.control.isUseSimple||(this.canvasTopRef=H.createRef(),this.subLocalCanvasContainerRef=H.createRef()),this.control.isUseBackgroundThread&&(this.backgroundContainerRef=H.createRef(),this.backgroundSnapshotContainerRef=H.createRef())}setCanvassStyle(){if(this.eventTragetElement){const e=this.eventTragetElement.offsetWidth,t=this.eventTragetElement.offsetHeight,n=Hi();n!==this.dpr&&this.requestDprUpdate(n),e&&t&&this.canvasContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t),e&&t&&this.backgroundContainerRef&&this.backgroundContainerRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.backgroundContainerRef.current.style.width=`${e}px`,this.backgroundContainerRef.current.style.height=`${t}px`,this.backgroundContainerRef.current.classList.toggle("appliance-plugin-background-isWritable",this.control.renderControl.isWritable)),e&&t&&this.canvasBgRef.current&&(e!==this.width||t!==this.height)&&(this.width=e,this.height=t,this.resizeCanvasBackingStore())}}createMainViewDisplayer(e){return this.vDom||(this.containerOffset=this.getContainerOffset(e,this.containerOffset),this.eventTragetElement=e.parentElement.children[0],e.innerHTML="",Ga.render(H.createElement(Dd,{viewId:this.viewId,mananger:this,refs:{canvasServiceFloatRef:this.canvasServiceFloatRef,canvasFloatRef:this.canvasFloatRef,canvasBgRef:this.canvasBgRef,floatBarRef:this.floatBarRef,customFloatbarContainerRef:this.customFloatbarContainerRef,canvasTopRef:this.canvasTopRef,canvasContainerRef:this.canvasContainerRef,snapshotContainerRef:this.snapshotContainerRef,subLocalCanvasContainerRef:this.subLocalCanvasContainerRef,backgroundContainerRef:this.backgroundContainerRef,backgroundSnapshotContainerRef:this.backgroundSnapshotContainerRef}}),e),this.control.room&&this.bindDisplayerEvent(this.eventTragetElement)),this}}class Bi extends Yi{constructor(e){super(e);x(this,"focuedViewId");x(this,"control");x(this,"focuedView");this.control=e.control}bindMainView(){if(!this.control.divMainView)return;const e=new h1e(this.control,tt.InternalMsgEmitter),{width:t,height:n,dpr:i}=e,o={cameraOpt:{...Bi.defaultCameraOpt,width:t,height:n}},a=this.control.room&&this.control.room.mainView||this.control.play&&this.control.play.mainView;if(a){const{scale:c,...l}=a.camera;o.cameraOpt={...o.cameraOpt,...l,scale:c===1/0?1:c},this.createMianView({id:Fe,displayer:e,focusScenePath:a.focusScenePath||a.scenePath,cameraOpt:o.cameraOpt,viewData:a}),this.setFocuedViewId(Fe),e.createMainViewDisplayer(this.control.divMainView),this.control.notifyMainViewMounted()}}getViewInitData(e){var n,i;const t=this.getView(e);if(t){const{width:o,height:a,dpr:c}=t.displayer,l={dpr:c,originalPoint:[o/2,a/2],offscreenCanvasOpt:{...Bi.defaultScreenCanvasOpt,contextType:((i=(n=this.control).getRenderContextTypeForView)==null?void 0:i.call(n,e))??this.control.renderingCompatibilityDecision.contextType,width:o,height:a},layerOpt:{...Bi.defaultLayerOpt,width:o,height:a},cameraOpt:{...Bi.defaultCameraOpt,width:o,height:a}};if(t.viewData){const{scale:u,...h}=t.viewData.camera;l.cameraOpt={...l.cameraOpt,...h,scale:u===1/0?1:u}}return l}}async mountView(e){const t=this.getView(e);if(!t)return;const n=this.control.getViewLifecycleGeneration(e),i=()=>this.getView(e)===t&&this.control.isPendingViewInitCurrent(e,n);if(i())return this.control.emitInitLoadingChange({loading:!0,phase:"scene",status:"start"}),this.control.armPendingViewInit(e),this.control.queuePendingViewInit(e,async()=>{var a,c;if(!i()||(this.control.worker.isActive||(this.control.cursor.activeCollector(),await this.control.ensureRenderRuntimeReady()),!i())||(await t.displayer.resetRenderSurface(),!i())||(this.control.isUseOffscreenTransfer&&t.displayer.canvasBgRef.current&&t.displayer.canvasServiceFloatRef.current&&t.displayer.canvasFloatRef.current&&t.displayer.setTransferControlToOffscreenCanvas({bgCanvas:t.displayer.canvasBgRef.current,serviceCanvas:t.displayer.canvasServiceFloatRef.current,localCanvas:t.displayer.canvasFloatRef.current}),!i()))return;const o=this.getViewInitData(e);if(o&&((a=this.control.worker)==null||a.createViewWorker(e,o,t.displayer)),(c=this.control.worker)!=null&&c.isActive){const l=await this.control.worker.waitForViewInitCompletion(e);if(!i())return;if(l==="timeout")throw this.control.emitInitLoadingChange({loading:!1,phase:"ready",status:"timeout"}),new Error(`view init completion timeout: ${e}`)}},n)}}class ir extends tt{constructor(e){super(e);x(this,"viewContainerManager");x(this,"divMainView");x(this,"bindMainViewListener",e=>{this.divMainView=e,this.plugin&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView()});x(this,"onCameraChange",u1e(e=>{var n;const t=this.viewContainerManager.mainView;t&&t.cameraOpt&&(t.cameraOpt.width!==e.width||t.cameraOpt.height!==e.height)&&((n=this.viewContainerManager.mainView)==null||n.displayer.updateSize()),this.viewContainerManager.setFocuedViewCameraOpt(e)},Qa,{leading:!1}));const t={control:this,internalMsgEmitter:ir.InternalMsgEmitter,publicMsgEmitter:ir.PublicMsgEmitter};this.viewContainerManager=new Bi(t)}init(){ir.InternalMsgEmitter.on(We.BindMainView,this.bindMainViewListener)}destroy(e={}){return ir.InternalMsgEmitter.off(We.BindMainView,this.bindMainViewListener),this.onCameraChange.cancel(),super.destroy(e)}activePlugin(){this.plugin&&this.divMainView&&!this.viewContainerManager.mainView&&this.viewContainerManager.bindMainView(),this.collector&&(this.collector.addStorageStateListener(e=>{var a;if((a=this.collector)!=null&&a.storage&&Object.keys(this.collector.storage).length===0){const l=Object.keys(e.diffView||{});for(const u of l.length?l:[Fe])this.handleRemoteStorageRemoval(u,void 0,{clearView:!0});return}const{diffView:t,diffScenePath:n,diffData:i}=e,o=new Map;if(t){let c;Object.keys(t).forEach(l=>{const u=t[l];if(u&&!u.newValue)this.handleRemoteStorageRemoval(l,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue);else if(u&&u.newValue){for(const h of Object.keys(u.newValue))this.worker.pullServiceData(l,h,{isAsync:!1,useAnimation:!0});c=u.newValue}if(c)for(const h of Object.values(c)){const d=new Set;for(const f of Object.keys(h))f&&d.add(f);o.set(l,d)}})}if(n){let c;Object.keys(n).forEach(l=>{const u=n[l],h=(u==null?void 0:u.scenePath)??l;if(u&&u.viewId&&!u.newValue?(this.handleRemoteStorageRemoval(u.viewId,void 0,{clearView:!0}),u.oldValue&&(c=u.oldValue)):u&&u.viewId&&u.newValue&&(this.worker.pullServiceData(u.viewId,h,{isAsync:!1,useAnimation:!0}),c=u.newValue),u!=null&&u.viewId&&c){const d=new Set;for(const f of Object.keys(c))f&&d.add(f),o.set(u.viewId,d)}})}i&&Object.keys(i).forEach(c=>{var u,h,d,f;const l=i[c];if(l){const g=l.storageKey??c,{viewId:y}=l,S=!l.newValue&&((u=this.collector)==null?void 0:u.isOwn(g));if(!l.newValue){const C=!!S&&!!((h=this.collector)!=null&&h.isSelector(g));this.handleRemoteStorageRemoval(y,g,{abortAllContinuousMethods:C,cancelTicker:C})}const E=o.get(y)||new Set;E.add(g),o.set(y,E),(d=this.worker)==null||d.onServiceDerive(g,l),(f=this.miniMapManager)==null||f.updateMiniMapCamera(y)}});for(const[c,l]of o.entries())tt.InternalMsgEmitter.emit("excludeIds",[...l],c)}),this.room&&(this.roomMember.onUidChangeHook(e=>{var t;(t=this.collector)!=null&&t.serviceStorage&&this.viewContainerManager.getAllViews().forEach(n=>{var i,o,a,c,l,u;if(n&&n.focusScenePath&&((i=this.collector)!=null&&i.serviceStorage[n.id])&&((o=this.collector)!=null&&o.serviceStorage[n.id][n.focusScenePath])){const h=Object.keys((a=this.collector)==null?void 0:a.serviceStorage[n.id][n.focusScenePath]);for(const d of h){const f=(c=this.collector)==null?void 0:c.getUidFromKey(d);if(f&&!e.online.includes(f))if((l=this.collector)!=null&&l.isSelector(d))this.renderControl.isWritable&&((u=this.collector)==null||u.updateValue(d,void 0,{viewId:n.id,scenePath:n.focusScenePath,isSync:!0})),this.worker.blurSelector(n.id,n.focusScenePath,d);else{const g=this.textEditorManager.editors.get(d);g&&g.opt&&(g.opt.workState===de.Doing||g.opt.workState===de.Start)&&(js(g.opt.text)?this.textEditorManager.unActive(d):this.textEditorManager.delete(d))}}}})}),this.worker.isActive&&this.viewContainerManager.getAllViews().forEach(e=>{e&&e.focusScenePath&&this.worker.pullServiceData(e.id,e.focusScenePath,{isAsync:!0,useAnimation:!1})})))}async activeWorker(){await this.restoreCachedRenderRuntimeDecision(),await this.worker.init()}}const ve=class ve extends fm{constructor(){super(...arguments);x(this,"callbackDisplayer");x(this,"callbackStateName");x(this,"callbackOwnerManager");x(this,"ownedManager");x(this,"roomLifecycleDisposer");x(this,"roomLifecycleOwnerManager");x(this,"onPhaseChanged",e=>{var t;e===Pi.Reconnecting&&((t=this.ownedManager)==null||t.setSnapshootData())});x(this,"updateRoomWritable",()=>{var t;const e=this.callbackDisplayer||this.displayer;(t=this.ownedManager)==null||t.onWritableChange(e.isWritable)});x(this,"roomStateChangeListener",async e=>{const t=this.ownedManager;t instanceof ir&&(e.cameraState&&t.onCameraChange(e.cameraState),e.sceneState&&t.onSceneChange(e.sceneState.scenePath,Fe)),e!=null&&e.roomMembers&&(t==null||t.onRoomMembersChange(e.roomMembers));const n=this.callbackDisplayer||this.displayer;ze(n)&&!n.isWritable||e.memberState&&(t==null||t.onMemberChange(e.memberState))})}static async getInstance(e,t){var C,L,T;const n=new Xs(ze(e)&&e.logger||ve.logger),i=typeof navigator>"u"?"unknown":navigator.userAgent;n.info(`[Appliance]: [init-enter] version=${Dc} userAgent=${i}`),(p=>{var m,M;try{(M=(m=t.callbacks)==null?void 0:m.onInitLoadingChange)==null||M.call(m,p)}catch(v){ve.logger.error(`[ApplianceSinglePlugin] onInitLoadingChange error: ${(v==null?void 0:v.message)||v}`)}})({loading:!0,phase:"plugin",status:"start"});const a=e.callbacks.on,c=e.callbacks.off,l=e.callbacks.once,u=e.cleanCurrentScene.bind(e),h=e.setMemberState.bind(e);t!=null&&t.logger&&(ve.logger=new Xs(t.logger));let d=e.getInvisiblePlugin(ve.kind);d||(d=await ve.createAppliancePlugin(e,ve.kind)),e&&d&&await ve.createCurrentManager(e,{cdn:t.options.cdn,extras:Jv(t.options.extras)},d,t.callbacks),d&&ve.currentManager&&(ve.currentManager.bindPlugin(d),d.init(e)),ve.effectInstance(t==null?void 0:t.cursorAdapter,ve.currentManager),(C=ve.currentManager)==null||C.emitInitLoadingChange({loading:!0,phase:"plugin",status:"success"});const f={displayer:e,currentManager:ve.currentManager,maxScreenshotWidth:10*1024,maxScreenshotHeight:10*1024,_injectTargetObject:void 0,getBoundingRectAsync:async function(p){var v;ve.logger.info("[ApplianceSinglePlugin] getBoundingRectAsync");const m=e.getBoundingRect(p),M=await((v=ve.currentManager)==null?void 0:v.getBoundingRect(p));return!m.width||!m.height?M:vd(m,M)},screenshotToCanvasAsync:async function(p,m,M,v,R,b){var k;ve.logger.info("[ApplianceSinglePlugin] screenshotToCanvasAsync");let P=M,D=v,z=R.scale;P>this.maxScreenshotWidth&&(z=this.maxScreenshotWidth/P*z,P=this.maxScreenshotWidth),D>this.maxScreenshotHeight&&(z=Math.min(this.maxScreenshotHeight/D*z,z),D=this.maxScreenshotHeight),R.scale=z;const j=document.createElement("canvas"),A=j.getContext("2d");j.width=P*(b||1),j.height=D*(b||1),A&&(e.screenshotToCanvas(A,m,P,D,R,b),p.drawImage(j,Math.floor((M-P)/2),Math.floor((v-D)/2),P*(b||1),D*(b||1),0,0,P,D),j.remove()),ve.currentManager&&await((k=ve.currentManager)==null?void 0:k.screenshotToCanvas(p,m,P,D,R,Math.floor((M-P)/2),Math.floor((v-D)/2)))},scenePreviewAsync:async function(p,m,M,v,R){ve.logger.info("[ApplianceSinglePlugin] scenePreviewAsync"),e.scenePreview(p,m,M,v,R);const b=document.createElement("img");b.className="appliance-plugin-fill-scene-snapshot-img",m.append(b),getComputedStyle(m).position||(m.style.position="relative"),ve.currentManager&&await ve.currentManager.scenePreview(p,b)},fillSceneSnapshotAsync:async function(p,m,M,v,R){var O,V;ve.logger.info("[ApplianceSinglePlugin] fillSceneSnapshotAsync"),m.innerHTML="",e.fillSceneSnapshot(p,m,M,v,R);const b=M||((O=e.state.cameraState)==null?void 0:O.width)||0,P=v||((V=e.state.cameraState)==null?void 0:V.height)||0;let D=await this.getBoundingRectAsync(p);D||(D={originX:0,originY:0,width:b,height:P});let z=Math.max(D==null?void 0:D.width,b),j=Math.max(D==null?void 0:D.height,P),A=1;const k=z>b&&Math.min(b/z,A)||A,N=j>P&&Math.min(P/j,A)||A;k<=N?(z=k<1&&b||z,j=Math.floor(j*k)+1,A=k):k>N&&(j=N<1&&P||j,z=Math.floor(z*N)+1,A=N);const W={scale:A,centerX:D.originX+D.width/2,centerY:D.originY+D.height/2},Y=document.createElement("canvas"),Q=Y.getContext("2d");Y.width=z,Y.height=j,Q&&await this.screenshotToCanvasAsync(Q,p,z,j,W,devicePixelRatio);const ie=document.createElement("img");ie.className="appliance-plugin-fill-scene-snapshot-img",ie.src=Y.toDataURL(),ie.onload=()=>{Y.remove()},ie.onerror=()=>{Y.remove(),ie.remove()},m.append(ie),getComputedStyle(m).position||(m.style.position="relative")},_callbacksOn:function(p,m){ve.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&ze(e)&&e.isWritable?ir.InternalMsgEmitter.on(p,m):a.call(e.callbacks,p,m))},_callbacksOnce:function(p,m){ve.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&ze(e)&&e.isWritable?ir.InternalMsgEmitter.on(p,m):l.call(e.callbacks,p,m))},_callbacksOff:function(p,m){ve.currentManager===f.currentManager&&((p==="onCanUndoStepsUpdate"||p==="onCanRedoStepsUpdate")&&ze(e)&&e.isWritable?ir.InternalMsgEmitter.off(p,m):c.call(e.callbacks,p,m))},canRedoSteps(){if(ve.logger.info("[ApplianceSinglePlugin] canRedoSteps"),ve.currentManager&&ze(e)&&!e.disableSerialization){const p=ve.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.redoStack.filter(M=>M.scenePath===m).length}return 0},canUndoSteps(){if(ve.logger.info("[ApplianceSinglePlugin] canUndoSteps"),ve.currentManager&&ze(e)&&!e.disableSerialization){const p=ve.currentManager.viewContainerManager.focuedView,m=p==null?void 0:p.focusScenePath;if(p&&m)return p.displayer.commiter.undoStack.filter(M=>M.scenePath===m).length}return 0},undo:function(){return ve.logger.info("[ApplianceSinglePlugin] undo"),ve.currentManager&&ze(e)&&!e.disableSerialization?ve.currentManager.viewContainerManager.undo():0},redo:function(){return ve.logger.info("[ApplianceSinglePlugin] redo"),ve.currentManager&&ze(e)&&!e.disableSerialization?ve.currentManager.viewContainerManager.redo():0},cleanCurrentScene:function(p){ve.logger.info("[ApplianceSinglePlugin] cleanCurrentScene"),ve.currentManager&&ze(e)&&e.isWritable&&ve.currentManager.cleanCurrentScene().then(m=>{m&&u.call(e,p)}).catch(m=>{var M;(M=ve.currentManager)==null||M.logger.error(`[Appliance]: cleanCurrentScene failed: ${(m==null?void 0:m.message)||m}`)})},insertImage:function(p){ve.logger.info("[ApplianceSinglePlugin] insertImage"),ve.currentManager&&ze(e)&&e.isWritable&&ve.currentManager.worker.insertImage(Fe,p)},lockImage:function(p,m){ve.logger.info("[ApplianceSinglePlugin] lockImage"),ve.currentManager&&ze(e)&&e.isWritable&&ve.currentManager.worker.lockImage(Fe,p,m)},completeImageUpload:function(p,m){ve.logger.info("[ApplianceSinglePlugin] completeImageUpload"),ve.currentManager&&ze(e)&&e.isWritable&&ve.currentManager.worker.completeImageUpload(Fe,p,m)},getImagesInformation:function(p){return ve.logger.info("[ApplianceSinglePlugin] completeImageUpload"),ve.currentManager&&ze(e)&&e.isWritable?ve.currentManager.worker.getImagesInformation(p):[]},insertText:function(p,m,M){if(ve.logger.info("[ApplianceSinglePlugin] insertText"),ve.currentManager&&ze(e)&&e.isWritable)return ve.currentManager.textEditorManager.insertText(Fe,p,m,M)},updateText:function(p,m){ve.logger.info("[ApplianceMultiPlugin] updateText"),ve.currentManager&&ze(e)&&e.isWritable&&ve.currentManager.textEditorManager.updateText(p,m)},callbacks:()=>({...e.callbacks,on:f._callbacksOn.bind(f),once:f._callbacksOnce.bind(f),off:f._callbacksOff.bind(f)}),destroy(){return ve.logger.info("[ApplianceSinglePlugin] destroy"),d?d.destroyOwnedPluginInstance(f.currentManager):Promise.resolve()},setMemberState(p){var M,v,R;ve.logger.info(`[ApplianceSinglePlugin] setMemberState ${JSON.stringify(p)}`);const m=Object.keys(p);if(ze(e)&&e.isWritable){if(m.includes("currentApplianceName"))if((M=ve.currentManager)==null||M.requestToolChange(p),p.currentApplianceName&&p.currentApplianceName===De.laserPen){if((v=ve.currentManager)!=null&&v.isUseSimple)throw new Error("[ApplianceMultiPlugin] laserPen must be not support in simple mode");p.currentApplianceName=De.pencil,p.useLaserPen=!0}else p.currentApplianceName&&p.currentApplianceName===De.pencil&&(p.useLaserPen=!1);try{h(p)}catch(b){throw(R=ve.currentManager)==null||R.setToolChangePending(!1,"set-member-state-error"),b}return}throw new Error("setMemberState must be called in writable room")},createMiniMap:async function(p,m){if(ve.logger.info("[ApplianceSinglePlugin] createMiniMap"),ve.currentManager&&ze(e)&&e.isWritable)return ve.currentManager.createMiniMap(p,m)},destroyMiniMap:async function(p){if(ve.logger.info("[ApplianceMultiPlugin] destroyeMiniMap"),ve.currentManager&&ze(e)&&e.isWritable)return ve.currentManager.destroyMiniMap(p)},filterRenderByUid(p,m,M){if(ve.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),ve.currentManager&&ze(e)&&e.isWritable)return ve.currentManager.filterRenderByUid(p,m,M)},cancelFilterRender(p,m){if(ve.logger.info("[ApplianceSinglePlugin] filterRenderByUid"),ve.currentManager&&ze(e)&&e.isWritable)return ve.currentManager.cancelFilterRender(p,m)},addListener:(p,m)=>{ir.PublicMsgEmitter.on(p,m)},removeListener:(p,m)=>{ir.PublicMsgEmitter.off(p,m)},usePlugin:p=>{var m;ve.logger.info("[ApplianceSinglePlugin] usePlugin",p.kind),(m=ve.currentManager)==null||m.usePlugin(p)},getDisableDeviceInputs(){if(ve.currentManager&&ze(e))return ve.currentManager.disableDeviceInputs},setDisableDeviceInputs(p){ve.logger.info(`[ApplianceSinglePlugin] setDisableDeviceInputs ${p}`),ve.currentManager&&ze(e)&&(ve.currentManager.disableDeviceInputs=p)},getDisableCameraTransform(){if(ve.currentManager&&ze(e))return ve.currentManager.disableCameraTransform},setDisableCameraTransform(p){ve.logger.info(`[ApplianceSinglePlugin] setDisableCameraTransform ${p}`),ve.currentManager&&ze(e)&&(ve.currentManager.disableCameraTransform=p)},getDisableEraseImage(){if(ve.currentManager&&ze(e))return ve.currentManager.disableEraseImage},setDisableEraseImage(p){ve.logger.info(`[ApplianceSinglePlugin] setDisableEraseImage ${p}`),ve.currentManager&&ze(e)&&(ve.currentManager.disableEraseImage=p)},setWritable:p=>f.setWritable(p),requestIdleCallback:(p,m)=>{const M=(m==null?void 0:m.timeout)||0,v=performance.now();let R;const b=new MessageChannel;let P;const D=z=>{try{p({didTimeout:z,timeRemaining:()=>{const A=performance.now()-v;return Math.max(0,M-A)}})}catch(j){ve.logger.error("[ApplianceSinglePlugin] requestIdleCallback error:",j)}finally{b.port1.close(),b.port2.close(),R!==void 0&&cancelAnimationFrame(R),P!==void 0&&clearTimeout(P)}};return b.port1.onmessage=()=>{R=requestAnimationFrame(()=>{M>0&&performance.now()-v>=M?D(!0):D(!1)})},b.port2.postMessage(null),M>0&&(P=setTimeout(()=>{D(!0)},M)),P||R||0},cancelIdleCallback:p=>{try{clearTimeout(p),cancelAnimationFrame(p)}catch(m){ve.logger.error("[ApplianceSinglePlugin] cancelIdleCallback error:",m)}},injectMethodToObject:(p,m)=>{if(typeof p[m]=="function"||typeof p[m]>"u"){const M=f[m];p[m]=function(...v){if(ve.currentManager===f.currentManager)return Reflect.apply(M,this,v)};return}m==="callbacks"&&(p.callbacks.on=f._callbacksOn.bind(f),p.callbacks.off=f._callbacksOff.bind(f),p.callbacks.once=f._callbacksOnce.bind(f))},blurText:()=>{ve.logger.info("[ApplianceSinglePlugin] blurText"),ve.currentManager&&ze(e)&&e.isWritable&&ve.currentManager.textEditorManager.checkEmptyTextBlur()},hasElements:(p,m)=>{var M;if(ve.logger.info(`[ApplianceSinglePlugin] hasElements ${p}`),ve.currentManager&&ze(e)&&e.isWritable){let v=p;if(!v){const R=ve.currentManager.viewContainerManager.focuedView;v=R==null?void 0:R.focusScenePath}if(v){const R=(M=ve.currentManager.collector)==null?void 0:M.getScenePathData(v);if(R){const b=Object.values(R);return b.length>0?m?b.some(P=>m(P.toolsType)):!0:!1}return!1}return!1}},getElements:(p,m)=>{var M;if(ve.logger.info(`[ApplianceSinglePlugin] getElements ${p}`),ve.currentManager&&ze(e)&&e.isWritable){let v=p;if(!v){const R=ve.currentManager.viewContainerManager.focuedView;v=R==null?void 0:R.focusScenePath}if(v){const R=(M=ve.currentManager.collector)==null?void 0:M.getScenePathData(v),b=R&&Object.values(R)||[];return R&&b.length>0&&m?b.filter(P=>m(P.toolsType)):b}return[]}},hasBackgroundImage:p=>{var m,M;return hM((M=(m=ve.currentManager)==null?void 0:m.collector)==null?void 0:M.storage,p)},stopDraw:p=>{if(ve.logger.info(`[ApplianceSinglePlugin] stopDraw ${p}`),ve.currentManager&&ze(e))return ve.currentManager.stopDraw(p)},loadFontFaces:()=>{var p;return ve.logger.info("[ApplianceSinglePlugin] loadFontFaces"),((p=ve.currentManager)==null?void 0:p.loadFontFaces())||Promise.resolve({status:"error"})},refreshViewRender:p=>{var m;return ve.logger.info(`[ApplianceSinglePlugin] refreshViewRender ${p}`),((m=ve.currentManager)==null?void 0:m.refreshViewRender(p))||Promise.resolve({status:"error"})},refreshRender:()=>{var p;return ve.logger.info("[ApplianceSinglePlugin] refreshRender"),((p=ve.currentManager)==null?void 0:p.refreshRender())||Promise.resolve({status:"error"})},refreshViewTextRender:p=>{var m;return ve.logger.info(`[ApplianceSinglePlugin] refreshViewTextRender ${p}`),((m=ve.currentManager)==null?void 0:m.refreshViewTextRender(p))||Promise.resolve({status:"error"})},refreshTextRender:()=>{var p;return ve.logger.info("[ApplianceSinglePlugin] refreshTextRender"),((p=ve.currentManager)==null?void 0:p.refreshTextRender())||Promise.resolve({status:"error"})},setViewLocalScenePathChange:async(p,m)=>{ve.logger.info(`[ApplianceSinglePlugin] setViewLocalScenePathChange ${p} ${m}`),ve.currentManager&&await ve.currentManager.setViewLocalScenePathChange(p,m)},insertMarkmap:async(p,m)=>{if(ve.logger.info(`[ApplianceSinglePlugin] insertMarkmap: ${p}, info: ${JSON.stringify(m)}`),ve.currentManager&&ve.currentManager.isUseBackgroundThread)return ve.currentManager.worker.insertBackgroundMarkMap(p,m)},updateMarkmap:async(p,m,M)=>{if(ve.logger.info(`[ApplianceSinglePlugin] updateMarkmap: ${p}, markmapId: ${m}, info: ${JSON.stringify(M)}`),ve.currentManager&&ve.currentManager.isUseBackgroundThread)return ve.currentManager.worker.updateBackgroundMarkMap(p,m,M)},insertBackgroundImage:async(p,m)=>{if(ve.logger.info(`[ApplianceSinglePlugin] insertBackgroundImage: ${p}, info: ${JSON.stringify(m)}`),ve.currentManager&&ve.currentManager.isUseBackgroundThread)return ve.currentManager.worker.insertBackgroundSVG(p,m)},reloadBackgroundImage:async p=>{const m=ve.currentManager;return m?m.reloadBackgroundImage(p):{accepted:!1,reloadedCount:0,reason:"viewNotFound"}},getSelectedElements:p=>{var m,M;return(M=(m=ve.currentManager)==null?void 0:m.selectorApi)==null?void 0:M.getSelectedElements(p)},isElementPropertySupported:(p,m)=>{var M,v;return((v=(M=ve.currentManager)==null?void 0:M.selectorApi)==null?void 0:v.isElementPropertySupported(p,m))||!1},blurSelector:p=>{var m;if(ve.currentManager&&ze(e)&&e.isWritable){const M=(m=ve.currentManager)==null?void 0:m.selectorApi;return M?M.blurSelector(p):Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`clear-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},updateSelectedElements:p=>{var m;if(ve.currentManager&&ze(e)&&e.isWritable){const M=(m=ve.currentManager)==null?void 0:m.selectorApi;return M?M.updateSelectedElements(Fe,p):Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:Fe,ok:!1,reason:"no-selection"})}return Promise.resolve({requestId:`update-${Date.now().toString(36)}`,viewId:Fe,ok:!1,reason:"no-writable permission"})},updateElement:(p,m,M,v,R=!0)=>{var b;if(ve.currentManager&&ze(e)&&e.isWritable){const P=(b=ve.currentManager)==null?void 0:b.selectorApi;return P?P.updateElement(p,m,M,v,R):Promise.resolve(!1)}return Promise.resolve(!1)},copySelectedElements:p=>{var m;if(ve.currentManager&&ze(e)&&e.isWritable){const M=(m=ve.currentManager)==null?void 0:m.selectorApi;return M?M.copySelectedElements(p):Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`copy-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},deleteSelectedElements:p=>{var m;if(ve.currentManager&&ze(e)&&e.isWritable){const M=(m=ve.currentManager)==null?void 0:m.selectorApi;return M?M.deleteSelectedElements(p):Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})}return Promise.resolve({ok:!1,requestId:`delete-${Date.now().toString(36)}`,viewId:p||Fe,reason:"no-selection"})},getFloatbarContainer:p=>{var m;return(m=ve.currentManager)==null?void 0:m.viewContainerManager.getFloatbarContainer(p)},getViewOffsetToContainer:(p,m)=>{var M;return(M=ve.currentManager)==null?void 0:M.viewContainerManager.getViewOffsetToContainer(p,m)}};f.injectMethodToObject(e,"undo"),f.injectMethodToObject(e,"redo"),f.injectMethodToObject(e,"cleanCurrentScene"),f.injectMethodToObject(e,"blurSelector"),f.injectMethodToObject(e,"updateElement"),f.injectMethodToObject(e,"insertImage"),f.injectMethodToObject(e,"completeImageUpload"),f.injectMethodToObject(e,"lockImage"),f.injectMethodToObject(e,"getImagesInformation"),f.injectMethodToObject(e,"insertText"),f.injectMethodToObject(e,"updateText"),f.injectMethodToObject(e,"callbacks"),f.injectMethodToObject(e,"screenshotToCanvasAsync"),f.injectMethodToObject(e,"getBoundingRectAsync"),f.injectMethodToObject(e,"scenePreviewAsync"),f.injectMethodToObject(e,"fillSceneSnapshotAsync"),f.injectMethodToObject(e,"setMemberState"),ze(e)&&d&&(d.disposeRoomLifecycleInterceptor(),d.roomLifecycleDisposer=gm(e,()=>f.currentManager,ve.logger),d.roomLifecycleOwnerManager=f.currentManager),Object.defineProperty(e,"canUndoSteps",{get(){return f.canUndoSteps()}}),Object.defineProperty(e,"canRedoSteps",{get(){return f.canRedoSteps()}});const g={...f,callbacks:f.callbacks()};Object.defineProperty(g,"disableDeviceInputs",{set(p){f.setDisableDeviceInputs(p)},get(){return f.getDisableDeviceInputs()}}),Object.defineProperty(g,"disableEraseImage",{set(p){f.setDisableEraseImage(p)},get(){return f.getDisableEraseImage()}}),Object.defineProperty(g,"disableCameraTransform",{set(p){f.setDisableCameraTransform(p)},get(){return f.getDisableCameraTransform()}});const y=dM(g,f.currentManager,()=>ve.currentManager),S=ve.currentManager;e._appliancePlugin=y;const E=(L=ve.currentManager)==null?void 0:L.pluginOptions.extras.cursor;if(E&&((T=ve.currentManager)==null||T.worker.afterMainViewInitAck(()=>{uM(E)})),!S)throw e._appliancePlugin===y&&delete e._appliancePlugin,new Error("ApplianceSinglePlugin initialization was cancelled");if(S.startInitFontFaceLoadAndRender(),S.isMainViewMounted()){const p=await S.worker.waitForMainViewInitAck();if(p!=="ready"||ve.currentManager!==S)throw e._appliancePlugin===y&&delete e._appliancePlugin,new Error(`ApplianceSinglePlugin initialization ${p==="timeout"?"timed out":"was cancelled"}`)}else S.logger.info("[Appliance]: main view not mounted yet, deferring render-init ack wait"),S.waitForMainViewMounted().then(p=>{if(!(p!=="ready"||ve.currentManager!==S))return S.worker.waitForMainViewInitAck().then(m=>{S.logger.info(`[Appliance]: deferred render-init ${m}`)})}).catch(p=>{S.logger.error(`[Appliance]: deferred render-init failed: ${(p==null?void 0:p.message)||p}`)});return y}static onCreate(e){e&&ve.currentManager&&(ve.currentManager.bindPlugin(e),e.init(e.displayer))}static async createAppliancePlugin(e,t){try{await e.createInvisiblePlugin(ve,{})}catch(i){if(!e.isWritable){await e.setWritable(!0);const o=await this.createAppliancePlugin(e,t);return await e.setWritable(!1),o}throw i}let n=e.getInvisiblePlugin(t);return n||(n=await ve.createAppliancePlugin(e,t)),n}static beginManagerDestroy(e){if(!e)return Promise.resolve();if(ve.drainingManager===e&&ve.drainingPromise)return ve.drainingPromise;ve.currentManager===e&&(ve.currentManager=void 0),ve.drainingManager=e;const t=e.destroy({preserveStorage:!0}).finally(()=>{ve.drainingManager===e&&(ve.drainingManager=void 0),ve.drainingPromise===t&&(ve.drainingPromise=void 0)});return ve.drainingPromise=t,t}static effectInstance(e=ve.cursorAdapter,t=ve.currentManager){ve.disposeCursorAdapterBinding(),ve.cursorAdapter=e,ve.cursorAdapterOwnerManager=e?t:void 0;const n=e==null?void 0:e.onAddedCursor;if(e&&typeof n=="function"){const i=function(o){o.onCursorMemberChanged=a=>{try{a.appliance===De.pencil||a.appliance===De.shape||a.appliance===De.text||a.appliance===De.arrow||a.appliance===De.straight||a.appliance===De.rectangle||a.appliance===De.ellipse||a.appliance===De.eraser||a.appliance===De.selector?o!=null&&o.divElement&&(o.divElement.style.display="none"):o!=null&&o.divElement&&(o.divElement.style.display="block")}catch(c){throw c}},n.call(e,o)};e.onAddedCursor=i,ve.cursorAdapterBinding={adapter:e,original:n,wrapper:i,owner:t}}}static disposeCursorAdapterBinding(e){const t=ve.cursorAdapterBinding;e!==void 0&&(t==null?void 0:t.owner)!==e&&ve.cursorAdapterOwnerManager!==e||(t&&t.adapter.onAddedCursor===t.wrapper&&(t.adapter.onAddedCursor=t.original),ve.cursorAdapterBinding=void 0,ve.cursorAdapter=void 0,ve.cursorAdapterOwnerManager=void 0)}init(e){this.unbindDisplayerCallbacks();const t=this.ownedManager,n=e.state;t==null||t.onRoomMembersChange(n.roomMembers),ze(e)&&n!=null&&n.memberState&&(t==null||t.onMemberChange(n.memberState));const i=ih(e)?"onPlayerStateChanged":"onRoomStateChanged";this.callbackDisplayer=e,this.callbackStateName=i,this.callbackOwnerManager=t,e.callbacks.on(i,this.roomStateChangeListener),e.callbacks.on("onEnableWriteNowChanged",this.updateRoomWritable),e.callbacks.on("onPhaseChanged",this.onPhaseChanged)}unbindDisplayerCallbacks(e){if(e!==void 0&&this.callbackOwnerManager!==e)return;const t=this.callbackDisplayer,n=this.callbackStateName;t&&n&&(t.callbacks.off(n,this.roomStateChangeListener),t.callbacks.off("onEnableWriteNowChanged",this.updateRoomWritable),t.callbacks.off("onPhaseChanged",this.onPhaseChanged)),this.callbackDisplayer=void 0,this.callbackStateName=void 0,this.callbackOwnerManager=void 0}disposeRoomLifecycleInterceptor(e){var t;e!==void 0&&this.roomLifecycleOwnerManager!==e||((t=this.roomLifecycleDisposer)==null||t.call(this),this.roomLifecycleDisposer=void 0,this.roomLifecycleOwnerManager=void 0)}destroyOwnedPluginInstance(e){return this.unbindDisplayerCallbacks(e),this.disposeRoomLifecycleInterceptor(e),ve.disposeCursorAdapterBinding(e),this.destroyOwnedManager(e)}destroyOwnedManager(e=this.ownedManager){return e?(this.ownedManager===e&&(this.ownedManager=void 0),ve.beginManagerDestroy(e)):Promise.resolve()}destroy(){ve.logger.info("[ApplianceSinglePlugin] passive destroy"),this.unbindDisplayerCallbacks(),this.disposeRoomLifecycleInterceptor(),ve.disposeCursorAdapterBinding(),this.destroyOwnedManager()}};x(ve,"drainingManager"),x(ve,"drainingPromise"),x(ve,"kind","appliance-single-plugin"),x(ve,"cursorAdapter"),x(ve,"cursorAdapterOwnerManager"),x(ve,"cursorAdapterBinding"),x(ve,"currentManager"),x(ve,"logger",{info:console.log,warn:console.warn,error:console.error}),x(ve,"createCurrentManager",async(e,t,n,i)=>{ve.drainingPromise&&await ve.drainingPromise,ve.currentManager&&await ve.beginManagerDestroy(ve.currentManager);const o={plugin:n,displayer:e,options:t,callbacks:i},a=new ir(o);a.init(),ve.logger.info("[ApplianceSinglePlugin] refresh ApplianceSingleManager object"),ve.currentManager=a,n&&(n.ownedManager=a)});let _u=ve;const Ui=class Ui extends H.Component{constructor(){super(...arguments);x(this,"mainViewRef",null)}componentDidMount(){Ui.emiter||(Ui.emiter=ir.InternalMsgEmitter),Ui.emiter.emit(We.BindMainView,this.mainViewRef)}render(){return H.createElement(H.Fragment,null,this.props.children,H.createElement("div",{className:"appliance-plugin-main-view-displayer",ref:e=>this.mainViewRef=e}))}};x(Ui,"emiter");let eh=Ui;const d1e=Object.freeze(Object.defineProperty({__proto__:null,ActiveContainerType:um,ApplianceMultiPlugin:Ju,ApplianceNames:De,AppliancePluginCursorNames:or,ApplianceSigleWrapper:eh,ApplianceSinglePlugin:_u,Camera_Ack_Slow_Timeout:ru,Camera_Transport_Fallback_Timeout:sa,Camera_Update_Business_Timeout:dm,Cursor_Hover_Id:hm,ECanvasShowType:_e,EDataType:xe,EForceStopReason:Ds,EImageType:on,EMatrixrRelationType:sn,EOperationType:wt,EPostMessageType:le,ERenderFilterType:Mr,ESVGType:Wi,EScaleType:Ye,EStrokeType:Be,EToolsKey:q,ElayerType:In,EmitEventType:Te,EventMessageType:Ls,EventWorkState:de,EvevtWorkState:de,FontFaceFallbackBlacklistLevel:Js,InternalMsgEmitterType:We,Main_View_Id:Fe,Renderer_Business_Default_Timeout:qa,ShapeType:Zt,Task_Time_Interval:Qa,WorkerCanvasContextBlacklistLevel:Ha,WorkerMaskTextureFormatBlacklistLevel:rh,WorkerMaskTextureUploadBlacklistLevel:nh,WorkerRenderModeBlacklistLevel:Ar},Symbol.toStringTag,{value:"Module"}));exports.Cursor_Hover_Id=hm;exports.DefaultAppliancePluginExtrasOptions=He;exports.ECanvasShowType=_e;exports.EDataType=xe;exports.EImageType=on;exports.EMatrixrRelationType=sn;exports.EPostMessageType=le;exports.ESVGType=Wi;exports.EToolsKey=q;exports.EmitEventType=Te;exports.EventWorkState=de;exports.Group=dt;exports.Main_View_Id=Fe;exports.MaxDelayBatchScheduler=O0;exports.ObserverMap=Fu;exports.Scene=Sc;exports.ServiceRenderScheduler=Kye;exports.Storage_Selector_key=Le;exports.Storage_Splitter=Bt;exports.Storage_ViewId_ALL=Bu;exports.Task_Time_Interval=Qa;exports.VNodeManager=E0;exports.ViewContainerManager=Yi;exports.acceptIncomingEraserGeometryDelta=Fpe;exports.cancelDoingForGeometryMismatch=t0;exports.computRect=Ue;exports.flushServiceRenderBarrier=B0;exports.formatRendererBusinessError=N0;exports.geometryDigest=Hs;exports.getEraserBatchDelay=z0;exports.getIconImageSrc=x0;exports.getMarkmapRuntimeOrThrow=tM;exports.getOutgoingEraserGeometryDelta=Dpe;exports.getRectMatrixrRelation=Bc;exports.getSafetyRect=wn;exports.getShapeInstance=pd;exports.hasDoingGeometryTransform=zpe;exports.index=d1e;exports.isCameraUpdateTimeoutError=$ye;exports.isEqual=nn;exports.isIntersectForPoint=Y0;exports.isNumber=yt;exports.normalizeCameraTaskError=R0;exports.removeAllChildren=ur;exports.removeTexture=hr;exports.resolveCursorToolName=Nc;exports.runCameraUpdateWithTimeout=A0;exports.toRendererBusinessError=Wu;exports.transformToNormalData=Nn;exports.transformToSerializableData=xt;exports.waitForCameraUpdateTask=P0;exports.waitForRendererBusiness=Uu;