@taole/giftstage 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var wB=i=>{throw TypeError(i)};var mn=(i,A,t)=>A.has(i)||wB("Cannot "+t);var DB=(i,A,t)=>(mn(i,A,"read from private field"),t?t.call(i):A.get(i)),Gn=(i,A,t)=>A.has(i)?wB("Cannot add the same private member more than once"):A instanceof WeakSet?A.add(i):A.set(i,t),yB=(i,A,t,e)=>(mn(i,A,"write to private field"),e?e.call(i,t):A.set(i,t),t),Fn=(i,A,t)=>(mn(i,A,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Sn=typeof document!="undefined"?document.currentScript:null;const bQ=`#version 300 es
1
+ "use strict";var DB=i=>{throw TypeError(i)};var Gn=(i,A,t)=>A.has(i)||DB("Cannot "+t);var yB=(i,A,t)=>(Gn(i,A,"read from private field"),t?t.call(i):A.get(i)),Fn=(i,A,t)=>A.has(i)?DB("Cannot add the same private member more than once"):A instanceof WeakSet?A.add(i):A.set(i,t),pB=(i,A,t,e)=>(Gn(i,A,"write to private field"),e?e.call(i,t):A.set(i,t),t),Sn=(i,A,t)=>(Gn(i,A,"access private method"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Nn=typeof document!="undefined"?document.currentScript:null;const YQ=`#version 300 es
2
2
  precision highp float;
3
3
 
4
4
  layout(location = 0) in vec3 a_position;
@@ -15,7 +15,7 @@ void main() {
15
15
  v_uv = a_uv;
16
16
  v_color = a_color;
17
17
  }
18
- `,YQ=`#version 300 es
18
+ `,LQ=`#version 300 es
19
19
  precision highp float;
20
20
 
21
21
  layout(location = 0) in vec2 a_corner;
@@ -39,7 +39,7 @@ void main() {
39
39
  v_uv = mix(a_uvRect.xy, a_uvRect.zw, a_corner);
40
40
  v_color = vec4(1.0, 1.0, 1.0, a_translateAlpha.z);
41
41
  }
42
- `,pB=`#version 300 es
42
+ `,mB=`#version 300 es
43
43
  precision mediump float;
44
44
 
45
45
  uniform sampler2D u_atlas;
@@ -53,7 +53,7 @@ void main() {
53
53
  vec4 c = texture(u_atlas, v_uv);
54
54
  fragColor = vec4(c.rgb * v_color.rgb * v_color.a, c.a * v_color.a);
55
55
  }
56
- `,LQ=`#version 300 es
56
+ `,_Q=`#version 300 es
57
57
  precision highp float;
58
58
 
59
59
  layout(location = 0) in vec2 a_position;
@@ -72,7 +72,7 @@ void main() {
72
72
  v_rgbUV = u_atlasRemap.xy + a_rgbUV * u_atlasRemap.zw;
73
73
  v_alphaUV = u_atlasRemap.xy + a_alphaUV * u_atlasRemap.zw;
74
74
  }
75
- `,mB=`#version 300 es
75
+ `,GB=`#version 300 es
76
76
  precision mediump float;
77
77
 
78
78
  uniform sampler2D u_video;
@@ -87,7 +87,7 @@ void main() {
87
87
  float alpha = texture(u_video, v_alphaUV).r;
88
88
  fragColor = vec4(rgb * alpha, alpha);
89
89
  }
90
- `,_Q=`#version 300 es
90
+ `,JQ=`#version 300 es
91
91
  precision highp float;
92
92
 
93
93
  layout(location = 0) in vec2 a_position;
@@ -106,7 +106,7 @@ void main() {
106
106
  v_rgbUV = atlasUv;
107
107
  v_alphaUV = atlasUv + vec2(-0.5 * u_atlasRemap.z, 0.0);
108
108
  }
109
- `,GB=`#version 300 es
109
+ `,FB=`#version 300 es
110
110
  precision mediump float;
111
111
 
112
112
  uniform sampler2D u_video;
@@ -121,7 +121,7 @@ void main() {
121
121
  float alpha = texture(u_video, v_alphaUV).r;
122
122
  fragColor = vec4(rgb * alpha, alpha);
123
123
  }
124
- `,JQ=`#version 300 es
124
+ `,HQ=`#version 300 es
125
125
  precision highp float;
126
126
 
127
127
  layout(location = 0) in vec2 a_position;
@@ -137,7 +137,7 @@ void main() {
137
137
  gl_Position = u_projection * u_transform * vec4(a_position, 0.0, 1.0);
138
138
  v_uv = u_atlasRemap.xy + a_uv * u_atlasRemap.zw;
139
139
  }
140
- `,HQ=`#version 300 es
140
+ `,KQ=`#version 300 es
141
141
  precision mediump float;
142
142
 
143
143
  uniform sampler2D u_video;
@@ -149,7 +149,7 @@ out vec4 fragColor;
149
149
  void main() {
150
150
  fragColor = texture(u_video, v_uv);
151
151
  }
152
- `,KQ=`#version 300 es
152
+ `,vQ=`#version 300 es
153
153
  precision highp float;
154
154
 
155
155
  layout(location = 0) in vec2 a_position;
@@ -174,7 +174,7 @@ void main() {
174
174
  v_rgbUV = atlasUv;
175
175
  v_alphaUV = atlasUv + vec2(-0.5 * ar.z, 0.0);
176
176
  }
177
- `,vQ=`#version 300 es
177
+ `,TQ=`#version 300 es
178
178
  precision highp float;
179
179
 
180
180
  layout(location = 0) in vec2 a_position;
@@ -208,7 +208,7 @@ void main() {
208
208
  v_rgbUV = ar.xy + vec2(rgb_u, rgb_v) * ar.zw;
209
209
  v_alphaUV = ar.xy + vec2(a_u, a_v) * ar.zw;
210
210
  }
211
- `,TQ=`#version 300 es
211
+ `,qQ=`#version 300 es
212
212
  precision mediump float;
213
213
 
214
214
  uniform mat4 u_projection;
@@ -218,7 +218,7 @@ layout(location = 0) in vec2 a_pos;
218
218
  void main() {
219
219
  gl_Position = u_projection * vec4(a_pos, 0.0, 1.0);
220
220
  }
221
- `,qQ=`#version 300 es
221
+ `,VQ=`#version 300 es
222
222
  precision mediump float;
223
223
 
224
224
  out vec4 fragColor;
@@ -226,7 +226,7 @@ out vec4 fragColor;
226
226
  void main() {
227
227
  fragColor = vec4(0.0);
228
228
  }
229
- `,VQ=`/** SVGA atlas variant for premultiplied RGBA atlas textures. */
229
+ `,zQ=`/** SVGA atlas variant for premultiplied RGBA atlas textures. */
230
230
  struct Uniforms {
231
231
  projection: mat4x4f,
232
232
  transform: mat4x4f,
@@ -263,7 +263,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
263
263
  let c = textureSample(atlasTex, atlasSampler, f.uv);
264
264
  return vec4f(c.rgb * f.color.rgb * f.color.a, c.a * f.color.a);
265
265
  }
266
- `,zQ=`struct Uniforms {
266
+ `,ZQ=`struct Uniforms {
267
267
  projection: mat4x4f,
268
268
  transform: mat4x4f,
269
269
  /** xy = atlas min (0–1), zw = extent (du,dv) for full decoded frame quad. */
@@ -301,7 +301,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
301
301
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;
302
302
  return vec4f(rgb * alpha, alpha);
303
303
  }
304
- `,ZQ=`struct Uniforms {
304
+ `,WQ=`struct Uniforms {
305
305
  projection: mat4x4f,
306
306
  transform: mat4x4f,
307
307
  atlasRemap: vec4f,
@@ -339,7 +339,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
339
339
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;
340
340
  return vec4f(rgb * alpha, alpha);
341
341
  }
342
- `,WQ=`struct Uniforms {
342
+ `,jQ=`struct Uniforms {
343
343
  projection: mat4x4f,
344
344
  transform: mat4x4f,
345
345
  atlasRemap: vec4f,
@@ -371,7 +371,7 @@ fn vs(v: VIn) -> VOut {
371
371
  fn fs(f: VOut) -> @location(0) vec4f {
372
372
  return textureSample(videoTex, videoSampler, f.uv);
373
373
  }
374
- `,jQ=`/// Batched alpha (RGB | A side-by-side): one draw per shared texture (e.g. atlas).\r
374
+ `,OQ=`/// Batched alpha (RGB | A side-by-side): one draw per shared texture (e.g. atlas).\r
375
375
  /// Per-instance: transform + atlasRemap; shared projection in uniform.\r
376
376
  \r
377
377
  struct Globals {\r
@@ -419,7 +419,7 @@ fn fs(f: VOut) -> @location(0) vec4f {\r
419
419
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;\r
420
420
  return vec4f(rgb * alpha, alpha);\r
421
421
  }\r
422
- `,OQ=`/// Batched VAP: one draw per shared texture (e.g. atlas). Per-instance: transform, atlasRemap,\r
422
+ `,XQ=`/// Batched VAP: one draw per shared texture (e.g. atlas). Per-instance: transform, atlasRemap,\r
423
423
  /// rgb/alpha UV rects (left, right, top, bottom in normalized [0,1] space); shared projection in uniform.\r
424
424
  \r
425
425
  struct Globals {\r
@@ -475,7 +475,7 @@ fn fs(f: VOut) -> @location(0) vec4f {\r
475
475
  let alpha = textureSample(videoTex, videoSampler, f.alphaUV).r;\r
476
476
  return vec4f(rgb * alpha, alpha);\r
477
477
  }\r
478
- `,XQ=`struct Uniforms {
478
+ `,PQ=`struct Uniforms {
479
479
  projection: mat4x4f,
480
480
  }
481
481
 
@@ -500,7 +500,7 @@ fn vs(v: VIn) -> VOut {
500
500
  fn fs(f: VOut) -> @location(0) vec4f {
501
501
  return vec4f(0.0, 0.0, 0.0, 0.0);
502
502
  }
503
- `,PQ=`struct Globals {
503
+ `,$Q=`struct Globals {
504
504
  projection: mat4x4f,
505
505
  }
506
506
 
@@ -548,7 +548,7 @@ fn fs(f: VOut) -> @location(0) vec4f {
548
548
  let c = textureSample(atlasTex, atlasSampler, f.uv);
549
549
  return vec4f(c.rgb * f.color.rgb * f.color.a, c.a * f.color.a);
550
550
  }
551
- `,J={svgaBatchPremul:{vert:bQ,frag:pB},svgaInstancedPremul:{vert:YQ,frag:pB},vap:{vert:LQ,frag:mB},vapInstanced:{vert:vQ,frag:mB},alphaVideo:{vert:_Q,frag:GB},alphaVideoInstanced:{vert:KQ,frag:GB},rgbaTextured:{vert:JQ,frag:HQ},clipMask:{vert:TQ,frag:qQ}},yA={svgaBatchPremul:VQ,svgaInstancedPremul:PQ,vap:zQ,vapInstanced:OQ,alphaVideo:ZQ,alphaVideoInstanced:jQ,rgbaTextured:WQ,clipMask:XQ};var $Q=Object.defineProperty,Aa=(i,A,t)=>A in i?$Q(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,F=(i,A,t)=>Aa(i,typeof A!="symbol"?A+"":A,t);const ta=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),ea=new Float32Array([0,0,1,1]),AA=class j{constructor(A,t,e=!0){F(this,"type","webgpu"),F(this,"canvas"),F(this,"maxTextureSize"),F(this,"adapter"),F(this,"device"),F(this,"context"),F(this,"format"),F(this,"encoder",null),F(this,"passEncoder",null),F(this,"nextId",1),F(this,"buffers",new Map),F(this,"textures",new Map),F(this,"pipelines",new Map),F(this,"sampler"),F(this,"uniformBuffer"),F(this,"uniformSlotStride",256),F(this,"maxUniformSlots",8192),F(this,"uniformSlotIndex",0),F(this,"lastDrawPipeline",null),F(this,"lastStencilRef",-1),F(this,"lastVertexBufferId",-1),F(this,"lastIndexBufferId",-1),F(this,"uniformScratch144",new Float32Array(36)),F(this,"depthStencilTexture",null),F(this,"depthStencilView",null),F(this,"msaaColorTexture",null),F(this,"msaaColorView",null),F(this,"lastCanvasWidth",0),F(this,"lastCanvasHeight",0),F(this,"lastDepthStencilSampleCount",0),F(this,"msaaSampleCount",1),F(this,"wantAntialias"),F(this,"configuredCanvasWidth",0),F(this,"configuredCanvasHeight",0),F(this,"dummyTexture"),F(this,"dummyTextureView"),F(this,"videoUploadCanvas",null),F(this,"videoUploadCtx",null),F(this,"videoElementPreferCanvasBridge",!1),F(this,"videoFramePreferCanvasBridge",!1),F(this,"textureBindGroupCache",new Map),F(this,"instancedAlphaProjBuffer"),F(this,"instancedSvgaInstanceBuffer"),F(this,"instancedAlphaInstanceBuffer"),F(this,"instancedVapInstanceBuffer"),F(this,"storageBindOffsetAlign",256),F(this,"instancedSvgaSlotBytes"),F(this,"instancedAlphaSlotBytes"),F(this,"instancedVapSlotBytes"),F(this,"instancedSvgaRingOffset",0),F(this,"instancedAlphaRingOffset",0),F(this,"instancedVapRingOffset",0),F(this,"instancedProjectionCache",new Float32Array(16)),F(this,"instancedProjectionValid",!1),F(this,"lastInstancedTextureBindGroup",null),this.canvas=A,this.adapter=t,this.maxTextureSize=t.limits.maxTextureDimension2D,this.wantAntialias=e}async init(){this.device=await this.adapter.requestDevice(),this.device.onuncapturederror=t=>{console.error("[WebGPU Error]",t.error.message)},this.context=this.canvas.getContext("webgpu"),this.format=navigator.gpu.getPreferredCanvasFormat(),this.msaaSampleCount=this.wantAntialias?4:1,this.configureCanvasContext(),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformSlotStride=this.device.limits.minUniformBufferOffsetAlignment,this.storageBindOffsetAlign=this.device.limits.minStorageBufferOffsetAlignment;const A=this.storageBindOffsetAlign;this.instancedSvgaSlotBytes=Math.ceil(j.INSTANCED_SVGA_CHUNK_BYTES/A)*A,this.instancedAlphaSlotBytes=Math.ceil(j.INSTANCED_ALPHA_CHUNK_BYTES/A)*A,this.instancedVapSlotBytes=Math.ceil(j.INSTANCED_VAP_CHUNK_BYTES/A)*A,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedAlphaProjBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedSvgaInstanceBuffer=this.device.createBuffer({size:j.INSTANCED_STORAGE_RING_SLOTS*this.instancedSvgaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedAlphaInstanceBuffer=this.device.createBuffer({size:j.INSTANCED_STORAGE_RING_SLOTS*this.instancedAlphaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedVapInstanceBuffer=this.device.createBuffer({size:j.INSTANCED_STORAGE_RING_SLOTS*this.instancedVapSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.dummyTexture=this.device.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),this.dummyTextureView=this.dummyTexture.createView(),this.initPipelines()}configureCanvasContext(){this.context.configure({device:this.device,format:this.format,alphaMode:"premultiplied"}),this.configuredCanvasWidth=this.canvas.width,this.configuredCanvasHeight=this.canvas.height}ensureDepthStencil(A,t){var e,g;this.depthStencilTexture&&this.lastCanvasWidth===A&&this.lastCanvasHeight===t&&this.lastDepthStencilSampleCount===this.msaaSampleCount||((e=this.depthStencilTexture)==null||e.destroy(),(g=this.msaaColorTexture)==null||g.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.depthStencilTexture=this.device.createTexture({size:[A,t],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView(),this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,t],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=t,this.lastDepthStencilSampleCount=this.msaaSampleCount)}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:144}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:64}}]});this.createTexturedPipeline("svga-batch-premul:none",yA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("svga-batch-premul:test",yA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.createClipMaskPipeline(t),this.createTexturedPipeline("vap:none",yA.vap,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"none"),this.createTexturedPipeline("alpha-video:none",yA.alphaVideo,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createTexturedPipeline("rgba-textured:none",yA.rgbaTextured,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createInstancedSvgaPipeline("svga-instanced-premul:none",yA.svgaInstancedPremul),this.createInstancedAlphaVideoPipeline(),this.createVapInstancedPipeline()}createInstancedSvgaPipeline(A,t){const e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:j.SVGA_INSTANCED_STRIDE}}]}),g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),I=this.device.createShaderModule({code:t}),s={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},n=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[e,g]}),vertex:{module:I,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:I,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:s,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:n,bindGroupLayout:e,instancedTextureBindGroupLayout:g,instancedDataBindGroup:this.device.createBindGroup({layout:e,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedSvgaInstanceBuffer,offset:0,size:j.INSTANCED_SVGA_CHUNK_BYTES}}]}),needsTexture:!0})}createVapInstancedPipeline(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:j.VAP_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:yA.vapInstanced}),g={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g,multisample:{count:this.msaaSampleCount}});this.pipelines.set("vap-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedVapInstanceBuffer,offset:0,size:j.INSTANCED_VAP_CHUNK_BYTES}}]}),needsTexture:!0})}createInstancedAlphaVideoPipeline(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:j.ALPHA_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:yA.alphaVideoInstanced}),g={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g,multisample:{count:this.msaaSampleCount}});this.pipelines.set("alpha-video-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedAlphaInstanceBuffer,offset:0,size:j.INSTANCED_ALPHA_CHUNK_BYTES}}]}),needsTexture:!0})}createTexturedPipeline(A,t,e,g,I,s){const n=this.device.createShaderModule({code:t}),B=s==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},C=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[e]}),vertex:{module:n,entryPoint:"vs",buffers:[{arrayStride:I,attributes:g}]},fragment:{module:n,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:B,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:C,bindGroupLayout:e,needsTexture:!0})}createClipMaskPipeline(A){const t=this.device.createShaderModule({code:yA.clipMask}),e=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:t,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:t,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask:write",{pipeline:e,bindGroupLayout:A,needsTexture:!1})}beginFrame(){const A=this.canvas.width,t=this.canvas.height;(A!==this.configuredCanvasWidth||t!==this.configuredCanvasHeight)&&this.configureCanvasContext(),this.ensureDepthStencil(A,t),this.encoder=this.device.createCommandEncoder();const e=this.context.getCurrentTexture().createView(),g=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedSvgaRingOffset=0,this.instancedAlphaRingOffset=0,this.instancedVapRingOffset=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null,this.passEncoder=this.encoder.beginRenderPass({colorAttachments:[g],depthStencilAttachment:{view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"store",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}})}endFrame(){this.passEncoder&&this.passEncoder.end(),this.encoder&&this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null}ensureInstancedProjection(A){if(!(A.length<16)){if(this.instancedProjectionValid){let t=!0;for(let e=0;e<16;e++)if(this.instancedProjectionCache[e]!==A[e]){t=!1;break}if(t)return}this.instancedProjectionCache.set(A.subarray(0,16)),this.instancedProjectionValid=!0,this.device.queue.writeBuffer(this.instancedAlphaProjBuffer,0,A.buffer,A.byteOffset,64)}}createBuffer(A,t){let e=GPUBufferUsage.COPY_DST;t==="vertex"?e|=GPUBufferUsage.VERTEX:t==="index"?e|=GPUBufferUsage.INDEX:e|=GPUBufferUsage.UNIFORM;const g=(()=>{if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer){const Q=new Uint8Array(A);return new Uint8Array(Q)}const n=A,B=n.buffer,C=new Uint8Array(B,n.byteOffset,n.byteLength);return typeof SharedArrayBuffer!="undefined"&&B instanceof SharedArrayBuffer?new Uint8Array(C):C})(),I=this.device.createBuffer({size:Math.max(g.byteLength,4),usage:e,mappedAtCreation:!0});new Uint8Array(I.getMappedRange()).set(g),I.unmap();const s=this.nextId++;return this.buffers.set(s,{buffer:I,usage:t}),{id:s,usage:t}}updateBuffer(A,t,e=0){const g=this.buffers.get(A.id);if(!g)return;const I=(()=>{if(t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof SharedArrayBuffer!="undefined"&&t instanceof SharedArrayBuffer){const a=new Uint8Array(t);return new Uint8Array(a)}const B=t,C=B.buffer,Q=new Uint8Array(C,B.byteOffset,B.byteLength);return typeof SharedArrayBuffer!="undefined"&&C instanceof SharedArrayBuffer?new Uint8Array(Q):Q})(),s=I.byteLength;if(s>g.buffer.size){g.buffer.destroy();let B=GPUBufferUsage.COPY_DST;g.usage==="vertex"?B|=GPUBufferUsage.VERTEX:g.usage==="index"?B|=GPUBufferUsage.INDEX:B|=GPUBufferUsage.UNIFORM,g.buffer=this.device.createBuffer({size:s,usage:B})}const n=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);this.device.queue.writeBuffer(g.buffer,0,n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(t.buffer.destroy(),this.buffers.delete(A.id))}copyHtmlVideoToTextureDirect(A,t,e,g){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:g,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",I),!1}}copyVideoFrameToTextureDirect(A,t,e,g){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:g,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",I),!1}}drawVideoLikeSourceToTexture(A,t,e,g){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const I=this.videoUploadCanvas,s=this.videoUploadCtx;s&&((I.width!==t||I.height!==e)&&(I.width=t,I.height=e),s.drawImage(g,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:I,flipY:!0},{texture:A},[t,e]))}copyImageSourceToTexture(A,t,e,g,I=!1){if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const s=g,n=s.displayWidth||s.codedWidth,B=s.displayHeight||s.codedHeight;if(!n||!B||!t||!e||this.copyVideoFrameToTextureDirect(A,t,e,s))return;this.drawVideoLikeSourceToTexture(A,t,e,s);return}if(g instanceof HTMLVideoElement){const s=g,n=s.videoWidth,B=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!n||!B||!t||!e)return;if(s.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,t,e,s);return}if(this.copyHtmlVideoToTextureDirect(A,t,e,s))return;this.drawVideoLikeSourceToTexture(A,t,e,s);return}this.device.queue.copyExternalImageToTexture({source:g},{texture:A,premultipliedAlpha:I},[t,e])}createTexture(A,t){var e,g;const I=(e=t.width)!=null?e:1,s=(g=t.height)!=null?g:1,n=this.device.createTexture({size:[I,s],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});A instanceof ArrayBuffer?this.device.queue.writeTexture({texture:n},A,{bytesPerRow:I*4},[I,s]):this.copyImageSourceToTexture(n,I,s,A,t.premultiplyAlpha===!0);const B=this.nextId++;return this.textures.set(B,{texture:n,view:n.createView(),width:I,height:s}),{id:B,width:I,height:s}}createEmptyTexture(A,t,e={}){const g=Math.max(1,Math.floor(A)),I=Math.max(1,Math.floor(t)),s=this.device.createTexture({size:[g,I],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),n=this.nextId++;return this.textures.set(n,{texture:s,view:s.createView(),width:g,height:I}),{id:n,width:g,height:I}}updateTexture(A,t){const e=this.textures.get(A.id);e&&this.copyImageSourceToTexture(e.texture,e.width,e.height,t)}updateTextureRegion(A,t,e,g,I,s){const n=this.textures.get(A.id);if(!n)return;const B={texture:n.texture,origin:{x:Math.floor(e),y:Math.floor(g)}};if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const r=t,E=r.displayWidth||r.codedWidth,o=r.displayHeight||r.codedHeight;if(!E||!o)return;const h=I!=null?I:E,c=s!=null?s:o;if(h!==E||c!==o){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,r,B.origin.x,B.origin.y);return}try{this.device.queue.copyExternalImageToTexture({source:r,flipY:!0},B,[E,o])}catch(f){this.drawVideoLikeSourceToTextureRegion(n.texture,E,o,r,B.origin.x,B.origin.y)}return}if(t instanceof HTMLVideoElement){const r=t,E=r.videoWidth,o=r.videoHeight;if(r.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!E||!o)return;const h=I!=null?I:E,c=s!=null?s:o;if(h!==E||c!==o){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,r,B.origin.x,B.origin.y);return}if(r.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(n.texture,E,o,r,B.origin.x,B.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(n.texture,E,o,r,B.origin.x,B.origin.y))return;this.drawVideoLikeSourceToTextureRegion(n.texture,E,o,r,B.origin.x,B.origin.y);return}const C=t,Q=I!=null?I:C.width,a=s!=null?s:C.height;if(Q!==C.width||a!==C.height){this.drawVideoLikeSourceToTextureRegion(n.texture,Q,a,C,B.origin.x,B.origin.y);return}this.device.queue.copyExternalImageToTexture({source:C},B,[C.width,C.height])}copyHtmlVideoToTextureRegionDirect(A,t,e,g,I,s){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:g,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]),!0}catch(n){return!1}}drawVideoLikeSourceToTextureRegion(A,t,e,g,I,s){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,B=this.videoUploadCtx;B&&((n.width!==t||n.height!==e)&&(n.width=t,n.height=e),B.drawImage(g,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:n,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]))}deleteTexture(A){const t=this.textures.get(A.id);if(!t)return;t.texture.destroy(),this.textures.delete(A.id);const e=`\0${A.id}`;for(const g of this.textureBindGroupCache.keys())g.endsWith(e)&&this.textureBindGroupCache.delete(g)}draw(A){var t,e,g;if(!this.passEncoder)return;if(A.shader==="svga-instanced-premul"){this.drawInstancedSvga(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}const I=(t=A.stencil)!=null?t:"none",s=A.shader==="clip-mask"||I==="clear"?"clip-mask:write":`${A.shader}:${I}`,n=this.pipelines.get(s);if(!n)return;const B=this.passEncoder,C=n.pipeline;this.lastDrawPipeline!==C&&(B.setPipeline(C),this.lastDrawPipeline=C,this.lastInstancedTextureBindGroup=null);let Q=0;I==="clear"?Q=0:(I==="write"||A.shader==="clip-mask"||I==="test")&&(Q=1),this.lastStencilRef!==Q&&(B.setStencilReference(Q),this.lastStencilRef=Q);const a=this.uniformSlotIndex++;if(a>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const r=a*this.uniformSlotStride,E=A.uniforms.u_projection;if(n.needsTexture){const l=A.uniforms.u_transform,u=l instanceof Float32Array&&l.length>=16?l:ta,w=A.uniforms.u_atlasRemap,y=w instanceof Float32Array&&w.length>=4?w:ea;if(E instanceof Float32Array&&E.length>=16){const p=this.uniformScratch144;p.set(E.subarray(0,16),0),p.set(u.subarray(0,16),16),p.set(y.subarray(0,4),32),this.device.queue.writeBuffer(this.uniformBuffer,r,p.buffer,p.byteOffset,144)}else this.device.queue.writeBuffer(this.uniformBuffer,r+64,u.buffer,u.byteOffset,64),this.device.queue.writeBuffer(this.uniformBuffer,r+128,y.buffer,y.byteOffset,16)}else E instanceof Float32Array&&E.length>=16&&this.device.queue.writeBuffer(this.uniformBuffer,r,E.buffer,E.byteOffset,64);if(n.needsTexture){const l=A.textures.length>0?A.textures[0]:null,u=l?this.textures.get(l.id):null,w=(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView,y=(g=l==null?void 0:l.id)!=null?g:0,p=`${s}\0${y}`;let m=this.textureBindGroupCache.get(p);m||(m=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:144}},{binding:1,resource:w},{binding:2,resource:this.sampler}]}),this.textureBindGroupCache.set(p,m)),B.setBindGroup(0,m,[r])}else n.uniformOnlyBindGroup||(n.uniformOnlyBindGroup=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:64}}]})),B.setBindGroup(0,n.uniformOnlyBindGroup,[r]);const o=this.buffers.get(A.vertexBuffer.id),h=this.buffers.get(A.indexBuffer.id);if(!o||!h)return;const c=A.vertexBuffer.id,f=A.indexBuffer.id;this.lastVertexBufferId!==c&&(B.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=c),this.lastIndexBufferId!==f&&(B.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=f),B.drawIndexed(A.indexCount)}drawInstancedSvga(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*13)return;if(s>j.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced-premul: instanceCount exceeds max",s);return}const C=`${A.shader}:none`,Q=this.pipelines.get(C);if(!Q)return;const a=Q.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const r=A.uniforms.u_projection;if(!(r instanceof Float32Array)||r.length<16)return;const E=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!E||!o)return;this.ensureInstancedProjection(r);const h=s*j.SVGA_INSTANCED_STRIDE,c=this.instancedSvgaRingOffset;if(c+this.instancedSvgaSlotBytes>this.instancedSvgaInstanceBuffer.size){console.warn("[WebGPU] instanced SVGA storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedSvgaRingOffset+=this.instancedSvgaSlotBytes,this.device.queue.writeBuffer(this.instancedSvgaInstanceBuffer,c,n.buffer,n.byteOffset,h);const f=A.textures[0],l=f?this.textures.get(f.id):null,u=(e=l==null?void 0:l.view)!=null?e:this.dummyTextureView,w=(g=f==null?void 0:f.id)!=null?g:0,y=`${C}\0${w}`;let p=this.textureBindGroupCache.get(y);p||(p=this.device.createBindGroup({layout:Q.instancedTextureBindGroupLayout,entries:[{binding:0,resource:u},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(y,p)),I.setBindGroup(0,Q.instancedDataBindGroup,[c]),this.lastInstancedTextureBindGroup!==p&&(I.setBindGroup(1,p),this.lastInstancedTextureBindGroup=p);const m=A.vertexBuffer.id,N=A.indexBuffer.id;this.lastVertexBufferId!==m&&(I.setVertexBuffer(0,E.buffer),this.lastVertexBufferId=m),this.lastIndexBufferId!==N&&(I.setIndexBuffer(o.buffer,"uint32"),this.lastIndexBufferId=N),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedAlpha(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*20)return;if(s>j.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("alpha-video-instanced:none");if(!C)return;const Q=C.pipeline;this.lastDrawPipeline!==Q&&(I.setPipeline(Q),this.lastDrawPipeline=Q,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),E=this.buffers.get(A.indexBuffer.id);if(!r||!E)return;this.ensureInstancedProjection(a);const o=s*j.ALPHA_INSTANCED_STRIDE,h=this.instancedAlphaRingOffset;if(h+this.instancedAlphaSlotBytes>this.instancedAlphaInstanceBuffer.size){console.warn("[WebGPU] instanced alpha storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedAlphaRingOffset+=this.instancedAlphaSlotBytes,this.device.queue.writeBuffer(this.instancedAlphaInstanceBuffer,h,n.buffer,n.byteOffset,o);const c=A.textures[0],f=c?this.textures.get(c.id):null,l=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,w=`alpha-video-instanced:none\0${(g=c==null?void 0:c.id)!=null?g:0}`;let y=this.textureBindGroupCache.get(w);y||(y=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:l},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(w,y)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==y&&(I.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const p=A.vertexBuffer.id,m=A.indexBuffer.id;this.lastVertexBufferId!==p&&(I.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=p),this.lastIndexBufferId!==m&&(I.setIndexBuffer(E.buffer,"uint32"),this.lastIndexBufferId=m),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedVap(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*28)return;if(s>j.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("vap-instanced:none");if(!C)return;const Q=C.pipeline;this.lastDrawPipeline!==Q&&(I.setPipeline(Q),this.lastDrawPipeline=Q,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),E=this.buffers.get(A.indexBuffer.id);if(!r||!E)return;this.ensureInstancedProjection(a);const o=s*j.VAP_INSTANCED_STRIDE,h=this.instancedVapRingOffset;if(h+this.instancedVapSlotBytes>this.instancedVapInstanceBuffer.size){console.warn("[WebGPU] instanced VAP storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedVapRingOffset+=this.instancedVapSlotBytes,this.device.queue.writeBuffer(this.instancedVapInstanceBuffer,h,n.buffer,n.byteOffset,o);const c=A.textures[0],f=c?this.textures.get(c.id):null,l=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,w=`vap-instanced:none\0${(g=c==null?void 0:c.id)!=null?g:0}`;let y=this.textureBindGroupCache.get(w);y||(y=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:l},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(w,y)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==y&&(I.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const p=A.vertexBuffer.id,m=A.indexBuffer.id;this.lastVertexBufferId!==p&&(I.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=p),this.lastIndexBufferId!==m&&(I.setIndexBuffer(E.buffer,"uint32"),this.lastIndexBufferId=m),I.drawIndexed(A.indexCount,s,0,0,0)}clearStencil(){}setScissor(A,t,e,g){if(!this.passEncoder)return;const I=this.canvas.width,s=this.canvas.height,n=Math.max(0,Math.min(I,Math.round(A))),B=Math.max(0,Math.min(s,Math.round(t))),C=Math.max(n,Math.min(I,Math.round(A+e))),Q=Math.max(B,Math.min(s,Math.round(t+g)));this.passEncoder.setScissorRect(n,B,C-n,Q-B)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,t,e,g,I,s,n,B,C;for(const[,Q]of this.buffers)Q.buffer.destroy();for(const[,Q]of this.textures)Q.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(t=this.instancedAlphaProjBuffer)==null||t.destroy(),(e=this.instancedSvgaInstanceBuffer)==null||e.destroy(),(g=this.instancedAlphaInstanceBuffer)==null||g.destroy(),(I=this.instancedVapInstanceBuffer)==null||I.destroy(),(s=this.depthStencilTexture)==null||s.destroy(),(n=this.msaaColorTexture)==null||n.destroy(),(B=this.dummyTexture)==null||B.destroy(),(C=this.device)==null||C.destroy(),this.buffers.clear(),this.textures.clear(),this.textureBindGroupCache.clear(),this.pipelines.clear()}};F(AA,"SVGA_INSTANCED_MAX",2048);F(AA,"SVGA_INSTANCED_STRIDE",52);F(AA,"ALPHA_INSTANCED_MAX",1024);F(AA,"ALPHA_INSTANCED_STRIDE",80);F(AA,"VAP_INSTANCED_MAX",1024);F(AA,"VAP_INSTANCED_STRIDE",112);F(AA,"INSTANCED_SVGA_CHUNK_BYTES",AA.SVGA_INSTANCED_MAX*AA.SVGA_INSTANCED_STRIDE);F(AA,"INSTANCED_ALPHA_CHUNK_BYTES",AA.ALPHA_INSTANCED_MAX*AA.ALPHA_INSTANCED_STRIDE);F(AA,"INSTANCED_VAP_CHUNK_BYTES",AA.VAP_INSTANCED_MAX*AA.VAP_INSTANCED_STRIDE);F(AA,"INSTANCED_STORAGE_RING_SLOTS",512);let CC=AA;function FB(i,A,t){const e=i.createShader(A);if(!e)throw new Error("Failed to create shader");if(i.shaderSource(e,t),i.compileShader(e),!i.getShaderParameter(e,i.COMPILE_STATUS)){const g=i.getShaderInfoLog(e);throw i.deleteShader(e),new Error(`Shader compile failed: ${g}`)}return e}function NA(i,A,t){const e=FB(i,i.VERTEX_SHADER,A),g=FB(i,i.FRAGMENT_SHADER,t),I=i.createProgram();if(!I)throw i.deleteShader(e),i.deleteShader(g),new Error("Failed to create program");if(i.attachShader(I,e),i.attachShader(I,g),i.linkProgram(I),!i.getProgramParameter(I,i.LINK_STATUS)){const s=i.getProgramInfoLog(I);throw i.deleteProgram(I),i.deleteShader(e),i.deleteShader(g),new Error(`Program link failed: ${s}`)}return i.deleteShader(e),i.deleteShader(g),I}function SB(i,A=i.LINEAR,t=i.CLAMP_TO_EDGE){const e=i.createTexture();if(!e)throw new Error("Failed to create texture");return i.bindTexture(i.TEXTURE_2D,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,t),e}var ia=Object.defineProperty,ga=(i,A,t)=>A in i?ia(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,H=(i,A,t)=>ga(i,typeof A!="symbol"?A+"":A,t);const uA=class _A{constructor(A,t=!0){H(this,"type","webgl2"),H(this,"canvas"),H(this,"maxTextureSize",4096),H(this,"antialias"),H(this,"gl"),H(this,"nextId",1),H(this,"buffers",new Map),H(this,"textures",new Map),H(this,"programs",new Map),H(this,"cachedDrawProgram",null),H(this,"cachedTex0Id",null),H(this,"cachedProjectionRef",null),H(this,"cachedProjectionShader",null),H(this,"videoUploadCanvas",null),H(this,"videoUploadCtx",null),H(this,"instancedSvgaInstanceGLBuffer",null),H(this,"instancedAlphaInstanceGLBuffer",null),H(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl,t=NA(A,J.svgaBatchPremul.vert,J.svgaBatchPremul.frag);this.programs.set("svga-batch-premul",{program:t,uniforms:this.getUniforms(t,["u_projection","u_atlas"]),vao:null});const e=NA(A,J.svgaInstancedPremul.vert,J.svgaInstancedPremul.frag);this.programs.set("svga-instanced-premul",{program:e,uniforms:this.getUniforms(e,["u_projection","u_atlas"]),vao:null});const g=NA(A,J.vap.vert,J.vap.frag);this.programs.set("vap",{program:g,uniforms:this.getUniforms(g,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const I=NA(A,J.alphaVideo.vert,J.alphaVideo.frag);this.programs.set("alpha-video",{program:I,uniforms:this.getUniforms(I,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const s=NA(A,J.rgbaTextured.vert,J.rgbaTextured.frag);this.programs.set("rgba-textured",{program:s,uniforms:this.getUniforms(s,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const n=NA(A,J.alphaVideoInstanced.vert,J.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",{program:n,uniforms:this.getUniforms(n,["u_projection","u_video"]),vao:null});const B=NA(A,J.vapInstanced.vert,J.vapInstanced.frag);this.programs.set("vap-instanced",{program:B,uniforms:this.getUniforms(B,["u_projection","u_video"]),vao:null});const C=NA(A,J.clipMask.vert,J.clipMask.frag);this.programs.set("clip-mask",{program:C,uniforms:this.getUniforms(C,["u_projection"]),vao:null})}getUniforms(A,t){const e=new Map;for(const g of t){const I=this.gl.getUniformLocation(A,g);I&&e.set(g,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,t){const e=this.gl,g=e.createBuffer();if(!g)throw new Error("Failed to create buffer");const I=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(I,g),e.bufferData(I,A,e.DYNAMIC_DRAW);const s=this.nextId++;return this.buffers.set(s,{buffer:g,usage:t,byteLength:this.getBufferSourceByteLength(A)}),{id:s,usage:t}}updateBuffer(A,t,e=0){const g=this.buffers.get(A.id);if(!g)return;const I=this.gl,s=g.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(s,g.buffer);const n=this.getBufferSourceByteLength(t);e===0&&n<=g.byteLength?I.bufferSubData(s,0,t):(I.bufferData(s,t,I.DYNAMIC_DRAW),g.byteLength=n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,t){const e=this.gl,g=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||g<=0||I<=0)return!1;this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const s=this.videoUploadCanvas,n=this.videoUploadCtx;return n?((s.width!==g||s.height!==I)&&(s.width=g,s.height=I),n.drawImage(t,0,0,g,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,t){var e,g;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=SB(I,s),B=t.premultiplyAlpha===!0;let C=(e=t.width)!=null?e:1,Q=(g=t.height)!=null?g:1;if(A instanceof ArrayBuffer)I.texImage2D(I.TEXTURE_2D,0,I.RGBA,C,Q,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const r=A;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,r),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),C=r.displayWidth||r.codedWidth||C,Q=r.displayHeight||r.codedHeight||Q}else if(A instanceof HTMLVideoElement)I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),this.uploadVideoFrameToTexture(n,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),C=A.videoWidth||C,Q=A.videoHeight||Q;else{const r=B,E=t.sourcePremultiplied===!0,o=r&&!E?1:0;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,o),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(C=A.width,Q=A.height)}const a=this.nextId++;return this.textures.set(a,{texture:n,width:C,height:Q}),{id:a,width:C,height:Q}}createEmptyTexture(A,t,e={}){const g=this.gl,I=e.filter==="nearest"?g.NEAREST:g.LINEAR,s=SB(g,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));g.bindTexture(g.TEXTURE_2D,s),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,n,B,0,g.RGBA,g.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const g=this.gl;g.bindTexture(g.TEXTURE_2D,e.texture),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,t),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,g,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,Q;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,Q=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,Q=t.videoHeight}else{const E=t;C=E.width,Q=E.height}if(!C||!Q)return;const a=I!=null?I:C,r=s!=null?s:Q;if(a!==C||r!==Q){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const E=this.videoUploadCanvas,o=this.videoUploadCtx;if(!o)return;E.width=a,E.height=r,o.drawImage(t,0,0,a,r),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,E),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;if(A.shader==="svga-instanced-premul"){this.drawInstancedSvgaGL(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlphaGL(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVapGL(A);return}this.resetInstancedAuxVertexState();const e=this.gl,g=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||g==="clear"?"clip-mask":A.shader,s=this.programs.get(I);if(!s)return;g==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const Q=A.textures[C].id;if(C===0&&this.cachedTex0Id===Q)continue;const a=this.textures.get(Q);a&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,a.texture),C===0&&(this.cachedTex0Id=Q))}for(const[C,Q]of Object.entries(A.uniforms)){const a=s.uniforms.get(C);if(a)if(Q instanceof Float32Array)if(Q.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===Q)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=Q),e.uniformMatrix4fv(a,!1,Q)}else Q.length===4?e.uniform4fv(a,Q):Q.length===2&&e.uniform2fv(a,Q);else e.uniform1i(a,Q)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0),(g!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,g){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),Q=Math.max(B,Math.min(s,Math.round(A+e))),a=Math.max(C,Math.min(n,Math.round(t+g)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-a,Q-B,a-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;if(A==="svga-batch-premul")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28);else if(A==="vap")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16);else if(A==="clip-mask")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2);else{t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8);for(let g=2;g<=8;g++)t.vertexAttribDivisor(g,0),t.disableVertexAttribArray(g)}}resetInstancedAuxVertexState(){const A=this.gl;for(let t=1;t<=8;t++)A.vertexAttribDivisor(t,0),A.disableVertexAttribArray(t)}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,_A.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=t}return this.instancedSvgaInstanceGLBuffer}drawInstancedSvgaGL(A){var t;const e=this.gl,g=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(g<1||!I||I.length<g*13)return;if(g>_A.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced-premul: instanceCount exceeds max",g);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="svga-instanced-premul",n=this.programs.get(s);if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const E=A.textures[r].id;if(r===0&&this.cachedTex0Id===E)continue;const o=this.textures.get(E);o&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,o.texture),r===0&&(this.cachedTex0Id=E))}for(const[r,E]of Object.entries(A.uniforms)){const o=n.uniforms.get(r);if(o)if(E instanceof Float32Array){if(E.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===E)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=E),e.uniformMatrix4fv(o,!1,E)}}else e.uniform1i(o,E)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const Q=this.ensureInstancedSvgaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,Q),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,g*13);const a=52;e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,a,0),e.vertexAttribDivisor(1,1),e.enableVertexAttribArray(2),e.vertexAttribPointer(2,4,e.FLOAT,!1,a,8),e.vertexAttribDivisor(2,1),e.enableVertexAttribArray(3),e.vertexAttribPointer(3,3,e.FLOAT,!1,a,24),e.vertexAttribDivisor(3,1),e.enableVertexAttribArray(4),e.vertexAttribPointer(4,4,e.FLOAT,!1,a,36),e.vertexAttribDivisor(4,1),e.bindBuffer(e.ARRAY_BUFFER,B.buffer),e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,8,0),e.vertexAttribDivisor(0,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,g)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,_A.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=t}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var t;const e=this.gl,g=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(g<1||!I||I.length<g*20)return;for(let E=7;E<=8;E++)e.vertexAttribDivisor(E,0),e.disableVertexAttribArray(E);if(g>_A.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",g);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="alpha-video-instanced",n=this.programs.get("alpha-video-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let E=0;E<A.textures.length;E++){const o=A.textures[E].id;if(E===0&&this.cachedTex0Id===o)continue;const h=this.textures.get(o);h&&(e.activeTexture(e.TEXTURE0+E),e.bindTexture(e.TEXTURE_2D,h.texture),E===0&&(this.cachedTex0Id=o))}for(const[E,o]of Object.entries(A.uniforms)){const h=n.uniforms.get(E);if(h)if(o instanceof Float32Array){if(o.length===16){if(E==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===o)continue;E==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=o),e.uniformMatrix4fv(h,!1,o)}}else e.uniform1i(h,o)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const Q=this.ensureInstancedAlphaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,Q),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,g*20);const a=80;for(let E=0;E<5;E++){const o=2+E;e.enableVertexAttribArray(o),e.vertexAttribPointer(o,4,e.FLOAT,!1,a,E*16),e.vertexAttribDivisor(o,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const r=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,r,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,r,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,g)}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,_A.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=t}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var t;const e=this.gl,g=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(g<1||!I||I.length<g*28)return;if(g>_A.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",g);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="vap-instanced",n=this.programs.get("vap-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let E=0;E<A.textures.length;E++){const o=A.textures[E].id;if(E===0&&this.cachedTex0Id===o)continue;const h=this.textures.get(o);h&&(e.activeTexture(e.TEXTURE0+E),e.bindTexture(e.TEXTURE_2D,h.texture),E===0&&(this.cachedTex0Id=o))}for(const[E,o]of Object.entries(A.uniforms)){const h=n.uniforms.get(E);if(h)if(o instanceof Float32Array){if(o.length===16){if(E==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===o)continue;E==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=o),e.uniformMatrix4fv(h,!1,o)}}else e.uniform1i(h,o)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const Q=this.ensureInstancedVapInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,Q),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,g*28);const a=112;for(let E=0;E<7;E++){const o=2+E;e.enableVertexAttribArray(o),e.vertexAttribPointer(o,4,e.FLOAT,!1,a,E*16),e.vertexAttribDivisor(o,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const r=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,r,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,r,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,g)}destroy(){const A=this.gl;this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}};H(uA,"INST_SVGA_GL_MAX",2048);H(uA,"INST_SVGA_GL_BYTES",uA.INST_SVGA_GL_MAX*52);H(uA,"INST_ALPHA_GL_MAX",1024);H(uA,"INST_ALPHA_GL_BYTES",uA.INST_ALPHA_GL_MAX*80);H(uA,"INST_VAP_GL_MAX",1024);H(uA,"INST_VAP_GL_BYTES",uA.INST_VAP_GL_MAX*112);let QC=uA;var Ia=Object.defineProperty,sa=(i,A,t)=>A in i?Ia(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,eA=(i,A,t)=>sa(i,typeof A!="symbol"?A+"":A,t);function na(i,A){let t=i.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(t=t.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),t=t.replace(/\bout\s+/g,"varying ")):(t=t.replace(/\bin\s+/g,"varying "),t=t.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),t=t.replace(/\bfragColor\b/g,"gl_FragColor"),t=t.replace(/\btexture\s*\(/g,"texture2D(")),t}function NB(i,A,t,e){const g=i.createShader(A);if(!g)throw new Error("Failed to create shader");if(i.shaderSource(g,na(t,e)),i.compileShader(g),!i.getShaderParameter(g,i.COMPILE_STATUS)){const I=i.getShaderInfoLog(g);throw i.deleteShader(g),new Error(`Shader compile failed: ${I}`)}return g}function hs(i,A,t,e){const g=NB(i,i.VERTEX_SHADER,A,"vertex"),I=NB(i,i.FRAGMENT_SHADER,t,"fragment"),s=i.createProgram();if(!s)throw i.deleteShader(g),i.deleteShader(I),new Error("Failed to create program");i.attachShader(s,g),i.attachShader(s,I);for(const[n,B]of Object.entries(e))i.bindAttribLocation(s,B,n);if(i.linkProgram(s),!i.getProgramParameter(s,i.LINK_STATUS)){const n=i.getProgramInfoLog(s);throw i.deleteProgram(s),i.deleteShader(g),i.deleteShader(I),new Error(`Program link failed: ${n}`)}return i.deleteShader(g),i.deleteShader(I),s}function RB(i,A=i.LINEAR,t=i.CLAMP_TO_EDGE){const e=i.createTexture();if(!e)throw new Error("Failed to create texture");return i.bindTexture(i.TEXTURE_2D,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,t),e}class Pn{constructor(A,t=!0){eA(this,"type","webgl1"),eA(this,"canvas"),eA(this,"maxTextureSize",4096),eA(this,"antialias"),eA(this,"gl"),eA(this,"nextId",1),eA(this,"buffers",new Map),eA(this,"textures",new Map),eA(this,"programs",new Map),eA(this,"cachedDrawProgram",null),eA(this,"cachedTex0Id",null),eA(this,"cachedProjectionRef",null),eA(this,"cachedProjectionShader",null),eA(this,"videoUploadCanvas",null),eA(this,"videoUploadCtx",null),eA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.supportsUintIndices=!!A.getExtension("OES_element_index_uint"),A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl;this.programs.set("svga-batch-premul",{program:hs(A,J.svgaBatchPremul.vert,J.svgaBatchPremul.frag,{a_position:0,a_color:1,a_uv:2}),uniforms:new Map}),this.programs.get("svga-batch-premul").uniforms=this.getUniforms(this.programs.get("svga-batch-premul").program,["u_projection","u_atlas"]),this.programs.set("vap",{program:hs(A,J.vap.vert,J.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2}),uniforms:new Map}),this.programs.get("vap").uniforms=this.getUniforms(this.programs.get("vap").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("alpha-video",{program:hs(A,J.alphaVideo.vert,J.alphaVideo.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("alpha-video").uniforms=this.getUniforms(this.programs.get("alpha-video").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("rgba-textured",{program:hs(A,J.rgbaTextured.vert,J.rgbaTextured.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("rgba-textured").uniforms=this.getUniforms(this.programs.get("rgba-textured").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("clip-mask",{program:hs(A,J.clipMask.vert,J.clipMask.frag,{a_position:0}),uniforms:new Map}),this.programs.get("clip-mask").uniforms=this.getUniforms(this.programs.get("clip-mask").program,["u_projection"])}getUniforms(A,t){const e=new Map;for(const g of t){const I=this.gl.getUniformLocation(A,g);I&&e.set(g,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}normalizeIndexSource(A){if(this.supportsUintIndices)return A;if(ArrayBuffer.isView(A)){if(A instanceof Uint16Array)return A;if("length"in A)return Uint16Array.from(A);const t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength))}return new Uint16Array(A)}createBuffer(A,t){const e=this.gl,g=e.createBuffer();if(!g)throw new Error("Failed to create buffer");const I=t==="index"?this.normalizeIndexSource(A):A,s=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(s,g),e.bufferData(s,I,e.DYNAMIC_DRAW);const n=this.nextId++;return this.buffers.set(n,{buffer:g,usage:t,byteLength:this.getBufferSourceByteLength(I)}),{id:n,usage:t}}updateBuffer(A,t,e=0){const g=this.buffers.get(A.id);if(!g)return;const I=this.gl,s=g.usage==="index"?this.normalizeIndexSource(t):t,n=g.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(n,g.buffer);const B=this.getBufferSourceByteLength(s);e===0&&B<=g.byteLength?I.bufferSubData(n,0,s):(I.bufferData(n,s,I.DYNAMIC_DRAW),g.byteLength=B)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,t){return this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d")),!this.videoUploadCtx||!this.videoUploadCanvas?null:((this.videoUploadCanvas.width!==A||this.videoUploadCanvas.height!==t)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=t),this.videoUploadCtx)}uploadVideoFrameToTexture(A,t){const e=this.gl,g=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||g<=0||I<=0)return!1;const s=this.ensureVideoUploadCanvas(g,I);return!s||!this.videoUploadCanvas?!1:(s.drawImage(t,0,0,g,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.videoUploadCanvas),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,t){var e,g;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=RB(I,s),B=t.premultiplyAlpha===!0;let C=(e=t.width)!=null?e:1,Q=(g=t.height)!=null?g:1;if(A instanceof ArrayBuffer)I.texImage2D(I.TEXTURE_2D,0,I.RGBA,C,Q,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame)I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),C=A.displayWidth||A.codedWidth||C,Q=A.displayHeight||A.codedHeight||Q;else if(A instanceof HTMLVideoElement)I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),this.uploadVideoFrameToTexture(n,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),C=A.videoWidth||C,Q=A.videoHeight||Q;else{const r=B,E=t.sourcePremultiplied===!0,o=r&&!E?1:0;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,o),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(C=A.width,Q=A.height)}const a=this.nextId++;return this.textures.set(a,{texture:n,width:C,height:Q}),{id:a,width:C,height:Q}}createEmptyTexture(A,t,e={}){const g=this.gl,I=e.filter==="nearest"?g.NEAREST:g.LINEAR,s=RB(g,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));g.bindTexture(g.TEXTURE_2D,s),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,n,B,0,g.RGBA,g.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const g=this.gl;g.bindTexture(g.TEXTURE_2D,e.texture),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,t),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,g,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,Q;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,Q=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,Q=t.videoHeight}else{const E=t;C=E.width,Q=E.height}if(!C||!Q)return;const a=I!=null?I:C,r=s!=null?s:Q;if(a!==C||r!==Q){const E=this.ensureVideoUploadCanvas(a,r);if(!E||!this.videoUploadCanvas)return;E.drawImage(t,0,0,a,r),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;const e=this.gl,g=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||g==="clear"?"clip-mask":A.shader;if(I==="svga-instanced-premul"||I==="alpha-video-instanced"||I==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${I}`);const s=this.programs.get(I);if(!s)return;g==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const Q=A.textures[C].id;if(C===0&&this.cachedTex0Id===Q)continue;const a=this.textures.get(Q);a&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,a.texture),C===0&&(this.cachedTex0Id=Q))}for(const[C,Q]of Object.entries(A.uniforms)){const a=s.uniforms.get(C);if(a)if(Q instanceof Float32Array)if(Q.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===Q)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=Q),e.uniformMatrix4fv(a,!1,Q)}else Q.length===4?e.uniform4fv(a,Q):Q.length===2&&e.uniform2fv(a,Q);else e.uniform1i(a,Q)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,this.supportsUintIndices?e.UNSIGNED_INT:e.UNSIGNED_SHORT,0),(g!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,g){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),Q=Math.max(B,Math.min(s,Math.round(A+e))),a=Math.max(C,Math.min(n,Math.round(t+g)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-a,Q-B,a-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;t.disableVertexAttribArray(0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2),A==="svga-batch-premul"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28)):A==="vap"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16)):A==="clip-mask"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0)):(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}function aC(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function Ba(){return typeof navigator!="undefined"&&"gpu"in navigator&&aC()}function Ca(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(i){return!1}}function Qa(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(i){return!1}}function aa(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"}function Ea(){return typeof OffscreenCanvas!="undefined"}async function EC(i,A=!0,t=!0,e=!1){const g=t!=null?t:!1,I=t!=null?t:!0;if(e){const n=new Pn(i,I);return await n.init(),n}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&aC())try{const n=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(n){const B=new CC(i,n,g);return await B.init(),B}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(n){console.warn(`[GiftStage] WebGPU init failed: ${n instanceof Error?n.message:String(n)}, fallback to WebGL2/WebGL1.`)}else A&&typeof navigator!="undefined"&&"gpu"in navigator&&console.warn("[GiftStage] WebGPU unavailable: GPUQueue.copyExternalImageToTexture is not supported, fallback to WebGL2/WebGL1.");try{const n=new QC(i,I);return await n.init(),n}catch(n){console.warn(`[GiftStage] WebGL2 init failed: ${n instanceof Error?n.message:String(n)}, fallback to WebGL1.`)}const s=new Pn(i,I);return await s.init(),s}function ra(i,A){const t=i.clientWidth||i.getBoundingClientRect().width||0,e=i.clientHeight||i.getBoundingClientRect().height||0,g=A>0&&Number.isFinite(A)?A:1,I=Math.max(1,Math.round(t*g)),s=Math.max(1,Math.round(e*g));(i.width!==I||i.height!==s)&&(i.width=I,i.height=s)}function ms(i){const A=i.clientWidth||i.getBoundingClientRect().width||1,t=i.clientHeight||i.getBoundingClientRect().height||1;return{sx:i.width/Math.max(1,A),sy:i.height/Math.max(1,t)}}const kA=13,fA=9,PA=4,Gs=6;function Xs(i,A,t){const e=Math.floor(i.length/kA),g=Math.floor(A.length/(PA*fA)),I=Math.floor(t.length/Gs),s=Math.min(e,g,I);for(let n=0;n<s;n++){const B=n*kA,C=i[B],Q=i[B+1],a=i[B+2],r=i[B+3],E=i[B+4],o=i[B+5],h=i[B+6],c=i[B+7],f=i[B+8],l=i[B+9],u=i[B+10],w=i[B+11],y=i[B+12],p=h,m=c,N=a*C+h,R=r*C+c,S=a*C+E*Q+h,q=r*C+o*Q+c,L=E*Q+h,P=o*Q+c,k=n*PA*fA;A[k]=p,A[k+1]=m,A[k+2]=0,A[k+3]=1,A[k+4]=1,A[k+5]=1,A[k+6]=f,A[k+7]=l,A[k+8]=u;const K=k+fA;A[K]=N,A[K+1]=R,A[K+2]=0,A[K+3]=1,A[K+4]=1,A[K+5]=1,A[K+6]=f,A[K+7]=w,A[K+8]=u;const x=k+2*fA;A[x]=S,A[x+1]=q,A[x+2]=0,A[x+3]=1,A[x+4]=1,A[x+5]=1,A[x+6]=f,A[x+7]=w,A[x+8]=y;const v=k+3*fA;A[v]=L,A[v+1]=P,A[v+2]=0,A[v+3]=1,A[v+4]=1,A[v+5]=1,A[v+6]=f,A[v+7]=l,A[v+8]=y;const $=n*Gs,W=n*PA;t[$]=W,t[$+1]=W+1,t[$+2]=W+2,t[$+3]=W,t[$+4]=W+2,t[$+5]=W+3}return s}function oa(i,A,t){const e=kB(i,_.__wbindgen_malloc),g=cA;var I=kB(A,_.__wbindgen_malloc),s=cA,n=fa(t,_.__wbindgen_malloc),B=cA;return _.build_batch_vertices(e,g,I,s,A,n,B,t)>>>0}function ha(i){const A=cC(i,_.__wbindgen_malloc),t=cA,e=_.decode_svga(A,t);if(e[2])throw $n(e[1]);return $n(e[0])}function ca(i){const A=cC(i,_.__wbindgen_malloc),t=cA,e=_.inflate(A,t);if(e[3])throw $n(e[2]);var g=hC(e[0],e[1]).slice();return _.__wbindgen_free(e[0],e[1]*1,1),g}function rC(){_.init()}function oC(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,t){return Error(Nn(A,t))},__wbg_String_8564e559799eccda:function(A,t){const e=String(t),g=ua(e,_.__wbindgen_malloc,_.__wbindgen_realloc),I=cA;UB().setInt32(A+4,I,!0),UB().setInt32(A+0,g,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,t,e){new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(hC(A,t))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,t){throw new Error(Nn(A,t))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_set_08463b1df38a7e29:function(A,t,e){return A.set(t,e)},__wbg_set_6be42768c690e380:function(A,t,e){A[t]=e},__wbg_set_6c60b2e8ad0e9383:function(A,t,e){A[t>>>0]=e},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,t){return Nn(A,t)},__wbindgen_init_externref_table:function(){const A=_.__wbindgen_externrefs,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)}}}}function hC(i,A){return i=i>>>0,$A().subarray(i/1,i/1+A)}let JA=null;function UB(){return(JA===null||JA.buffer.detached===!0||JA.buffer.detached===void 0&&JA.buffer!==_.memory.buffer)&&(JA=new DataView(_.memory.buffer)),JA}let fs=null;function la(){return(fs===null||fs.byteLength===0)&&(fs=new Float32Array(_.memory.buffer)),fs}function Nn(i,A){return i=i>>>0,Da(i,A)}let us=null;function da(){return(us===null||us.byteLength===0)&&(us=new Uint32Array(_.memory.buffer)),us}let ws=null;function $A(){return(ws===null||ws.byteLength===0)&&(ws=new Uint8Array(_.memory.buffer)),ws}function fa(i,A){const t=A(i.length*4,4)>>>0;return da().set(i,t/4),cA=i.length,t}function cC(i,A){const t=A(i.length*1,1)>>>0;return $A().set(i,t/1),cA=i.length,t}function kB(i,A){const t=A(i.length*4,4)>>>0;return la().set(i,t/4),cA=i.length,t}function ua(i,A,t){if(t===void 0){const n=Fs.encode(i),B=A(n.length,1)>>>0;return $A().subarray(B,B+n.length).set(n),cA=n.length,B}let e=i.length,g=A(e,1)>>>0;const I=$A();let s=0;for(;s<e;s++){const n=i.charCodeAt(s);if(n>127)break;I[g+s]=n}if(s!==e){s!==0&&(i=i.slice(s)),g=t(g,e,e=s+i.length*3,1)>>>0;const n=$A().subarray(g+s,g+e),B=Fs.encodeInto(i,n);s+=B.written,g=t(g,e,s,1)>>>0}return cA=s,g}function $n(i){const A=_.__wbindgen_externrefs.get(i);return _.__externref_table_dealloc(i),A}let Ps=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Ps.decode();const wa=2146435072;let Rn=0;function Da(i,A){return Rn+=A,Rn>=wa&&(Ps=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Ps.decode(),Rn=A),Ps.decode($A().subarray(i,i+A))}const Fs=new TextEncoder;"encodeInto"in Fs||(Fs.encodeInto=function(i,A){const t=Fs.encode(i);return A.set(t),{read:i.length,written:t.length}});let cA=0,_;function lC(i,A){return _=i.exports,JA=null,fs=null,us=null,ws=null,_.__wbindgen_start(),_}async function ya(i,A){if(typeof Response=="function"&&i instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(i,A)}catch(g){if(i.ok&&t(i.type)&&i.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",g);else throw g}const e=await i.arrayBuffer();return await WebAssembly.instantiate(e,A)}else{const e=await WebAssembly.instantiate(i,A);return e instanceof WebAssembly.Instance?{instance:e,module:i}:e}function t(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}}function pa(i){if(_!==void 0)return _;i!==void 0&&(Object.getPrototypeOf(i)===Object.prototype?{module:i}=i:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=oC();i instanceof WebAssembly.Module||(i=new WebAssembly.Module(i));const t=new WebAssembly.Instance(i,A);return lC(t)}async function dC(i){if(_!==void 0)return _;i!==void 0&&(Object.getPrototypeOf(i)===Object.prototype?{module_or_path:i}=i:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),i===void 0&&(i=new URL("data:application/wasm;base64,AGFzbQEAAAABnAIpYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgA39/fQBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZjNjBiMmU4YWQwZTkzODMAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfMDg0NjNiMWRmMzhhN2UyOQAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2Jp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DQELQQEhBEEAIQMMAQtBASEHIANBARDXASIERQ0BCyAFQQA2AgggBSAENgIEIAUgAzYCACAFQYDOwAAgASACECFFDQFBqM7AAEHWACAFQQ9qQZjOwABBgM/AABBkAAsgByADELQBAAsgACAFKQIANwIAIABBCGogBUEIaigCADYCACAFQRBqJAAL5wIBBX8CQCABQc3/e0EQIAAgAEEQTRsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQDyICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhAlDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQJQsgAEEIaiEDCyADC4sMAgd/An4jAEHQAGsiBSQAAkACQCACIAEoAgQiA00EQCAFQUBrIAJBAEEBQQEQRCAFKAJEIQMgBSgCQEEBRg0BIAVBADYCECAFIAUoAkg2AgwgBSADNgIUIAVBB0EgIANBCnZnayIDIANBB08bQQJ0QQFyNgIYIAVBDGohAyMAQdAAayIGJAAgBiACNgIQIAYgATYCDAJAAkACQCACIAEoAgQiBCACIARJGyIERQ0AAkACQAJAIAMoAggiB0UEQCAGQQxqIgIoAgQiByACKAIAIggoAgQiASABIAdLGyAESQRAQcylwABBOUHopcAAEIUBAAsgBkEUaiIBIAggBBApIAIgByAEazYCBCMAQRBrIgIkACAGQSRqIgQCfyABQQxqIAEoAgAoAgwRBwBFBEAgBCABKQIANwIEIARBDGogAUEIaikCADcCAEEBDAELIAJBCGogAUEIaikCACIKNwMAIAIgASkCACILNwMAIARBBGogAkEMaiACKAIEIAqnIAunKAIIEQMAQQALNgIAIAJBEGokACAGKAIkRQ0BIAZBQGsgBkEwaikCACIKNwMAIAYgBikCKDcDOCAGKAI8IQIgCqciASADKAIIIAMoAgQiBGtLBEAgAyABEBkgAygCBCEECyABBEAgAygCACAEaiACIAH8CgAACyABIAMoAgggAygCBCIEayIHSw0CIAMgASAEajYCBCAGQcQAaiACIAEgBigCOCgCEBEBAAwECyAEIAcgAygCBGtNDQIgAyAEEBkgAiABKAIEIgQgAiAESRsiBA0CDAMLIwBBEGsiASQAAkAgAygCDCICQQFxBEAgASACQQV2IgIgAygCBGo2AgwgASADKAIAIAJrNgIIIAEgAygCCCACajYCBCABQQRqQQFBARBVDAELIAIQlQELIAFBEGokACADQQhqIAZBMGopAgA3AgAgAyAGKQIoNwIADAILIAYgBzYCTCAGIAE2AkggBkHIAGoQigEACwNAIAEoAgAhAiADKAIIIAMoAgQiAWsgBEkEQCADIAQQGSADKAIEIQELIAQEQCADKAIAIAFqIAIgBPwKAAALIAQgAygCCCADKAIEIgFrIgJLDQIgAyABIARqNgIEIwBBEGsiASQAAkACQCAEIAZBDGoiBygCBCIJTQRAIAcoAgAiAigCBCIIIARJDQEgAiAIIARrNgIEIAcgCSAEazYCBCACIAIoAgAgBGo2AgAgAUEQaiQADAILQfilwABBI0GcpsAAELUBAAsgASAINgIMIAEgBDYCCCABQQhqEIoBAAsgBigCECICIAYoAgwiASgCBCIEIAIgBEkbIgQNAAsLIAZB0ABqJAAMAQsgBiACNgIoIAYgBDYCJCAGQSRqEIoBAAsgBSgCECECIAUoAgwhBgJAIAUoAhgiA0EBcUUEQCAAIAM2AgwgACACNgIIIAAgBjYCBCAAQciwwAA2AgAMAQsgBSgCFCEEIAVBHGoiASACIANBBXYiA2o2AgggASAGIANrNgIEIAEgAyAEajYCACAFQShqIQYjAEEgayICJAAgASgCBCEEAkACQAJ/IAEoAggiByABKAIAIghHBEBBDEEEENcBIgFFDQIgAUEBNgIIIAEgCDYCBCABIAQ2AgBB/K7AAAwBCyACIAg2AhwgAiAENgIYIAIgCDYCFCACQQhqIAJBFGoQXSACKAIIIghBASACKAIMIgcbIQQgCEEBckEAIAcbIQFBoK/AAEG0r8AAIAhBAXEbQcivwAAgBxsLIQggBiABNgIMIAYgBzYCCCAGIAQ2AgQgBiAINgIAIAJBIGokAAwBC0EEQQwQ3QEACyAFIAM2AjggBSgCMCIBIANJDQMgBUEwaiICIAEgA2s2AgAgBSAFKAIsIANqNgIsIABBCGogAikCADcCACAAIAUpAig3AgALIAVB0ABqJAAPCyAFIAM2AkQgBSACNgJAIAVBQGsQigEACyADIAUoAkgQtAEACyAFIAE2AjwgBUEGNgJMIAVBBjYCRCAFIAVBPGo2AkggBSAFQThqNgJAQbyDwAAgBUFAa0GspcAAEIUBAAuCAwEEfyAAKAIMIQICQAJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CAkAgACgCHEECdEGw58AAaiIBKAIAIABHBEAgAygCECAARg0BIAMgAjYCFCACDQMMBAsgASACNgIAIAJFDQQMAgsgAyACNgIQIAINAQwCCyAAKAIIIgAgAkcEQCAAIAI2AgwgAiAANgIIDwtByOrAAEHI6sAAKAIAQX4gAUEDdndxNgIADwsgAiADNgIYIAAoAhAiAQRAIAIgATYCECABIAI2AhgLIAAoAhQiAEUNACACIAA2AhQgACACNgIYDwsPC0HM6sAAQczqwAAoAgBBfiAAKAIcd3E2AgALxAIBBH8gAEIANwIQIAACf0EAIAFBgAJJDQAaQR8gAUH///8HSw0AGiABQSYgAUEIdmciA2t2QQFxIANBAXRrQT5qCyICNgIcIAJBAnRBsOfAAGohBEEBIAJ0IgNBzOrAACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQczqwABBzOrAACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgATYCCA8LIARBEGogADYCACAAIAM2AhggACAANgIMIAAgADYCCAvoAgEBfyMAQSBrIgIkAAJAAkACQAJAAkACQCAALQAAQQFrDgMBAgMACyACIAAoAgQ2AgBBFEEBENcBIgBFDQQgAEEQakH5yMAAKAAANgAAIABBCGpB8cjAACkAADcAACAAQenIwAApAAA3AAAgAkEUNgIMIAIgADYCCCACQRQ2AgQgAiACrUKAgICAoAmENwMYIAIgAkEEaq1CgICAgLAJhDcDECABKAIAIAEoAgRBoZXAACACQRBqECEhACACKAIEIgFFDQMgAigCCCABQQEQzgEMAwsgAiAALQABQQJ0IgAoAvzKQDYCCCACIAAoAqTMQDYCBCACIAJBBGqtQoCAgIDACYQ3AxAgASgCACABKAIEQaqFwAAgAkEQahAhIQAMAgsgACgCBCIAKAIAIAAoAgQgARDfASEADAELIAAoAgQiACgCACABIAAoAgQoAhARAAAhAAsgAkEgaiQAIAAPC0EBQRQQtAEAC5ECAgF/AX4jAEEgayIEJAACQAJAAkAgACACTQRAIAEgAksNAUKAgICAsAchBSAAIAFNDQIgBCAANgIIIAQgATYCDCAEIAUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBB7YHAACAEQRBqIAMQhQEACyAEIAA2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBBzILAACAEQRBqIAMQhQEACyAEIAE2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYDAELIAQgATYCCCAEIAI2AgwgBCAFIARBDGqthDcDGAsgBCAFIARBCGqthDcDEEGFg8AAIARBEGogAxCFAQALtAIBA38jAEEwayIDJAAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0IANwMIIANBKGogASABQRhqIgUgA0EIakEgEDUCQAJAAkAgAy0AKCIEQQRGDQADQAJAAkACQAJAAkAgBEEBaw4DAgEABAsgAygCLC0ACEEjRw0DDAILIAMoAiwtAAhBI0YNAQwCCyADLQApQSNHDQELIANBKGoiBBB0IAQgASAFIANBCGpBIBA1IAMtACgiBEEERw0BDAILCyAA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yLDAADYCAAveAQIBfwF+IwBBIGsiAyQAIAMgATYCECADIAA2AgwgA0EBOwEcIAMgAjYCGCADIANBDGo2AhQjAEEQayIBJAAgA0EUaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCBCIDQQFxBEAgAigCACECIAAgA0EBdjYCBCAAIAI2AgAgAEGYycAAIAEoAgQgASgCCCIALQAIIAAtAAkQQAALIABBgICAgHg2AgAgACABNgIMIABBtMnAACABKAIEIAEoAggiAC0ACCAALQAJEEAACy8AAkAgAWlBAUcgAEGAgICAeCABa0tyDQAgAARAIAAgARDXASIBRQ0BCyABDwsACz8AIAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQugEPCyABKAIAIAEoAgQgACgCDCgCACIAKAIAIAAoAgQQIQs4AAJAIAJBgIDEAEYNACAAIAIgASgCEBEAAEUNAEEBDwsgA0UEQEEADwsgACADIAQgASgCDBEEAAtFAQF/QRhBBBDXASICRQRAQQRBGBDdAQALIAIgATYCFCACIAA2AhAgAkKAgICAgICAgIB/NwIIIAJCgICAgMAANwIAIAILPAEBfyMAQRBrIgEkACABQTs2AgwgAUE7NgIEIAEgADYCCCABIABBBGo2AgBBtIHAACABQfivwAAQhQEACzYBAX8DQCAAKAAAIQMgACABKAAANgAAIAEgAzYAACAAQQRqIQAgAUEEaiEBIAJBAWsiAg0ACwvtAQEDfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQfA8LQQAhAiMAQRBrIgMkACAAKAIAIQADQCACIANqQQ9qIABBD3EtAL7XQDoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQbzXwABBAiACIANqQRBqQQAgAmsQFyADQRBqJAAPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCs10A6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUG818AAQQIgAiADakEQakEAIAJrEBcgA0EQaiQAC1UBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgACABKAIAIAIoAgAQegwBCyAA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IABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIANqIQIMAQsMBQsCf0EBIABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIgUgA2ohCCABayIADQALIAMgBWoLIgMgAkkNAEEAIQACQCACRQ0AIAIgBE8EQCACIgAgBEcNAgwBCyACIgAgBmosAABBv39MDQELIANFBEBBACEDDAILIAMgBE8EQCADIARGDQIgACECDAELIAMgBmosAABBv39KDQEgACECCyAGIAQgAiADQcTVwAAQvQEACyALIAAgBmogAyAAayANKAIMEQQADQAgC0EiIA4RAAAhDAsgCkEQaiQAIAwLEAAgASAAKAIAIAAoAgQQIAthAQF/AkACQCAAQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABak8EQCACQQAgAyABQSdqSxsNASAAEBgMAgtB7MnAAEEuQZzKwAAQtQEAC0GsysAAQS5B3MrAABC1AQALCx0BAW8gACgCACUBIAElASABEFggAiUBIAIQWBACCw0AIAAoAgAoAghBAUYLEgBBiLDAAEELQZCwwAAQhQEACw0AIAAoAgAoAhBBAUYLDwAgACABIAIoAgAlARAKCw8AIABBgMnAACABIAIQIQsPACAAQYDOwAAgASACECELDwBB1tnAAEErIAAQtQEACxkAAn8gAUEJTwRAIAEgABAoDAELIAAQDwsLjgEBAn8CQCMAQRBrIgEkACABQQRqIANBAEEBQQEQRCABKAIIIQQgASgCBEEBRwRAIAEoAgwhBSADBEAgBSACIAP8CgAACyAAIAQ2AgggACADNgIEIAAgBTYCACAAQQdBICAEQQp2Z2siACAAQQdPG0ECdEEBcjYCDCABQRBqJAAMAQsgBCABKAIMELQBAAsLDgAgAUHsr8AAQQsQugELCQAgACABEAcACwoAIABBAUEBEFULDAAgACABKQIANwMACz4BAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqIgAoAgAgACgCBEGU68AAKAIAIgBBzQAgABsRAgAACw4AIAFB+M3AAEEFELoBCwoAIAIgACABECALDQAgAUHe5sAAQRgQIAsWAgFvAX8gABAMIQEQNCICIAEmASACCwoAIAAoAgAQlwELCgAgACgCABCVAQsWAQFvIAAgARAIIQIQNCIAIAImASAACxYBAW8gACABEA0hAhA0IgAgAiYBIAALCQAgAEEANgIACwwAQZDrwABBAToAAAsCAAsEAEEACwIACwu3ZgsAQYCAwAALoxhpbnZhbGlkIHRhZyB2YWx1ZTogMA5iZWdpbiA8PSBlbmQgKMAEIDw9IMAQKSB3aGVuIHNsaWNpbmcgYMABYMAAC2J5dGUgaW5kZXggwBYgaXMgb3V0IG9mIGJvdW5kcyBvZiBgwAFgwAALYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMAGKSBvZiBgwAFgwAAiYWR2YW5jZSBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCBhZHZhbmNpbmcgYnkgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAhY2Fubm90IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogwAQgPD0gwABIY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogwAATaW52YWxpZCBrZXkgdmFsdWU6IMAAGWludmFsaWQgd2lyZSB0eXBlIHZhbHVlOiDAABJTZXJpYWxpemUgZmFpbGVkOiDAABBJbmZsYXRlIGZhaWxlZDogwAAYUHJvdG9idWYgZGVjb2RlIGZhaWxlZDogwADAAjogwABzcmNcdmVydGV4LnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlc19tdXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXG91dHB1dF9idWZmZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxmbGF0ZTItMS4xLjlcc3JjXGJ1ZnJlYWRlci5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxzdHJlYW0ucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ1Zlx0YWtlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxzZXJkZS13YXNtLWJpbmRnZW4tMC42LjVcc3JjXGxpYi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcbGliLnJzACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAGludmFsaWQgdmFyaW50TGF5b3V0eHl3aWR0aGhlaWdodFRyYW5zZm9ybWFiY2R0eHR5QXVkaW9FbnRpdHlhdWRpb19rZXlzdGFydF9mcmFtZWVuZF9mcmFtZXN0YXJ0X3RpbWV0b3RhbF90aW1lRnJhbWVFbnRpdHlhbHBoYWxheW91dHRyYW5zZm9ybWNsaXBfcGF0aHNoYXBlc01vdmllRW50aXR5dmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NNb3ZpZVBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzU2hhcGVFbnRpdHlyI3R5cGVzaGFwZXJlY3RlbGxpcHNlc3R5bGVzU3ByaXRlRW50aXR5aW1hZ2Vfa2V5AAAAAAD//////////xgMEABBsJjAAAuzAURhdGEgdG9vIHNob3J0IGZvciB6bGliYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0BgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAZQwQAGsMEAB3DBAAhgwQAJAMEACYDBAAAAAAAP//////////2AwQAEHwmcAAC+sTYXNzZXJ0aW9uIGZhaWxlZDogbiA8PSBzZWxmLmJ1Zi5pbml0IC0gc2VsZi5idWYuZmlsbGVkAABaBhAAUwAAABUBAAAJAAAAuQgQAEkAAACyAQAAMQAAAEF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50Y29ycnVwdCBkZWZsYXRlIHN0cmVhbVZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWUGAAAADAAAAA8AAAAKAAAACAAAAAwAAADMDRAA0g0QAN4NEADtDRAA9w0QAP8NEACsAhAADQAAABwAAAAYAAAArAIQAA0AAAAdAAAAGAAAAKwCEAANAAAAHgAAABEAAACsAhAADQAAAB8AAAARAAAArAIQAA0AAAAgAAAAEQAAAKwCEAANAAAAIQAAABEAAACsAhAADQAAACIAAAASAAAArAIQAA0AAAAjAAAAEgAAAKwCEAANAAAAJAAAABUAAACsAhAADQAAACUAAAAYAAAArAIQAA0AAAAmAAAAGAAAAKwCEAANAAAAJwAAABgAAACsAhAADQAAACgAAAAYAAAArAIQAA0AAAA2AAAACQAAAKwCEAANAAAANwAAAAkAAACsAhAADQAAADgAAAAJAAAArAIQAA0AAAA5AAAACQAAAKwCEAANAAAAOgAAAAkAAACsAhAADQAAADsAAAAJAAAArAIQAA0AAAA8AAAACQAAAKwCEAANAAAAPQAAAAkAAACsAhAADQAAAD4AAAAJAAAArAIQAA0AAABCAAAACQAAAKwCEAANAAAAQwAAAAkAAACsAhAADQAAAEQAAAAJAAAArAIQAA0AAABFAAAACQAAAKwCEAANAAAARgAAAAkAAACsAhAADQAAAEcAAAAJAAAArAIQAA0AAABIAAAACQAAAKwCEAANAAAASQAAAAkAAACsAhAADQAAAEoAAAAJAAAArAIQAA0AAABOAAAACQAAAKwCEAANAAAATwAAAAkAAACsAhAADQAAAFAAAAAJAAAArAIQAA0AAABRAAAACQAAAKwCEAANAAAAUgAAAAkAAACsAhAADQAAAFMAAAAJAAAArAIQAA0AAABUAAAACQAAAKwCEAANAAAAVQAAAAkAAACsAhAADQAAAFYAAAAJAAAArAIQAA0AAABaAAAACQAAAKwCEAANAAAAWwAAAAkAAACsAhAADQAAAFwAAAAJAAAArAIQAA0AAABdAAAACQAAAKwCEAANAAAAXgAAAAkAAACsAhAADQAAAF8AAAAJAAAArAIQAA0AAABgAAAACQAAAKwCEAANAAAAYQAAAAkAAACsAhAADQAAAGIAAAAJAAAArAIQAA0AAABmAAAACQAAAKwCEAANAAAAZwAAAAkAAACsAhAADQAAAGgAAAAJAAAArAIQAA0AAABpAAAACQAAAKwCEAANAAAAagAAAAkAAACsAhAADQAAAGsAAAAJAAAAcmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZFZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdAAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAACISEAAoEhAANBIQAEMSEABNEhAAVRIQAGgDEABLAAAANgEAABgAAAABAAAAAAAAALQDEABgAAAAwwIAAAkAAADqBBAAZAAAAGIAAAAVAAAAYGxlbmAgZ3JlYXRlciB0aGFuIHJlbWFpbmluZ94HEABjAAAAmAAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBjbnQgPD0gc2VsZi5saW1pdADeBxAAYwAAAJIAAAAJAAAAaW52YWxpZCB0YWcgdmFsdWU6IDBkZWxpbWl0ZWQgbGVuZ3RoIGV4Y2VlZGVkYnVmZmVyIHVuZGVyZmxvd3VuZXhwZWN0ZWQgZW5kIGdyb3VwIHRhZ3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkaW52YWxpZCB2YXJpbnRyZWN0ZWxsaXBzZURlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hEZWNvZGVkUmVjdHh5d2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzRGVjb2RlZEF1ZGlvYXVkaW9fa2V5c3RhcnRfZnJhbWVlbmRfZnJhbWVzdGFydF90aW1ldG90YWxfdGltZURlY29kZWRDb2xvcnJnRGVjb2RlZEZyYW1lYWxwaGFsYXlvdXR0cmFuc2Zvcm1jbGlwX3BhdGhzaGFwZXNEZWNvZGVkTW92aWV2ZXJzaW9ucGFyYW1zaW1hZ2Vzc3ByaXRlc2F1ZGlvc0RlY29kZWRTaGFwZWtpbmRwYXRoX2RhdGFzdHlsZURlY29kZWRMYXlvdXREZWNvZGVkUGFyYW1zdmlld19ib3hfd2lkdGh2aWV3X2JveF9oZWlnaHRmcHNmcmFtZXNEZWNvZGVkU3ByaXRlaW1hZ2Vfa2V5RGVjb2RlZEVsbGlwc2VyYWRpdXNfeHJhZGl1c195TWFwIGtleSBpcyBub3QgYSBzdHJpbmcgYW5kIGNhbm5vdCBiZSBhbiBvYmplY3Qga2V5UmdiYUNvbG9yZ3JiYVNoYXBlQXJnc2RTaGFwZVN0eWxlbWl0ZXJfbGltaXRsaW5lX2Rhc2hfaWlpZmlsbGxpbmVfY2Fwc3Ryb2tlbGluZV9kYXNoX2lsaW5lX2Rhc2hfaWlsaW5lX2pvaW5zdHJva2Vfd2lkdGhFbGxpcHNlQXJnc3h5cmFkaXVzX3hyYWRpdXNfeVJlY3RBcmdzd2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzAAAACQAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAD//////////9AWEABB6K3AAAtVY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRmYWlsZWQgdG8gZGVjb2RlIFByb3RvYnVmIG1lc3NhZ2U6IABByK7AAAulAwEAAAAnAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAoAAAAKQAAACoAAAArAAAALAAAALQDEABgAAAAOgUAADIAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADAAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAC0AxAAYAAAAEgFAABJAAAATGF5b3V0RXJyb3IA6gkQAF4AAACqAAAABQAAAGFib3J0AAAA6gkQAF4AAABuAAAACQAAAG92ZXJmbG93ugIQAGQAAACpAgAAFQAAALoCEABkAAAAvQIAAB0AAAA8AAAAPQAA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OwQAACYAAAAbBxAAbAAAAEQEAAAjAAAAGwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAAEcEAAANAAAAGwcQAGwAAABIBAAAIgAAABsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABNBAAADQAAABsHEABsAAAATgQAACIAAAAbBxAAbAAAAE4EAAANAAAAGwcQAGwAAABPBAAAJgAAABsHEABsAAAATwQAAA0AAAAbBxAAbAAAACwEAAAXAAAAmwUQAG4AAABCAQAAHAAAAJsFEABuAAAAdgEAADAAAABkZXN0IGlzIG91dCBvZiBib3VuZHMAAABtXcvWLFDrY3hBpldxG4u5mrjukVEUlljPlgDo0p8SimVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQg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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:Sn&&Sn.tagName.toUpperCase()==="SCRIPT"&&Sn.src||new URL("gift-stage.cjs.js",document.baseURI).href));const A=oC();(typeof i=="string"||typeof Request=="function"&&i instanceof Request||typeof URL=="function"&&i instanceof URL)&&(i=fetch(i));const{instance:t,module:e}=await ya(await i,A);return lC(t)}const ma=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:oa,decode_svga:ha,default:dC,inflate:ca,init:rC,initSync:pa},Symbol.toStringTag,{value:"Module"})),Ga="data:application/wasm;base64,AGFzbQEAAAABnAIpYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgA39/fQBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZjNjBiMmU4YWQwZTkzODMAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfMDg0NjNiMWRmMzhhN2UyOQAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2Jp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DQELQQEhBEEAIQMMAQtBASEHIANBARDXASIERQ0BCyAFQQA2AgggBSAENgIEIAUgAzYCACAFQYDOwAAgASACECFFDQFBqM7AAEHWACAFQQ9qQZjOwABBgM/AABBkAAsgByADELQBAAsgACAFKQIANwIAIABBCGogBUEIaigCADYCACAFQRBqJAAL5wIBBX8CQCABQc3/e0EQIAAgAEEQTRsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQDyICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhAlDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQJQsgAEEIaiEDCyADC4sMAgd/An4jAEHQAGsiBSQAAkACQCACIAEoAgQiA00EQCAFQUBrIAJBAEEBQQEQRCAFKAJEIQMgBSgCQEEBRg0BIAVBADYCECAFIAUoAkg2AgwgBSADNgIUIAVBB0EgIANBCnZnayIDIANBB08bQQJ0QQFyNgIYIAVBDGohAyMAQdAAayIGJAAgBiACNgIQIAYgATYCDAJAAkACQCACIAEoAgQiBCACIARJGyIERQ0AAkACQAJAIAMoAggiB0UEQCAGQQxqIgIoAgQiByACKAIAIggoAgQiASABIAdLGyAESQRAQcylwABBOUHopcAAEIUBAAsgBkEUaiIBIAggBBApIAIgByAEazYCBCMAQRBrIgIkACAGQSRqIgQCfyABQQxqIAEoAgAoAgwRBwBFBEAgBCABKQIANwIEIARBDGogAUEIaikCADcCAEEBDAELIAJBCGogAUEIaikCACIKNwMAIAIgASkCACILNwMAIARBBGogAkEMaiACKAIEIAqnIAunKAIIEQMAQQALNgIAIAJBEGokACAGKAIkRQ0BIAZBQGsgBkEwaikCACIKNwMAIAYgBikCKDcDOCAGKAI8IQIgCqciASADKAIIIAMoAgQiBGtLBEAgAyABEBkgAygCBCEECyABBEAgAygCACAEaiACIAH8CgAACyABIAMoAgggAygCBCIEayIHSw0CIAMgASAEajYCBCAGQcQAaiACIAEgBigCOCgCEBEBAAwECyAEIAcgAygCBGtNDQIgAyAEEBkgAiABKAIEIgQgAiAESRsiBA0CDAMLIwBBEGsiASQAAkAgAygCDCICQQFxBEAgASACQQV2IgIgAygCBGo2AgwgASADKAIAIAJrNgIIIAEgAygCCCACajYCBCABQQRqQQFBARBVDAELIAIQlQELIAFBEGokACADQQhqIAZBMGopAgA3AgAgAyAGKQIoNwIADAILIAYgBzYCTCAGIAE2AkggBkHIAGoQigEACwNAIAEoAgAhAiADKAIIIAMoAgQiAWsgBEkEQCADIAQQGSADKAIEIQELIAQEQCADKAIAIAFqIAIgBPwKAAALIAQgAygCCCADKAIEIgFrIgJLDQIgAyABIARqNgIEIwBBEGsiASQAAkACQCAEIAZBDGoiBygCBCIJTQRAIAcoAgAiAigCBCIIIARJDQEgAiAIIARrNgIEIAcgCSAEazYCBCACIAIoAgAgBGo2AgAgAUEQaiQADAILQfilwABBI0GcpsAAELUBAAsgASAINgIMIAEgBDYCCCABQQhqEIoBAAsgBigCECICIAYoAgwiASgCBCIEIAIgBEkbIgQNAAsLIAZB0ABqJAAMAQsgBiACNgIoIAYgBDYCJCAGQSRqEIoBAAsgBSgCECECIAUoAgwhBgJAIAUoAhgiA0EBcUUEQCAAIAM2AgwgACACNgIIIAAgBjYCBCAAQciwwAA2AgAMAQsgBSgCFCEEIAVBHGoiASACIANBBXYiA2o2AgggASAGIANrNgIEIAEgAyAEajYCACAFQShqIQYjAEEgayICJAAgASgCBCEEAkACQAJ/IAEoAggiByABKAIAIghHBEBBDEEEENcBIgFFDQIgAUEBNgIIIAEgCDYCBCABIAQ2AgBB/K7AAAwBCyACIAg2AhwgAiAENgIYIAIgCDYCFCACQQhqIAJBFGoQXSACKAIIIghBASACKAIMIgcbIQQgCEEBckEAIAcbIQFBoK/AAEG0r8AAIAhBAXEbQcivwAAgBxsLIQggBiABNgIMIAYgBzYCCCAGIAQ2AgQgBiAINgIAIAJBIGokAAwBC0EEQQwQ3QEACyAFIAM2AjggBSgCMCIBIANJDQMgBUEwaiICIAEgA2s2AgAgBSAFKAIsIANqNgIsIABBCGogAikCADcCACAAIAUpAig3AgALIAVB0ABqJAAPCyAFIAM2AkQgBSACNgJAIAVBQGsQigEACyADIAUoAkgQtAEACyAFIAE2AjwgBUEGNgJMIAVBBjYCRCAFIAVBPGo2AkggBSAFQThqNgJAQbyDwAAgBUFAa0GspcAAEIUBAAuCAwEEfyAAKAIMIQICQAJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CAkAgACgCHEECdEGw58AAaiIBKAIAIABHBEAgAygCECAARg0BIAMgAjYCFCACDQMMBAsgASACNgIAIAJFDQQMAgsgAyACNgIQIAINAQwCCyAAKAIIIgAgAkcEQCAAIAI2AgwgAiAANgIIDwtByOrAAEHI6sAAKAIAQX4gAUEDdndxNgIADwsgAiADNgIYIAAoAhAiAQRAIAIgATYCECABIAI2AhgLIAAoAhQiAEUNACACIAA2AhQgACACNgIYDwsPC0HM6sAAQczqwAAoAgBBfiAAKAIcd3E2AgALxAIBBH8gAEIANwIQIAACf0EAIAFBgAJJDQAaQR8gAUH///8HSw0AGiABQSYgAUEIdmciA2t2QQFxIANBAXRrQT5qCyICNgIcIAJBAnRBsOfAAGohBEEBIAJ0IgNBzOrAACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQczqwABBzOrAACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgATYCCA8LIARBEGogADYCACAAIAM2AhggACAANgIMIAAgADYCCAvoAgEBfyMAQSBrIgIkAAJAAkACQAJAAkACQCAALQAAQQFrDgMBAgMACyACIAAoAgQ2AgBBFEEBENcBIgBFDQQgAEEQakH5yMAAKAAANgAAIABBCGpB8cjAACkAADcAACAAQenIwAApAAA3AAAgAkEUNgIMIAIgADYCCCACQRQ2AgQgAiACrUKAgICAoAmENwMYIAIgAkEEaq1CgICAgLAJhDcDECABKAIAIAEoAgRBoZXAACACQRBqECEhACACKAIEIgFFDQMgAigCCCABQQEQzgEMAwsgAiAALQABQQJ0IgAoAvzKQDYCCCACIAAoAqTMQDYCBCACIAJBBGqtQoCAgIDACYQ3AxAgASgCACABKAIEQaqFwAAgAkEQahAhIQAMAgsgACgCBCIAKAIAIAAoAgQgARDfASEADAELIAAoAgQiACgCACABIAAoAgQoAhARAAAhAAsgAkEgaiQAIAAPC0EBQRQQtAEAC5ECAgF/AX4jAEEgayIEJAACQAJAAkAgACACTQRAIAEgAksNAUKAgICAsAchBSAAIAFNDQIgBCAANgIIIAQgATYCDCAEIAUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBB7YHAACAEQRBqIAMQhQEACyAEIAA2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBBzILAACAEQRBqIAMQhQEACyAEIAE2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYDAELIAQgATYCCCAEIAI2AgwgBCAFIARBDGqthDcDGAsgBCAFIARBCGqthDcDEEGFg8AAIARBEGogAxCFAQALtAIBA38jAEEwayIDJAAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0IANwMIIANBKGogASABQRhqIgUgA0EIakEgEDUCQAJAAkAgAy0AKCIEQQRGDQADQAJAAkACQAJAAkAgBEEBaw4DAgEABAsgAygCLC0ACEEjRw0DDAILIAMoAiwtAAhBI0YNAQwCCyADLQApQSNHDQELIANBKGoiBBB0IAQgASAFIANBCGpBIBA1IAMtACgiBEEERw0BDAILCyAA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yLDAADYCAAveAQIBfwF+IwBBIGsiAyQAIAMgATYCECADIAA2AgwgA0EBOwEcIAMgAjYCGCADIANBDGo2AhQjAEEQayIBJAAgA0EUaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCBCIDQQFxBEAgAigCACECIAAgA0EBdjYCBCAAIAI2AgAgAEGYycAAIAEoAgQgASgCCCIALQAIIAAtAAkQQAALIABBgICAgHg2AgAgACABNgIMIABBtMnAACABKAIEIAEoAggiAC0ACCAALQAJEEAACy8AAkAgAWlBAUcgAEGAgICAeCABa0tyDQAgAARAIAAgARDXASIBRQ0BCyABDwsACz8AIAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQugEPCyABKAIAIAEoAgQgACgCDCgCACIAKAIAIAAoAgQQIQs4AAJAIAJBgIDEAEYNACAAIAIgASgCEBEAAEUNAEEBDwsgA0UEQEEADwsgACADIAQgASgCDBEEAAtFAQF/QRhBBBDXASICRQRAQQRBGBDdAQALIAIgATYCFCACIAA2AhAgAkKAgICAgICAgIB/NwIIIAJCgICAgMAANwIAIAILPAEBfyMAQRBrIgEkACABQTs2AgwgAUE7NgIEIAEgADYCCCABIABBBGo2AgBBtIHAACABQfivwAAQhQEACzYBAX8DQCAAKAAAIQMgACABKAAANgAAIAEgAzYAACAAQQRqIQAgAUEEaiEBIAJBAWsiAg0ACwvtAQEDfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQfA8LQQAhAiMAQRBrIgMkACAAKAIAIQADQCACIANqQQ9qIABBD3EtAL7XQDoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQbzXwABBAiACIANqQRBqQQAgAmsQFyADQRBqJAAPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCs10A6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUG818AAQQIgAiADakEQakEAIAJrEBcgA0EQaiQAC1UBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgACABKAIAIAIoAgAQegwBCyAA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IABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIANqIQIMAQsMBQsCf0EBIABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIgUgA2ohCCABayIADQALIAMgBWoLIgMgAkkNAEEAIQACQCACRQ0AIAIgBE8EQCACIgAgBEcNAgwBCyACIgAgBmosAABBv39MDQELIANFBEBBACEDDAILIAMgBE8EQCADIARGDQIgACECDAELIAMgBmosAABBv39KDQEgACECCyAGIAQgAiADQcTVwAAQvQEACyALIAAgBmogAyAAayANKAIMEQQADQAgC0EiIA4RAAAhDAsgCkEQaiQAIAwLEAAgASAAKAIAIAAoAgQQIAthAQF/AkACQCAAQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABak8EQCACQQAgAyABQSdqSxsNASAAEBgMAgtB7MnAAEEuQZzKwAAQtQEAC0GsysAAQS5B3MrAABC1AQALCx0BAW8gACgCACUBIAElASABEFggAiUBIAIQWBACCw0AIAAoAgAoAghBAUYLEgBBiLDAAEELQZCwwAAQhQEACw0AIAAoAgAoAhBBAUYLDwAgACABIAIoAgAlARAKCw8AIABBgMnAACABIAIQIQsPACAAQYDOwAAgASACECELDwBB1tnAAEErIAAQtQEACxkAAn8gAUEJTwRAIAEgABAoDAELIAAQDwsLjgEBAn8CQCMAQRBrIgEkACABQQRqIANBAEEBQQEQRCABKAIIIQQgASgCBEEBRwRAIAEoAgwhBSADBEAgBSACIAP8CgAACyAAIAQ2AgggACADNgIEIAAgBTYCACAAQQdBICAEQQp2Z2siACAAQQdPG0ECdEEBcjYCDCABQRBqJAAMAQsgBCABKAIMELQBAAsLDgAgAUHsr8AAQQsQugELCQAgACABEAcACwoAIABBAUEBEFULDAAgACABKQIANwMACz4BAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqIgAoAgAgACgCBEGU68AAKAIAIgBBzQAgABsRAgAACw4AIAFB+M3AAEEFELoBCwoAIAIgACABECALDQAgAUHe5sAAQRgQIAsWAgFvAX8gABAMIQEQNCICIAEmASACCwoAIAAoAgAQlwELCgAgACgCABCVAQsWAQFvIAAgARAIIQIQNCIAIAImASAACxYBAW8gACABEA0hAhA0IgAgAiYBIAALCQAgAEEANgIACwwAQZDrwABBAToAAAsCAAsEAEEACwIACwu3ZgsAQYCAwAALoxhpbnZhbGlkIHRhZyB2YWx1ZTogMA5iZWdpbiA8PSBlbmQgKMAEIDw9IMAQKSB3aGVuIHNsaWNpbmcgYMABYMAAC2J5dGUgaW5kZXggwBYgaXMgb3V0IG9mIGJvdW5kcyBvZiBgwAFgwAALYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMAGKSBvZiBgwAFgwAAiYWR2YW5jZSBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCBhZHZhbmNpbmcgYnkgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAhY2Fubm90IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogwAQgPD0gwABIY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogwAATaW52YWxpZCBrZXkgdmFsdWU6IMAAGWludmFsaWQgd2lyZSB0eXBlIHZhbHVlOiDAABJTZXJpYWxpemUgZmFpbGVkOiDAABBJbmZsYXRlIGZhaWxlZDogwAAYUHJvdG9idWYgZGVjb2RlIGZhaWxlZDogwADAAjogwABzcmNcdmVydGV4LnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlc19tdXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXG91dHB1dF9idWZmZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxmbGF0ZTItMS4xLjlcc3JjXGJ1ZnJlYWRlci5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxzdHJlYW0ucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ1Zlx0YWtlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxzZXJkZS13YXNtLWJpbmRnZW4tMC42LjVcc3JjXGxpYi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcbGliLnJzACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAGludmFsaWQgdmFyaW50TGF5b3V0eHl3aWR0aGhlaWdodFRyYW5zZm9ybWFiY2R0eHR5QXVkaW9FbnRpdHlhdWRpb19rZXlzdGFydF9mcmFtZWVuZF9mcmFtZXN0YXJ0X3RpbWV0b3RhbF90aW1lRnJhbWVFbnRpdHlhbHBoYWxheW91dHRyYW5zZm9ybWNsaXBfcGF0aHNoYXBlc01vdmllRW50aXR5dmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NNb3ZpZVBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzU2hhcGVFbnRpdHlyI3R5cGVzaGFwZXJlY3RlbGxpcHNlc3R5bGVzU3ByaXRlRW50aXR5aW1hZ2Vfa2V5AAAAAAD//////////xgMEABBsJjAAAuzAURhdGEgdG9vIHNob3J0IGZvciB6bGliYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0BgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAZQwQAGsMEAB3DBAAhgwQAJAMEACYDBAAAAAAAP//////////2AwQAEHwmcAAC+sTYXNzZXJ0aW9uIGZhaWxlZDogbiA8PSBzZWxmLmJ1Zi5pbml0IC0gc2VsZi5idWYuZmlsbGVkAABaBhAAUwAAABUBAAAJAAAAuQgQAEkAAACyAQAAMQAAAEF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50Y29ycnVwdCBkZWZsYXRlIHN0cmVhbVZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWUGAAAADAAAAA8AAAAKAAAACAAAAAwAAADMDRAA0g0QAN4NEADtDRAA9w0QAP8NEACsAhAADQAAABwAAAAYAAAArAIQAA0AAAAdAAAAGAAAAKwCEAANAAAAHgAAABEAAACsAhAADQAAAB8AAAARAAAArAIQAA0AAAAgAAAAEQAAAKwCEAANAAAAIQAAABEAAACsAhAADQAAACIAAAASAAAArAIQAA0AAAAjAAAAEgAAAKwCEAANAAAAJAAAABUAAACsAhAADQAAACUAAAAYAAAArAIQAA0AAAAmAAAAGAAAAKwCEAANAAAAJwAAABgAAACsAhAADQAAACgAAAAYAAAArAIQAA0AAAA2AAAACQAAAKwCEAANAAAANwAAAAkAAACsAhAADQAAADgAAAAJAAAArAIQAA0AAAA5AAAACQAAAKwCEAANAAAAOgAAAAkAAACsAhAADQAAADsAAAAJAAAArAIQAA0AAAA8AAAACQAAAKwCEAANAAAAPQAAAAkAAACsAhAADQAAAD4AAAAJAAAArAIQAA0AAABCAAAACQAAAKwCEAANAAAAQwAAAAkAAACsAhAADQAAAEQAAAAJAAAArAIQAA0AAABFAAAACQAAAKwCEAANAAAARgAAAAkAAACsAhAADQAAAEcAAAAJAAAArAIQAA0AAABIAAAACQAAAKwCEAANAAAASQAAAAkAAACsAhAADQAAAEoAAAAJAAAArAIQAA0AAABOAAAACQAAAKwCEAANAAAATwAAAAkAAACsAhAADQAAAFAAAAAJAAAArAIQAA0AAABRAAAACQAAAKwCEAANAAAAUgAAAAkAAACsAhAADQAAAFMAAAAJAAAArAIQAA0AAABUAAAACQAAAKwCEAANAAAAVQAAAAkAAACsAhAADQAAAFYAAAAJAAAArAIQAA0AAABaAAAACQAAAKwCEAANAAAAWwAAAAkAAACsAhAADQAAAFwAAAAJAAAArAIQAA0AAABdAAAACQAAAKwCEAANAAAAXgAAAAkAAACsAhAADQAAAF8AAAAJAAAArAIQAA0AAABgAAAACQAAAKwCEAANAAAAYQAAAAkAAACsAhAADQAAAGIAAAAJAAAArAIQAA0AAABmAAAACQAAAKwCEAANAAAAZwAAAAkAAACsAhAADQAAAGgAAAAJAAAArAIQAA0AAABpAAAACQAAAKwCEAANAAAAagAAAAkAAACsAhAADQAAAGsAAAAJAAAAcmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZFZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdAAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAACISEAAoEhAANBIQAEMSEABNEhAAVRIQAGgDEABLAAAANgEAABgAAAABAAAAAAAAALQDEABgAAAAwwIAAAkAAADqBBAAZAAAAGIAAAAVAAAAYGxlbmAgZ3JlYXRlciB0aGFuIHJlbWFpbmluZ94HEABjAAAAmAAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBjbnQgPD0gc2VsZi5saW1pdADeBxAAYwAAAJIAAAAJAAAAaW52YWxpZCB0YWcgdmFsdWU6IDBkZWxpbWl0ZWQgbGVuZ3RoIGV4Y2VlZGVkYnVmZmVyIHVuZGVyZmxvd3VuZXhwZWN0ZWQgZW5kIGdyb3VwIHRhZ3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkaW52YWxpZCB2YXJpbnRyZWN0ZWxsaXBzZURlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hEZWNvZGVkUmVjdHh5d2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzRGVjb2RlZEF1ZGlvYXVkaW9fa2V5c3RhcnRfZnJhbWVlbmRfZnJhbWVzdGFydF90aW1ldG90YWxfdGltZURlY29kZWRDb2xvcnJnRGVjb2RlZEZyYW1lYWxwaGFsYXlvdXR0cmFuc2Zvcm1jbGlwX3BhdGhzaGFwZXNEZWNvZGVkTW92aWV2ZXJzaW9ucGFyYW1zaW1hZ2Vzc3ByaXRlc2F1ZGlvc0RlY29kZWRTaGFwZWtpbmRwYXRoX2RhdGFzdHlsZURlY29kZWRMYXlvdXREZWNvZGVkUGFyYW1zdmlld19ib3hfd2lkdGh2aWV3X2JveF9oZWlnaHRmcHNmcmFtZXNEZWNvZGVkU3ByaXRlaW1hZ2Vfa2V5RGVjb2RlZEVsbGlwc2VyYWRpdXNfeHJhZGl1c195TWFwIGtleSBpcyBub3QgYSBzdHJpbmcgYW5kIGNhbm5vdCBiZSBhbiBvYmplY3Qga2V5UmdiYUNvbG9yZ3JiYVNoYXBlQXJnc2RTaGFwZVN0eWxlbWl0ZXJfbGltaXRsaW5lX2Rhc2hfaWlpZmlsbGxpbmVfY2Fwc3Ryb2tlbGluZV9kYXNoX2lsaW5lX2Rhc2hfaWlsaW5lX2pvaW5zdHJva2Vfd2lkdGhFbGxpcHNlQXJnc3h5cmFkaXVzX3hyYWRpdXNfeVJlY3RBcmdzd2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzAAAACQAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAD//////////9AWEABB6K3AAAtVY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRmYWlsZWQgdG8gZGVjb2RlIFByb3RvYnVmIG1lc3NhZ2U6IABByK7AAAulAwEAAAAnAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAoAAAAKQAAACoAAAArAAAALAAAALQDEABgAAAAOgUAADIAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADAAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAC0AxAAYAAAAEgFAABJAAAATGF5b3V0RXJyb3IA6gkQAF4AAACqAAAABQAAAGFib3J0AAAA6gkQAF4AAABuAAAACQAAAG92ZXJmbG93ugIQAGQAAACpAgAAFQAAALoCEABkAAAAvQIAAB0AAAA8AAAAPQAAAD4AAAA/AAAAQAAAAK4GEABsAAAAfAAAABEAAACuBhAAbAAAAIkAAAARAAAAZGVzY3JpcHRpb24oKSBpcyBkZXByZWNhdGVkOyB1c2UgRGlzcGxhedNycSO0gchL3WO3BlKAuaJCAAAADAAAAAQAAABDAAAAQgAAAAwAAAAEAAAARAAAAEMAAAC0GBAARQAAAEYAAABHAAAARQAAAEgAQfixwAALaQIAAAAAAAAABAAAAHQEEAB1AAAAIAAAAAkAAAB0BBAAdQAAACoAAAATAAAAGwcQAGwAAABeBgAAKAAAABsHEABsAAAAawYAADYAAAAbBxAAbAAAAGsGAAAaAAAAGwcQAGwAAABzBwAAPgBB7LLAAAupGwEBAQECAgICAwMDAwQEBAQFBQUFAAAAAAMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAgACAAIbBxAAbAAAANkHAABNAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgEBESAAgHCQYKBQsEDAMNAg4BDwAbBxAAbAAAADwGAAAtAAAAGwcQAGwAAAA8BgAAGQAAABsHEABsAAAAhAYAACAAAAABAQEABAAAABsHEABsAAAAEQIAACgAAAAAAACAAEAAwAAgAKAAYADgABAAkABQANAAMACwAHAA8AAIAIgASADIACgAqABoAOgAGACYAFgA2AA4ALgAeAD4AAQAhABEAMQAJACkAGQA5AAUAJQAVADUADQAtAB0APQADACMAEwAzAAsAKwAbADsABwAnABcANwAPAC8AHwA/AACAIIAQgDCACIAogBiAOIAEgCSAFIA0gAyALIAcgDyAAoAigBKAMoAKgCqAGoA6gAaAJoAWgDaADoAugB6APoABgCGAEYAxgAmAKYAZgDmABYAlgBWANYANgC2AHYA9gAOAI4ATgDOAC4ArgBuAO4AHgCeAF4A3gA+AL4AfgD+AAEAgQBBAMEAIQChAGEA4QARAJEAUQDRADEAsQBxAPEACQCJAEkAyQApAKkAaQDpABkAmQBZANkAOQC5AHkA+QAFAIUARQDFACUApQBlAOUAFQCVAFUA1QA1ALUAdQD1AA0AjQBNAM0ALQCtAG0A7QAdAJ0AXQDdAD0AvQB9AP0AAwCDAEMAwwAjAKMAYwDjABMAkwBTANMAMwCzAHMA8wALAIsASwDLACsAqwBrAOsAGwCbAFsA2wA7ALsAewD7AAcAhwBHAMcAJwCnAGcA5wAXAJcAVwDXADcAtwB3APcADwCPAE8AzwAvAK8AbwDvAB8AnwBfAN8APwC/AH8A/4AAgICAQIDAgCCAoIBggOCAEICQgFCA0IAwgLCAcIDwgAiAiIBIgMiAKICogGiA6IAYgJiAWIDYgDiAuIB4gPiABICEgESAxIAkgKSAZIDkgBSAlIBUgNSANIC0gHSA9IAMgIyATIDMgCyArIBsgOyAHICcgFyA3IA8gLyAfID8gAKAgoBCgMKAIoCigGKA4oASgJKAUoDSgDKAsoBygPKACoCKgEqAyoAqgKqAaoDqgBqAmoBagNqAOoC6gHqA+oAGgIaARoDGgCaApoBmgOaAFoCWgFaA1oA2gLaAdoD2gA6AjoBOgM6ALoCugG6A7oAegJ6AXoDegD6AvoB+gP6AAYCBgEGAwYAhgKGAYYDhgBGAkYBRgNGAMYCxgHGA8YAJgImASYDJgCmAqYBpgOmAGYCZgFmA2YA5gLmAeYD5gAWAhYBFgMWAJYClgGWA5YAVgJWAVYDVgDWAtYB1gPWADYCNgE2AzYAtgK2AbYDtgB2AnYBdgN2APYC9gH2A/YADgIOAQ4DDgCOAo4BjgOOAE4CTgFOA04AzgLOAc4DzgAuAi4BLgMuAK4CrgGuA64AbgJuAW4DbgDuAu4B7gPuAB4CHgEeAx4AngKeAZ4DngBeAl4BXgNeAN4C3gHeA94APgI+AT4DPgC+Ar4BvgO+AH4CfgF+A34A/gL+Af4D/GwcQAGwAAACGAgAAHQAAABsHEABsAAAAIgQAABQAAAAbBxAAbAAAACMEAAASAAAAYXNzZXJ0aW9uIGZhaWxlZDogb3V0X3BvcyArIDMgPCBvdXRfc2xpY2UubGVuKCkAGwcQAGwAAAA2BAAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IChzb3VyY2VfcG9zICsgMykgJiBvdXRfYnVmX3NpemVfbWFzayA8IG91dF9zbGljZS5sZW4oKRsHEABsAAAANwQAAA0AAAAbBxAAbAAAADkEAAAiAAAAGwcQAGwAAAA6BAAAJgAAABsHEABsAAAAOwQAACYAAAAbBxAAbAAAAEQEAAAjAAAAGwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAAEcEAAANAAAAGwcQAGwAAABIBAAAIgAAABsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABNBAAADQAAABsHEABsAAAATgQAACIAAAAbBxAAbAAAAE4EAAANAAAAGwcQAGwAAABPBAAAJgAAABsHEABsAAAATwQAAA0AAAAbBxAAbAAAACwEAAAXAAAAmwUQAG4AAABCAQAAHAAAAJsFEABuAAAAdgEAADAAAABkZXN0IGlzIG91dCBvZiBib3VuZHMAAABtXcvWLFDrY3hBpldxG4u5mrjukVEUlljPlgDo0p8SimVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQg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";let GA=null,Vs=null;function At(){return GA!==null}async function fC(){return GA?!0:Vs||(Vs=(async()=>{try{return await dC({module_or_path:Ga}),rC(),GA=ma,!0}catch(i){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",i),!1}})(),Vs)}function Fa(i){if(!GA)return null;try{return GA.inflate(i)}catch(A){return null}}function Sa(i){if(!GA)return null;try{return Na(GA.decode_svga(i))}catch(A){return null}}function Un(i,A,t){if(!GA)return null;try{return GA.build_batch_vertices(i,A,t)}catch(e){return null}}function Na(i){var A,t,e,g,I,s,n;const B=i.params,C=B?{viewBoxWidth:(A=B.view_box_width)!=null?A:0,viewBoxHeight:(t=B.view_box_height)!=null?t:0,fps:(e=B.fps)!=null?e:20,frames:(g=B.frames)!=null?g:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},Q=new Map,a=i.images;if(a instanceof Map)for(const[o,h]of a)Q.set(o,h instanceof Uint8Array?h:new Uint8Array(h));else if(a&&typeof a=="object")for(const[o,h]of Object.entries(a))Q.set(o,h instanceof Uint8Array?h:new Uint8Array(h));const r=((I=i.sprites)!=null?I:[]).map(Ra),E=((s=i.audios)!=null?s:[]).map(o=>{var h,c,f,l,u;return{audioKey:(h=o.audio_key)!=null?h:"",startFrame:(c=o.start_frame)!=null?c:0,endFrame:(f=o.end_frame)!=null?f:0,startTime:(l=o.start_time)!=null?l:0,totalTime:(u=o.total_time)!=null?u:0}});return{version:(n=i.version)!=null?n:"",params:C,images:Q,sprites:r,audios:E}}function Ra(i){var A,t;let e=null;const g=((A=i.frames)!=null?A:[]).map(I=>{var s,n,B,C,Q,a,r,E,o,h,c,f,l;const u=Array.isArray(I.shapes)?I.shapes:[];let w;return u.length===0?(e=null,w=null):((s=u[0])==null?void 0:s.kind)==="keep"?w=e:(w=Ma(u),e=w),{alpha:(n=I.alpha)!=null?n:0,layout:I.layout?{x:(B=I.layout.x)!=null?B:0,y:(C=I.layout.y)!=null?C:0,width:(Q=I.layout.width)!=null?Q:0,height:(a=I.layout.height)!=null?a:0}:null,transform:I.transform?{a:(r=I.transform.a)!=null?r:1,b:(E=I.transform.b)!=null?E:0,c:(o=I.transform.c)!=null?o:0,d:(h=I.transform.d)!=null?h:1,tx:(c=I.transform.tx)!=null?c:0,ty:(f=I.transform.ty)!=null?f:0}:null,clipPath:(l=I.clip_path)!=null?l:"",shapes:w}});return{imageKey:(t=i.image_key)!=null?t:"",frames:g}}function MB(i){var A,t,e,g;return i?{r:(A=i.r)!=null?A:0,g:(t=i.g)!=null?t:0,b:(e=i.b)!=null?e:0,a:(g=i.a)!=null?g:0}:null}function Ua(i){var A,t,e,g,I,s;const n=(A=i==null?void 0:i.line_dash)!=null?A:i==null?void 0:i.lineDash;return{fill:MB(i==null?void 0:i.fill),stroke:MB(i==null?void 0:i.stroke),strokeWidth:(e=(t=i==null?void 0:i.stroke_width)!=null?t:i==null?void 0:i.strokeWidth)!=null?e:0,lineCap:(g=i==null?void 0:i.line_cap)!=null?g:i==null?void 0:i.lineCap,lineJoin:(I=i==null?void 0:i.line_join)!=null?I:i==null?void 0:i.lineJoin,miterLimit:(s=i==null?void 0:i.miter_limit)!=null?s:i==null?void 0:i.miterLimit,lineDash:Array.isArray(n)&&n.length>0?n:void 0}}function ka(i){var A,t,e,g,I,s;return{a:(A=i==null?void 0:i.a)!=null?A:1,b:(t=i==null?void 0:i.b)!=null?t:0,c:(e=i==null?void 0:i.c)!=null?e:0,d:(g=i==null?void 0:i.d)!=null?g:1,tx:(I=i==null?void 0:i.tx)!=null?I:0,ty:(s=i==null?void 0:i.ty)!=null?s:0}}function Ma(i){var A,t,e,g,I,s,n,B,C,Q,a,r,E;if(!Array.isArray(i)||i.length===0)return null;const o=[];for(const h of i){const c=h==null?void 0:h.kind;if(c!=="path"&&c!=="rect"&&c!=="ellipse")continue;const f={kind:c,pathData:(A=h.path_data)!=null?A:h.pathData,rect:h.rect?{x:(t=h.rect.x)!=null?t:0,y:(e=h.rect.y)!=null?e:0,width:(g=h.rect.width)!=null?g:0,height:(I=h.rect.height)!=null?I:0,cornerRadius:(n=(s=h.rect.corner_radius)!=null?s:h.rect.cornerRadius)!=null?n:0}:void 0,ellipse:h.ellipse?{x:(B=h.ellipse.x)!=null?B:0,y:(C=h.ellipse.y)!=null?C:0,radiusX:(a=(Q=h.ellipse.radius_x)!=null?Q:h.ellipse.radiusX)!=null?a:0,radiusY:(E=(r=h.ellipse.radius_y)!=null?r:h.ellipse.radiusY)!=null?E:0}:void 0,style:Ua(h.style),transform:ka(h.transform)};o.push(f)}return o.length>0?o:null}var xa=Object.defineProperty,ba=(i,A,t)=>A in i?xa(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,kn=(i,A,t)=>ba(i,typeof A!="symbol"?A+"":A,t);class uC{constructor(){kn(this,"floatPoolA",null),kn(this,"floatPoolB",null),kn(this,"uint32Pool",null)}getFloat32(A){var t,e;if(!this.floatPoolA||this.floatPoolA.length<A){const g=Math.max(A,((e=(t=this.floatPoolA)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolA=new Float32Array(g)}return this.floatPoolA}getFloat32B(A){var t,e;if(!this.floatPoolB||this.floatPoolB.length<A){const g=Math.max(A,((e=(t=this.floatPoolB)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolB=new Float32Array(g)}return this.floatPoolB}getUint32(A){var t,e;if(!this.uint32Pool||this.uint32Pool.length<A){const g=Math.max(A,((e=(t=this.uint32Pool)==null?void 0:t.length)!=null?e:0)*2,1024);this.uint32Pool=new Uint32Array(g)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function vA(i,A,t,e,g,I){const s=1/(i-A),n=1/(t-e),B=1/(g-I),C=new Float32Array(16);return C[0]=-2*s,C[5]=-2*n,C[10]=2*B,C[12]=(i+A)*s,C[13]=(e+t)*n,C[14]=(g+I)*B,C[15]=1,C}function $s(i,A,t){return i+(A-i)*t}function AB(i,A,t){return i<A?A:i>t?t:i}let Ya=0;function wC(){return`gift_${++Ya}_${Date.now().toString(36)}`}const rn=8;function xB(i){if(!i||i.trim().length===0)return[];const A=[];let t=[],e=0,g=0,I=0,s=0,n=0,B=0;const C=La(i);let Q=0;function a(){return Q<C.length?parseFloat(C[Q++]):0}for(;Q<C.length;)switch(C[Q++]){case"M":for(t.length>0&&(A.push(t),t=[]),e=a(),g=a(),I=e,s=g,t.push({x:e,y:g});Q<C.length&&!isNaN(parseFloat(C[Q]));)e=a(),g=a(),t.push({x:e,y:g});break;case"m":for(t.length>0&&(A.push(t),t=[]),e+=a(),g+=a(),I=e,s=g,t.push({x:e,y:g});Q<C.length&&!isNaN(parseFloat(C[Q]));)e+=a(),g+=a(),t.push({x:e,y:g});break;case"L":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e=a(),g=a(),t.push({x:e,y:g});break;case"l":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e+=a(),g+=a(),t.push({x:e,y:g});break;case"H":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e=a(),t.push({x:e,y:g});break;case"h":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e+=a(),t.push({x:e,y:g});break;case"V":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)g=a(),t.push({x:e,y:g});break;case"v":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)g+=a(),t.push({x:e,y:g});break;case"C":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=a(),o=a(),h=a(),c=a(),f=a(),l=a();zs(t,e,g,E,o,h,c,f,l),n=h,B=c,e=f,g=l}break}case"c":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=e+a(),o=g+a(),h=e+a(),c=g+a(),f=e+a(),l=g+a();zs(t,e,g,E,o,h,c,f,l),n=h,B=c,e=f,g=l}break}case"S":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=2*e-n,o=2*g-B,h=a(),c=a(),f=a(),l=a();zs(t,e,g,E,o,h,c,f,l),n=h,B=c,e=f,g=l}break}case"s":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=2*e-n,o=2*g-B,h=e+a(),c=g+a(),f=e+a(),l=g+a();zs(t,e,g,E,o,h,c,f,l),n=h,B=c,e=f,g=l}break}case"Q":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=a(),o=a(),h=a(),c=a();bB(t,e,g,E,o,h,c),n=E,B=o,e=h,g=c}break}case"q":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=e+a(),o=g+a(),h=e+a(),c=g+a();bB(t,e,g,E,o,h,c),n=E,B=o,e=h,g=c}break}case"Z":case"z":e=I,g=s,t.length>0&&(A.push(t),t=[]);break}return t.length>0&&A.push(t),A}function La(i){return i.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function zs(i,A,t,e,g,I,s,n,B){for(let C=1;C<=rn;C++){const Q=C/rn,a=1-Q,r=a*a,E=Q*Q;i.push({x:r*a*A+3*r*Q*e+3*a*E*I+E*Q*n,y:r*a*t+3*r*Q*g+3*a*E*s+E*Q*B})}}function bB(i,A,t,e,g,I,s){for(let n=1;n<=rn;n++){const B=n/rn,C=1-B;i.push({x:C*C*A+2*C*B*e+B*B*I,y:C*C*t+2*C*B*g+B*B*s})}}function YB(i){const A=i.length;if(A<3)return[];if(A===3)return[0,1,2];const t=[],e=Array.from({length:A},(n,B)=>B),I=_a(i)>0;let s=A*A;for(;e.length>3&&s-- >0;){let n=!1;const B=e.length;for(let C=0;C<B;C++){const Q=e[(C-1+B)%B],a=e[C],r=e[(C+1)%B],E=i[Q],o=i[a],h=i[r],c=(o.x-E.x)*(h.y-E.y)-(o.y-E.y)*(h.x-E.x);if(!(I?c>0:c<0))continue;let l=!1;for(let u=0;u<B;u++)if(!(u===(C-1+B)%B||u===C||u===(C+1)%B)&&Ja(i[e[u]],E,o,h)){l=!0;break}if(!l){I?t.push(Q,a,r):t.push(Q,r,a),e.splice(C,1),n=!0;break}}if(!n)break}if(e.length===3){const[n,B,C]=e;I?t.push(n,B,C):t.push(n,C,B)}return t}function _a(i){let A=0;const t=i.length;for(let e=0;e<t;e++){const g=(e+1)%t;A+=i[e].x*i[g].y,A-=i[g].x*i[e].y}return A*.5}function Ja(i,A,t,e){const g=Mn(i,A,t),I=Mn(i,t,e),s=Mn(i,e,A),n=g<0||I<0||s<0,B=g>0||I>0||s>0;return!(n&&B)}function Mn(i,A,t){return(i.x-t.x)*(A.y-t.y)-(A.x-t.x)*(i.y-t.y)}function TA(i){var A;return(A=i.options.objectFit)!=null?A:"contain"}var Ha=Object.defineProperty,Ka=(i,A,t)=>A in i?Ha(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,Y=(i,A,t)=>Ka(i,typeof A!="symbol"?A+"":A,t);const xn=2048,oB=class tB{constructor(){Y(this,"pool",new uC),Y(this,"vertexBufHandles",[]),Y(this,"indexBufHandles",[]),Y(this,"clipVertBufHandles",[]),Y(this,"clipIdxBufHandles",[]),Y(this,"clipSpriteVertBufHandles",[]),Y(this,"clipSpriteIdxBufHandles",[]),Y(this,"batchDrawCursor",0),Y(this,"clipMaskDrawCursor",0),Y(this,"clipSpriteDrawCursor",0),Y(this,"canvasWidth",0),Y(this,"canvasHeight",0),Y(this,"projCacheW",0),Y(this,"projCacheH",0),Y(this,"projCache",null),Y(this,"clipMeshCache",new Map),Y(this,"clipTransformedVertsScratch",null),Y(this,"clipFrameDataScratch",new Float32Array(kA)),Y(this,"instancedFrameDataScratch",new Float32Array(xn*kA)),Y(this,"clipSpriteVertsScratch",null),Y(this,"clipSpriteIndicesScratch",null),Y(this,"shapeVertsScratch",null),Y(this,"instancedQuadVB",null),Y(this,"instancedQuadIB",null),Y(this,"whiteTexture",null),Y(this,"shapeMeshCache",new WeakMap)}beginFrame(A){this.batchDrawCursor=0,this.clipMaskDrawCursor=0,this.clipSpriteDrawCursor=0;const t=A.canvas.width,e=A.canvas.height;this.canvasWidth=t,this.canvasHeight=e}flush(A,t){this.beginFrame(A),this.drawSlots(A,t.values())}drawSlot(A,t){t.type!=="svga"||!this.hasRenderableSVGA(t)||t.state!=="playing"&&t.state!=="fly"||this.flushGroup(A,[t])}drawSlots(A,t){const e=[];for(const g of t)g.type!=="svga"||!this.hasRenderableSVGA(g)||g.state!=="playing"&&g.state!=="fly"||e.push(g);e.length!==0&&this.flushGroup(A,e)}flushGroup(A,t){if(t.length===0)return;const e=this.getProjection(),g=[];let I=null;for(const s of t){const n=s.videoEntity,B=n.params.viewBoxWidth,C=n.params.viewBoxHeight,Q=s.width/B,a=s.height/C,r=TA(s);let E,o,h,c;if(r==="fill")E=Q*s.scale,o=a*s.scale,h=B*E,c=C*o;else{E=o=Math.min(Q,a)*s.scale;const l=Math.min(Q,a);h=B*l*s.scale,c=C*l*s.scale}g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),A.setScissor(s.x,s.y,Math.min(h,s.width),Math.min(c,s.height));for(const f of n.sprites){if(s.currentFrame<0||s.currentFrame>=f.frames.length)continue;const l=f.frames[s.currentFrame];if(l.alpha<.05)continue;const u=this.resolveSpriteTextureBinding(s,f.imageKey),w=!!l.shapes&&l.shapes.length>0;if(!u&&!w)continue;const y=l.clipPath,p=y&&y.length>0?this.getClipMesh(y):null,m=u?{slot:s,sprite:f,frame:l,binding:u,sx:E,sy:o}:null;if(w){g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),m&&(p&&p.indices.length>0?this.drawClippedSprite(A,m,p,e):this.drawSingleSprite(A,m,e)),this.drawShapeFrame(A,s,l,E,o,p,e);continue}if(!m)continue;const N=!m.binding.override&&(!I||I.id===m.binding.handle.id);p&&p.indices.length>0?(g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),this.drawClippedSprite(A,m,p,e)):N?(g.push(m),I=m.binding.handle,g.length>=xn&&(this.drawBatch(A,g,I,e),g.length=0,I=null)):(g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),this.drawSingleSprite(A,m,e))}}g.length>0&&this.drawBatch(A,g,I,e),A.resetScissor()}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=vA(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,t,e,g){const I=Math.min(t.length,xn);if(I<1)return;if(A.type==="webgl2"||A.type==="webgpu"){this.drawBatchInstancedWebGL(A,t,I,e,g);return}const s=this.pool.getFloat32(I*kA);for(let f=0;f<I;f++){const{slot:l,frame:u,binding:w,sx:y,sy:p}=t[f];this.packFrameData(s,f,l,u,w,y,p)}const n=I*PA*fA,B=I*Gs,C=this.pool.getFloat32B(n),Q=this.pool.getUint32(B),a=new Float32Array(s.buffer,0,I*kA),r=new Float32Array(C.buffer,0,n),E=new Uint32Array(Q.buffer,0,B);(!At()||Un(a,r,E)===null)&&Xs(a,r,E);const o=this.batchDrawCursor++,h=this.ensureVertexBuffer(A,o,r),c=this.ensureIndexBuffer(A,o,E);A.draw({shader:"svga-batch-premul",vertexBuffer:h,indexBuffer:c,indexCount:B,textures:[e],uniforms:{u_projection:g,u_atlas:0}})}drawBatchInstancedWebGL(A,t,e,g,I){this.ensureInstancedQuadBuffers(A);const s=this.instancedFrameDataScratch;for(let n=0;n<e;n++){const{slot:B,frame:C,binding:Q,sx:a,sy:r}=t[n];this.packFrameData(s,n,B,C,Q,a,r)}A.draw({shader:"svga-instanced-premul",vertexBuffer:this.instancedQuadVB,indexBuffer:this.instancedQuadIB,indexCount:6,instanceCount:e,instanceData:s.subarray(0,e*kA),textures:[g],uniforms:{u_projection:I,u_atlas:0}})}drawClippedSprite(A,t,e,g){var I,s,n,B,C,Q;const{slot:a,frame:r,binding:E,sx:o,sy:h}=t,c=r.transform,f=((I=c==null?void 0:c.a)!=null?I:1)*o,l=((s=c==null?void 0:c.b)!=null?s:0)*h,u=((n=c==null?void 0:c.c)!=null?n:0)*o,w=((B=c==null?void 0:c.d)!=null?B:1)*h,y=((C=c==null?void 0:c.tx)!=null?C:0)*o+a.x,p=((Q=c==null?void 0:c.ty)!=null?Q:0)*h+a.y,m=e.vertices;(!this.clipTransformedVertsScratch||this.clipTransformedVertsScratch.length<m.length)&&(this.clipTransformedVertsScratch=new Float32Array(m.length));const N=this.clipTransformedVertsScratch;for(let V=0;V<m.length;V+=2){const DA=m[V],rA=m[V+1];N[V]=f*DA+u*rA+y,N[V+1]=l*DA+w*rA+p}const R=this.clipMaskDrawCursor++,S=this.ensureClipVertexBuffer(A,R,N.subarray(0,m.length)),q=this.ensureClipIndexBuffer(A,R,e.indices),L={shader:"clip-mask",vertexBuffer:S,indexBuffer:q,indexCount:e.indices.length,textures:[],uniforms:{u_projection:g},stencil:"write"};A.draw(L);const P=this.clipFrameDataScratch;this.packFrameData(P,0,a,r,E,o,h);const k=PA*fA,K=Gs;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<k)&&(this.clipSpriteVertsScratch=new Float32Array(k)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<K)&&(this.clipSpriteIndicesScratch=new Uint32Array(K));const x=this.clipSpriteVertsScratch,v=this.clipSpriteIndicesScratch;(!At()||Un(P,x,v)===null)&&Xs(P,x,v);const $=this.clipSpriteDrawCursor++,W=this.ensureClipSpriteVertexBuffer(A,$,x.subarray(0,k)),LA=this.ensureClipSpriteIndexBuffer(A,$,v.subarray(0,K)),os={shader:"svga-batch-premul",vertexBuffer:W,indexBuffer:LA,indexCount:K,textures:[E.handle],uniforms:{u_projection:g,u_atlas:0},stencil:"test"};A.draw(os);const b={shader:"clip-mask",vertexBuffer:S,indexBuffer:q,indexCount:e.indices.length,textures:[],uniforms:{u_projection:g},stencil:"clear"};A.draw(b)}drawSingleSprite(A,t,e){const g=this.clipFrameDataScratch;this.packFrameData(g,0,t.slot,t.frame,t.binding,t.sx,t.sy);const I=PA*fA,s=Gs;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<I)&&(this.clipSpriteVertsScratch=new Float32Array(I)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<s)&&(this.clipSpriteIndicesScratch=new Uint32Array(s));const n=this.clipSpriteVertsScratch,B=this.clipSpriteIndicesScratch;(!At()||Un(g,n,B)===null)&&Xs(g,n,B);const C=this.clipSpriteDrawCursor++,Q=this.ensureClipSpriteVertexBuffer(A,C,n.subarray(0,I)),a=this.ensureClipSpriteIndexBuffer(A,C,B.subarray(0,s));A.draw({shader:"svga-batch-premul",vertexBuffer:Q,indexBuffer:a,indexCount:s,textures:[t.binding.handle],uniforms:{u_projection:e,u_atlas:0}})}packFrameData(A,t,e,g,I,s,n){var B,C,Q,a,r,E,o,h,c,f,l,u;const w=g.layout,y=g.transform,p=I.rect,m=I.override;let N=(C=(B=w==null?void 0:w.width)!=null?B:m==null?void 0:m.logicalWidth)!=null?C:0,R=(a=(Q=w==null?void 0:w.height)!=null?Q:m==null?void 0:m.logicalHeight)!=null?a:0,S=0,q=0;if((m==null?void 0:m.mode)==="dynamic"){const W=(r=w==null?void 0:w.width)!=null?r:m.logicalWidth,LA=(E=w==null?void 0:w.height)!=null?E:m.logicalHeight;N=m.logicalWidth,R=m.logicalHeight,S=Math.max(0,(W-N)*.5),q=Math.max(0,(LA-R)*.5)}const L=t*kA,P=((o=y==null?void 0:y.a)!=null?o:1)*s,k=((h=y==null?void 0:y.b)!=null?h:0)*n,K=((c=y==null?void 0:y.c)!=null?c:0)*s,x=((f=y==null?void 0:y.d)!=null?f:1)*n;let v=((l=y==null?void 0:y.tx)!=null?l:0)*s+P*S+K*q+e.x,$=((u=y==null?void 0:y.ty)!=null?u:0)*n+k*S+x*q+e.y;A[L]=N,A[L+1]=R,A[L+2]=P,A[L+3]=k,A[L+4]=K,A[L+5]=x,A[L+6]=v,A[L+7]=$,A[L+8]=g.alpha,A[L+9]=p.x,A[L+10]=p.y,A[L+11]=p.x+p.w,A[L+12]=p.y+p.h}resolveSpriteTextureBinding(A,t){var e,g,I,s,n;const B=(g=(e=A.svgaSlotTextures)==null?void 0:e.get(t))!=null?g:null;if(B)return{handle:B.texture,rect:{x:0,y:0,w:1,h:1},override:B};const C=A.videoEntity,Q=C.atlasRects.get(t),a=(I=Q==null?void 0:Q.textureIndex)!=null?I:0,r=(n=(s=C.atlasTextureHandles)==null?void 0:s[a])!=null?n:C.atlasTextureHandle;return!Q||!r?null:{handle:r,rect:Q,override:null}}drawShapeFrame(A,t,e,g,I,s,n){var B,C,Q,a,r,E,o,h,c,f,l,u,w;const y=this.getShapeMesh((B=e.shapes)!=null?B:null);if(!y||y.indices.length===0)return;const p=this.getWhiteTexture(A),m=e.transform,N=((C=m==null?void 0:m.a)!=null?C:1)*g,R=((Q=m==null?void 0:m.b)!=null?Q:0)*I,S=((a=m==null?void 0:m.c)!=null?a:0)*g,q=((r=m==null?void 0:m.d)!=null?r:1)*I,L=((E=m==null?void 0:m.tx)!=null?E:0)*g+t.x,P=((o=m==null?void 0:m.ty)!=null?o:0)*I+t.y,k=y.vertices,K=k.length/6*fA;(!this.shapeVertsScratch||this.shapeVertsScratch.length<K)&&(this.shapeVertsScratch=new Float32Array(K));const x=this.shapeVertsScratch;for(let b=0,V=0;b<k.length;b+=6,V+=fA){const DA=k[b],rA=k[b+1];x[V]=N*DA+S*rA+L,x[V+1]=R*DA+q*rA+P,x[V+2]=0,x[V+3]=k[b+2],x[V+4]=k[b+3],x[V+5]=k[b+4],x[V+6]=k[b+5]*e.alpha,x[V+7]=.5,x[V+8]=.5}let v=null,$=null;if(s&&s.indices.length>0){const b=e.transform,V=((h=b==null?void 0:b.a)!=null?h:1)*g,DA=((c=b==null?void 0:b.b)!=null?c:0)*I,rA=((f=b==null?void 0:b.c)!=null?f:0)*g,Dn=((l=b==null?void 0:b.d)!=null?l:1)*I,yn=((u=b==null?void 0:b.tx)!=null?u:0)*g+t.x,pn=((w=b==null?void 0:b.ty)!=null?w:0)*I+t.y,CA=s.vertices;(!this.clipTransformedVertsScratch||this.clipTransformedVertsScratch.length<CA.length)&&(this.clipTransformedVertsScratch=new Float32Array(CA.length));const oA=this.clipTransformedVertsScratch;for(let SA=0;SA<CA.length;SA+=2){const vs=CA[SA],Ts=CA[SA+1];oA[SA]=V*vs+rA*Ts+yn,oA[SA+1]=DA*vs+Dn*Ts+pn}const Ks=this.clipMaskDrawCursor++;v=this.ensureClipVertexBuffer(A,Ks,oA.subarray(0,CA.length)),$=this.ensureClipIndexBuffer(A,Ks,s.indices),A.draw({shader:"clip-mask",vertexBuffer:v,indexBuffer:$,indexCount:s.indices.length,textures:[],uniforms:{u_projection:n},stencil:"write"})}const W=this.clipSpriteDrawCursor++,LA=this.ensureClipSpriteVertexBuffer(A,W,x.subarray(0,K)),os=this.ensureClipSpriteIndexBuffer(A,W,y.indices);A.draw({shader:"svga-batch-premul",vertexBuffer:LA,indexBuffer:os,indexCount:y.indices.length,textures:[p],uniforms:{u_projection:n,u_atlas:0},stencil:v?"test":"none"}),v&&$&&s&&A.draw({shader:"clip-mask",vertexBuffer:v,indexBuffer:$,indexCount:s.indices.length,textures:[],uniforms:{u_projection:n},stencil:"clear"})}hasAtlasTexture(A){var t;const e=A.videoEntity;return e?!!e.atlasTextureHandle||!!((t=e.atlasTextureHandles)!=null&&t.length):!1}hasRenderableSVGA(A){if(this.hasAtlasTexture(A))return!0;const t=A.videoEntity;return t!=null&&t.sprites?t.sprites.some(e=>e.frames.some(g=>!!g.shapes&&g.shapes.length>0)):!1}getWhiteTexture(A){return this.whiteTexture?this.whiteTexture:(this.whiteTexture=A.createTexture(new Uint8Array([255,255,255,255]).buffer,{width:1,height:1,filter:"nearest"}),this.whiteTexture)}getShapeMesh(A){var t;if(!A||A.length===0)return null;if(this.shapeMeshCache.has(A))return(t=this.shapeMeshCache.get(A))!=null?t:null;const e=[],g=[];for(const s of A)this.appendShape(s,e,g);const I=e.length>0&&g.length>0?{vertices:new Float32Array(e),indices:new Uint32Array(g)}:null;return this.shapeMeshCache.set(A,I),I}appendShape(A,t,e){const g=A.style.fill,I=A.style.stroke,s=this.buildShapeSubPaths(A);for(const n of s){if(n.length<2)continue;const B=n.map(C=>({x:A.transform.a*C.x+A.transform.c*C.y+A.transform.tx,y:A.transform.b*C.x+A.transform.d*C.y+A.transform.ty}));g&&g.a>0&&B.length>=3&&this.appendFill(B,g,t,e),I&&I.a>0&&A.style.strokeWidth>.01&&this.appendStroke(B,I,A.style.strokeWidth,t,e)}}buildShapeSubPaths(A){var t;if(A.kind==="path")return xB((t=A.pathData)!=null?t:"").map(e=>this.cleanupPoints(e)).filter(e=>e.length>=2);if(A.kind==="rect"&&A.rect){const e=A.rect;return[[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height}]]}if(A.kind==="ellipse"&&A.ellipse){const e=A.ellipse,g=[],I=40;for(let s=0;s<I;s++){const n=s/I*Math.PI*2;g.push({x:e.x+Math.cos(n)*e.radiusX,y:e.y+Math.sin(n)*e.radiusY})}return[g]}return[]}appendFill(A,t,e,g){const I=this.cleanupPoints(A);if(I.length<3)return;const s=e.length/6;for(const B of I)e.push(B.x,B.y,this.clamp01(t.r),this.clamp01(t.g),this.clamp01(t.b),this.clamp01(t.a));const n=YB(I);if(n.length>=(I.length-2)*3)for(const B of n)g.push(s+B);else for(let B=1;B<I.length-1;B++)g.push(s,s+B,s+B+1)}appendStroke(A,t,e,g,I){A=this.cleanupPoints(A);const s=e*.5;for(let n=0;n<A.length;n++){const B=A[n],C=A[(n+1)%A.length],Q=C.x-B.x,a=C.y-B.y,r=Math.hypot(Q,a);if(r<=1e-4)continue;const E=-a/r*s,o=Q/r*s,h=g.length/6,c=this.clamp01(t.r),f=this.clamp01(t.g),l=this.clamp01(t.b),u=this.clamp01(t.a);g.push(B.x-E,B.y-o,c,f,l,u),g.push(B.x+E,B.y+o,c,f,l,u),g.push(C.x+E,C.y+o,c,f,l,u),g.push(C.x-E,C.y-o,c,f,l,u),I.push(h,h+1,h+2,h+2,h+3,h)}}clamp01(A){return Math.max(0,Math.min(1,Number.isFinite(A)?A:0))}cleanupPoints(A){if(A.length===0)return[];const t=[],e=1e-4;let g=null;for(const I of A){if(g){const s=I.x-g.x,n=I.y-g.y;if(s*s+n*n<=e)continue}t.push(I),g=I}if(t.length>2){const I=t[0],s=t[t.length-1],n=I.x-s.x,B=I.y-s.y;n*n+B*B<=e&&t.pop()}return t}getClipMesh(A){var t;if(this.clipMeshCache.has(A))return(t=this.clipMeshCache.get(A))!=null?t:null;const e=xB(A);if(e.length===0)return this.clipMeshCache.set(A,null),null;const g=[],I=[];for(const n of e){if(n.length<3)continue;const B=g.length/2;for(const Q of n)g.push(Q.x,Q.y);const C=YB(n);for(const Q of C)I.push(Q+B)}if(I.length===0)return this.clipMeshCache.set(A,null),null;const s={vertices:new Float32Array(g),indices:new Uint32Array(I)};return this.clipMeshCache.set(A,s),s}ensureVertexBuffer(A,t,e){const g=this.vertexBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"vertex");return this.vertexBufHandles[t]=I,I}}ensureIndexBuffer(A,t,e){const g=this.indexBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"index");return this.indexBufHandles[t]=I,I}}ensureClipVertexBuffer(A,t,e){const g=this.clipVertBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"vertex");return this.clipVertBufHandles[t]=I,I}}ensureClipIndexBuffer(A,t,e){const g=this.clipIdxBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"index");return this.clipIdxBufHandles[t]=I,I}}ensureClipSpriteVertexBuffer(A,t,e){const g=this.clipSpriteVertBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"vertex");return this.clipSpriteVertBufHandles[t]=I,I}}ensureClipSpriteIndexBuffer(A,t,e){const g=this.clipSpriteIdxBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"index");return this.clipSpriteIdxBufHandles[t]=I,I}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(tB.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(tB.INSTANCED_QUAD_INDICES,"index"))}destroy(A){for(const t of this.vertexBufHandles)A.deleteBuffer(t);for(const t of this.indexBufHandles)A.deleteBuffer(t);for(const t of this.clipVertBufHandles)A.deleteBuffer(t);for(const t of this.clipIdxBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteVertBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteIdxBufHandles)A.deleteBuffer(t);this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.whiteTexture&&A.deleteTexture(this.whiteTexture),this.pool.destroy(),this.clipMeshCache.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipVertBufHandles=[],this.clipIdxBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.whiteTexture=null,this.projCache=null}};Y(oB,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));Y(oB,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let DC=oB;var va=Object.defineProperty,Ta=(i,A,t)=>A in i?va(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,hA=(i,A,t)=>Ta(i,typeof A!="symbol"?A+"":A,t);const qa=4,Va=128*1024*1024,za=2048*1024*1024,Za="gift-stage-resource-cache",Wa=2,QA="resources",bn="byUpdatedAt",ja=3e4;class Oa{constructor(A){hA(this,"maxConcurrent"),hA(this,"active",0),hA(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){this.active>=this.maxConcurrent&&await new Promise(t=>{this.queue.push(t)}),this.active++;try{return await A()}finally{this.active--,this.drain()}}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();A==null||A()}}}function Xa(){return typeof indexedDB!="undefined"}function Ss(i){return i.length*2}function Pa(i){let A=0;for(const t of Object.values(i.images))A+=t.byteLength;return A+=Ss(JSON.stringify({version:i.version,params:i.params,sprites:i.sprites,audios:i.audios})),A}function Yn(i){return typeof i=="string"?Ss(i):i.byteLength}class $a{constructor(){hA(this,"limiter",new Oa(qa)),hA(this,"pending",new Map),hA(this,"memory",new Map),hA(this,"memoryBytes",0),hA(this,"maxMemoryBytes",Va),hA(this,"maxPersistentBytes",za),hA(this,"dbPromise",null),hA(this,"persistentTrimPromise",null)}configure(A){(A==null?void 0:A.maxConcurrent)!=null&&this.limiter.setMaxConcurrent(A.maxConcurrent),(A==null?void 0:A.maxMemoryBytes)!=null&&A.maxMemoryBytes>0&&(this.maxMemoryBytes=A.maxMemoryBytes,this.trimMemory()),(A==null?void 0:A.maxPersistentBytes)!=null&&A.maxPersistentBytes>0&&(this.maxPersistentBytes=A.maxPersistentBytes,this.schedulePersistentTrim())}runLimited(A){return this.limiter.run(A)}async fetchArrayBuffer(A,t){const e=`ab:${A}`,g=this.getMemory(e,"arrayBuffer");if(g)return g.slice(0);const I=await this.getPersistent(e,"arrayBuffer");return I?(this.setMemory(e,"arrayBuffer",I,I.byteLength),I.slice(0)):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.arrayBuffer();return this.setMemory(e,"arrayBuffer",n,n.byteLength),this.setPersistent(e,"arrayBuffer",n.slice(0)),n.slice(0)}))}async fetchText(A,t){const e=`text:${A}`,g=this.getMemory(e,"text");if(g!=null)return g;const I=await this.getPersistent(e,"text");return I!=null?(this.setMemory(e,"text",I,Ss(I)),I):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.text();return this.setMemory(e,"text",n,Ss(n)),this.setPersistent(e,"text",n),n}))}async fetchJSON(A,t){const e=`json:${A}`,g=this.getMemory(e,"json");if(g!=null)return g;const I=await this.fetchText(A,t),s=JSON.parse(I);return this.setMemory(e,"json",s,Ss(I)),s}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,t){this.setMemory(A,"svga-payload",t,Pa(t))}getMemoryValue(A,t){return this.getMemory(A,t)}setMemoryValue(A,t,e,g){this.setMemory(A,t,e,g)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,t){return this.setPersistent(A,"arrayBuffer",t)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,t){const e=this.pending.get(A);if(e)return e;const g=t().finally(()=>{this.pending.delete(A)});return this.pending.set(A,g),g}getMemory(A,t){const e=this.memory.get(A);return!e||e.kind!==t?null:(this.memory.delete(A),this.memory.set(A,e),e.value)}setMemory(A,t,e,g){const I=this.memory.get(A);I&&(this.memoryBytes-=I.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:t,size:Math.max(0,g),value:e}),this.memoryBytes+=Math.max(0,g),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const t=this.memory.get(A);if(!t)break;this.memoryBytes-=t.size,this.memory.delete(A)}}async openDb(){return Xa()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const t=indexedDB.open(Za,Wa);t.onupgradeneeded=()=>{const e=t.result;let g;e.objectStoreNames.contains(QA)?g=t.transaction.objectStore(QA):g=e.createObjectStore(QA,{keyPath:"key"}),g.indexNames.contains(bn)||g.createIndex(bn,"updatedAt",{unique:!1})},t.onsuccess=()=>A(t.result),t.onerror=()=>A(null),t.onblocked=()=>A(null)}catch(t){A(null)}})),this.dbPromise):null}async getPersistent(A,t){const e=await this.openDb();return e?new Promise(g=>{try{const I=e.transaction(QA,"readonly");I.onerror=()=>g(null),I.onabort=()=>g(null);const n=I.objectStore(QA).get(A);n.onsuccess=()=>{const B=n.result;if(!B||B.kind!==t){g(null);return}const C=B.sizeBytes||Yn(B.value);if(Date.now()-B.updatedAt>=ja&&this.touchPersistent({...B,sizeBytes:C,updatedAt:Date.now()}),t==="arrayBuffer"){g(B.value.slice(0));return}g(B.value)},n.onerror=()=>g(null)}catch(I){g(null)}}):null}async setPersistent(A,t,e){const g=await this.openDb();if(!g)return;const I=Yn(e);await new Promise(s=>{try{const n=g.transaction(QA,"readwrite");n.onerror=()=>s(),n.onabort=()=>s();const C=n.objectStore(QA).put({key:A,kind:t,value:e,sizeBytes:I,updatedAt:Date.now()});C.onsuccess=()=>s(),C.onerror=()=>s()}catch(n){s()}}),this.schedulePersistentTrim()}async touchPersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const g=t.transaction(QA,"readwrite");g.onerror=()=>e(),g.onabort=()=>e();const s=g.objectStore(QA).put(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(g){e()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(t=>{try{const e=A.transaction(QA,"readwrite");e.oncomplete=()=>t(),e.onerror=()=>t(),e.onabort=()=>t();const g=e.objectStore(QA),I=g.index(bn),s=[];let n=0;const B=I.openCursor();B.onsuccess=()=>{const C=B.result;if(C){const a=C.value,r=a.sizeBytes||Yn(a.value);n+=r,s.push({key:a.key,sizeBytes:r}),C.continue();return}if(n<=this.maxPersistentBytes)return;let Q=n;for(const a of s){if(Q<=this.maxPersistentBytes)break;g.delete(a.key),Q-=a.sizeBytes}},B.onerror=()=>t()}catch(e){t()}})}async deletePersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const g=t.transaction(QA,"readwrite");g.onerror=()=>e(),g.onabort=()=>e();const s=g.objectStore(QA).delete(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(g){e()}})}}const lA=new $a;function AE(i){lA.configure(i)}function eB(i){return lA.runLimited(i)}function Ys(i,A){return lA.fetchArrayBuffer(i,A)}function tE(i,A){return lA.fetchJSON(i,A)}function hB(i){return lA.getSVGAWorkerPayload(i)}function LB(i,A){lA.setSVGAWorkerPayload(i,A)}function eE(i,A){return lA.getMemoryValue(i,A)}function yC(i,A,t,e){lA.setMemoryValue(i,A,t,e)}function iE(i){return lA.getPersistedArrayBuffer(i)}function gE(i,A){return lA.setPersistedArrayBuffer(i,A)}function IE(i){return lA.deletePersistedValue(i)}async function iB(i){const A=typeof i=="string"?await tE(i):i;if(!A.info)throw new Error("VAP config missing info");if(!A.info.rgbFrame||!A.info.aFrame)throw new Error("VAP config missing rgbFrame or aFrame");return A}function tt(i){const[,,A,t]=i.rgbFrame,e=i.w>0?i.w:A,g=i.h>0?i.h:t;return e>0&&g>0?{w:e,h:g}:{w:i.videoW,h:i.videoH}}function Zs(i,A,t){const[e,g,I,s]=i;return{left:e/A,right:(e+I)/A,top:(t-g)/t,bottom:(t-g-s)/t}}var sE=Object.defineProperty,nE=(i,A,t)=>A in i?sE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,aA=(i,A,t)=>nE(i,typeof A!="symbol"?A+"":A,t);class pC{constructor(){aA(this,"frameInfo",new Map),aA(this,"pending",new Set),aA(this,"lastHandle",new Map),aA(this,"started",new Set),aA(this,"firstUploaded",new Set),aA(this,"forceTimeFallback",new Set),aA(this,"lastArmAt",new Map),aA(this,"lastCallbackAt",new Map),aA(this,"lastProgressAt",new Map),aA(this,"lastRecoveryAt",new Map),aA(this,"stallLogged",new Set),aA(this,"stagnationLogged",new Set),aA(this,"lastTimeFallback",new Map)}preUpload(A,t){const e=t.currentTime;if(typeof t.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),typeof t.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",t),!0;const Q=this.consumeTimeAdvance(A,e);if(Q)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",t));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!t.paused&&!t.ended){const a=this.lastProgressAt.get(A);a!==void 0&&performance.now()-a>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",t,{lastProgressAgeMs:Math.round(performance.now()-a)}))}return Q}this.ensureRvf(A,t);const g=performance.now(),I=this.lastCallbackAt.get(A),s=this.lastArmAt.get(A),n=I!=null?I:s,B=this.lastTimeFallback.get(A),C=B!==void 0&&Math.abs(e-B)>1e-4;return this.firstUploaded.has(A)&&n!==void 0&&g-n>500&&!t.paused&&!t.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",t,{stallAgeMs:Math.round(g-n),lastCallbackAgeMs:I!==void 0?Math.round(g-I):null,lastArmAgeMs:s!==void 0?Math.round(g-s):null,timeAdvanced:C})),this.tryRecoverStalledPlayback(A,t,e,g),this.started.delete(A),this.ensureRvf(A,t),C)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",t,{stallAgeMs:Math.round(g-n)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,e),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",t)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,t){if(this.started.has(A))return;this.started.add(A);const e=(g,I)=>{this.frameInfo.set(A,I),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A);try{this.lastArmAt.set(A,performance.now());const s=t.requestVideoFrameCallback(e);this.lastHandle.set(A,s)}catch(s){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",t)}};try{this.lastArmAt.set(A,performance.now());const g=t.requestVideoFrameCallback(e);this.lastHandle.set(A,g)}catch(g){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",t)}}consumeTimeAdvance(A,t){const e=this.lastTimeFallback.get(A);return e===void 0||Math.abs(t-e)>1e-4?(this.lastTimeFallback.set(A,t),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,t,e,g){if(t.paused||t.ended||t.seeking)return;const I=this.lastRecoveryAt.get(A);if(I!==void 0&&g-I<1500)return;this.lastRecoveryAt.set(A,g);const s=Number.isFinite(t.duration)?t.duration:NaN,n=Number.isFinite(s)&&s>0,B=n?Math.min(Math.max(0,s-.001),e+.001):e;try{n&&B>e&&(t.currentTime=B)}catch(C){}try{const C=t.play();C&&typeof C.catch=="function"&&C.catch(()=>{})}catch(C){}this.debugWarn(A,"attempting stalled video recovery",t,{currentTime:e,nudgedTime:B,readyState:t.readyState})}debugInfo(A,t,e,g){console.info("[GiftStage:VideoGate]",t,this.snapshot(A,e,g))}debugWarn(A,t,e,g){console.warn("[GiftStage:VideoGate]",t,this.snapshot(A,e,g))}snapshot(A,t,e){return{slotId:A,currentTime:Number(t.currentTime.toFixed(3)),readyState:t.readyState,networkState:t.networkState,paused:t.paused,ended:t.ended,seeking:t.seeking,playbackRate:t.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...e}}release(A,t){if(!t){this.cleanup(A);return}const e=this.lastHandle.get(A);if(e!=null)try{t.cancelVideoFrameCallback(e)}catch(g){}this.cleanup(A)}cleanup(A){this.frameInfo.delete(A),this.lastHandle.delete(A),this.started.delete(A),this.pending.delete(A),this.firstUploaded.delete(A),this.forceTimeFallback.delete(A),this.lastArmAt.delete(A),this.lastCallbackAt.delete(A),this.lastProgressAt.delete(A),this.lastRecoveryAt.delete(A),this.stallLogged.delete(A),this.stagnationLogged.delete(A),this.lastTimeFallback.delete(A)}}function on(i,A,t,e){const g=e!=null?e:new Float32Array(4);return!t||i<=0||A<=0?(g[0]=0,g[1]=0,g[2]=1,g[3]=1,g):(g[0]=t.x/i,g[1]=t.y/A,g[2]=t.w/i,g[3]=t.h/A,g)}const BE=3;function CE(){return typeof document!="undefined"&&typeof document.createElement=="function"}function Ns(i,A){if(!CE())throw new Error("Canvas rendering is unavailable in this environment");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(i)),t.height=Math.max(1,Math.round(A)),t}function Rs(i,A){const t=i.getContext("2d",A);if(!t)throw new Error("Failed to acquire 2D canvas context");return t}function mC(i){return!!i&&typeof i=="object"&&typeof i.text=="string"}function QE(i){return!!i&&typeof i=="object"&&"image"in i}function GC(i){return!!i&&typeof i=="object"&&"image"in i}function _B(i){return!i||typeof i!="object"?!1:typeof HTMLCanvasElement!="undefined"&&i instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&i instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&i instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&i instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&i instanceof VideoFrame||typeof ImageData!="undefined"&&i instanceof ImageData}function hn(i){return new Promise((A,t)=>{const e=new Image;e.crossOrigin="anonymous",e.onload=()=>A(e),e.onerror=()=>t(new Error(`Failed to load image: ${i}`)),e.src=i})}function et(i){if(typeof HTMLImageElement!="undefined"&&i instanceof HTMLImageElement)return{width:i.naturalWidth||i.width,height:i.naturalHeight||i.height};if(typeof HTMLCanvasElement!="undefined"&&i instanceof HTMLCanvasElement)return{width:i.width,height:i.height};if(typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas)return{width:i.width,height:i.height};if(typeof ImageBitmap!="undefined"&&i instanceof ImageBitmap)return{width:i.width,height:i.height};if(i&&typeof i=="object"&&"videoWidth"in i&&typeof i.videoWidth=="number")return{width:i.videoWidth,height:i.videoHeight};if(i&&typeof i=="object"&&"displayWidth"in i&&typeof i.displayWidth=="number")return{width:i.displayWidth||i.codedWidth,height:i.displayHeight||i.codedHeight};const A=i;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function gB(i){if(typeof ImageData!="undefined"&&i instanceof ImageData){const A=Ns(i.width,i.height);return Rs(A).putImageData(i,0,0),A}return i}function aE(i){const A=/^\[(.+)\]$/.exec(i);return A?A[1]:i}function EE(i,A,t){var e,g;return i?typeof i=="string"?{font:i,color:t}:{font:(e=i.font)!=null?e:A,color:(g=i.color)!=null?g:t}:{font:A,color:t}}function FC(i,A,t,e){var g;const I=Math.max(1,e.scale||1),s=Math.max(1,Math.round(i)),n=Math.max(1,Math.round(A)),B=Ns(s*I,n*I),C=Rs(B),Q=(g=e.color)!=null?g:"#ffffff",a=Math.max(1,t.length),r=Math.max(12,Math.min(s/a,n-8)),E=`${e.style==="b"?"bold ":""}${r*I}px Arial`,o=EE(e.fontStyle,E,Q);return C.clearRect(0,0,B.width,B.height),C.textAlign="center",C.textBaseline="middle",C.font=o.font,C.fillStyle=o.color,C.fillText(t,B.width/2,B.height/2),{canvas:B,logicalWidth:s,logicalHeight:n}}function rE(i,A){var t,e,g,I;const s=i.sprites.find(Q=>Q.imageKey===A);if(!s)return{width:1,height:1};let n=0,B=0;for(const Q of s.frames)n=Math.max(n,(e=(t=Q.layout)==null?void 0:t.width)!=null?e:0),B=Math.max(B,(I=(g=Q.layout)==null?void 0:g.height)!=null?I:0);if(n>0&&B>0)return{width:n,height:B};const C=i.atlasRects.get(A);return C?{width:C.w,height:C.h}:{width:1,height:1}}async function oE(i,A,t){var e,g,I;if(mC(i)){const n=FC(A,t,i.text,{scale:(e=i.scale)!=null?e:BE,color:i.color,style:i.style,fontStyle:i.fontStyle});return{source:n.canvas,mode:(g=i.mode)!=null?g:"dynamic",logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight}}if(QE(i)){const n=typeof i.image=="string"?await hn(i.image):i.image,B=et(n);return{source:n,mode:(I=i.mode)!=null?I:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}if(typeof i=="string"){const n=await hn(i),B=et(n);return{source:n,mode:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}const s=et(i);return{source:i,mode:"replace",logicalWidth:Math.max(1,s.width||A),logicalHeight:Math.max(1,s.height||t)}}async function hE(i,A,t){const e=new Map;if(!t)return e;for(const[g,I]of Object.entries(t)){const s=rE(A,g),n=await oE(I,s.width,s.height),B=et(n.source),C=B.width||s.width,Q=B.height||s.height,a=i.createTexture(n.source,{width:C,height:Q,filter:"linear",premultiplyAlpha:!0});e.set(g,{texture:a,mode:n.mode,logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight})}return e}function cE(i,A){var t,e;if(!A)return;const g=String(i.srcId),I=i.srcTag,s=aE(i.srcTag);return(e=(t=A[I])!=null?t:A[s])!=null?e:A[g]}function lE(i,A){var t,e,g,I;const s=typeof A=="string"?A:A.text,n=i.w&&i.w>0?i.w:1,B=i.h&&i.h>0?i.h:1,C=FC(n,B,s,{scale:typeof A=="string"?1:(t=A.scale)!=null?t:1,color:typeof A=="string"?i.color:(e=A.color)!=null?e:i.color,style:typeof A=="string"?i.style:(g=A.style)!=null?g:i.style,fontStyle:typeof A=="string"?i.fontStyle:(I=A.fontStyle)!=null?I:i.fontStyle});return{source:C.canvas,width:C.canvas.width,height:C.canvas.height}}async function dE(i){return typeof i=="string"?hn(i):GC(i)?typeof i.image=="string"?hn(i.image):gB(i.image):gB(i)}async function fE(i,A){const t=new Map;if(!i.src||i.src.length===0||!A)return t;for(const e of i.src){const g=cE(e,A);if(g==null)continue;if(e.srcType==="txt"){if(_B(g)){const C=gB(g),Q=et(C);t.set(String(e.srcId),{source:C,width:Math.max(1,Q.width),height:Math.max(1,Q.height)});continue}const B=lE(e,typeof g=="string"||mC(g)?g:String(g));t.set(String(e.srcId),B);continue}const I=_B(g)||typeof g=="string"||GC(g)?g:null;if(!I)continue;const s=await dE(I),n=et(s);t.set(String(e.srcId),{source:s,width:Math.max(1,n.width),height:Math.max(1,n.height)})}return t}function uE(i){var A;const t=new Map;for(const e of(A=i.frame)!=null?A:[]){const g=[...e.obj].sort((I,s)=>{var n,B;return((n=I.z)!=null?n:0)-((B=s.z)!=null?B:0)});t.set(e.i,g)}return t}function wE(i,A){const t=Ns(i,A),e=Ns(i,A),g=Ns(1,1);return{compositeCanvas:t,compositeCtx:Rs(t),rawCanvas:e,rawCtx:Rs(e),scratchCanvas:g,scratchCtx:Rs(g)}}function JB(i,A,t,e){var g;if(!i.compositeCanvas||!i.compositeCtx||!i.rawCanvas||!i.rawCtx||!i.scratchCanvas||!i.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:I}=A,s=I.videoW||i.width,n=I.videoH||i.height,[B,C,Q,a]=I.rgbFrame,[r,E,o,h]=I.aFrame;(i.rawCanvas.width!==s||i.rawCanvas.height!==n)&&(i.rawCanvas.width=s,i.rawCanvas.height=n),i.rawCtx.clearRect(0,0,s,n),i.rawCtx.drawImage(t,0,0,s,n);const c=i.rawCtx.getImageData(0,0,s,n).data,f=i.compositeCtx.createImageData(i.width,i.height),l=f.data;for(let w=0;w<i.height;w++){const y=Math.min(n-1,Math.max(0,C+Math.floor(w/i.height*a))),p=Math.min(n-1,Math.max(0,E+Math.floor(w/i.height*h)));for(let m=0;m<i.width;m++){const N=Math.min(s-1,Math.max(0,B+Math.floor(m/i.width*Q))),R=Math.min(s-1,Math.max(0,r+Math.floor(m/i.width*o))),S=(y*s+N)*4,q=(p*s+R)*4,L=c[q]/255,P=(w*i.width+m)*4;l[P]=Math.round(c[S]*L),l[P+1]=Math.round(c[S+1]*L),l[P+2]=Math.round(c[S+2]*L),l[P+3]=Math.round(L*255)}}const u=(g=i.frameMap.get(e))!=null?g:[];for(const w of u){const y=i.resources.get(String(w.srcId));if(!y)continue;const[p,m,N,R]=w.frame,[S,q,L,P]=w.mFrame;if(N<=0||R<=0||L<=0||P<=0)continue;(i.scratchCanvas.width!==N||i.scratchCanvas.height!==R)&&(i.scratchCanvas.width=Math.max(1,Math.round(N)),i.scratchCanvas.height=Math.max(1,Math.round(R))),i.scratchCtx.clearRect(0,0,i.scratchCanvas.width,i.scratchCanvas.height),i.scratchCtx.drawImage(y.source,0,0,i.scratchCanvas.width,i.scratchCanvas.height);const k=i.scratchCtx.getImageData(0,0,i.scratchCanvas.width,i.scratchCanvas.height).data,K=Math.max(0,Math.floor(p)),x=Math.max(0,Math.floor(m)),v=Math.min(i.width,Math.ceil(p+N)),$=Math.min(i.height,Math.ceil(m+R));for(let W=x;W<$;W++){const LA=Math.min(i.scratchCanvas.height-1,Math.max(0,Math.floor((W-m)/R*i.scratchCanvas.height))),os=Math.min(n-1,Math.max(0,q+Math.floor((W-m)/R*P)));for(let b=K;b<v;b++){const V=Math.min(i.scratchCanvas.width-1,Math.max(0,Math.floor((b-p)/N*i.scratchCanvas.width))),DA=Math.min(s-1,Math.max(0,S+Math.floor((b-p)/N*L))),rA=(LA*i.scratchCanvas.width+V)*4,Dn=(os*s+DA)*4,yn=k[rA+3]/255,pn=c[Dn]/255,CA=yn*pn;if(CA<=0)continue;const oA=(W*i.width+b)*4,Ks=k[rA]/255*CA,SA=k[rA+1]/255*CA,vs=k[rA+2]/255*CA,Ts=l[oA+3]/255,qs=1-CA;l[oA]=Math.round((Ks+l[oA]/255*qs)*255),l[oA+1]=Math.round((SA+l[oA+1]/255*qs)*255),l[oA+2]=Math.round((vs+l[oA+2]/255*qs)*255),l[oA+3]=Math.round((CA+Ts*qs)*255)}}}return i.compositeCtx.putImageData(f,0,0),i.compositeCanvas}var DE=Object.defineProperty,yE=(i,A,t)=>A in i?DE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,O=(i,A,t)=>yE(i,typeof A!="symbol"?A+"":A,t);const Ln=1024,_n=28,Hs=class Ds{constructor(){O(this,"quadVB",null),O(this,"quadIB",null),O(this,"rgbaQuadVB",null),O(this,"rgbaQuadIB",null),O(this,"quadIndices",new Uint32Array([0,1,2,0,2,3])),O(this,"wcDbgFirstDraw",new Set),O(this,"wcDbgNullWarns",new Map),O(this,"htmlGate",new pC),O(this,"lastWcFrameRef",new Map),O(this,"scratchAtlasRemap",new Float32Array(4)),O(this,"instancePackScratch",new Float32Array(Ln*_n)),O(this,"scratchTransform",new Float32Array(16)),O(this,"projCacheW",0),O(this,"projCacheH",0),O(this,"projCache",null)}syncVideoTextures(A,t){var e,g;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="vap"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;if(n.vapMixState){I=this.syncMixedTexture(A,n)||I;continue}const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,Q=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] VAP first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!Q,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),Q){if(this.lastWcFrameRef.get(n.id)!==Q){const r=n.wcAtlasRect;r?A.updateTextureRegion(n.videoTextureHandle,Q,r.x,r.y,r.w,r.h):A.updateTexture(n.videoTextureHandle,Q),this.lastWcFrameRef.set(n.id,Q),I=!0}}else{const a=((g=this.wcDbgNullWarns.get(n.id))!=null?g:0)+1;this.wcDbgNullWarns.set(n.id,a),a<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:n.id,t:C,n:a})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,t);for(const e of t.values())if(e.type==="vap"&&!(e.state!=="playing"&&e.state!=="fly")&&!(!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle)){if(e.vapMixState){this.drawMixedGeometry(A,e);continue}A.type==="webgpu"||A.type==="webgl2"||this.drawGeometry(A,e)}}drawSlot(A,t){if(t.type==="vap"&&!(t.state!=="playing"&&t.state!=="fly")&&!(!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle)){if(t.vapMixState){this.drawMixedGeometry(A,t);return}this.drawGeometry(A,t)}}drawInstancedVapBatches(A,t){const e=[];for(const C of t.values())C.type!=="vap"||C.state!=="playing"&&C.state!=="fly"||C.vapMixState||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||!C.vapConfig||e.push(C);if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(Ds.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(Ds.QUAD_INDICES,"index"));const g=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===g&&this.projCacheH===I?s=this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=vA(0,g,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const Q=C.videoTextureHandle.id;let a=n.get(Q);a||(a=[],n.set(Q,a)),a.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let Q=0;Q<C.length;Q+=Ln){const a=Math.min(Ln,C.length-Q);for(let E=0;E<a;E++)this.fillVapInstanceData(C[Q+E],B,E*_n);const r=B.subarray(0,a*_n);A.draw({shader:"vap-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:a,instanceData:r,textures:[C[Q].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillVapInstanceData(A,t,e){var g,I,s,n;const B=A.vapConfig,{info:C}=B,Q=C.videoW>0?C.videoW:(I=(g=A.webcodecsPlayback)==null?void 0:g.videoWidth)!=null?I:1,a=C.videoH>0?C.videoH:(n=(s=A.webcodecsPlayback)==null?void 0:s.videoHeight)!=null?n:1,r=this.scratchTransform,E=A.width*A.scale,o=A.height*A.scale;let h=E,c=o;if(TA(A)==="contain"){const{w:p,h:m}=tt(C);if(p>0&&m>0){const N=Math.min(E/p,o/m);h=p*N,c=m*N}}r[0]=h,r[5]=c,r[10]=1,r[12]=A.x,r[13]=A.y,r[15]=1,t.set(r,e);const f=Zs(C.rgbFrame,Q,a),l=Zs(C.aFrame,Q,a),u=A.videoTextureHandle,w=on(u.width,u.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(w,e+16);const y=e+20;t[y+0]=f.left,t[y+1]=f.right,t[y+2]=f.top,t[y+3]=f.bottom,t[y+4]=l.left,t[y+5]=l.right,t[y+6]=l.top,t[y+7]=l.bottom}syncMixedTexture(A,t){var e;const g=t.vapConfig,I=t.vapMixState;if(!g||!I||!t.videoTextureHandle)return!1;const s=this.getMixedFrameIndex(t,g),n=t.webcodecsPlayback;if(n){const C=(e=t.wcPlaybackTime)!=null?e:0,Q=n.getFrameForTime(C);if(!Q||I.lastSourceRef===Q&&I.lastFrameIndex===s)return!1;const a=I.composer?I.composer.render(Q,s):JB(I,g,Q,s);return A.updateTexture(t.videoTextureHandle,a),I.lastSourceRef=Q,I.lastFrameIndex=s,!0}if(!t.videoElement||!this.htmlGate.preUpload(t.id,t.videoElement)&&I.lastFrameIndex===s)return!1;const B=I.composer?I.composer.render(t.videoElement,s):JB(I,g,t.videoElement,s);return A.updateTexture(t.videoTextureHandle,B),I.lastSourceRef=t.videoElement,I.lastFrameIndex=s,!0}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}drawGeometry(A,t){var e,g,I,s;const n=A.canvas.width,B=A.canvas.height;let C;this.projCache&&this.projCacheW===n&&this.projCacheH===B?C=this.projCache:(this.projCacheW=n,this.projCacheH=B,this.projCache=vA(0,n,B,0,-1,1),C=this.projCache);const Q=t.vapConfig;if(!Q){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:t.id});return}const{info:a}=Q,r=a.videoW>0?a.videoW:(g=(e=t.webcodecsPlayback)==null?void 0:e.videoWidth)!=null?g:1,E=a.videoH>0?a.videoH:(s=(I=t.webcodecsPlayback)==null?void 0:I.videoHeight)!=null?s:1,o=new Float32Array(16),h=t.width*t.scale,c=t.height*t.scale;let f=h,l=c;if(TA(t)==="contain"){const{w:R,h:S}=tt(a);if(R>0&&S>0){const q=Math.min(h/R,c/S);f=R*q,l=S*q}}o[0]=f,o[5]=l,o[10]=1,o[12]=t.x,o[13]=t.y,o[15]=1;const u=Zs(a.rgbFrame,r,E),w=Zs(a.aFrame,r,E),y=t.videoTextureHandle,p=on(y.width,y.height,t.wcAtlasRect,this.scratchAtlasRemap),m=new Float32Array([0,0,u.left,u.top,w.left,w.top,1,0,u.right,u.top,w.right,w.top,1,1,u.right,u.bottom,w.right,w.bottom,0,1,u.left,u.bottom,w.left,w.bottom]);this.quadVB=this.ensureBuffer(A,this.quadVB,m,"vertex"),this.quadIB=this.ensureBuffer(A,this.quadIB,this.quadIndices,"index");const N={shader:"vap",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:C,u_transform:o,u_atlasRemap:p,u_video:0}};A.draw(N)}drawMixedGeometry(A,t){var e;const g=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===g&&this.projCacheH===I?s=this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=vA(0,g,I,0,-1,1),s=this.projCache);const n=t.vapConfig;if(!n||!t.vapMixState||!t.videoTextureHandle)return;const B=this.scratchTransform,C=t.width*t.scale,Q=t.height*t.scale;let a=C,r=Q;if(TA(t)==="contain"){const{w:o,h}=tt(n.info);if(o>0&&h>0){const c=Math.min(C/o,Q/h);a=o*c,r=h*c}}B[0]=a,B[5]=r,B[10]=1,B[12]=t.x,B[13]=t.y,B[15]=1;const E=(e=t.vapMixState)!=null&&e.composer||A.type==="webgpu"?Ds.RGBA_QUAD_VERTS_WEBGPU:Ds.RGBA_QUAD_VERTS_WEBGL;this.rgbaQuadVB=this.ensureBuffer(A,this.rgbaQuadVB,E,"vertex"),this.rgbaQuadIB=this.ensureBuffer(A,this.rgbaQuadIB,this.quadIndices,"index"),A.draw({shader:"rgba-textured",vertexBuffer:this.rgbaQuadVB,indexBuffer:this.rgbaQuadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:s,u_transform:B,u_atlasRemap:new Float32Array([0,0,1,1]),u_video:0}})}ensureBuffer(A,t,e,g){return t?(A.updateBuffer(t,e),t):A.createBuffer(e,g)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaQuadVB&&A.deleteBuffer(this.rgbaQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.quadVB=null,this.quadIB=null,this.rgbaQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,t){var e,g,I;if(A.webcodecsPlayback)return Math.max(0,Math.round(((e=A.wcPlaybackTime)!=null?e:0)*t.info.fps));const s=this.htmlGate.getFrameInfo(A.id),n=s==null?void 0:s.mediaTime;return typeof n=="number"&&Number.isFinite(n)&&n>=0?Math.max(0,Math.round(n*t.info.fps)):Math.max(0,Math.round(((I=(g=A.videoElement)==null?void 0:g.currentTime)!=null?I:0)*t.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};O(Hs,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));O(Hs,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));O(Hs,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));O(Hs,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let SC=Hs;var pE=Object.defineProperty,mE=(i,A,t)=>A in i?pE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,IA=(i,A,t)=>mE(i,typeof A!="symbol"?A+"":A,t);const Jn=1024,Hn=20,cB=class HA{constructor(){IA(this,"quadVB",null),IA(this,"quadIB",null),IA(this,"instancePackScratch",new Float32Array(Jn*Hn)),IA(this,"projCacheW",0),IA(this,"projCacheH",0),IA(this,"projCache",null),IA(this,"scratchTransform",new Float32Array(16)),IA(this,"wcDbgFirstDraw",new Set),IA(this,"wcDbgNullWarns",new Map),IA(this,"htmlGate",new pC),IA(this,"lastWcFrameRef",new Map),IA(this,"scratchAtlasRemap",new Float32Array(4))}static alphaVideoContentSize(A){if(A.webcodecsPlayback){const I=A.webcodecsPlayback.videoWidth,s=A.webcodecsPlayback.videoHeight;return{w:I>0?I*.5:0,h:s}}const t=A.videoElement,e=t.videoWidth,g=t.videoHeight;return{w:e>0?e*.5:0,h:g}}syncVideoTextures(A,t){var e,g;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="alphaVideo"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,Q=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!Q,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),Q){if(this.lastWcFrameRef.get(n.id)!==Q){const r=n.wcAtlasRect;r?A.updateTextureRegion(n.videoTextureHandle,Q,r.x,r.y,r.w,r.h):A.updateTexture(n.videoTextureHandle,Q),this.lastWcFrameRef.set(n.id,Q),I=!0}}else{const a=((g=this.wcDbgNullWarns.get(n.id))!=null?g:0)+1;this.wcDbgNullWarns.set(n.id,a),a<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:n.id,t:C,n:a})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,t);return}for(const e of t.values())e.type==="alphaVideo"&&(e.state!=="playing"&&e.state!=="fly"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle||this.drawGeometry(A,e))}drawSlot(A,t){t.type==="alphaVideo"&&(t.state!=="playing"&&t.state!=="fly"||!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle||this.drawGeometry(A,t))}drawInstancedAlphaBatches(A,t){const e=[];for(const C of t.values())C.type==="alphaVideo"&&(C.state!=="playing"&&C.state!=="fly"||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||e.push(C));if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(HA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(HA.QUAD_INDICES,"index"));const g=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===g&&this.projCacheH===I?s=this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=vA(0,g,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const Q=C.videoTextureHandle.id;let a=n.get(Q);a||(a=[],n.set(Q,a)),a.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let Q=0;Q<C.length;Q+=Jn){const a=Math.min(Jn,C.length-Q);for(let E=0;E<a;E++)this.fillAlphaInstanceData(C[Q+E],B,E*Hn);const r=B.subarray(0,a*Hn);A.draw({shader:"alpha-video-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:a,instanceData:r,textures:[C[Q].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillAlphaInstanceData(A,t,e){const g=this.scratchTransform,I=A.width*A.scale,s=A.height*A.scale;let n=I,B=s;if(TA(A)==="contain"){const{w:a,h:r}=HA.alphaVideoContentSize(A);if(a>0&&r>0){const E=Math.min(I/a,s/r);n=a*E,B=r*E}}g[0]=n,g[5]=B,g[10]=1,g[12]=A.x,g[13]=A.y,g[15]=1,t.set(g,e);const C=A.videoTextureHandle,Q=on(C.width,C.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(Q,e+16)}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,t){const e=A.canvas.width,g=A.canvas.height;let I;this.projCache&&this.projCacheW===e&&this.projCacheH===g?I=this.projCache:(this.projCacheW=e,this.projCacheH=g,this.projCache=vA(0,e,g,0,-1,1),I=this.projCache);const s=this.scratchTransform,n=t.width*t.scale,B=t.height*t.scale;let C=n,Q=B;if(TA(t)==="contain"){const{w:o,h}=HA.alphaVideoContentSize(t);if(o>0&&h>0){const c=Math.min(n/o,B/h);C=o*c,Q=h*c}}s[0]=C,s[5]=Q,s[10]=1,s[12]=t.x,s[13]=t.y,s[15]=1,this.quadVB||(this.quadVB=A.createBuffer(HA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(HA.QUAD_INDICES,"index"));const a=t.videoTextureHandle,r=on(a.width,a.height,t.wcAtlasRect,this.scratchAtlasRemap),E={shader:"alpha-video",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[a],uniforms:{u_projection:I,u_transform:s,u_atlasRemap:r,u_video:0}};A.draw(E)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null,this.projCacheW=0,this.projCacheH=0,this.lastWcFrameRef.clear()}};IA(cB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));IA(cB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let NC=cB;var GE=Object.defineProperty,FE=(i,A,t)=>A in i?GE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,SE=(i,A,t)=>FE(i,A+"",t);class RC{constructor(){SE(this,"animations",[])}startFly(A,t,e,g,I,s,n){this.animations=this.animations.filter(B=>B.giftId!==A.id),this.animations.push({giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,targetX:t,targetY:e,targetScale:g,startTime:-1,duration:I,easing:s,onComplete:n})}update(A){var t;for(let e=this.animations.length-1;e>=0;e--){const g=this.animations[e];g.startTime<0&&(g.startTime=A),AB((A-g.startTime)/g.duration,0,1)>=1&&((t=g.onComplete)==null||t.call(g),this.animations.splice(e,1))}}getAnimatedState(A,t){const e=this.animations.find(s=>s.giftId===A);if(!e)return null;e.startTime<0&&(e.startTime=t);const g=AB((t-e.startTime)/e.duration,0,1),I=e.easing(g);return{x:$s(e.startX,e.targetX,I),y:$s(e.startY,e.targetY,I),scale:$s(e.startScale,e.targetScale,I)}}hasAnimation(A){return this.animations.some(t=>t.giftId===A)}hasActiveAnimations(){return this.animations.length>0}cancelForGift(A){this.animations=this.animations.filter(t=>t.giftId!==A)}destroy(){this.animations=[]}}var NE=Object.defineProperty,RE=(i,A,t)=>A in i?NE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,cs=(i,A,t)=>RE(i,typeof A!="symbol"?A+"":A,t);class UC{constructor(){cs(this,"ctx",null),cs(this,"decodedCache",new Map),cs(this,"activeSources",[]),cs(this,"globalMute",!1),cs(this,"gainNode",null)}ensureContext(){return this.ctx||(this.ctx=new AudioContext,this.gainNode=this.ctx.createGain(),this.gainNode.connect(this.ctx.destination),this.globalMute&&(this.gainNode.gain.value=0)),this.ctx.state==="suspended"&&this.ctx.resume().catch(()=>{}),this.ctx}async decodeAudio(A,t){if(this.decodedCache.has(A))return;const e=this.ensureContext();try{const g=await e.decodeAudioData(t.slice(0));this.decodedCache.set(A,g)}catch(g){}}tickFrame(A,t,e){if(A.videoEntity&&!A.options.mute){for(const g of A.videoEntity.audios)t===g.startFrame&&this.startAudio(A.id,g);for(let g=this.activeSources.length-1;g>=0;g--){const I=this.activeSources[g];if(I.giftId===A.id&&t>=I.endFrame){try{I.source.stop()}catch(s){}I.source.disconnect(),this.activeSources.splice(g,1)}}}}startAudio(A,t){var e;const g=this.decodedCache.get(t.audioKey);if(!g)return;const I=this.ensureContext(),s=I.createBufferSource();s.buffer=g,s.connect((e=this.gainNode)!=null?e:I.destination),s.start(0,t.startTime/1e3),s.onended=()=>{s.disconnect();const n=this.activeSources.findIndex(B=>B.source===s&&B.giftId===A);n>=0&&this.activeSources.splice(n,1)},this.activeSources.push({source:s,endFrame:t.endFrame,giftId:A})}stopAllForGift(A){for(let t=this.activeSources.length-1;t>=0;t--)if(this.activeSources[t].giftId===A){try{this.activeSources[t].source.stop()}catch(e){}this.activeSources[t].source.disconnect(),this.activeSources.splice(t,1)}}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}destroy(){var A;for(const t of this.activeSources){try{t.source.stop()}catch(e){}t.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}function UE(i){return i}function kE(i){return i*i}function ME(i){return i*(2-i)}function xE(i){return i<.5?2*i*i:-1+(4-2*i)*i}function Ls(i){const A=i-1;return A*A*A+1}function bE(i){return i<.5?4*i*i*i:(i-1)*(2*i-2)*(2*i-2)+1}function YE(i){return 1+2.70158*Math.pow(i-1,3)+1.70158*Math.pow(i-1,2)}var LE=Object.defineProperty,_E=(i,A,t)=>A in i?LE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,WA=(i,A,t)=>_E(i,typeof A!="symbol"?A+"":A,t);class JE{constructor(A,t){WA(this,"atlasW"),WA(this,"atlasH"),WA(this,"rowY",0),WA(this,"rowH",0),WA(this,"rowX",0),WA(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(t))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,t,e){const g=Math.max(1,Math.ceil(t)),I=Math.max(1,Math.ceil(e));if(g>this.atlasW||I>this.atlasH||(this.rowX+g>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+I>this.atlasH))return null;const s={x:this.rowX,y:this.rowY,w:g,h:I};return this.slots.set(A,s),this.rowX+=g,this.rowH=Math.max(this.rowH,I),s}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function HE(i){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(i.trim());if(!A)return null;const t=Number(A[1]);return Number.isFinite(t)?t:null}function HB(i,A,t){if(typeof i=="number")return i;const e=HE(i);if(e==null)throw new Error(`Invalid percentage coordinate: ${i}`);return A*e/100-t/2}function kC(i,A,t,e,g,I){return{x:HB(i,g,t),y:HB(A,I,e)}}var KE=Object.defineProperty,vE=(i,A,t)=>A in i?KE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,gA=(i,A,t)=>vE(i,typeof A!="symbol"?A+"":A,t);class MC{constructor(A){gA(this,"backend"),gA(this,"svgaBatch"),gA(this,"vapRenderer"),gA(this,"alphaVideoRenderer"),gA(this,"postAnimator"),gA(this,"audioManager"),gA(this,"slots"),gA(this,"handles"),gA(this,"rafId",null),gA(this,"lastTime",0),gA(this,"running",!1),gA(this,"forceNextDraw",!0),gA(this,"wcAtlas",null),gA(this,"wcDbgTickOnce",new Set),this.backend=A,this.svgaBatch=new DC,this.vapRenderer=new SC,this.alphaVideoRenderer=new NC,this.postAnimator=new RC,this.audioManager=new UC,this.slots=new Map,this.handles=new Map}addSlot(A,t){this.slots.set(A.id,A),this.handles.set(A.id,t),this.forceNextDraw=!0,this.running||this.start()}removeSlot(A){var t,e,g,I,s,n;const B=this.slots.get(A);if(B){if(B.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(B),this.vapRenderer.clearWebCodecsFrameRef(B.id),(e=(t=B.vapMixState)==null?void 0:t.composer)==null||e.destroy()),B.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(B),this.alphaVideoRenderer.clearWebCodecsFrameRef(B.id)),this.audioManager.stopAllForGift(A),this.postAnimator.cancelForGift(A),B.videoEntity&&!B.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(B.videoEntity),B.svgaSlotTextures){for(const C of B.svgaSlotTextures.values())this.backend.deleteTexture(C.texture);B.svgaSlotTextures.clear()}B.wcAtlasRect?this.releaseWebCodecsAtlasSlot(B.id):B.videoTextureHandle&&!B.releaseSharedVideoTexture&&this.backend.deleteTexture(B.videoTextureHandle),B.webcodecsPlayback&&(B.webcodecsPlayback.destroy(),B.webcodecsPlayback=null),B.videoElement&&!B.releaseSharedVideoPlayback&&(B.videoElement.pause(),B.videoElement.removeAttribute("src"),B.videoElement.load(),B.videoElement.remove()),(g=B.releaseSharedVideoPlayback)==null||g.call(B),B.releaseSharedVideoPlayback=null,(I=B.releaseSharedSVGAAsset)==null||I.call(B),B.releaseSharedSVGAAsset=null,(s=B.releaseSharedVideoTexture)==null||s.call(B),B.releaseSharedVideoTexture=null,(n=B.releaseMediaSource)==null||n.call(B),B.releaseMediaSource=null}this.slots.delete(A),this.handles.delete(A),this.forceNextDraw=!0,this.slots.size===0&&this.stop()}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}tryAllocateWebCodecsAtlas(A,t,e,g){if(!g||g.width<=0||g.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==g.width||this.wcAtlas.cfg.height!==g.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:g.width,height:g.height},handle:this.backend.createEmptyTexture(g.width,g.height,{filter:"linear"}),alloc:new JE(g.width,g.height),ref:0});const I=this.wcAtlas.alloc.tryAllocate(A,t,e);return I?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:I}):null}releaseWebCodecsAtlasSlot(A){const t=this.wcAtlas;t&&(t.alloc.release(A),t.ref=Math.max(0,t.ref-1),t.ref<=0&&(this.backend.deleteTexture(t.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:t}=ms(this.backend.canvas);this.forceNextDraw=!0;for(const e of this.slots.values()){if(this.postAnimator.hasAnimation(e.id))continue;const g=e.options,I=kC(g.x,g.y,g.width,g.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);e.x=I.x*A,e.y=I.y*t,e.width=g.width*A,e.height=g.height*t}}start(){this.running||(this.running=!0,this.lastTime=performance.now(),this.rafId=requestAnimationFrame(A=>this.renderLoop(A)))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}pause(){this.stop()}resume(){this.slots.size>0&&!this.running&&this.start()}renderLoop(A){var t,e;if(!this.running)return;const g=(A-this.lastTime)/1e3;this.lastTime=A;let I=this.forceNextDraw;for(const[s,n]of this.slots){if(n.paused||n.state==="loading")continue;const B=this.handles.get(s),C=this.postAnimator.getAnimatedState(s,A);if(C&&(n.x=C.x,n.y=C.y,n.scale=C.scale,I=!0),n.type==="svga"&&n.videoEntity&&n.state==="playing"&&(I=this.tickSVGA(n,g,B,A)||I),(n.type==="vap"||n.type==="alphaVideo")&&n.webcodecsPlayback&&n.state==="playing"){this.tickWebCodecs(n,g,B);const Q=n.webcodecsPlayback;(e=Q.ensureDecodedThrough)==null||e.call(Q,(t=n.wcPlaybackTime)!=null?t:0)}}if(I=this.postAnimator.hasActiveAnimations()||I,this.postAnimator.update(A),I=this.removeFinished()||I,I=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||I,I=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||I,I){this.forceNextDraw=!1,this.backend.beginFrame(),this.svgaBatch.beginFrame(this.backend);for(const s of this.getRenderLayers())this.drawLayer(s);this.backend.endFrame()}this.rafId=requestAnimationFrame(s=>this.renderLoop(s))}tickWebCodecs(A,t,e){var g,I;const s=A.webcodecsPlayback;if(!s)return;const n=Math.max(s.duration,1e-9);if(!Number.isFinite(n))return;const B=(g=A.options.loop)!=null?g:1;let C=((I=A.wcPlaybackTime)!=null?I:0)+t;if(B===0){A.wcPlaybackTime=(C%n+n)%n,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B);return}for(;C>=n;)if(C-=n,A.loopCount++,A.loopCount>=B){A.wcPlaybackTime=n-1e-6,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B),this.onWebCodecsPlaybackComplete(A,e);return}A.wcPlaybackTime=C,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B)}wcDbgLogTickOnce(A,t,e,g){var I;this.wcDbgTickOnce.has(A.id)||(this.wcDbgTickOnce.add(A.id),console.info("[GiftStage:WC] clock tick",{giftId:A.id,type:A.type,state:A.state,paused:A.paused,duration:t,wcPlaybackTime:e,loop:(I=A.options.loop)!=null?I:1,maxLoopsEffective:g,backend:this.backend.type,canvasCss:`${this.backend.canvas.clientWidth}x${this.backend.canvas.clientHeight}`,canvasBuf:`${this.backend.canvas.width}x${this.backend.canvas.height}`}))}onWebCodecsPlaybackComplete(A,t){var e,g,I,s;if((e=A.onComplete)==null||e.call(A,t),A.flyTo){A.state="fly";const{sx:n,sy:B}=ms(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*n,A.flyTo.y*B,(g=A.scaleTo)!=null?g:.3,(I=A.flyDuration)!=null?I:600,(s=A.easing)!=null?s:Ls,()=>{var C;A.state="finished",(C=A.onFlyComplete)==null||C.call(A,t)})}else A.state="finished"}tickSVGA(A,t,e,g){var I;const s=A.videoEntity,n=s.params.fps;if(n<=0)return!1;const B=1/n,C=A.currentFrame;for(A.accumulatedTime+=t;A.accumulatedTime>=B;)if(A.accumulatedTime-=B,A.currentFrame++,A.currentFrame>=s.params.frames){A.loopCount++;const Q=(I=A.options.loop)!=null?I:1;if(Q===0)A.currentFrame=0;else if(A.loopCount>=Q){A.currentFrame=s.params.frames-1,this.onGiftPlayComplete(A,e,g);break}else A.currentFrame=0}return A.currentFrame=Math.max(0,Math.min(A.currentFrame,s.params.frames-1)),A.currentFrame!==C&&this.audioManager.tickFrame(A,A.currentFrame,e),A.currentFrame!==C}onGiftPlayComplete(A,t,e){var g,I,s,n;if((g=A.onComplete)==null||g.call(A,t),A.flyTo){A.state="fly";const{sx:B,sy:C}=ms(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*B,A.flyTo.y*C,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:Ls,()=>{var Q;A.state="finished",(Q=A.onFlyComplete)==null||Q.call(A,t)})}else A.state="finished"}removeFinished(){const A=[];for(const[t,e]of this.slots)e.state==="finished"&&A.push(t);for(const t of A)this.removeSlot(t);return A.length>0}getRenderOrderedSlots(){const A=[];for(const t of this.slots.values())t.state!=="playing"&&t.state!=="fly"||A.push(t);return A.sort((t,e)=>{var g,I,s,n;const B=(g=t.zIndex)!=null?g:0,C=(I=e.zIndex)!=null?I:0;return B!==C?B-C:((s=t.renderOrder)!=null?s:0)-((n=e.renderOrder)!=null?n:0)}),A}getRenderLayers(){var A,t;const e=this.getRenderOrderedSlots();if(e.length===0)return[];const g=[];let I=[],s=(A=e[0].zIndex)!=null?A:0;for(const n of e){const B=(t=n.zIndex)!=null?t:0;I.length>0&&B!==s&&(g.push(I),I=[],s=B),I.push(n)}return I.length>0&&g.push(I),g}drawLayer(A){if(A.length===0)return;let t=A[0].type,e=this.getBatchKey(A[0]),g=[];for(const I of A){const s=this.getBatchKey(I);(I.type!==t||s!==e)&&g.length>0&&(this.drawSlotRun(t,g),g=[]),t=I.type,e=s,g.push(I)}g.length>0&&this.drawSlotRun(t,g)}drawSlotRun(A,t){if(t.length===0)return;const e=new Map;for(const g of t)e.set(g.id,g);switch(A){case"svga":this.svgaBatch.drawSlots(this.backend,t);break;case"vap":this.vapRenderer.draw(this.backend,e);break;case"alphaVideo":this.alphaVideoRenderer.draw(this.backend,e);break}}getBatchKey(A){var t,e,g,I,s,n,B;switch(A.type){case"svga":{const C=((e=(t=A.videoEntity)==null?void 0:t.atlasTextureHandles)!=null&&e.length?A.videoEntity.atlasTextureHandles:(g=A.videoEntity)!=null&&g.atlasTextureHandle?[A.videoEntity.atlasTextureHandle]:[]).map(a=>a.id).join(","),Q=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0;return`svga:${C}:${Q}`}case"vap":{const C=(s=(I=A.videoTextureHandle)==null?void 0:I.id)!=null?s:-1;return`vap:${A.vapMixState?"mixed":"video"}:${C}`}case"alphaVideo":return`alpha:${(B=(n=A.videoTextureHandle)==null?void 0:n.id)!=null?B:-1}`}}deleteSVGAAtlasTextures(A){var t;const e=(t=A.atlasTextureHandles)!=null&&t.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],g=new Set;for(const I of e)g.has(I.id)||(g.add(I.id),this.backend.deleteTexture(I))}destroy(){this.stop();for(const A of Array.from(this.slots.keys()))this.removeSlot(A);this.svgaBatch.destroy(this.backend),this.vapRenderer.destroy(this.backend),this.alphaVideoRenderer.destroy(this.backend),this.postAnimator.destroy(),this.audioManager.destroy(),this.backend.destroy()}}async function xC(i){if(typeof DecompressionStream!="undefined"){try{return await Kn(i,"deflate")}catch(A){}try{return await Kn(i.slice(2),"deflate-raw")}catch(A){}return await Kn(i.slice(2,-4),"deflate-raw")}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function Kn(i,A){const t=new DecompressionStream(A),e=t.writable.getWriter(),g=t.readable.getReader();e.write(new Uint8Array(i.buffer,i.byteOffset,i.byteLength)),e.close();const I=[];let s=0;for(;;){const{done:C,value:Q}=await g.read();if(C)break;I.push(Q),s+=Q.length}const n=new Uint8Array(s);let B=0;for(const C of I)n.set(C,B),B+=C.length;return n}var TE=Object.defineProperty,qE=(i,A,t)=>A in i?TE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,vn=(i,A,t)=>qE(i,typeof A!="symbol"?A+"":A,t);const VE=0,zE=1,ZE=2,WE=5;class lB{constructor(A,t=0,e){vn(this,"view"),vn(this,"pos"),vn(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=t,this.end=t+(e!=null?e:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,t=0;for(;this.pos<this.end;){const e=this.view.getUint8(this.pos++);if(A|=(e&127)<<t,(e&128)===0)return A>>>0;t+=7}return A>>>0}readSignedVarint(){return this.readVarint()|0}readFloat(){const A=this.view.getFloat32(this.pos,!0);return this.pos+=4,A}readDouble(){const A=this.view.getFloat64(this.pos,!0);return this.pos+=8,A}readBytes(){const A=this.readVarint(),t=this.view.byteOffset+this.pos;this.pos+=A;const e=this.view.buffer.slice(t,t+A);return new Uint8Array(e)}readString(){const A=this.readBytes();return new TextDecoder().decode(A)}readTag(){if(this.pos>=this.end)return null;const A=this.readVarint();return{field:A>>>3,wire:A&7}}skip(A){switch(A){case VE:this.readVarint();break;case zE:this.pos+=8;break;case ZE:this.pos+=this.readVarint();break;case WE:this.pos+=4;break}}sub(A){const t=new lB(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,t}}function jE(i){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.viewBoxWidth=i.readFloat();break;case 2:A.viewBoxHeight=i.readFloat();break;case 3:A.fps=i.readSignedVarint();break;case 4:A.frames=i.readSignedVarint();break;default:i.skip(t.wire)}}return A}function OE(i){const A={x:0,y:0,width:0,height:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.x=i.readFloat();break;case 2:A.y=i.readFloat();break;case 3:A.width=i.readFloat();break;case 4:A.height=i.readFloat();break;default:i.skip(t.wire)}}return A}function bC(i){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.a=i.readFloat();break;case 2:A.b=i.readFloat();break;case 3:A.c=i.readFloat();break;case 4:A.d=i.readFloat();break;case 5:A.tx=i.readFloat();break;case 6:A.ty=i.readFloat();break;default:i.skip(t.wire)}}return A}function KB(i){const A={r:0,g:0,b:0,a:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.r=i.readFloat();break;case 2:A.g=i.readFloat();break;case 3:A.b=i.readFloat();break;case 4:A.a=i.readFloat();break;default:i.skip(t.wire)}}return A}function XE(i){const A={fill:null,stroke:null,strokeWidth:0},t=[];for(;i.remaining>0;){const e=i.readTag();if(!e)break;switch(e.field){case 1:{const g=i.readVarint();A.fill=KB(i.sub(g));break}case 2:{const g=i.readVarint();A.stroke=KB(i.sub(g));break}case 3:A.strokeWidth=i.readFloat();break;case 4:A.lineCap=i.readVarint();break;case 5:A.lineJoin=i.readVarint();break;case 6:A.miterLimit=i.readFloat();break;case 7:t[0]=i.readFloat();break;case 8:t[1]=i.readFloat();break;case 9:t[2]=i.readFloat();break;default:i.skip(e.wire)}}return t.some(e=>e>0)&&(A.lineDash=t.filter(e=>e>0)),A}function PE(i){let A="";for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A=i.readString();break;default:i.skip(t.wire)}}return A}function $E(i){const A={x:0,y:0,width:0,height:0,cornerRadius:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.x=i.readFloat();break;case 2:A.y=i.readFloat();break;case 3:A.width=i.readFloat();break;case 4:A.height=i.readFloat();break;case 5:A.cornerRadius=i.readFloat();break;default:i.skip(t.wire)}}return A}function Ar(i){const A={x:0,y:0,radiusX:0,radiusY:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.x=i.readFloat();break;case 2:A.y=i.readFloat();break;case 3:A.radiusX=i.readFloat();break;case 4:A.radiusY=i.readFloat();break;default:i.skip(t.wire)}}return A}function tr(i){let A=0,t="",e,g,I={fill:null,stroke:null,strokeWidth:0},s={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;i.remaining>0;){const n=i.readTag();if(!n)break;switch(n.field){case 1:A=i.readVarint();break;case 2:{const B=i.readVarint();t=PE(i.sub(B));break}case 3:{const B=i.readVarint();e=$E(i.sub(B));break}case 4:{const B=i.readVarint();g=Ar(i.sub(B));break}case 10:{const B=i.readVarint();I=XE(i.sub(B));break}case 11:{const B=i.readVarint();s=bC(i.sub(B));break}default:i.skip(n.wire)}}return A===3?{kind:"keep"}:t?{kind:"path",pathData:t,style:I,transform:s}:e?{kind:"rect",rect:e,style:I,transform:s}:g?{kind:"ellipse",ellipse:g,style:I,transform:s}:null}function er(i){const A={alpha:0,layout:null,transform:null,clipPath:""},t=[];for(;i.remaining>0;){const e=i.readTag();if(!e)break;switch(e.field){case 1:A.alpha=i.readFloat();break;case 2:{const g=i.readVarint();A.layout=OE(i.sub(g));break}case 3:{const g=i.readVarint();A.transform=bC(i.sub(g));break}case 4:A.clipPath=i.readString();break;case 5:{const g=i.readVarint(),I=tr(i.sub(g));I&&t.push(I);break}default:i.skip(e.wire)}}return t.length>0&&(A.shapes=t),A}function ir(i){var A;const t={imageKey:"",frames:[]};for(;i.remaining>0;){const g=i.readTag();if(!g)break;switch(g.field){case 1:t.imageKey=i.readString();break;case 2:{const I=i.readVarint();t.frames.push(er(i.sub(I)));break}default:i.skip(g.wire)}}let e=null;for(const g of t.frames){const I=g.shapes;if(!I||I.length===0){g.shapes=null,e=null;continue}if(((A=I[0])==null?void 0:A.kind)==="keep"){g.shapes=e;continue}const s=I.filter(n=>n.kind!=="keep");g.shapes=s.length>0?s:null,e=g.shapes}return t}function gr(i){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.audioKey=i.readString();break;case 2:A.startFrame=i.readSignedVarint();break;case 3:A.endFrame=i.readSignedVarint();break;case 4:A.startTime=i.readSignedVarint();break;case 5:A.totalTime=i.readSignedVarint();break;default:i.skip(t.wire)}}return A}function Ir(i){let A="",t=new Uint8Array(0);for(;i.remaining>0;){const e=i.readTag();if(!e)break;switch(e.field){case 1:A=i.readString();break;case 2:t=i.readBytes();break;default:i.skip(e.wire)}}return{key:A,value:t}}function YC(i){const A=new lB(i),t={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,sprites:[],audios:[]};for(;A.remaining>0;){const e=A.readTag();if(!e)break;switch(e.field){case 1:t.version=A.readString();break;case 2:{const g=A.readVarint();t.params=jE(A.sub(g));break}case 3:{const g=A.readVarint(),{key:I,value:s}=Ir(A.sub(g));t.images.set(I,s);break}case 4:{const g=A.readVarint();t.sprites.push(ir(A.sub(g)));break}case 5:{const g=A.readVarint();t.audios.push(gr(A.sub(g)));break}default:A.skip(e.wire)}}return t}const LC=`async function _(A) {
551
+ `,H={svgaBatchPremul:{vert:YQ,frag:mB},svgaInstancedPremul:{vert:LQ,frag:mB},vap:{vert:_Q,frag:GB},vapInstanced:{vert:TQ,frag:GB},alphaVideo:{vert:JQ,frag:FB},alphaVideoInstanced:{vert:vQ,frag:FB},rgbaTextured:{vert:HQ,frag:KQ},clipMask:{vert:qQ,frag:VQ}},pA={svgaBatchPremul:zQ,svgaInstancedPremul:$Q,vap:ZQ,vapInstanced:XQ,alphaVideo:WQ,alphaVideoInstanced:OQ,rgbaTextured:jQ,clipMask:PQ};var Aa=Object.defineProperty,ta=(i,A,t)=>A in i?Aa(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,F=(i,A,t)=>ta(i,typeof A!="symbol"?A+"":A,t);const ea=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),ia=new Float32Array([0,0,1,1]),AA=class O{constructor(A,t,e=!0){F(this,"type","webgpu"),F(this,"canvas"),F(this,"maxTextureSize"),F(this,"adapter"),F(this,"device"),F(this,"context"),F(this,"format"),F(this,"encoder",null),F(this,"passEncoder",null),F(this,"nextId",1),F(this,"buffers",new Map),F(this,"textures",new Map),F(this,"pipelines",new Map),F(this,"sampler"),F(this,"uniformBuffer"),F(this,"uniformSlotStride",256),F(this,"maxUniformSlots",8192),F(this,"uniformSlotIndex",0),F(this,"lastDrawPipeline",null),F(this,"lastStencilRef",-1),F(this,"lastVertexBufferId",-1),F(this,"lastIndexBufferId",-1),F(this,"uniformScratch144",new Float32Array(36)),F(this,"depthStencilTexture",null),F(this,"depthStencilView",null),F(this,"msaaColorTexture",null),F(this,"msaaColorView",null),F(this,"lastCanvasWidth",0),F(this,"lastCanvasHeight",0),F(this,"lastDepthStencilSampleCount",0),F(this,"msaaSampleCount",1),F(this,"wantAntialias"),F(this,"configuredCanvasWidth",0),F(this,"configuredCanvasHeight",0),F(this,"dummyTexture"),F(this,"dummyTextureView"),F(this,"videoUploadCanvas",null),F(this,"videoUploadCtx",null),F(this,"videoElementPreferCanvasBridge",!1),F(this,"videoFramePreferCanvasBridge",!1),F(this,"textureBindGroupCache",new Map),F(this,"instancedAlphaProjBuffer"),F(this,"instancedSvgaInstanceBuffer"),F(this,"instancedAlphaInstanceBuffer"),F(this,"instancedVapInstanceBuffer"),F(this,"storageBindOffsetAlign",256),F(this,"instancedSvgaSlotBytes"),F(this,"instancedAlphaSlotBytes"),F(this,"instancedVapSlotBytes"),F(this,"instancedSvgaRingOffset",0),F(this,"instancedAlphaRingOffset",0),F(this,"instancedVapRingOffset",0),F(this,"instancedProjectionCache",new Float32Array(16)),F(this,"instancedProjectionValid",!1),F(this,"lastInstancedTextureBindGroup",null),this.canvas=A,this.adapter=t,this.maxTextureSize=t.limits.maxTextureDimension2D,this.wantAntialias=e}async init(){this.device=await this.adapter.requestDevice(),this.device.onuncapturederror=t=>{console.error("[WebGPU Error]",t.error.message)},this.context=this.canvas.getContext("webgpu"),this.format=navigator.gpu.getPreferredCanvasFormat(),this.msaaSampleCount=this.wantAntialias?4:1,this.configureCanvasContext(),this.sampler=this.device.createSampler({magFilter:"linear",minFilter:"linear"}),this.uniformSlotStride=this.device.limits.minUniformBufferOffsetAlignment,this.storageBindOffsetAlign=this.device.limits.minStorageBufferOffsetAlignment;const A=this.storageBindOffsetAlign;this.instancedSvgaSlotBytes=Math.ceil(O.INSTANCED_SVGA_CHUNK_BYTES/A)*A,this.instancedAlphaSlotBytes=Math.ceil(O.INSTANCED_ALPHA_CHUNK_BYTES/A)*A,this.instancedVapSlotBytes=Math.ceil(O.INSTANCED_VAP_CHUNK_BYTES/A)*A,this.uniformBuffer=this.device.createBuffer({size:this.uniformSlotStride*this.maxUniformSlots,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedAlphaProjBuffer=this.device.createBuffer({size:256,usage:GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST}),this.instancedSvgaInstanceBuffer=this.device.createBuffer({size:O.INSTANCED_STORAGE_RING_SLOTS*this.instancedSvgaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedAlphaInstanceBuffer=this.device.createBuffer({size:O.INSTANCED_STORAGE_RING_SLOTS*this.instancedAlphaSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.instancedVapInstanceBuffer=this.device.createBuffer({size:O.INSTANCED_STORAGE_RING_SLOTS*this.instancedVapSlotBytes,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST}),this.dummyTexture=this.device.createTexture({size:[1,1],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING}),this.dummyTextureView=this.dummyTexture.createView(),this.initPipelines()}configureCanvasContext(){this.context.configure({device:this.device,format:this.format,alphaMode:"premultiplied"}),this.configuredCanvasWidth=this.canvas.width,this.configuredCanvasHeight=this.canvas.height}ensureDepthStencil(A,t){var e,g;this.depthStencilTexture&&this.lastCanvasWidth===A&&this.lastCanvasHeight===t&&this.lastDepthStencilSampleCount===this.msaaSampleCount||((e=this.depthStencilTexture)==null||e.destroy(),(g=this.msaaColorTexture)==null||g.destroy(),this.msaaColorTexture=null,this.msaaColorView=null,this.depthStencilTexture=this.device.createTexture({size:[A,t],format:"depth24plus-stencil8",sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.depthStencilView=this.depthStencilTexture.createView(),this.msaaSampleCount>1&&(this.msaaColorTexture=this.device.createTexture({size:[A,t],format:this.format,sampleCount:this.msaaSampleCount,usage:GPUTextureUsage.RENDER_ATTACHMENT}),this.msaaColorView=this.msaaColorTexture.createView()),this.lastCanvasWidth=A,this.lastCanvasHeight=t,this.lastDepthStencilSampleCount=this.msaaSampleCount)}initPipelines(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:144}},{binding:1,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:2,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!0,minBindingSize:64}}]});this.createTexturedPipeline("svga-batch-premul:none",pA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"none"),this.createTexturedPipeline("svga-batch-premul:test",pA.svgaBatchPremul,A,[{shaderLocation:0,offset:0,format:"float32x3"},{shaderLocation:1,offset:12,format:"float32x4"},{shaderLocation:2,offset:28,format:"float32x2"}],36,"test"),this.createClipMaskPipeline(t),this.createTexturedPipeline("vap:none",pA.vap,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"},{shaderLocation:2,offset:16,format:"float32x2"}],24,"none"),this.createTexturedPipeline("alpha-video:none",pA.alphaVideo,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createTexturedPipeline("rgba-textured:none",pA.rgbaTextured,A,[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}],16,"none"),this.createInstancedSvgaPipeline("svga-instanced-premul:none",pA.svgaInstancedPremul),this.createInstancedAlphaVideoPipeline(),this.createVapInstancedPipeline()}createInstancedSvgaPipeline(A,t){const e=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:O.SVGA_INSTANCED_STRIDE}}]}),g=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),I=this.device.createShaderModule({code:t}),s={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},n=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[e,g]}),vertex:{module:I,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:I,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:s,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:n,bindGroupLayout:e,instancedTextureBindGroupLayout:g,instancedDataBindGroup:this.device.createBindGroup({layout:e,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedSvgaInstanceBuffer,offset:0,size:O.INSTANCED_SVGA_CHUNK_BYTES}}]}),needsTexture:!0})}createVapInstancedPipeline(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:O.VAP_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:pA.vapInstanced}),g={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g,multisample:{count:this.msaaSampleCount}});this.pipelines.set("vap-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedVapInstanceBuffer,offset:0,size:O.INSTANCED_VAP_CHUNK_BYTES}}]}),needsTexture:!0})}createInstancedAlphaVideoPipeline(){const A=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX,buffer:{type:"uniform",hasDynamicOffset:!1,minBindingSize:64}},{binding:1,visibility:GPUShaderStage.VERTEX,buffer:{type:"read-only-storage",hasDynamicOffset:!0,minBindingSize:O.ALPHA_INSTANCED_STRIDE}}]}),t=this.device.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.FRAGMENT,texture:{}},{binding:1,visibility:GPUShaderStage.FRAGMENT,sampler:{}}]}),e=this.device.createShaderModule({code:pA.alphaVideoInstanced}),g={format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},I=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A,t]}),vertex:{module:e,entryPoint:"vs",buffers:[{arrayStride:16,attributes:[{shaderLocation:0,offset:0,format:"float32x2"},{shaderLocation:1,offset:8,format:"float32x2"}]}]},fragment:{module:e,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:g,multisample:{count:this.msaaSampleCount}});this.pipelines.set("alpha-video-instanced:none",{pipeline:I,bindGroupLayout:A,instancedTextureBindGroupLayout:t,instancedDataBindGroup:this.device.createBindGroup({layout:A,entries:[{binding:0,resource:{buffer:this.instancedAlphaProjBuffer,offset:0,size:256}},{binding:1,resource:{buffer:this.instancedAlphaInstanceBuffer,offset:0,size:O.INSTANCED_ALPHA_CHUNK_BYTES}}]}),needsTexture:!0})}createTexturedPipeline(A,t,e,g,I,s){const n=this.device.createShaderModule({code:t}),B=s==="test"?{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"equal",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:0}:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"keep",failOp:"keep",depthFailOp:"keep"}},C=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[e]}),vertex:{module:n,entryPoint:"vs",buffers:[{arrayStride:I,attributes:g}]},fragment:{module:n,entryPoint:"fs",targets:[{format:this.format,blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcFactor:"one",dstFactor:"one-minus-src-alpha"}}}]},primitive:{topology:"triangle-list"},depthStencil:B,multisample:{count:this.msaaSampleCount}});this.pipelines.set(A,{pipeline:C,bindGroupLayout:e,needsTexture:!0})}createClipMaskPipeline(A){const t=this.device.createShaderModule({code:pA.clipMask}),e=this.device.createRenderPipeline({layout:this.device.createPipelineLayout({bindGroupLayouts:[A]}),vertex:{module:t,entryPoint:"vs",buffers:[{arrayStride:8,attributes:[{shaderLocation:0,offset:0,format:"float32x2"}]}]},fragment:{module:t,entryPoint:"fs",targets:[{format:this.format,writeMask:0}]},primitive:{topology:"triangle-list"},depthStencil:{format:"depth24plus-stencil8",depthWriteEnabled:!1,depthCompare:"always",stencilFront:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilBack:{compare:"always",passOp:"replace",failOp:"keep",depthFailOp:"keep"},stencilReadMask:255,stencilWriteMask:255},multisample:{count:this.msaaSampleCount}});this.pipelines.set("clip-mask:write",{pipeline:e,bindGroupLayout:A,needsTexture:!1})}beginFrame(){const A=this.canvas.width,t=this.canvas.height;(A!==this.configuredCanvasWidth||t!==this.configuredCanvasHeight)&&this.configureCanvasContext(),this.ensureDepthStencil(A,t),this.encoder=this.device.createCommandEncoder();const e=this.context.getCurrentTexture().createView(),g=this.msaaSampleCount>1&&this.msaaColorView?{view:this.msaaColorView,resolveTarget:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"discard"}:{view:e,clearValue:{r:0,g:0,b:0,a:0},loadOp:"clear",storeOp:"store"};this.uniformSlotIndex=0,this.instancedSvgaRingOffset=0,this.instancedAlphaRingOffset=0,this.instancedVapRingOffset=0,this.lastDrawPipeline=null,this.lastStencilRef=-1,this.lastVertexBufferId=-1,this.lastIndexBufferId=-1,this.lastInstancedTextureBindGroup=null,this.passEncoder=this.encoder.beginRenderPass({colorAttachments:[g],depthStencilAttachment:{view:this.depthStencilView,stencilClearValue:0,stencilLoadOp:"clear",stencilStoreOp:"store",depthClearValue:1,depthLoadOp:"clear",depthStoreOp:"store"}})}endFrame(){this.passEncoder&&this.passEncoder.end(),this.encoder&&this.device.queue.submit([this.encoder.finish()]),this.passEncoder=null,this.encoder=null}ensureInstancedProjection(A){if(!(A.length<16)){if(this.instancedProjectionValid){let t=!0;for(let e=0;e<16;e++)if(this.instancedProjectionCache[e]!==A[e]){t=!1;break}if(t)return}this.instancedProjectionCache.set(A.subarray(0,16)),this.instancedProjectionValid=!0,this.device.queue.writeBuffer(this.instancedAlphaProjBuffer,0,A.buffer,A.byteOffset,64)}}createBuffer(A,t){let e=GPUBufferUsage.COPY_DST;t==="vertex"?e|=GPUBufferUsage.VERTEX:t==="index"?e|=GPUBufferUsage.INDEX:e|=GPUBufferUsage.UNIFORM;const g=(()=>{if(A instanceof ArrayBuffer)return new Uint8Array(A);if(typeof SharedArrayBuffer!="undefined"&&A instanceof SharedArrayBuffer){const Q=new Uint8Array(A);return new Uint8Array(Q)}const n=A,B=n.buffer,C=new Uint8Array(B,n.byteOffset,n.byteLength);return typeof SharedArrayBuffer!="undefined"&&B instanceof SharedArrayBuffer?new Uint8Array(C):C})(),I=this.device.createBuffer({size:Math.max(g.byteLength,4),usage:e,mappedAtCreation:!0});new Uint8Array(I.getMappedRange()).set(g),I.unmap();const s=this.nextId++;return this.buffers.set(s,{buffer:I,usage:t}),{id:s,usage:t}}updateBuffer(A,t,e=0){const g=this.buffers.get(A.id);if(!g)return;const I=(()=>{if(t instanceof ArrayBuffer)return new Uint8Array(t);if(typeof SharedArrayBuffer!="undefined"&&t instanceof SharedArrayBuffer){const a=new Uint8Array(t);return new Uint8Array(a)}const B=t,C=B.buffer,Q=new Uint8Array(C,B.byteOffset,B.byteLength);return typeof SharedArrayBuffer!="undefined"&&C instanceof SharedArrayBuffer?new Uint8Array(Q):Q})(),s=I.byteLength;if(s>g.buffer.size){g.buffer.destroy();let B=GPUBufferUsage.COPY_DST;g.usage==="vertex"?B|=GPUBufferUsage.VERTEX:g.usage==="index"?B|=GPUBufferUsage.INDEX:B|=GPUBufferUsage.UNIFORM,g.buffer=this.device.createBuffer({size:s,usage:B})}const n=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);this.device.queue.writeBuffer(g.buffer,0,n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(t.buffer.destroy(),this.buffers.delete(A.id))}copyHtmlVideoToTextureDirect(A,t,e,g){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:g,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoElementPreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(<video>) failed; using canvas bridge.",I),!1}}copyVideoFrameToTextureDirect(A,t,e,g){if(this.videoFramePreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:g,flipY:!0},{texture:A},[t,e]),!0}catch(I){return this.videoFramePreferCanvasBridge=!0,console.debug("[WebGPU] copyExternalImageToTexture(VideoFrame) failed; using canvas bridge.",I),!1}}drawVideoLikeSourceToTexture(A,t,e,g){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const I=this.videoUploadCanvas,s=this.videoUploadCtx;s&&((I.width!==t||I.height!==e)&&(I.width=t,I.height=e),s.drawImage(g,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:I,flipY:!0},{texture:A},[t,e]))}copyImageSourceToTexture(A,t,e,g,I=!1){if(typeof VideoFrame!="undefined"&&g instanceof VideoFrame){const s=g,n=s.displayWidth||s.codedWidth,B=s.displayHeight||s.codedHeight;if(!n||!B||!t||!e||this.copyVideoFrameToTextureDirect(A,t,e,s))return;this.drawVideoLikeSourceToTexture(A,t,e,s);return}if(g instanceof HTMLVideoElement){const s=g,n=s.videoWidth,B=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!n||!B||!t||!e)return;if(s.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTexture(A,t,e,s);return}if(this.copyHtmlVideoToTextureDirect(A,t,e,s))return;this.drawVideoLikeSourceToTexture(A,t,e,s);return}this.device.queue.copyExternalImageToTexture({source:g},{texture:A,premultipliedAlpha:I},[t,e])}createTexture(A,t){var e,g;const I=(e=t.width)!=null?e:1,s=(g=t.height)!=null?g:1,n=this.device.createTexture({size:[I,s],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT});A instanceof ArrayBuffer?this.device.queue.writeTexture({texture:n},A,{bytesPerRow:I*4},[I,s]):this.copyImageSourceToTexture(n,I,s,A,t.premultiplyAlpha===!0);const B=this.nextId++;return this.textures.set(B,{texture:n,view:n.createView(),width:I,height:s}),{id:B,width:I,height:s}}createEmptyTexture(A,t,e={}){const g=Math.max(1,Math.floor(A)),I=Math.max(1,Math.floor(t)),s=this.device.createTexture({size:[g,I],format:"rgba8unorm",usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT}),n=this.nextId++;return this.textures.set(n,{texture:s,view:s.createView(),width:g,height:I}),{id:n,width:g,height:I}}updateTexture(A,t){const e=this.textures.get(A.id);e&&this.copyImageSourceToTexture(e.texture,e.width,e.height,t)}updateTextureRegion(A,t,e,g,I,s){const n=this.textures.get(A.id);if(!n)return;const B={texture:n.texture,origin:{x:Math.floor(e),y:Math.floor(g)}};if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const E=t,r=E.displayWidth||E.codedWidth,o=E.displayHeight||E.codedHeight;if(!r||!o)return;const h=I!=null?I:r,c=s!=null?s:o;if(h!==r||c!==o){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,E,B.origin.x,B.origin.y);return}try{this.device.queue.copyExternalImageToTexture({source:E,flipY:!0},B,[r,o])}catch(u){this.drawVideoLikeSourceToTextureRegion(n.texture,r,o,E,B.origin.x,B.origin.y)}return}if(t instanceof HTMLVideoElement){const E=t,r=E.videoWidth,o=E.videoHeight;if(E.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!r||!o)return;const h=I!=null?I:r,c=s!=null?s:o;if(h!==r||c!==o){this.drawVideoLikeSourceToTextureRegion(n.texture,h,c,E,B.origin.x,B.origin.y);return}if(E.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(n.texture,r,o,E,B.origin.x,B.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(n.texture,r,o,E,B.origin.x,B.origin.y))return;this.drawVideoLikeSourceToTextureRegion(n.texture,r,o,E,B.origin.x,B.origin.y);return}const C=t,Q=I!=null?I:C.width,a=s!=null?s:C.height;if(Q!==C.width||a!==C.height){this.drawVideoLikeSourceToTextureRegion(n.texture,Q,a,C,B.origin.x,B.origin.y);return}this.device.queue.copyExternalImageToTexture({source:C},B,[C.width,C.height])}copyHtmlVideoToTextureRegionDirect(A,t,e,g,I,s){if(this.videoElementPreferCanvasBridge)return!1;try{return this.device.queue.copyExternalImageToTexture({source:g,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]),!0}catch(n){return!1}}drawVideoLikeSourceToTextureRegion(A,t,e,g,I,s){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const n=this.videoUploadCanvas,B=this.videoUploadCtx;B&&((n.width!==t||n.height!==e)&&(n.width=t,n.height=e),B.drawImage(g,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:n,flipY:!0},{texture:A,origin:{x:I,y:s}},[t,e]))}deleteTexture(A){const t=this.textures.get(A.id);if(!t)return;t.texture.destroy(),this.textures.delete(A.id);const e=`\0${A.id}`;for(const g of this.textureBindGroupCache.keys())g.endsWith(e)&&this.textureBindGroupCache.delete(g)}draw(A){var t,e,g;if(!this.passEncoder)return;if(A.shader==="svga-instanced-premul"){this.drawInstancedSvga(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlpha(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVap(A);return}const I=(t=A.stencil)!=null?t:"none",s=A.shader==="clip-mask"||I==="clear"?"clip-mask:write":`${A.shader}:${I}`,n=this.pipelines.get(s);if(!n)return;const B=this.passEncoder,C=n.pipeline;this.lastDrawPipeline!==C&&(B.setPipeline(C),this.lastDrawPipeline=C,this.lastInstancedTextureBindGroup=null);let Q=0;I==="clear"?Q=0:(I==="write"||A.shader==="clip-mask"||I==="test")&&(Q=1),this.lastStencilRef!==Q&&(B.setStencilReference(Q),this.lastStencilRef=Q);const a=this.uniformSlotIndex++;if(a>=this.maxUniformSlots){console.warn("[WebGPU] uniform slot overflow; increase maxUniformSlots");return}const E=a*this.uniformSlotStride,r=A.uniforms.u_projection;if(n.needsTexture){const d=A.uniforms.u_transform,f=d instanceof Float32Array&&d.length>=16?d:ea,w=A.uniforms.u_atlasRemap,p=w instanceof Float32Array&&w.length>=4?w:ia;if(r instanceof Float32Array&&r.length>=16){const y=this.uniformScratch144;y.set(r.subarray(0,16),0),y.set(f.subarray(0,16),16),y.set(p.subarray(0,4),32),this.device.queue.writeBuffer(this.uniformBuffer,E,y.buffer,y.byteOffset,144)}else this.device.queue.writeBuffer(this.uniformBuffer,E+64,f.buffer,f.byteOffset,64),this.device.queue.writeBuffer(this.uniformBuffer,E+128,p.buffer,p.byteOffset,16)}else r instanceof Float32Array&&r.length>=16&&this.device.queue.writeBuffer(this.uniformBuffer,E,r.buffer,r.byteOffset,64);if(n.needsTexture){const d=A.textures.length>0?A.textures[0]:null,f=d?this.textures.get(d.id):null,w=(e=f==null?void 0:f.view)!=null?e:this.dummyTextureView,p=(g=d==null?void 0:d.id)!=null?g:0,y=`${s}\0${p}`;let m=this.textureBindGroupCache.get(y);m||(m=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:144}},{binding:1,resource:w},{binding:2,resource:this.sampler}]}),this.textureBindGroupCache.set(y,m)),B.setBindGroup(0,m,[E])}else n.uniformOnlyBindGroup||(n.uniformOnlyBindGroup=this.device.createBindGroup({layout:n.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:64}}]})),B.setBindGroup(0,n.uniformOnlyBindGroup,[E]);const o=this.buffers.get(A.vertexBuffer.id),h=this.buffers.get(A.indexBuffer.id);if(!o||!h)return;const c=A.vertexBuffer.id,u=A.indexBuffer.id;this.lastVertexBufferId!==c&&(B.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=c),this.lastIndexBufferId!==u&&(B.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=u),B.drawIndexed(A.indexCount)}drawInstancedSvga(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*13)return;if(s>O.SVGA_INSTANCED_MAX){console.warn("[WebGPU] svga-instanced-premul: instanceCount exceeds max",s);return}const C=`${A.shader}:none`,Q=this.pipelines.get(C);if(!Q)return;const a=Q.pipeline;this.lastDrawPipeline!==a&&(I.setPipeline(a),this.lastDrawPipeline=a,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const E=A.uniforms.u_projection;if(!(E instanceof Float32Array)||E.length<16)return;const r=this.buffers.get(A.vertexBuffer.id),o=this.buffers.get(A.indexBuffer.id);if(!r||!o)return;this.ensureInstancedProjection(E);const h=s*O.SVGA_INSTANCED_STRIDE,c=this.instancedSvgaRingOffset;if(c+this.instancedSvgaSlotBytes>this.instancedSvgaInstanceBuffer.size){console.warn("[WebGPU] instanced SVGA storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedSvgaRingOffset+=this.instancedSvgaSlotBytes,this.device.queue.writeBuffer(this.instancedSvgaInstanceBuffer,c,n.buffer,n.byteOffset,h);const u=A.textures[0],d=u?this.textures.get(u.id):null,f=(e=d==null?void 0:d.view)!=null?e:this.dummyTextureView,w=(g=u==null?void 0:u.id)!=null?g:0,p=`${C}\0${w}`;let y=this.textureBindGroupCache.get(p);y||(y=this.device.createBindGroup({layout:Q.instancedTextureBindGroupLayout,entries:[{binding:0,resource:f},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(p,y)),I.setBindGroup(0,Q.instancedDataBindGroup,[c]),this.lastInstancedTextureBindGroup!==y&&(I.setBindGroup(1,y),this.lastInstancedTextureBindGroup=y);const m=A.vertexBuffer.id,N=A.indexBuffer.id;this.lastVertexBufferId!==m&&(I.setVertexBuffer(0,r.buffer),this.lastVertexBufferId=m),this.lastIndexBufferId!==N&&(I.setIndexBuffer(o.buffer,"uint32"),this.lastIndexBufferId=N),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedAlpha(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*20)return;if(s>O.ALPHA_INSTANCED_MAX){console.warn("[WebGPU] alpha-video-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("alpha-video-instanced:none");if(!C)return;const Q=C.pipeline;this.lastDrawPipeline!==Q&&(I.setPipeline(Q),this.lastDrawPipeline=Q,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const E=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!E||!r)return;this.ensureInstancedProjection(a);const o=s*O.ALPHA_INSTANCED_STRIDE,h=this.instancedAlphaRingOffset;if(h+this.instancedAlphaSlotBytes>this.instancedAlphaInstanceBuffer.size){console.warn("[WebGPU] instanced alpha storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedAlphaRingOffset+=this.instancedAlphaSlotBytes,this.device.queue.writeBuffer(this.instancedAlphaInstanceBuffer,h,n.buffer,n.byteOffset,o);const c=A.textures[0],u=c?this.textures.get(c.id):null,d=(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView,w=`alpha-video-instanced:none\0${(g=c==null?void 0:c.id)!=null?g:0}`;let p=this.textureBindGroupCache.get(w);p||(p=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(w,p)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==p&&(I.setBindGroup(1,p),this.lastInstancedTextureBindGroup=p);const y=A.vertexBuffer.id,m=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,E.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==m&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=m),I.drawIndexed(A.indexCount,s,0,0,0)}drawInstancedVap(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,n=A.instanceData;if(s<1||!n||n.length<s*28)return;if(s>O.VAP_INSTANCED_MAX){console.warn("[WebGPU] vap-instanced: instanceCount exceeds max",s);return}const C=this.pipelines.get("vap-instanced:none");if(!C)return;const Q=C.pipeline;this.lastDrawPipeline!==Q&&(I.setPipeline(Q),this.lastDrawPipeline=Q,this.lastInstancedTextureBindGroup=null),this.lastStencilRef!==0&&(I.setStencilReference(0),this.lastStencilRef=0);const a=A.uniforms.u_projection;if(!(a instanceof Float32Array)||a.length<16)return;const E=this.buffers.get(A.vertexBuffer.id),r=this.buffers.get(A.indexBuffer.id);if(!E||!r)return;this.ensureInstancedProjection(a);const o=s*O.VAP_INSTANCED_STRIDE,h=this.instancedVapRingOffset;if(h+this.instancedVapSlotBytes>this.instancedVapInstanceBuffer.size){console.warn("[WebGPU] instanced VAP storage ring full; increase INSTANCED_STORAGE_RING_SLOTS");return}this.instancedVapRingOffset+=this.instancedVapSlotBytes,this.device.queue.writeBuffer(this.instancedVapInstanceBuffer,h,n.buffer,n.byteOffset,o);const c=A.textures[0],u=c?this.textures.get(c.id):null,d=(e=u==null?void 0:u.view)!=null?e:this.dummyTextureView,w=`vap-instanced:none\0${(g=c==null?void 0:c.id)!=null?g:0}`;let p=this.textureBindGroupCache.get(w);p||(p=this.device.createBindGroup({layout:C.instancedTextureBindGroupLayout,entries:[{binding:0,resource:d},{binding:1,resource:this.sampler}]}),this.textureBindGroupCache.set(w,p)),I.setBindGroup(0,C.instancedDataBindGroup,[h]),this.lastInstancedTextureBindGroup!==p&&(I.setBindGroup(1,p),this.lastInstancedTextureBindGroup=p);const y=A.vertexBuffer.id,m=A.indexBuffer.id;this.lastVertexBufferId!==y&&(I.setVertexBuffer(0,E.buffer),this.lastVertexBufferId=y),this.lastIndexBufferId!==m&&(I.setIndexBuffer(r.buffer,"uint32"),this.lastIndexBufferId=m),I.drawIndexed(A.indexCount,s,0,0,0)}clearStencil(){}setScissor(A,t,e,g){if(!this.passEncoder)return;const I=this.canvas.width,s=this.canvas.height,n=Math.max(0,Math.min(I,Math.round(A))),B=Math.max(0,Math.min(s,Math.round(t))),C=Math.max(n,Math.min(I,Math.round(A+e))),Q=Math.max(B,Math.min(s,Math.round(t+g)));this.passEncoder.setScissorRect(n,B,C-n,Q-B)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,t,e,g,I,s,n,B,C;for(const[,Q]of this.buffers)Q.buffer.destroy();for(const[,Q]of this.textures)Q.texture.destroy();(A=this.uniformBuffer)==null||A.destroy(),(t=this.instancedAlphaProjBuffer)==null||t.destroy(),(e=this.instancedSvgaInstanceBuffer)==null||e.destroy(),(g=this.instancedAlphaInstanceBuffer)==null||g.destroy(),(I=this.instancedVapInstanceBuffer)==null||I.destroy(),(s=this.depthStencilTexture)==null||s.destroy(),(n=this.msaaColorTexture)==null||n.destroy(),(B=this.dummyTexture)==null||B.destroy(),(C=this.device)==null||C.destroy(),this.buffers.clear(),this.textures.clear(),this.textureBindGroupCache.clear(),this.pipelines.clear()}};F(AA,"SVGA_INSTANCED_MAX",2048);F(AA,"SVGA_INSTANCED_STRIDE",52);F(AA,"ALPHA_INSTANCED_MAX",1024);F(AA,"ALPHA_INSTANCED_STRIDE",80);F(AA,"VAP_INSTANCED_MAX",1024);F(AA,"VAP_INSTANCED_STRIDE",112);F(AA,"INSTANCED_SVGA_CHUNK_BYTES",AA.SVGA_INSTANCED_MAX*AA.SVGA_INSTANCED_STRIDE);F(AA,"INSTANCED_ALPHA_CHUNK_BYTES",AA.ALPHA_INSTANCED_MAX*AA.ALPHA_INSTANCED_STRIDE);F(AA,"INSTANCED_VAP_CHUNK_BYTES",AA.VAP_INSTANCED_MAX*AA.VAP_INSTANCED_STRIDE);F(AA,"INSTANCED_STORAGE_RING_SLOTS",512);let QC=AA;function SB(i,A,t){const e=i.createShader(A);if(!e)throw new Error("Failed to create shader");if(i.shaderSource(e,t),i.compileShader(e),!i.getShaderParameter(e,i.COMPILE_STATUS)){const g=i.getShaderInfoLog(e);throw i.deleteShader(e),new Error(`Shader compile failed: ${g}`)}return e}function RA(i,A,t){const e=SB(i,i.VERTEX_SHADER,A),g=SB(i,i.FRAGMENT_SHADER,t),I=i.createProgram();if(!I)throw i.deleteShader(e),i.deleteShader(g),new Error("Failed to create program");if(i.attachShader(I,e),i.attachShader(I,g),i.linkProgram(I),!i.getProgramParameter(I,i.LINK_STATUS)){const s=i.getProgramInfoLog(I);throw i.deleteProgram(I),i.deleteShader(e),i.deleteShader(g),new Error(`Program link failed: ${s}`)}return i.deleteShader(e),i.deleteShader(g),I}function NB(i,A=i.LINEAR,t=i.CLAMP_TO_EDGE){const e=i.createTexture();if(!e)throw new Error("Failed to create texture");return i.bindTexture(i.TEXTURE_2D,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,t),e}var ga=Object.defineProperty,Ia=(i,A,t)=>A in i?ga(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,K=(i,A,t)=>Ia(i,typeof A!="symbol"?A+"":A,t);const wA=class JA{constructor(A,t=!0){K(this,"type","webgl2"),K(this,"canvas"),K(this,"maxTextureSize",4096),K(this,"antialias"),K(this,"gl"),K(this,"nextId",1),K(this,"buffers",new Map),K(this,"textures",new Map),K(this,"programs",new Map),K(this,"cachedDrawProgram",null),K(this,"cachedTex0Id",null),K(this,"cachedProjectionRef",null),K(this,"cachedProjectionShader",null),K(this,"videoUploadCanvas",null),K(this,"videoUploadCtx",null),K(this,"instancedSvgaInstanceGLBuffer",null),K(this,"instancedAlphaInstanceGLBuffer",null),K(this,"instancedVapInstanceGLBuffer",null),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl2",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL2 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl,t=RA(A,H.svgaBatchPremul.vert,H.svgaBatchPremul.frag);this.programs.set("svga-batch-premul",{program:t,uniforms:this.getUniforms(t,["u_projection","u_atlas"]),vao:null});const e=RA(A,H.svgaInstancedPremul.vert,H.svgaInstancedPremul.frag);this.programs.set("svga-instanced-premul",{program:e,uniforms:this.getUniforms(e,["u_projection","u_atlas"]),vao:null});const g=RA(A,H.vap.vert,H.vap.frag);this.programs.set("vap",{program:g,uniforms:this.getUniforms(g,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const I=RA(A,H.alphaVideo.vert,H.alphaVideo.frag);this.programs.set("alpha-video",{program:I,uniforms:this.getUniforms(I,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const s=RA(A,H.rgbaTextured.vert,H.rgbaTextured.frag);this.programs.set("rgba-textured",{program:s,uniforms:this.getUniforms(s,["u_projection","u_transform","u_video","u_atlasRemap"]),vao:null});const n=RA(A,H.alphaVideoInstanced.vert,H.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",{program:n,uniforms:this.getUniforms(n,["u_projection","u_video"]),vao:null});const B=RA(A,H.vapInstanced.vert,H.vapInstanced.frag);this.programs.set("vap-instanced",{program:B,uniforms:this.getUniforms(B,["u_projection","u_video"]),vao:null});const C=RA(A,H.clipMask.vert,H.clipMask.frag);this.programs.set("clip-mask",{program:C,uniforms:this.getUniforms(C,["u_projection"]),vao:null})}getUniforms(A,t){const e=new Map;for(const g of t){const I=this.gl.getUniformLocation(A,g);I&&e.set(g,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}createBuffer(A,t){const e=this.gl,g=e.createBuffer();if(!g)throw new Error("Failed to create buffer");const I=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(I,g),e.bufferData(I,A,e.DYNAMIC_DRAW);const s=this.nextId++;return this.buffers.set(s,{buffer:g,usage:t,byteLength:this.getBufferSourceByteLength(A)}),{id:s,usage:t}}updateBuffer(A,t,e=0){const g=this.buffers.get(A.id);if(!g)return;const I=this.gl,s=g.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(s,g.buffer);const n=this.getBufferSourceByteLength(t);e===0&&n<=g.byteLength?I.bufferSubData(s,0,t):(I.bufferData(s,t,I.DYNAMIC_DRAW),g.byteLength=n)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}uploadVideoFrameToTexture(A,t){const e=this.gl,g=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||g<=0||I<=0)return!1;this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const s=this.videoUploadCanvas,n=this.videoUploadCtx;return n?((s.width!==g||s.height!==I)&&(s.width=g,s.height=I),n.drawImage(t,0,0,g,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,s),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0):!1}createTexture(A,t){var e,g;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=NB(I,s),B=t.premultiplyAlpha===!0;let C=(e=t.width)!=null?e:1,Q=(g=t.height)!=null?g:1;if(A instanceof ArrayBuffer)I.texImage2D(I.TEXTURE_2D,0,I.RGBA,C,Q,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame){const E=A;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,E),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),C=E.displayWidth||E.codedWidth||C,Q=E.displayHeight||E.codedHeight||Q}else if(A instanceof HTMLVideoElement)I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),this.uploadVideoFrameToTexture(n,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),C=A.videoWidth||C,Q=A.videoHeight||Q;else{const E=B,r=t.sourcePremultiplied===!0,o=E&&!r?1:0;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,o),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(C=A.width,Q=A.height)}const a=this.nextId++;return this.textures.set(a,{texture:n,width:C,height:Q}),{id:a,width:C,height:Q}}createEmptyTexture(A,t,e={}){const g=this.gl,I=e.filter==="nearest"?g.NEAREST:g.LINEAR,s=NB(g,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));g.bindTexture(g.TEXTURE_2D,s),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,n,B,0,g.RGBA,g.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const g=this.gl;g.bindTexture(g.TEXTURE_2D,e.texture),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,t),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,g,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,Q;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,Q=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,Q=t.videoHeight}else{const r=t;C=r.width,Q=r.height}if(!C||!Q)return;const a=I!=null?I:C,E=s!=null?s:Q;if(a!==C||E!==Q){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const r=this.videoUploadCanvas,o=this.videoUploadCtx;if(!o)return;r.width=a,r.height=E,o.drawImage(t,0,0,a,E),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,r),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;if(A.shader==="svga-instanced-premul"){this.drawInstancedSvgaGL(A);return}if(A.shader==="alpha-video-instanced"){this.drawInstancedAlphaGL(A);return}if(A.shader==="vap-instanced"){this.drawInstancedVapGL(A);return}this.resetInstancedAuxVertexState();const e=this.gl,g=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||g==="clear"?"clip-mask":A.shader,s=this.programs.get(I);if(!s)return;g==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const Q=A.textures[C].id;if(C===0&&this.cachedTex0Id===Q)continue;const a=this.textures.get(Q);a&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,a.texture),C===0&&(this.cachedTex0Id=Q))}for(const[C,Q]of Object.entries(A.uniforms)){const a=s.uniforms.get(C);if(a)if(Q instanceof Float32Array)if(Q.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===Q)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=Q),e.uniformMatrix4fv(a,!1,Q)}else Q.length===4?e.uniform4fv(a,Q):Q.length===2&&e.uniform2fv(a,Q);else e.uniform1i(a,Q)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0),(g!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,g){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),Q=Math.max(B,Math.min(s,Math.round(A+e))),a=Math.max(C,Math.min(n,Math.round(t+g)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-a,Q-B,a-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;if(A==="svga-batch-premul")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28);else if(A==="vap")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16);else if(A==="clip-mask")t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2);else{t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8);for(let g=2;g<=8;g++)t.vertexAttribDivisor(g,0),t.disableVertexAttribArray(g)}}resetInstancedAuxVertexState(){const A=this.gl;for(let t=1;t<=8;t++)A.vertexAttribDivisor(t,0),A.disableVertexAttribArray(t)}ensureInstancedSvgaInstanceBuffer(){const A=this.gl;if(!this.instancedSvgaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,JA.INST_SVGA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedSvgaInstanceGLBuffer=t}return this.instancedSvgaInstanceGLBuffer}drawInstancedSvgaGL(A){var t;const e=this.gl,g=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(g<1||!I||I.length<g*13)return;if(g>JA.INST_SVGA_GL_MAX){console.warn("[WebGL2] svga-instanced-premul: instanceCount exceeds max",g);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="svga-instanced-premul",n=this.programs.get(s);if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let E=0;E<A.textures.length;E++){const r=A.textures[E].id;if(E===0&&this.cachedTex0Id===r)continue;const o=this.textures.get(r);o&&(e.activeTexture(e.TEXTURE0+E),e.bindTexture(e.TEXTURE_2D,o.texture),E===0&&(this.cachedTex0Id=r))}for(const[E,r]of Object.entries(A.uniforms)){const o=n.uniforms.get(E);if(o)if(r instanceof Float32Array){if(r.length===16){if(E==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===r)continue;E==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=r),e.uniformMatrix4fv(o,!1,r)}}else e.uniform1i(o,r)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const Q=this.ensureInstancedSvgaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,Q),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,g*13);const a=52;e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,a,0),e.vertexAttribDivisor(1,1),e.enableVertexAttribArray(2),e.vertexAttribPointer(2,4,e.FLOAT,!1,a,8),e.vertexAttribDivisor(2,1),e.enableVertexAttribArray(3),e.vertexAttribPointer(3,3,e.FLOAT,!1,a,24),e.vertexAttribDivisor(3,1),e.enableVertexAttribArray(4),e.vertexAttribPointer(4,4,e.FLOAT,!1,a,36),e.vertexAttribDivisor(4,1),e.bindBuffer(e.ARRAY_BUFFER,B.buffer),e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,8,0),e.vertexAttribDivisor(0,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,g)}ensureInstancedAlphaInstanceBuffer(){const A=this.gl;if(!this.instancedAlphaInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,JA.INST_ALPHA_GL_BYTES,A.DYNAMIC_DRAW),this.instancedAlphaInstanceGLBuffer=t}return this.instancedAlphaInstanceGLBuffer}drawInstancedAlphaGL(A){var t;const e=this.gl,g=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(g<1||!I||I.length<g*20)return;for(let r=7;r<=8;r++)e.vertexAttribDivisor(r,0),e.disableVertexAttribArray(r);if(g>JA.INST_ALPHA_GL_MAX){console.warn("[WebGL2] alpha-video-instanced: instanceCount exceeds max",g);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="alpha-video-instanced",n=this.programs.get("alpha-video-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const o=A.textures[r].id;if(r===0&&this.cachedTex0Id===o)continue;const h=this.textures.get(o);h&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,h.texture),r===0&&(this.cachedTex0Id=o))}for(const[r,o]of Object.entries(A.uniforms)){const h=n.uniforms.get(r);if(h)if(o instanceof Float32Array){if(o.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===o)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=o),e.uniformMatrix4fv(h,!1,o)}}else e.uniform1i(h,o)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const Q=this.ensureInstancedAlphaInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,Q),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,g*20);const a=80;for(let r=0;r<5;r++){const o=2+r;e.enableVertexAttribArray(o),e.vertexAttribPointer(o,4,e.FLOAT,!1,a,r*16),e.vertexAttribDivisor(o,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const E=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,E,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,E,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,g)}ensureInstancedVapInstanceBuffer(){const A=this.gl;if(!this.instancedVapInstanceGLBuffer){const t=A.createBuffer();if(!t)throw new Error("createBuffer failed");A.bindBuffer(A.ARRAY_BUFFER,t),A.bufferData(A.ARRAY_BUFFER,JA.INST_VAP_GL_BYTES,A.DYNAMIC_DRAW),this.instancedVapInstanceGLBuffer=t}return this.instancedVapInstanceGLBuffer}drawInstancedVapGL(A){var t;const e=this.gl,g=(t=A.instanceCount)!=null?t:0,I=A.instanceData;if(g<1||!I||I.length<g*28)return;if(g>JA.INST_VAP_GL_MAX){console.warn("[WebGL2] vap-instanced: instanceCount exceeds max",g);return}e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0);const s="vap-instanced",n=this.programs.get("vap-instanced");if(!n)return;this.cachedDrawProgram!==s&&(e.useProgram(n.program),this.cachedDrawProgram=s);for(let r=0;r<A.textures.length;r++){const o=A.textures[r].id;if(r===0&&this.cachedTex0Id===o)continue;const h=this.textures.get(o);h&&(e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_2D,h.texture),r===0&&(this.cachedTex0Id=o))}for(const[r,o]of Object.entries(A.uniforms)){const h=n.uniforms.get(r);if(h)if(o instanceof Float32Array){if(o.length===16){if(r==="u_projection"&&this.cachedProjectionShader===s&&this.cachedProjectionRef===o)continue;r==="u_projection"&&(this.cachedProjectionShader=s,this.cachedProjectionRef=o),e.uniformMatrix4fv(h,!1,o)}}else e.uniform1i(h,o)}const B=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!B||!C)return;const Q=this.ensureInstancedVapInstanceBuffer();e.bindBuffer(e.ARRAY_BUFFER,Q),e.bufferSubData(e.ARRAY_BUFFER,0,I,0,g*28);const a=112;for(let r=0;r<7;r++){const o=2+r;e.enableVertexAttribArray(o),e.vertexAttribPointer(o,4,e.FLOAT,!1,a,r*16),e.vertexAttribDivisor(o,1)}e.bindBuffer(e.ARRAY_BUFFER,B.buffer);const E=16;e.enableVertexAttribArray(0),e.vertexAttribPointer(0,2,e.FLOAT,!1,E,0),e.vertexAttribDivisor(0,0),e.enableVertexAttribArray(1),e.vertexAttribPointer(1,2,e.FLOAT,!1,E,8),e.vertexAttribDivisor(1,0),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,C.buffer),e.drawElementsInstanced(e.TRIANGLES,A.indexCount,e.UNSIGNED_INT,0,g)}destroy(){const A=this.gl;this.instancedSvgaInstanceGLBuffer&&(A.deleteBuffer(this.instancedSvgaInstanceGLBuffer),this.instancedSvgaInstanceGLBuffer=null),this.instancedAlphaInstanceGLBuffer&&(A.deleteBuffer(this.instancedAlphaInstanceGLBuffer),this.instancedAlphaInstanceGLBuffer=null),this.instancedVapInstanceGLBuffer&&(A.deleteBuffer(this.instancedVapInstanceGLBuffer),this.instancedVapInstanceGLBuffer=null);for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}};K(wA,"INST_SVGA_GL_MAX",2048);K(wA,"INST_SVGA_GL_BYTES",wA.INST_SVGA_GL_MAX*52);K(wA,"INST_ALPHA_GL_MAX",1024);K(wA,"INST_ALPHA_GL_BYTES",wA.INST_ALPHA_GL_MAX*80);K(wA,"INST_VAP_GL_MAX",1024);K(wA,"INST_VAP_GL_BYTES",wA.INST_VAP_GL_MAX*112);let aC=wA;var sa=Object.defineProperty,na=(i,A,t)=>A in i?sa(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,eA=(i,A,t)=>na(i,typeof A!="symbol"?A+"":A,t);function Ba(i,A){let t=i.replace(/^#version\s+300\s+es\s*/m,"");return A==="vertex"?(t=t.replace(/layout\s*\(location\s*=\s*\d+\)\s*in\s+/g,"attribute "),t=t.replace(/\bout\s+/g,"varying ")):(t=t.replace(/\bin\s+/g,"varying "),t=t.replace(/out\s+vec4\s+fragColor\s*;\s*/g,""),t=t.replace(/\bfragColor\b/g,"gl_FragColor"),t=t.replace(/\btexture\s*\(/g,"texture2D(")),t}function RB(i,A,t,e){const g=i.createShader(A);if(!g)throw new Error("Failed to create shader");if(i.shaderSource(g,Ba(t,e)),i.compileShader(g),!i.getShaderParameter(g,i.COMPILE_STATUS)){const I=i.getShaderInfoLog(g);throw i.deleteShader(g),new Error(`Shader compile failed: ${I}`)}return g}function cs(i,A,t,e){const g=RB(i,i.VERTEX_SHADER,A,"vertex"),I=RB(i,i.FRAGMENT_SHADER,t,"fragment"),s=i.createProgram();if(!s)throw i.deleteShader(g),i.deleteShader(I),new Error("Failed to create program");i.attachShader(s,g),i.attachShader(s,I);for(const[n,B]of Object.entries(e))i.bindAttribLocation(s,B,n);if(i.linkProgram(s),!i.getProgramParameter(s,i.LINK_STATUS)){const n=i.getProgramInfoLog(s);throw i.deleteProgram(s),i.deleteShader(g),i.deleteShader(I),new Error(`Program link failed: ${n}`)}return i.deleteShader(g),i.deleteShader(I),s}function UB(i,A=i.LINEAR,t=i.CLAMP_TO_EDGE){const e=i.createTexture();if(!e)throw new Error("Failed to create texture");return i.bindTexture(i.TEXTURE_2D,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,A),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,t),e}class $n{constructor(A,t=!0){eA(this,"type","webgl1"),eA(this,"canvas"),eA(this,"maxTextureSize",4096),eA(this,"antialias"),eA(this,"gl"),eA(this,"nextId",1),eA(this,"buffers",new Map),eA(this,"textures",new Map),eA(this,"programs",new Map),eA(this,"cachedDrawProgram",null),eA(this,"cachedTex0Id",null),eA(this,"cachedProjectionRef",null),eA(this,"cachedProjectionShader",null),eA(this,"videoUploadCanvas",null),eA(this,"videoUploadCtx",null),eA(this,"supportsUintIndices",!1),this.canvas=A,this.antialias=t}async init(){const A=this.canvas.getContext("webgl",{alpha:!0,premultipliedAlpha:!1,antialias:this.antialias,depth:!1,stencil:!0});if(!A)throw new Error("WebGL1 not available");this.gl=A,this.maxTextureSize=A.getParameter(A.MAX_TEXTURE_SIZE)||this.maxTextureSize,this.supportsUintIndices=!!A.getExtension("OES_element_index_uint"),A.enable(A.BLEND),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.clearColor(0,0,0,0),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),A.pixelStorei(A.UNPACK_COLORSPACE_CONVERSION_WEBGL,A.NONE),this.initPrograms()}initPrograms(){const A=this.gl;this.programs.set("svga-batch-premul",{program:cs(A,H.svgaBatchPremul.vert,H.svgaBatchPremul.frag,{a_position:0,a_color:1,a_uv:2}),uniforms:new Map}),this.programs.get("svga-batch-premul").uniforms=this.getUniforms(this.programs.get("svga-batch-premul").program,["u_projection","u_atlas"]),this.programs.set("vap",{program:cs(A,H.vap.vert,H.vap.frag,{a_position:0,a_rgbUV:1,a_alphaUV:2}),uniforms:new Map}),this.programs.get("vap").uniforms=this.getUniforms(this.programs.get("vap").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("alpha-video",{program:cs(A,H.alphaVideo.vert,H.alphaVideo.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("alpha-video").uniforms=this.getUniforms(this.programs.get("alpha-video").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("rgba-textured",{program:cs(A,H.rgbaTextured.vert,H.rgbaTextured.frag,{a_position:0,a_uv:1}),uniforms:new Map}),this.programs.get("rgba-textured").uniforms=this.getUniforms(this.programs.get("rgba-textured").program,["u_projection","u_transform","u_video","u_atlasRemap"]),this.programs.set("clip-mask",{program:cs(A,H.clipMask.vert,H.clipMask.frag,{a_position:0}),uniforms:new Map}),this.programs.get("clip-mask").uniforms=this.getUniforms(this.programs.get("clip-mask").program,["u_projection"])}getUniforms(A,t){const e=new Map;for(const g of t){const I=this.gl.getUniformLocation(A,g);I&&e.set(g,I)}return e}beginFrame(){const A=this.gl;A.viewport(0,0,this.canvas.width,this.canvas.height),A.clear(A.COLOR_BUFFER_BIT|A.STENCIL_BUFFER_BIT),A.disable(A.STENCIL_TEST),this.cachedDrawProgram=null,this.cachedTex0Id=null,this.cachedProjectionRef=null,this.cachedProjectionShader=null}endFrame(){this.gl.flush()}getBufferSourceByteLength(A){return ArrayBuffer.isView(A),A.byteLength}normalizeIndexSource(A){if(this.supportsUintIndices)return A;if(ArrayBuffer.isView(A)){if(A instanceof Uint16Array)return A;if("length"in A)return Uint16Array.from(A);const t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);return new Uint16Array(t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength))}return new Uint16Array(A)}createBuffer(A,t){const e=this.gl,g=e.createBuffer();if(!g)throw new Error("Failed to create buffer");const I=t==="index"?this.normalizeIndexSource(A):A,s=t==="index"?e.ELEMENT_ARRAY_BUFFER:e.ARRAY_BUFFER;e.bindBuffer(s,g),e.bufferData(s,I,e.DYNAMIC_DRAW);const n=this.nextId++;return this.buffers.set(n,{buffer:g,usage:t,byteLength:this.getBufferSourceByteLength(I)}),{id:n,usage:t}}updateBuffer(A,t,e=0){const g=this.buffers.get(A.id);if(!g)return;const I=this.gl,s=g.usage==="index"?this.normalizeIndexSource(t):t,n=g.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(n,g.buffer);const B=this.getBufferSourceByteLength(s);e===0&&B<=g.byteLength?I.bufferSubData(n,0,s):(I.bufferData(n,s,I.DYNAMIC_DRAW),g.byteLength=B)}deleteBuffer(A){const t=this.buffers.get(A.id);t&&(this.gl.deleteBuffer(t.buffer),this.buffers.delete(A.id))}ensureVideoUploadCanvas(A,t){return this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d")),!this.videoUploadCtx||!this.videoUploadCanvas?null:((this.videoUploadCanvas.width!==A||this.videoUploadCanvas.height!==t)&&(this.videoUploadCanvas.width=A,this.videoUploadCanvas.height=t),this.videoUploadCtx)}uploadVideoFrameToTexture(A,t){const e=this.gl,g=t.videoWidth,I=t.videoHeight;if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||g<=0||I<=0)return!1;const s=this.ensureVideoUploadCanvas(g,I);return!s||!this.videoUploadCanvas?!1:(s.drawImage(t,0,0,g,I),e.bindTexture(e.TEXTURE_2D,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.videoUploadCanvas),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0),!0)}createTexture(A,t){var e,g;const I=this.gl,s=t.filter==="nearest"?I.NEAREST:I.LINEAR,n=UB(I,s),B=t.premultiplyAlpha===!0;let C=(e=t.width)!=null?e:1,Q=(g=t.height)!=null?g:1;if(A instanceof ArrayBuffer)I.texImage2D(I.TEXTURE_2D,0,I.RGBA,C,Q,0,I.RGBA,I.UNSIGNED_BYTE,new Uint8Array(A));else if(typeof VideoFrame!="undefined"&&A instanceof VideoFrame)I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),C=A.displayWidth||A.codedWidth||C,Q=A.displayHeight||A.codedHeight||Q;else if(A instanceof HTMLVideoElement)I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,B?1:0),this.uploadVideoFrameToTexture(n,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),C=A.videoWidth||C,Q=A.videoHeight||Q;else{const E=B,r=t.sourcePremultiplied===!0,o=E&&!r?1:0;I.bindTexture(I.TEXTURE_2D,n),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,o),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0),"width"in A&&(C=A.width,Q=A.height)}const a=this.nextId++;return this.textures.set(a,{texture:n,width:C,height:Q}),{id:a,width:C,height:Q}}createEmptyTexture(A,t,e={}){const g=this.gl,I=e.filter==="nearest"?g.NEAREST:g.LINEAR,s=UB(g,I),n=Math.max(1,Math.floor(A)),B=Math.max(1,Math.floor(t));g.bindTexture(g.TEXTURE_2D,s),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,n,B,0,g.RGBA,g.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:n,height:B}),{id:C,width:n,height:B}}updateTexture(A,t){const e=this.textures.get(A.id);if(!e)return;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){const I=this.gl;I.bindTexture(I.TEXTURE_2D,e.texture),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.texImage2D(I.TEXTURE_2D,0,I.RGBA,I.RGBA,I.UNSIGNED_BYTE,t),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){this.uploadVideoFrameToTexture(e.texture,t);return}const g=this.gl;g.bindTexture(g.TEXTURE_2D,e.texture),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,g.RGBA,g.UNSIGNED_BYTE,t),g.pixelStorei(g.UNPACK_FLIP_Y_WEBGL,0)}updateTextureRegion(A,t,e,g,I,s){const n=this.textures.get(A.id);if(!n)return;const B=this.gl;B.bindTexture(B.TEXTURE_2D,n.texture);let C,Q;if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame)C=t.displayWidth||t.codedWidth,Q=t.displayHeight||t.codedHeight;else if(t instanceof HTMLVideoElement){if(t.readyState<HTMLMediaElement.HAVE_CURRENT_DATA)return;C=t.videoWidth,Q=t.videoHeight}else{const r=t;C=r.width,Q=r.height}if(!C||!Q)return;const a=I!=null?I:C,E=s!=null?s:Q;if(a!==C||E!==Q){const r=this.ensureVideoUploadCanvas(a,E);if(!r||!this.videoUploadCanvas)return;r.drawImage(t,0,0,a,E),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,this.videoUploadCanvas),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,1),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0);return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,0),B.texSubImage2D(B.TEXTURE_2D,0,e,g,B.RGBA,B.UNSIGNED_BYTE,t)}deleteTexture(A){const t=this.textures.get(A.id);t&&(this.gl.deleteTexture(t.texture),this.textures.delete(A.id),this.cachedTex0Id===A.id&&(this.cachedTex0Id=null))}draw(A){var t;const e=this.gl,g=(t=A.stencil)!=null?t:"none",I=A.shader==="clip-mask"||g==="clear"?"clip-mask":A.shader;if(I==="svga-instanced-premul"||I==="alpha-video-instanced"||I==="vap-instanced")throw new Error(`WebGL1 backend does not support instanced shader: ${I}`);const s=this.programs.get(I);if(!s)return;g==="clear"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,0,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="write"||A.shader==="clip-mask"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,255),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.stencilMask(255),e.colorMask(!1,!1,!1,!1)):g==="test"?(e.enable(e.STENCIL_TEST),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.stencilMask(0),e.colorMask(!0,!0,!0,!0)):(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)),this.cachedDrawProgram!==I&&(e.useProgram(s.program),this.cachedDrawProgram=I);for(let C=0;C<A.textures.length;C++){const Q=A.textures[C].id;if(C===0&&this.cachedTex0Id===Q)continue;const a=this.textures.get(Q);a&&(e.activeTexture(e.TEXTURE0+C),e.bindTexture(e.TEXTURE_2D,a.texture),C===0&&(this.cachedTex0Id=Q))}for(const[C,Q]of Object.entries(A.uniforms)){const a=s.uniforms.get(C);if(a)if(Q instanceof Float32Array)if(Q.length===16){if(C==="u_projection"&&this.cachedProjectionShader===I&&this.cachedProjectionRef===Q)continue;C==="u_projection"&&(this.cachedProjectionShader=I,this.cachedProjectionRef=Q),e.uniformMatrix4fv(a,!1,Q)}else Q.length===4?e.uniform4fv(a,Q):Q.length===2&&e.uniform2fv(a,Q);else e.uniform1i(a,Q)}const n=this.buffers.get(A.vertexBuffer.id),B=this.buffers.get(A.indexBuffer.id);!n||!B||(e.bindBuffer(e.ARRAY_BUFFER,n.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,B.buffer),this.setupAttributes(I),e.drawElements(e.TRIANGLES,A.indexCount,this.supportsUintIndices?e.UNSIGNED_INT:e.UNSIGNED_SHORT,0),(g!=="none"||A.shader==="clip-mask")&&(e.disable(e.STENCIL_TEST),e.colorMask(!0,!0,!0,!0)))}clearStencil(){const A=this.gl;A.stencilMask(255),A.clear(A.STENCIL_BUFFER_BIT)}setScissor(A,t,e,g){const I=this.gl,s=this.canvas.width,n=this.canvas.height,B=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(n,Math.round(t))),Q=Math.max(B,Math.min(s,Math.round(A+e))),a=Math.max(C,Math.min(n,Math.round(t+g)));I.enable(I.SCISSOR_TEST),I.scissor(B,n-a,Q-B,a-C)}resetScissor(){this.gl.disable(this.gl.SCISSOR_TEST)}setupAttributes(A){const t=this.gl;t.disableVertexAttribArray(0),t.disableVertexAttribArray(1),t.disableVertexAttribArray(2),A==="svga-batch-premul"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,3,t.FLOAT,!1,36,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,4,t.FLOAT,!1,36,12),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,36,28)):A==="vap"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,24,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,24,8),t.enableVertexAttribArray(2),t.vertexAttribPointer(2,2,t.FLOAT,!1,24,16)):A==="clip-mask"?(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,8,0)):(t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,16,0),t.enableVertexAttribArray(1),t.vertexAttribPointer(1,2,t.FLOAT,!1,16,8))}destroy(){const A=this.gl;for(const[,e]of this.buffers)A.deleteBuffer(e.buffer);for(const[,e]of this.textures)A.deleteTexture(e.texture);for(const[,e]of this.programs)A.deleteProgram(e.program);this.buffers.clear(),this.textures.clear(),this.programs.clear();const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}function EC(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function Ca(){return typeof navigator!="undefined"&&"gpu"in navigator&&EC()}function Qa(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(i){return!1}}function aa(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(i){return!1}}function Ea(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"}function ra(){return typeof OffscreenCanvas!="undefined"}async function rC(i,A=!0,t=!0,e=!1){const g=t!=null?t:!1,I=t!=null?t:!0;if(e){const n=new $n(i,I);return await n.init(),n}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&EC())try{const n=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(n){const B=new QC(i,n,g);return await B.init(),B}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(n){console.warn(`[GiftStage] WebGPU init failed: ${n instanceof Error?n.message:String(n)}, fallback to WebGL2/WebGL1.`)}else A&&typeof navigator!="undefined"&&"gpu"in navigator&&console.warn("[GiftStage] WebGPU unavailable: GPUQueue.copyExternalImageToTexture is not supported, fallback to WebGL2/WebGL1.");try{const n=new aC(i,I);return await n.init(),n}catch(n){console.warn(`[GiftStage] WebGL2 init failed: ${n instanceof Error?n.message:String(n)}, fallback to WebGL1.`)}const s=new $n(i,I);return await s.init(),s}function oa(i,A){const t=i.clientWidth||i.getBoundingClientRect().width||0,e=i.clientHeight||i.getBoundingClientRect().height||0,g=A>0&&Number.isFinite(A)?A:1,I=Math.max(1,Math.round(t*g)),s=Math.max(1,Math.round(e*g));(i.width!==I||i.height!==s)&&(i.width=I,i.height=s)}function Gs(i){const A=i.clientWidth||i.getBoundingClientRect().width||1,t=i.clientHeight||i.getBoundingClientRect().height||1;return{sx:i.width/Math.max(1,A),sy:i.height/Math.max(1,t)}}const MA=13,fA=9,PA=4,Fs=6;function Ps(i,A,t){const e=Math.floor(i.length/MA),g=Math.floor(A.length/(PA*fA)),I=Math.floor(t.length/Fs),s=Math.min(e,g,I);for(let n=0;n<s;n++){const B=n*MA,C=i[B],Q=i[B+1],a=i[B+2],E=i[B+3],r=i[B+4],o=i[B+5],h=i[B+6],c=i[B+7],u=i[B+8],d=i[B+9],f=i[B+10],w=i[B+11],p=i[B+12],y=h,m=c,N=a*C+h,U=E*C+c,S=a*C+r*Q+h,J=E*C+o*Q+c,R=r*Q+h,z=o*Q+c,M=n*PA*fA;A[M]=y,A[M+1]=m,A[M+2]=0,A[M+3]=1,A[M+4]=1,A[M+5]=1,A[M+6]=u,A[M+7]=d,A[M+8]=f;const v=M+fA;A[v]=N,A[v+1]=U,A[v+2]=0,A[v+3]=1,A[v+4]=1,A[v+5]=1,A[v+6]=u,A[v+7]=w,A[v+8]=f;const b=M+2*fA;A[b]=S,A[b+1]=J,A[b+2]=0,A[b+3]=1,A[b+4]=1,A[b+5]=1,A[b+6]=u,A[b+7]=w,A[b+8]=p;const T=M+3*fA;A[T]=R,A[T+1]=z,A[T+2]=0,A[T+3]=1,A[T+4]=1,A[T+5]=1,A[T+6]=u,A[T+7]=d,A[T+8]=p;const $=n*Fs,j=n*PA;t[$]=j,t[$+1]=j+1,t[$+2]=j+2,t[$+3]=j,t[$+4]=j+2,t[$+5]=j+3}return s}function ha(i,A,t){const e=MB(i,_.__wbindgen_malloc),g=cA;var I=MB(A,_.__wbindgen_malloc),s=cA,n=ua(t,_.__wbindgen_malloc),B=cA;return _.build_batch_vertices(e,g,I,s,A,n,B,t)>>>0}function ca(i){const A=lC(i,_.__wbindgen_malloc),t=cA,e=_.decode_svga(A,t);if(e[2])throw AB(e[1]);return AB(e[0])}function la(i){const A=lC(i,_.__wbindgen_malloc),t=cA,e=_.inflate(A,t);if(e[3])throw AB(e[2]);var g=cC(e[0],e[1]).slice();return _.__wbindgen_free(e[0],e[1]*1,1),g}function oC(){_.init()}function hC(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,t){return Error(Rn(A,t))},__wbg_String_8564e559799eccda:function(A,t){const e=String(t),g=wa(e,_.__wbindgen_malloc,_.__wbindgen_realloc),I=cA;kB().setInt32(A+4,I,!0),kB().setInt32(A+0,g,!0)},__wbg___wbindgen_copy_to_typed_array_a4db337751e0b328:function(A,t,e){new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(cC(A,t))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,t){throw new Error(Rn(A,t))},__wbg_new_4f9fafbb3909af72:function(){return new Object},__wbg_new_99cabae501c0a8a0:function(){return new Map},__wbg_new_f3c9df4f38f3f798:function(){return new Array},__wbg_set_08463b1df38a7e29:function(A,t,e){return A.set(t,e)},__wbg_set_6be42768c690e380:function(A,t,e){A[t]=e},__wbg_set_6c60b2e8ad0e9383:function(A,t,e){A[t>>>0]=e},__wbindgen_cast_0000000000000001:function(A){return A},__wbindgen_cast_0000000000000002:function(A,t){return Rn(A,t)},__wbindgen_init_externref_table:function(){const A=_.__wbindgen_externrefs,t=A.grow(4);A.set(0,void 0),A.set(t+0,void 0),A.set(t+1,null),A.set(t+2,!0),A.set(t+3,!1)}}}}function cC(i,A){return i=i>>>0,$A().subarray(i/1,i/1+A)}let HA=null;function kB(){return(HA===null||HA.buffer.detached===!0||HA.buffer.detached===void 0&&HA.buffer!==_.memory.buffer)&&(HA=new DataView(_.memory.buffer)),HA}let us=null;function da(){return(us===null||us.byteLength===0)&&(us=new Float32Array(_.memory.buffer)),us}function Rn(i,A){return i=i>>>0,ya(i,A)}let ws=null;function fa(){return(ws===null||ws.byteLength===0)&&(ws=new Uint32Array(_.memory.buffer)),ws}let Ds=null;function $A(){return(Ds===null||Ds.byteLength===0)&&(Ds=new Uint8Array(_.memory.buffer)),Ds}function ua(i,A){const t=A(i.length*4,4)>>>0;return fa().set(i,t/4),cA=i.length,t}function lC(i,A){const t=A(i.length*1,1)>>>0;return $A().set(i,t/1),cA=i.length,t}function MB(i,A){const t=A(i.length*4,4)>>>0;return da().set(i,t/4),cA=i.length,t}function wa(i,A,t){if(t===void 0){const n=Ss.encode(i),B=A(n.length,1)>>>0;return $A().subarray(B,B+n.length).set(n),cA=n.length,B}let e=i.length,g=A(e,1)>>>0;const I=$A();let s=0;for(;s<e;s++){const n=i.charCodeAt(s);if(n>127)break;I[g+s]=n}if(s!==e){s!==0&&(i=i.slice(s)),g=t(g,e,e=s+i.length*3,1)>>>0;const n=$A().subarray(g+s,g+e),B=Ss.encodeInto(i,n);s+=B.written,g=t(g,e,s,1)>>>0}return cA=s,g}function AB(i){const A=_.__wbindgen_externrefs.get(i);return _.__externref_table_dealloc(i),A}let $s=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});$s.decode();const Da=2146435072;let Un=0;function ya(i,A){return Un+=A,Un>=Da&&($s=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),$s.decode(),Un=A),$s.decode($A().subarray(i,i+A))}const Ss=new TextEncoder;"encodeInto"in Ss||(Ss.encodeInto=function(i,A){const t=Ss.encode(i);return A.set(t),{read:i.length,written:t.length}});let cA=0,_;function dC(i,A){return _=i.exports,HA=null,us=null,ws=null,Ds=null,_.__wbindgen_start(),_}async function pa(i,A){if(typeof Response=="function"&&i instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(i,A)}catch(g){if(i.ok&&t(i.type)&&i.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",g);else throw g}const e=await i.arrayBuffer();return await WebAssembly.instantiate(e,A)}else{const e=await WebAssembly.instantiate(i,A);return e instanceof WebAssembly.Instance?{instance:e,module:i}:e}function t(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}}function ma(i){if(_!==void 0)return _;i!==void 0&&(Object.getPrototypeOf(i)===Object.prototype?{module:i}=i:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const A=hC();i instanceof WebAssembly.Module||(i=new WebAssembly.Module(i));const t=new WebAssembly.Instance(i,A);return dC(t)}async function fC(i){if(_!==void 0)return _;i!==void 0&&(Object.getPrototypeOf(i)===Object.prototype?{module_or_path:i}=i:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),i===void 0&&(i=new URL("data:application/wasm;base64,AGFzbQEAAAABnAIpYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgA39/fQBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZjNjBiMmU4YWQwZTkzODMAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfMDg0NjNiMWRmMzhhN2UyOQAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2Jp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DQELQQEhBEEAIQMMAQtBASEHIANBARDXASIERQ0BCyAFQQA2AgggBSAENgIEIAUgAzYCACAFQYDOwAAgASACECFFDQFBqM7AAEHWACAFQQ9qQZjOwABBgM/AABBkAAsgByADELQBAAsgACAFKQIANwIAIABBCGogBUEIaigCADYCACAFQRBqJAAL5wIBBX8CQCABQc3/e0EQIAAgAEEQTRsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQDyICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhAlDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQJQsgAEEIaiEDCyADC4sMAgd/An4jAEHQAGsiBSQAAkACQCACIAEoAgQiA00EQCAFQUBrIAJBAEEBQQEQRCAFKAJEIQMgBSgCQEEBRg0BIAVBADYCECAFIAUoAkg2AgwgBSADNgIUIAVBB0EgIANBCnZnayIDIANBB08bQQJ0QQFyNgIYIAVBDGohAyMAQdAAayIGJAAgBiACNgIQIAYgATYCDAJAAkACQCACIAEoAgQiBCACIARJGyIERQ0AAkACQAJAIAMoAggiB0UEQCAGQQxqIgIoAgQiByACKAIAIggoAgQiASABIAdLGyAESQRAQcylwABBOUHopcAAEIUBAAsgBkEUaiIBIAggBBApIAIgByAEazYCBCMAQRBrIgIkACAGQSRqIgQCfyABQQxqIAEoAgAoAgwRBwBFBEAgBCABKQIANwIEIARBDGogAUEIaikCADcCAEEBDAELIAJBCGogAUEIaikCACIKNwMAIAIgASkCACILNwMAIARBBGogAkEMaiACKAIEIAqnIAunKAIIEQMAQQALNgIAIAJBEGokACAGKAIkRQ0BIAZBQGsgBkEwaikCACIKNwMAIAYgBikCKDcDOCAGKAI8IQIgCqciASADKAIIIAMoAgQiBGtLBEAgAyABEBkgAygCBCEECyABBEAgAygCACAEaiACIAH8CgAACyABIAMoAgggAygCBCIEayIHSw0CIAMgASAEajYCBCAGQcQAaiACIAEgBigCOCgCEBEBAAwECyAEIAcgAygCBGtNDQIgAyAEEBkgAiABKAIEIgQgAiAESRsiBA0CDAMLIwBBEGsiASQAAkAgAygCDCICQQFxBEAgASACQQV2IgIgAygCBGo2AgwgASADKAIAIAJrNgIIIAEgAygCCCACajYCBCABQQRqQQFBARBVDAELIAIQlQELIAFBEGokACADQQhqIAZBMGopAgA3AgAgAyAGKQIoNwIADAILIAYgBzYCTCAGIAE2AkggBkHIAGoQigEACwNAIAEoAgAhAiADKAIIIAMoAgQiAWsgBEkEQCADIAQQGSADKAIEIQELIAQEQCADKAIAIAFqIAIgBPwKAAALIAQgAygCCCADKAIEIgFrIgJLDQIgAyABIARqNgIEIwBBEGsiASQAAkACQCAEIAZBDGoiBygCBCIJTQRAIAcoAgAiAigCBCIIIARJDQEgAiAIIARrNgIEIAcgCSAEazYCBCACIAIoAgAgBGo2AgAgAUEQaiQADAILQfilwABBI0GcpsAAELUBAAsgASAINgIMIAEgBDYCCCABQQhqEIoBAAsgBigCECICIAYoAgwiASgCBCIEIAIgBEkbIgQNAAsLIAZB0ABqJAAMAQsgBiACNgIoIAYgBDYCJCAGQSRqEIoBAAsgBSgCECECIAUoAgwhBgJAIAUoAhgiA0EBcUUEQCAAIAM2AgwgACACNgIIIAAgBjYCBCAAQciwwAA2AgAMAQsgBSgCFCEEIAVBHGoiASACIANBBXYiA2o2AgggASAGIANrNgIEIAEgAyAEajYCACAFQShqIQYjAEEgayICJAAgASgCBCEEAkACQAJ/IAEoAggiByABKAIAIghHBEBBDEEEENcBIgFFDQIgAUEBNgIIIAEgCDYCBCABIAQ2AgBB/K7AAAwBCyACIAg2AhwgAiAENgIYIAIgCDYCFCACQQhqIAJBFGoQXSACKAIIIghBASACKAIMIgcbIQQgCEEBckEAIAcbIQFBoK/AAEG0r8AAIAhBAXEbQcivwAAgBxsLIQggBiABNgIMIAYgBzYCCCAGIAQ2AgQgBiAINgIAIAJBIGokAAwBC0EEQQwQ3QEACyAFIAM2AjggBSgCMCIBIANJDQMgBUEwaiICIAEgA2s2AgAgBSAFKAIsIANqNgIsIABBCGogAikCADcCACAAIAUpAig3AgALIAVB0ABqJAAPCyAFIAM2AkQgBSACNgJAIAVBQGsQigEACyADIAUoAkgQtAEACyAFIAE2AjwgBUEGNgJMIAVBBjYCRCAFIAVBPGo2AkggBSAFQThqNgJAQbyDwAAgBUFAa0GspcAAEIUBAAuCAwEEfyAAKAIMIQICQAJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CAkAgACgCHEECdEGw58AAaiIBKAIAIABHBEAgAygCECAARg0BIAMgAjYCFCACDQMMBAsgASACNgIAIAJFDQQMAgsgAyACNgIQIAINAQwCCyAAKAIIIgAgAkcEQCAAIAI2AgwgAiAANgIIDwtByOrAAEHI6sAAKAIAQX4gAUEDdndxNgIADwsgAiADNgIYIAAoAhAiAQRAIAIgATYCECABIAI2AhgLIAAoAhQiAEUNACACIAA2AhQgACACNgIYDwsPC0HM6sAAQczqwAAoAgBBfiAAKAIcd3E2AgALxAIBBH8gAEIANwIQIAACf0EAIAFBgAJJDQAaQR8gAUH///8HSw0AGiABQSYgAUEIdmciA2t2QQFxIANBAXRrQT5qCyICNgIcIAJBAnRBsOfAAGohBEEBIAJ0IgNBzOrAACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQczqwABBzOrAACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgATYCCA8LIARBEGogADYCACAAIAM2AhggACAANgIMIAAgADYCCAvoAgEBfyMAQSBrIgIkAAJAAkACQAJAAkACQCAALQAAQQFrDgMBAgMACyACIAAoAgQ2AgBBFEEBENcBIgBFDQQgAEEQakH5yMAAKAAANgAAIABBCGpB8cjAACkAADcAACAAQenIwAApAAA3AAAgAkEUNgIMIAIgADYCCCACQRQ2AgQgAiACrUKAgICAoAmENwMYIAIgAkEEaq1CgICAgLAJhDcDECABKAIAIAEoAgRBoZXAACACQRBqECEhACACKAIEIgFFDQMgAigCCCABQQEQzgEMAwsgAiAALQABQQJ0IgAoAvzKQDYCCCACIAAoAqTMQDYCBCACIAJBBGqtQoCAgIDACYQ3AxAgASgCACABKAIEQaqFwAAgAkEQahAhIQAMAgsgACgCBCIAKAIAIAAoAgQgARDfASEADAELIAAoAgQiACgCACABIAAoAgQoAhARAAAhAAsgAkEgaiQAIAAPC0EBQRQQtAEAC5ECAgF/AX4jAEEgayIEJAACQAJAAkAgACACTQRAIAEgAksNAUKAgICAsAchBSAAIAFNDQIgBCAANgIIIAQgATYCDCAEIAUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBB7YHAACAEQRBqIAMQhQEACyAEIAA2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBBzILAACAEQRBqIAMQhQEACyAEIAE2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYDAELIAQgATYCCCAEIAI2AgwgBCAFIARBDGqthDcDGAsgBCAFIARBCGqthDcDEEGFg8AAIARBEGogAxCFAQALtAIBA38jAEEwayIDJAAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0IANwMIIANBKGogASABQRhqIgUgA0EIakEgEDUCQAJAAkAgAy0AKCIEQQRGDQADQAJAAkACQAJAAkAgBEEBaw4DAgEABAsgAygCLC0ACEEjRw0DDAILIAMoAiwtAAhBI0YNAQwCCyADLQApQSNHDQELIANBKGoiBBB0IAQgASAFIANBCGpBIBA1IAMtACgiBEEERw0BDAILCyAA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yLDAADYCAAveAQIBfwF+IwBBIGsiAyQAIAMgATYCECADIAA2AgwgA0EBOwEcIAMgAjYCGCADIANBDGo2AhQjAEEQayIBJAAgA0EUaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCBCIDQQFxBEAgAigCACECIAAgA0EBdjYCBCAAIAI2AgAgAEGYycAAIAEoAgQgASgCCCIALQAIIAAtAAkQQAALIABBgICAgHg2AgAgACABNgIMIABBtMnAACABKAIEIAEoAggiAC0ACCAALQAJEEAACy8AAkAgAWlBAUcgAEGAgICAeCABa0tyDQAgAARAIAAgARDXASIBRQ0BCyABDwsACz8AIAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQugEPCyABKAIAIAEoAgQgACgCDCgCACIAKAIAIAAoAgQQIQs4AAJAIAJBgIDEAEYNACAAIAIgASgCEBEAAEUNAEEBDwsgA0UEQEEADwsgACADIAQgASgCDBEEAAtFAQF/QRhBBBDXASICRQRAQQRBGBDdAQALIAIgATYCFCACIAA2AhAgAkKAgICAgICAgIB/NwIIIAJCgICAgMAANwIAIAILPAEBfyMAQRBrIgEkACABQTs2AgwgAUE7NgIEIAEgADYCCCABIABBBGo2AgBBtIHAACABQfivwAAQhQEACzYBAX8DQCAAKAAAIQMgACABKAAANgAAIAEgAzYAACAAQQRqIQAgAUEEaiEBIAJBAWsiAg0ACwvtAQEDfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQfA8LQQAhAiMAQRBrIgMkACAAKAIAIQADQCACIANqQQ9qIABBD3EtAL7XQDoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQbzXwABBAiACIANqQRBqQQAgAmsQFyADQRBqJAAPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCs10A6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUG818AAQQIgAiADakEQakEAIAJrEBcgA0EQaiQAC1UBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgACABKAIAIAIoAgAQegwBCyAA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IABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIANqIQIMAQsMBQsCf0EBIABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIgUgA2ohCCABayIADQALIAMgBWoLIgMgAkkNAEEAIQACQCACRQ0AIAIgBE8EQCACIgAgBEcNAgwBCyACIgAgBmosAABBv39MDQELIANFBEBBACEDDAILIAMgBE8EQCADIARGDQIgACECDAELIAMgBmosAABBv39KDQEgACECCyAGIAQgAiADQcTVwAAQvQEACyALIAAgBmogAyAAayANKAIMEQQADQAgC0EiIA4RAAAhDAsgCkEQaiQAIAwLEAAgASAAKAIAIAAoAgQQIAthAQF/AkACQCAAQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABak8EQCACQQAgAyABQSdqSxsNASAAEBgMAgtB7MnAAEEuQZzKwAAQtQEAC0GsysAAQS5B3MrAABC1AQALCx0BAW8gACgCACUBIAElASABEFggAiUBIAIQWBACCw0AIAAoAgAoAghBAUYLEgBBiLDAAEELQZCwwAAQhQEACw0AIAAoAgAoAhBBAUYLDwAgACABIAIoAgAlARAKCw8AIABBgMnAACABIAIQIQsPACAAQYDOwAAgASACECELDwBB1tnAAEErIAAQtQEACxkAAn8gAUEJTwRAIAEgABAoDAELIAAQDwsLjgEBAn8CQCMAQRBrIgEkACABQQRqIANBAEEBQQEQRCABKAIIIQQgASgCBEEBRwRAIAEoAgwhBSADBEAgBSACIAP8CgAACyAAIAQ2AgggACADNgIEIAAgBTYCACAAQQdBICAEQQp2Z2siACAAQQdPG0ECdEEBcjYCDCABQRBqJAAMAQsgBCABKAIMELQBAAsLDgAgAUHsr8AAQQsQugELCQAgACABEAcACwoAIABBAUEBEFULDAAgACABKQIANwMACz4BAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqIgAoAgAgACgCBEGU68AAKAIAIgBBzQAgABsRAgAACw4AIAFB+M3AAEEFELoBCwoAIAIgACABECALDQAgAUHe5sAAQRgQIAsWAgFvAX8gABAMIQEQNCICIAEmASACCwoAIAAoAgAQlwELCgAgACgCABCVAQsWAQFvIAAgARAIIQIQNCIAIAImASAACxYBAW8gACABEA0hAhA0IgAgAiYBIAALCQAgAEEANgIACwwAQZDrwABBAToAAAsCAAsEAEEACwIACwu3ZgsAQYCAwAALoxhpbnZhbGlkIHRhZyB2YWx1ZTogMA5iZWdpbiA8PSBlbmQgKMAEIDw9IMAQKSB3aGVuIHNsaWNpbmcgYMABYMAAC2J5dGUgaW5kZXggwBYgaXMgb3V0IG9mIGJvdW5kcyBvZiBgwAFgwAALYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMAGKSBvZiBgwAFgwAAiYWR2YW5jZSBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCBhZHZhbmNpbmcgYnkgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAhY2Fubm90IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogwAQgPD0gwABIY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogwAATaW52YWxpZCBrZXkgdmFsdWU6IMAAGWludmFsaWQgd2lyZSB0eXBlIHZhbHVlOiDAABJTZXJpYWxpemUgZmFpbGVkOiDAABBJbmZsYXRlIGZhaWxlZDogwAAYUHJvdG9idWYgZGVjb2RlIGZhaWxlZDogwADAAjogwABzcmNcdmVydGV4LnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlc19tdXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXG91dHB1dF9idWZmZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxmbGF0ZTItMS4xLjlcc3JjXGJ1ZnJlYWRlci5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxzdHJlYW0ucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ1Zlx0YWtlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxzZXJkZS13YXNtLWJpbmRnZW4tMC42LjVcc3JjXGxpYi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcbGliLnJzACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAGludmFsaWQgdmFyaW50TGF5b3V0eHl3aWR0aGhlaWdodFRyYW5zZm9ybWFiY2R0eHR5QXVkaW9FbnRpdHlhdWRpb19rZXlzdGFydF9mcmFtZWVuZF9mcmFtZXN0YXJ0X3RpbWV0b3RhbF90aW1lRnJhbWVFbnRpdHlhbHBoYWxheW91dHRyYW5zZm9ybWNsaXBfcGF0aHNoYXBlc01vdmllRW50aXR5dmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NNb3ZpZVBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzU2hhcGVFbnRpdHlyI3R5cGVzaGFwZXJlY3RlbGxpcHNlc3R5bGVzU3ByaXRlRW50aXR5aW1hZ2Vfa2V5AAAAAAD//////////xgMEABBsJjAAAuzAURhdGEgdG9vIHNob3J0IGZvciB6bGliYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0BgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAZQwQAGsMEAB3DBAAhgwQAJAMEACYDBAAAAAAAP//////////2AwQAEHwmcAAC+sTYXNzZXJ0aW9uIGZhaWxlZDogbiA8PSBzZWxmLmJ1Zi5pbml0IC0gc2VsZi5idWYuZmlsbGVkAABaBhAAUwAAABUBAAAJAAAAuQgQAEkAAACyAQAAMQAAAEF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50Y29ycnVwdCBkZWZsYXRlIHN0cmVhbVZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWUGAAAADAAAAA8AAAAKAAAACAAAAAwAAADMDRAA0g0QAN4NEADtDRAA9w0QAP8NEACsAhAADQAAABwAAAAYAAAArAIQAA0AAAAdAAAAGAAAAKwCEAANAAAAHgAAABEAAACsAhAADQAAAB8AAAARAAAArAIQAA0AAAAgAAAAEQAAAKwCEAANAAAAIQAAABEAAACsAhAADQAAACIAAAASAAAArAIQAA0AAAAjAAAAEgAAAKwCEAANAAAAJAAAABUAAACsAhAADQAAACUAAAAYAAAArAIQAA0AAAAmAAAAGAAAAKwCEAANAAAAJwAAABgAAACsAhAADQAAACgAAAAYAAAArAIQAA0AAAA2AAAACQAAAKwCEAANAAAANwAAAAkAAACsAhAADQAAADgAAAAJAAAArAIQAA0AAAA5AAAACQAAAKwCEAANAAAAOgAAAAkAAACsAhAADQAAADsAAAAJAAAArAIQAA0AAAA8AAAACQAAAKwCEAANAAAAPQAAAAkAAACsAhAADQAAAD4AAAAJAAAArAIQAA0AAABCAAAACQAAAKwCEAANAAAAQwAAAAkAAACsAhAADQAAAEQAAAAJAAAArAIQAA0AAABFAAAACQAAAKwCEAANAAAARgAAAAkAAACsAhAADQAAAEcAAAAJAAAArAIQAA0AAABIAAAACQAAAKwCEAANAAAASQAAAAkAAACsAhAADQAAAEoAAAAJAAAArAIQAA0AAABOAAAACQAAAKwCEAANAAAATwAAAAkAAACsAhAADQAAAFAAAAAJAAAArAIQAA0AAABRAAAACQAAAKwCEAANAAAAUgAAAAkAAACsAhAADQAAAFMAAAAJAAAArAIQAA0AAABUAAAACQAAAKwCEAANAAAAVQAAAAkAAACsAhAADQAAAFYAAAAJAAAArAIQAA0AAABaAAAACQAAAKwCEAANAAAAWwAAAAkAAACsAhAADQAAAFwAAAAJAAAArAIQAA0AAABdAAAACQAAAKwCEAANAAAAXgAAAAkAAACsAhAADQAAAF8AAAAJAAAArAIQAA0AAABgAAAACQAAAKwCEAANAAAAYQAAAAkAAACsAhAADQAAAGIAAAAJAAAArAIQAA0AAABmAAAACQAAAKwCEAANAAAAZwAAAAkAAACsAhAADQAAAGgAAAAJAAAArAIQAA0AAABpAAAACQAAAKwCEAANAAAAagAAAAkAAACsAhAADQAAAGsAAAAJAAAAcmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZFZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdAAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAACISEAAoEhAANBIQAEMSEABNEhAAVRIQAGgDEABLAAAANgEAABgAAAABAAAAAAAAALQDEABgAAAAwwIAAAkAAADqBBAAZAAAAGIAAAAVAAAAYGxlbmAgZ3JlYXRlciB0aGFuIHJlbWFpbmluZ94HEABjAAAAmAAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBjbnQgPD0gc2VsZi5saW1pdADeBxAAYwAAAJIAAAAJAAAAaW52YWxpZCB0YWcgdmFsdWU6IDBkZWxpbWl0ZWQgbGVuZ3RoIGV4Y2VlZGVkYnVmZmVyIHVuZGVyZmxvd3VuZXhwZWN0ZWQgZW5kIGdyb3VwIHRhZ3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkaW52YWxpZCB2YXJpbnRyZWN0ZWxsaXBzZURlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hEZWNvZGVkUmVjdHh5d2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzRGVjb2RlZEF1ZGlvYXVkaW9fa2V5c3RhcnRfZnJhbWVlbmRfZnJhbWVzdGFydF90aW1ldG90YWxfdGltZURlY29kZWRDb2xvcnJnRGVjb2RlZEZyYW1lYWxwaGFsYXlvdXR0cmFuc2Zvcm1jbGlwX3BhdGhzaGFwZXNEZWNvZGVkTW92aWV2ZXJzaW9ucGFyYW1zaW1hZ2Vzc3ByaXRlc2F1ZGlvc0RlY29kZWRTaGFwZWtpbmRwYXRoX2RhdGFzdHlsZURlY29kZWRMYXlvdXREZWNvZGVkUGFyYW1zdmlld19ib3hfd2lkdGh2aWV3X2JveF9oZWlnaHRmcHNmcmFtZXNEZWNvZGVkU3ByaXRlaW1hZ2Vfa2V5RGVjb2RlZEVsbGlwc2VyYWRpdXNfeHJhZGl1c195TWFwIGtleSBpcyBub3QgYSBzdHJpbmcgYW5kIGNhbm5vdCBiZSBhbiBvYmplY3Qga2V5UmdiYUNvbG9yZ3JiYVNoYXBlQXJnc2RTaGFwZVN0eWxlbWl0ZXJfbGltaXRsaW5lX2Rhc2hfaWlpZmlsbGxpbmVfY2Fwc3Ryb2tlbGluZV9kYXNoX2lsaW5lX2Rhc2hfaWlsaW5lX2pvaW5zdHJva2Vfd2lkdGhFbGxpcHNlQXJnc3h5cmFkaXVzX3hyYWRpdXNfeVJlY3RBcmdzd2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzAAAACQAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAD//////////9AWEABB6K3AAAtVY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRmYWlsZWQgdG8gZGVjb2RlIFByb3RvYnVmIG1lc3NhZ2U6IABByK7AAAulAwEAAAAnAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAoAAAAKQAAACoAAAArAAAALAAAALQDEABgAAAAOgUAADIAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADAAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAC0AxAAYAAAAEgFAABJAAAATGF5b3V0RXJyb3IA6gkQAF4AAACqAAAABQAAAGFib3J0AAAA6gkQAF4AAABuAAAACQAAAG92ZXJmbG93ugIQAGQAAACpAgAAFQAAALoCEABkAAAAvQIAAB0AAAA8AAAAPQAA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OwQAACYAAAAbBxAAbAAAAEQEAAAjAAAAGwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAAEcEAAANAAAAGwcQAGwAAABIBAAAIgAAABsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABNBAAADQAAABsHEABsAAAATgQAACIAAAAbBxAAbAAAAE4EAAANAAAAGwcQAGwAAABPBAAAJgAAABsHEABsAAAATwQAAA0AAAAbBxAAbAAAACwEAAAXAAAAmwUQAG4AAABCAQAAHAAAAJsFEABuAAAAdgEAADAAAABkZXN0IGlzIG91dCBvZiBib3VuZHMAAABtXcvWLFDrY3hBpldxG4u5mrjukVEUlljPlgDo0p8SimVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQg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",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:Nn&&Nn.tagName.toUpperCase()==="SCRIPT"&&Nn.src||new URL("gift-stage.cjs.js",document.baseURI).href));const A=hC();(typeof i=="string"||typeof Request=="function"&&i instanceof Request||typeof URL=="function"&&i instanceof URL)&&(i=fetch(i));const{instance:t,module:e}=await pa(await i,A);return dC(t)}const Ga=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:ha,decode_svga:ca,default:fC,inflate:la,init:oC,initSync:ma},Symbol.toStringTag,{value:"Module"})),Fa="data:application/wasm;base64,AGFzbQEAAAABnAIpYAJ/fwF/YAN/f38AYAJ/fwBgBH9/f38AYAN/f38Bf2AFf39/f38AYAF/AGABfwF/YAR/f39/AX9gBn9/f39/fwBgAABgAAFvYAV/f39/fwF/YAJ/fwFvYAZ/f39/f38Bf2AAAX9gBX9/fn9/AGAFf399f38AYAV/f3x/fwBgAAR/f39/YAADf39/YANvf28AYANvb28Bb2ADb29vAGACf28AYAFvAX9gA39/bwBgAXwBb2AIf39/f39/f38AYAJ/fwF+YAZ/f39+f38AYAZ/f399f38AYAZ/f398f38AYAJ/fwR/f39/YAJ/fwN/f39gCH9/f39vf39vAX9gBH9+f38AYAR/fX9/AGAEf3x/fwBgA39/fQBgAXwBfwK2Bg4XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193Ymdfc2V0XzZjNjBiMmU4YWQwZTkzODMAFRcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19zZXRfMDg0NjNiMWRmMzhhN2UyOQAWFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX3NldF82YmU0Mjc2OGM2OTBlMzgwABcXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMdX193YmdfU3RyaW5nXzg1NjRlNTU5Nzk5ZWNjZGEAGBcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxpfX3diZ19uZXdfOTljYWJhZTUwMWMwYThhMAALFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzGl9fd2JnX25ld19mM2M5ZGY0ZjM4ZjNmNzk4AAsXLi9naWZ0X3N0YWdlX3dhc21fYmcuanMaX193YmdfbmV3XzRmOWZhZmJiMzkwOWFmNzIACxcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcydfX3diZ19fX3diaW5kZ2VuX3Rocm93XzgxZmM3NzY3OWFmODNiYzYAAhcuL2dpZnRfc3RhZ2Vfd2FzbV9iZy5qcxxfX3diZ19FcnJvcl8yZTU5YjFiMzdhOWEzNGMzAA0XLi9naWZ0X3N0YWdlX3dhc21fYmcuanMrX193YmdfX193YmluZGdlbl9pc19zdHJpbmdfYjI5YjVjNWE4MDY1YmExYQAZFy4vZ2lmdF9zdGFnZV93YXNtX2JnLmpzNV9fd2JnX19fd2Jp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DQELQQEhBEEAIQMMAQtBASEHIANBARDXASIERQ0BCyAFQQA2AgggBSAENgIEIAUgAzYCACAFQYDOwAAgASACECFFDQFBqM7AAEHWACAFQQ9qQZjOwABBgM/AABBkAAsgByADELQBAAsgACAFKQIANwIAIABBCGogBUEIaigCADYCACAFQRBqJAAL5wIBBX8CQCABQc3/e0EQIAAgAEEQTRsiAGtPDQAgAEEQIAFBC2pBeHEgAUELSRsiBGpBDGoQDyICRQ0AIAJBCGshAQJAIABBAWsiAyACcUUEQCABIQAMAQsgAkEEayIFKAIAIgZBeHEgAiADakEAIABrcUEIayICIABBACACIAFrQRBNG2oiACABayICayEDIAZBA3EEQCAAIAMgACgCBEEBcXJBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSACIAUoAgBBAXFyQQJyNgIAIAEgAmoiAyADKAIEQQFyNgIEIAEgAhAlDAELIAEoAgAhASAAIAM2AgQgACABIAJqNgIACwJAIAAoAgQiAUEDcUUNACABQXhxIgIgBEEQak0NACAAIAQgAUEBcXJBAnI2AgQgACAEaiIBIAIgBGsiBEEDcjYCBCAAIAJqIgIgAigCBEEBcjYCBCABIAQQJQsgAEEIaiEDCyADC4sMAgd/An4jAEHQAGsiBSQAAkACQCACIAEoAgQiA00EQCAFQUBrIAJBAEEBQQEQRCAFKAJEIQMgBSgCQEEBRg0BIAVBADYCECAFIAUoAkg2AgwgBSADNgIUIAVBB0EgIANBCnZnayIDIANBB08bQQJ0QQFyNgIYIAVBDGohAyMAQdAAayIGJAAgBiACNgIQIAYgATYCDAJAAkACQCACIAEoAgQiBCACIARJGyIERQ0AAkACQAJAIAMoAggiB0UEQCAGQQxqIgIoAgQiByACKAIAIggoAgQiASABIAdLGyAESQRAQcylwABBOUHopcAAEIUBAAsgBkEUaiIBIAggBBApIAIgByAEazYCBCMAQRBrIgIkACAGQSRqIgQCfyABQQxqIAEoAgAoAgwRBwBFBEAgBCABKQIANwIEIARBDGogAUEIaikCADcCAEEBDAELIAJBCGogAUEIaikCACIKNwMAIAIgASkCACILNwMAIARBBGogAkEMaiACKAIEIAqnIAunKAIIEQMAQQALNgIAIAJBEGokACAGKAIkRQ0BIAZBQGsgBkEwaikCACIKNwMAIAYgBikCKDcDOCAGKAI8IQIgCqciASADKAIIIAMoAgQiBGtLBEAgAyABEBkgAygCBCEECyABBEAgAygCACAEaiACIAH8CgAACyABIAMoAgggAygCBCIEayIHSw0CIAMgASAEajYCBCAGQcQAaiACIAEgBigCOCgCEBEBAAwECyAEIAcgAygCBGtNDQIgAyAEEBkgAiABKAIEIgQgAiAESRsiBA0CDAMLIwBBEGsiASQAAkAgAygCDCICQQFxBEAgASACQQV2IgIgAygCBGo2AgwgASADKAIAIAJrNgIIIAEgAygCCCACajYCBCABQQRqQQFBARBVDAELIAIQlQELIAFBEGokACADQQhqIAZBMGopAgA3AgAgAyAGKQIoNwIADAILIAYgBzYCTCAGIAE2AkggBkHIAGoQigEACwNAIAEoAgAhAiADKAIIIAMoAgQiAWsgBEkEQCADIAQQGSADKAIEIQELIAQEQCADKAIAIAFqIAIgBPwKAAALIAQgAygCCCADKAIEIgFrIgJLDQIgAyABIARqNgIEIwBBEGsiASQAAkACQCAEIAZBDGoiBygCBCIJTQRAIAcoAgAiAigCBCIIIARJDQEgAiAIIARrNgIEIAcgCSAEazYCBCACIAIoAgAgBGo2AgAgAUEQaiQADAILQfilwABBI0GcpsAAELUBAAsgASAINgIMIAEgBDYCCCABQQhqEIoBAAsgBigCECICIAYoAgwiASgCBCIEIAIgBEkbIgQNAAsLIAZB0ABqJAAMAQsgBiACNgIoIAYgBDYCJCAGQSRqEIoBAAsgBSgCECECIAUoAgwhBgJAIAUoAhgiA0EBcUUEQCAAIAM2AgwgACACNgIIIAAgBjYCBCAAQciwwAA2AgAMAQsgBSgCFCEEIAVBHGoiASACIANBBXYiA2o2AgggASAGIANrNgIEIAEgAyAEajYCACAFQShqIQYjAEEgayICJAAgASgCBCEEAkACQAJ/IAEoAggiByABKAIAIghHBEBBDEEEENcBIgFFDQIgAUEBNgIIIAEgCDYCBCABIAQ2AgBB/K7AAAwBCyACIAg2AhwgAiAENgIYIAIgCDYCFCACQQhqIAJBFGoQXSACKAIIIghBASACKAIMIgcbIQQgCEEBckEAIAcbIQFBoK/AAEG0r8AAIAhBAXEbQcivwAAgBxsLIQggBiABNgIMIAYgBzYCCCAGIAQ2AgQgBiAINgIAIAJBIGokAAwBC0EEQQwQ3QEACyAFIAM2AjggBSgCMCIBIANJDQMgBUEwaiICIAEgA2s2AgAgBSAFKAIsIANqNgIsIABBCGogAikCADcCACAAIAUpAig3AgALIAVB0ABqJAAPCyAFIAM2AkQgBSACNgJAIAVBQGsQigEACyADIAUoAkgQtAEACyAFIAE2AjwgBUEGNgJMIAVBBjYCRCAFIAVBPGo2AkggBSAFQThqNgJAQbyDwAAgBUFAa0GspcAAEIUBAAuCAwEEfyAAKAIMIQICQAJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgJBFGogAkEQaiACKAIUIgEbIQQgAkEUQRAgARtqKAIAIgENAAsgBUEANgIACyADRQ0CAkAgACgCHEECdEGw58AAaiIBKAIAIABHBEAgAygCECAARg0BIAMgAjYCFCACDQMMBAsgASACNgIAIAJFDQQMAgsgAyACNgIQIAINAQwCCyAAKAIIIgAgAkcEQCAAIAI2AgwgAiAANgIIDwtByOrAAEHI6sAAKAIAQX4gAUEDdndxNgIADwsgAiADNgIYIAAoAhAiAQRAIAIgATYCECABIAI2AhgLIAAoAhQiAEUNACACIAA2AhQgACACNgIYDwsPC0HM6sAAQczqwAAoAgBBfiAAKAIcd3E2AgALxAIBBH8gAEIANwIQIAACf0EAIAFBgAJJDQAaQR8gAUH///8HSw0AGiABQSYgAUEIdmciA2t2QQFxIANBAXRrQT5qCyICNgIcIAJBAnRBsOfAAGohBEEBIAJ0IgNBzOrAACgCAHFFBEAgBCAANgIAIAAgBDYCGCAAIAA2AgwgACAANgIIQczqwABBzOrAACgCACADcjYCAA8LAkACQCABIAQoAgAiAygCBEF4cUYEQCADIQIMAQsgAUEZIAJBAXZrQQAgAkEfRxt0IQUDQCADIAVBHXZBBHFqIgQoAhAiAkUNAiAFQQF0IQUgAiEDIAIoAgRBeHEgAUcNAAsLIAIoAggiASAANgIMIAIgADYCCCAAQQA2AhggACACNgIMIAAgATYCCA8LIARBEGogADYCACAAIAM2AhggACAANgIMIAAgADYCCAvoAgEBfyMAQSBrIgIkAAJAAkACQAJAAkACQCAALQAAQQFrDgMBAgMACyACIAAoAgQ2AgBBFEEBENcBIgBFDQQgAEEQakH5yMAAKAAANgAAIABBCGpB8cjAACkAADcAACAAQenIwAApAAA3AAAgAkEUNgIMIAIgADYCCCACQRQ2AgQgAiACrUKAgICAoAmENwMYIAIgAkEEaq1CgICAgLAJhDcDECABKAIAIAEoAgRBoZXAACACQRBqECEhACACKAIEIgFFDQMgAigCCCABQQEQzgEMAwsgAiAALQABQQJ0IgAoAvzKQDYCCCACIAAoAqTMQDYCBCACIAJBBGqtQoCAgIDACYQ3AxAgASgCACABKAIEQaqFwAAgAkEQahAhIQAMAgsgACgCBCIAKAIAIAAoAgQgARDfASEADAELIAAoAgQiACgCACABIAAoAgQoAhARAAAhAAsgAkEgaiQAIAAPC0EBQRQQtAEAC5ECAgF/AX4jAEEgayIEJAACQAJAAkAgACACTQRAIAEgAksNAUKAgICAsAchBSAAIAFNDQIgBCAANgIIIAQgATYCDCAEIAUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBB7YHAACAEQRBqIAMQhQEACyAEIAA2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYIAQgBSAEQQhqrYQ3AxBBzILAACAEQRBqIAMQhQEACyAEIAE2AgggBCACNgIMIARCgICAgLAHIgUgBEEMaq2ENwMYDAELIAQgATYCCCAEIAI2AgwgBCAFIARBDGqthDcDGAsgBCAFIARBCGqthDcDEEGFg8AAIARBEGogAxCFAQALtAIBA38jAEEwayIDJAAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0IANwMIIANBKGogASABQRhqIgUgA0EIakEgEDUCQAJAAkAgAy0AKCIEQQRGDQADQAJAAkACQAJAAkAgBEEBaw4DAgEABAsgAygCLC0ACEEjRw0DDAILIAMoAiwtAAhBI0YNAQwCCyADLQApQSNHDQELIANBKGoiBBB0IAQgASAFIANBCGpBIBA1IAMtACgiBEEERw0BDAILCyAAIAMpAyg3AgAMAQsgAygCLCIBQSFPDQEgAiABEJoBIAEEQCACKAIEIAIoAghqIANBCGogAfwKAAALIAAgATYCBCAAQQQ6AAAgAiACKAIIIAFqNgIICyADQTBqJAAPC0EAIAFBIEG4msAAEC0AC/8BAQN/IwBBEGsiAyQAAn8CQCABKAIIIgJBgICAEHFFBEAgAkGAgIAgcQ0BIAFBAUEBQQAgACgCACADQQZqIgEQIyIAIAFqQQogAGsQFwwCCyAAKAIAIQBBACECA0AgAiADakENaiAAQQ9xLQCs10A6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUG818AAQQIgAiADakEOakEAIAJrEBcMAQsgACgCACEAQQAhAgNAIAIgA2pBDWogAEEPcS0AvtdAOgAAIAJBAWshAiAAQQ9LIABBBHYhAA0ACyABQQFBvNfAAEECIAIgA2pBDmpBACACaxAXCyADQRBqJAALiAIBBn8gACgCCCIEIQICf0EBIAFBgAFJDQAaQQIgAUGAEEkNABpBA0EEIAFBgIAESRsLIgYgACgCACAEa0sEfyAAIAQgBhBHIAAoAggFIAILIAAoAgRqIQICQCABQYABTwRAIAFBP3FBgH9yIQUgAUEGdiEDIAFBgBBJBEAgAiAFOgABIAIgA0HAAXI6AAAMAgsgAUEMdiEHIANBP3FBgH9yIQMgAUH//wNNBEAgAiAFOgACIAIgAzoAASACIAdB4AFyOgAADAILIAIgBToAAyACIAM6AAIgAiAHQT9xQYB/cjoAASACIAFBEnZBcHI6AAAMAQsgAiABOgAACyAAIAQgBmo2AghBAAuSAgEDfyMAQRBrIgQkAAJAAkAgASgCCEEBRgRAIAEoAgAhBSABKAIEIQYgAUEMQQQQzgEgBEEIaiIBIAY2AgAgBCACIAVrIgIgA2o2AgQgBCAFNgIAIARBB0EgIAZBCnZnayIDIANBB08bQQJ0QQFyNgIMIAQgAhBUIABBCGogASkCADcCACAAIAQpAgA3AgAMAQsgBCADQQBBAUEBEEQgBCgCBCEFIAQoAgBBAUYNASAEKAIIIQYgAwRAIAYgAiAD/AoAAAsgARCXASAAIAU2AgggACADNgIEIAAgBjYCACAAQQdBICAFQQp2Z2siACAAQQdPG0ECdEEBcjYCDAsgBEEQaiQADwsgBSAEKAIIELQBAAuIAgEGfyAAKAIIIgQhAgJ/QQEgAUGAAUkNABpBAiABQYAQSQ0AGkEDQQQgAUGAgARJGwsiBiAAKAIAIARrSwR/IAAgBCAGEE8gACgCCAUgAgsgACgCBGohAgJAIAFBgAFPBEAgAUE/cUGAf3IhBSABQQZ2IQMgAUGAEEkEQCACIAU6AAEgAiADQcABcjoAAAwCCyABQQx2IQcgA0E/cUGAf3IhAyABQf//A00EQCACIAU6AAIgAiADOgABIAIgB0HgAXI6AAAMAgsgAiAFOgADIAIgAzoAAiACIAdBP3FBgH9yOgABIAIgAUESdkFwcjoAAAwBCyACIAE6AAALIAAgBCAGajYCCEEAC4gCAgV/AX4jAEEQayIFJABBASEHQQQhBgJAAkAgAyAEakEBa0EAIANrca0gAq1+IgpCIIinDQAgCqciAkGAgICAeCADa0sNAEEAIQYgBUEMaiEIAkAgBEUNACABKAIAIglFDQAgBSADNgIMIAQgCWwhBiABKAIEIQQgBUEIaiEICyAIIAY2AgACQAJAAn8CQCAFKAIMBEAgBSgCCCIBRQRAIAINAiADDAMLIAQgASADIAIQwAEMAgsgAg0AIAMhBAwCCyACIAMQ1wELIgQNACAAIAM2AgQMAQsgACAENgIEQQAhBwtBCCEGDAELQQAhAgsgACAGaiACNgIAIAAgBzYCACAFQRBqJAALnAQBCn8jAEEQayIGJAACQEH45sAAKAIARQRAQfjmwABBfzYCAEGI58AAKAIAIgJBhOfAACgCACIARgRAIAIiAEH85sAAKAIAIgFGBEDQb0GAASAAIABBgAFNGyIA/A8BIgRBf0YNAwJAQYznwAAoAgAiAUUEQEGM58AAIAQ2AgAMAQsgASACaiAERw0ECyAGQQhqIQcjAEEQayIFJAACf0GBgICAeEH85sAAKAIAQYTnwAAoAgAiAWsgAE8NABogBUEIaiEIIwBBEGsiAyQAAn9BACAAIAFqIgQgAEkNABogA0EEakH85sAAIARBBEEEEDMgAygCBEEBRgRAIAMoAgwhCSADKAIIDAELIAMoAgghAUH85sAAIAQ2AgBBgOfAACABNgIAQYGAgIB4CyEBIAggCTYCBCAIIAE2AgAgA0EQaiQAQYGAgIB4IAUoAggiAUGBgICAeEYNABogBSgCDCEAIAELIQEgByAANgIEIAcgATYCACAFQRBqJAAgBigCCEGBgICAeEcNA0H85sAAKAIAIQFBhOfAACgCACEACyAAIAFPDQJBgOfAACgCACAAQQJ0aiACQQFqNgIAQYTnwAAgAEEBaiIANgIACyAAIAJNDQFBiOfAAEGA58AAKAIAIAJBAnRqKAIANgIAQfjmwABB+ObAACgCAEEBajYCAEGM58AAKAIAIAZBEGokACACag8LQdywwAAQkwELAAvYCwISfwN+IwBBEGsiDSQAIA1BBGogARA9AkACQCANKAIERQRAA0AgAikDCCEXIAIpAwAhGCANQQRqIQ4gDSgCCCEMIA0oAgwhD0EAIREjAEEQayIGJAAgAigCECEFQQBBECAPGygC8LFAIQcjAEEgayIIJAAgCCAENgIQIAggAzYCDAJAAkACQAJAIAdBA0cEQCAFLQCO0gIhCyAFQQA6AI7SAiAFLACM0gIiCUF8RwRAIAlBAE4EQCAFLQCN0gIhCiAHQQRGIglFIAUtAI/SAiIQQQFxcUUEQCAKQQJJQcAAQQggChtyIQogBSAJIBByQQFxOgCP0gICQAJAIAkgC0EBcXFFBEAgBSgChIACDQkgCEEUaiAFQYiAAmoiFCAMIA8gBUGAgAIgBSgCgIACIAogCkECciAJGyIVEA4gBSAILQAYIgk6AIzSAiAIKAIUIgogD00NASAPIQcMAgsgCEEUaiAFQYiAAmogDCAPIAMgBEEAIApBBHIQDiAFIAgtABgiBzoAjNICQQEhCkF7IQkgCCgCHCEMIAgoAhQhCyAHQfwBRg0HIAfAIgdBAE4NBkF9IQkMBwsgCCgCHCELQQEhEiAHQQRGIRYgDyEHQQAhEwNAIAUgCzYChIACIAogE2ohEyAFIAhBDGoQUiARaiERQXshCwJAAkAgCUH/AXEiEEH8AUYNACAJwEEASARAQX0hCwwBCyAPRSAQQQFGcQ0AIBZFBEAgEEUhCSAFKAKEgAIhCwJAIBBFIAcgCkZyDQBBACEJIAgoAhBFDQAgC0UNAwsgCSALRXEhC0EAIRIMAQsgEARAIAgoAhANAgwBC0F7QQEgBSgChIACIgcbIQsgB0EARyESCyAGIBE2AgwgBiATNgIIIAYgCzYCBCAGIBI2AgAMCgsgCEEUaiAUIAogDGoiDCAHIAprIgcgBUGAgAIgBSgCgIACIBUQDiAFIAgtABgiCToAjNICIAgoAhwhCyAIKAIUIgogB00NAAsLIAogByAHQaTCwAAQLQALIAZCgYCAgGA3AgAgBkIANwIIDAYLIAZCgYCAgFA3AgAgBkIANwIIDAULIAZCgYCAgLB/NwIAIAZCADcCCAwECyAGQoGAgIBgNwIAIAZCADcCCAwDCyAHRQRAQQAhCkEBIQkMAQsgBUH/AToAjNICCyAGIAw2AgwgBiALNgIIIAYgCTYCBCAGIAo2AgAMAQsgBiAFIAhBDGoQUjYCDCAGQQA2AgggBkEANgIAIAYgBS0AjNICIAUoAoSAAnJFNgIECyAIQSBqJAAgAiACKQMAIAY1Agh8NwMAIAIgAikDCCAGNQIMfDcDCCAGKAIEIQcCQAJAIAYoAgBBAUYEQCAHQXtHDQEgDkECNgIAIA5BAToABAwCCwJAAkACQCAHQQFrDgIBAgALIA5BAjYCACAOQQA6AAQMAwsgDkECNgIAIA5BAjoABAwCC0EAIQcCQCAFLQCI0gIiDEUgDEEZa0EKSXINACAFKALM0QJFDQAgBSgC2NECIQcLIA4gBzYCBCAOQQE2AgAMAQsgDkEANgIACyAGQRBqJAAgDS0ACCEHIA0oAgQgAikDCCEZIAEgASgCFCIFIAEoAhAgAikDACAYfadqIgYgBSAGSRs2AhBBAkcEQCMAQRBrIgIkACACQQRqQRZBAEEBQQEQRCACKAIIIQMCQCACKAIEQQFHBEAgAigCDCIEQbabwABBFvwKAABBDEEEENcBIgFFDQEgAUEWNgIIIAEgBDYCBCABIAM2AgBBDEEEENcBIgNFBEBBBEEMEN0BAAsgA0EUOgAIIANBxLHAADYCBCADIAE2AgAgACADrUIghkIDhDcCACACQRBqJAAMBgsgAyACKAIMELQBAAtBBEEMEN0BAAsgGSAXfaciDCAPRSAERXJyIAdBAkZyDQIgDUEEaiABED0gDSgCBEUNAAsLIAAgDSkCCDcCAAwBCyAAQQQ6AAAgACAMNgIECyANQRBqJAALwAECAn8BfiMAQRBrIgEkAAJAAkACQCACrSADrX4iBkIgiKcNACAGpyICQQdqIgQgAkkNACADQQhqIgUgBEF4cSIEaiICIAVJIAJB+P///wdLcg0AIAIEfyACQQgQ1wEFQQgLIgUNAUEIIAIQ3QEACxCnASAAIAEpAwA3AgQgAEEANgIADAELIABBADYCDCAAIANBAWsiAjYCBCAAIAQgBWo2AgAgACACIANBA3ZBB2wgAkEISRs2AggLIAFBEGokAAv8AQIDfwF+IwBBMGsiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBLGoiBEEANgIAIAJCgICAgBA3AiQgAkEkakGAycAAIAMoAgAiAygCACADKAIEECEaIAJBIGogBCgCACIDNgIAIAIgAikCJCIFNwMYIAFBCGogAzYCACABIAU3AgALIAEpAgAhBSABQoCAgIAQNwIAIAJBEGoiAyABQQhqIgEoAgA2AgAgAUEANgIAIAIgBTcDCEEMQQQQ1wEiAUUEQEEEQQwQ3QEACyABIAIpAwg3AgAgAUEIaiADKAIANgIAIABB7MrAADYCBCAAIAE2AgAgAkEwaiQAC98BAQV/IwBBEGsiByQAIAdBDGohCAJAIARFDQAgASgCACIGRQ0AIAcgAzYCDCAEIAZsIQUgASgCBCEJIAdBCGohCAsgCCAFNgIAAkAgBygCDCIFBEAgBygCCCEGAkAgAkUEQCAGBEAgCSAGIAUQzgELIAEgAzYCBAwBCyACIARsIQgCfwJAIARFBEAgBkUNASAJIAYgBRDOAQwBCyAJIAYgBSAIEMABDAELIAULIgRFDQIgASAENgIECyABIAI2AgALQYGAgIB4IQULIAAgCDYCBCAAIAU2AgAgB0EQaiQAC+EBAgR/AX4gASgCACIEKAIEIgFBAWshAkEKIAEgAUEKTxtBB2whBUEAIQECQAJAAkACQANAIAEgBUYNASACQX9GDQMgBCACNgIEIAQgBCgCACIDQQFqNgIAIAMsAAAiA0H/AHGtIAFBP3GthiAGhCEGIAFBB2ohASACQQFrIQIgA0EASA0ACyABQcYARgRAQQEhASADQQFLDQILIAAgBjcDCEEAIQEMAwsgAEGom8AAQQ4QiQE2AgRBASEBDAILIABBqJvAAEEOEIkBNgIEDAELQaSlwAAQigEACyAAIAE2AgAL1AECBX8BfiMAQRBrIgQkACACKAIAIQMgAigCBCIFIAIoAgwiBmsiBwRAIAMgBmpBACAH/AsACyACIAU2AgwgBEEIaiABIAFBGGogAyACKAIIIgFqIAUgAWsiAxA1AkACQCAELQAIQQRHBEAgACAEKQMIIghCIIg+AgQgACAIPAAAIABBA2ogCKciAUEYdjoAACAAIAFBCHY7AAEMAQsgAyAEKAIMIgNJDQEgAEEEOgAAIAIgASADajYCCAsgBEEQaiQADwtB8JnAAEE2QaiawAAQtQEAC8kBAQR/IAJB//8DcSECIAFB//8DcSEBIAQgBEGwK3AiBWsiB0GwK08EQCAHIQggAyEGA0BBACEEA0AgASAEIAZqLQAAaiIBIAJqIQIgBEEBaiIEQbArRw0ACyACQfH/A3AhAiABQfH/A3AhASAGQbAraiEGIAhBsCtrIghBsCtPDQALCyAFBEAgAyAHaiEEA0AgASAELQAAaiIBIAJqIQIgBEEBaiEEIAVBAWsiBQ0ACwsgACACQfH/A3A7AQIgACABQfH/A3A7AQALzQEBA38jAEEQayIFJAAgAUEAIAEoAggiBCAEQQFGIgQbNgIIAkACQCAERQRAIAVBBGogA0EAQQFBARBEIAUoAgghBCAFKAIEQQFGDQIgACAFKAIMIgY2AgQgACAENgIAIAMEQCAGIAIgA/wKAAALIAAgAzYCCCABEJcBDAELIAEoAgQhBiABKAIAIQQgAUEMQQQQzgEgAwRAIAQgAiAD/AoAAAsgACADNgIIIAAgBDYCBCAAIAY2AgALIAVBEGokAA8LIAQgBSgCDBC0AQAL0AEBBX8CQCABKAIQIgMgASgCFCICRwRAIAEoAgwhBAwBCyABKAIAIQUgASgCCCEDAkAgASgCBCIGIAEoAgwiBCAEIAZLGyICQQFGBEAgAyAFLQAAOgAADAELAkAgAgRAIAMgBSAC/AoAAAsMAAsLIAEgAjYCFEEAIQMgAUEANgIQIAEgBiACazYCBCABIAIgBWo2AgALIAIgBE0gAiADT3FFBEAgAyACIARBvKXAABAtAAsgAEEANgIAIAAgAiADazYCCCAAIAEoAgggA2o2AgQLvgEBA38jAEEQayIEJAACQAJAIAEoAgAiASgCEEEBRwRAIARBBGogA0EAQQFBARBEIAQoAgghBSAEKAIEQQFGDQIgBCgCDCEGIAMEQCAGIAIgA/wKAAALIAEQlQFBB0EgIAVBCnZnayIBIAFBB08bQQJ0QQFyIQEMAQsgASgCBCABKAIAIAJraiEFIAIhBgsgACABNgIMIAAgBTYCCCAAIAM2AgQgACAGNgIAIARBEGokAA8LIAUgBCgCDBC0AQALzwEBA38jAEEQayIEJAACQAJAIAEoAgAiASgCEEEBRwRAIARBBGogA0EAQQFBARBEIAQoAgghBSAEKAIEQQFGDQIgACAEKAIMIgY2AgQgACAFNgIAIAMEQCAGIAIgA/wKAAALIAAgAzYCCCABEJUBDAELIAFBADYCCCABKAIAIQYgASgCBCEFIAFCgICAgBA3AgAgARCVASADBEAgBSACIAP8CgAACyAAIAM2AgggACAFNgIEIAAgBjYCAAsgBEEQaiQADwsgBSAEKAIMELQBAAuUAgECfyMAQSBrIgUkAEGg68AAQaDrwAAoAgAiBkEBajYCAAJAAn9BACAGQQBIDQAaQQFBnOvAAC0AAA0AGkGc68AAQQE6AABBmOvAAEGY68AAKAIAQQFqNgIAQQILQf8BcSIGQQJHBEAgBkEBcUUNASAFQQhqIAAgASgCGBECAAwBC0Gk68AAKAIAIgZBAEgNAEGk68AAIAZBAWo2AgBBqOvAACgCAARAIAUgACABKAIUEQIAIAUgBDoAHSAFIAM6ABwgBSACNgIYIAUgBSkDADcCEEGo68AAKAIAIAVBEGpBrOvAACgCACgCFBECAAtBpOvAAEGk68AAKAIAQQFrNgIAQZzrwABBADoAACADRQ0AAAsAC6wBAQN/IwBBEGsiBiQAAkAgBUUNACACIANqIgIgA0kNACAGQQRqIAEgAiABKAIAQQF0IgMgAiADSxsiAkEIQQRBASAFQYEISRsgBUEBRhsiCCACIAhLGyICIAQgBRAzIAYoAgRBAUYEQCAGKAIMIQggBigCCCEHDAELIAYoAgghAyABIAI2AgAgASADNgIEQYGAgIB4IQcLIAAgCDYCBCAAIAc2AgAgBkEQaiQAC78BAQZ/IwBBIGsiAiQAQQEhBQJAIAFBmq7AAEEjELoBDQAgACgCACIDKAIIIgQEQCADKAIEIgAgBEEEdGohBCABKAIEIQYgASgCACEHA0AgAiAAKQIANwIAIAIgAEEIaikCADcCCCACQSY2AhwgAkEmNgIUIAIgAkEIajYCGCACIAI2AhAgByAGQdeVwAAgAkEQahAhDQIgAEEQaiIAIARHDQALCyABIAMoAhAgAygCFBC6ASEFCyACQSBqJAAgBQuvAQEBfyMAQSBrIgMkACADIAA6AAMgA0EFOgACAn8gAEH/AXFBBUcEQCADQQM2AhwgA0EDNgIUIAMgA0ECajYCGCADIANBA2o2AhAgA0EEaiIAQbKVwAAgA0EQahBNIAAQfgwBCyACKAIAIgAoAgQiAkEETwRAIAAgAkEEazYCBCAAIAAoAgAiAEEEajYCACABIAAqAAA4AgBBAAwBC0HHmMAAQRAQiQELIANBIGokAAvVAQEBfiAAAn8CQCADIARqQQFrQQAgA2txrSABrX4iBUIgiFAEQCAFpyIEQYCAgIB4IANrTQ0BCyAAQQA2AgRBAQwBCyAERQRAIAAgAzYCCCAAQQA2AgRBAAwBCwJ/IAJFBEAgBCADENcBDAELAkACfyADQQlPBEAgAyAEECgMAQsgBBAPCyICRQ0AIAJBBGstAABBA3FFIARFcg0AIAJBACAE/AsACyACCyICRQRAIAAgBDYCCCAAIAM2AgRBAQwBCyAAIAI2AgggACABNgIEQQALNgIAC7UBAQF/AkBBDEEEENcBIgYEQCAGQQI2AgggBiADNgIAIAYgBCADayAFajYCBCABIAYgASgCACIBIAEgAkYiAhs2AgAgAkUEQCABIAEoAggiAkEBajYCCCACQQBIDQIgACABNgIMIAAgBTYCCCAAIAQ2AgQgAEH8rsAANgIAIAZBDEEEEM4BDwsgACAGNgIMIAAgBTYCCCAAIAQ2AgQgAEH8rsAANgIADwtBBEEMEN0BAAsQ0QEAC5QBAQJ/IwBBEGsiBCQAAkAgASgCACIBQQFxBEAgBCABQX5xIgE2AgAgBEEIaiIFIAIgAWsiAiADaiIBNgIAIAQgATYCBCAEQQdBICABQQp2Z2siASABQQdPG0ECdEEBcjYCDCAEIAIQVCAAQQhqIAUpAgA3AgAgACAEKQIANwIADAELIAAgASACIAMQMQsgBEEQaiQAC5MCAgZ/AX4jAEEQayIDJAAgAiABIAJqIgFLBEBBAEEAELQBAAsgA0EEaiEEIAAoAgQhCEEBIQZBBCECAkBBCCABIAAoAgAiB0EBdCIFIAEgBUsbIgEgAUEITRsiBa0iCUIgiFBFBEBBACEBDAELIAmnIgFB/////wdLBEBBACEBDAELAkACQAJ/IAcEQCAIIAdBASABEMABDAELIAFFBEBBASECDAILIAFBARDXAQsiAg0AIARBATYCBAwBCyAEIAI2AgRBACEGC0EIIQILIAIgBGogATYCACAEIAY2AgAgAygCBEEBRgRAIAMoAgggAygCDBC0AQALIAMoAgghASAAIAU2AgAgACABNgIEIANBEGokAAuPAQECfyMAQRBrIgQkAAJAIAEoAgAiAUEBcQRAIAQgATYCACAEQQhqIgUgAiABayICIANqIgE2AgAgBCABNgIEIARBB0EgIAFBCnZnayIBIAFBB08bQQJ0QQFyNgIMIAQgAhBUIABBCGogBSkCADcCACAAIAQpAgA3AgAMAQsgACABIAIgAxAxCyAEQRBqJAALnAECA38BfiMAQSBrIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQRxqIgRBADYCACACQoCAgIAQNwIUIAJBFGpBgMnAACADKAIAIgMoAgAgAygCBBAhGiACQRBqIAQoAgAiAzYCACACIAIpAhQiBTcDCCABQQhqIAM2AgAgASAFNwIACyAAQezKwAA2AgQgACABNgIAIAJBIGokAAuNAQEEfyMAQRBrIgIkAAJ/QQEgASgCACIDQScgASgCBCIFKAIQIgERAAANABogAiAAKAIAQYECEBoCQCACLQANIgBBgQFPBEAgAyACKAIAIAERAABFDQFBAQwCCyADIAIgAi0ADCIEaiAAIARrIAUoAgwRBABFDQBBAQwBCyADQScgAREAAAsgAkEQaiQAC48HAgV/An4jAEEgayIFJAAgBSAAOgADIAVBAjoAAgJ/IABB/wFxQQJHBEAgBUEFNgIcIAVBBTYCFCAFIAVBAmo2AhggBSAFQQNqNgIQIAVBBGoiACAFQRBqEE4gABB+DAELIANFBEBB3KPAAEEXEIkBDAELIANBAWshByMAQTBrIgMkACADQRBqIAIQHgJAAkAgAygCEEEBRg0AAkAgAykDGCIJIAIoAgAoAgQiAK1YBEAgACAJp2shBgNAIAYgAigCACgCBCIETwRAQQAhACAEIAZGDQVBwKbAAEEZEIkBIQAMBQsgA0EQaiIAIAIQHiADKAIQQQFGDQMgAyADKQMYIgk3AwggCUL/////D1YNAiADIAlCB4MiCjcDICAKQgZaBEAgA0EBNgIsIAMgA0EgajYCKCAAQceEwAAgA0EoahBNIAAQfiEADAULIAlCB1gEQEGspsAAQRQQiQEhAAwFCyAKpyEAIwBBEGsiBCQAAn8CQAJAAkACQAJAAkACQAJAAkAgCadBA3YiCEEBaw4GAQIDBAUGAAsgACAIIAIgBxAiDAgLIAEoAgBFBEAgAUIBNwIACyAAIAFBBGogAhBDIgBFDQYgBCAANgIMIARBDGpBgJbAAEEJQYmWwABBARB3DAULIAEoAghFBEAgAUIBNwIICyAAIAFBDGogAhBDIgBFDQUgBCAANgIMIARBDGpBgJbAAEEJQYqWwABBARB3DAQLIAEoAhBFBEAgAUIBNwIQCyAAIAFBFGogAhBDIgBFDQQgBCAANgIMIARBDGpBgJbAAEEJQYuWwABBARB3DAMLIAEoAhhFBEAgAUIBNwIYCyAAIAFBHGogAhBDIgBFDQMgBCAANgIMIARBDGpBgJbAAEEJQYyWwABBARB3DAILIAEoAiBFBEAgAUIBNwIgCyAAIAFBJGogAhBDIgBFDQIgBCAANgIMIARBDGpBgJbAAEEJQY2WwABBAhB3DAELIAEoAihFBEAgAUIBNwIoCyAAIAFBLGogAhBDIgBFDQEgBCAANgIMIARBDGpBgJbAAEEJQY+WwABBAhB3CyAEKAIMDAELQQALIQAgBEEQaiQAIABFDQALDAMLQdmmwABBEBCJASEADAILIANBATYCLCADIANBCGo2AiggA0EQaiIAQbGEwAAgA0EoahBNIAAQfiEADAELIAMoAhQhAAsgA0EwaiQAIAALIAVBIGokAAvzBQIFfwJ+IwBBIGsiBSQAIAUgADoAAyAFQQI6AAICfyAAQf8BcUECRwRAIAVBBTYCHCAFQQU2AhQgBSAFQQJqNgIYIAUgBUEDajYCECAFQQRqIgAgBUEQahBOIAAQfgwBCyMAQTBrIgMkACADQRBqIAIQHgJAAkAgAygCEEEBRg0AAkAgAykDGCIIIAIoAgAoAgQiAK1YBEAgACAIp2shBgNAIAYgAigCACgCBCIETwRAQQAhACAEIAZGDQVBwKbAAEEZEIkBIQAMBQsgA0EQaiIAIAIQHiADKAIQQQFGDQMgAyADKQMYIgg3AwggCEL/////D1YNAiADIAhCB4MiCTcDICAJQgZaBEAgA0EBNgIsIAMgA0EgajYCKCAAQceEwAAgA0EoahBNIAAQfiEADAULIAhCB1gEQEGspsAAQRQQiQEhAAwFCyAJpyEAIwBBEGsiBCQAAn8CQAJAAkACQAJAAkACQCAIp0EDdiIHQQFrDgQBAgMEAAsgACAHIAJB3wAQIgwGCyABKAIARQRAIAFCATcCAAsgACABQQRqIAIQQyIARQ0EIAQgADYCDCAEQQxqQaWrwABBCUGvq8AAQQEQdwwDCyABKAIIRQRAIAFCATcCCAsgACABQQxqIAIQQyIARQ0DIAQgADYCDCAEQQxqQaWrwABBCUGuq8AAQQEQdwwCCyABKAIQRQRAIAFCATcCEAsgACABQRRqIAIQQyIARQ0CIAQgADYCDCAEQQxqQaWrwABBCUGwq8AAQQEQdwwBCyABKAIYRQRAIAFCATcCGAsgACABQRxqIAIQQyIARQ0BIAQgADYCDCAEQQxqQaWrwABBCUGxq8AAQQEQdwsgBCgCDAwBC0EACyEAIARBEGokACAARQ0ACwwDC0HZpsAAQRAQiQEhAAwCCyADQQE2AiwgAyADQQhqNgIoIANBEGoiAEGxhMAAIANBKGoQTSAAEH4hAAwBCyADKAIUIQALIANBMGokACAACyAFQSBqJAALiAEBA38jAEEQayIDJAACQAJAIAJBAXEEQCADQQRqIAJBAXYiAkEAQQFBARBEIAMoAgghBCADKAIEQQFGDQIgAygCDCEFIAIEQCAFIAEgAvwKAAALIAAgAjYCCCAAIAU2AgQgACAENgIADAELIAAgASACECcLIANBEGokAA8LIAQgAygCDBC0AQALjgEBA38jAEEQayICJAACQAJAIAFBAXEEQCACQQRqIAFBAXYiAUEAQQFBARBEIAIoAgghAyACKAIEQQFGDQIgAigCDCEEIAEEQCAEQbKVwAAgAfwKAAALIAAgATYCCCAAIAQ2AgQgACADNgIADAELIABBspXAACABECcLIAJBEGokAA8LIAMgAigCDBC0AQAL9QEBBH8jAEEQayIDJAAgAiABIAJqIgFLBEBBAEEAELQBAAsgA0EEaiEEIAAoAgQhBgJ/QQggASAAKAIAIgJBAXQiBSABIAVLGyIBIAFBCE0bIgUiAUEASARAQQEhAkEAIQFBBAwBCwJ/AkACfyACBEAgBiACQQEgARDAAQwBCyABRQRAQQEhAgwCCyABQQEQ1wELIgINACAEQQE2AgRBAQwBCyAEIAI2AgRBAAshAkEICyAEaiABNgIAIAQgAjYCACADKAIEQQFGBEAgAygCCCADKAIMELQBAAsgAygCCCEBIAAgBTYCACAAIAE2AgQgA0EQaiQAC7QDAQR/IwBBEGsiByQAIAEoAgAhBQJ/IAQoAgBBAUYEQCAEQQRqIQYjAEFAaiIEJAAgBEE4aiAFEMEBIAQoAjwhBSAHAn8CQCAEKAI4IghFDQAgBCAFNgI0IAQgCDYCMCAEQShqIARBMGpBg6nAAEEBIAYQYgJAIAQoAihBAXEEQCAEKAIsIQUMAQsgBEEgaiAEQTBqQYSpwABBASAGQQRqEGIgBCgCIEEBcQRAIAQoAiQhBQwBCyAEQRhqIARBMGpBwqfAAEEBIAZBCGoQYiAEKAIYQQFxBEAgBCgCHCEFDAELIARBEGogBEEwakHBp8AAQQEgBkEMahBiIAQoAhBBAXEEQCAEKAIUIQUMAQsgBEEIaiAEKAIwIAQoAjQQwgEgBCgCDCEFIAQoAggMAgsgBCgCNCIGQYQISQ0AIAYQWAtBAQs2AgAgByAFNgIEIARBQGskACAHKAIAIQQgBygCBAwBCyAHQQhqIAUQsAEgBygCCCEEIAcoAgwLIQVBASEGIARBAXFFBEAgAUEEaiACIAMQkQEgBRDPAUEAIQYLIAAgBTYCBCAAIAY2AgAgB0EQaiQAC4sBAQN/IwBBEGsiBSQAIAEoAgAhBgJ/IAQoAgBBAUYEQCAFIAYgBCgCBBC3ASAFKAIAIQYgBSgCBAwBCyAFQQhqIAYQsAEgBSgCCCEGIAUoAgwLIQRBASEHIAZBAXFFBEAgAUEEaiACIAMQkQEgBBDPAUEAIQcLIAAgBDYCBCAAIAc2AgAgBUEQaiQAC5EBAQZ/IAAoAoCAAiIDIAEoAgQiBSAAKAKEgAIiBiAFIAZJGyICaiIEIANJIARBgYACT3JFBEAgASgCACEHIAIEQCAHIAAgA2ogAvwKAAALIAEgBSACazYCBCABIAIgB2o2AgAgACAGIAJrNgKEgAIgACAEQf//AXE2AoCAAiACDwsgAyAEQYCAAkG0wsAAEC0AC6kBAgN/An4jAEEQayIAJAAjAEEQayIBJAAgAUEAOgAPQQFBARDXASICRQRAQQFBARDdAQALIAAgAUEPaq03AwAgACACrTcDCCACQQFBARDOASABQRBqJAAgACkDACEDIAApAwghBEGI68AALQAAQQJGBEBByJrAAEH9AEGIm8AAEIUBAAtBiOvAAEEBOgAAQYDrwAAgBDcDAEH46sAAIAM3AwAgAEEQaiQAC+EBAQV/IAEEQAJAIAAoAgwiAkEBcUUNACACQQV2IAFqIgNBgICAwABPBEAgACgCCCEEIAAoAgQhBSAAKAIAIQYgACgCDCEDQRRBBBDXASICRQRAQQRBFBDdAQALIAJBATYCECAAIAI2AgwgAiADQQJ2QQdxNgIMIAIgA0EFdiIDIAVqNgIIIAIgBiADazYCBCACIAMgBGo2AgAMAQsgACACQR9xIANBBXRyNgIMCyAAIAAoAgAgAWo2AgAgACAAKAIIIAFrNgIIIAAgACgCBCIAIAFrIgFBACAAIAFPGzYCBAsLcAEEfyMAQRBrIgMkACADQQxqIQUCQCACRQ0AIAAoAgAiBkUNACADIAE2AgwgAiAGbCEEIAAoAgQhAiADQQhqIQULIAUgBDYCAAJAIAMoAgwiAEUNACADKAIIIgFFDQAgAiABIAAQzgELIANBEGokAAt6AQN/IwBBIGsiAiQAIAJBFGoiAyAAKAIAJQEQAyACQQhqIAIoAhQgAigCGBDGASACIAIoAgggAigCDBCBASACKAIAIQAgAyACKAIEIgQ2AgggAyAANgIEIAMgBDYCACACKAIYIAIoAhwgARDfASADENsBIAJBIGokAAtvAQF/IwBBEGsiBSQAIAFFBEBB6K3AAEEyENoBAAsgBUEIaiABIAMgBCACKAIQEQMAIAAgBSgCCCICQQJGIgE2AgggACAFKAIMIgNBACABGzYCBCAAQQAgA0GACCACQQFxGyABGzYCACAFQRBqJAALjgEBAX8CQAJAIABBhAhPBEAgANBvJgFB+ObAACgCAA0BQfjmwABBfzYCACAAQYznwAAoAgAiAUkNAiAAIAFrIgBBhOfAACgCAE8NAkGA58AAKAIAIABBAnRqQYjnwAAoAgA2AgBBiOfAACAANgIAQfjmwABB+ObAACgCAEEBajYCAAsPC0HssMAAEJMBCwALagECfyMAQRBrIgEkACABQQRqIANBAEEBQQEQRCABKAIIIQQgASgCBEEBRwRAIAAgASgCDCIFNgIEIAAgBDYCACADBEAgBSACIAP8CgAACyAAIAM2AgggAUEQaiQADwsgBCABKAIMELQBAAtqAQF/IwBBEGsiBiQAIAFFBEBB6K3AAEEyENoBAAsgBkEIaiABIAMgBCAFIAIoAhARBQAgBigCDCEBIAAgBigCCCICNgIIIAAgAUEAIAJBAXEiAhs2AgQgAEEAIAEgAhs2AgAgBkEQaiQAC2kBAn8jAEEQayICJAACQCAAIAEoAggiAyABKAIASQR/IAJBCGogASADQQRBBBA4IAIoAggiA0GBgICAeEcNASABKAIIBSADCzYCBCAAIAEoAgQ2AgAgAkEQaiQADwsgAyACKAIMELQBAAtoAQF/IwBBEGsiBSQAIAFFBEBB6K3AAEEyENoBAAsgBUEIaiABIAMgBCACKAIQEQMAIAUoAgwhASAAIAUoAggiAjYCCCAAIAFBACACQQFxIgIbNgIEIABBACABIAIbNgIAIAVBEGokAAtpAQJ/IwBBEGsiAiQAAkAgACABKAIIIgMgASgCAEkEfyACQQhqIAEgA0EBQQEQOCACKAIIIgNBgYCAgHhHDQEgASgCCAUgAws2AgQgACABKAIENgIAIAJBEGokAA8LIAMgAigCDBC0AQAL6wkCCH8CfiMAQRBrIgkkACMAQSBrIgQkACAEIAA6AAMgBEECOgACAn8gAEH/AXFBAkcEQCAEQQQ2AhwgBEEENgIUIAQgBEECajYCGCAEIARBA2o2AhAgBEEEaiIAIARBEGoQTiAAEH4MAQsgBEEQaiACEB0gBCgCEEEBRgRAIAQoAhQMAQsgBCkDGCILIAIoAgA1AgRYBEAjAEEQayIDJAAgAUEANgIIIAEgC6ciACACKAIAIgUoAgQiBiAAIAZJGxCaASADIAA2AgwgAyACNgIIIAEgACAFKAIEIgUgACAFSRsQmgEgACACKAIAIgIoAgQiBSAAIAVJGyIABEADQCABIAIoAgAgABDFASMAQRBrIgIkAAJAAkAgACADQQhqIgYoAgQiCE0EQCAGKAIAKAIAIgUoAgQiByAASQ0BIAUgByAAazYCBCAGIAggAGs2AgQgBSAFKAIAIABqNgIAIAJBEGokAAwCC0H4pcAAQSNBnKbAABC1AQALIAIgBzYCDCACIAA2AgggAkEIahCKAQALIAMoAgwiACADKAIIKAIAIgIoAgQiBSAAIAVJGyIADQALCyADQRBqJABBAAwBC0GYm8AAQRAQiQELIQAgBEEgaiQAAkAgAARAIAFBADYCCAwBCyAJQQRqIQUgASgCBCECAkACQCABKAIIIgRFDQAgBEEHayIAQQAgACAETRshCCACQQNqQXxxIAJrIQpBACEAA0ACQAJAAkAgACACai0AACIGwCIHQQBOBEAgCiAAa0EDcQ0BIAAgCE8NAgNAIAAgAmoiA0EEaigCACADKAIAckGAgYKEeHENAyAAQQhqIgAgCEkNAAsMAgtCgICAgIAgIQxCgICAgBAhCwJAAkACfgJAAkACQAJAAkACQAJAAkACQCAGLQDR10BBAmsOAwABAgoLIABBAWoiAyAESQ0CQgAhDEIAIQsMCQtCACEMIABBAWoiAyAESQ0CQgAhCwwIC0IAIQwgAEEBaiIDIARJDQJCACELDAcLIAIgA2osAABBv39KDQYMBwsgAiADaiwAACEDAkACQCAGQeABayIGBEAgBkENRgRADAIFDAMLAAsgA0FgcUGgf0YNBAwDCyADQZ9/Sg0CDAMLIAdBH2pB/wFxQQxPBEAgB0F+cUFuRw0CIANBQEgNAwwCCyADQUBIDQIMAQsgAiADaiwAACEDAkACQAJAAkAgBkHwAWsOBQEAAAACAAsgB0EPakH/AXFBAksgA0FATnINAwwCCyADQfAAakH/AXFBME8NAgwBCyADQY9/Sg0BCyAEIABBAmoiA00EQEIAIQsMBQsgAiADaiwAAEG/f0oNAkIAIQsgAEEDaiIDIARPDQQgAiADaiwAAEFASA0FQoCAgICA4AAMAwtCgICAgIAgDAILQgAhCyAAQQJqIgMgBE8NAiACIANqLAAAQb9/TA0DC0KAgICAgMAACyEMQoCAgIAQIQsLIAUgDCAArYQgC4Q3AgQgBUEBNgIADAYLIANBAWohAAwCCyAAQQFqIQAMAQsgACAETw0AA0AgACACaiwAAEEASA0BIAQgAEEBaiIARw0ACwwCCyAAIARJDQALCyAFIAQ2AgggBSACNgIEIAVBADYCAAtBACEAIAkoAgRBAUcNAEHzo8AAQS8QiQEhACABQQA2AggLIAlBEGokACAAC2UBAn8jAEEQayIFJAAgBUEIaiABKAIAIAQoAgQgBCgCCBC4AUEBIQQgBSgCDCEGIAUoAghBAXFFBEAgAUEEaiACIAMQkQEgBhDPAUEAIQQLIAAgBjYCBCAAIAQ2AgAgBUEQaiQAC14BAX8gASgCACIEQQFxBEAgACABIAQgBEF+cSACIAMQRQ8LIAQgBCgCCCIBQQFqNgIIIAFBAE4EQCAAIAQ2AgwgACADNgIIIAAgAjYCBCAAQfyuwAA2AgAPCxDRAQALYAECfyMAQRBrIgUkACAFQQhqIAEoAgAgBCgCABC3AUEBIQQgBSgCDCEGIAUoAghBAXFFBEAgAUEEaiACIAMQkQEgBhDPAUEAIQQLIAAgBjYCBCAAIAQ2AgAgBUEQaiQAC2ABAn8jAEEQayIFJAAgBUEIaiABKAIAIAQqAgAQtgFBASEEIAUoAgwhBiAFKAIIQQFxRQRAIAFBBGogAiADEJEBIAYQzwFBACEECyAAIAY2AgQgACAENgIAIAVBEGokAAtiAQF/IwBBEGsiBSQAIAFFBEBB6K3AAEEyENoBAAsgBUEIaiABIAMgBCACKAIQEQMAIAAgBS0ACCIBNgIIIAAgBSgCDEEAIAEbNgIEIABBACAFLQAJIAEbNgIAIAVBEGokAAtcAQF/IwBBIGsiBSQAIAUgATYCBCAFIAA2AgAgBSADNgIMIAUgAjYCCCAFIAVBCGqtQoCAgIDwDIQ3AxggBSAFrUKAgICAsAyENwMQQaaFwAAgBUEQaiAEEIUBAAtgAQF/IwBBEGsiBCQAIAFFBEBB6K3AAEEyENoBAAsgBEEIaiABIAMgAigCEBEBACAAIAQtAAgiATYCCCAAIAQoAgxBACABGzYCBCAAQQAgBC0ACSABGzYCACAEQRBqJAALXgECfyMAQSBrIgYkACABRQRAQeitwABBMhDaAQALIAZBFGoiByABIAMgBCAFIAIoAhARBQAgBkEIaiAHEFsgBiAGKAIIIAYoAgwQxgEgACAGKQMANwIAIAZBIGokAAtbAQF/IAEoAgAiBEEBcQRAIAAgASAEIAQgAiADEEUPCyAEIAQoAggiAUEBajYCCCABQQBOBEAgACAENgIMIAAgAzYCCCAAIAI2AgQgAEH8rsAANgIADwsQ0QEAC0kBAX8jAEEQayICJAAgASAAKAIAIgBBf3NBH3ZBAUEAIAAgAEEfdSIBcyABayACQQZqIgEQIyIAIAFqQQogAGsQFyACQRBqJAALVAEBfyAAKAIIIgEEQCAAKAIEQewAaiEAA0AgAEEQahDbASAAQRxqEKwBIAAoAgBBgICAgHhHBEAgAEEEQQQQVQsgAEGsAWohACABQQFrIgENAAsLC1wBAX8jAEEQayIGJAAgAUUEQEHorcAAQTIQ2gEACyAGQQhqIAEgAyAEIAUgAigCEBEQACAGKAIMIQEgACAGKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBkEQaiQAC1wBAX8jAEEQayIGJAAgAUUEQEHorcAAQTIQ2gEACyAGQQhqIAEgAyAEIAUgAigCEBEFACAGKAIMIQEgACAGKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBkEQaiQAC1wBAX8jAEEQayIGJAAgAUUEQEHorcAAQTIQ2gEACyAGQQhqIAEgAyAEIAUgAigCEBERACAGKAIMIQEgACAGKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBkEQaiQAC1wBAX8jAEEQayIGJAAgAUUEQEHorcAAQTIQ2gEACyAGQQhqIAEgAyAEIAUgAigCEBESACAGKAIMIQEgACAGKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBkEQaiQAC1wBAn8jAEEgayIFJAAgAUUEQEHorcAAQTIQ2gEACyAFQRRqIgYgASADIAQgAigCEBEDACAFQQhqIAYQWyAFIAUoAgggBSgCDBDGASAAIAUpAwA3AgAgBUEgaiQAC1oBAX8jAEEQayIFJAAgAUUEQEHorcAAQTIQ2gEACyAFQQhqIAEgAyAEIAIoAhARAwAgBSgCDCEBIAAgBSgCCCICNgIEIAAgAUEAIAJBAXEbNgIAIAVBEGokAAtYAQF/IwBBEGsiBCQAIAFFBEBB6K3AAEEyENoBAAsgBEEIaiABIAMgAigCEBEBACAEKAIMIQEgACAEKAIIIgI2AgQgACABQQAgAkEBcRs2AgAgBEEQaiQAC0sAIAEoAgAiAUEBcQRAIAFBfnEhASADBEAgASACIAP8CgAACyAAIAM2AgggACABNgIEIAAgAiADaiABazYCAA8LIAAgASACIAMQPAtOAQF/IAIgAWsiAiAAKAIAIAAoAggiA2tLBEAgACADIAJBAUEBEH8gACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AggLUAIBfwF+IwBBIGsiAyQAIAMgATYCDCADIAA2AgggA0KAgICAsAciBCADQQhqrYQ3AxggAyAEIANBDGqthDcDEEGVgsAAIANBEGogAhCFAQALUAEDfyAALQAAQQNGBEAgACgCBCIAKAIAIQIgACgCBCIDKAIAIgEEQCACIAERBgALIAMoAgQiAQRAIAIgASADKAIIEM4BCyAAQQxBBBDOAQsL2AECAX4EfwJAIAAoAgQiBEUNACAAKAIMIgUEQCAAKAIAIgJBCGohAyACKQMAQn+FQoCBgoSIkKDAgH+DIQEDQCABUARAA0AgAkHAAWshAiADKQMAIANBCGohA0KAgYKEiJCgwIB/gyIBQoCBgoSIkKDAgH9RDQALIAFCgIGChIiQoMCAf4UhAQsgAiABeqdBA3ZBaGxqQRhrEKgBIAFCAX0gAYMhASAFQQFrIgUNAAsLIAQgBEEYbEEfakF4cSICakEJaiIDRQ0AIAAoAgAgAmsgA0EIEM4BCwtHAQF/IAAoAgAgACgCCCIDayACSQRAIAAgAyACEEcgACgCCCEDCyACBEAgACgCBCADaiABIAL8CgAACyAAIAIgA2o2AghBAAuKAQEDfyAAKAIAIgAoAggiBiAAKAIARgRAIwBBEGsiBSQAIAVBCGogACAAKAIAQQFBBEEQEEEgBSgCCCIHQYGAgIB4RwRAIAcgBSgCDBC0AQALIAVBEGokAAsgACgCBCAGQQR0aiIFIAQ2AgwgBSADNgIIIAUgAjYCBCAFIAE2AgAgACAGQQFqNgIIC0QAIAEoAgAiAUEBcQRAIAMEQCABIAIgA/wKAAALIAAgAzYCCCAAIAE2AgQgACACIANqIAFrNgIADwsgACABIAIgAxA8C0cBAX8gACgCACAAKAIIIgNrIAJJBEAgACADIAIQTyAAKAIIIQMLIAIEQCAAKAIEIANqIAEgAvwKAAALIAAgAiADajYCCEEAC0YBAX8jAEEQayIDJAAgASAAayACaiIBQQBIBEBB0K7AAEErIANBD2pBwK7AAEGQr8AAEGQACyAAIAFBARDOASADQRBqJAALQwEBfyAAKAIIIgEEQCAAKAIEQdgAaiEAA0AgAEEMahCsASAAEIABIABBBEGEAhBVIABB8ABqIQAgAUEBayIBDQALCws2AQF/IwBBEGsiAiQAIAFBAUEBQQAgACgCACACQQZqIgEQIyIAIAFqQQogAGsQFyACQRBqJAALsgQCCH8DfiMAQSBrIgYkACABQQFBAUEAIAZBDGohBEEAIQFBFCECIAApAwAiDCIKQugHWgRAIARBBGshAiAKIQsCQAJAA0AgCyALQpDOAIAiCkKQzgB+faciB0H//wNxQeQAbiEFAkAgAUEUaiIAQQRrQRRJBEAgAkEUaiIDIAVBAXQiCC0A1NVAOgAAIABBA2siCUEUSQ0BIAlBFEGc18AAEHMACyAAQQRrQRRBnNfAABBzAAsgA0EBaiAIQdXVwABqLQAAOgAAIABBAmtBFEkEQCADQQJqIAcgBUHkAGxrQQF0Qf7/B3EiBS0A1NVAOgAAIABBAWtBFE8NAiADQQNqIAVB1dXAAGotAAA6AAAgAkEEayECIAFBBGshASALQv+s4gRWIAohC0UNAwwBCwsgAEECa0EUQZzXwAAQcwALIABBAWtBFEGc18AAEHMACyABQRRqIQILAkAgCkIJWARAIAIhAQwBCyAKpyIDQf//A3FB5ABuIQACQCACQQJrIgFBFEkEQCABIARqIAMgAEHkAGxrQf//A3FBAXQiAy0A1NVAOgAAIAJBAWsiAkEUTw0BIACtIQogAiAEaiADQdXVwABqLQAAOgAADAILIAFBFEGc18AAEHMACyACQRRBnNfAABBzAAsgDFBFIApQcUUEQCABQQFrIgFBFE8EQCABQRRBnNfAABBzAAsgASAEaiAKp0EBdC0A1dVAOgAACyABIARqQRQgAWsQFyAGQSBqJAALSAEBf0EYQQQQ1wEiAUUEQEEEQRgQ3QEACyABQQA2AgggAUKAgICAwAA3AgAgASAAKQIANwIMIAFBFGogAEEIaigCADYCACABC0EBAX8jAEEQayIFJAAgBUEIaiAAIAEgAiADIAQQQSAFKAIIIgBBgYCAgHhHBEAgACAFKAIMELQBAAsgBUEQaiQAC0EBAX8gACgCCCIBBEAgACgCBEH4AWohAANAIAAoAgBBgYCAgHhHBEAgABCsAQsgAEGEAmohACABQQFrIgENAAsLCz8BAX8jAEEgayIDJAAgAyACNgIcIAMgATYCGCADIAI2AhQgA0EIaiADQRRqEF0gACADKQMINwMAIANBIGokAAtGAQJ/IAEoAgQhAiABKAIAIQNBCEEEENcBIgFFBEBBBEEIEN0BAAsgASACNgIEIAEgAzYCACAAQdzJwAA2AgQgACABNgIAC0MBAX8gASgCACIBIAEoAggiBEEBajYCCCAEQQBIBEAQ0QEACyAAIAE2AgwgACADNgIIIAAgAjYCBCAAQfyuwAA2AgALQwEBfyABKAIAIgEgASgCECIEQQFqNgIQIARBAEgEQBDRAQALIAAgATYCDCAAIAM2AgggACACNgIEIABByLDAADYCAAveAQIBfwF+IwBBIGsiAyQAIAMgATYCECADIAA2AgwgA0EBOwEcIAMgAjYCGCADIANBDGo2AhQjAEEQayIBJAAgA0EUaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCBCIDQQFxBEAgAigCACECIAAgA0EBdjYCBCAAIAI2AgAgAEGYycAAIAEoAgQgASgCCCIALQAIIAAtAAkQQAALIABBgICAgHg2AgAgACABNgIMIABBtMnAACABKAIEIAEoAggiAC0ACCAALQAJEEAACy8AAkAgAWlBAUcgAEGAgICAeCABa0tyDQAgAARAIAAgARDXASIBRQ0BCyABDwsACz8AIAAoAgBBgICAgHhHBEAgASAAKAIEIAAoAggQugEPCyABKAIAIAEoAgQgACgCDCgCACIAKAIAIAAoAgQQIQs4AAJAIAJBgIDEAEYNACAAIAIgASgCEBEAAEUNAEEBDwsgA0UEQEEADwsgACADIAQgASgCDBEEAAtFAQF/QRhBBBDXASICRQRAQQRBGBDdAQALIAIgATYCFCACIAA2AhAgAkKAgICAgICAgIB/NwIIIAJCgICAgMAANwIAIAILPAEBfyMAQRBrIgEkACABQTs2AgwgAUE7NgIEIAEgADYCCCABIABBBGo2AgBBtIHAACABQfivwAAQhQEACzYBAX8DQCAAKAAAIQMgACABKAAANgAAIAEgAzYAACAAQQRqIQAgAUEEaiEBIAJBAWsiAg0ACwvtAQEDfyABKAIIIgJBgICAEHFFBEAgAkGAgIAgcUUEQCAAIAEQfA8LQQAhAiMAQRBrIgMkACAAKAIAIQADQCACIANqQQ9qIABBD3EtAL7XQDoAACACQQFrIQIgAEEPSyAAQQR2IQANAAsgAUEBQbzXwABBAiACIANqQRBqQQAgAmsQFyADQRBqJAAPC0EAIQIjAEEQayIDJAAgACgCACEAA0AgAiADakEPaiAAQQ9xLQCs10A6AAAgAkEBayECIABBD0sgAEEEdiEADQALIAFBAUG818AAQQIgAiADakEQakEAIAJrEBcgA0EQaiQAC1UBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADQQhqIQEgA0EMaiECAkAgACgCACIAQQFxBEAgACABKAIAIAIoAgAQegwBCyAAEJcBCyADQRBqJAALWAEBfyMAQRBrIgMkACADIAI2AgwgAyABNgIIIANBCGohASADQQxqIQICQCAAKAIAIgBBAXEEQCAAQX5xIAEoAgAgAigCABB6DAELIAAQlwELIANBEGokAAsuAAJAIANpQQFHIAFBgICAgHggA2tLcg0AIAAgASADIAIQwAEiAEUNACAADwsACzkBAX9BASECAkAgACABEC8NACABKAIAQdzmwABBAiABKAIEKAIMEQQADQAgAEEEaiABEC8hAgsgAgvTEQIYfwR+IwBBEGsiESQAIBEgATYCDCARIAA2AggCfyARQQhqIQAjAEEgayINJAACQAJ/AkBBAEHcrMAAKAIAEQcAIg8EQCAPKAIADQMgD0F/NgIAIA1BCGohDiAAKAIAIRAgACgCBCESIwBBEGsiGCQAIA9BBGoiCigCBCIBIBAgEiAQGyICcSEAIAKtIhxCGYhCgYKEiJCgwIABfiEdIAooAgAhAgJAAkADQAJAIAAgAmopAAAiGyAdhSIaQn+FIBpCgYKEiJCgwIABfYNCgIGChIiQoMCAf4MiGlBFBEADQCAQIAIgGnqnQQN2IABqIAFxQXRsaiIIQQxrKAIARgRAIAhBCGsoAgAgEkYNAwsgGkIBfSAagyIaUEUNAAsLIBsgG0IBhoNCgIGChIiQoMCAf4NQRQ0CIAAgBEEIaiIEaiABcSEADAELCyAOIAo2AgQgDiAINgIAQQAhCgwBCyAKKAIIRQRAIBhBCGohGSMAQUBqIgYkAAJ/AkAgCigCDCIIQQFqIgEgCE8EQAJAIAooAgQiByAHQQFqIgBBA3YiAkEHbCAHQQhJGyITQQF2IAFJBEAgBkEwagJ/IBNBAWoiACABIAAgAUsbIgBBD08EQCAAQf////8BSw0FQX8gAEEDdEEHbkEBa2d2QQFqDAELQQQgAEEIcUEIaiAAQQRJGwsiAEEMIAAQNiAGKAI4IQwgBigCNCIHIAYoAjAiBEUNBBogBigCPCEAIAdBCWoiAQRAIARB/wEgAfwLAAsgBiAANgIsIAYgDDYCKCAGIAc2AiQgBiAENgIgIAZBCDYCHCAIBEAgBEEMayELIARBCGohEyAKKAIAIgFBDGshFCABKQMAQn+FQoCBgoSIkKDAgH+DIRogCCECIAEhAANAIBpQBEADQCADQQhqIQMgAEEIaiIAKQMAQoCBgoSIkKDAgH+DIhpCgIGChIiQoMCAf1ENAAsgGkKAgYKEiJCgwIB/hSEaCyAEIAEgGnqnQQN2IANqIhVBdGxqIgVBDGsoAgAiCSAFQQhrKAIAIAkbIhYgB3EiBWopAABCgIGChIiQoMCAf4MiG1AEQEEIIQkDQCAFIAlqIQUgCUEIaiEJIAQgBSAHcSIFaikAAEKAgYKEiJCgwIB/gyIbUA0ACwsgGkIBfSAagyEaIAQgG3qnQQN2IAVqIAdxIgVqLAAAQQBOBEAgBCkDAEKAgYKEiJCgwIB/g3qnQQN2IQULIAQgBWogFkEZdiIJOgAAIBMgBUEIayAHcWogCToAACALIAVBdGxqIgVBCGogFCAVQXRsaiIJQQhqKAAANgAAIAUgCSkAADcAACACQQFrIgINAAsLIAYgCDYCLCAGIAwgCGs2AihBACEDA0AgAyAKaiIAKAIAIQEgACADIAZqQSBqIgAoAgA2AgAgACABNgIAIANBBGoiA0EQRw0ACyAGKAIkIgBFDQEgACAAQQxsQRNqQXhxIgFqQQlqIgBFDQEgBigCICABayAAQQgQzgEMAQsgAARAIAIgAEEHcUEAR2ohBCAKKAIAIgEhAwNAIAMgAykDACIaQn+FQgeIQoGChIiQoMCAAYMgGkL//v379+/fv/8AhHw3AwAgA0EIaiEDIARBAWsiBA0ACwJAIABBCE8EQCAAIAFqIAEpAAA3AAAMAQsgAEUNACABQQhqIAEgAPwKAAALIAFBCGohCSABQQxrIRQgASEAQQAhBANAIAQiBUEBaiEEAkAgASAFaiIVLQAAQYABRw0AIAEgBEF0bGohDCAUIAVBdGxqIRYCQANAIBYoAgAiAiAWKAIEIAIbIhcgB3EiAiEDIAEgAmopAABCgIGChIiQoMCAf4MiGlAEQEEIIQsDQCADIAtqIQMgC0EIaiELIAEgAyAHcSIDaikAAEKAgYKEiJCgwIB/gyIaUA0ACwsgASAaeqdBA3YgA2ogB3EiA2osAABBAE4EQCABKQMAQoCBgoSIkKDAgH+DeqdBA3YhAwsgAyACayAFIAJrcyAHcUEITwRAIAEgA2oiAi0AACACIBdBGXYiAjoAACAJIANBCGsgB3FqIAI6AAAgA0F0bCECQf8BRg0CIAEgAmohA0F0IQIDQCAAIAJqIgsoAAAhFyALIAIgA2oiCygAADYAACALIBc2AAAgAkEEaiICDQALDAELCyAVIBdBGXYiAjoAACAJIAVBCGsgB3FqIAI6AAAMAQsgFUH/AToAACAJIAVBCGsgB3FqQf8BOgAAIAIgFGoiAkEIaiAMQQhqKAAANgAAIAIgDCkAADcAAAsgAEEMayEAIAUgB0cNAAsLIAogEyAIazYCCAtBgYCAgHgMAgsQpwEgBigCBCEMIAYoAgAMAQsQpwEgBigCDCEMIAYoAggLIQAgGSAMNgIEIBkgADYCACAGQUBrJAALIA4gEjYCDCAOIBA2AgggDiAcNwMACyAOIAo2AhAgGEEQaiQAIA0oAhgiBEUNASANKQMIIRogDSkDECEbIA0gECASEOUBNgIQIA0gGzcCCCAEKAIAIgEgBCgCBCIIIBqnIgVxIgBqKQAAQoCBgoSIkKDAgH+DIhpQBEBBCCECA0AgACACaiEAIAJBCGohAiABIAAgCHEiAGopAABCgIGChIiQoMCAf4MiGlANAAsLIAEgGnqnQQN2IABqIAhxIgBqLAAAIgJBAE4EQCABIAEpAwBCgIGChIiQoMCAf4N6p0EDdiIAai0AACECCyAAIAFqIAVBGXYiBToAACABIABBCGsgCHFqQQhqIAU6AAAgBCAEKAIIIAJBAXFrNgIIIAQgBCgCDEEBajYCDCABIABBdGxqIgBBDGsiASAOKQIANwIAIAFBCGogDkEIaigCADYCACAADAILIwBBEGsiACQAIAAgAEEPaq1CgICAgOAJhDcDAEHmg8AAIABBwK3AABCFAQALIA0oAggLQQRrKAIAIQAQNCIBIAAlASYBIA8gDygCAEEBajYCACANQSBqJAAgAQwBC0HgrMAAEJMBAAsgEUEQaiQAC7MBAQJ/IwBBEGsiACQAIAEoAgBB0MnAAEELIAEoAgQoAgwRBAAhAyAAQQhqIgJBADoABSACIAM6AAQgAiABNgIAIAIiAS0ABCECIAEtAAUEQCABAn9BASACQQFxDQAaIAEoAgAiAS0ACkGAAXFFBEAgASgCAEHP18AAQQIgASgCBCgCDBEEAAwBCyABKAIAQc7XwABBASABKAIEKAIMEQQACyICOgAECyACQQFxIABBEGokAAstAQF/IwBBEGsiASQAIAEgAUEPaq1CgICAgOAMhDcDAEGqhcAAIAEgABCFAQAL1wwCE38BfiMAQRBrIgkkACMAQUBqIgQkACAEIAE2AhggBCAANgIUIAQgBEE/aiIANgI0IAQgADYCMCAEIARBGGo2AiwgBCAEQRRqNgIoIwBBEGsiDSQAIA1BCGogBEEoaiIAKAIAKAIAIAAoAgQoAgAQgQEgBEEcaiELIA0oAggiESEIIA0oAgwiDyEFIwBB8ABrIgMkAAJAIAVBAk8EQCMAQdAAayIAJAAjAEEQayIBJAAgAUEEakGAgAJBAUEBQQEQRCABKAIIIQYgASgCBARAIAYgASgCDBC0AQALIAEoAgwhByAAQRRqIgJBgIACNgIIIAIgBzYCBCACIAY2AgAgAUEQaiQAIABBCGogAhBdIAApAwghFUGQ0gJBBBDXASIBRQRAQQRBkNICEN0BAAsgAUEAQYnSAvwLACABQQE7AY7SAiABQQE6AIzSAiABQQI6AI3SAiAAQThqIgJBCGpCADcDACACQgA3AwAgAiABNgIQIABCADcDMCAAIBU3AyggACAFQQJrNgIkIAAgCEECajYCICADQQhqIg4gAEEgakEw/AoAACAAQdAAaiQAIANBADYCRCADQoCAgIAQNwI8IANByABqIQUjAEEwayICJABBgMAAIQgCQAJAIANBPGoiBigCACISIAYoAggiAWtBIE8EQCABIQAMAQsgAkEQaiAOIAYQLiACLQAQQQRHBEAgBSACKQMQIhVCIIg+AgQgBSAVPAAAIAVBA2ogFaciAEEYdjoAACAFIABBCHY7AAEMAgsgAigCFARAIAYoAgghAAwBCyAFQQQ6AAAgBUEANgIEDAELA0ACQCAAIAYoAgAiB0cgByASR3INACACQRBqIA4gBhAuIAItABBBBEcEQCAFIAIpAxAiFUIgiD4CBCAFIBU8AAAgBUEDaiAVpyIAQRh2OgAAIAUgAEEIdjsAAQwDCyAGKAIIIQAgAigCFARAIAYoAgAhBwwBCyAFQQQ6AAAgBSAAIAFrNgIEDAILAkACQAJAAkAgACAHRgRAIAJBCGogBiAHQSBBAUEBEEEgAigCCEGBgICAeEcNASAGKAIAIQcgBigCCCEACyAGKAIEIQwgAiAKNgIcIAJBADYCGCACIAAgDGo2AhAgAiAIIAcgAGsiACAAIAhLGyIKNgIUIAJBIGogDiACQRBqEDogAi0AICIAQQRHDQEMAgsgBUKBzAA3AgAMBAsDQEEAIQcCQAJAAkACQCAAQf8BcUEBaw4DAgABBgsgAigCJC0ACEEjRw0FDAILIAIoAiQtAAhBI0YNAQwECyACLQAhQSNHDQMLIAIgAikDIDcDKCACQShqEHQgAkEgaiAOIAJBEGoQOiACLQAgIgBBBEcNAAsLQQEhBwsgBiACKAIYIgwgBigCCGoiADYCCCAHRQRAIAUgAikDIDcCAAwCCyAMBEACQCAKIAxHIApBfyAIIBBBAWpBACAKIAxLGyIQQQFKGyAIIAIoAhwiByAKRxsiCElyDQAgCEEATgRAIAhBAXQhCAwBC0F/IQgLIAcgDGshCgwBBSAFQQQ6AAAgBSAAIAFrNgIECwsLIAJBMGokACADLQBIQQRHBEAgAyADKQNINwNQIANBAjYCbCADIANB0ABqNgJoIANB3ABqIgBB+ITAACADQegAahAnIAMoAmAgAygCZBDkASEFIAAQ2wEgAy0AUEEDRgRAIAMoAlQiACgCACEBIAAoAgQiAigCACIGBEAgASAGEQYACyACKAIEIgYEQCABIAYgAigCCBDOAQsgAEEMQQQQzgELIAtBgICAgHg2AgAgCyAFNgIEIANBPGoQ2wEgA0EIahCZAQwCCyALIAMpAjw3AgAgC0EIaiADQcQAaigCADYCACADQQhqEJkBDAELQbCYwABBFxDkASEAIAtBgICAgHg2AgAgCyAANgIECyADQfAAaiQAIA8EQCARIA9BARDOAQsgDUEQaiQAAn8gBCgCHEGAgICAeEYEQEEBIQAgBCgCICETQQAMAQsgBEEwaiAEQSRqKAIANgIAIAQgBCkCHDcDKCAEQQhqIARBKGoQXSAEKAIMIRRBACEAIAQoAggLIQEgCSAANgIMIAkgEzYCCCAJIBQ2AgQgCSABNgIAIARBQGskACAJKAIAIAkoAgQgCSgCCCAJKAIMIAlBEGokAAssAQF/IAAgACgCECIBQQFrNgIQIAFBAUYEQCAAQQFBARBVIABBFEEEEM4BCwuGAgEFfyMAQRBrIgMkACMAQTBrIgIkACACIAE2AhggAiAANgIUIAIgAkEvaiIANgIoIAIgADYCJCACIAJBGGo2AiAgAiACQRRqNgIcIwBBEGsiACQAIABBCGogAkEcaiIBKAIAKAIAIAEoAgQoAgAQgQEgACAAKAIIIgQgACgCDCIBEBUgACgCBCEFIAAoAgAhBiABBEAgBCABQQEQzgELIAJBCGoiASAGNgIAIAEgBTYCBCAAQRBqJAAgAigCDCEAIAMgAigCCCIBNgIIIAMgAEEAIAFBAXEiARs2AgQgA0EAIAAgARs2AgAgAkEwaiQAIAMoAgAgAygCBCADKAIIIANBEGokAAtmAQJ/IAAgACgCCCIBQQFrNgIIIAFBAUYEQCMAQRBrIgEkACAAKAIEIgJBAEgEQEHQrsAAQSsgAUEPakHArsAAQdyvwAAQZAALIAAoAgAgAkEBEM4BIAFBEGokACAAQQxBBBDOAQsL/BYCEn8NfRA0IgggBCYBEDQiCSAHJgEjAEHgAGsiCiQAIAogATYCECAKIAA2AgwgCiACNgIUIAogAzYCGCAKIAg2AhwgCiAFNgIgIAogBjYCJCAKIAk2AiggCiAKQd8AaiIANgJYIAogCkEoajYCVCAKIApBJGo2AlAgCiAKQSBqNgJMIAogADYCSCAKIApBHGo2AkQgCiAKQRhqNgJAIAogCkEUajYCPCAKIAA2AjggCiAANgI0IAogCkEQajYCMCAKIApBDGo2AixBACEJIwBBQGoiDSQAIApBLGoiACgCACgCACEBIA0gACgCBCgCACICNgI8IA0gATYCOCANIAI2AjQgDUEQaiANQTRqIgEQWyANKAIUIQsgDSgCECEGIAAoAhgoAgAhEiAAKAIQKAIAIQIgDSAAKAIUKAIAIgM2AjwgDSACNgI4IA0gAzYCNCANQQhqIAEQWyANIBI2AiQgDSANKAIMIgg2AiAgDSANKAIIIgM2AhwgACgCKCgCACETIAAoAiAoAgAhAiANIAAoAiQoAgAiADYCPCANIAI2AjggDSAANgI0IA0gARBbIA0gEzYCMCANIA0oAgQiDjYCLCANIA0oAgAiBTYCKAJ/IAYhASADIQAgBSECAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgDkEGbiIQIAhBJG4iESALQQ1uIhQgESAUSRsiESAQIBFJGyIRBEAgEUEkbCEUQQwgCyALQQxNG0ENbkEkbCEVQSMgCCAIQSNNG0EkbkEkbCEWQQUgDiAOQQVNG0EGbkENbCEXQQMhEANAIAsgDE0NAyAMQQFqIAtPDQQgDEECaiALTw0FIAxBA2ogC08NBiAMQQRqIAtPDQcgDEEFaiALTw0IIAxBBmogC08NCSAMQQdqIAtPDQogDEEIaiALTw0LIAxBCWogC08NDCAMQQpqIAtPDQ0gDEELaiALTw0OIAkgFUYNDyAIIAlNDRAgASoCACEaIAFBBGoqAgAhICABQQhqKgIAIR4gAUEMaioCACEkIAFBEGoqAgAhJSABQRRqKgIAISYgAUEcaioCACEbIAFBIGoqAgAhHCABQSRqKgIAISEgAUEoaioCACEdIAFBLGoqAgAhIiABQTBqKgIAISMgACABQRhqKgIAIh84AgAgCUEBaiAITw0RIABBBGogGzgCACAJQQJqIAhPDRIgAEEIakEANgIAIAlBA2ogCE8NEyAAQQxqQYCAgPwDNgIAIAlBBGogCE8NFCAAQRBqQYCAgPwDNgIAIAlBBWogCE8NFSAAQRRqQYCAgPwDNgIAIAlBBmogCE8NFiAAQRhqIBw4AgAgCUEHaiAITw0XIABBHGogITgCACAJQQhqIAhPDRggAEEgaiAdOAIAIAlBCWogCE8NGSAAQSRqIBogHpQiHiAfkjgCACAJQQpqIAhPDRogAEEoaiAaICSUIhogG5I4AgAgCUELaiAITw0bIABBLGpBADYCACAJQQxqIAhPDRwgAEEwakGAgID8AzYCACAJQQ1qIAhPDR0gAEE0akGAgID8AzYCACAJQQ5qIAhPDR4gAEE4akGAgID8AzYCACAJQQ9qIAhPDR8gAEE8aiAcOAIAIAlBEGogCE8NICAAQUBrICI4AgAgCUERaiAITw0hIABBxABqIB04AgAgCUESaiAITw0iIABByABqIB4gICAllCIdkiAfkjgCACAJQRNqIAhPDSMgAEHMAGogGiAgICaUIhqSIBuSOAIAIAlBFGogCE8NJCAAQdAAakEANgIAIAlBFWogCE8NJSAAQdQAakGAgID8AzYCACAJQRZqIAhPDSYgAEHYAGpBgICA/AM2AgAgCUEXaiAITw0nIABB3ABqQYCAgPwDNgIAIAlBGGogCE8NKCAAQeAAaiAcOAIAIAlBGWogCE8NKSAAQeQAaiAiOAIAIAlBGmogCE8NKiAAQegAaiAjOAIAIAlBG2ogCE8NKyAAQewAaiAdIB+SOAIAIAlBHGogCE8NLCAAQfAAaiAaIBuSOAIAIAlBHWogCE8NLSAAQfQAakEANgIAIAlBHmogCE8NLiAAQfgAakGAgID8AzYCACAJQR9qIAhPDS8gAEH8AGpBgICA/AM2AgAgCUEgaiAITw0wIABBgAFqQYCAgPwDNgIAIAlBIWogCE8NMSAAQYQBaiAcOAIAIAlBImogCE8NMiAAQYgBaiAhOAIAIAkgFkYNMyAAQYwBaiAjOAIAIA4gD00NNCACIBBBA2siGDYCACAPQQFqIA5PDTUgAkEEaiAQQQJrNgIAIA9BAmogDk8NNiACQQhqIBBBAWsiGTYCACAPQQNqIA5PDTcgAkEMaiAYNgIAIA9BBGogDk8NOCACQRBqIBk2AgAgDCAXRg0CIAJBFGogEDYCACABQTRqIQEgAEGQAWohACAQQQRqIRAgDEENaiEMIAJBGGohAiAPQQZqIQ8gFCAJQSRqIglHDQALCyARDDcLIA9BBWogDkHMo8AAEHMACyAMIAtB7JzAABBzAAsgDEEBaiALQfycwAAQcwALIAxBAmogC0GMncAAEHMACyAMQQNqIAtBnJ3AABBzAAsgDEEEaiALQaydwAAQcwALIAxBBWogC0G8ncAAEHMACyAMQQZqIAtBzJ3AABBzAAsgDEEHaiALQdydwAAQcwALIAxBCGogC0HsncAAEHMACyAMQQlqIAtB/J3AABBzAAsgDEEKaiALQYyewAAQcwALIAxBC2ogC0GcnsAAEHMACyAMQQxqIAtBrJ7AABBzAAsgCSAIQbyewAAQcwALIAlBAWogCEHMnsAAEHMACyAJQQJqIAhB3J7AABBzAAsgCUEDaiAIQeyewAAQcwALIAlBBGogCEH8nsAAEHMACyAJQQVqIAhBjJ/AABBzAAsgCUEGaiAIQZyfwAAQcwALIAlBB2ogCEGsn8AAEHMACyAJQQhqIAhBvJ/AABBzAAsgCUEJaiAIQcyfwAAQcwALIAlBCmogCEHcn8AAEHMACyAJQQtqIAhB7J/AABBzAAsgCUEMaiAIQfyfwAAQcwALIAlBDWogCEGMoMAAEHMACyAJQQ5qIAhBnKDAABBzAAsgCUEPaiAIQaygwAAQcwALIAlBEGogCEG8oMAAEHMACyAJQRFqIAhBzKDAABBzAAsgCUESaiAIQdygwAAQcwALIAlBE2ogCEHsoMAAEHMACyAJQRRqIAhB/KDAABBzAAsgCUEVaiAIQYyhwAAQcwALIAlBFmogCEGcocAAEHMACyAJQRdqIAhBrKHAABBzAAsgCUEYaiAIQbyhwAAQcwALIAlBGWogCEHMocAAEHMACyAJQRpqIAhB3KHAABBzAAsgCUEbaiAIQeyhwAAQcwALIAlBHGogCEH8ocAAEHMACyAJQR1qIAhBjKLAABBzAAsgCUEeaiAIQZyiwAAQcwALIAlBH2ogCEGsosAAEHMACyAJQSBqIAhBvKLAABBzAAsgCUEhaiAIQcyiwAAQcwALIAlBImogCEHcosAAEHMACyAJQSNqIAhB7KLAABBzAAsgDyAOQfyiwAAQcwALIA9BAWogDkGMo8AAEHMACyAPQQJqIA5BnKPAABBzAAsgD0EDaiAOQayjwAAQcwALIA9BBGogDkG8o8AAEHMACyAFIA5BAnQiASANQTBqENMBIA4EQCAFIAFBBBDOAQsgE0GECE8EQCATEFgLIAMgCEECdCIBIA1BJGoQ0wEgCARAIAMgAUEEEM4BCyASQYQITwRAIBIQWAsgCwRAIAYgC0ECdEEEEM4BCyANQUBrJAAgCkHgAGokAAsoAQF/IAAoAgwiAQRAIAAoAgggAUEBEM4BCyAAKAIoQZDSAkEEEM4BCyMBAX8gACgCACAAKAIIIgJrIAFJBEAgACACIAFBAUEBEH8LCyUAIABFBEBB6K3AAEEyENoBAAsgACACIAMgBCAFIAEoAhARDAALIAEBf0EBIQEgACgCACIAQQFxBH8gAQUgACgCCEEBRgsLIwAgAEUEQEHorcAAQTIQ2gEACyAAIAIgAyAEIAEoAhARJAALIwAgAEUEQEHorcAAQTIQ2gEACyAAIAIgAyAEIAEoAhARAwALIwAgAEUEQEHorcAAQTIQ2gEACyAAIAIgAyAEIAEoAhARCAALIwAgAEUEQEHorcAAQTIQ2gEACyAAIAIgAyAEIAEoAhARJQALIwAgAEUEQEHorcAAQTIQ2gEACyAAIAIgAyAEIAEoAhARJgALKAEBfyAAKAIAIgFBgICAgHhyQYCAgIB4RwRAIAAoAgQgAUEBEM4BCwshACAARQRAQeitwABBMhDaAQALIAAgAiADIAEoAhARBAALIQAgAEUEQEHorcAAQTIQ2gEACyAAIAIgAyABKAIQEQEACx8AIABFBEBB6K3AAEEyENoBAAsgACACIAEoAhARAAALIQAgAEEANgIMIAAgAzYCCCAAIAI2AgQgAEHIr8AANgIACxIAQczNwABBOUHozcAAEIUBAAsPACAAENsBIABBDGoQ2wEL1AMCB38BfkGk58AALQAAQQFHBEAjAEEQayICJAACfyAARQRAQditwAAhAUEADAELIAAoAgAhASAAQQA2AgAgAEEIakHYrcAAIAFBAXEiAxshASAAKAIEQQAgAxsLIQUgAkEIaiIGIAFBCGopAgA3AwAgAiABKQIANwMAAkACQAJAQaTnwAAtAABBAWsOAgEAAgtB8KzAAEH9AEGwrcAAEIUBAAtBpOfAAEECOgAAAkBBmOfAACgCACIDRQ0AQaDnwAAoAgAiBARAQZTnwAAoAgAiAEEIaiEBIAApAwBCf4VCgIGChIiQoMCAf4MhCANAIAhQBEADQCAAQeAAayEAIAEpAwAgAUEIaiEBQoCBgoSIkKDAgH+DIghCgIGChIiQoMCAf1ENAAsgCEKAgYKEiJCgwIB/hSEICyAAIAh6p0EDdkF0bGpBBGsoAgAiB0GECE8EQCAHEFgLIAhCAX0gCIMhCCAEQQFrIgQNAAsLIAMgA0EMbEETakF4cSIAakEJaiIBRQ0AQZTnwAAoAgAgAGsgAUEIEM4BCwtBkOfAACAFNgIAQZTnwAAgAikDADcCAEGk58AAQQE6AABBnOfAACAGKQMANwIAIAJBEGokAAtBkOfAAAslAQFvEAUhAxA0IgIgAyYBIABBADYCCCAAIAI2AgQgACABNgIACxoBAX8gACgCACIBBEAgACgCBCABQQEQzgELCxYAIAAoAgBBgICAgHhHBEAgABDbAQsLHQAgASAALQAAQQJ0IgAoAryZQCAAKAKkmUAQugELHQAgASAALQAAQQJ0IgAoAtScQCAAKAK8nEAQugELHQAgASAALQAAQQJ0IgAoAvykQCAAKALkpEAQugELGgAgAEEANgIAIABBgQhBgAggAS0AABs2AgQLHwAgAEEIakGsscAAKQIANwIAIABBpLHAACkCADcCAAsfACAAQQhqQeTCwAApAgA3AgAgAEHcwsAAKQIANwIACx8AIABBCGpB9MLAACkCADcCACAAQezCwAApAgA3AgALHwAgAARAIAAgARDdAQALQZDPwABBI0Gkz8AAEIUBAAsSACAAIAFBAXRBAXIgAhCFAQALFAAgACACuxDhATYCBCAAQQA2AgALFAAgACACtxDhATYCBCAAQQA2AgALFQAgACACIAMQ5QE2AgQgAEEANgIACxAAIAEEQCAAIAEgAhDOAQsLFgAgACgCACABIAIgACgCBCgCDBEEAAsUAQFvIAAlASABIAIlASACEFgQAAsTACAAIAEoAgQ2AgQgAEEANgIAC9MGAQN/IwBB0ABrIgUkACAFIAM2AgQgBSACNgIAAn8CQAJAIAFBgQJPBEBB/QEhBgNAAkAgACAGaiIHQQNqLAAAQb9/TARAIAdBAmosAABBv39MDQEgBkECaiEGDAULIAZBA2ohBgwECyAHQQFqLAAAQb9/Sg0CIAcsAABBv39KDQMgBkEEayIGQX1HDQALQQAhBgwCCyAFIAE2AgwgBSAANgIIQQEMAgsgBkEBaiEGCyAFIAA2AgggBSAGNgIMQQVBACABIAZLIgYbIQdB0dnAAEEBIAYbCyEGIAUgBzYCFCAFIAY2AhACQCAFIAEgAk8EfyABIANPDQEgAwUgAgs2AiAgBSAFQRBqrUKAgICAsAyENwM4IAUgBUEIaq1CgICAgLAMhDcDMCAFIAVBIGqtQoCAgICwB4Q3AyhBwIDAACAFQShqIAQQhQEACwJ/AkACQAJAIAIgA00EQCACRSABIAJNckUEQCAFQQRqIAUgACACaiwAAEG/f0obKAIAIQMLIAUgAzYCGCABIANNDQJBACEHIANFDQEDQCAAIANqLAAAQb9/SgRAIAMhBwwDCyADQQFrIgMNAAsMAQsgBSAFQRBqrUKAgICAsAyENwNAIAUgBUEIaq1CgICAgLAMhDcDOCAFIAVBBGqtQoCAgICwB4Q3AzAgBSAFrUKAgICAsAeENwMoQZSAwAAgBUEoaiAEEIUBAAsgASAHRg0AIAUCfwJAIAAgB2oiAiwAACIDQQBIBEAgAi0AAUE/cSEAIANBH3EhASADQV9LDQEgAUEGdCAAcgwCCyAFIANB/wFxNgIcQQEMBAsgAi0AAkE/cSAAQQZ0ciIAIAFBDHRyIANBcEkNABogAUESdEGAgPAAcSACLQADQT9xIABBBnRycgsiADYCHCAAQYABTw0BQQEMAgsgBBDWAQALQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIQAgBSAHNgIgIAUgACAHajYCJCAFIAVBEGqtQoCAgICwDIQ3A0ggBSAFQQhqrUKAgICAsAyENwNAIAUgBUEgaq1CgICAgMAMhDcDOCAFIAVBHGqtQoCAgIDQDIQ3AzAgBSAFQRhqrUKAgICAsAeENwMoQemAwAAgBUEoaiAEEIUBAAsUACAAKAIAIAEgACgCBCgCDBEAAAsUAgFvAX8QBiEAEDQiASAAJgEgAQvrBgEFfwJ/AkACQAJAAkACQAJAAkAgAEEEayIHKAIAIghBeHEiBEEEQQggCEEDcSIFGyABak8EQCAFQQAgAUEnaiIGIARJGw0BAkAgAkEJTwRAIAIgAxAoIgINAUEADAoLQQAhAiADQcz/e0sNCEEQIANBC2pBeHEgA0ELSRshASAAQQhrIQYgBUUEQCAGRSABQYACSXIgBCABa0GAgAhLIAEgBE9ycg0HIAAMCgsgBCAGaiEFAkAgASAESwRAIAVB3OrAACgCAEYNAUHY6sAAKAIAIAVHBEAgBSgCBCIIQQJxDQkgCEF4cSIIIARqIgQgAUkNCSAFIAgQKiAEIAFrIgVBEE8EQCAHIAEgBygCAEEBcXJBAnI2AgAgASAGaiIBIAVBA3I2AgQgBCAGaiIEIAQoAgRBAXI2AgQgASAFECUMCQsgByAEIAcoAgBBAXFyQQJyNgIAIAQgBmoiASABKAIEQQFyNgIEDAgLQdDqwAAoAgAgBGoiBCABSQ0IAkAgBCABayIFQQ9NBEAgByAIQQFxIARyQQJyNgIAIAQgBmoiASABKAIEQQFyNgIEQQAhBUEAIQEMAQsgByABIAhBAXFyQQJyNgIAIAEgBmoiASAFQQFyNgIEIAQgBmoiBCAFNgIAIAQgBCgCBEF+cTYCBAtB2OrAACABNgIAQdDqwAAgBTYCAAwHCyAEIAFrIgRBD00NBiAHIAEgCEEBcXJBAnI2AgAgASAGaiIBIARBA3I2AgQgBSAFKAIEQQFyNgIEIAEgBBAlDAYLQdTqwAAoAgAgBGoiBCABSw0EDAYLIAMgASABIANLGyIDBEAgAiAAIAP8CgAACyAHKAIAIgNBeHEiByABQQRBCCADQQNxIgMbakkNAiADRSAGIAdPcg0GQazKwABBLkHcysAAELUBAAtB7MnAAEEuQZzKwAAQtQEAC0GsysAAQS5B3MrAABC1AQALQezJwABBLkGcysAAELUBAAsgByABIAhBAXFyQQJyNgIAIAEgBmoiBSAEIAFrIgFBAXI2AgRB1OrAACABNgIAQdzqwAAgBTYCAAsgBkUNACAADAMLIAMQDyIBRQ0BIANBfEF4IAcoAgAiAkEDcRsgAkF4cWoiAiACIANLGyICBEAgASAAIAL8CgAACyABIQILIAAQGAsgAgsLEQAgABC/ATYCBCAAIAE2AgALEAAgACACNgIEIABBADYCAAsPACAAIAEoAgAgAiADEDELDwAgACABKAIAIAIgAxA8Cw0AIAAgASABIAJqEHILEAAgACACNgIEIAAgATYCAAsTACAAQSg2AgQgAEH8sMAANgIACxEAIAAoAgAgACgCBCABEN8BCxEAIAAoAgQgACgCCCABEN8BCxEAIAEgACgCACAAKAIEELoBCxMAIABB3MnAADYCBCAAIAE2AgALwAYBEH8gACgCBCEGIAAoAgghBEEAIQAjAEEQayIKJABBASEMAkAgASgCACILQSIgASgCBCINKAIQIg4RAAANAAJAIARFBEAMAQtBACAEayEPIAQhACAGIQECQAJ/A0AgACABakEAIQMCQANAIAEgA2oiBS0AACIHQf8Aa0H/AXFBoQFJIAdBIkZyIAdB3ABGcg0BIAAgA0EBaiIDRw0ACyAAIAhqDAILIAVBAWohAQJAIAUsAAAiAEEATgRAIABB/wFxIQAMAQsgAS0AAEE/cSEJIABBH3EhByAFQQJqIQEgAEFfTQRAIAdBBnQgCXIhAAwBCyABLQAAQT9xIAlBBnRyIQkgBUEDaiEBIABBcEkEQCAJIAdBDHRyIQAMAQsgB0ESdEGAgPAAcSABLQAAQT9xIAlBBnRyciEAIAVBBGohAQsgCiAAQYGABBAaAkAgCi0ADSIHIAotAAwiCWsiEUH/AXFBAUYNAAJAAkACQCACIAMgCGoiBUsNAAJAIAJFDQAgAiAETwRAIAIgBEcNAgwBCyACIAZqLAAAQb9/TA0BCwJAIAVFDQAgBCAFTQRAIAUgD2pFDQEMAgsgBiAIaiADaiwAAEG/f0wNAQsgCyACIAZqIAggAmsgA2ogDSgCDCICEQQARQ0BDAILIAYgBCACIAVBtNXAABC9AQALAkAgB0GBAU8EQCALIAooAgAgDhEAAA0CDAELIAsgCSAKaiARIAIRBAANAQsCf0EBIABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIANqIQIMAQsMBQsCf0EBIABBgAFJDQAaQQIgAEGAEEkNABpBA0EEIABBgIAESRsLIAhqIgUgA2ohCCABayIADQALIAMgBWoLIgMgAkkNAEEAIQACQCACRQ0AIAIgBE8EQCACIgAgBEcNAgwBCyACIgAgBmosAABBv39MDQELIANFBEBBACEDDAILIAMgBE8EQCADIARGDQIgACECDAELIAMgBmosAABBv39KDQEgACECCyAGIAQgAiADQcTVwAAQvQEACyALIAAgBmogAyAAayANKAIMEQQADQAgC0EiIA4RAAAhDAsgCkEQaiQAIAwLEAAgASAAKAIAIAAoAgQQIAthAQF/AkACQCAAQQRrKAIAIgJBeHEiA0EEQQggAkEDcSICGyABak8EQCACQQAgAyABQSdqSxsNASAAEBgMAgtB7MnAAEEuQZzKwAAQtQEAC0GsysAAQS5B3MrAABC1AQALCx0BAW8gACgCACUBIAElASABEFggAiUBIAIQWBACCw0AIAAoAgAoAghBAUYLEgBBiLDAAEELQZCwwAAQhQEACw0AIAAoAgAoAhBBAUYLDwAgACABIAIoAgAlARAKCw8AIABBgMnAACABIAIQIQsPACAAQYDOwAAgASACECELDwBB1tnAAEErIAAQtQEACxkAAn8gAUEJTwRAIAEgABAoDAELIAAQDwsLjgEBAn8CQCMAQRBrIgEkACABQQRqIANBAEEBQQEQRCABKAIIIQQgASgCBEEBRwRAIAEoAgwhBSADBEAgBSACIAP8CgAACyAAIAQ2AgggACADNgIEIAAgBTYCACAAQQdBICAEQQp2Z2siACAAQQdPG0ECdEEBcjYCDCABQRBqJAAMAQsgBCABKAIMELQBAAsLDgAgAUHsr8AAQQsQugELCQAgACABEAcACwoAIABBAUEBEFULDAAgACABKQIANwMACz4BAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQQhqIgAoAgAgACgCBEGU68AAKAIAIgBBzQAgABsRAgAACw4AIAFB+M3AAEEFELoBCwoAIAIgACABECALDQAgAUHe5sAAQRgQIAsWAgFvAX8gABAMIQEQNCICIAEmASACCwoAIAAoAgAQlwELCgAgACgCABCVAQsWAQFvIAAgARAIIQIQNCIAIAImASAACxYBAW8gACABEA0hAhA0IgAgAiYBIAALCQAgAEEANgIACwwAQZDrwABBAToAAAsCAAsEAEEACwIACwu3ZgsAQYCAwAALoxhpbnZhbGlkIHRhZyB2YWx1ZTogMA5iZWdpbiA8PSBlbmQgKMAEIDw9IMAQKSB3aGVuIHNsaWNpbmcgYMABYMAAC2J5dGUgaW5kZXggwBYgaXMgb3V0IG9mIGJvdW5kcyBvZiBgwAFgwAALYnl0ZSBpbmRleCDAJiBpcyBub3QgYSBjaGFyIGJvdW5kYXJ5OyBpdCBpcyBpbnNpZGUgwAggKGJ5dGVzIMAGKSBvZiBgwAFgwAAiYWR2YW5jZSBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzIMASIGJ1dCBhZHZhbmNpbmcgYnkgwAAWc2xpY2UgaW5kZXggc3RhcnRzIGF0IMANIGJ1dCBlbmRzIGF0IMAAIGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgwBIgYnV0IHRoZSBpbmRleCBpcyDAABJyYW5nZSBzdGFydCBpbmRleCDAIiBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCDAABByYW5nZSBlbmQgaW5kZXggwCIgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggwAAhY2Fubm90IGFkdmFuY2UgcGFzdCBgcmVtYWluaW5nYDogwAQgPD0gwABIY2Fubm90IGFjY2VzcyBhIFRocmVhZCBMb2NhbCBTdG9yYWdlIHZhbHVlIGR1cmluZyBvciBhZnRlciBkZXN0cnVjdGlvbjogwAATaW52YWxpZCBrZXkgdmFsdWU6IMAAGWludmFsaWQgd2lyZSB0eXBlIHZhbHVlOiDAABJTZXJpYWxpemUgZmFpbGVkOiDAABBJbmZsYXRlIGZhaWxlZDogwAAYUHJvdG9idWYgZGVjb2RlIGZhaWxlZDogwADAAjogwABzcmNcdmVydGV4LnJzAEM6XFVzZXJzXFNhcmdlcmFzXC5jYXJnb1xyZWdpc3RyeVxzcmNcaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2ZcYnl0ZXMtMS4xMS4xXHNyY1xieXRlc19tdXQucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9hbGxvYy9zcmMvZm10LnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvc3RkL3NyYy9pby9pbXBscy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcYnl0ZXMucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3N5cy90aHJlYWRfbG9jYWwvbm9fdGhyZWFkcy5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG1pbml6X294aWRlLTAuOC45XHNyY1xpbmZsYXRlXG91dHB1dF9idWZmZXIucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxmbGF0ZTItMS4xLjlcc3JjXGJ1ZnJlYWRlci5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxzdHJlYW0ucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL3RocmVhZC9sb2NhbC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2lvL2JvcnJvd2VkX2J1Zi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTE3XHNyY1xleHRlcm5yZWYucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxtaW5pel9veGlkZS0wLjguOVxzcmNcaW5mbGF0ZVxjb3JlLnJzAC9ydXN0Yy9lNDA4OTQ3YmZkMjAwYWY0MmRiMzIyZGFmMGZhZGZlN2UyNmQzYmQxL2xpYnJhcnkvY29yZS9zcmMvdW5pY29kZS9wcmludGFibGUucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxieXRlcy0xLjExLjFcc3JjXGJ1Zlx0YWtlLnJzAC9ydXN0L2RlcHMvaGFzaGJyb3duLTAuMTYuMS9zcmMvcmF3L21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMAL3J1c3RjL2U0MDg5NDdiZmQyMDBhZjQyZGIzMjJkYWYwZmFkZmU3ZTI2ZDNiZDEvbGlicmFyeS9zdGQvc3JjL2lvL21vZC5ycwAvcnVzdGMvZTQwODk0N2JmZDIwMGFmNDJkYjMyMmRhZjBmYWRmZTdlMjZkM2JkMS9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjL21vZC5ycwAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi4xMS9zcmMvZGxtYWxsb2MucnMAQzpcVXNlcnNcU2FyZ2VyYXNcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3ZlxzZXJkZS13YXNtLWJpbmRnZW4tMC42LjVcc3JjXGxpYi5ycwBDOlxVc2Vyc1xTYXJnZXJhc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXGJ5dGVzLTEuMTEuMVxzcmNcbGliLnJzACZjb3B5X2Zyb21fc2xpY2U6IHNvdXJjZSBzbGljZSBsZW5ndGggKMArKSBkb2VzIG5vdCBtYXRjaCBkZXN0aW5hdGlvbiBzbGljZSBsZW5ndGggKMABKQDACyAob3MgZXJyb3IgwAEpABNpbnZhbGlkIHdpcmUgdHlwZTogwAsgKGV4cGVjdGVkIMABKQDAAS7AAjogAGludmFsaWQgdmFyaW50TGF5b3V0eHl3aWR0aGhlaWdodFRyYW5zZm9ybWFiY2R0eHR5QXVkaW9FbnRpdHlhdWRpb19rZXlzdGFydF9mcmFtZWVuZF9mcmFtZXN0YXJ0X3RpbWV0b3RhbF90aW1lRnJhbWVFbnRpdHlhbHBoYWxheW91dHRyYW5zZm9ybWNsaXBfcGF0aHNoYXBlc01vdmllRW50aXR5dmVyc2lvbnBhcmFtc2ltYWdlc3Nwcml0ZXNhdWRpb3NNb3ZpZVBhcmFtc3ZpZXdfYm94X3dpZHRodmlld19ib3hfaGVpZ2h0ZnBzZnJhbWVzU2hhcGVFbnRpdHlyI3R5cGVzaGFwZXJlY3RlbGxpcHNlc3R5bGVzU3ByaXRlRW50aXR5aW1hZ2Vfa2V5AAAAAAD//////////xgMEABBsJjAAAuzAURhdGEgdG9vIHNob3J0IGZvciB6bGliYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50VmFyaW50U2l4dHlGb3VyQml0TGVuZ3RoRGVsaW1pdGVkU3RhcnRHcm91cEVuZEdyb3VwVGhpcnR5VHdvQml0BgAAAAwAAAAPAAAACgAAAAgAAAAMAAAAZQwQAGsMEAB3DBAAhgwQAJAMEACYDBAAAAAAAP//////////2AwQAEHwmcAAC+sTYXNzZXJ0aW9uIGZhaWxlZDogbiA8PSBzZWxmLmJ1Zi5pbml0IC0gc2VsZi5idWYuZmlsbGVkAABaBhAAUwAAABUBAAAJAAAAuQgQAEkAAACyAQAAMQAAAEF0dGVtcHRlZCB0byBpbml0aWFsaXplIHRocmVhZC1sb2NhbCB3aGlsZSBpdCBpcyBiZWluZyBkcm9wcGVkAAAVBBAAXgAAAGsAAAANAAAAYnVmZmVyIHVuZGVyZmxvd2ludmFsaWQgdmFyaW50Y29ycnVwdCBkZWZsYXRlIHN0cmVhbVZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdGNhbGxlZCBgT3B0aW9uOjp1bndyYXBfdGhyb3coKWAgb24gYSBgTm9uZWAgdmFsdWUGAAAADAAAAA8AAAAKAAAACAAAAAwAAADMDRAA0g0QAN4NEADtDRAA9w0QAP8NEACsAhAADQAAABwAAAAYAAAArAIQAA0AAAAdAAAAGAAAAKwCEAANAAAAHgAAABEAAACsAhAADQAAAB8AAAARAAAArAIQAA0AAAAgAAAAEQAAAKwCEAANAAAAIQAAABEAAACsAhAADQAAACIAAAASAAAArAIQAA0AAAAjAAAAEgAAAKwCEAANAAAAJAAAABUAAACsAhAADQAAACUAAAAYAAAArAIQAA0AAAAmAAAAGAAAAKwCEAANAAAAJwAAABgAAACsAhAADQAAACgAAAAYAAAArAIQAA0AAAA2AAAACQAAAKwCEAANAAAANwAAAAkAAACsAhAADQAAADgAAAAJAAAArAIQAA0AAAA5AAAACQAAAKwCEAANAAAAOgAAAAkAAACsAhAADQAAADsAAAAJAAAArAIQAA0AAAA8AAAACQAAAKwCEAANAAAAPQAAAAkAAACsAhAADQAAAD4AAAAJAAAArAIQAA0AAABCAAAACQAAAKwCEAANAAAAQwAAAAkAAACsAhAADQAAAEQAAAAJAAAArAIQAA0AAABFAAAACQAAAKwCEAANAAAARgAAAAkAAACsAhAADQAAAEcAAAAJAAAArAIQAA0AAABIAAAACQAAAKwCEAANAAAASQAAAAkAAACsAhAADQAAAEoAAAAJAAAArAIQAA0AAABOAAAACQAAAKwCEAANAAAATwAAAAkAAACsAhAADQAAAFAAAAAJAAAArAIQAA0AAABRAAAACQAAAKwCEAANAAAAUgAAAAkAAACsAhAADQAAAFMAAAAJAAAArAIQAA0AAABUAAAACQAAAKwCEAANAAAAVQAAAAkAAACsAhAADQAAAFYAAAAJAAAArAIQAA0AAABaAAAACQAAAKwCEAANAAAAWwAAAAkAAACsAhAADQAAAFwAAAAJAAAArAIQAA0AAABdAAAACQAAAKwCEAANAAAAXgAAAAkAAACsAhAADQAAAF8AAAAJAAAArAIQAA0AAABgAAAACQAAAKwCEAANAAAAYQAAAAkAAACsAhAADQAAAGIAAAAJAAAArAIQAA0AAABmAAAACQAAAKwCEAANAAAAZwAAAAkAAACsAhAADQAAAGgAAAAJAAAArAIQAA0AAABpAAAACQAAAKwCEAANAAAAagAAAAkAAACsAhAADQAAAGsAAAAJAAAAcmVjdXJzaW9uIGxpbWl0IHJlYWNoZWRpbnZhbGlkIHN0cmluZyB2YWx1ZTogZGF0YSBpcyBub3QgVVRGLTggZW5jb2RlZFZhcmludFNpeHR5Rm91ckJpdExlbmd0aERlbGltaXRlZFN0YXJ0R3JvdXBFbmRHcm91cFRoaXJ0eVR3b0JpdAAAAAYAAAAMAAAADwAAAAoAAAAIAAAADAAAACISEAAoEhAANBIQAEMSEABNEhAAVRIQAGgDEABLAAAANgEAABgAAAABAAAAAAAAALQDEABgAAAAwwIAAAkAAADqBBAAZAAAAGIAAAAVAAAAYGxlbmAgZ3JlYXRlciB0aGFuIHJlbWFpbmluZ94HEABjAAAAmAAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBjbnQgPD0gc2VsZi5saW1pdADeBxAAYwAAAJIAAAAJAAAAaW52YWxpZCB0YWcgdmFsdWU6IDBkZWxpbWl0ZWQgbGVuZ3RoIGV4Y2VlZGVkYnVmZmVyIHVuZGVyZmxvd3VuZXhwZWN0ZWQgZW5kIGdyb3VwIHRhZ3JlY3Vyc2lvbiBsaW1pdCByZWFjaGVkaW52YWxpZCB2YXJpbnRyZWN0ZWxsaXBzZURlY29kZWRUcmFuc2Zvcm1hYmNkdHh0eURlY29kZWRTaGFwZVN0eWxlZmlsbHN0cm9rZXN0cm9rZV93aWR0aGxpbmVfY2FwbGluZV9qb2lubWl0ZXJfbGltaXRsaW5lX2Rhc2hEZWNvZGVkUmVjdHh5d2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzRGVjb2RlZEF1ZGlvYXVkaW9fa2V5c3RhcnRfZnJhbWVlbmRfZnJhbWVzdGFydF90aW1ldG90YWxfdGltZURlY29kZWRDb2xvcnJnRGVjb2RlZEZyYW1lYWxwaGFsYXlvdXR0cmFuc2Zvcm1jbGlwX3BhdGhzaGFwZXNEZWNvZGVkTW92aWV2ZXJzaW9ucGFyYW1zaW1hZ2Vzc3ByaXRlc2F1ZGlvc0RlY29kZWRTaGFwZWtpbmRwYXRoX2RhdGFzdHlsZURlY29kZWRMYXlvdXREZWNvZGVkUGFyYW1zdmlld19ib3hfd2lkdGh2aWV3X2JveF9oZWlnaHRmcHNmcmFtZXNEZWNvZGVkU3ByaXRlaW1hZ2Vfa2V5RGVjb2RlZEVsbGlwc2VyYWRpdXNfeHJhZGl1c195TWFwIGtleSBpcyBub3QgYSBzdHJpbmcgYW5kIGNhbm5vdCBiZSBhbiBvYmplY3Qga2V5UmdiYUNvbG9yZ3JiYVNoYXBlQXJnc2RTaGFwZVN0eWxlbWl0ZXJfbGltaXRsaW5lX2Rhc2hfaWlpZmlsbGxpbmVfY2Fwc3Ryb2tlbGluZV9kYXNoX2lsaW5lX2Rhc2hfaWlsaW5lX2pvaW5zdHJva2Vfd2lkdGhFbGxpcHNlQXJnc3h5cmFkaXVzX3hyYWRpdXNfeVJlY3RBcmdzd2lkdGhoZWlnaHRjb3JuZXJfcmFkaXVzAAAACQAAAH8JEABqAAAANQAAAA4AAABBdHRlbXB0ZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQtbG9jYWwgd2hpbGUgaXQgaXMgYmVpbmcgZHJvcHBlZAAAFQQQAF4AAABrAAAADQAAAAoGEABPAAAA3wEAABkAAAD//////////9AWEABB6K3AAAtVY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRmYWlsZWQgdG8gZGVjb2RlIFByb3RvYnVmIG1lc3NhZ2U6IABByK7AAAulAwEAAAAnAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAoAAAAKQAAACoAAAArAAAALAAAALQDEABgAAAAOgUAADIAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADAAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAC0AxAAYAAAAEgFAABJAAAATGF5b3V0RXJyb3IA6gkQAF4AAACqAAAABQAAAGFib3J0AAAA6gkQAF4AAABuAAAACQAAAG92ZXJmbG93ugIQAGQAAACpAgAAFQAAALoCEABkAAAAvQIAAB0AAAA8AAAAPQAA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OwQAACYAAAAbBxAAbAAAAEQEAAAjAAAAGwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAAEcEAAANAAAAGwcQAGwAAABIBAAAIgAAABsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABNBAAADQAAABsHEABsAAAATgQAACIAAAAbBxAAbAAAAE4EAAANAAAAGwcQAGwAAABPBAAAJgAAABsHEABsAAAATwQAAA0AAAAbBxAAbAAAACwEAAAXAAAAmwUQAG4AAABCAQAAHAAAAJsFEABuAAAAdgEAADAAAABkZXN0IGlzIG91dCBvZiBib3VuZHMAAABtXcvWLFDrY3hBpldxG4u5mrjukVEUlljPlgDo0p8SimVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQg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";let FA=null,zs=null;function At(){return FA!==null}async function uC(){return FA?!0:zs||(zs=(async()=>{try{return await fC({module_or_path:Fa}),oC(),FA=Ga,!0}catch(i){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",i),!1}})(),zs)}function Sa(i){if(!FA)return null;try{return FA.inflate(i)}catch(A){return null}}function Na(i){if(!FA)return null;try{return Ra(FA.decode_svga(i))}catch(A){return null}}function kn(i,A,t){if(!FA)return null;try{return FA.build_batch_vertices(i,A,t)}catch(e){return null}}function Ra(i){var A,t,e,g,I,s,n;const B=i.params,C=B?{viewBoxWidth:(A=B.view_box_width)!=null?A:0,viewBoxHeight:(t=B.view_box_height)!=null?t:0,fps:(e=B.fps)!=null?e:20,frames:(g=B.frames)!=null?g:0}:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},Q=new Map,a=i.images;if(a instanceof Map)for(const[o,h]of a)Q.set(o,h instanceof Uint8Array?h:new Uint8Array(h));else if(a&&typeof a=="object")for(const[o,h]of Object.entries(a))Q.set(o,h instanceof Uint8Array?h:new Uint8Array(h));const E=((I=i.sprites)!=null?I:[]).map(Ua),r=((s=i.audios)!=null?s:[]).map(o=>{var h,c,u,d,f;return{audioKey:(h=o.audio_key)!=null?h:"",startFrame:(c=o.start_frame)!=null?c:0,endFrame:(u=o.end_frame)!=null?u:0,startTime:(d=o.start_time)!=null?d:0,totalTime:(f=o.total_time)!=null?f:0}});return{version:(n=i.version)!=null?n:"",params:C,images:Q,sprites:E,audios:r}}function Ua(i){var A,t;let e=null;const g=((A=i.frames)!=null?A:[]).map(I=>{var s,n,B,C,Q,a,E,r,o,h,c,u,d;const f=Array.isArray(I.shapes)?I.shapes:[];let w;return f.length===0?(e=null,w=null):((s=f[0])==null?void 0:s.kind)==="keep"?w=e:(w=xa(f),e=w),{alpha:(n=I.alpha)!=null?n:0,layout:I.layout?{x:(B=I.layout.x)!=null?B:0,y:(C=I.layout.y)!=null?C:0,width:(Q=I.layout.width)!=null?Q:0,height:(a=I.layout.height)!=null?a:0}:null,transform:I.transform?{a:(E=I.transform.a)!=null?E:1,b:(r=I.transform.b)!=null?r:0,c:(o=I.transform.c)!=null?o:0,d:(h=I.transform.d)!=null?h:1,tx:(c=I.transform.tx)!=null?c:0,ty:(u=I.transform.ty)!=null?u:0}:null,clipPath:(d=I.clip_path)!=null?d:"",shapes:w}});return{imageKey:(t=i.image_key)!=null?t:"",frames:g}}function xB(i){var A,t,e,g;return i?{r:(A=i.r)!=null?A:0,g:(t=i.g)!=null?t:0,b:(e=i.b)!=null?e:0,a:(g=i.a)!=null?g:0}:null}function ka(i){var A,t,e,g,I,s;const n=(A=i==null?void 0:i.line_dash)!=null?A:i==null?void 0:i.lineDash;return{fill:xB(i==null?void 0:i.fill),stroke:xB(i==null?void 0:i.stroke),strokeWidth:(e=(t=i==null?void 0:i.stroke_width)!=null?t:i==null?void 0:i.strokeWidth)!=null?e:0,lineCap:(g=i==null?void 0:i.line_cap)!=null?g:i==null?void 0:i.lineCap,lineJoin:(I=i==null?void 0:i.line_join)!=null?I:i==null?void 0:i.lineJoin,miterLimit:(s=i==null?void 0:i.miter_limit)!=null?s:i==null?void 0:i.miterLimit,lineDash:Array.isArray(n)&&n.length>0?n:void 0}}function Ma(i){var A,t,e,g,I,s;return{a:(A=i==null?void 0:i.a)!=null?A:1,b:(t=i==null?void 0:i.b)!=null?t:0,c:(e=i==null?void 0:i.c)!=null?e:0,d:(g=i==null?void 0:i.d)!=null?g:1,tx:(I=i==null?void 0:i.tx)!=null?I:0,ty:(s=i==null?void 0:i.ty)!=null?s:0}}function xa(i){var A,t,e,g,I,s,n,B,C,Q,a,E,r;if(!Array.isArray(i)||i.length===0)return null;const o=[];for(const h of i){const c=h==null?void 0:h.kind;if(c!=="path"&&c!=="rect"&&c!=="ellipse")continue;const u={kind:c,pathData:(A=h.path_data)!=null?A:h.pathData,rect:h.rect?{x:(t=h.rect.x)!=null?t:0,y:(e=h.rect.y)!=null?e:0,width:(g=h.rect.width)!=null?g:0,height:(I=h.rect.height)!=null?I:0,cornerRadius:(n=(s=h.rect.corner_radius)!=null?s:h.rect.cornerRadius)!=null?n:0}:void 0,ellipse:h.ellipse?{x:(B=h.ellipse.x)!=null?B:0,y:(C=h.ellipse.y)!=null?C:0,radiusX:(a=(Q=h.ellipse.radius_x)!=null?Q:h.ellipse.radiusX)!=null?a:0,radiusY:(r=(E=h.ellipse.radius_y)!=null?E:h.ellipse.radiusY)!=null?r:0}:void 0,style:ka(h.style),transform:Ma(h.transform)};o.push(u)}return o.length>0?o:null}var ba=Object.defineProperty,Ya=(i,A,t)=>A in i?ba(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,Mn=(i,A,t)=>Ya(i,typeof A!="symbol"?A+"":A,t);class wC{constructor(){Mn(this,"floatPoolA",null),Mn(this,"floatPoolB",null),Mn(this,"uint32Pool",null)}getFloat32(A){var t,e;if(!this.floatPoolA||this.floatPoolA.length<A){const g=Math.max(A,((e=(t=this.floatPoolA)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolA=new Float32Array(g)}return this.floatPoolA}getFloat32B(A){var t,e;if(!this.floatPoolB||this.floatPoolB.length<A){const g=Math.max(A,((e=(t=this.floatPoolB)==null?void 0:t.length)!=null?e:0)*2,1024);this.floatPoolB=new Float32Array(g)}return this.floatPoolB}getUint32(A){var t,e;if(!this.uint32Pool||this.uint32Pool.length<A){const g=Math.max(A,((e=(t=this.uint32Pool)==null?void 0:t.length)!=null?e:0)*2,1024);this.uint32Pool=new Uint32Array(g)}return this.uint32Pool}destroy(){this.floatPoolA=null,this.floatPoolB=null,this.uint32Pool=null}}function TA(i,A,t,e,g,I){const s=1/(i-A),n=1/(t-e),B=1/(g-I),C=new Float32Array(16);return C[0]=-2*s,C[5]=-2*n,C[10]=2*B,C[12]=(i+A)*s,C[13]=(e+t)*n,C[14]=(g+I)*B,C[15]=1,C}function An(i,A,t){return i+(A-i)*t}function tB(i,A,t){return i<A?A:i>t?t:i}let La=0;function DC(){return`gift_${++La}_${Date.now().toString(36)}`}const on=8;function bB(i){if(!i||i.trim().length===0)return[];const A=[];let t=[],e=0,g=0,I=0,s=0,n=0,B=0;const C=_a(i);let Q=0;function a(){return Q<C.length?parseFloat(C[Q++]):0}for(;Q<C.length;)switch(C[Q++]){case"M":for(t.length>0&&(A.push(t),t=[]),e=a(),g=a(),I=e,s=g,t.push({x:e,y:g});Q<C.length&&!isNaN(parseFloat(C[Q]));)e=a(),g=a(),t.push({x:e,y:g});break;case"m":for(t.length>0&&(A.push(t),t=[]),e+=a(),g+=a(),I=e,s=g,t.push({x:e,y:g});Q<C.length&&!isNaN(parseFloat(C[Q]));)e+=a(),g+=a(),t.push({x:e,y:g});break;case"L":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e=a(),g=a(),t.push({x:e,y:g});break;case"l":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e+=a(),g+=a(),t.push({x:e,y:g});break;case"H":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e=a(),t.push({x:e,y:g});break;case"h":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)e+=a(),t.push({x:e,y:g});break;case"V":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)g=a(),t.push({x:e,y:g});break;case"v":for(;Q<C.length&&!isNaN(parseFloat(C[Q]));)g+=a(),t.push({x:e,y:g});break;case"C":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const r=a(),o=a(),h=a(),c=a(),u=a(),d=a();Zs(t,e,g,r,o,h,c,u,d),n=h,B=c,e=u,g=d}break}case"c":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const r=e+a(),o=g+a(),h=e+a(),c=g+a(),u=e+a(),d=g+a();Zs(t,e,g,r,o,h,c,u,d),n=h,B=c,e=u,g=d}break}case"S":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const r=2*e-n,o=2*g-B,h=a(),c=a(),u=a(),d=a();Zs(t,e,g,r,o,h,c,u,d),n=h,B=c,e=u,g=d}break}case"s":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const r=2*e-n,o=2*g-B,h=e+a(),c=g+a(),u=e+a(),d=g+a();Zs(t,e,g,r,o,h,c,u,d),n=h,B=c,e=u,g=d}break}case"Q":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const r=a(),o=a(),h=a(),c=a();YB(t,e,g,r,o,h,c),n=r,B=o,e=h,g=c}break}case"q":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const r=e+a(),o=g+a(),h=e+a(),c=g+a();YB(t,e,g,r,o,h,c),n=r,B=o,e=h,g=c}break}case"Z":case"z":e=I,g=s,t.length>0&&(A.push(t),t=[]);break}return t.length>0&&A.push(t),A}function _a(i){return i.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function Zs(i,A,t,e,g,I,s,n,B){for(let C=1;C<=on;C++){const Q=C/on,a=1-Q,E=a*a,r=Q*Q;i.push({x:E*a*A+3*E*Q*e+3*a*r*I+r*Q*n,y:E*a*t+3*E*Q*g+3*a*r*s+r*Q*B})}}function YB(i,A,t,e,g,I,s){for(let n=1;n<=on;n++){const B=n/on,C=1-B;i.push({x:C*C*A+2*C*B*e+B*B*I,y:C*C*t+2*C*B*g+B*B*s})}}function LB(i){const A=i.length;if(A<3)return[];if(A===3)return[0,1,2];const t=[],e=Array.from({length:A},(n,B)=>B),I=Ja(i)>0;let s=A*A;for(;e.length>3&&s-- >0;){let n=!1;const B=e.length;for(let C=0;C<B;C++){const Q=e[(C-1+B)%B],a=e[C],E=e[(C+1)%B],r=i[Q],o=i[a],h=i[E],c=(o.x-r.x)*(h.y-r.y)-(o.y-r.y)*(h.x-r.x);if(!(I?c>0:c<0))continue;let d=!1;for(let f=0;f<B;f++)if(!(f===(C-1+B)%B||f===C||f===(C+1)%B)&&Ha(i[e[f]],r,o,h)){d=!0;break}if(!d){I?t.push(Q,a,E):t.push(Q,E,a),e.splice(C,1),n=!0;break}}if(!n)break}if(e.length===3){const[n,B,C]=e;I?t.push(n,B,C):t.push(n,C,B)}return t}function Ja(i){let A=0;const t=i.length;for(let e=0;e<t;e++){const g=(e+1)%t;A+=i[e].x*i[g].y,A-=i[g].x*i[e].y}return A*.5}function Ha(i,A,t,e){const g=xn(i,A,t),I=xn(i,t,e),s=xn(i,e,A),n=g<0||I<0||s<0,B=g>0||I>0||s>0;return!(n&&B)}function xn(i,A,t){return(i.x-t.x)*(A.y-t.y)-(A.x-t.x)*(i.y-t.y)}function uA(i){var A;return(A=i.options.objectFit)!=null?A:"contain"}function tt(i,A,t){const e=i.width*i.scale,g=i.height*i.scale,I=uA(i);if(!(A>0)||!(t>0))return{scaleX:1,scaleY:1,width:e,height:g,offsetX:0,offsetY:0};if(I==="fill")return{scaleX:e/A,scaleY:g/t,width:e,height:g,offsetX:0,offsetY:0};const s=I==="cover"?Math.max(e/A,g/t):Math.min(e/A,g/t),n=A*s,B=t*s;return{scaleX:s,scaleY:s,width:n,height:B,offsetX:I==="cover"?(e-n)*.5:0,offsetY:I==="cover"?(g-B)*.5:0}}var Ka=Object.defineProperty,va=(i,A,t)=>A in i?Ka(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,L=(i,A,t)=>va(i,typeof A!="symbol"?A+"":A,t);const bn=2048,hB=class eB{constructor(){L(this,"pool",new wC),L(this,"vertexBufHandles",[]),L(this,"indexBufHandles",[]),L(this,"clipVertBufHandles",[]),L(this,"clipIdxBufHandles",[]),L(this,"clipSpriteVertBufHandles",[]),L(this,"clipSpriteIdxBufHandles",[]),L(this,"batchDrawCursor",0),L(this,"clipMaskDrawCursor",0),L(this,"clipSpriteDrawCursor",0),L(this,"canvasWidth",0),L(this,"canvasHeight",0),L(this,"projCacheW",0),L(this,"projCacheH",0),L(this,"projCache",null),L(this,"clipMeshCache",new Map),L(this,"clipTransformedVertsScratch",null),L(this,"clipFrameDataScratch",new Float32Array(MA)),L(this,"instancedFrameDataScratch",new Float32Array(bn*MA)),L(this,"clipSpriteVertsScratch",null),L(this,"clipSpriteIndicesScratch",null),L(this,"shapeVertsScratch",null),L(this,"instancedQuadVB",null),L(this,"instancedQuadIB",null),L(this,"whiteTexture",null),L(this,"shapeMeshCache",new WeakMap)}beginFrame(A){this.batchDrawCursor=0,this.clipMaskDrawCursor=0,this.clipSpriteDrawCursor=0;const t=A.canvas.width,e=A.canvas.height;this.canvasWidth=t,this.canvasHeight=e}flush(A,t){this.beginFrame(A),this.drawSlots(A,t.values())}drawSlot(A,t){t.type!=="svga"||!this.hasRenderableSVGA(t)||t.state!=="playing"&&t.state!=="fly"||this.flushGroup(A,[t])}drawSlots(A,t){const e=[];for(const g of t)g.type!=="svga"||!this.hasRenderableSVGA(g)||g.state!=="playing"&&g.state!=="fly"||e.push(g);e.length!==0&&this.flushGroup(A,e)}flushGroup(A,t){if(t.length===0)return;const e=this.getProjection(),g=[];let I=null;for(const s of t){const n=s.videoEntity,B=n.params.viewBoxWidth,C=n.params.viewBoxHeight,Q=uA(s),a=tt(s,B,C),E=a.scaleX,r=a.scaleY,o=s.width*s.scale,h=s.height*s.scale,c=Q==="cover"?o:Math.min(a.width,o),u=Q==="cover"?h:Math.min(a.height,h),d=s.x,f=s.y,w=s.x,p=s.y;g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),A.setScissor(d,f,c,u),s.x=w+a.offsetX,s.y=p+a.offsetY;for(const y of n.sprites){if(s.currentFrame<0||s.currentFrame>=y.frames.length)continue;const m=y.frames[s.currentFrame];if(m.alpha<.05)continue;const N=this.resolveSpriteTextureBinding(s,y.imageKey),U=!!m.shapes&&m.shapes.length>0;if(!N&&!U)continue;const S=m.clipPath,J=S&&S.length>0?this.getClipMesh(S):null,R=N?{slot:s,sprite:y,frame:m,binding:N,sx:E,sy:r}:null;if(U){g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),R&&(J&&J.indices.length>0?this.drawClippedSprite(A,R,J,e):this.drawSingleSprite(A,R,e)),this.drawShapeFrame(A,s,m,E,r,J,e);continue}if(!R)continue;const z=!R.binding.override&&(!I||I.id===R.binding.handle.id);J&&J.indices.length>0?(g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),this.drawClippedSprite(A,R,J,e)):z?(g.push(R),I=R.binding.handle,g.length>=bn&&(this.drawBatch(A,g,I,e),g.length=0,I=null)):(g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),this.drawSingleSprite(A,R,e))}g.length>0&&(this.drawBatch(A,g,I,e),g.length=0,I=null),s.x=w,s.y=p}g.length>0&&this.drawBatch(A,g,I,e),A.resetScissor()}getProjection(){return this.projCache&&this.projCacheW===this.canvasWidth&&this.projCacheH===this.canvasHeight?this.projCache:(this.projCacheW=this.canvasWidth,this.projCacheH=this.canvasHeight,this.projCache=TA(0,this.canvasWidth,this.canvasHeight,0,-1,1),this.projCache)}drawBatch(A,t,e,g){const I=Math.min(t.length,bn);if(I<1)return;if(A.type==="webgl2"||A.type==="webgpu"){this.drawBatchInstancedWebGL(A,t,I,e,g);return}const s=this.pool.getFloat32(I*MA);for(let u=0;u<I;u++){const{slot:d,frame:f,binding:w,sx:p,sy:y}=t[u];this.packFrameData(s,u,d,f,w,p,y)}const n=I*PA*fA,B=I*Fs,C=this.pool.getFloat32B(n),Q=this.pool.getUint32(B),a=new Float32Array(s.buffer,0,I*MA),E=new Float32Array(C.buffer,0,n),r=new Uint32Array(Q.buffer,0,B);(!At()||kn(a,E,r)===null)&&Ps(a,E,r);const o=this.batchDrawCursor++,h=this.ensureVertexBuffer(A,o,E),c=this.ensureIndexBuffer(A,o,r);A.draw({shader:"svga-batch-premul",vertexBuffer:h,indexBuffer:c,indexCount:B,textures:[e],uniforms:{u_projection:g,u_atlas:0}})}drawBatchInstancedWebGL(A,t,e,g,I){this.ensureInstancedQuadBuffers(A);const s=this.instancedFrameDataScratch;for(let n=0;n<e;n++){const{slot:B,frame:C,binding:Q,sx:a,sy:E}=t[n];this.packFrameData(s,n,B,C,Q,a,E)}A.draw({shader:"svga-instanced-premul",vertexBuffer:this.instancedQuadVB,indexBuffer:this.instancedQuadIB,indexCount:6,instanceCount:e,instanceData:s.subarray(0,e*MA),textures:[g],uniforms:{u_projection:I,u_atlas:0}})}drawClippedSprite(A,t,e,g){var I,s,n,B,C,Q;const{slot:a,frame:E,binding:r,sx:o,sy:h}=t,c=E.transform,u=((I=c==null?void 0:c.a)!=null?I:1)*o,d=((s=c==null?void 0:c.b)!=null?s:0)*h,f=((n=c==null?void 0:c.c)!=null?n:0)*o,w=((B=c==null?void 0:c.d)!=null?B:1)*h,p=((C=c==null?void 0:c.tx)!=null?C:0)*o+a.x,y=((Q=c==null?void 0:c.ty)!=null?Q:0)*h+a.y,m=e.vertices;(!this.clipTransformedVertsScratch||this.clipTransformedVertsScratch.length<m.length)&&(this.clipTransformedVertsScratch=new Float32Array(m.length));const N=this.clipTransformedVertsScratch;for(let V=0;V<m.length;V+=2){const yA=m[V],rA=m[V+1];N[V]=u*yA+f*rA+p,N[V+1]=d*yA+w*rA+y}const U=this.clipMaskDrawCursor++,S=this.ensureClipVertexBuffer(A,U,N.subarray(0,m.length)),J=this.ensureClipIndexBuffer(A,U,e.indices),R={shader:"clip-mask",vertexBuffer:S,indexBuffer:J,indexCount:e.indices.length,textures:[],uniforms:{u_projection:g},stencil:"write"};A.draw(R);const z=this.clipFrameDataScratch;this.packFrameData(z,0,a,E,r,o,h);const M=PA*fA,v=Fs;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<M)&&(this.clipSpriteVertsScratch=new Float32Array(M)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<v)&&(this.clipSpriteIndicesScratch=new Uint32Array(v));const b=this.clipSpriteVertsScratch,T=this.clipSpriteIndicesScratch;(!At()||kn(z,b,T)===null)&&Ps(z,b,T);const $=this.clipSpriteDrawCursor++,j=this.ensureClipSpriteVertexBuffer(A,$,b.subarray(0,M)),_A=this.ensureClipSpriteIndexBuffer(A,$,T.subarray(0,v)),hs={shader:"svga-batch-premul",vertexBuffer:j,indexBuffer:_A,indexCount:v,textures:[r.handle],uniforms:{u_projection:g,u_atlas:0},stencil:"test"};A.draw(hs);const Y={shader:"clip-mask",vertexBuffer:S,indexBuffer:J,indexCount:e.indices.length,textures:[],uniforms:{u_projection:g},stencil:"clear"};A.draw(Y)}drawSingleSprite(A,t,e){const g=this.clipFrameDataScratch;this.packFrameData(g,0,t.slot,t.frame,t.binding,t.sx,t.sy);const I=PA*fA,s=Fs;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<I)&&(this.clipSpriteVertsScratch=new Float32Array(I)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<s)&&(this.clipSpriteIndicesScratch=new Uint32Array(s));const n=this.clipSpriteVertsScratch,B=this.clipSpriteIndicesScratch;(!At()||kn(g,n,B)===null)&&Ps(g,n,B);const C=this.clipSpriteDrawCursor++,Q=this.ensureClipSpriteVertexBuffer(A,C,n.subarray(0,I)),a=this.ensureClipSpriteIndexBuffer(A,C,B.subarray(0,s));A.draw({shader:"svga-batch-premul",vertexBuffer:Q,indexBuffer:a,indexCount:s,textures:[t.binding.handle],uniforms:{u_projection:e,u_atlas:0}})}packFrameData(A,t,e,g,I,s,n){var B,C,Q,a,E,r,o,h,c,u,d,f;const w=g.layout,p=g.transform,y=I.rect,m=I.override;let N=(C=(B=w==null?void 0:w.width)!=null?B:m==null?void 0:m.logicalWidth)!=null?C:0,U=(a=(Q=w==null?void 0:w.height)!=null?Q:m==null?void 0:m.logicalHeight)!=null?a:0,S=0,J=0;if((m==null?void 0:m.mode)==="dynamic"){const j=(E=w==null?void 0:w.width)!=null?E:m.logicalWidth,_A=(r=w==null?void 0:w.height)!=null?r:m.logicalHeight;N=m.logicalWidth,U=m.logicalHeight,S=Math.max(0,(j-N)*.5),J=Math.max(0,(_A-U)*.5)}const R=t*MA,z=((o=p==null?void 0:p.a)!=null?o:1)*s,M=((h=p==null?void 0:p.b)!=null?h:0)*n,v=((c=p==null?void 0:p.c)!=null?c:0)*s,b=((u=p==null?void 0:p.d)!=null?u:1)*n;let T=((d=p==null?void 0:p.tx)!=null?d:0)*s+z*S+v*J+e.x,$=((f=p==null?void 0:p.ty)!=null?f:0)*n+M*S+b*J+e.y;A[R]=N,A[R+1]=U,A[R+2]=z,A[R+3]=M,A[R+4]=v,A[R+5]=b,A[R+6]=T,A[R+7]=$,A[R+8]=g.alpha,A[R+9]=y.x,A[R+10]=y.y,A[R+11]=y.x+y.w,A[R+12]=y.y+y.h}resolveSpriteTextureBinding(A,t){var e,g,I,s,n;const B=(g=(e=A.svgaSlotTextures)==null?void 0:e.get(t))!=null?g:null;if(B)return{handle:B.texture,rect:{x:0,y:0,w:1,h:1},override:B};const C=A.videoEntity,Q=C.atlasRects.get(t),a=(I=Q==null?void 0:Q.textureIndex)!=null?I:0,E=(n=(s=C.atlasTextureHandles)==null?void 0:s[a])!=null?n:C.atlasTextureHandle;return!Q||!E?null:{handle:E,rect:Q,override:null}}drawShapeFrame(A,t,e,g,I,s,n){var B,C,Q,a,E,r,o,h,c,u,d,f,w;const p=this.getShapeMesh((B=e.shapes)!=null?B:null);if(!p||p.indices.length===0)return;const y=this.getWhiteTexture(A),m=e.transform,N=((C=m==null?void 0:m.a)!=null?C:1)*g,U=((Q=m==null?void 0:m.b)!=null?Q:0)*I,S=((a=m==null?void 0:m.c)!=null?a:0)*g,J=((E=m==null?void 0:m.d)!=null?E:1)*I,R=((r=m==null?void 0:m.tx)!=null?r:0)*g+t.x,z=((o=m==null?void 0:m.ty)!=null?o:0)*I+t.y,M=p.vertices,v=M.length/6*fA;(!this.shapeVertsScratch||this.shapeVertsScratch.length<v)&&(this.shapeVertsScratch=new Float32Array(v));const b=this.shapeVertsScratch;for(let Y=0,V=0;Y<M.length;Y+=6,V+=fA){const yA=M[Y],rA=M[Y+1];b[V]=N*yA+S*rA+R,b[V+1]=U*yA+J*rA+z,b[V+2]=0,b[V+3]=M[Y+2],b[V+4]=M[Y+3],b[V+5]=M[Y+4],b[V+6]=M[Y+5]*e.alpha,b[V+7]=.5,b[V+8]=.5}let T=null,$=null;if(s&&s.indices.length>0){const Y=e.transform,V=((h=Y==null?void 0:Y.a)!=null?h:1)*g,yA=((c=Y==null?void 0:Y.b)!=null?c:0)*I,rA=((u=Y==null?void 0:Y.c)!=null?u:0)*g,yn=((d=Y==null?void 0:Y.d)!=null?d:1)*I,pn=((f=Y==null?void 0:Y.tx)!=null?f:0)*g+t.x,mn=((w=Y==null?void 0:Y.ty)!=null?w:0)*I+t.y,CA=s.vertices;(!this.clipTransformedVertsScratch||this.clipTransformedVertsScratch.length<CA.length)&&(this.clipTransformedVertsScratch=new Float32Array(CA.length));const oA=this.clipTransformedVertsScratch;for(let NA=0;NA<CA.length;NA+=2){const Ts=CA[NA],qs=CA[NA+1];oA[NA]=V*Ts+rA*qs+pn,oA[NA+1]=yA*Ts+yn*qs+mn}const vs=this.clipMaskDrawCursor++;T=this.ensureClipVertexBuffer(A,vs,oA.subarray(0,CA.length)),$=this.ensureClipIndexBuffer(A,vs,s.indices),A.draw({shader:"clip-mask",vertexBuffer:T,indexBuffer:$,indexCount:s.indices.length,textures:[],uniforms:{u_projection:n},stencil:"write"})}const j=this.clipSpriteDrawCursor++,_A=this.ensureClipSpriteVertexBuffer(A,j,b.subarray(0,v)),hs=this.ensureClipSpriteIndexBuffer(A,j,p.indices);A.draw({shader:"svga-batch-premul",vertexBuffer:_A,indexBuffer:hs,indexCount:p.indices.length,textures:[y],uniforms:{u_projection:n,u_atlas:0},stencil:T?"test":"none"}),T&&$&&s&&A.draw({shader:"clip-mask",vertexBuffer:T,indexBuffer:$,indexCount:s.indices.length,textures:[],uniforms:{u_projection:n},stencil:"clear"})}hasAtlasTexture(A){var t;const e=A.videoEntity;return e?!!e.atlasTextureHandle||!!((t=e.atlasTextureHandles)!=null&&t.length):!1}hasRenderableSVGA(A){if(this.hasAtlasTexture(A))return!0;const t=A.videoEntity;return t!=null&&t.sprites?t.sprites.some(e=>e.frames.some(g=>!!g.shapes&&g.shapes.length>0)):!1}getWhiteTexture(A){return this.whiteTexture?this.whiteTexture:(this.whiteTexture=A.createTexture(new Uint8Array([255,255,255,255]).buffer,{width:1,height:1,filter:"nearest"}),this.whiteTexture)}getShapeMesh(A){var t;if(!A||A.length===0)return null;if(this.shapeMeshCache.has(A))return(t=this.shapeMeshCache.get(A))!=null?t:null;const e=[],g=[];for(const s of A)this.appendShape(s,e,g);const I=e.length>0&&g.length>0?{vertices:new Float32Array(e),indices:new Uint32Array(g)}:null;return this.shapeMeshCache.set(A,I),I}appendShape(A,t,e){const g=A.style.fill,I=A.style.stroke,s=this.buildShapeSubPaths(A);for(const n of s){if(n.length<2)continue;const B=n.map(C=>({x:A.transform.a*C.x+A.transform.c*C.y+A.transform.tx,y:A.transform.b*C.x+A.transform.d*C.y+A.transform.ty}));g&&g.a>0&&B.length>=3&&this.appendFill(B,g,t,e),I&&I.a>0&&A.style.strokeWidth>.01&&this.appendStroke(B,I,A.style.strokeWidth,t,e)}}buildShapeSubPaths(A){var t;if(A.kind==="path")return bB((t=A.pathData)!=null?t:"").map(e=>this.cleanupPoints(e)).filter(e=>e.length>=2);if(A.kind==="rect"&&A.rect){const e=A.rect;return[[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height}]]}if(A.kind==="ellipse"&&A.ellipse){const e=A.ellipse,g=[],I=40;for(let s=0;s<I;s++){const n=s/I*Math.PI*2;g.push({x:e.x+Math.cos(n)*e.radiusX,y:e.y+Math.sin(n)*e.radiusY})}return[g]}return[]}appendFill(A,t,e,g){const I=this.cleanupPoints(A);if(I.length<3)return;const s=e.length/6;for(const B of I)e.push(B.x,B.y,this.clamp01(t.r),this.clamp01(t.g),this.clamp01(t.b),this.clamp01(t.a));const n=LB(I);if(n.length>=(I.length-2)*3)for(const B of n)g.push(s+B);else for(let B=1;B<I.length-1;B++)g.push(s,s+B,s+B+1)}appendStroke(A,t,e,g,I){A=this.cleanupPoints(A);const s=e*.5;for(let n=0;n<A.length;n++){const B=A[n],C=A[(n+1)%A.length],Q=C.x-B.x,a=C.y-B.y,E=Math.hypot(Q,a);if(E<=1e-4)continue;const r=-a/E*s,o=Q/E*s,h=g.length/6,c=this.clamp01(t.r),u=this.clamp01(t.g),d=this.clamp01(t.b),f=this.clamp01(t.a);g.push(B.x-r,B.y-o,c,u,d,f),g.push(B.x+r,B.y+o,c,u,d,f),g.push(C.x+r,C.y+o,c,u,d,f),g.push(C.x-r,C.y-o,c,u,d,f),I.push(h,h+1,h+2,h+2,h+3,h)}}clamp01(A){return Math.max(0,Math.min(1,Number.isFinite(A)?A:0))}cleanupPoints(A){if(A.length===0)return[];const t=[],e=1e-4;let g=null;for(const I of A){if(g){const s=I.x-g.x,n=I.y-g.y;if(s*s+n*n<=e)continue}t.push(I),g=I}if(t.length>2){const I=t[0],s=t[t.length-1],n=I.x-s.x,B=I.y-s.y;n*n+B*B<=e&&t.pop()}return t}getClipMesh(A){var t;if(this.clipMeshCache.has(A))return(t=this.clipMeshCache.get(A))!=null?t:null;const e=bB(A);if(e.length===0)return this.clipMeshCache.set(A,null),null;const g=[],I=[];for(const n of e){if(n.length<3)continue;const B=g.length/2;for(const Q of n)g.push(Q.x,Q.y);const C=LB(n);for(const Q of C)I.push(Q+B)}if(I.length===0)return this.clipMeshCache.set(A,null),null;const s={vertices:new Float32Array(g),indices:new Uint32Array(I)};return this.clipMeshCache.set(A,s),s}ensureVertexBuffer(A,t,e){const g=this.vertexBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"vertex");return this.vertexBufHandles[t]=I,I}}ensureIndexBuffer(A,t,e){const g=this.indexBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"index");return this.indexBufHandles[t]=I,I}}ensureClipVertexBuffer(A,t,e){const g=this.clipVertBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"vertex");return this.clipVertBufHandles[t]=I,I}}ensureClipIndexBuffer(A,t,e){const g=this.clipIdxBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"index");return this.clipIdxBufHandles[t]=I,I}}ensureClipSpriteVertexBuffer(A,t,e){const g=this.clipSpriteVertBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"vertex");return this.clipSpriteVertBufHandles[t]=I,I}}ensureClipSpriteIndexBuffer(A,t,e){const g=this.clipSpriteIdxBufHandles[t];if(g)return A.updateBuffer(g,e),g;{const I=A.createBuffer(e,"index");return this.clipSpriteIdxBufHandles[t]=I,I}}ensureInstancedQuadBuffers(A){this.instancedQuadVB||(this.instancedQuadVB=A.createBuffer(eB.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer(eB.INSTANCED_QUAD_INDICES,"index"))}destroy(A){for(const t of this.vertexBufHandles)A.deleteBuffer(t);for(const t of this.indexBufHandles)A.deleteBuffer(t);for(const t of this.clipVertBufHandles)A.deleteBuffer(t);for(const t of this.clipIdxBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteVertBufHandles)A.deleteBuffer(t);for(const t of this.clipSpriteIdxBufHandles)A.deleteBuffer(t);this.instancedQuadVB&&A.deleteBuffer(this.instancedQuadVB),this.instancedQuadIB&&A.deleteBuffer(this.instancedQuadIB),this.whiteTexture&&A.deleteTexture(this.whiteTexture),this.pool.destroy(),this.clipMeshCache.clear(),this.vertexBufHandles=[],this.indexBufHandles=[],this.clipVertBufHandles=[],this.clipIdxBufHandles=[],this.clipSpriteVertBufHandles=[],this.clipSpriteIdxBufHandles=[],this.instancedQuadVB=null,this.instancedQuadIB=null,this.whiteTexture=null,this.projCache=null}};L(hB,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));L(hB,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let yC=hB;var Ta=Object.defineProperty,qa=(i,A,t)=>A in i?Ta(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,hA=(i,A,t)=>qa(i,typeof A!="symbol"?A+"":A,t);const Va=4,za=128*1024*1024,Za=2048*1024*1024,Wa="gift-stage-resource-cache",ja=2,QA="resources",Yn="byUpdatedAt",Oa=3e4;class Xa{constructor(A){hA(this,"maxConcurrent"),hA(this,"active",0),hA(this,"queue",[]),this.maxConcurrent=Math.max(1,A)}setMaxConcurrent(A){this.maxConcurrent=Math.max(1,A),this.drain()}async run(A){this.active>=this.maxConcurrent&&await new Promise(t=>{this.queue.push(t)}),this.active++;try{return await A()}finally{this.active--,this.drain()}}drain(){for(;this.active<this.maxConcurrent&&this.queue.length>0;){const A=this.queue.shift();A==null||A()}}}function Pa(){return typeof indexedDB!="undefined"}function Ns(i){return i.length*2}function $a(i){let A=0;for(const t of Object.values(i.images))A+=t.byteLength;return A+=Ns(JSON.stringify({version:i.version,params:i.params,sprites:i.sprites,audios:i.audios})),A}function Ln(i){return typeof i=="string"?Ns(i):i.byteLength}class AE{constructor(){hA(this,"limiter",new Xa(Va)),hA(this,"pending",new Map),hA(this,"memory",new Map),hA(this,"memoryBytes",0),hA(this,"maxMemoryBytes",za),hA(this,"maxPersistentBytes",Za),hA(this,"dbPromise",null),hA(this,"persistentTrimPromise",null)}configure(A){(A==null?void 0:A.maxConcurrent)!=null&&this.limiter.setMaxConcurrent(A.maxConcurrent),(A==null?void 0:A.maxMemoryBytes)!=null&&A.maxMemoryBytes>0&&(this.maxMemoryBytes=A.maxMemoryBytes,this.trimMemory()),(A==null?void 0:A.maxPersistentBytes)!=null&&A.maxPersistentBytes>0&&(this.maxPersistentBytes=A.maxPersistentBytes,this.schedulePersistentTrim())}runLimited(A){return this.limiter.run(A)}async fetchArrayBuffer(A,t){const e=`ab:${A}`,g=this.getMemory(e,"arrayBuffer");if(g)return g.slice(0);const I=await this.getPersistent(e,"arrayBuffer");return I?(this.setMemory(e,"arrayBuffer",I,I.byteLength),I.slice(0)):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.arrayBuffer();return this.setMemory(e,"arrayBuffer",n,n.byteLength),this.setPersistent(e,"arrayBuffer",n.slice(0)),n.slice(0)}))}async fetchText(A,t){const e=`text:${A}`,g=this.getMemory(e,"text");if(g!=null)return g;const I=await this.getPersistent(e,"text");return I!=null?(this.setMemory(e,"text",I,Ns(I)),I):this.getOrCreatePending(e,()=>this.limiter.run(async()=>{const s=await fetch(A,{mode:"cors",signal:t});if(!s.ok)throw new Error(`fetch failed ${s.status}`);const n=await s.text();return this.setMemory(e,"text",n,Ns(n)),this.setPersistent(e,"text",n),n}))}async fetchJSON(A,t){const e=`json:${A}`,g=this.getMemory(e,"json");if(g!=null)return g;const I=await this.fetchText(A,t),s=JSON.parse(I);return this.setMemory(e,"json",s,Ns(I)),s}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,t){this.setMemory(A,"svga-payload",t,$a(t))}getMemoryValue(A,t){return this.getMemory(A,t)}setMemoryValue(A,t,e,g){this.setMemory(A,t,e,g)}getPersistedArrayBuffer(A){return this.getPersistent(A,"arrayBuffer")}setPersistedArrayBuffer(A,t){return this.setPersistent(A,"arrayBuffer",t)}deletePersistedValue(A){return this.deletePersistent(A)}getOrCreatePending(A,t){const e=this.pending.get(A);if(e)return e;const g=t().finally(()=>{this.pending.delete(A)});return this.pending.set(A,g),g}getMemory(A,t){const e=this.memory.get(A);return!e||e.kind!==t?null:(this.memory.delete(A),this.memory.set(A,e),e.value)}setMemory(A,t,e,g){const I=this.memory.get(A);I&&(this.memoryBytes-=I.size,this.memory.delete(A)),this.memory.set(A,{key:A,kind:t,size:Math.max(0,g),value:e}),this.memoryBytes+=Math.max(0,g),this.trimMemory()}trimMemory(){for(;this.memoryBytes>this.maxMemoryBytes&&this.memory.size>0;){const A=this.memory.keys().next().value;if(!A)break;const t=this.memory.get(A);if(!t)break;this.memoryBytes-=t.size,this.memory.delete(A)}}async openDb(){return Pa()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const t=indexedDB.open(Wa,ja);t.onupgradeneeded=()=>{const e=t.result;let g;e.objectStoreNames.contains(QA)?g=t.transaction.objectStore(QA):g=e.createObjectStore(QA,{keyPath:"key"}),g.indexNames.contains(Yn)||g.createIndex(Yn,"updatedAt",{unique:!1})},t.onsuccess=()=>A(t.result),t.onerror=()=>A(null),t.onblocked=()=>A(null)}catch(t){A(null)}})),this.dbPromise):null}async getPersistent(A,t){const e=await this.openDb();return e?new Promise(g=>{try{const I=e.transaction(QA,"readonly");I.onerror=()=>g(null),I.onabort=()=>g(null);const n=I.objectStore(QA).get(A);n.onsuccess=()=>{const B=n.result;if(!B||B.kind!==t){g(null);return}const C=B.sizeBytes||Ln(B.value);if(Date.now()-B.updatedAt>=Oa&&this.touchPersistent({...B,sizeBytes:C,updatedAt:Date.now()}),t==="arrayBuffer"){g(B.value.slice(0));return}g(B.value)},n.onerror=()=>g(null)}catch(I){g(null)}}):null}async setPersistent(A,t,e){const g=await this.openDb();if(!g)return;const I=Ln(e);await new Promise(s=>{try{const n=g.transaction(QA,"readwrite");n.onerror=()=>s(),n.onabort=()=>s();const C=n.objectStore(QA).put({key:A,kind:t,value:e,sizeBytes:I,updatedAt:Date.now()});C.onsuccess=()=>s(),C.onerror=()=>s()}catch(n){s()}}),this.schedulePersistentTrim()}async touchPersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const g=t.transaction(QA,"readwrite");g.onerror=()=>e(),g.onabort=()=>e();const s=g.objectStore(QA).put(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(g){e()}})}schedulePersistentTrim(){this.persistentTrimPromise||(this.persistentTrimPromise=this.trimPersistent().finally(()=>{this.persistentTrimPromise=null}))}async trimPersistent(){const A=await this.openDb();A&&await new Promise(t=>{try{const e=A.transaction(QA,"readwrite");e.oncomplete=()=>t(),e.onerror=()=>t(),e.onabort=()=>t();const g=e.objectStore(QA),I=g.index(Yn),s=[];let n=0;const B=I.openCursor();B.onsuccess=()=>{const C=B.result;if(C){const a=C.value,E=a.sizeBytes||Ln(a.value);n+=E,s.push({key:a.key,sizeBytes:E}),C.continue();return}if(n<=this.maxPersistentBytes)return;let Q=n;for(const a of s){if(Q<=this.maxPersistentBytes)break;g.delete(a.key),Q-=a.sizeBytes}},B.onerror=()=>t()}catch(e){t()}})}async deletePersistent(A){const t=await this.openDb();t&&await new Promise(e=>{try{const g=t.transaction(QA,"readwrite");g.onerror=()=>e(),g.onabort=()=>e();const s=g.objectStore(QA).delete(A);s.onsuccess=()=>e(),s.onerror=()=>e()}catch(g){e()}})}}const lA=new AE;function tE(i){lA.configure(i)}function iB(i){return lA.runLimited(i)}function Ls(i,A){return lA.fetchArrayBuffer(i,A)}function eE(i,A){return lA.fetchJSON(i,A)}function cB(i){return lA.getSVGAWorkerPayload(i)}function _B(i,A){lA.setSVGAWorkerPayload(i,A)}function iE(i,A){return lA.getMemoryValue(i,A)}function pC(i,A,t,e){lA.setMemoryValue(i,A,t,e)}function gE(i){return lA.getPersistedArrayBuffer(i)}function IE(i,A){return lA.setPersistedArrayBuffer(i,A)}function sE(i){return lA.deletePersistedValue(i)}async function gB(i){const A=typeof i=="string"?await eE(i):i;if(!A.info)throw new Error("VAP config missing info");if(!A.info.rgbFrame||!A.info.aFrame)throw new Error("VAP config missing rgbFrame or aFrame");return A}function et(i){const[,,A,t]=i.rgbFrame,e=i.w>0?i.w:A,g=i.h>0?i.h:t;return e>0&&g>0?{w:e,h:g}:{w:i.videoW,h:i.videoH}}function Ws(i,A,t){const[e,g,I,s]=i;return{left:e/A,right:(e+I)/A,top:(t-g)/t,bottom:(t-g-s)/t}}var nE=Object.defineProperty,BE=(i,A,t)=>A in i?nE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,aA=(i,A,t)=>BE(i,typeof A!="symbol"?A+"":A,t);class mC{constructor(){aA(this,"frameInfo",new Map),aA(this,"pending",new Set),aA(this,"lastHandle",new Map),aA(this,"started",new Set),aA(this,"firstUploaded",new Set),aA(this,"forceTimeFallback",new Set),aA(this,"lastArmAt",new Map),aA(this,"lastCallbackAt",new Map),aA(this,"lastProgressAt",new Map),aA(this,"lastRecoveryAt",new Map),aA(this,"stallLogged",new Set),aA(this,"stagnationLogged",new Set),aA(this,"lastTimeFallback",new Map)}preUpload(A,t){const e=t.currentTime;if(typeof t.requestVideoFrameCallback!="function"||this.forceTimeFallback.has(A)){if(!this.firstUploaded.has(A))return this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),typeof t.requestVideoFrameCallback=="function"&&this.debugInfo(A,"initial upload using time fallback",t),!0;const Q=this.consumeTimeAdvance(A,e);if(Q)this.stagnationLogged.has(A)&&(this.stagnationLogged.delete(A),this.debugInfo(A,"time fallback progress resumed",t));else if(this.forceTimeFallback.has(A)&&!this.stagnationLogged.has(A)&&!t.paused&&!t.ended){const a=this.lastProgressAt.get(A);a!==void 0&&performance.now()-a>1e3&&(this.stagnationLogged.add(A),this.debugWarn(A,"time fallback has no progress",t,{lastProgressAgeMs:Math.round(performance.now()-a)}))}return Q}this.ensureRvf(A,t);const g=performance.now(),I=this.lastCallbackAt.get(A),s=this.lastArmAt.get(A),n=I!=null?I:s,B=this.lastTimeFallback.get(A),C=B!==void 0&&Math.abs(e-B)>1e-4;return this.firstUploaded.has(A)&&n!==void 0&&g-n>500&&!t.paused&&!t.ended&&(this.stallLogged.has(A)||(this.stallLogged.add(A),this.debugWarn(A,"rVFC stalled for slot",t,{stallAgeMs:Math.round(g-n),lastCallbackAgeMs:I!==void 0?Math.round(g-I):null,lastArmAgeMs:s!==void 0?Math.round(g-s):null,timeAdvanced:C})),this.tryRecoverStalledPlayback(A,t,e,g),this.started.delete(A),this.ensureRvf(A,t),C)?(this.forceTimeFallback.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),this.debugWarn(A,"switching slot to time fallback",t,{stallAgeMs:Math.round(g-n)}),!0):this.firstUploaded.has(A)?this.pending.has(A)?(this.pending.delete(A),this.lastTimeFallback.set(A,e),this.markProgress(A),(this.stallLogged.delete(A)||this.forceTimeFallback.delete(A))&&(this.stagnationLogged.delete(A),this.debugInfo(A,"rVFC progress resumed",t)),!0):!1:(this.firstUploaded.add(A),this.lastTimeFallback.set(A,e),this.markProgress(A),!0)}getFrameInfo(A){return this.frameInfo.get(A)}ensureRvf(A,t){if(this.started.has(A))return;this.started.add(A);const e=(g,I)=>{this.frameInfo.set(A,I),this.lastCallbackAt.set(A,performance.now()),this.pending.add(A);try{this.lastArmAt.set(A,performance.now());const s=t.requestVideoFrameCallback(e);this.lastHandle.set(A,s)}catch(s){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback re-arm failed",t)}};try{this.lastArmAt.set(A,performance.now());const g=t.requestVideoFrameCallback(e);this.lastHandle.set(A,g)}catch(g){this.started.delete(A),this.lastHandle.delete(A),this.debugWarn(A,"requestVideoFrameCallback initial arm failed",t)}}consumeTimeAdvance(A,t){const e=this.lastTimeFallback.get(A);return e===void 0||Math.abs(t-e)>1e-4?(this.lastTimeFallback.set(A,t),this.markProgress(A),!0):!1}markProgress(A){this.lastProgressAt.set(A,performance.now())}tryRecoverStalledPlayback(A,t,e,g){if(t.paused||t.ended||t.seeking)return;const I=this.lastRecoveryAt.get(A);if(I!==void 0&&g-I<1500)return;this.lastRecoveryAt.set(A,g);const s=Number.isFinite(t.duration)?t.duration:NaN,n=Number.isFinite(s)&&s>0,B=n?Math.min(Math.max(0,s-.001),e+.001):e;try{n&&B>e&&(t.currentTime=B)}catch(C){}try{const C=t.play();C&&typeof C.catch=="function"&&C.catch(()=>{})}catch(C){}this.debugWarn(A,"attempting stalled video recovery",t,{currentTime:e,nudgedTime:B,readyState:t.readyState})}debugInfo(A,t,e,g){console.info("[GiftStage:VideoGate]",t,this.snapshot(A,e,g))}debugWarn(A,t,e,g){console.warn("[GiftStage:VideoGate]",t,this.snapshot(A,e,g))}snapshot(A,t,e){return{slotId:A,currentTime:Number(t.currentTime.toFixed(3)),readyState:t.readyState,networkState:t.networkState,paused:t.paused,ended:t.ended,seeking:t.seeking,playbackRate:t.playbackRate,forceTimeFallback:this.forceTimeFallback.has(A),pending:this.pending.has(A),...e}}release(A,t){if(!t){this.cleanup(A);return}const e=this.lastHandle.get(A);if(e!=null)try{t.cancelVideoFrameCallback(e)}catch(g){}this.cleanup(A)}cleanup(A){this.frameInfo.delete(A),this.lastHandle.delete(A),this.started.delete(A),this.pending.delete(A),this.firstUploaded.delete(A),this.forceTimeFallback.delete(A),this.lastArmAt.delete(A),this.lastCallbackAt.delete(A),this.lastProgressAt.delete(A),this.lastRecoveryAt.delete(A),this.stallLogged.delete(A),this.stagnationLogged.delete(A),this.lastTimeFallback.delete(A)}}function hn(i,A,t,e){const g=e!=null?e:new Float32Array(4);return!t||i<=0||A<=0?(g[0]=0,g[1]=0,g[2]=1,g[3]=1,g):(g[0]=t.x/i,g[1]=t.y/A,g[2]=t.w/i,g[3]=t.h/A,g)}const CE=3;function QE(){return typeof document!="undefined"&&typeof document.createElement=="function"}function Rs(i,A){if(!QE())throw new Error("Canvas rendering is unavailable in this environment");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(i)),t.height=Math.max(1,Math.round(A)),t}function Us(i,A){const t=i.getContext("2d",A);if(!t)throw new Error("Failed to acquire 2D canvas context");return t}function GC(i){return!!i&&typeof i=="object"&&typeof i.text=="string"}function aE(i){return!!i&&typeof i=="object"&&"image"in i}function FC(i){return!!i&&typeof i=="object"&&"image"in i}function JB(i){return!i||typeof i!="object"?!1:typeof HTMLCanvasElement!="undefined"&&i instanceof HTMLCanvasElement||typeof HTMLImageElement!="undefined"&&i instanceof HTMLImageElement||typeof ImageBitmap!="undefined"&&i instanceof ImageBitmap||typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas||typeof HTMLVideoElement!="undefined"&&i instanceof HTMLVideoElement||typeof VideoFrame!="undefined"&&i instanceof VideoFrame||typeof ImageData!="undefined"&&i instanceof ImageData}function cn(i){return new Promise((A,t)=>{const e=new Image;e.crossOrigin="anonymous",e.onload=()=>A(e),e.onerror=()=>t(new Error(`Failed to load image: ${i}`)),e.src=i})}function it(i){if(typeof HTMLImageElement!="undefined"&&i instanceof HTMLImageElement)return{width:i.naturalWidth||i.width,height:i.naturalHeight||i.height};if(typeof HTMLCanvasElement!="undefined"&&i instanceof HTMLCanvasElement)return{width:i.width,height:i.height};if(typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas)return{width:i.width,height:i.height};if(typeof ImageBitmap!="undefined"&&i instanceof ImageBitmap)return{width:i.width,height:i.height};if(i&&typeof i=="object"&&"videoWidth"in i&&typeof i.videoWidth=="number")return{width:i.videoWidth,height:i.videoHeight};if(i&&typeof i=="object"&&"displayWidth"in i&&typeof i.displayWidth=="number")return{width:i.displayWidth||i.codedWidth,height:i.displayHeight||i.codedHeight};const A=i;return typeof A.width=="number"&&typeof A.height=="number"?{width:A.width,height:A.height}:{width:0,height:0}}function IB(i){if(typeof ImageData!="undefined"&&i instanceof ImageData){const A=Rs(i.width,i.height);return Us(A).putImageData(i,0,0),A}return i}function EE(i){const A=/^\[(.+)\]$/.exec(i);return A?A[1]:i}function rE(i,A,t){var e,g;return i?typeof i=="string"?{font:i,color:t}:{font:(e=i.font)!=null?e:A,color:(g=i.color)!=null?g:t}:{font:A,color:t}}function SC(i,A,t,e){var g;const I=Math.max(1,e.scale||1),s=Math.max(1,Math.round(i)),n=Math.max(1,Math.round(A)),B=Rs(s*I,n*I),C=Us(B),Q=(g=e.color)!=null?g:"#ffffff",a=Math.max(1,t.length),E=Math.max(12,Math.min(s/a,n-8)),r=`${e.style==="b"?"bold ":""}${E*I}px Arial`,o=rE(e.fontStyle,r,Q);return C.clearRect(0,0,B.width,B.height),C.textAlign="center",C.textBaseline="middle",C.font=o.font,C.fillStyle=o.color,C.fillText(t,B.width/2,B.height/2),{canvas:B,logicalWidth:s,logicalHeight:n}}function oE(i,A){var t,e,g,I;const s=i.sprites.find(Q=>Q.imageKey===A);if(!s)return{width:1,height:1};let n=0,B=0;for(const Q of s.frames)n=Math.max(n,(e=(t=Q.layout)==null?void 0:t.width)!=null?e:0),B=Math.max(B,(I=(g=Q.layout)==null?void 0:g.height)!=null?I:0);if(n>0&&B>0)return{width:n,height:B};const C=i.atlasRects.get(A);return C?{width:C.w,height:C.h}:{width:1,height:1}}async function hE(i,A,t){var e,g,I;if(GC(i)){const n=SC(A,t,i.text,{scale:(e=i.scale)!=null?e:CE,color:i.color,style:i.style,fontStyle:i.fontStyle});return{source:n.canvas,mode:(g=i.mode)!=null?g:"dynamic",logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight}}if(aE(i)){const n=typeof i.image=="string"?await cn(i.image):i.image,B=it(n);return{source:n,mode:(I=i.mode)!=null?I:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}if(typeof i=="string"){const n=await cn(i),B=it(n);return{source:n,mode:"replace",logicalWidth:Math.max(1,B.width||A),logicalHeight:Math.max(1,B.height||t)}}const s=it(i);return{source:i,mode:"replace",logicalWidth:Math.max(1,s.width||A),logicalHeight:Math.max(1,s.height||t)}}async function cE(i,A,t){const e=new Map;if(!t)return e;for(const[g,I]of Object.entries(t)){const s=oE(A,g),n=await hE(I,s.width,s.height),B=it(n.source),C=B.width||s.width,Q=B.height||s.height,a=i.createTexture(n.source,{width:C,height:Q,filter:"linear",premultiplyAlpha:!0});e.set(g,{texture:a,mode:n.mode,logicalWidth:n.logicalWidth,logicalHeight:n.logicalHeight})}return e}function lE(i,A){var t,e;if(!A)return;const g=String(i.srcId),I=i.srcTag,s=EE(i.srcTag);return(e=(t=A[I])!=null?t:A[s])!=null?e:A[g]}function dE(i,A){var t,e,g,I;const s=typeof A=="string"?A:A.text,n=i.w&&i.w>0?i.w:1,B=i.h&&i.h>0?i.h:1,C=SC(n,B,s,{scale:typeof A=="string"?1:(t=A.scale)!=null?t:1,color:typeof A=="string"?i.color:(e=A.color)!=null?e:i.color,style:typeof A=="string"?i.style:(g=A.style)!=null?g:i.style,fontStyle:typeof A=="string"?i.fontStyle:(I=A.fontStyle)!=null?I:i.fontStyle});return{source:C.canvas,width:C.canvas.width,height:C.canvas.height}}async function fE(i){return typeof i=="string"?cn(i):FC(i)?typeof i.image=="string"?cn(i.image):IB(i.image):IB(i)}async function uE(i,A){const t=new Map;if(!i.src||i.src.length===0||!A)return t;for(const e of i.src){const g=lE(e,A);if(g==null)continue;if(e.srcType==="txt"){if(JB(g)){const C=IB(g),Q=it(C);t.set(String(e.srcId),{source:C,width:Math.max(1,Q.width),height:Math.max(1,Q.height)});continue}const B=dE(e,typeof g=="string"||GC(g)?g:String(g));t.set(String(e.srcId),B);continue}const I=JB(g)||typeof g=="string"||FC(g)?g:null;if(!I)continue;const s=await fE(I),n=it(s);t.set(String(e.srcId),{source:s,width:Math.max(1,n.width),height:Math.max(1,n.height)})}return t}function wE(i){var A;const t=new Map;for(const e of(A=i.frame)!=null?A:[]){const g=[...e.obj].sort((I,s)=>{var n,B;return((n=I.z)!=null?n:0)-((B=s.z)!=null?B:0)});t.set(e.i,g)}return t}function DE(i,A){const t=Rs(i,A),e=Rs(i,A),g=Rs(1,1);return{compositeCanvas:t,compositeCtx:Us(t),rawCanvas:e,rawCtx:Us(e),scratchCanvas:g,scratchCtx:Us(g)}}function HB(i,A,t,e){var g;if(!i.compositeCanvas||!i.compositeCtx||!i.rawCanvas||!i.rawCtx||!i.scratchCanvas||!i.scratchCtx)throw new Error("VAP CPU compositor state is incomplete");const{info:I}=A,s=I.videoW||i.width,n=I.videoH||i.height,[B,C,Q,a]=I.rgbFrame,[E,r,o,h]=I.aFrame;(i.rawCanvas.width!==s||i.rawCanvas.height!==n)&&(i.rawCanvas.width=s,i.rawCanvas.height=n),i.rawCtx.clearRect(0,0,s,n),i.rawCtx.drawImage(t,0,0,s,n);const c=i.rawCtx.getImageData(0,0,s,n).data,u=i.compositeCtx.createImageData(i.width,i.height),d=u.data;for(let w=0;w<i.height;w++){const p=Math.min(n-1,Math.max(0,C+Math.floor(w/i.height*a))),y=Math.min(n-1,Math.max(0,r+Math.floor(w/i.height*h)));for(let m=0;m<i.width;m++){const N=Math.min(s-1,Math.max(0,B+Math.floor(m/i.width*Q))),U=Math.min(s-1,Math.max(0,E+Math.floor(m/i.width*o))),S=(p*s+N)*4,J=(y*s+U)*4,R=c[J]/255,z=(w*i.width+m)*4;d[z]=Math.round(c[S]*R),d[z+1]=Math.round(c[S+1]*R),d[z+2]=Math.round(c[S+2]*R),d[z+3]=Math.round(R*255)}}const f=(g=i.frameMap.get(e))!=null?g:[];for(const w of f){const p=i.resources.get(String(w.srcId));if(!p)continue;const[y,m,N,U]=w.frame,[S,J,R,z]=w.mFrame;if(N<=0||U<=0||R<=0||z<=0)continue;(i.scratchCanvas.width!==N||i.scratchCanvas.height!==U)&&(i.scratchCanvas.width=Math.max(1,Math.round(N)),i.scratchCanvas.height=Math.max(1,Math.round(U))),i.scratchCtx.clearRect(0,0,i.scratchCanvas.width,i.scratchCanvas.height),i.scratchCtx.drawImage(p.source,0,0,i.scratchCanvas.width,i.scratchCanvas.height);const M=i.scratchCtx.getImageData(0,0,i.scratchCanvas.width,i.scratchCanvas.height).data,v=Math.max(0,Math.floor(y)),b=Math.max(0,Math.floor(m)),T=Math.min(i.width,Math.ceil(y+N)),$=Math.min(i.height,Math.ceil(m+U));for(let j=b;j<$;j++){const _A=Math.min(i.scratchCanvas.height-1,Math.max(0,Math.floor((j-m)/U*i.scratchCanvas.height))),hs=Math.min(n-1,Math.max(0,J+Math.floor((j-m)/U*z)));for(let Y=v;Y<T;Y++){const V=Math.min(i.scratchCanvas.width-1,Math.max(0,Math.floor((Y-y)/N*i.scratchCanvas.width))),yA=Math.min(s-1,Math.max(0,S+Math.floor((Y-y)/N*R))),rA=(_A*i.scratchCanvas.width+V)*4,yn=(hs*s+yA)*4,pn=M[rA+3]/255,mn=c[yn]/255,CA=pn*mn;if(CA<=0)continue;const oA=(j*i.width+Y)*4,vs=M[rA]/255*CA,NA=M[rA+1]/255*CA,Ts=M[rA+2]/255*CA,qs=d[oA+3]/255,Vs=1-CA;d[oA]=Math.round((vs+d[oA]/255*Vs)*255),d[oA+1]=Math.round((NA+d[oA+1]/255*Vs)*255),d[oA+2]=Math.round((Ts+d[oA+2]/255*Vs)*255),d[oA+3]=Math.round((CA+qs*Vs)*255)}}}return i.compositeCtx.putImageData(u,0,0),i.compositeCanvas}var yE=Object.defineProperty,pE=(i,A,t)=>A in i?yE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,X=(i,A,t)=>pE(i,typeof A!="symbol"?A+"":A,t);const _n=1024,Jn=28,Ks=class ys{constructor(){X(this,"quadVB",null),X(this,"quadIB",null),X(this,"rgbaQuadVB",null),X(this,"rgbaQuadIB",null),X(this,"quadIndices",new Uint32Array([0,1,2,0,2,3])),X(this,"wcDbgFirstDraw",new Set),X(this,"wcDbgNullWarns",new Map),X(this,"htmlGate",new mC),X(this,"lastWcFrameRef",new Map),X(this,"scratchAtlasRemap",new Float32Array(4)),X(this,"instancePackScratch",new Float32Array(_n*Jn)),X(this,"scratchTransform",new Float32Array(16)),X(this,"projCacheW",0),X(this,"projCacheH",0),X(this,"projCache",null)}syncVideoTextures(A,t){var e,g;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="vap"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;if(n.vapMixState){I=this.syncMixedTexture(A,n)||I;continue}const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,Q=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] VAP first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!Q,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),Q){if(this.lastWcFrameRef.get(n.id)!==Q){const E=n.wcAtlasRect;E?A.updateTextureRegion(n.videoTextureHandle,Q,E.x,E.y,E.w,E.h):A.updateTexture(n.videoTextureHandle,Q),this.lastWcFrameRef.set(n.id,Q),I=!0}}else{const a=((g=this.wcDbgNullWarns.get(n.id))!=null?g:0)+1;this.wcDbgNullWarns.set(n.id,a),a<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:n.id,t:C,n:a})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){(A.type==="webgpu"||A.type==="webgl2")&&this.drawInstancedVapBatches(A,t);for(const e of t.values())if(e.type==="vap"&&!(e.state!=="playing"&&e.state!=="fly")&&!(!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle)){if(e.vapMixState){this.drawMixedGeometry(A,e);continue}(A.type==="webgpu"||A.type==="webgl2")&&uA(e)!=="cover"||this.drawGeometry(A,e)}}drawSlot(A,t){if(t.type==="vap"&&!(t.state!=="playing"&&t.state!=="fly")&&!(!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle)){if(t.vapMixState){this.drawMixedGeometry(A,t);return}this.drawGeometry(A,t)}}drawInstancedVapBatches(A,t){const e=[];for(const C of t.values())C.type!=="vap"||C.state!=="playing"&&C.state!=="fly"||C.vapMixState||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||uA(C)==="cover"||!C.vapConfig||e.push(C);if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(ys.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(ys.QUAD_INDICES,"index"));const g=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===g&&this.projCacheH===I?s=this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=TA(0,g,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const Q=C.videoTextureHandle.id;let a=n.get(Q);a||(a=[],n.set(Q,a)),a.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let Q=0;Q<C.length;Q+=_n){const a=Math.min(_n,C.length-Q);for(let r=0;r<a;r++)this.fillVapInstanceData(C[Q+r],B,r*Jn);const E=B.subarray(0,a*Jn);A.draw({shader:"vap-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:a,instanceData:E,textures:[C[Q].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillVapInstanceData(A,t,e){var g,I,s,n;const B=A.vapConfig,{info:C}=B,Q=C.videoW>0?C.videoW:(I=(g=A.webcodecsPlayback)==null?void 0:g.videoWidth)!=null?I:1,a=C.videoH>0?C.videoH:(n=(s=A.webcodecsPlayback)==null?void 0:s.videoHeight)!=null?n:1,E=this.scratchTransform,{w:r,h:o}=et(C),h=tt(A,r,o);E[0]=h.width,E[5]=h.height,E[10]=1,E[12]=A.x+h.offsetX,E[13]=A.y+h.offsetY,E[15]=1,t.set(E,e);const c=Ws(C.rgbFrame,Q,a),u=Ws(C.aFrame,Q,a),d=A.videoTextureHandle,f=hn(d.width,d.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(f,e+16);const w=e+20;t[w+0]=c.left,t[w+1]=c.right,t[w+2]=c.top,t[w+3]=c.bottom,t[w+4]=u.left,t[w+5]=u.right,t[w+6]=u.top,t[w+7]=u.bottom}syncMixedTexture(A,t){var e;const g=t.vapConfig,I=t.vapMixState;if(!g||!I||!t.videoTextureHandle)return!1;const s=this.getMixedFrameIndex(t,g),n=t.webcodecsPlayback;if(n){const C=(e=t.wcPlaybackTime)!=null?e:0,Q=n.getFrameForTime(C);if(!Q||I.lastSourceRef===Q&&I.lastFrameIndex===s)return!1;const a=I.composer?I.composer.render(Q,s):HB(I,g,Q,s);return A.updateTexture(t.videoTextureHandle,a),I.lastSourceRef=Q,I.lastFrameIndex=s,!0}if(!t.videoElement||!this.htmlGate.preUpload(t.id,t.videoElement)&&I.lastFrameIndex===s)return!1;const B=I.composer?I.composer.render(t.videoElement,s):HB(I,g,t.videoElement,s);return A.updateTexture(t.videoTextureHandle,B),I.lastSourceRef=t.videoElement,I.lastFrameIndex=s,!0}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}drawGeometry(A,t){var e,g,I,s;const n=A.canvas.width,B=A.canvas.height;let C;this.projCache&&this.projCacheW===n&&this.projCacheH===B?C=this.projCache:(this.projCacheW=n,this.projCacheH=B,this.projCache=TA(0,n,B,0,-1,1),C=this.projCache);const Q=t.vapConfig;if(!Q){console.warn("[GiftStage:WC] VAP vapConfig missing — draw skipped",{giftId:t.id});return}const{info:a}=Q,E=a.videoW>0?a.videoW:(g=(e=t.webcodecsPlayback)==null?void 0:e.videoWidth)!=null?g:1,r=a.videoH>0?a.videoH:(s=(I=t.webcodecsPlayback)==null?void 0:I.videoHeight)!=null?s:1,o=new Float32Array(16),h=uA(t),{w:c,h:u}=et(a),d=tt(t,c,u);o[0]=d.width,o[5]=d.height,o[10]=1,o[12]=t.x+d.offsetX,o[13]=t.y+d.offsetY,o[15]=1;const f=Ws(a.rgbFrame,E,r),w=Ws(a.aFrame,E,r),p=t.videoTextureHandle,y=hn(p.width,p.height,t.wcAtlasRect,this.scratchAtlasRemap),m=new Float32Array([0,0,f.left,f.top,w.left,w.top,1,0,f.right,f.top,w.right,w.top,1,1,f.right,f.bottom,w.right,w.bottom,0,1,f.left,f.bottom,w.left,w.bottom]);this.quadVB=this.ensureBuffer(A,this.quadVB,m,"vertex"),this.quadIB=this.ensureBuffer(A,this.quadIB,this.quadIndices,"index");const N={shader:"vap",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:C,u_transform:o,u_atlasRemap:y,u_video:0}};h==="cover"&&A.setScissor(t.x,t.y,t.width*t.scale,t.height*t.scale),A.draw(N),h==="cover"&&A.resetScissor()}drawMixedGeometry(A,t){var e;const g=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===g&&this.projCacheH===I?s=this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=TA(0,g,I,0,-1,1),s=this.projCache);const n=t.vapConfig;if(!n||!t.vapMixState||!t.videoTextureHandle)return;const B=this.scratchTransform,C=uA(t),{w:Q,h:a}=et(n.info),E=tt(t,Q,a);B[0]=E.width,B[5]=E.height,B[10]=1,B[12]=t.x+E.offsetX,B[13]=t.y+E.offsetY,B[15]=1;const r=(e=t.vapMixState)!=null&&e.composer||A.type==="webgpu"?ys.RGBA_QUAD_VERTS_WEBGPU:ys.RGBA_QUAD_VERTS_WEBGL;this.rgbaQuadVB=this.ensureBuffer(A,this.rgbaQuadVB,r,"vertex"),this.rgbaQuadIB=this.ensureBuffer(A,this.rgbaQuadIB,this.quadIndices,"index"),C==="cover"&&A.setScissor(t.x,t.y,t.width*t.scale,t.height*t.scale),A.draw({shader:"rgba-textured",vertexBuffer:this.rgbaQuadVB,indexBuffer:this.rgbaQuadIB,indexCount:6,textures:[t.videoTextureHandle],uniforms:{u_projection:s,u_transform:B,u_atlasRemap:new Float32Array([0,0,1,1]),u_video:0}}),C==="cover"&&A.resetScissor()}ensureBuffer(A,t,e,g){return t?(A.updateBuffer(t,e),t):A.createBuffer(e,g)}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.rgbaQuadVB&&A.deleteBuffer(this.rgbaQuadVB),this.rgbaQuadIB&&A.deleteBuffer(this.rgbaQuadIB),this.quadVB=null,this.quadIB=null,this.rgbaQuadVB=null,this.rgbaQuadIB=null,this.lastWcFrameRef.clear(),this.projCache=null,this.projCacheW=0,this.projCacheH=0}getMixedFrameIndex(A,t){var e,g,I;if(A.webcodecsPlayback)return Math.max(0,Math.round(((e=A.wcPlaybackTime)!=null?e:0)*t.info.fps));const s=this.htmlGate.getFrameInfo(A.id),n=s==null?void 0:s.mediaTime;return typeof n=="number"&&Number.isFinite(n)&&n>=0?Math.max(0,Math.round(n*t.info.fps)):Math.max(0,Math.round(((I=(g=A.videoElement)==null?void 0:g.currentTime)!=null?I:0)*t.info.fps))}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}};X(Ks,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));X(Ks,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));X(Ks,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));X(Ks,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let NC=Ks;var mE=Object.defineProperty,GE=(i,A,t)=>A in i?mE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,IA=(i,A,t)=>GE(i,typeof A!="symbol"?A+"":A,t);const Hn=1024,Kn=20,lB=class KA{constructor(){IA(this,"quadVB",null),IA(this,"quadIB",null),IA(this,"instancePackScratch",new Float32Array(Hn*Kn)),IA(this,"projCacheW",0),IA(this,"projCacheH",0),IA(this,"projCache",null),IA(this,"scratchTransform",new Float32Array(16)),IA(this,"wcDbgFirstDraw",new Set),IA(this,"wcDbgNullWarns",new Map),IA(this,"htmlGate",new mC),IA(this,"lastWcFrameRef",new Map),IA(this,"scratchAtlasRemap",new Float32Array(4))}static alphaVideoContentSize(A){if(A.webcodecsPlayback){const I=A.webcodecsPlayback.videoWidth,s=A.webcodecsPlayback.videoHeight;return{w:I>0?I*.5:0,h:s}}const t=A.videoElement,e=t.videoWidth,g=t.videoHeight;return{w:e>0?e*.5:0,h:g}}syncVideoTextures(A,t){var e,g;let I=!1;const s=new Set;for(const n of t.values()){if(n.type!=="alphaVideo"||n.state!=="playing"&&n.state!=="fly"||!n.videoTextureHandle)continue;const B=n.webcodecsPlayback;if(B){const C=(e=n.wcPlaybackTime)!=null?e:0,Q=B.getFrameForTime(C);if(this.wcDbgFirstDraw.has(n.id)||(this.wcDbgFirstDraw.add(n.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:n.id,state:n.state,t:C,hasFrame:!!Q,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),Q){if(this.lastWcFrameRef.get(n.id)!==Q){const E=n.wcAtlasRect;E?A.updateTextureRegion(n.videoTextureHandle,Q,E.x,E.y,E.w,E.h):A.updateTexture(n.videoTextureHandle,Q),this.lastWcFrameRef.set(n.id,Q),I=!0}}else{const a=((g=this.wcDbgNullWarns.get(n.id))!=null?g:0)+1;this.wcDbgNullWarns.set(n.id,a),a<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:n.id,t:C,n:a})}}else if(n.videoElement){const C=this.getHtmlVideoGateId(n);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,n.videoElement)&&(A.updateTexture(n.videoTextureHandle,n.videoElement),I=!0)}}return I}draw(A,t){if(A.type==="webgpu"||A.type==="webgl2"){this.drawInstancedAlphaBatches(A,t);for(const e of t.values())uA(e)==="cover"&&e.type==="alphaVideo"&&(e.state!=="playing"&&e.state!=="fly"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle||this.drawGeometry(A,e));return}for(const e of t.values())e.type==="alphaVideo"&&(e.state!=="playing"&&e.state!=="fly"||!e.videoElement&&!e.webcodecsPlayback||!e.videoTextureHandle||this.drawGeometry(A,e))}drawSlot(A,t){t.type==="alphaVideo"&&(t.state!=="playing"&&t.state!=="fly"||!t.videoElement&&!t.webcodecsPlayback||!t.videoTextureHandle||this.drawGeometry(A,t))}drawInstancedAlphaBatches(A,t){const e=[];for(const C of t.values())C.type==="alphaVideo"&&(C.state!=="playing"&&C.state!=="fly"||!C.videoElement&&!C.webcodecsPlayback||!C.videoTextureHandle||uA(C)!=="cover"&&e.push(C));if(e.length===0)return;this.quadVB||(this.quadVB=A.createBuffer(KA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(KA.QUAD_INDICES,"index"));const g=A.canvas.width,I=A.canvas.height;let s;this.projCache&&this.projCacheW===g&&this.projCacheH===I?s=this.projCache:(this.projCacheW=g,this.projCacheH=I,this.projCache=TA(0,g,I,0,-1,1),s=this.projCache);const n=new Map;for(const C of e){const Q=C.videoTextureHandle.id;let a=n.get(Q);a||(a=[],n.set(Q,a)),a.push(C)}const B=this.instancePackScratch;for(const C of n.values())for(let Q=0;Q<C.length;Q+=Hn){const a=Math.min(Hn,C.length-Q);for(let r=0;r<a;r++)this.fillAlphaInstanceData(C[Q+r],B,r*Kn);const E=B.subarray(0,a*Kn);A.draw({shader:"alpha-video-instanced",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,instanceCount:a,instanceData:E,textures:[C[Q].videoTextureHandle],uniforms:{u_projection:s,u_video:0}})}}fillAlphaInstanceData(A,t,e){const g=this.scratchTransform,{w:I,h:s}=KA.alphaVideoContentSize(A),n=tt(A,I,s);g[0]=n.width,g[5]=n.height,g[10]=1,g[12]=A.x+n.offsetX,g[13]=A.y+n.offsetY,g[15]=1,t.set(g,e);const B=A.videoTextureHandle,C=hn(B.width,B.height,A.wcAtlasRect,this.scratchAtlasRemap);t.set(C,e+16)}releaseHtmlVideo(A){var t;this.htmlGate.release(this.getHtmlVideoGateId(A),(t=A.videoElement)!=null?t:void 0)}clearWebCodecsFrameRef(A){this.lastWcFrameRef.delete(A)}getHtmlVideoGateId(A){return A.releaseSharedVideoTexture&&A.videoTextureHandle?`shared:${A.videoTextureHandle.id}`:A.id}drawGeometry(A,t){const e=A.canvas.width,g=A.canvas.height;let I;this.projCache&&this.projCacheW===e&&this.projCacheH===g?I=this.projCache:(this.projCacheW=e,this.projCacheH=g,this.projCache=TA(0,e,g,0,-1,1),I=this.projCache);const s=this.scratchTransform,n=uA(t),{w:B,h:C}=KA.alphaVideoContentSize(t),Q=tt(t,B,C);s[0]=Q.width,s[5]=Q.height,s[10]=1,s[12]=t.x+Q.offsetX,s[13]=t.y+Q.offsetY,s[15]=1,this.quadVB||(this.quadVB=A.createBuffer(KA.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(KA.QUAD_INDICES,"index"));const a=t.videoTextureHandle,E=hn(a.width,a.height,t.wcAtlasRect,this.scratchAtlasRemap),r={shader:"alpha-video",vertexBuffer:this.quadVB,indexBuffer:this.quadIB,indexCount:6,textures:[a],uniforms:{u_projection:I,u_transform:s,u_atlasRemap:E,u_video:0}};n==="cover"&&A.setScissor(t.x,t.y,t.width*t.scale,t.height*t.scale),A.draw(r),n==="cover"&&A.resetScissor()}destroy(A){this.quadVB&&A.deleteBuffer(this.quadVB),this.quadIB&&A.deleteBuffer(this.quadIB),this.quadVB=null,this.quadIB=null,this.projCache=null,this.projCacheW=0,this.projCacheH=0,this.lastWcFrameRef.clear()}};IA(lB,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));IA(lB,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let RC=lB;var FE=Object.defineProperty,SE=(i,A,t)=>A in i?FE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,NE=(i,A,t)=>SE(i,A+"",t);class UC{constructor(){NE(this,"animations",[])}startFly(A,t,e,g,I,s,n){this.animations=this.animations.filter(B=>B.giftId!==A.id),this.animations.push({giftId:A.id,startX:A.x,startY:A.y,startScale:A.scale,targetX:t,targetY:e,targetScale:g,startTime:-1,duration:I,easing:s,onComplete:n})}update(A){var t;for(let e=this.animations.length-1;e>=0;e--){const g=this.animations[e];g.startTime<0&&(g.startTime=A),tB((A-g.startTime)/g.duration,0,1)>=1&&((t=g.onComplete)==null||t.call(g),this.animations.splice(e,1))}}getAnimatedState(A,t){const e=this.animations.find(s=>s.giftId===A);if(!e)return null;e.startTime<0&&(e.startTime=t);const g=tB((t-e.startTime)/e.duration,0,1),I=e.easing(g);return{x:An(e.startX,e.targetX,I),y:An(e.startY,e.targetY,I),scale:An(e.startScale,e.targetScale,I)}}hasAnimation(A){return this.animations.some(t=>t.giftId===A)}hasActiveAnimations(){return this.animations.length>0}cancelForGift(A){this.animations=this.animations.filter(t=>t.giftId!==A)}destroy(){this.animations=[]}}var RE=Object.defineProperty,UE=(i,A,t)=>A in i?RE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,ls=(i,A,t)=>UE(i,typeof A!="symbol"?A+"":A,t);class kC{constructor(){ls(this,"ctx",null),ls(this,"decodedCache",new Map),ls(this,"activeSources",[]),ls(this,"globalMute",!1),ls(this,"gainNode",null)}ensureContext(){return this.ctx||(this.ctx=new AudioContext,this.gainNode=this.ctx.createGain(),this.gainNode.connect(this.ctx.destination),this.globalMute&&(this.gainNode.gain.value=0)),this.ctx.state==="suspended"&&this.ctx.resume().catch(()=>{}),this.ctx}async decodeAudio(A,t){if(this.decodedCache.has(A))return;const e=this.ensureContext();try{const g=await e.decodeAudioData(t.slice(0));this.decodedCache.set(A,g)}catch(g){}}tickFrame(A,t,e){if(A.videoEntity&&!A.options.mute){for(const g of A.videoEntity.audios)t===g.startFrame&&this.startAudio(A.id,g);for(let g=this.activeSources.length-1;g>=0;g--){const I=this.activeSources[g];if(I.giftId===A.id&&t>=I.endFrame){try{I.source.stop()}catch(s){}I.source.disconnect(),this.activeSources.splice(g,1)}}}}startAudio(A,t){var e;const g=this.decodedCache.get(t.audioKey);if(!g)return;const I=this.ensureContext(),s=I.createBufferSource();s.buffer=g,s.connect((e=this.gainNode)!=null?e:I.destination),s.start(0,t.startTime/1e3),s.onended=()=>{s.disconnect();const n=this.activeSources.findIndex(B=>B.source===s&&B.giftId===A);n>=0&&this.activeSources.splice(n,1)},this.activeSources.push({source:s,endFrame:t.endFrame,giftId:A})}stopAllForGift(A){for(let t=this.activeSources.length-1;t>=0;t--)if(this.activeSources[t].giftId===A){try{this.activeSources[t].source.stop()}catch(e){}this.activeSources[t].source.disconnect(),this.activeSources.splice(t,1)}}setMute(A){this.globalMute=A,this.gainNode&&(this.gainNode.gain.value=A?0:1)}destroy(){var A;for(const t of this.activeSources){try{t.source.stop()}catch(e){}t.source.disconnect()}this.activeSources=[],this.decodedCache.clear(),(A=this.ctx)==null||A.close().catch(()=>{}),this.ctx=null,this.gainNode=null}}function kE(i){return i}function ME(i){return i*i}function xE(i){return i*(2-i)}function bE(i){return i<.5?2*i*i:-1+(4-2*i)*i}function _s(i){const A=i-1;return A*A*A+1}function YE(i){return i<.5?4*i*i*i:(i-1)*(2*i-2)*(2*i-2)+1}function LE(i){return 1+2.70158*Math.pow(i-1,3)+1.70158*Math.pow(i-1,2)}var _E=Object.defineProperty,JE=(i,A,t)=>A in i?_E(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,WA=(i,A,t)=>JE(i,typeof A!="symbol"?A+"":A,t);class HE{constructor(A,t){WA(this,"atlasW"),WA(this,"atlasH"),WA(this,"rowY",0),WA(this,"rowH",0),WA(this,"rowX",0),WA(this,"slots",new Map),this.atlasW=Math.max(64,Math.floor(A)),this.atlasH=Math.max(64,Math.floor(t))}get size(){return{w:this.atlasW,h:this.atlasH}}tryAllocate(A,t,e){const g=Math.max(1,Math.ceil(t)),I=Math.max(1,Math.ceil(e));if(g>this.atlasW||I>this.atlasH||(this.rowX+g>this.atlasW&&(this.rowY+=this.rowH,this.rowX=0,this.rowH=0),this.rowY+I>this.atlasH))return null;const s={x:this.rowX,y:this.rowY,w:g,h:I};return this.slots.set(A,s),this.rowX+=g,this.rowH=Math.max(this.rowH,I),s}release(A){this.slots.delete(A)}getRect(A){return this.slots.get(A)}}function KE(i){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(i.trim());if(!A)return null;const t=Number(A[1]);return Number.isFinite(t)?t:null}function KB(i,A,t){if(typeof i=="number")return i;const e=KE(i);if(e==null)throw new Error(`Invalid percentage coordinate: ${i}`);return A*e/100-t/2}function MC(i,A,t,e,g,I){return{x:KB(i,g,t),y:KB(A,I,e)}}var vE=Object.defineProperty,TE=(i,A,t)=>A in i?vE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,gA=(i,A,t)=>TE(i,typeof A!="symbol"?A+"":A,t);class xC{constructor(A){gA(this,"backend"),gA(this,"svgaBatch"),gA(this,"vapRenderer"),gA(this,"alphaVideoRenderer"),gA(this,"postAnimator"),gA(this,"audioManager"),gA(this,"slots"),gA(this,"handles"),gA(this,"rafId",null),gA(this,"lastTime",0),gA(this,"running",!1),gA(this,"forceNextDraw",!0),gA(this,"wcAtlas",null),gA(this,"wcDbgTickOnce",new Set),this.backend=A,this.svgaBatch=new yC,this.vapRenderer=new NC,this.alphaVideoRenderer=new RC,this.postAnimator=new UC,this.audioManager=new kC,this.slots=new Map,this.handles=new Map}addSlot(A,t){this.slots.set(A.id,A),this.handles.set(A.id,t),this.forceNextDraw=!0,this.running||this.start()}removeSlot(A){var t,e,g,I,s,n;const B=this.slots.get(A);if(B){if(B.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(B),this.vapRenderer.clearWebCodecsFrameRef(B.id),(e=(t=B.vapMixState)==null?void 0:t.composer)==null||e.destroy()),B.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(B),this.alphaVideoRenderer.clearWebCodecsFrameRef(B.id)),this.audioManager.stopAllForGift(A),this.postAnimator.cancelForGift(A),B.videoEntity&&!B.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(B.videoEntity),B.svgaSlotTextures){for(const C of B.svgaSlotTextures.values())this.backend.deleteTexture(C.texture);B.svgaSlotTextures.clear()}B.wcAtlasRect?this.releaseWebCodecsAtlasSlot(B.id):B.videoTextureHandle&&!B.releaseSharedVideoTexture&&this.backend.deleteTexture(B.videoTextureHandle),B.webcodecsPlayback&&(B.webcodecsPlayback.destroy(),B.webcodecsPlayback=null),B.videoElement&&!B.releaseSharedVideoPlayback&&(B.videoElement.pause(),B.videoElement.removeAttribute("src"),B.videoElement.load(),B.videoElement.remove()),(g=B.releaseSharedVideoPlayback)==null||g.call(B),B.releaseSharedVideoPlayback=null,(I=B.releaseSharedSVGAAsset)==null||I.call(B),B.releaseSharedSVGAAsset=null,(s=B.releaseSharedVideoTexture)==null||s.call(B),B.releaseSharedVideoTexture=null,(n=B.releaseMediaSource)==null||n.call(B),B.releaseMediaSource=null}this.slots.delete(A),this.handles.delete(A),this.forceNextDraw=!0,this.slots.size===0&&this.stop()}getSlot(A){return this.slots.get(A)}get activeCount(){return this.slots.size}getSlotIds(){return Array.from(this.slots.keys())}tryAllocateWebCodecsAtlas(A,t,e,g){if(!g||g.width<=0||g.height<=0)return null;if(this.wcAtlas&&(this.wcAtlas.cfg.width!==g.width||this.wcAtlas.cfg.height!==g.height)){if(this.wcAtlas.ref>0)return null;this.backend.deleteTexture(this.wcAtlas.handle),this.wcAtlas=null}this.wcAtlas||(this.wcAtlas={cfg:{width:g.width,height:g.height},handle:this.backend.createEmptyTexture(g.width,g.height,{filter:"linear"}),alloc:new HE(g.width,g.height),ref:0});const I=this.wcAtlas.alloc.tryAllocate(A,t,e);return I?(this.wcAtlas.ref++,{handle:this.wcAtlas.handle,rect:I}):null}releaseWebCodecsAtlasSlot(A){const t=this.wcAtlas;t&&(t.alloc.release(A),t.ref=Math.max(0,t.ref-1),t.ref<=0&&(this.backend.deleteTexture(t.handle),this.wcAtlas=null))}syncSlotLayoutFromOptions(){const{sx:A,sy:t}=Gs(this.backend.canvas);this.forceNextDraw=!0;for(const e of this.slots.values()){if(this.postAnimator.hasAnimation(e.id))continue;const g=e.options,I=MC(g.x,g.y,g.width,g.height,this.backend.canvas.clientWidth,this.backend.canvas.clientHeight);e.x=I.x*A,e.y=I.y*t,e.width=g.width*A,e.height=g.height*t}}start(){this.running||(this.running=!0,this.lastTime=performance.now(),this.rafId=requestAnimationFrame(A=>this.renderLoop(A)))}stop(){this.running=!1,this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}pause(){this.stop()}resume(){this.slots.size>0&&!this.running&&this.start()}renderLoop(A){var t,e;if(!this.running)return;const g=(A-this.lastTime)/1e3;this.lastTime=A;let I=this.forceNextDraw;for(const[s,n]of this.slots){if(n.paused||n.state==="loading")continue;const B=this.handles.get(s),C=this.postAnimator.getAnimatedState(s,A);if(C&&(n.x=C.x,n.y=C.y,n.scale=C.scale,I=!0),n.type==="svga"&&n.videoEntity&&n.state==="playing"&&(I=this.tickSVGA(n,g,B,A)||I),(n.type==="vap"||n.type==="alphaVideo")&&n.webcodecsPlayback&&n.state==="playing"){this.tickWebCodecs(n,g,B);const Q=n.webcodecsPlayback;(e=Q.ensureDecodedThrough)==null||e.call(Q,(t=n.wcPlaybackTime)!=null?t:0)}}if(I=this.postAnimator.hasActiveAnimations()||I,this.postAnimator.update(A),I=this.removeFinished()||I,I=this.vapRenderer.syncVideoTextures(this.backend,this.slots)||I,I=this.alphaVideoRenderer.syncVideoTextures(this.backend,this.slots)||I,I){this.forceNextDraw=!1,this.backend.beginFrame(),this.svgaBatch.beginFrame(this.backend);for(const s of this.getRenderLayers())this.drawLayer(s);this.backend.endFrame()}this.rafId=requestAnimationFrame(s=>this.renderLoop(s))}tickWebCodecs(A,t,e){var g,I;const s=A.webcodecsPlayback;if(!s)return;const n=Math.max(s.duration,1e-9);if(!Number.isFinite(n))return;const B=(g=A.options.loop)!=null?g:1;let C=((I=A.wcPlaybackTime)!=null?I:0)+t;if(B===0){A.wcPlaybackTime=(C%n+n)%n,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B);return}for(;C>=n;)if(C-=n,A.loopCount++,A.loopCount>=B){A.wcPlaybackTime=n-1e-6,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B),this.onWebCodecsPlaybackComplete(A,e);return}A.wcPlaybackTime=C,this.wcDbgLogTickOnce(A,n,A.wcPlaybackTime,B)}wcDbgLogTickOnce(A,t,e,g){var I;this.wcDbgTickOnce.has(A.id)||(this.wcDbgTickOnce.add(A.id),console.info("[GiftStage:WC] clock tick",{giftId:A.id,type:A.type,state:A.state,paused:A.paused,duration:t,wcPlaybackTime:e,loop:(I=A.options.loop)!=null?I:1,maxLoopsEffective:g,backend:this.backend.type,canvasCss:`${this.backend.canvas.clientWidth}x${this.backend.canvas.clientHeight}`,canvasBuf:`${this.backend.canvas.width}x${this.backend.canvas.height}`}))}onWebCodecsPlaybackComplete(A,t){var e,g,I,s;if((e=A.onComplete)==null||e.call(A,t),A.flyTo){A.state="fly";const{sx:n,sy:B}=Gs(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*n,A.flyTo.y*B,(g=A.scaleTo)!=null?g:.3,(I=A.flyDuration)!=null?I:600,(s=A.easing)!=null?s:_s,()=>{var C;A.state="finished",(C=A.onFlyComplete)==null||C.call(A,t)})}else A.state="finished"}tickSVGA(A,t,e,g){var I;const s=A.videoEntity,n=s.params.fps;if(n<=0)return!1;const B=1/n,C=A.currentFrame;for(A.accumulatedTime+=t;A.accumulatedTime>=B;)if(A.accumulatedTime-=B,A.currentFrame++,A.currentFrame>=s.params.frames){A.loopCount++;const Q=(I=A.options.loop)!=null?I:1;if(Q===0)A.currentFrame=0;else if(A.loopCount>=Q){A.currentFrame=s.params.frames-1,this.onGiftPlayComplete(A,e,g);break}else A.currentFrame=0}return A.currentFrame=Math.max(0,Math.min(A.currentFrame,s.params.frames-1)),A.currentFrame!==C&&this.audioManager.tickFrame(A,A.currentFrame,e),A.currentFrame!==C}onGiftPlayComplete(A,t,e){var g,I,s,n;if((g=A.onComplete)==null||g.call(A,t),A.flyTo){A.state="fly";const{sx:B,sy:C}=Gs(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*B,A.flyTo.y*C,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:_s,()=>{var Q;A.state="finished",(Q=A.onFlyComplete)==null||Q.call(A,t)})}else A.state="finished"}removeFinished(){const A=[];for(const[t,e]of this.slots)e.state==="finished"&&A.push(t);for(const t of A)this.removeSlot(t);return A.length>0}getRenderOrderedSlots(){const A=[];for(const t of this.slots.values())t.state!=="playing"&&t.state!=="fly"||A.push(t);return A.sort((t,e)=>{var g,I,s,n;const B=(g=t.zIndex)!=null?g:0,C=(I=e.zIndex)!=null?I:0;return B!==C?B-C:((s=t.renderOrder)!=null?s:0)-((n=e.renderOrder)!=null?n:0)}),A}getRenderLayers(){var A,t;const e=this.getRenderOrderedSlots();if(e.length===0)return[];const g=[];let I=[],s=(A=e[0].zIndex)!=null?A:0;for(const n of e){const B=(t=n.zIndex)!=null?t:0;I.length>0&&B!==s&&(g.push(I),I=[],s=B),I.push(n)}return I.length>0&&g.push(I),g}drawLayer(A){if(A.length===0)return;let t=A[0].type,e=this.getBatchKey(A[0]),g=[];for(const I of A){const s=this.getBatchKey(I);(I.type!==t||s!==e)&&g.length>0&&(this.drawSlotRun(t,g),g=[]),t=I.type,e=s,g.push(I)}g.length>0&&this.drawSlotRun(t,g)}drawSlotRun(A,t){if(t.length===0)return;const e=new Map;for(const g of t)e.set(g.id,g);switch(A){case"svga":this.svgaBatch.drawSlots(this.backend,t);break;case"vap":this.vapRenderer.draw(this.backend,e);break;case"alphaVideo":this.alphaVideoRenderer.draw(this.backend,e);break}}getBatchKey(A){var t,e,g,I,s,n,B,C,Q;switch(A.type){case"svga":{const a=((e=(t=A.videoEntity)==null?void 0:t.atlasTextureHandles)!=null&&e.length?A.videoEntity.atlasTextureHandles:(g=A.videoEntity)!=null&&g.atlasTextureHandle?[A.videoEntity.atlasTextureHandle]:[]).map(r=>r.id).join(","),E=A.svgaSlotTextures&&A.svgaSlotTextures.size>0?1:0;return`svga:${a}:${E}`}case"vap":{const a=(s=(I=A.videoTextureHandle)==null?void 0:I.id)!=null?s:-1,E=A.vapMixState?"mixed":"video",r=(n=A.options.objectFit)!=null?n:"contain";return`vap:${E}:${a}:${r}`}case"alphaVideo":{const a=(B=A.options.objectFit)!=null?B:"contain";return`alpha:${(Q=(C=A.videoTextureHandle)==null?void 0:C.id)!=null?Q:-1}:${a}`}}}deleteSVGAAtlasTextures(A){var t;const e=(t=A.atlasTextureHandles)!=null&&t.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],g=new Set;for(const I of e)g.has(I.id)||(g.add(I.id),this.backend.deleteTexture(I))}destroy(){this.stop();for(const A of Array.from(this.slots.keys()))this.removeSlot(A);this.svgaBatch.destroy(this.backend),this.vapRenderer.destroy(this.backend),this.alphaVideoRenderer.destroy(this.backend),this.postAnimator.destroy(),this.audioManager.destroy(),this.backend.destroy()}}async function bC(i){if(typeof DecompressionStream!="undefined"){try{return await vn(i,"deflate")}catch(A){}try{return await vn(i.slice(2),"deflate-raw")}catch(A){}return await vn(i.slice(2,-4),"deflate-raw")}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function vn(i,A){const t=new DecompressionStream(A),e=t.writable.getWriter(),g=t.readable.getReader();e.write(new Uint8Array(i.buffer,i.byteOffset,i.byteLength)),e.close();const I=[];let s=0;for(;;){const{done:C,value:Q}=await g.read();if(C)break;I.push(Q),s+=Q.length}const n=new Uint8Array(s);let B=0;for(const C of I)n.set(C,B),B+=C.length;return n}var qE=Object.defineProperty,VE=(i,A,t)=>A in i?qE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,Tn=(i,A,t)=>VE(i,typeof A!="symbol"?A+"":A,t);const zE=0,ZE=1,WE=2,jE=5;class dB{constructor(A,t=0,e){Tn(this,"view"),Tn(this,"pos"),Tn(this,"end"),this.view=new DataView(A.buffer,A.byteOffset,A.byteLength),this.pos=t,this.end=t+(e!=null?e:A.byteLength)}get remaining(){return this.end-this.pos}readVarint(){let A=0,t=0;for(;this.pos<this.end;){const e=this.view.getUint8(this.pos++);if(A|=(e&127)<<t,(e&128)===0)return A>>>0;t+=7}return A>>>0}readSignedVarint(){return this.readVarint()|0}readFloat(){const A=this.view.getFloat32(this.pos,!0);return this.pos+=4,A}readDouble(){const A=this.view.getFloat64(this.pos,!0);return this.pos+=8,A}readBytes(){const A=this.readVarint(),t=this.view.byteOffset+this.pos;this.pos+=A;const e=this.view.buffer.slice(t,t+A);return new Uint8Array(e)}readString(){const A=this.readBytes();return new TextDecoder().decode(A)}readTag(){if(this.pos>=this.end)return null;const A=this.readVarint();return{field:A>>>3,wire:A&7}}skip(A){switch(A){case zE:this.readVarint();break;case ZE:this.pos+=8;break;case WE:this.pos+=this.readVarint();break;case jE:this.pos+=4;break}}sub(A){const t=new dB(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,t}}function OE(i){const A={viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.viewBoxWidth=i.readFloat();break;case 2:A.viewBoxHeight=i.readFloat();break;case 3:A.fps=i.readSignedVarint();break;case 4:A.frames=i.readSignedVarint();break;default:i.skip(t.wire)}}return A}function XE(i){const A={x:0,y:0,width:0,height:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.x=i.readFloat();break;case 2:A.y=i.readFloat();break;case 3:A.width=i.readFloat();break;case 4:A.height=i.readFloat();break;default:i.skip(t.wire)}}return A}function YC(i){const A={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.a=i.readFloat();break;case 2:A.b=i.readFloat();break;case 3:A.c=i.readFloat();break;case 4:A.d=i.readFloat();break;case 5:A.tx=i.readFloat();break;case 6:A.ty=i.readFloat();break;default:i.skip(t.wire)}}return A}function vB(i){const A={r:0,g:0,b:0,a:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.r=i.readFloat();break;case 2:A.g=i.readFloat();break;case 3:A.b=i.readFloat();break;case 4:A.a=i.readFloat();break;default:i.skip(t.wire)}}return A}function PE(i){const A={fill:null,stroke:null,strokeWidth:0},t=[];for(;i.remaining>0;){const e=i.readTag();if(!e)break;switch(e.field){case 1:{const g=i.readVarint();A.fill=vB(i.sub(g));break}case 2:{const g=i.readVarint();A.stroke=vB(i.sub(g));break}case 3:A.strokeWidth=i.readFloat();break;case 4:A.lineCap=i.readVarint();break;case 5:A.lineJoin=i.readVarint();break;case 6:A.miterLimit=i.readFloat();break;case 7:t[0]=i.readFloat();break;case 8:t[1]=i.readFloat();break;case 9:t[2]=i.readFloat();break;default:i.skip(e.wire)}}return t.some(e=>e>0)&&(A.lineDash=t.filter(e=>e>0)),A}function $E(i){let A="";for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A=i.readString();break;default:i.skip(t.wire)}}return A}function Ar(i){const A={x:0,y:0,width:0,height:0,cornerRadius:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.x=i.readFloat();break;case 2:A.y=i.readFloat();break;case 3:A.width=i.readFloat();break;case 4:A.height=i.readFloat();break;case 5:A.cornerRadius=i.readFloat();break;default:i.skip(t.wire)}}return A}function tr(i){const A={x:0,y:0,radiusX:0,radiusY:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.x=i.readFloat();break;case 2:A.y=i.readFloat();break;case 3:A.radiusX=i.readFloat();break;case 4:A.radiusY=i.readFloat();break;default:i.skip(t.wire)}}return A}function er(i){let A=0,t="",e,g,I={fill:null,stroke:null,strokeWidth:0},s={a:1,b:0,c:0,d:1,tx:0,ty:0};for(;i.remaining>0;){const n=i.readTag();if(!n)break;switch(n.field){case 1:A=i.readVarint();break;case 2:{const B=i.readVarint();t=$E(i.sub(B));break}case 3:{const B=i.readVarint();e=Ar(i.sub(B));break}case 4:{const B=i.readVarint();g=tr(i.sub(B));break}case 10:{const B=i.readVarint();I=PE(i.sub(B));break}case 11:{const B=i.readVarint();s=YC(i.sub(B));break}default:i.skip(n.wire)}}return A===3?{kind:"keep"}:t?{kind:"path",pathData:t,style:I,transform:s}:e?{kind:"rect",rect:e,style:I,transform:s}:g?{kind:"ellipse",ellipse:g,style:I,transform:s}:null}function ir(i){const A={alpha:0,layout:null,transform:null,clipPath:""},t=[];for(;i.remaining>0;){const e=i.readTag();if(!e)break;switch(e.field){case 1:A.alpha=i.readFloat();break;case 2:{const g=i.readVarint();A.layout=XE(i.sub(g));break}case 3:{const g=i.readVarint();A.transform=YC(i.sub(g));break}case 4:A.clipPath=i.readString();break;case 5:{const g=i.readVarint(),I=er(i.sub(g));I&&t.push(I);break}default:i.skip(e.wire)}}return t.length>0&&(A.shapes=t),A}function gr(i){var A;const t={imageKey:"",frames:[]};for(;i.remaining>0;){const g=i.readTag();if(!g)break;switch(g.field){case 1:t.imageKey=i.readString();break;case 2:{const I=i.readVarint();t.frames.push(ir(i.sub(I)));break}default:i.skip(g.wire)}}let e=null;for(const g of t.frames){const I=g.shapes;if(!I||I.length===0){g.shapes=null,e=null;continue}if(((A=I[0])==null?void 0:A.kind)==="keep"){g.shapes=e;continue}const s=I.filter(n=>n.kind!=="keep");g.shapes=s.length>0?s:null,e=g.shapes}return t}function Ir(i){const A={audioKey:"",startFrame:0,endFrame:0,startTime:0,totalTime:0};for(;i.remaining>0;){const t=i.readTag();if(!t)break;switch(t.field){case 1:A.audioKey=i.readString();break;case 2:A.startFrame=i.readSignedVarint();break;case 3:A.endFrame=i.readSignedVarint();break;case 4:A.startTime=i.readSignedVarint();break;case 5:A.totalTime=i.readSignedVarint();break;default:i.skip(t.wire)}}return A}function sr(i){let A="",t=new Uint8Array(0);for(;i.remaining>0;){const e=i.readTag();if(!e)break;switch(e.field){case 1:A=i.readString();break;case 2:t=i.readBytes();break;default:i.skip(e.wire)}}return{key:A,value:t}}function LC(i){const A=new dB(i),t={version:"",params:{viewBoxWidth:0,viewBoxHeight:0,fps:20,frames:0},images:new Map,sprites:[],audios:[]};for(;A.remaining>0;){const e=A.readTag();if(!e)break;switch(e.field){case 1:t.version=A.readString();break;case 2:{const g=A.readVarint();t.params=OE(A.sub(g));break}case 3:{const g=A.readVarint(),{key:I,value:s}=sr(A.sub(g));t.images.set(I,s);break}case 4:{const g=A.readVarint();t.sprites.push(gr(A.sub(g)));break}case 5:{const g=A.readVarint();t.audios.push(Ir(A.sub(g)));break}default:A.skip(e.wire)}}return t}const _C=`async function _(A) {
552
552
  if (typeof DecompressionStream != "undefined") {
553
553
  try {
554
554
  return await l(A, "deflate");
@@ -1444,7 +1444,7 @@ Z.onmessage = async (A) => {
1444
1444
  }
1445
1445
  };
1446
1446
  //# sourceMappingURL=parser-worker-C3zSIV4y.js.map
1447
- `,vB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",LC],{type:"text/javascript;charset=utf-8"});function sr(i){let A;try{if(A=vB&&(self.URL||self.webkitURL).createObjectURL(vB),!A)throw"";const t=new Worker(A,{type:"module",name:i==null?void 0:i.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(LC),{type:"module",name:i==null?void 0:i.name})}}let ls=null,nr=1;const ys=new Map;function Br(){return ls||(ls=new sr,ls.addEventListener("message",i=>{const A=i.data;if(!A||A.type!=="parse-svga-result"||A.id==null)return;const t=ys.get(A.id);t&&(ys.delete(A.id),A.error?t.reject(new Error(A.error)):A.result?t.resolve(A.result):t.reject(new Error("SVGA worker: empty result")))}),ls.addEventListener("error",i=>{const A=i.message||"SVGA parser worker error";for(const[,t]of ys)t.reject(new Error(A));ys.clear()})),ls}function Cr(i){const A=Br(),t=nr++,e=i.slice(0);return new Promise((g,I)=>{ys.set(t,{resolve:g,reject:I}),A.postMessage({type:"parse-svga",id:t,data:e},[e])})}function Qr(i){const A=new Map;for(const[t,e]of Object.entries(i.images))A.set(t,new Uint8Array(e));return{version:i.version,params:i.params,sprites:i.sprites,audios:i.audios,images:A}}const _C=`const c = self, o = 8;
1447
+ `,TB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",_C],{type:"text/javascript;charset=utf-8"});function nr(i){let A;try{if(A=TB&&(self.URL||self.webkitURL).createObjectURL(TB),!A)throw"";const t=new Worker(A,{type:"module",name:i==null?void 0:i.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(_C),{type:"module",name:i==null?void 0:i.name})}}let ds=null,Br=1;const ps=new Map;function Cr(){return ds||(ds=new nr,ds.addEventListener("message",i=>{const A=i.data;if(!A||A.type!=="parse-svga-result"||A.id==null)return;const t=ps.get(A.id);t&&(ps.delete(A.id),A.error?t.reject(new Error(A.error)):A.result?t.resolve(A.result):t.reject(new Error("SVGA worker: empty result")))}),ds.addEventListener("error",i=>{const A=i.message||"SVGA parser worker error";for(const[,t]of ps)t.reject(new Error(A));ps.clear()})),ds}function Qr(i){const A=Cr(),t=Br++,e=i.slice(0);return new Promise((g,I)=>{ps.set(t,{resolve:g,reject:I}),A.postMessage({type:"parse-svga",id:t,data:e},[e])})}function ar(i){const A=new Map;for(const[t,e]of Object.entries(i.images))A.set(t,new Uint8Array(e));return{version:i.version,params:i.params,sprites:i.sprites,audios:i.audios,images:A}}const JC=`const c = self, o = 8;
1448
1448
  c.onmessage = async (i) => {
1449
1449
  const t = i.data;
1450
1450
  if (t.type !== "decode-batch") return;
@@ -1475,7 +1475,7 @@ c.onmessage = async (i) => {
1475
1475
  c.postMessage(p, n);
1476
1476
  };
1477
1477
  //# sourceMappingURL=svga-image-decode-worker-BYhj-jOV.js.map
1478
- `,TB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",_C],{type:"text/javascript;charset=utf-8"});function ar(i){let A;try{if(A=TB&&(self.URL||self.webkitURL).createObjectURL(TB),!A)throw"";const t=new Worker(A,{type:"module",name:i==null?void 0:i.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(_C),{type:"module",name:i==null?void 0:i.name})}}let jA=null,Er=1;const XA=new Map;function rr(){return jA||(jA=new ar,jA.addEventListener("message",i=>{const A=i.data;if(!A||A.type!=="decode-batch-result")return;const t=XA.get(A.id);t&&(XA.delete(A.id),t.resolve(A))}),jA.addEventListener("error",i=>{const A=new Error(i.message||"SVGA image decode worker error");for(const[,t]of XA)t.reject(A);XA.clear(),jA=null})),jA}function or(){return typeof Worker!="undefined"&&typeof createImageBitmap=="function"}async function hr(i,A){const t=rr(),e=new Map,g=Math.max(1,Math.min(256,Math.floor(A)));for(let I=0;I<i.length;I+=g){const s=i.slice(I,I+g),n=[],B=[];for(const[a,r]of s){const E=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength);n.push({key:a,data:E}),B.push(E)}const C=Er++,Q=await new Promise((a,r)=>{XA.set(C,{resolve:a,reject:r});const E={type:"decode-batch",id:C,items:n};try{t.postMessage(E,B)}catch(o){XA.delete(C),r(o instanceof Error?o:new Error(String(o)))}});for(const a of Q.results)a.bitmap&&e.set(a.key,a.bitmap)}return e}const Tn=[73,68,51],cr=128,lr=12,dr=8,Ws=new Map,An=new WeakMap,qn=new WeakMap;async function JC(){await new Promise(i=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>i());return}setTimeout(i,0)})}function fr(i,A){return!!(i.startsWith("audio")||A.length>=3&&A[0]===Tn[0]&&A[1]===Tn[1]&&A[2]===Tn[2])}function ur(i){const A=[],t=new Map;for(const[e,g]of i.images){if(fr(e,g)){const I=g.buffer;t.set(e,I.slice(g.byteOffset,g.byteOffset+g.byteLength));continue}g.length!==0&&A.push([e,g])}return{imageEntries:A,audioBlobs:t}}async function qB(i,A){const t=new Map,e=Math.max(2,Math.min(32,Math.floor(A)));for(let g=0;g<i.length;g+=e){const I=i.slice(g,g+e);await Promise.all(I.map(async([s,n])=>{try{const B=await createImageBitmap(new Blob([new Uint8Array(n)]),{premultiplyAlpha:"none"});t.set(s,B)}catch(B){}})),g+e<i.length&&await JC()}return t}async function VB(i,A){const t=new Map;if(i.length===0)return t;let e=4;const g=2,I=24,s=Math.max(4,A);for(let n=0;n<i.length;){const B=typeof performance!="undefined"?performance.now():0,C=Math.min(n+e,i.length),Q=i.slice(n,C);await Promise.all(Q.map(async([r,E])=>{try{const o=await createImageBitmap(new Blob([new Uint8Array(E)]),{premultiplyAlpha:"none"});t.set(r,o)}catch(o){}}));const a=typeof performance!="undefined"?performance.now()-B:s*.5;a<s*.45&&e<I?e=Math.min(I,e+2):a>s*1.4&&e>g&&(e=Math.max(g,e-2)),n=C,n<i.length&&a>s&&await JC()}return t}function wr(i){var A,t,e;return{useImageBitmapDecodeWorker:(i==null?void 0:i.useImageBitmapDecodeWorker)!==!1,imageDecodeWorkerChunkSize:(A=i==null?void 0:i.imageDecodeWorkerChunkSize)!=null?A:cr,imageDecodeAdaptiveOnMainThread:(i==null?void 0:i.imageDecodeAdaptiveOnMainThread)!==!1,imageDecodeFrameBudgetMs:(t=i==null?void 0:i.imageDecodeFrameBudgetMs)!=null?t:lr,imageDecodeFixedBatchSize:(e=i==null?void 0:i.imageDecodeFixedBatchSize)!=null?e:dr}}async function Dr(i,A){const{imageEntries:t,audioBlobs:e}=ur(i),g=wr(A);let I;if(g.useImageBitmapDecodeWorker&&or()&&t.length>0)try{I=await hr(t,g.imageDecodeWorkerChunkSize)}catch(n){console.warn("[GiftStage:SVGA] image decode worker failed, using main thread",n),I=g.imageDecodeAdaptiveOnMainThread?await VB(t,g.imageDecodeFrameBudgetMs):await qB(t,g.imageDecodeFixedBatchSize)}else I=g.imageDecodeAdaptiveOnMainThread?await VB(t,g.imageDecodeFrameBudgetMs):await qB(t,g.imageDecodeFixedBatchSize);return{movie:i,imageBitmaps:I,audioBlobs:e}}async function zB(i,A){return Dr(Qr(i),A)}function yr(i){const A={};for(const[t,e]of i.images)A[t]=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return{version:i.version,params:i.params,sprites:i.sprites,audios:i.audios,images:A}}async function HC(i,A,t,e){if(!A){const I=An.get(i);if(I)return I;const s=qn.get(i);if(s)return s}if(A){const I=hB(A);if(I)return I;const s=Ws.get(A);if(s)return s}const g=eB(async()=>{if(e)try{const B=new Uint8Array(t).slice().buffer,C=await Cr(B);return A?LB(A,C):An.set(i,C),C}catch(B){console.warn("[GiftStage:SVGA] worker parse failed, using main thread",B)}const I=At()&&Fa(t)||await xC(t),s=At()&&Sa(I)||YC(I),n=yr(s);return A?LB(A,n):An.set(i,n),n});if(!A){const I=g.finally(()=>{qn.delete(i)});return qn.set(i,I),I}return Ws.set(A,g.finally(()=>{Ws.delete(A)})),Ws.get(A)}async function pr(i,A){let t;const e=typeof i=="string"?`svga-payload:${i}`:null;if(typeof i=="string"){if(t=new Uint8Array(await Ys(i)),e){const s=hB(e);if(s)return s.params}}else{t=new Uint8Array(i);const s=An.get(i);if(s)return s.params}const g=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return(await HC(i,e,t,g)).params}async function IB(i,A){let t;const e=typeof i=="string"?`svga-payload:${i}`:null;if(typeof i=="string"){if(t=new Uint8Array(await Ys(i)),e){const s=hB(e);if(s)return eB(async()=>zB(s,A))}}else t=new Uint8Array(i);const g=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined",I=await HC(i,e,t,g);return eB(async()=>zB(I,A))}const Vn=24;async function mr(){await new Promise(i=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>i());return}setTimeout(i,0)})}function Gr(){return{rects:[],cursorX:0,shelfY:0,shelfH:0,usedW:0,usedH:0}}function Fr(i,A,t,e,g){const I=Math.max(1,e-t),s=Math.min(1,g,I/Math.max(A.width,A.height));return{key:i,width:A.width,height:A.height,packedWidth:Math.max(1,Math.floor(A.width*s)),packedHeight:Math.max(1,Math.floor(A.height*s)),scale:s}}function sB(i,A,t,e,g){const I=A.packedWidth+e,s=A.packedHeight+e;if(i.cursorX+I<=g&&i.shelfY+Math.max(i.shelfH,s)<=g)return i.rects.push({key:A.key,pageIndex:t,x:i.cursorX,y:i.shelfY,w:A.packedWidth,h:A.packedHeight}),i.cursorX+=I,i.shelfH=Math.max(i.shelfH,s),i.usedW=Math.max(i.usedW,i.cursorX),i.usedH=Math.max(i.usedH,i.shelfY+i.shelfH),!0;const n=i.shelfY+i.shelfH;return n+s>g?!1:(i.shelfY=n,i.shelfH=0,i.cursorX=0,sB(i,A,t,e,g))}function zn(i,A,t,e){const g=Array.from(i.entries()).map(([s,n])=>Fr(s,n,A,t,e));g.sort((s,n)=>n.packedHeight-s.packedHeight||n.packedWidth-s.packedWidth);const I=[];for(const s of g){let n=!1;for(let Q=0;Q<I.length;Q++)if(sB(I[Q],s,Q,A,t)){n=!0;break}if(n)continue;const B=Gr(),C=I.length;if(!sB(B,s,C,A,t))throw new Error(`SVGA atlas image too large: ${s.key} ${s.width}x${s.height}, max texture size ${t}`);I.push(B)}return I}function ZB(i,A){return i.map(t=>({rects:t.rects,atlasW:Math.min(A,WB(Math.max(1,t.usedW))),atlasH:Math.min(A,WB(Math.max(1,t.usedH)))}))}function Sr(i,A){let t=1;for(const e of i.values())t=Math.max(t,e.width,e.height);return Math.max(1/Math.max(t,A),1e-4)}function Nr(i,A,t,e){const g=Math.max(1,Math.floor(e)),I=zn(i,A,t,1);if(I.length<=g)return ZB(I,t);let s=Sr(i,t),n=1,B=zn(i,A,t,s);if(B.length>g)throw new Error(`SVGA atlas needs ${B.length} pages even at minimum scale, max pages ${g}`);for(let C=0;C<16;C++){const Q=(s+n)*.5,a=zn(i,A,t,Q);a.length<=g?(B=a,s=Q):n=Q}return ZB(B,t)}function WB(i){return i--,i|=i>>1,i|=i>>2,i|=i>>4,i|=i>>8,i|=i>>16,i+1}function Rr(i,A){if(Ea())return new OffscreenCanvas(i,A);if(typeof document=="undefined")throw new Error("Atlas compose needs OffscreenCanvas or DOM (document)");const t=document.createElement("canvas");return t.width=i,t.height=A,t}function Ur(i){return i.getContext("2d")}function kr(i,A,t,e,g,I){if(t.w<=0||t.h<=0||I<=0)return;const s=Math.max(1,Math.floor(I*.5)),n=t.x,B=t.y,C=t.w,Q=t.h,a=Math.min(s,n),r=Math.min(s,B),E=Math.min(s,e-(n+C)),o=Math.min(s,g-(B+Q)),h=A.imageSmoothingEnabled;A.imageSmoothingEnabled=!1,a>0&&A.drawImage(i,n,B,1,Q,n-a,B,a,Q),E>0&&A.drawImage(i,n+C-1,B,1,Q,n+C,B,E,Q),r>0&&A.drawImage(i,n,B,C,1,n,B-r,C,r),o>0&&A.drawImage(i,n,B+Q-1,C,1,n,B+Q,C,o),a>0&&r>0&&A.drawImage(i,n,B,1,1,n-a,B-r,a,r),E>0&&r>0&&A.drawImage(i,n+C-1,B,1,1,n+C,B-r,E,r),a>0&&o>0&&A.drawImage(i,n,B+Q-1,1,1,n-a,B+Q,a,o),E>0&&o>0&&A.drawImage(i,n+C-1,B+Q-1,1,1,n+C,B+Q,E,o),A.imageSmoothingEnabled=h}async function Mr(i){if(typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas){if(typeof i.convertToBlob=="function")try{return await(await i.convertToBlob({type:"image/png"})).arrayBuffer()}catch(t){return null}return null}const A=i;return new Promise(t=>{try{A.toBlob(e=>{if(!e){t(null);return}e.arrayBuffer().then(t).catch(()=>t(null))},"image/png")}catch(e){t(null)}})}async function KC(i,A,t=4096,e=2,g){var I,s;if(i.size===0)throw new Error("No images to build atlas from");const n=Math.max(64,Math.min(t,(I=A.maxTextureSize)!=null?I:t)),B=Nr(i,e,n,(s=g==null?void 0:g.maxPages)!=null?s:4);if(B.length===0)throw new Error("No atlas pages built");const C=new Map,Q=[];for(let o=0;o<B.length;o++){const h=B[o],c=Rr(h.atlasW,h.atlasH),f=Ur(c);if(!f)throw new Error("Atlas: 2d context unavailable");f.clearRect(0,0,h.atlasW,h.atlasH);for(let w=0;w<h.rects.length;w+=Vn){const y=h.rects.slice(w,w+Vn);for(const p of y){const m=i.get(p.key);f.drawImage(m,p.x,p.y,p.w,p.h),kr(c,f,p,h.atlasW,h.atlasH,e)}w+Vn<h.rects.length&&await mr()}const l=(g==null?void 0:g.captureEncodedPng)===!0?Mr(c):void 0,u=A.createTexture(c,{width:h.atlasW,height:h.atlasH,filter:"linear",premultiplyAlpha:!0});for(const w of h.rects)C.set(w.key,{x:w.x/h.atlasW,y:w.y/h.atlasH,w:w.w/h.atlasW,h:w.h/h.atlasH,textureIndex:o});Q.push({textureHandle:u,atlasWidth:h.atlasW,atlasHeight:h.atlasH,encodedPngBytesPromise:l})}const a=Q.map(o=>o.textureHandle),r=Q.map(o=>o.encodedPngBytesPromise).filter(o=>!!o),E=Q[0];return{textureHandle:E.textureHandle,textureHandles:a,pages:Q,rects:C,atlasWidth:E.atlasWidth,atlasHeight:E.atlasHeight,encodedPngBytesPromise:E.encodedPngBytesPromise,encodedPngBytesPromises:r.length>0?r:void 0}}var xr=Object.defineProperty,vC=(i,A)=>{for(var t in A)xr(i,t,{get:A[t],enumerable:!0})},Zn=Math.pow(2,32),X=Math.pow(2,32)-1,br=1,Yr=2,Lr=4,tn=1,en=2,gn=8,In=16,sn=32,jB=131072,Us=1,nn=4,ks=256,Ms=512,xs=1024,bs=2048,TC=-1,RA=0,EA=1,MA=class qC extends ArrayBuffer{constructor(A){super(A),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(A,t){const e=new qC(A.byteLength);return new Uint8Array(e).set(new Uint8Array(A)),e.fileStart=t,e}},_s,nB,U,sA=(U=class{constructor(A,t,e){Gn(this,_s);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=t||0,A instanceof ArrayBuffer?this.buffer=MA.fromArrayBuffer(A,0):A instanceof DataView?(this.dataView=A,t&&(this._byteOffset+=t)):this.buffer=new MA(A||0),this.position=0,this.endianness=e||1}getPosition(){return this.position}_realloc(A){if(!this._dynamicSize)return;const t=this._byteOffset+this.position+A;let e=this._buffer.byteLength;if(t<=e){t>this._byteLength&&(this._byteLength=t);return}for(e<1&&(e=1);t>e;)e*=2;const g=new MA(e),I=new Uint8Array(this._buffer);new Uint8Array(g,0,I.length).set(I),this.buffer=g,this._byteLength=t}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const A=new MA(this._byteLength),t=new Uint8Array(A),e=new Uint8Array(this._buffer,0,t.length);t.set(e),this.buffer=A}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(A){this._buffer=A,this._dataView=new DataView(A,this._byteOffset),this._byteLength=A.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(A){this._byteOffset=A,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(A){this._byteOffset=A.byteOffset,this._buffer=MA.fromArrayBuffer(A.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+A.byteLength}seek(A){const t=Math.max(0,Math.min(this.byteLength,A));this.position=isNaN(t)||!isFinite(t)?0:t}isEof(){return this.position>=this._byteLength}mapUint8Array(A){this._realloc(A*1);const t=new Uint8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,t}readInt32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Int32Array(A);return U.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),U.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Int16Array(A);return U.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),U.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Int8Array(A);return U.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readUint32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Uint32Array(A);return U.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),U.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Uint16Array(A);return U.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),U.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Uint8Array(A);return U.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readFloat64Array(A,t){A=A===void 0?this.byteLength-this.position/8:A;const e=new Float64Array(A);return U.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),U.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readFloat32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Float32Array(A);return U.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),U.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt32(A){const t=this._dataView.getInt32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readInt16(A){const t=this._dataView.getInt16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readInt8(){const A=this._dataView.getInt8(this.position);return this.position+=1,A}readUint32(A){const t=this._dataView.getUint32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readUint16(A){const t=this._dataView.getUint16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readUint8(){const A=this._dataView.getUint8(this.position);return this.position+=1,A}readFloat32(A){const t=this._dataView.getFloat32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readFloat64(A){const t=this._dataView.getFloat64(this.position,(A!=null?A:this.endianness)===2);return this.position+=8,t}static memcpy(A,t,e,g,I){const s=new Uint8Array(A,t,I),n=new Uint8Array(e,g,I);s.set(n)}static arrayToNative(A,t){return t===U.ENDIANNESS?A:this.flipArrayEndianness(A)}static nativeToEndian(A,t){return t&&U.ENDIANNESS===2?A:this.flipArrayEndianness(A)}static flipArrayEndianness(A){const t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);for(let e=0;e<A.byteLength;e+=A.BYTES_PER_ELEMENT)for(let g=e+A.BYTES_PER_ELEMENT-1,I=e;g>I;g--,I++){const s=t[I];t[I]=t[g],t[g]=s}return A}readString(A,t){return t===void 0||t==="ASCII"?OB(this.mapUint8Array(A===void 0?this.byteLength-this.position:A)):new TextDecoder(t).decode(this.mapUint8Array(A))}readCString(A){let t=0;const e=this.byteLength-this.position,g=new Uint8Array(this._buffer,this._byteOffset+this.position),I=A!==void 0?Math.min(A,e):e;for(;t<I&&g[t]!==0;t++);const s=OB(this.mapUint8Array(t));return A!==void 0?this.position+=I-t:t!==e&&(this.position+=1),s}readInt64(){return this.readInt32()*Zn+this.readUint32()}readUint64(){return this.readUint32()*Zn+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(A){const t=new Blob([this.buffer]);if(typeof window!="undefined"&&typeof document!="undefined")if(window.URL&&URL.createObjectURL){const e=window.URL.createObjectURL(t),g=document.createElement("a");document.body.appendChild(g),g.setAttribute("href",e),g.setAttribute("download",A),g.setAttribute("target","_self"),g.click(),window.URL.revokeObjectURL(e),document.body.removeChild(g)}else throw new Error("DataStream.save: Can't create object URL.");return t}get dynamicSize(){return this._dynamicSize}set dynamicSize(A){A||this._trimAlloc(),this._dynamicSize=A}shift(A){const t=new MA(this._byteLength-A),e=new Uint8Array(t),g=new Uint8Array(this._buffer,A,e.length);e.set(g),this.buffer=t,this.position-=A}writeInt32Array(A,t){if(this._realloc(A.length*4),A instanceof Int32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt32(A[e],t)}writeInt16Array(A,t){if(this._realloc(A.length*2),A instanceof Int16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt16(A[e],t)}writeInt8Array(A){if(this._realloc(A.length*1),A instanceof Int8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt8Array(A.length);else for(let t=0;t<A.length;t++)this.writeInt8(A[t])}writeUint32Array(A,t){if(this._realloc(A.length*4),A instanceof Uint32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint32(A[e],t)}writeUint16Array(A,t){if(this._realloc(A.length*2),A instanceof Uint16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint16(A[e],t)}writeUint8Array(A){if(this._realloc(A.length*1),A instanceof Uint8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint8Array(A.length);else for(let t=0;t<A.length;t++)this.writeUint8(A[t])}writeFloat64Array(A,t){if(this._realloc(A.length*8),A instanceof Float64Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat64Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat64(A[e],t)}writeFloat32Array(A,t){if(this._realloc(A.length*4),A instanceof Float32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)U.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat32(A[e],t)}writeInt64(A,t){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(A),(t!=null?t:this.endianness)===2),this.position+=8}writeInt32(A,t){this._realloc(4),this._dataView.setInt32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeInt16(A,t){this._realloc(2),this._dataView.setInt16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeInt8(A){this._realloc(1),this._dataView.setInt8(this.position,A),this.position+=1}writeUint32(A,t){this._realloc(4),this._dataView.setUint32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeUint16(A,t){this._realloc(2),this._dataView.setUint16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeUint8(A){this._realloc(1),this._dataView.setUint8(this.position,A),this.position+=1}writeFloat32(A,t){this._realloc(4),this._dataView.setFloat32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeFloat64(A,t){this._realloc(8),this._dataView.setFloat64(this.position,A,(t!=null?t:this.endianness)===2),this.position+=8}writeUCS2String(A,t,e){e===void 0&&(e=A.length);let g;for(g=0;g<A.length&&g<e;g++)this.writeUint16(A.charCodeAt(g),t);for(;g<e;g++)this.writeUint16(0)}writeString(A,t,e){let g=0;if(t===void 0||t==="ASCII")if(e!==void 0){const I=Math.min(A.length,e);for(g=0;g<I;g++)this.writeUint8(A.charCodeAt(g));for(;g<e;g++)this.writeUint8(0)}else for(g=0;g<A.length;g++)this.writeUint8(A.charCodeAt(g));else this.writeUint8Array(new TextEncoder(t).encode(A.substring(0,e)))}writeCString(A,t){let e=0;if(t!==void 0){const g=Math.min(A.length,t);for(e=0;e<g;e++)this.writeUint8(A.charCodeAt(e));for(;e<t;e++)this.writeUint8(0)}else{for(e=0;e<A.length;e++)this.writeUint8(A.charCodeAt(e));this.writeUint8(0)}}writeStruct(A,t){for(let e=0;e<A.length;e++){const[g,I]=A[e],s=t[g];this.writeType(I,s,t)}}writeType(A,t,e){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.set(this,t,e);let g,I="ASCII";const s=this.position;let n=A;if(typeof A=="string"&&/:/.test(A)){const B=A.split(":");n=B[0],g=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":this.writeUint8(t);break;case"int8":this.writeInt8(t);break;case"uint16":this.writeUint16(t,this.endianness);break;case"int16":this.writeInt16(t,this.endianness);break;case"uint32":this.writeUint32(t,this.endianness);break;case"int32":this.writeInt32(t,this.endianness);break;case"float32":this.writeFloat32(t,this.endianness);break;case"float64":this.writeFloat64(t,this.endianness);break;case"uint16be":this.writeUint16(t,1);break;case"int16be":this.writeInt16(t,1);break;case"uint32be":this.writeUint32(t,1);break;case"int32be":this.writeInt32(t,1);break;case"float32be":this.writeFloat32(t,1);break;case"float64be":this.writeFloat64(t,1);break;case"uint16le":this.writeUint16(t,2);break;case"int16le":this.writeInt16(t,2);break;case"uint32le":this.writeUint32(t,2);break;case"int32le":this.writeInt32(t,2);break;case"float32le":this.writeFloat32(t,2);break;case"float64le":this.writeFloat64(t,2);break;case"cstring":this.writeCString(t,g);break;case"string":this.writeString(t,I,g);break;case"u16string":this.writeUCS2String(t,this.endianness,g);break;case"u16stringle":this.writeUCS2String(t,2,g);break;case"u16stringbe":this.writeUCS2String(t,1,g);break;default:if(Fn(this,_s,nB).call(this,n)){const[,B]=n;for(let C=0;C<t.length;C++)this.writeType(B,t[C]);break}else{this.writeStruct(n,t);break}}g&&(this.position=s,this._realloc(g),this.position=s+g)}writeUint64(A){const t=Math.floor(A/Zn);this.writeUint32(t),this.writeUint32(A&4294967295)}writeUint24(A){this.writeUint8((A&16711680)>>16),this.writeUint8((A&65280)>>8),this.writeUint8(A&255)}adjustUint32(A,t){const e=this.position;this.seek(A),this.writeUint32(t),this.seek(e)}readStruct(A){const t={},e=this.position;for(let g=0;g<A.length;g+=1){const I=A[g][1],s=this.readType(I,t);if(!s){this.failurePosition===0&&(this.failurePosition=this.position),this.position=e;return}t[A[g][0]]=s}return t}readUCS2String(A,t){return String.fromCharCode.apply(void 0,this.readUint16Array(A,t))}readType(A,t){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.get(this,t);if(A instanceof Array&&A.length!==3)return this.readStruct(A);let e,g,I="ASCII";const s=this.position;let n=A;if(typeof n=="string"&&/:/.test(n)){const B=n.split(":");n=B[0],g=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":e=this.readUint8();break;case"int8":e=this.readInt8();break;case"uint16":e=this.readUint16(this.endianness);break;case"int16":e=this.readInt16(this.endianness);break;case"uint32":e=this.readUint32(this.endianness);break;case"int32":e=this.readInt32(this.endianness);break;case"float32":e=this.readFloat32(this.endianness);break;case"float64":e=this.readFloat64(this.endianness);break;case"uint16be":e=this.readUint16(1);break;case"int16be":e=this.readInt16(1);break;case"uint32be":e=this.readUint32(1);break;case"int32be":e=this.readInt32(1);break;case"float32be":e=this.readFloat32(1);break;case"float64be":e=this.readFloat64(1);break;case"uint16le":e=this.readUint16(2);break;case"int16le":e=this.readInt16(2);break;case"uint32le":e=this.readUint32(2);break;case"int32le":e=this.readInt32(2);break;case"float32le":e=this.readFloat32(2);break;case"float64le":e=this.readFloat64(2);break;case"cstring":e=this.readCString(g);break;case"string":e=this.readString(g,I);break;case"u16string":e=this.readUCS2String(g,this.endianness);break;case"u16stringle":e=this.readUCS2String(g,2);break;case"u16stringbe":e=this.readUCS2String(g,1);break;default:if(Fn(this,_s,nB).call(this,n)){const[,B,C]=n,Q=typeof C=="function"?C(t,this,n):typeof C=="string"&&t[C]!==void 0?parseInt(t[C]):typeof C=="number"?C:C==="*"?void 0:parseInt(C);if(typeof B=="string"){const a=B.replace(/(le|be)$/,"");let r;switch(/le$/.test(B)?r=2:/be$/.test(B)&&(r=1),a){case"uint8":e=this.readUint8Array(Q);break;case"uint16":e=this.readUint16Array(Q,r);break;case"uint32":e=this.readUint32Array(Q,r);break;case"int8":e=this.readInt8Array(Q);break;case"int16":e=this.readInt16Array(Q,r);break;case"int32":e=this.readInt32Array(Q,r);break;case"float32":e=this.readFloat32Array(Q,r);break;case"float64":e=this.readFloat64Array(Q,r);break;case"cstring":case"utf16string":case"string":if(Q){e=new Array(Q);for(let E=0;E<Q;E++)e[E]=this.readType(B,t)}else for(e=[];!this.isEof();){const E=this.readType(B,t);if(!E)break;e.push(E)}break}}else if(Q){e=new Array(Q);for(let a=0;a<Q;a++){const r=this.readType(B,t);if(!r)return;e[a]=r}}else for(e=[];;){const a=this.position;try{const r=this.readType(B,t);if(!r){this.position=a;break}e.push(r)}catch(r){this.position=a;break}}break}}return g&&(this.position=s+g),e}mapInt32Array(A,t){this._realloc(A*4);const e=new Int32Array(this._buffer,this.byteOffset+this.position,A);return U.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapInt16Array(A,t){this._realloc(A*2);const e=new Int16Array(this._buffer,this.byteOffset+this.position,A);return U.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapInt8Array(A,t){this._realloc(A*1);const e=new Int8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,e}mapUint32Array(A,t){this._realloc(A*4);const e=new Uint32Array(this._buffer,this.byteOffset+this.position,A);return U.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapUint16Array(A,t){this._realloc(A*2);const e=new Uint16Array(this._buffer,this.byteOffset+this.position,A);return U.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapFloat64Array(A,t){this._realloc(A*8);const e=new Float64Array(this._buffer,this.byteOffset+this.position,A);return U.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*8,e}mapFloat32Array(A,t){this._realloc(A*4);const e=new Float32Array(this._buffer,this.byteOffset+this.position,A);return U.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}},_s=new WeakSet,nB=function(A){return Array.isArray(A)&&A.length===3&&A[0]==="[]"},U.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,U);function OB(i){const A=[];for(let t=0;t<i.length;t++)A[t]=i[t];return String.fromCharCode.apply(void 0,A)}var js=new Date,Bn=4,XB=3,PB=2,$B=1,pA=Bn,d={setLogLevel(i){i===this.debug?pA=$B:i===this.info?pA=PB:i===this.warn?pA=XB:(this.error,pA=Bn)},debug(i,A){console.debug===void 0&&(console.debug=console.log),$B>=pA&&console.debug("["+d.getDurationString(new Date().getTime()-js.getTime(),1e3)+"]","["+i+"]",A)},log(i,A){this.debug(i.msg)},info(i,A){PB>=pA&&console.info("["+d.getDurationString(new Date().getTime()-js.getTime(),1e3)+"]","["+i+"]",A)},warn(i,A){XB>=pA&&console.warn("["+d.getDurationString(new Date().getTime()-js.getTime(),1e3)+"]","["+i+"]",A)},error(i,A,t){t!=null&&t.onError?t.onError(i,A):Bn>=pA&&console.error("["+d.getDurationString(new Date().getTime()-js.getTime(),1e3)+"]","["+i+"]",A)},getDurationString(i,A){let t;function e(C,Q){const r=(""+C).split(".");for(;r[0].length<Q;)r[0]="0"+r[0];return r.join(".")}i<0?(t=!0,i=-i):t=!1;let I=i/(A||1);const s=Math.floor(I/3600);I-=s*3600;const n=Math.floor(I/60);I-=n*60;let B=I*1e3;return I=Math.floor(I),B-=I*1e3,B=Math.floor(B),(t?"-":"")+s+":"+e(n,2)+":"+e(I,2)+"."+e(B,3)},printRanges(i){const A=i.length;if(A>0){let t="";for(let e=0;e<A;e++)e>0&&(t+=","),t+="["+d.getDurationString(i.start(e))+","+d.getDurationString(i.end(e))+"]";return t}else return"(empty)"}};function _r(i,A){d.debug("ArrayBuffer","Trying to create a new buffer of size: "+(i.byteLength+A.byteLength));const t=new Uint8Array(i.byteLength+A.byteLength);return t.set(new Uint8Array(i),0),t.set(new Uint8Array(A),i.byteLength),t.buffer}var Cn=class extends sA{constructor(i){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,i&&(this.insertBuffer(i),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const i=this.buffers[0];return i.fileStart===0?(this.buffer=i,this.bufferIndex=0,d.debug("MultiBufferStream","Stream ready for parsing"),!0):(d.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return d.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(i,A,t){const e=new Uint8Array(t);return e.set(new Uint8Array(i,A,t)),e.buffer.fileStart=i.fileStart+A,e.buffer.usedBytes=0,e.buffer}insertBuffer(i){let A=!0,t=0;for(;t<this.buffers.length;t++){const e=this.buffers[t];if(i.fileStart<=e.fileStart){if(i.fileStart===e.fileStart)if(i.byteLength>e.byteLength){this.buffers.splice(t,1),t--;continue}else d.warn("MultiBufferStream","Buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+") already appended, ignoring");else i.fileStart+i.byteLength<=e.fileStart||(i=this.reduceBuffer(i,0,e.fileStart-i.fileStart)),d.debug("MultiBufferStream","Appending new buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+")"),this.buffers.splice(t,0,i),t===0&&(this.buffer=i);A=!1;break}else if(i.fileStart<e.fileStart+e.byteLength){const g=e.fileStart+e.byteLength-i.fileStart,I=i.byteLength-g;if(I>0)i=this.reduceBuffer(i,g,I);else{A=!1;break}}}A&&(d.debug("MultiBufferStream","Appending new buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+")"),this.buffers.push(i),t===0&&(this.buffer=i))}logBufferLevel(i){const A=[];let t="",e,g=0,I=0;for(let n=0;n<this.buffers.length;n++){const B=this.buffers[n];n===0?(e={start:B.fileStart,end:B.fileStart+B.byteLength},A.push(e),t+="["+e.start+"-"):e.end===B.fileStart?e.end=B.fileStart+B.byteLength:(e={start:B.fileStart,end:B.fileStart+B.byteLength},t+=A[A.length-1].end-1+"], ["+e.start+"-",A.push(e)),g+=B.usedBytes,I+=B.byteLength}A.length>0&&(t+=e.end-1+"]");const s=i?d.info:d.debug;this.buffers.length===0?s("MultiBufferStream","No more buffer in memory"):s("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+g+"/"+I+" bytes), continuous ranges: "+t)}cleanBuffers(){for(let i=0;i<this.buffers.length;i++){const A=this.buffers[i];A.usedBytes===A.byteLength&&(d.debug("MultiBufferStream","Removing buffer #"+i),this.buffers.splice(i,1),i--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const i=this.buffers[this.bufferIndex+1];if(i.fileStart===this.buffer.fileStart+this.buffer.byteLength){const A=this.buffer.byteLength,t=this.buffer.usedBytes,e=this.buffer.fileStart;return this.buffers[this.bufferIndex]=_r(this.buffer,i),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=t,this.buffer.fileStart=e,d.debug("ISOFile","Concatenating buffer for box parsing (length: "+A+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(i,A,t){let e=-1,g=i===!0?0:this.bufferIndex;for(;g<this.buffers.length;){const s=this.buffers[g];if(s&&s.fileStart<=A)e=g,t&&(s.fileStart+s.byteLength<=A?s.usedBytes=s.byteLength:s.usedBytes=A-s.fileStart,this.logBufferLevel());else break;g++}if(e===-1)return-1;const I=this.buffers[e];return I.fileStart+I.byteLength>=A?(d.debug("MultiBufferStream","Found position in existing buffer #"+e),e):-1}findEndContiguousBuf(i){const A=i!==void 0?i:this.bufferIndex;let t=this.buffers[A];if(this.buffers.length>A+1)for(let e=A+1;e<this.buffers.length;e++){const g=this.buffers[e];if(g.fileStart===t.fileStart+t.byteLength)t=g;else break}return t.fileStart+t.byteLength}getEndFilePositionAfter(i){const A=this.findPosition(!0,i,!1);return A!==-1?this.findEndContiguousBuf(A):i}addUsedBytes(i){this.buffer.usedBytes+=i,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(i,A,t){const e=this.findPosition(A,i,t);return e!==-1?(this.buffer=this.buffers[e],this.bufferIndex=e,this.position=i-this.buffer.fileStart,d.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(d.debug("MultiBufferStream","Position "+i+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const i=this.buffers[this.buffers.length-1];return i.fileStart+i.byteLength}},Js,gt,G=(gt=class{constructor(A=0){Gn(this,Js);this.size=A}get type(){var A;return(A=this.constructor.fourcc)!=null?A:DB(this,Js)}set type(A){yB(this,Js,A)}addBox(A){return this.boxes||(this.boxes=[]),this.boxes.push(A),this[A.type+"s"]?this[A.type+"s"].push(A):this[A.type]=A,A}set(A,t){return this[A]=t,this}addEntry(A,t){const e=t||"entries";return this[e]||(this[e]=[]),this[e].push(A),this}writeHeader(A,t){if(this.size+=8,(this.size>X||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),d.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+A.getPosition()+(t||"")),this.original_size===0?A.writeUint32(0):this.size>X||this.original_size===1?A.writeUint32(1):(this.sizePosition=A.getPosition(),A.writeUint32(this.size)),A.writeString(this.type,void 0,4),this.type==="uuid"){const e=new Uint8Array(16);for(let g=0;g<16;g++)e[g]=parseInt(this.uuid.substring(g*2,g*2+2),16);A.writeUint8Array(e)}(this.size>X||this.original_size===1)&&(this.sizePosition=A.getPosition(),A.writeUint64(this.size))}write(A){if(this.type==="mdat"){const t=this;if(t.stream){this.size=t.stream.getAbsoluteEndPosition(),this.writeHeader(A);for(const e of t.stream.buffers){const g=new Uint8Array(e);A.writeUint8Array(g)}}else t.data&&(this.size=t.data.length,this.writeHeader(A),A.writeUint8Array(t.data))}else this.size=this.data?this.data.length:0,this.writeHeader(A),this.data&&A.writeUint8Array(this.data)}printHeader(A){this.size+=8,this.size>X&&(this.size+=8),this.type==="uuid"&&(this.size+=16),A.log(A.indent+"size:"+this.size),A.log(A.indent+"type:"+this.type)}print(A){this.printHeader(A)}parse(A){this.type!=="mdat"?this.data=A.readUint8Array(this.size-this.hdr_size):this.size===0?A.seek(A.getEndPosition()):A.seek(this.start+this.size)}parseDataAndRewind(A){this.data=A.readUint8Array(this.size-this.hdr_size),A.seek(this.start+this.hdr_size)}parseLanguage(A){this.language=A.readUint16();const t=[];t[0]=this.language>>10&31,t[1]=this.language>>5&31,t[2]=this.language&31,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)}computeSize(A){const t=A||new Cn;this.write(t)}isEndOfBox(A){const t=A.getPosition(),e=this.start+this.size;return t===e}},Js=new WeakMap,gt.registryId=Symbol.for("BoxIdentifier"),gt),D=class extends G{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(i){this.size+=4,super.writeHeader(i," v="+this.version+" f="+this.flags),i.writeUint8(this.version),i.writeUint24(this.flags)}printHeader(i){this.size+=4,super.printHeader(i),i.log(i.indent+"version:"+this.version),i.log(i.indent+"flags:"+this.flags)}parseDataAndRewind(i){this.parseFullHeader(i),this.data=i.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,i.seek(this.start+this.hdr_size)}parseFullHeader(i){this.version=i.readUint8(),this.flags=i.readUint24(),this.hdr_size+=4}parse(i){this.parseFullHeader(i),this.data=i.readUint8Array(this.size-this.hdr_size)}},It,Z=(It=class{constructor(A){this.grouping_type=A}write(A){A.writeUint8Array(this.data)}parse(A){d.warn("BoxParser",`Unknown sample group type: '${this.grouping_type}'`),this.data=A.readUint8Array(this.description_length)}},It.registryId=Symbol.for("SampleGroupEntryIdentifier"),It),Jr=class extends D{parse(i){this.parseFullHeader(i),this.track_group_id=i.readUint32()}},Hr=class extends G{constructor(i,A,t,e,g){super(A),this.box_name=t,this.hdr_size=e,this.start=g,this.type=i}parse(i){this.from_item_ID=i.readUint16();const A=i.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:i.readUint16()}}},Kr=class extends G{constructor(i,A,t,e,g){super(A),this.box_name=t,this.hdr_size=e,this.start=g,this.type=i}parse(i){this.from_item_ID=i.readUint32();const A=i.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:i.readUint32()}}},vr=class extends G{constructor(i,A,t,e){super(A),this.hdr_size=t,this.start=e,this.type=i}parse(i){this.track_ids=i.readUint32Array((this.size-this.hdr_size)/4)}write(i){this.size=this.track_ids.length*4,this.writeHeader(i),i.writeUint32Array(this.track_ids)}},BB=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],Tr=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function qr(i,A){if(i&&!A)return!1;let t;for(t in i)if(!BB.find(e=>e===t)){if(i[t]instanceof G||A[t]instanceof G)continue;if(typeof i[t]=="undefined"||typeof A[t]=="undefined")continue;if(typeof i[t]=="function"||typeof A[t]=="function")continue;if("subBoxNames"in i&&i.subBoxNames.indexOf(t.slice(0,4))>-1||"subBoxNames"in A&&A.subBoxNames.indexOf(t.slice(0,4))>-1)continue;if(t==="data"||t==="start"||t==="size"||t==="creation_time"||t==="modification_time")continue;if(Tr.find(e=>e===t))continue;if(i[t]!==A[t])return!1}return!0}function VC(i,A){if(!qr(i,A))return!1;for(let t=0;t<BB.length;t++){const e=BB[t];if(i[e]&&A[e]&&!VC(i[e],A[e]))return!1}return!0}function dB(i){let A=i;for(;A;){if("registryId"in A)return A.registryId;A=Object.getPrototypeOf(A)}}var Vr=i=>{const A=Symbol.for("SampleGroupEntryIdentifier");return dB(i)===A},zr=i=>{const A=Symbol.for("SampleEntryIdentifier");return dB(i)===A},Zr=i=>{const A=Symbol.for("BoxIdentifier");return dB(i)===A},nA={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function Wr(i){const A={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[t,e]of Object.entries(i)){if(Vr(e)){const g="grouping_type"in e?e.grouping_type:void 0;if(!g)throw new Error(`SampleGroupEntry class ${t} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(g in A.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${t} has a grouping_type that is already registered. Please ensure it is unique.`);A.sampleGroupEntry[g]=e;continue}if(zr(e)){const g="fourcc"in e?e.fourcc:void 0;if(!g)throw new Error(`SampleEntry class ${t} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(g in A.sampleEntry)throw new Error(`SampleEntry class ${t} has a fourcc that is already registered. Please ensure it is unique.`);A.sampleEntry[g]=e;continue}if(Zr(e)){const g="fourcc"in e?e.fourcc:void 0,I="uuid"in e?e.uuid:void 0;if(g==="uuid"){if(!I)throw new Error(`Box class ${t} has a fourcc of 'uuid' but does not have a valid uuid. Please ensure it is defined correctly.`);if(I in A.uuid)throw new Error(`Box class ${t} has a uuid that is already registered. Please ensure it is unique.`);A.uuid[I]=e;continue}A.box[g]=e;continue}throw new Error(`Box class ${t} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return nA.uuid={...A.uuid},nA.sampleEntry={...A.sampleEntry},nA.sampleGroupEntry={...A.sampleGroupEntry},nA.box={...A.box},nA}var cn={};function jr(i){return Object.entries(i).forEach(([A,t])=>cn[A]=t),cn}function Or(i){return VA(i)}function VA(i){let A="";for(let t=0;t<16;t++){const e=i.readUint8().toString(16);A+=e.length===1?"0"+e:e}return A}function wA(i,A,t){let e,g;const I=i.getPosition();let s=0,n;if(i.getEndPosition()-I<8)return d.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:RA};if(t&&t<8)return d.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:RA};let B=i.readUint32();const C=i.readString(4);if(C.length!==4||!/^[\x20-\x7E]{4}$/.test(C))return d.error("BoxParser",`Invalid box type: '${C}'`),{code:TC,start:I,type:C};let Q=C;if(d.debug("BoxParser","Found box of type '"+C+"' and size "+B+" at position "+I),s=8,C==="uuid"){if(i.getEndPosition()-i.getPosition()<16||t-s<16)return i.seek(I),d.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:RA};n=Or(i),s+=16,Q=n}if(B===1){if(i.getEndPosition()-i.getPosition()<8||t&&t-s<8)return i.seek(I),d.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+C+'" box'),{code:RA};g=B,B=i.readUint64(),s+=8}else if(B===0){if(t)B=t;else if(C!=="mdat")return d.error("BoxParser","Unlimited box size not supported for type: '"+C+"'"),e=new G(B),e.type=C,{code:EA,box:e,size:e.size}}if(B!==0&&B<s)return d.error("BoxParser","Box of type "+C+" has an invalid size "+B+" (too small to be a box)"),{code:RA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&t&&B>t)return d.error("BoxParser","Box of type '"+C+"' has a size "+B+" greater than its container size "+t),{code:RA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&I+B>i.getEndPosition())return i.seek(I),d.info("BoxParser","Not enough data in stream to parse the entire '"+C+"' box"),{code:RA,type:C,size:B,hdr_size:s,start:I,original_size:g};if(A)return{code:EA,type:C,size:B,hdr_size:s,start:I};C in nA.box?e=new nA.box[C](B):C!=="uuid"?(d.warn("BoxParser",`Unknown box type: '${C}'`),e=new G(B),e.type=C,e.has_unparsed_data=!0):n in nA.uuid?e=new nA.uuid[n](B):(d.warn("BoxParser",`Unknown UUID box type: '${n}'`),e=new G(B),e.type=C,e.uuid=n,e.has_unparsed_data=!0),e.original_size=g,e.hdr_size=s,e.start=I,e.write===G.prototype.write&&e.type!=="mdat"&&(d.info("BoxParser","'"+Q+"' box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(i)),e.parse(i);const a=i.getPosition()-(e.start+e.size);return a<0?(d.warn("BoxParser","Parsing of box '"+Q+"' did not read the entire indicated box data size (missing "+-a+" bytes), seeking forward"),i.seek(e.start+e.size)):a>0&&e.size!==0&&(d.error("BoxParser","Parsing of box '"+Q+"' read "+a+" more bytes than the indicated box data size, seeking backwards"),i.seek(e.start+e.size)),{code:EA,box:e,size:e.size}}var M=class extends G{write(i){if(this.size=0,this.writeHeader(i),this.boxes)for(let A=0;A<this.boxes.length;A++)this.boxes[A]&&(this.boxes[A].write(i),this.size+=this.boxes[A].size);d.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),i.adjustUint32(this.sizePosition,this.size)}print(i){this.printHeader(i);for(let A=0;A<this.boxes.length;A++)if(this.boxes[A]){const t=i.indent;i.indent+=" ",this.boxes[A].print(i),i.indent=t}}parse(i){let A;for(;i.getPosition()<this.start+this.size;)if(A=wA(i,!1,this.size-(i.getPosition()-this.start)),A.code===EA){const t=A.box;if(this.boxes||(this.boxes=[]),this.boxes.push(t),this.subBoxNames&&this.subBoxNames.indexOf(t.type)!==-1){const e=this.subBoxNames[this.subBoxNames.indexOf(t.type)]+"s";this[e]||(this[e]=[]),this[e].push(t)}else{const e=t.type!=="uuid"?t.type:t.uuid;this[e]?d.warn("ContainerBox",`Box of type ${e} already exists in container box ${this.type}.`):this[e]=t}}else return}},st,FA=(st=class extends M{constructor(A,t,e){super(A),this.hdr_size=t,this.start=e}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(A){A.readUint8Array(6),this.data_reference_index=A.readUint16(),this.hdr_size+=8}parse(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,A.seek(this.start+this.hdr_size)}parseFooter(A){super.parse(A)}writeHeader(A){this.size=8,super.writeHeader(A),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint16(this.data_reference_index)}writeFooter(A){if(this.boxes)for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A),this.size+=this.boxes[t].size;d.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}write(A){this.writeHeader(A),A.writeUint8Array(this.data),this.size+=this.data.length,d.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},st.registryId=Symbol.for("SampleEntryIdentifier"),st),AC=class extends FA{},as=class extends FA{isMetadata(){return!0}},zA=class extends FA{isSubtitle(){return!0}},Xr=class extends FA{},T=class extends FA{parse(i){this.parseHeader(i),i.readUint16(),i.readUint16(),i.readUint32Array(3),this.width=i.readUint16(),this.height=i.readUint16(),this.horizresolution=i.readUint32(),this.vertresolution=i.readUint32(),i.readUint32(),this.frame_count=i.readUint16();const A=Math.min(31,i.readUint8());this.compressorname=i.readString(A),A<31&&i.readString(31-A),this.depth=i.readUint16(),i.readUint16(),this.parseFooter(i)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(i){this.writeHeader(i),this.size+=70,i.writeUint16(0),i.writeUint16(0),i.writeUint32(0),i.writeUint32(0),i.writeUint32(0),i.writeUint16(this.width),i.writeUint16(this.height),i.writeUint32(this.horizresolution),i.writeUint32(this.vertresolution),i.writeUint32(0),i.writeUint16(this.frame_count),i.writeUint8(Math.min(31,this.compressorname.length)),i.writeString(this.compressorname,void 0,31),i.writeUint16(this.depth),i.writeInt16(-1),this.writeFooter(i)}},BA=class extends FA{parse(i){var t,e;this.parseHeader(i),this.version=i.readUint16(),i.readUint16(),i.readUint32(),this.channel_count=i.readUint16(),this.samplesize=i.readUint16(),i.readUint16(),i.readUint16(),this.samplerate=i.readUint32()/65536,((e=(t=i.isofile)==null?void 0:t.ftyp)==null?void 0:e.major_brand.includes("qt"))&&(this.version===1?this.extensions=i.readUint8Array(16):this.version===2&&(this.extensions=i.readUint8Array(36))),this.parseFooter(i)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(i){this.writeHeader(i),this.size+=20,i.writeUint32(0),i.writeUint32(0),i.writeUint16(this.channel_count),i.writeUint16(this.samplesize),i.writeUint16(0),i.writeUint16(0),i.writeUint32(this.samplerate<<16),this.writeFooter(i)}},fB=class extends FA{parse(i){this.parseHeader(i),this.parseFooter(i)}write(i){this.writeHeader(i),this.writeFooter(i)}},tC=class extends Array{toString(){let i="<table class='inner-table'>";i+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",i+="<tbody>";for(let A=0;A<this.length;A++){const t=this[A];i+="<tr>",i+="<td>"+t.length+"</td>",i+="<td>",i+=t.data.reduce(function(e,g){return e+g.toString(16).padStart(2,"0")},"0x"),i+="</td></tr>"}return i+="</tbody></table>",i}},nt,zC=(nt=class extends G{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.AVCProfileIndication=A.readUint8(),this.profile_compatibility=A.readUint8(),this.AVCLevelIndication=A.readUint8(),this.lengthSizeMinusOne=A.readUint8()&3,this.nb_SPS_nalus=A.readUint8()&31;let t=this.size-this.hdr_size-6;this.SPS=new tC;for(let e=0;e<this.nb_SPS_nalus;e++){const g=A.readUint16();this.SPS.push({length:g,data:A.readUint8Array(g)}),t-=2+g}this.nb_PPS_nalus=A.readUint8(),t--,this.PPS=new tC;for(let e=0;e<this.nb_PPS_nalus;e++){const g=A.readUint16();this.PPS.push({length:g,data:A.readUint8Array(g)}),t-=2+g}t>0&&(this.ext=A.readUint8Array(t))}write(A){this.size=7;for(let t=0;t<this.SPS.length;t++)this.size+=2+this.SPS[t].length;for(let t=0;t<this.PPS.length;t++)this.size+=2+this.PPS[t].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8(this.AVCProfileIndication),A.writeUint8(this.profile_compatibility),A.writeUint8(this.AVCLevelIndication),A.writeUint8(this.lengthSizeMinusOne+252),A.writeUint8(this.SPS.length+224);for(let t=0;t<this.SPS.length;t++)A.writeUint16(this.SPS[t].length),A.writeUint8Array(this.SPS[t].data);A.writeUint8(this.PPS.length);for(let t=0;t<this.PPS.length;t++)A.writeUint16(this.PPS[t].length),A.writeUint8Array(this.PPS[t].data);this.ext&&A.writeUint8Array(this.ext)}},nt.fourcc="avcC",nt),Bt,Qn=(Bt=class extends G{constructor(){super(...arguments),this.box_name="MediaDataBox"}},Bt.fourcc="mdat",Bt),Ct,Pr=(Ct=class extends G{constructor(){super(...arguments),this.box_name="ItemDataBox"}},Ct.fourcc="idat",Ct),Qt,$r=(Qt=class extends G{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},Qt.fourcc="free",Qt),at,Ao=(at=class extends G{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},at.fourcc="skip",at),Et,ZC=(Et=class extends D{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},Et.fourcc="hmhd",Et),rt,an=(rt=class extends D{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},rt.fourcc="nmhd",rt),ot,to=(ot=class extends D{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},ot.fourcc="iods",ot),ht,eo=(ht=class extends D{constructor(){super(...arguments),this.box_name="XMLBox"}},ht.fourcc="xml ",ht),ct,io=(ct=class extends D{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},ct.fourcc="bxml",ct),lt,go=(lt=class extends D{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},lt.fourcc="ipro",lt),dt,CB=(dt=class extends M{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},dt.fourcc="moov",dt),ft,WC=(ft=class extends M{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},ft.fourcc="trak",ft),ut,Io=(ut=class extends M{constructor(){super(...arguments),this.box_name="EditBox"}},ut.fourcc="edts",ut),wt,jC=(wt=class extends M{constructor(){super(...arguments),this.box_name="MediaBox"}},wt.fourcc="mdia",wt),Dt,OC=(Dt=class extends M{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},Dt.fourcc="minf",Dt),yt,XC=(yt=class extends M{constructor(){super(...arguments),this.box_name="DataInformationBox"}},yt.fourcc="dinf",yt),pt,PC=(pt=class extends M{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},pt.fourcc="stbl",pt),mt,QB=(mt=class extends M{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},mt.fourcc="mvex",mt),Gt,$C=(Gt=class extends M{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},Gt.fourcc="moof",Gt),Ft,AQ=(Ft=class extends M{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},Ft.fourcc="traf",Ft),St,so=(St=class extends M{constructor(){super(...arguments),this.box_name="VTTCueBox"}},St.fourcc="vttc",St),Nt,no=(Nt=class extends M{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},Nt.fourcc="mfra",Nt),Rt,Bo=(Rt=class extends M{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},Rt.fourcc="meco",Rt),Ut,Co=(Ut=class extends M{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},Ut.fourcc="hnti",Ut),kt,Qo=(kt=class extends M{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},kt.fourcc="hinf",kt),Mt,ao=(Mt=class extends M{constructor(){super(...arguments),this.box_name="SubTrackBox"}},Mt.fourcc="strk",Mt),xt,Eo=(xt=class extends M{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},xt.fourcc="strd",xt),bt,ro=(bt=class extends M{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},bt.fourcc="sinf",bt),Yt,oo=(Yt=class extends M{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},Yt.fourcc="rinf",Yt),Lt,ho=(Lt=class extends M{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},Lt.fourcc="schi",Lt),_t,co=(_t=class extends M{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},_t.fourcc="trgr",_t),Jt,lo=(Jt=class extends M{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},Jt.fourcc="udta",Jt),Ht,fo=(Ht=class extends M{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},Ht.fourcc="iprp",Ht),Kt,uo=(Kt=class extends M{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},Kt.fourcc="ipco",Kt),vt,wo=(vt=class extends M{constructor(){super(...arguments),this.box_name="GroupsListBox"}},vt.fourcc="grpl",vt),Tt,Do=(Tt=class extends M{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},Tt.fourcc="j2kH",Tt),qt,yo=(qt=class extends M{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},qt.fourcc="etyp",qt),Vt,po=(Vt=class extends M{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},Vt.fourcc="povd",Vt),zt,tQ=(zt=class extends D{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const g=wA(A,!1,this.size-(A.getPosition()-this.start));if(g.code===EA){const I=g.box;this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;d.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},zt.fourcc="dref",zt),Zt,eQ=(Zt=class extends D{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(A){this.parseFullHeader(A),this.extended_language=A.readString(this.size-this.hdr_size)}write(A){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(A),A.writeString(this.extended_language)}},Zt.fourcc="elng",Zt),Wt,iQ=(Wt=class extends G{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},Wt.fourcc="ftyp",Wt),jt,gQ=(jt=class extends D{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(A){if(this.parseFullHeader(A),this.version===0&&(A.readUint32(),this.handler=A.readString(4),A.readUint32Array(3),!this.isEndOfBox(A))){const t=this.start+this.size-A.getPosition();this.name=A.readCString();const e=this.start+this.size-1;A.seek(e),A.readUint8()!==0&&t>1&&(d.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(A){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(A),A.writeUint32(0),A.writeString(this.handler,void 0,4),A.writeUint32Array([0,0,0]),A.writeCString(this.name)}},jt.fourcc="hdlr",jt),Ot,IQ=(Ot=class extends G{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8();let t=A.readUint8();this.general_profile_space=t>>6,this.general_tier_flag=(t&32)>>5,this.general_profile_idc=t&31,this.general_profile_compatibility=A.readUint32(),this.general_constraint_indicator=A.readUint8Array(6),this.general_level_idc=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3,this.chroma_format_idc=A.readUint8()&3,this.bit_depth_luma_minus8=A.readUint8()&7,this.bit_depth_chroma_minus8=A.readUint8()&7,this.avgFrameRate=A.readUint16(),t=A.readUint8(),this.constantFrameRate=t>>6,this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let g=0;g<e;g++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}write(A){this.size=23;for(let t=0;t<this.nalu_arrays.length;t++){this.size+=3;for(let e=0;e<this.nalu_arrays[t].length;e++)this.size+=2+this.nalu_arrays[t][e].data.length}this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),A.writeUint32(this.general_profile_compatibility),A.writeUint8Array(this.general_constraint_indicator),A.writeUint8(this.general_level_idc),A.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),A.writeUint8(this.parallelismType+252),A.writeUint8(this.chroma_format_idc+252),A.writeUint8(this.bit_depth_luma_minus8+248),A.writeUint8(this.bit_depth_chroma_minus8+248),A.writeUint16(this.avgFrameRate),A.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),A.writeUint8(this.nalu_arrays.length);for(let t=0;t<this.nalu_arrays.length;t++){A.writeUint8((this.nalu_arrays[t].completeness<<7)+this.nalu_arrays[t].nalu_type),A.writeUint16(this.nalu_arrays[t].length);for(let e=0;e<this.nalu_arrays[t].length;e++)A.writeUint16(this.nalu_arrays[t][e].data.length),A.writeUint8Array(this.nalu_arrays[t][e].data)}}},Ot.fourcc="hvcC",Ot),Xt,sQ=(Xt=class extends D{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.parseLanguage(A),A.readUint16()}write(A){const t=this.modification_time>X||this.creation_time>X||this.duration>X||this.version===1;this.version=t?1:0,this.size=20,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint16(this.language),A.writeUint16(0)}},Xt.fourcc="mdhd",Xt),Pt,nQ=(Pt=class extends D{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(d.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=A.readUint64():this.fragment_duration=A.readUint32()}write(A){const t=this.fragment_duration>X||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.fragment_duration):A.writeUint32(this.fragment_duration)}},Pt.fourcc="mehd",Pt),$t,mo=($t=class extends D{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(A){if(this.parseFullHeader(A),(this.version===0||this.version===1)&&(this.item_ID=A.readUint16(),this.item_protection_index=A.readUint16(),this.item_name=A.readCString(),this.content_type=A.readCString(),this.isEndOfBox(A)||(this.content_encoding=A.readCString())),this.version===1){this.extension_type=A.readString(4),d.warn("BoxParser","Cannot parse extension type"),A.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=A.readUint16():this.version===3&&(this.item_ID=A.readUint32()),this.item_protection_index=A.readUint16(),this.item_type=A.readString(4),this.item_name=A.readCString(),this.item_type==="mime"?(this.content_type=A.readCString(),this.content_encoding=A.readCString()):this.item_type==="uri "&&(this.item_uri_type=A.readCString()))}},$t.fourcc="infe",$t),Ae,Go=(Ae=class extends D{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(A){this.parseFullHeader(A),this.version===0?this.entry_count=A.readUint16():this.entry_count=A.readUint32(),this.item_infos=[];for(let t=0;t<this.entry_count;t++){const e=wA(A,!1,this.size-(A.getPosition()-this.start));if(e.code===EA){const g=e.box;g.type==="infe"?this.item_infos[t]=g:d.error("BoxParser","Expected 'infe' box, got "+e.box.type,A.isofile)}else return}}},Ae.fourcc="iinf",Ae),te,Fo=(te=class extends D{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(A){this.parseFullHeader(A);let t;t=A.readUint8(),this.offset_size=t>>4&15,this.length_size=t&15,t=A.readUint8(),this.base_offset_size=t>>4&15,this.version===1||this.version===2?this.index_size=t&15:this.index_size=0,this.items=[];let e=0;if(this.version<2)e=A.readUint16();else if(this.version===2)e=A.readUint32();else throw new Error("version of iloc box not supported");for(let g=0;g<e;g++){let I=0,s=0,n=0;if(this.version<2)I=A.readUint16();else if(this.version===2)I=A.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?s=A.readUint16()&15:s=0;const B=A.readUint16();switch(this.base_offset_size){case 0:n=0;break;case 4:n=A.readUint32();break;case 8:n=A.readUint64();break;default:throw new Error("Error reading base offset size")}const C=[],Q=A.readUint16();for(let a=0;a<Q;a++){let r=0,E=0,o=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:r=0;break;case 4:r=A.readUint32();break;case 8:r=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:E=0;break;case 4:E=A.readUint32();break;case 8:E=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:o=0;break;case 4:o=A.readUint32();break;case 8:o=A.readUint64();break;default:throw new Error("Error reading extent index")}C.push({extent_index:r,extent_length:o,extent_offset:E})}this.items.push({base_offset:n,construction_method:s,item_ID:I,data_reference_index:B,extents:C})}}},te.fourcc="iloc",te),So={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},bA,No=(bA=class extends D{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(A){for(this.parseFullHeader(A),this.references=[];A.getPosition()<this.start+this.size;){const t=wA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===EA){let e="Unknown item reference";bA.allowed_types.includes(t.type)?e=So[t.type]:d.warn("BoxParser",`Unknown item reference type: '${t.type}'`);const g=this.version===0?new Hr(t.type,t.size,e,t.hdr_size,t.start):new Kr(t.type,t.size,e,t.hdr_size,t.start);g.write===G.prototype.write&&g.type!=="mdat"&&(d.warn("BoxParser",g.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),g.parseDataAndRewind(A)),g.parse(A),this.references.push(g)}else return}}},bA.fourcc="iref",bA.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],bA),ee,Ro=(ee=class extends D{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(A){this.parseFullHeader(A),this.version===0?this.item_id=A.readUint16():this.item_id=A.readUint32()}},ee.fourcc="pitm",ee),ie,Uo=(ie=class extends D{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(A){const t=A.getPosition();if(this.size>8){switch(A.readUint32(),A.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}A.seek(t)}this.isQT||this.parseFullHeader(A),M.prototype.parse.call(this,A)}},ie.fourcc="meta",ie),ge,BQ=(ge=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(A){this.parseFullHeader(A),this.sequence_number=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.sequence_number)}},ge.fourcc="mfhd",ge),Ie,CQ=(Ie=class extends D{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.rate=A.readUint32(),this.volume=A.readUint16()>>8,A.readUint16(),A.readUint32Array(2),this.matrix=A.readInt32Array(9),A.readUint32Array(6),this.next_track_id=A.readUint32()}write(A){const t=this.modification_time>X||this.creation_time>X||this.duration>X||this.version===1;this.version=t?1:0,this.size=96,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint32(this.rate),A.writeUint16(this.volume<<8),A.writeUint16(0),A.writeUint32(0),A.writeUint32(0),A.writeInt32Array(this.matrix),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(this.next_track_id)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"timescale: "+this.timescale),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"rate: "+this.rate),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"next_track_id: "+this.next_track_id)}},Ie.fourcc="mvhd",Ie),se,ko=(se=class extends as{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},se.fourcc="mett",se),ne,Mo=(ne=class extends as{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.parseFooter(A)}},ne.fourcc="metx",ne),Be,xo=(Be=class extends G{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(A){let t=A.readUint8();if((t>>7&1)!==1){d.error("BoxParser","av1C marker problem",A.isofile);return}if(this.version=t&127,this.version!==1){d.error("BoxParser","av1C version "+this.version+" not supported",A.isofile);return}if(t=A.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=t&31,t=A.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=t&3,t=A.readUint8(),this.reserved_1=t>>5&7,this.reserved_1!==0){d.error("BoxParser","av1C reserved_1 parsing problem",A.isofile);return}if(this.initial_presentation_delay_present=t>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=t&15;else if(this.reserved_2=t&15,this.reserved_2!==0){d.error("BoxParser","av1C reserved_2 parsing problem",A.isofile);return}const e=this.size-this.hdr_size-4;this.configOBUs=A.readUint8Array(e)}},Be.fourcc="av1C",Be),Ce,bo=(Ce=class extends D{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in cn){const e=new cn.MPEG4DescriptorParser;this.esd=e.parseOneDescriptor(new sA(t.buffer,0))}}},Ce.fourcc="esds",Ce),Qe,Yo=(Qe=class extends D{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(A){if(this.parseFullHeader(A),this.version===1){this.profile=A.readUint8(),this.level=A.readUint8();const t=A.readUint8();this.bitDepth=t>>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=t&1,this.colourPrimaries=A.readUint8(),this.transferCharacteristics=A.readUint8(),this.matrixCoefficients=A.readUint8(),this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}else{this.profile=A.readUint8(),this.level=A.readUint8();let t=A.readUint8();this.bitDepth=t>>4&15,this.colorSpace=t&15,t=A.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=t&1,this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}}},Qe.fourcc="vpcC",Qe),ae,Lo=(ae=class extends D{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(A){this.parseFullHeader(A);const t={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(s){this.held_bits=s.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(s){this.held_bits=s.readUint16(),this.num_held_bits=16},extract_bits:function(s){const n=this.held_bits>>this.num_held_bits-s&(1<<s)-1;return this.num_held_bits-=s,n}};if(t.stream_read_1_bytes(A),t.extract_bits(5),this.lengthSizeMinusOne=t.extract_bits(2),this.ptl_present_flag=t.extract_bits(1),this.ptl_present_flag){t.stream_read_2_bytes(A),this.ols_idx=t.extract_bits(9),this.num_sublayers=t.extract_bits(3),this.constant_frame_rate=t.extract_bits(2),this.chroma_format_idc=t.extract_bits(2),t.stream_read_1_bytes(A),this.bit_depth_minus8=t.extract_bits(3),t.extract_bits(5);{if(t.stream_read_2_bytes(A),t.extract_bits(2),this.num_bytes_constraint_info=t.extract_bits(6),this.general_profile_idc=t.extract_bits(7),this.general_tier_flag=t.extract_bits(1),this.general_level_idc=A.readUint8(),t.stream_read_1_bytes(A),this.ptl_frame_only_constraint_flag=t.extract_bits(1),this.ptl_multilayer_enabled_flag=t.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let s=0;s<this.num_bytes_constraint_info-1;s++){const n=t.extract_bits(6);t.stream_read_1_bytes(A);const B=t.extract_bits(2);this.general_constraint_info[s]=n<<2|B}this.general_constraint_info[this.num_bytes_constraint_info-1]=t.extract_bits(6)}else t.extract_bits(6);if(this.num_sublayers>1){t.stream_read_1_bytes(A),this.ptl_sublayer_present_mask=0;for(let s=this.num_sublayers-2;s>=0;--s){const n=t.extract_bits(1);this.ptl_sublayer_present_mask|=n<<s}for(let s=this.num_sublayers;s<=8&&this.num_sublayers>1;++s)t.extract_bits(1);this.sublayer_level_idc=[];for(let s=this.num_sublayers-2;s>=0;--s)this.ptl_sublayer_present_mask&1<<s&&(this.sublayer_level_idc[s]=A.readUint8())}if(this.ptl_num_sub_profiles=A.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let s=0;s<this.ptl_num_sub_profiles;s++)this.general_sub_profile_idc.push(A.readUint32())}this.max_picture_width=A.readUint16(),this.max_picture_height=A.readUint16(),this.avg_frame_rate=A.readUint16()}const e=12,g=13;this.nalu_arrays=[];const I=A.readUint8();for(let s=0;s<I;s++){const n=[];this.nalu_arrays.push(n),t.stream_read_1_bytes(A),n.completeness=t.extract_bits(1),t.extract_bits(2),n.nalu_type=t.extract_bits(5);let B=1;n.nalu_type!==g&&n.nalu_type!==e&&(B=A.readUint16());for(let C=0;C<B;C++){const Q=A.readUint16();n.push({data:A.readUint8Array(Q),length:Q})}}}},ae.fourcc="vvcC",ae),Ee,_o=(Ee=class extends G{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(A){if(this.colour_type=A.readString(4),this.colour_type==="nclx"){this.colour_primaries=A.readUint16(),this.transfer_characteristics=A.readUint16(),this.matrix_coefficients=A.readUint16();const t=A.readUint8();this.full_range_flag=t>>7}else this.colour_type==="rICC"?this.ICC_profile=A.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=A.readUint8Array(this.size-4))}},Ee.fourcc="colr",Ee);function it(i,A){let t=Number(i).toString(16);for(A=typeof A=="undefined"?2:A;t.length<A;)t="0"+t;return t}var un=class extends T{getCodec(){const i=super.getCodec();return this.avcC?`${i}.${it(this.avcC.AVCProfileIndication)}${it(this.avcC.profile_compatibility)}${it(this.avcC.AVCLevelIndication)}`:i}},re,Jo=(re=class extends un{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},re.fourcc="avc1",re),oe,Ho=(oe=class extends un{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},oe.fourcc="avc2",oe),he,Ko=(he=class extends un{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},he.fourcc="avc3",he),ce,vo=(ce=class extends un{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},ce.fourcc="avc4",ce),le,To=(le=class extends T{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const A=super.getCodec(),t=this.av1C.seq_level_idx_0,e=t<10?"0"+t:t;let g;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?g=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(g=this.av1C.high_bitdepth===1?"10":"08"),A+"."+this.av1C.seq_profile+"."+e+(this.av1C.seq_tier_0?"H":"M")+"."+g}},le.fourcc="av01",le),de,qo=(de=class extends T{},de.fourcc="dav1",de),wn=class extends T{getCodec(){let i=super.getCodec();if(this.hvcC){switch(i+=".",this.hvcC.general_profile_space){case 0:i+="";break;case 1:i+="A";break;case 2:i+="B";break;case 3:i+="C";break}i+=this.hvcC.general_profile_idc,i+=".";let A=this.hvcC.general_profile_compatibility,t=0;for(let I=0;I<32&&(t|=A&1,I!==31);I++)t<<=1,A>>=1;i+=it(t,0),i+=".",this.hvcC.general_tier_flag===0?i+="L":i+="H",i+=this.hvcC.general_level_idc;let e=!1,g="";for(let I=5;I>=0;I--)(this.hvcC.general_constraint_indicator[I]||e)&&(g="."+it(this.hvcC.general_constraint_indicator[I],0)+g,e=!0);i+=g}return i}},fe,Vo=(fe=class extends wn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},fe.fourcc="hvc1",fe),ue,zo=(ue=class extends wn{},ue.fourcc="hvc2",ue),we,Zo=(we=class extends wn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},we.fourcc="hev1",we),De,Wo=(De=class extends wn{},De.fourcc="hev2",De),ye,jo=(ye=class extends T{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},ye.fourcc="hvt1",ye),pe,Oo=(pe=class extends T{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},pe.fourcc="lhe1",pe),me,Xo=(me=class extends T{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},me.fourcc="lhv1",me),Ge,Po=(Ge=class extends T{},Ge.fourcc="dvh1",Ge),Fe,$o=(Fe=class extends T{},Fe.fourcc="dvhe",Fe),QQ=class extends T{getCodec(){let i=super.getCodec();if(this.vvcC){i+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?i+=".H":i+=".L",i+=this.vvcC.general_level_idc;let A="";if(this.vvcC.general_constraint_info){const t=[];let e=0;e|=this.vvcC.ptl_frame_only_constraint_flag<<7,e|=this.vvcC.ptl_multilayer_enabled_flag<<6;let g;for(let I=0;I<this.vvcC.general_constraint_info.length;++I)e|=this.vvcC.general_constraint_info[I]>>2&63,t.push(e),e&&(g=I),e=this.vvcC.general_constraint_info[I]>>2&3;if(g===void 0)A=".CA";else{A=".C";const I="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let s=0,n=0;for(let B=0;B<=g;++B)for(s=s<<8|t[B],n+=8;n>=5;){const C=s>>n-5&31;A+=I[C],n-=5,s&=(1<<n)-1}n&&(s<<=5-n,A+=I[s&31])}}i+=A}return i}},Se,Ah=(Se=class extends QQ{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Se.fourcc="vvc1",Se),Ne,th=(Ne=class extends QQ{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ne.fourcc="vvi1",Ne),Re,eh=(Re=class extends T{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Re.fourcc="vvs1",Re),Ue,ih=(Ue=class extends T{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},Ue.fourcc="vvcN",Ue),aQ=class extends T{getCodec(){const i=super.getCodec();let A=this.vpcC.level;A===0&&(A="00");let t=this.vpcC.bitDepth;return t===8&&(t="08"),`${i}.0${this.vpcC.profile}.${A}.${t}`}},ke,gh=(ke=class extends aQ{},ke.fourcc="vp08",ke),Me,Ih=(Me=class extends aQ{},Me.fourcc="vp09",Me),xe,sh=(xe=class extends T{},xe.fourcc="avs3",xe),be,nh=(be=class extends T{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},be.fourcc="j2ki",be),Ye,Bh=(Ye=class extends T{},Ye.fourcc="mjp2",Ye),Le,Ch=(Le=class extends T{},Le.fourcc="mjpg",Le),_e,Qh=(_e=class extends T{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},_e.fourcc="uncv",_e),Je,ah=(Je=class extends T{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},Je.fourcc="mp4v",Je),He,Eh=(He=class extends BA{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const A=super.getCodec();if(this.esds&&this.esds.esd){const t=this.esds.esd.getOTI(),e=this.esds.esd.getAudioConfig();return A+"."+it(t)+(e?"."+e:"")}else return A}},He.fourcc="mp4a",He),Ke,rh=(Ke=class extends BA{},Ke.fourcc="m4ae",Ke),ve,oh=(ve=class extends BA{},ve.fourcc="ac-3",ve),Te,hh=(Te=class extends BA{},Te.fourcc="ac-4",Te),qe,ch=(qe=class extends BA{},qe.fourcc="ec-3",qe),Ve,lh=(Ve=class extends BA{},Ve.fourcc="Opus",Ve),ze,dh=(ze=class extends BA{},ze.fourcc="mha1",ze),Ze,fh=(Ze=class extends BA{},Ze.fourcc="mha2",Ze),We,uh=(We=class extends BA{},We.fourcc="mhm1",We),je,wh=(je=class extends BA{},je.fourcc="mhm2",je),Oe,Dh=(Oe=class extends BA{},Oe.fourcc="fLaC",Oe),Xe,yh=(Xe=class extends T{},Xe.fourcc="encv",Xe),Pe,ph=(Pe=class extends BA{},Pe.fourcc="enca",Pe),$e,mh=($e=class extends zA{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},$e.fourcc="encu",$e),Ai,Gh=(Ai=class extends fB{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Ai.fourcc="encs",Ai),ti,Fh=(ti=class extends fB{},ti.fourcc="mp4s",ti),ei,Sh=(ei=class extends Xr{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ei.fourcc="enct",ei),ii,Nh=(ii=class extends as{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ii.fourcc="encm",ii),gi,Rh=(gi=class extends T{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},gi.fourcc="resv",gi),Ii,Uh=(Ii=class extends zA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},Ii.fourcc="sbtt",Ii),si,EQ=(si=class extends zA{parse(A){this.parseHeader(A),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.auxiliary_mime_types=A.readCString(),this.parseFooter(A)}write(A){this.writeHeader(A),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,A.writeCString(this.namespace),A.writeCString(this.schema_location),A.writeCString(this.auxiliary_mime_types),this.writeFooter(A)}},si.fourcc="stpp",si),ni,kh=(ni=class extends zA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}getCodec(){const A=super.getCodec();return this.mime_format?A+"."+this.mime_format:A}},ni.fourcc="stxt",ni),Bi,Mh=(Bi=class extends zA{parse(A){this.parseHeader(A),this.displayFlags=A.readUint32(),this.horizontal_justification=A.readInt8(),this.vertical_justification=A.readInt8(),this.bg_color_rgba=A.readUint8Array(4),this.box_record=A.readInt16Array(4),this.style_record=A.readUint8Array(12),this.parseFooter(A)}},Bi.fourcc="tx3g",Bi),Ci,xh=(Ci=class extends as{parse(A){this.parseHeader(A),this.parseFooter(A)}},Ci.fourcc="wvtt",Ci),Qi,bh=(Qi=class extends D{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),this.version===1?this.grouping_type_parameter=A.readUint32():this.grouping_type_parameter=0,this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++)this.entries.push({sample_count:A.readInt32(),group_description_index:A.readInt32()})}write(A){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.grouping_type_parameter),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];A.writeInt32(e.sample_count),A.writeInt32(e.group_description_index)}}},Qi.fourcc="sbgp",Qi),ai,Yh=(ai=class extends D{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(A){this.parseFullHeader(A);const t=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let e=0;e<t;e++){const g=A.readUint8();this.is_leading[e]=g>>6,this.sample_depends_on[e]=g>>4&3,this.sample_is_depended_on[e]=g>>2&3,this.sample_has_redundancy[e]=g&3}}},ai.fourcc="sdtp",ai),Ei,Lh=(Ei=class extends D{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),d.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=A.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=A.readUint32()),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){let g;this.grouping_type in nA.sampleGroupEntry?g=new nA.sampleGroupEntry[this.grouping_type](this.grouping_type):g=new Z(this.grouping_type),this.entries.push(g),this.version===1?this.default_length===0?g.description_length=A.readUint32():g.description_length=this.default_length:g.description_length=this.default_length,g.write===Z.prototype.write&&(d.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),g.data=A.readUint8Array(g.description_length),A.seek(A.getPosition()-g.description_length)),g.parse(A)}}write(A){this.flags=0,this.size=12;for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=e.data.length)}this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.default_length),this.version>=2&&A.writeUint32(this.default_sample_description_index),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&this.default_length===0&&A.writeUint32(e.description_length),e.write(A)}}},Ei.fourcc="sgpd",Ei),ri,_h=(ri=class extends D{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(A){this.parseFullHeader(A),this.reference_ID=A.readUint32(),this.timescale=A.readUint32(),this.version===0?(this.earliest_presentation_time=A.readUint32(),this.first_offset=A.readUint32()):(this.earliest_presentation_time=A.readUint64(),this.first_offset=A.readUint64()),A.readUint16(),this.references=[];const t=A.readUint16();for(let e=0;e<t;e++){const g=A.readUint32(),I=A.readUint32(),s=A.readUint32();this.references.push({reference_type:g>>31&1,referenced_size:g&2147483647,subsegment_duration:I,starts_with_SAP:s>>31&1,SAP_type:s>>28&7,SAP_delta_time:s&268435455})}}write(A){const t=this.earliest_presentation_time>X||this.first_offset>X||this.version===1;this.version=t?1:0,this.size=12+12*this.references.length,this.size+=t?16:8,this.flags=0,this.writeHeader(A),A.writeUint32(this.reference_ID),A.writeUint32(this.timescale),t?(A.writeUint64(this.earliest_presentation_time),A.writeUint64(this.first_offset)):(A.writeUint32(this.earliest_presentation_time),A.writeUint32(this.first_offset)),A.writeUint16(0),A.writeUint16(this.references.length);for(let e=0;e<this.references.length;e++){const g=this.references[e];A.writeUint32(g.reference_type<<31|g.referenced_size),A.writeUint32(g.subsegment_duration),A.writeUint32(g.starts_with_SAP<<31|g.SAP_type<<28|g.SAP_delta_time)}}},ri.fourcc="sidx",ri),oi,rQ=(oi=class extends D{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.balance=A.readUint16(),A.readUint16()}write(A){this.version=0,this.size=4,this.writeHeader(A),A.writeUint16(this.balance),A.writeUint16(0)}},oi.fourcc="smhd",oi),hi,oQ=(hi=class extends D{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length),A.writeUint32Array(this.chunk_offsets)}unpack(A){for(let t=0;t<this.chunk_offsets.length;t++)A[t].offset=this.chunk_offsets[t]}},hi.fourcc="stco",hi),ci,hQ=(ci=class extends D{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},ci.fourcc="sthd",ci),li,cQ=(li=class extends D{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let e=0;e<t;e++)this.first_chunk.push(A.readUint32()),this.samples_per_chunk.push(A.readUint32()),this.sample_description_index.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(A),A.writeUint32(this.first_chunk.length);for(let t=0;t<this.first_chunk.length;t++)A.writeUint32(this.first_chunk[t]),A.writeUint32(this.samples_per_chunk[t]),A.writeUint32(this.sample_description_index[t])}unpack(A){let t=0,e=0;for(let g=0;g<this.first_chunk.length;g++)for(let I=0;I<(g+1<this.first_chunk.length?this.first_chunk[g+1]:1/0);I++){e++;for(let s=0;s<this.samples_per_chunk[g];s++){if(A[t])A[t].description_index=this.sample_description_index[g],A[t].chunk_index=e;else return;t++}}}},li.fourcc="stsc",li),di,lQ=(di=class extends D{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=1;e<=t;e++){const g=wA(A,!0,this.size-(A.getPosition()-this.start));if(g.code===EA){let I;g.type in nA.sampleEntry?(I=new nA.sampleEntry[g.type](g.size),I.hdr_size=g.hdr_size,I.start=g.start):(d.warn("BoxParser",`Unknown sample entry type: '${g.type}'`),I=new FA(g.size,g.hdr_size,g.start),I.type=g.type),I.write===FA.prototype.write&&(d.info("BoxParser","SampleEntry "+I.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),I.parseDataAndRewind(A)),I.parse(A),this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=0,this.writeHeader(A),A.writeUint32(this.entries.length),this.size+=4;for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;d.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},di.fourcc="stsd",di),fi,dQ=(fi=class extends D{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.sample_size=A.readUint32(),this.sample_count=A.readUint32();for(let t=0;t<this.sample_count;t++)this.sample_size===0?this.sample_sizes.push(A.readUint32()):this.sample_sizes[t]=this.sample_size}}write(A){let t=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let e=0;for(;e+1<this.sample_sizes.length;)if(this.sample_sizes[e+1]!==this.sample_sizes[0]){t=!1;break}else e++}else t=!1;this.size=8,t||(this.size+=4*this.sample_sizes.length),this.writeHeader(A),t?A.writeUint32(this.sample_sizes[0]):A.writeUint32(0),A.writeUint32(this.sample_sizes.length),t||A.writeUint32Array(this.sample_sizes)}unpack(A){for(let t=0;t<this.sample_sizes.length;t++)A[t].size=this.sample_sizes[t]}},fi.fourcc="stsz",fi),ui,fQ=(ui=class extends D{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());let g=A.readInt32();g<0&&(d.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),g=1),this.sample_deltas.push(g)}}write(A){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),A.writeUint32(this.sample_deltas[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let g=0;g<this.sample_counts[e];g++)t===0?A[t].dts=0:A[t].dts=A[t-1].dts+this.sample_deltas[e],t++}},ui.fourcc="stts",ui),wi,uQ=(wi=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(A){this.parseFullHeader(A),this.version===1?this.baseMediaDecodeTime=A.readUint64():this.baseMediaDecodeTime=A.readUint32()}write(A){const t=this.baseMediaDecodeTime>X||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.baseMediaDecodeTime):A.writeUint32(this.baseMediaDecodeTime)}},wi.fourcc="tfdt",wi),Di,wQ=(Di=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(A){this.parseFullHeader(A);let t=0;this.track_id=A.readUint32(),this.size-this.hdr_size>t&&this.flags&tn?(this.base_data_offset=A.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&en?(this.default_sample_description_index=A.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&gn?(this.default_sample_duration=A.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&In?(this.default_sample_size=A.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&sn?(this.default_sample_flags=A.readUint32(),t+=4):this.default_sample_flags=0}write(A){this.version=0,this.size=4,this.flags&tn&&(this.size+=8),this.flags&en&&(this.size+=4),this.flags&gn&&(this.size+=4),this.flags&In&&(this.size+=4),this.flags&sn&&(this.size+=4),this.writeHeader(A),A.writeUint32(this.track_id),this.flags&tn&&A.writeUint64(this.base_data_offset),this.flags&en&&A.writeUint32(this.default_sample_description_index),this.flags&gn&&A.writeUint32(this.default_sample_duration),this.flags&In&&A.writeUint32(this.default_sample_size),this.flags&sn&&A.writeUint32(this.default_sample_flags)}},Di.fourcc="tfhd",Di),yi,DQ=(yi=class extends D{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint32()),A.readUint32Array(2),this.layer=A.readInt16(),this.alternate_group=A.readInt16(),this.volume=A.readInt16()>>8,A.readUint16(),this.matrix=A.readInt32Array(9),this.width=A.readUint32(),this.height=A.readUint32()}write(A){var e;const t=this.modification_time>X||this.creation_time>X||this.duration>X||this.version===1;this.version=t?1:0,this.size=80,this.size+=t?12:0,this.flags=(e=this.flags)!=null?e:3,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint32(this.duration)),A.writeUint32Array([0,0]),A.writeInt16(this.layer),A.writeInt16(this.alternate_group),A.writeInt16(this.volume<<8),A.writeInt16(0),A.writeInt32Array(this.matrix),A.writeUint32(this.width),A.writeUint32(this.height)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"track_id: "+this.track_id),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"layer: "+this.layer),A.log(A.indent+"alternate_group: "+this.alternate_group),A.log(A.indent+"width: "+this.width),A.log(A.indent+"height: "+this.height)}},yi.fourcc="tkhd",yi),pi,aB=(pi=class extends D{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(A){this.parseFullHeader(A),this.track_id=A.readUint32(),this.default_sample_description_index=A.readUint32(),this.default_sample_duration=A.readUint32(),this.default_sample_size=A.readUint32(),this.default_sample_flags=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=20,this.writeHeader(A),A.writeUint32(this.track_id),A.writeUint32(this.default_sample_description_index),A.writeUint32(this.default_sample_duration),A.writeUint32(this.default_sample_size),A.writeUint32(this.default_sample_flags)}},pi.fourcc="trex",pi),mi,yQ=(mi=class extends D{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(A){this.parseFullHeader(A);let t=0;if(this.sample_count=A.readUint32(),t+=4,this.size-this.hdr_size>t&&this.flags&Us?(this.data_offset=A.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&nn?(this.first_sample_flags=A.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(let e=0;e<this.sample_count;e++)this.flags&ks&&(this.sample_duration[e]=A.readUint32()),this.flags&Ms&&(this.sample_size[e]=A.readUint32()),this.flags&xs&&(this.sample_flags[e]=A.readUint32()),this.flags&bs&&(this.version===0?this.sample_composition_time_offset[e]=A.readUint32():this.sample_composition_time_offset[e]=A.readInt32())}write(A){this.size=4,this.flags&Us&&(this.size+=4),this.flags&nn&&(this.size+=4),this.flags&ks&&(this.size+=4*this.sample_duration.length),this.flags&Ms&&(this.size+=4*this.sample_size.length),this.flags&xs&&(this.size+=4*this.sample_flags.length),this.flags&bs&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(A),A.writeUint32(this.sample_count),this.flags&Us&&(this.data_offset_position=A.getPosition(),A.writeInt32(this.data_offset)),this.flags&nn&&A.writeUint32(this.first_sample_flags);for(let t=0;t<this.sample_count;t++)this.flags&ks&&A.writeUint32(this.sample_duration[t]),this.flags&Ms&&A.writeUint32(this.sample_size[t]),this.flags&xs&&A.writeUint32(this.sample_flags[t]),this.flags&bs&&(this.version===0?A.writeUint32(this.sample_composition_time_offset[t]):A.writeInt32(this.sample_composition_time_offset[t]))}},mi.fourcc="trun",mi),Gi,pQ=(Gi=class extends D{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(A){this.parseFullHeader(A),this.flags!==1&&(this.location=A.readCString())}write(A){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(A),this.location&&A.writeCString(this.location)}},Gi.fourcc="url ",Gi),Fi,mQ=(Fi=class extends D{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.graphicsmode=A.readUint16(),this.opcolor=A.readUint16Array(3)}write(A){this.version=0,this.size=8,this.writeHeader(A),A.writeUint16(this.graphicsmode),A.writeUint16Array(this.opcolor)}},Fi.fourcc="vmhd",Fi),Wn=class{constructor(i,A,t){this.grouping_type=i,this.grouping_type_parameter=A,this.sbgp=t,this.last_sample_in_run=-1,this.entry_index=-1}},Jh=class UA{constructor(A,t=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=t,A?(this.stream=A,this.parse()):this.stream=new Cn,this.stream.isofile=this}setSegmentOptions(A,t,e){var C,Q,a;const{sizePerSegment:g=Number.MAX_SAFE_INTEGER,rapAlignement:I=!0}=e;let s=(Q=(C=e.nbSamples)!=null?C:e.nbSamplesPerFragment)!=null?Q:1e3;const n=(a=e.nbSamplesPerFragment)!=null?a:s;if(s<=0||n<=0||g<=0){d.error("ISOFile",`Invalid segment options: nbSamples=${s}, nbSamplesPerFragment=${n}, sizePerSegment=${g}`);return}if(s<n&&(d.warn("ISOFile",`nbSamples (${s}) is less than nbSamplesPerFragment (${n}), setting nbSamples to nbSamplesPerFragment`),s=n),this.fragmentedTracks.some(r=>r.nb_samples!==s)){d.error("ISOFile",`Cannot set segment options for track ${A}: nbSamples (${s}) does not match existing tracks`);return}const B=this.getTrackById(A);if(B){const r={id:A,user:t,trak:B,segmentStream:void 0,nb_samples:s,nb_samples_per_fragment:n,size_per_segment:g,rapAlignement:I,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(r),B.nextSample=0}this.discardMdatData&&d.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(A){let t=-1;for(let e=0;e<this.fragmentedTracks.length;e++)this.fragmentedTracks[e].id===A&&(t=e);t>-1&&this.fragmentedTracks.splice(t,1)}setExtractionOptions(A,t,{nbSamples:e=1e3}={}){const g=this.getTrackById(A);g&&(this.extractedTracks.push({id:A,user:t,trak:g,nb_samples:e,samples:[]}),g.nextSample=0),this.discardMdatData&&d.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(A){let t=-1;for(let e=0;e<this.extractedTracks.length;e++)this.extractedTracks[e].id===A&&(t=e);t>-1&&this.extractedTracks.splice(t,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const t=wA(this.stream,!1);if(t.code===RA)if(this.processIncompleteBox){if(this.processIncompleteBox(t))continue;return}else return;else if(t.code===EA){const e=t.box;if(this.boxes.push(e),e.type==="uuid")this[e.uuid]!==void 0&&d.warn("ISOFile","Duplicate Box of uuid: "+e.uuid+", overriding previous occurrence"),this[e.uuid]=e;else switch(e.type){case"mdat":this.mdats.push(e),this.transferMdatData(e);break;case"moof":this.moofs.push(e);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[e.type]!==void 0?Array.isArray(this[e.type+"s"])?(d.info("ISOFile",`Found multiple boxes of type ${e.type} in ISOFile, adding to array`),this[e.type+"s"].push(e)):(d.warn("ISOFile",`Found multiple boxes of type ${e.type} but no array exists. Creating array dynamically.`),this[e.type+"s"]=[this[e.type],e]):(this[e.type]=e,Array.isArray(this[e.type+"s"])&&this[e.type+"s"].push(e));break}this.updateUsedBytes&&this.updateUsedBytes(e,t)}else if(t.code===TC){d.error("ISOFile",`Invalid data found while parsing box of type '${t.type}' at position ${t.start}. Aborting parsing.`,this);break}}}checkBuffer(A){if(!A)throw new Error("Buffer must be defined and non empty");return A.byteLength===0?(d.warn("ISOFile","Ignoring empty buffer (fileStart: "+A.fileStart+")"),this.stream.logBufferLevel(),!1):(d.info("ISOFile","Processing buffer (fileStart: "+A.fileStart+")"),A.usedBytes=0,this.stream.insertBuffer(A),this.stream.logBufferLevel(),this.stream.initialized()?!0:(d.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(A,t){let e;if(this.checkBuffer(A))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(e=this.nextSeekPosition,this.nextSeekPosition=void 0):e=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(e=this.stream.getEndFilePositionAfter(e))):this.nextParsePosition?e=this.nextParsePosition:e=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(d.info("ISOFile","Done processing buffer (fileStart: "+A.fileStart+") - next buffer to fetch should have a fileStart position of "+e),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),d.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),e}getFragmentDuration(){const A=this.getBox("mvex");if(!A)return;if(A.mehd)return{num:A.mehd.fragment_duration,den:this.moov.mvhd.timescale};const t=this.getBoxes("trak",!1);let e={num:0,den:1};for(const g of t){const I=g.samples_duration,s=g.mdia.mdhd.timescale;I&&s&&I/s>e.num/e.den&&(e={num:I,den:s})}return e}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const A=new Date("1904-01-01T00:00:00Z").getTime(),t=this.getBox("mvex")!==void 0,e={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:t,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(A+this.moov.mvhd.creation_time*1e3),modified:new Date(A+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let g=0;g<this.moov.traks.length;g++){const I=this.moov.traks[g],s=I.mdia.minf.stbl.stsd.entries[0],n=I.samples_size,B=I.mdia.mdhd.timescale,C=I.samples_duration,Q=n*8*B/C,a={samples_duration:C,bitrate:Q,size:n,timescale:B,alternate_group:I.tkhd.alternate_group,codec:s.getCodec(),created:new Date(A+I.tkhd.creation_time*1e3),cts_shift:I.mdia.minf.stbl.cslg,duration:I.mdia.mdhd.duration,id:I.tkhd.track_id,kind:I.udta&&I.udta.kinds.length?I.udta.kinds[0]:{schemeURI:"",value:""},language:I.mdia.elng?I.mdia.elng.extended_language:I.mdia.mdhd.languageString,layer:I.tkhd.layer,matrix:I.tkhd.matrix,modified:new Date(A+I.tkhd.modification_time*1e3),movie_duration:I.tkhd.duration,movie_timescale:e.timescale,name:I.mdia.hdlr.name,nb_samples:I.samples.length,references:[],track_height:I.tkhd.height/65536,track_width:I.tkhd.width/65536,volume:I.tkhd.volume};if(e.tracks.push(a),I.tref)for(let r=0;r<I.tref.references.length;r++)a.references.push({type:I.tref.references[r].type,track_ids:I.tref.references[r].track_ids});I.edts!==void 0&&I.edts.elst!==void 0&&(a.edits=I.edts.elst.entries),s instanceof BA?(a.type="audio",e.audioTracks.push(a),a.audio={sample_rate:s.getSampleRate(),channel_count:s.getChannelCount(),sample_size:s.getSampleSize()}):s instanceof T?(a.type="video",e.videoTracks.push(a),a.video={width:s.getWidth(),height:s.getHeight()}):s instanceof zA?(a.type="subtitles",e.subtitleTracks.push(a)):s instanceof AC?(a.type="metadata",e.hintTracks.push(a)):s instanceof as?(a.type="metadata",e.metadataTracks.push(a)):(a.type="metadata",e.otherTracks.push(a))}e.videoTracks&&e.videoTracks.length>0?e.mime+='video/mp4; codecs="':e.audioTracks&&e.audioTracks.length>0?e.mime+='audio/mp4; codecs="':e.mime+='application/mp4; codecs="';for(let g=0;g<e.tracks.length;g++)g!==0&&(e.mime+=","),e.mime+=e.tracks[g].codec;return e.mime+='"; profiles="',e.mime+=this.ftyp.compatible_brands.join(),e.mime+='"',e}setNextSeekPositionFromSample(A){A&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(A.offset+A.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=A.offset+A.alreadyRead)}processSamples(A){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const t=new Set;for(;t.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(e=>e.trak.nextSample<e.trak.samples.length)&&this.sampleProcessingStarted;)for(const e of this.fragmentedTracks){const g=e.trak;if(!t.has(e.id)){const I=g.nextSample<g.samples.length?this.getSample(g,g.nextSample):void 0;if(!I){this.setNextSeekPositionFromSample(g.samples[g.nextSample]),t.add(e.id);continue}e.state.accumulatedSize+=I.size;const s=g.nextSample+1,n=s-e.state.lastFragmentSampleNumber>e.nb_samples_per_fragment,B=s-e.state.lastSegmentSampleNumber>e.nb_samples;let C=n||s%e.nb_samples_per_fragment===0,Q=B||s%e.nb_samples===0,a=e.state.accumulatedSize>=e.size_per_segment;const r=!e.rapAlignement||I.is_sync,E=A||g.nextSample+1>=g.samples.length;if(E&&!r&&d.warn("ISOFile","Flushing track #"+e.id+" at sample #"+g.nextSample+" which is not a RAP, this may lead to playback issues"),C=C&&r,Q=Q&&r,a=a&&r,C||a||E){n?d.warn("ISOFile","Fragment on track #"+e.id+" is overdue, creating it with samples ["+e.state.lastFragmentSampleNumber+", "+g.nextSample+"]"):d.debug("ISOFile","Creating media fragment on track #"+e.id+" for samples ["+e.state.lastFragmentSampleNumber+", "+g.nextSample+"]");const o=this.createFragment(e.id,e.state.lastFragmentSampleNumber,g.nextSample,e.segmentStream);if(o)e.segmentStream=o,e.state.lastFragmentSampleNumber=g.nextSample+1;else{t.add(e.id);continue}}(Q||a||E)&&(B?d.warn("ISOFile","Segment on track #"+e.id+" is overdue, sending it with samples ["+Math.max(0,g.nextSample-e.nb_samples)+", "+(g.nextSample-1)+"]"):d.info("ISOFile","Sending fragmented data on track #"+e.id+" for samples ["+Math.max(0,g.nextSample-e.nb_samples)+", "+(g.nextSample-1)+"]"),d.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(e.id,e.user,e.segmentStream.buffer,g.nextSample+1,A||g.nextSample+1>=g.samples.length),e.segmentStream=void 0,e.state.accumulatedSize=0,e.state.lastSegmentSampleNumber=g.nextSample+1),g.nextSample++}}}if(this.onSamples!==void 0)for(let t=0;t<this.extractedTracks.length;t++){const e=this.extractedTracks[t],g=e.trak;for(;g.nextSample<g.samples.length&&this.sampleProcessingStarted;){d.debug("ISOFile","Exporting on track #"+e.id+" sample #"+g.nextSample);const I=this.getSample(g,g.nextSample);if(I)g.nextSample++,e.samples.push(I);else{this.setNextSeekPositionFromSample(g.samples[g.nextSample]);break}if((g.nextSample%e.nb_samples===0||g.nextSample>=g.samples.length)&&(d.debug("ISOFile","Sending samples on track #"+e.id+" for sample "+g.nextSample),this.onSamples&&this.onSamples(e.id,e.user,e.samples),e.samples=[],e!==this.extractedTracks[t]))break}}}}getBox(A){const t=this.getBoxes(A,!0);return t.length?t[0]:void 0}getBoxes(A,t){const e=[],g=I=>{I instanceof G&&I.type&&I.type===A&&e.push(I);const s=[];I.boxes&&s.push(...I.boxes),I.entries&&s.push(...I.entries),I.item_infos&&s.push(...I.item_infos),I.references&&s.push(...I.references);for(const n of s){if(e.length&&t)return;g(n)}};return g(this),e}getTrackSamplesInfo(A){const t=this.getTrackById(A);if(t)return t.samples}getTrackSample(A,t){const e=this.getTrackById(A);return this.getSample(e,t)}releaseUsedSamples(A,t){let e=0;const g=this.getTrackById(A);g.lastValidSample||(g.lastValidSample=0);for(let I=g.lastValidSample;I<t;I++)e+=this.releaseSample(g,I);d.info("ISOFile","Track #"+A+" released samples up to "+t+" (released size: "+e+", remaining: "+this.samplesDataSize+")"),g.lastValidSample=t}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){d.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(A,t,e){let g=0,I=0,s;if(e.samples.length===0)return d.info("ISOFile","No sample in track, cannot seek! Using time "+d.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let B=0;B<e.samples.length;B++){const C=e.samples[B];if(B===0)I=0,s=C.timescale;else if(C.cts>A*C.timescale){I=B-1;break}t&&C.is_sync&&(g=B)}for(t&&(I=g),A=e.samples[I].cts,e.nextSample=I;e.samples[I].alreadyRead===e.samples[I].size&&e.samples[I+1];)I++;const n=e.samples[I].offset+e.samples[I].alreadyRead;return d.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+e.nextSample+" on track "+e.tkhd.track_id+", time "+d.getDurationString(A,s)+" and offset: "+n),{offset:n,time:A/s}}getTrackDuration(A){if(!A.samples)return 1/0;const t=A.samples[A.samples.length-1];return(t.cts+t.duration)/t.timescale}seek(A,t){const e=this.moov;let g={offset:1/0,time:1/0};if(this.moov){for(let I=0;I<e.traks.length;I++){const s=e.traks[I];if(A>this.getTrackDuration(s))continue;const n=this.seekTrack(A,t,s);n.offset<g.offset&&(g.offset=n.offset),n.time<g.time&&(g.time=n.time)}return d.info("ISOFile","Seeking at time "+d.getDurationString(g.time,1)+" needs a buffer with a fileStart position of "+g.offset),g.offset===1/0?g={offset:this.nextParsePosition,time:0}:g.offset=this.stream.getEndFilePositionAfter(g.offset),d.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+g.offset),g}else throw new Error("Cannot seek: moov not received!")}equal(A){let t=0;for(;t<this.boxes.length&&t<A.boxes.length;){const e=this.boxes[t],g=A.boxes[t];if(!VC(e,g))return!1;t++}return!0}write(A){for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A)}createFragment(A,t,e,g){const I=[];for(let Q=t;Q<=e;Q++){const a=this.getTrackById(A),r=this.getSample(a,Q);if(!r){this.setNextSeekPositionFromSample(a.samples[Q]);return}I.push(r)}const s=g||new sA,n=this.createMoof(I);n.write(s),n.trafs[0].truns[0].data_offset=n.size+8,d.debug("MP4Box","Adjusting data_offset with new value "+n.trafs[0].truns[0].data_offset),s.adjustUint32(n.trafs[0].truns[0].data_offset_position,n.trafs[0].truns[0].data_offset);const B=new Qn;B.stream=new Cn;let C=0;for(const Q of I)if(Q.data){const a=MA.fromArrayBuffer(Q.data.buffer,C);B.stream.insertBuffer(a),C+=Q.data.byteLength}return B.write(s),s}static writeInitializationSegment(A,t,e){var s,n;d.debug("ISOFile","Generating initialization segment");const g=new sA;A.write(g);const I=t.addBox(new QB);if(e){const B=I.addBox(new nQ);B.fragment_duration=e}for(let B=0;B<t.traks.length;B++){const C=I.addBox(new aB);C.track_id=t.traks[B].tkhd.track_id,C.default_sample_description_index=1,C.default_sample_duration=(n=(s=t.traks[B].samples[0])==null?void 0:s.duration)!=null?n:0,C.default_sample_size=0,C.default_sample_flags=65536}return t.write(g),g.buffer}save(A){const t=new sA;return t.isofile=this,this.write(t),t.save(A)}getBuffer(){const A=new sA;return A.isofile=this,this.write(A),A}initializeSegmentation(){var t,e;this.onSegment||d.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const A=new CB;A.addBox(this.moov.mvhd);for(let g=0;g<this.fragmentedTracks.length;g++){const I=this.getTrackById(this.fragmentedTracks[g].id);if(!I){d.warn("ISOFile",`Track with id ${this.fragmentedTracks[g].id} not found, skipping fragmentation initialization`);continue}A.addBox(I)}return{tracks:A.traks.map((g,I)=>({id:g.tkhd.track_id,user:this.fragmentedTracks[I].user})),buffer:UA.writeInitializationSegment(this.ftyp,A,(e=(t=this.moov)==null?void 0:t.mvex)==null?void 0:e.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let A=0;A<this.moov.traks.length;A++){const t=this.moov.traks[A];t.tkhd.duration=0,t.mdia.mdhd.duration=0;const e=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64;e.chunk_offsets=[];const g=t.mdia.minf.stbl.stsc;g.first_chunk=[],g.samples_per_chunk=[],g.sample_description_index=[];const I=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2;I.sample_sizes=[];const s=t.mdia.minf.stbl.stts;s.sample_counts=[],s.sample_deltas=[];const n=t.mdia.minf.stbl.ctts;n&&(n.sample_counts=[],n.sample_offsets=[]);const B=t.mdia.minf.stbl.stss,C=t.mdia.minf.stbl.boxes.indexOf(B);C!==-1&&(t.mdia.minf.stbl.boxes[C]=void 0)}}static initSampleGroups(A,t,e,g,I){t&&(t.sample_groups_info=[]),A.sample_groups_info||(A.sample_groups_info=[]);for(let s=0;s<e.length;s++){const n=e[s].grouping_type+"/"+e[s].grouping_type_parameter,B=new Wn(e[s].grouping_type,e[s].grouping_type_parameter,e[s]);t&&(t.sample_groups_info[n]=B),A.sample_groups_info[n]||(A.sample_groups_info[n]=B);for(let C=0;C<g.length;C++)g[C].grouping_type===e[s].grouping_type&&(B.description=g[C],B.description.used=!0);if(I)for(let C=0;C<I.length;C++)I[C].grouping_type===e[s].grouping_type&&(B.fragment_description=I[C],B.fragment_description.used=!0,B.is_fragment=!0)}if(t){if(I){for(let s=0;s<I.length;s++)if(!I[s].used&&I[s].version>=2){const n=I[s].grouping_type+"/0",B=new Wn(I[s].grouping_type,0);B.is_fragment=!0,t.sample_groups_info[n]||(t.sample_groups_info[n]=B)}}}else for(let s=0;s<g.length;s++)if(!g[s].used&&g[s].version>=2){const n=g[s].grouping_type+"/0",B=new Wn(g[s].grouping_type,0);A.sample_groups_info[n]||(A.sample_groups_info[n]=B)}}static setSampleGroupProperties(A,t,e,g){t.sample_groups=[];for(const I in g)if(t.sample_groups[I]={grouping_type:g[I].grouping_type,grouping_type_parameter:g[I].grouping_type_parameter},e>=g[I].last_sample_in_run&&(g[I].last_sample_in_run<0&&(g[I].last_sample_in_run=0),g[I].entry_index++,g[I].entry_index<=g[I].sbgp.entries.length-1&&(g[I].last_sample_in_run+=g[I].sbgp.entries[g[I].entry_index].sample_count)),g[I].entry_index<=g[I].sbgp.entries.length-1?t.sample_groups[I].group_description_index=g[I].sbgp.entries[g[I].entry_index].group_description_index:t.sample_groups[I].group_description_index=-1,t.sample_groups[I].group_description_index!==0){let s;if(g[I].fragment_description?s=g[I].fragment_description:s=g[I].description,t.sample_groups[I].group_description_index>0){let n;t.sample_groups[I].group_description_index>65535?n=(t.sample_groups[I].group_description_index>>16)-1:n=t.sample_groups[I].group_description_index-1,s&&n>=0&&(t.sample_groups[I].description=s.entries[n])}else s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[I].description=s.entries[s.default_group_description_index-1])}}static process_sdtp(A,t,e){t&&(A?(t.is_leading=A.is_leading[e],t.depends_on=A.sample_depends_on[e],t.is_depended_on=A.sample_is_depended_on[e],t.has_redundancy=A.sample_has_redundancy[e]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))}buildSampleLists(){for(let A=0;A<this.moov.traks.length;A++)this.buildTrakSampleLists(this.moov.traks[A])}buildTrakSampleLists(A){let t,e,g,I,s,n;A.samples=[],A.samples_duration=0,A.samples_size=0;const B=A.mdia.minf.stbl.stco||A.mdia.minf.stbl.co64,C=A.mdia.minf.stbl.stsc,Q=A.mdia.minf.stbl.stsz||A.mdia.minf.stbl.stz2,a=A.mdia.minf.stbl.stts,r=A.mdia.minf.stbl.ctts,E=A.mdia.minf.stbl.stss,o=A.mdia.minf.stbl.stsd,h=A.mdia.minf.stbl.subs,c=A.mdia.minf.stbl.stdp,f=A.mdia.minf.stbl.sbgps,l=A.mdia.minf.stbl.sgpds;let u=-1,w=-1,y=-1,p=-1,m=0,N=0,R=0;if(UA.initSampleGroups(A,void 0,f,l),typeof Q!="undefined"){for(t=0;t<Q.sample_sizes.length;t++){const S={number:t,track_id:A.tkhd.track_id,timescale:A.mdia.mdhd.timescale,alreadyRead:0,size:Q.sample_sizes[t]};A.samples[t]=S,A.samples_size+=S.size,t===0?(g=1,e=0,S.chunk_index=g,S.chunk_run_index=e,n=C.samples_per_chunk[e],s=0,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0):t<n?(S.chunk_index=g,S.chunk_run_index=e):(g++,S.chunk_index=g,s=0,g<=I||(e++,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0),S.chunk_run_index=e,n+=C.samples_per_chunk[e]),S.description_index=C.sample_description_index[S.chunk_run_index]-1,S.description=o.entries[S.description_index],S.offset=B.chunk_offsets[S.chunk_index-1]+s,s+=S.size,t>u&&(w++,u<0&&(u=0),u+=a.sample_counts[w]),t>0?(A.samples[t-1].duration=a.sample_deltas[w],A.samples_duration+=A.samples[t-1].duration,S.dts=A.samples[t-1].dts+A.samples[t-1].duration):S.dts=0,r?(t>=y&&(p++,y<0&&(y=0),y+=r.sample_counts[p]),S.cts=A.samples[t].dts+r.sample_offsets[p]):S.cts=S.dts,E?(t===E.sample_numbers[m]-1?(S.is_sync=!0,m++):(S.is_sync=!1,S.degradation_priority=0),h&&h.entries[N].sample_delta+R===t+1&&(S.subsamples=h.entries[N].subsamples,R+=h.entries[N].sample_delta,N++)):S.is_sync=!0,UA.process_sdtp(A.mdia.minf.stbl.sdtp,S,S.number),c?S.degradation_priority=c.priority[t]:S.degradation_priority=0,h&&h.entries[N].sample_delta+R===t&&(S.subsamples=h.entries[N].subsamples,R+=h.entries[N].sample_delta),(f.length>0||l.length>0)&&UA.setSampleGroupProperties(A,S,t,A.sample_groups_info)}t>0&&(A.samples[t-1].duration=Math.max(A.mdia.mdhd.duration-A.samples[t-1].dts,0),A.samples_duration+=A.samples[t-1].duration)}}updateSampleLists(){let A,t,e,g,I;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const s=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,s.type==="moof"){const n=s;for(let B=0;B<n.trafs.length;B++){const C=n.trafs[B],Q=this.getTrackById(C.tfhd.track_id),a=this.getTrexById(C.tfhd.track_id);C.tfhd.flags&en?A=C.tfhd.default_sample_description_index:A=a?a.default_sample_description_index:1,C.tfhd.flags&gn?t=C.tfhd.default_sample_duration:t=a?a.default_sample_duration:0,C.tfhd.flags&In?e=C.tfhd.default_sample_size:e=a?a.default_sample_size:0,C.tfhd.flags&sn?g=C.tfhd.default_sample_flags:g=a?a.default_sample_flags:0,C.sample_number=0,C.sbgps.length>0&&UA.initSampleGroups(Q,C,C.sbgps,Q.mdia.minf.stbl.sgpds,C.sgpds);for(let r=0;r<C.truns.length;r++){const E=C.truns[r];for(let o=0;o<E.sample_count;o++){const h=A-1;let c=g;E.flags&xs?c=E.sample_flags[o]:o===0&&E.flags&nn&&(c=E.first_sample_flags);let f=e;E.flags&Ms&&(f=E.sample_size[o]),Q.samples_size+=f;let l=t;E.flags&ks&&(l=E.sample_duration[o]),Q.samples_duration+=l;let u;Q.first_traf_merged||o>0?u=Q.samples[Q.samples.length-1].dts+Q.samples[Q.samples.length-1].duration:(C.tfdt?u=C.tfdt.baseMediaDecodeTime:u=0,Q.first_traf_merged=!0);let w=u;E.flags&bs&&(w=u+E.sample_composition_time_offset[o]);const y=!!(C.tfhd.flags&tn),p=!!(C.tfhd.flags&jB),m=!!(E.flags&Us);let N=0;y?N=C.tfhd.base_data_offset:p||r===0?N=n.start:N=I;let R;r===0&&o===0?m?R=N+E.data_offset:R=N:R=I,I=R+f;const S=C.sample_number;C.sample_number++;const q={cts:w,description_index:h,description:Q.mdia.minf.stbl.stsd.entries[h],dts:u,duration:l,moof_number:this.lastMoofIndex,number_in_traf:S,number:Q.samples.length,offset:R,size:f,timescale:Q.mdia.mdhd.timescale,track_id:Q.tkhd.track_id,is_sync:!(c>>16&1),is_leading:c>>26&3,depends_on:c>>24&3,is_depended_on:c>>22&3,has_redundancy:c>>20&3,degradation_priority:c&65535};C.first_sample_index=Q.samples.length,Q.samples.push(q),(C.sbgps.length>0||C.sgpds.length>0||Q.mdia.minf.stbl.sbgps.length>0||Q.mdia.minf.stbl.sgpds.length>0)&&UA.setSampleGroupProperties(Q,q,q.number_in_traf,C.sample_groups_info)}}if(C.subs){Q.has_fragment_subsamples=!0;let r=C.first_sample_index;for(let E=0;E<C.subs.entries.length;E++){r+=C.subs.entries[E].sample_delta;const o=Q.samples[r-1];o.subsamples=C.subs.entries[E].subsamples}}}}}}getSample(A,t){const e=A.samples[t];if(this.moov){if(!e.data)e.data=new Uint8Array(e.size),e.alreadyRead=0,this.samplesDataSize+=e.size,d.debug("ISOFile","Allocating sample #"+t+" on track #"+A.tkhd.track_id+" of size "+e.size+" (total: "+this.samplesDataSize+")");else if(e.alreadyRead===e.size)return e;for(;;){let g=this.stream,I=g.findPosition(!0,e.offset+e.alreadyRead,!1),s,n;if(I>-1)s=g.buffers[I],n=s.fileStart;else for(const B of this.mdats){if(!B.stream){d.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(B)+" mdat");continue}if(I=B.stream.findPosition(!0,e.offset+e.alreadyRead-B.start-B.hdr_size,!1),I>-1){g=B.stream,s=B.stream.buffers[I],n=B.start+B.hdr_size+s.fileStart;break}}if(s){const B=s.byteLength-(e.offset+e.alreadyRead-n);if(e.size-e.alreadyRead<=B)return d.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+(e.size-e.alreadyRead)+" full size: "+e.size+")"),sA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,e.size-e.alreadyRead),s.usedBytes+=e.size-e.alreadyRead,g.logBufferLevel(),e.alreadyRead=e.size,e;if(B===0)return;d.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+B+" full size: "+e.size+")"),sA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,B),e.alreadyRead+=B,s.usedBytes+=B,g.logBufferLevel()}else return}}}releaseSample(A,t){const e=A.samples[t];return e.data?(this.samplesDataSize-=e.size,e.data=void 0,e.alreadyRead=0,e.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let A="";for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];t>0&&(A+=","),A+=e.mdia.minf.stbl.stsd.entries[0].getCodec()}return A}getTrexById(A){if(!(!this.moov||!this.moov.mvex))for(let t=0;t<this.moov.mvex.trexs.length;t++){const e=this.moov.mvex.trexs[t];if(e.track_id===A)return e}}getTrackById(A){if(this.moov)for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];if(e.tkhd.track_id===A)return e}}flattenItemInfo(){var g;const A=this.items,t=this.entity_groups,e=this.meta;if(!(!e||!e.hdlr||!e.iinf)){for(let I=0;I<e.iinf.item_infos.length;I++){const s=e.iinf.item_infos[I].item_ID;A[s]={id:s,name:e.iinf.item_infos[I].item_name,ref_to:[],content_type:e.iinf.item_infos[I].content_type,content_encoding:e.iinf.item_infos[I].content_encoding,item_uri_type:e.iinf.item_infos[I].item_uri_type,type:e.iinf.item_infos[I].item_type?e.iinf.item_infos[I].item_type:"mime",protection:e.iinf.item_infos[I].item_protection_index>0?e.ipro.protections[e.iinf.item_infos[I].item_protection_index-1]:void 0}}if(e.grpl)for(let I=0;I<e.grpl.boxes.length;I++){const s=e.grpl.boxes[I];t[s.group_id]={id:s.group_id,entity_ids:s.entity_ids,type:s.type}}if(e.iloc)for(let I=0;I<e.iloc.items.length;I++){const s=e.iloc.items[I],n=A[s.item_ID];s.data_reference_index!==0&&(d.warn("Item storage with reference to other files: not supported"),n.source=e.dinf.boxes[s.data_reference_index-1]),n.extents=[],n.size=0;for(let B=0;B<s.extents.length;B++)n.extents[B]={offset:s.extents[B].extent_offset+s.base_offset,length:s.extents[B].extent_length,alreadyRead:0},s.construction_method===1&&(n.extents[B].offset+=e.idat.start+e.idat.hdr_size),n.size+=n.extents[B].length}if(e.pitm&&(A[e.pitm.item_id].primary=!0),e.iref)for(let I=0;I<e.iref.references.length;I++){const s=e.iref.references[I];for(let n=0;n<s.references.length;n++)A[s.from_item_ID].ref_to.push({type:s.type,id:s.references[n]})}if(e.iprp)for(let I=0;I<e.iprp.ipmas.length;I++){const s=e.iprp.ipmas[I];for(let n=0;n<s.associations.length;n++){const B=s.associations[n],C=(g=A[B.id])!=null?g:t[B.id];if(C){C.properties===void 0&&(C.properties={boxes:[]});for(let Q=0;Q<B.props.length;Q++){const a=B.props[Q];if(a.property_index>0&&a.property_index-1<e.iprp.ipco.boxes.length){const r=e.iprp.ipco.boxes[a.property_index-1];C.properties[r.type]=r,C.properties.boxes.push(r)}}}}}}}getItem(A){if(!this.meta)return;const t=this.items[A];if(!t.data&&t.size)t.data=new Uint8Array(t.size),t.alreadyRead=0,this.itemsDataSize+=t.size,d.debug("ISOFile","Allocating item #"+A+" of size "+t.size+" (total: "+this.itemsDataSize+")");else if(t.alreadyRead===t.size)return t;for(let e=0;e<t.extents.length;e++){const g=t.extents[e];if(g.alreadyRead!==g.length){const I=this.stream.findPosition(!0,g.offset+g.alreadyRead,!1);if(I>-1){const s=this.stream.buffers[I],n=s.byteLength-(g.offset+g.alreadyRead-s.fileStart);if(g.length-g.alreadyRead<=n)d.debug("ISOFile","Getting item #"+A+" extent #"+e+" data (alreadyRead: "+g.alreadyRead+" offset: "+(g.offset+g.alreadyRead-s.fileStart)+" read size: "+(g.length-g.alreadyRead)+" full extent size: "+g.length+" full item size: "+t.size+")"),sA.memcpy(t.data.buffer,t.alreadyRead,s,g.offset+g.alreadyRead-s.fileStart,g.length-g.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=g.length-g.alreadyRead),this.stream.logBufferLevel(),t.alreadyRead+=g.length-g.alreadyRead,g.alreadyRead=g.length;else{d.debug("ISOFile","Getting item #"+A+" extent #"+e+" partial data (alreadyRead: "+g.alreadyRead+" offset: "+(g.offset+g.alreadyRead-s.fileStart)+" read size: "+n+" full extent size: "+g.length+" full item size: "+t.size+")"),sA.memcpy(t.data.buffer,t.alreadyRead,s,g.offset+g.alreadyRead-s.fileStart,n),g.alreadyRead+=n,t.alreadyRead+=n,(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=n),this.stream.logBufferLevel();return}}else return}}if(t.alreadyRead===t.size)return t}releaseItem(A){const t=this.items[A];if(t.data){this.itemsDataSize-=t.size,t.data=void 0,t.alreadyRead=0;for(let e=0;e<t.extents.length;e++){const g=t.extents[e];g.alreadyRead=0}return t.size}else return 0}processItems(A){for(const t in this.items){const e=this.items[t];this.getItem(e.id),A&&!e.sent&&(A(e),e.sent=!0,e.data=void 0)}}hasItem(A){for(const t in this.items){const e=this.items[t];if(e.name===A)return e.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:A}={}){let t;if(A?t=this.getItem(A):t=this.getPrimaryItem(),!t)return;const e=new UA;e.discardMdatData=!1;const g={type:t.type,description_boxes:t.properties.boxes};t.properties.ispe&&(g.width=t.properties.ispe.image_width,g.height=t.properties.ispe.image_height);const I=e.addTrack(g);if(I)return e.addSample(I,t.data),e}processIncompleteBox(A){if(A.type==="mdat"){const t=new Qn(A.size);return this.parsingMdat=t,this.boxes.push(t),this.mdats.push(t),t.start=A.start,t.hdr_size=A.hdr_size,t.original_size=A.original_size,this.stream.addUsedBytes(t.hdr_size),this.lastBoxStartPosition=t.start+t.size,this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=t.start+t.size,!1)}else return A.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(A.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+A.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(A){const t=A!=null?A:this.parsingMdat;if(this.discardMdatData){d.debug("ISOFile","Discarding 'mdat' data, not transferring it to the mdat box stream");return}if(!t){d.warn("ISOFile","Cannot transfer 'mdat' data, no mdat box is being parsed");return}const e=this.stream.findPosition(!0,t.start+t.hdr_size,!1),g=this.stream.findPosition(!0,t.start+t.size,!1);if(e===-1||g===-1){d.warn("ISOFile","Cannot transfer 'mdat' data, start or end buffer not found");return}t.stream=new Cn;for(let I=e;I<=g;I++){const s=this.stream.buffers[I],n=I===e?t.start+t.hdr_size-s.fileStart:0,B=I===g?t.start+t.size-s.fileStart:s.byteLength;if(B>n){d.debug("ISOFile","Transferring 'mdat' data from buffer #"+I+" ("+n+" to "+B+")");const C=B-n,Q=new MA(C),a=t.stream.getAbsoluteEndPosition();sA.memcpy(Q,0,s,n,C),Q.fileStart=a,t.stream.insertBuffer(Q),s.usedBytes+=C}}}processIncompleteMdat(){const A=this.parsingMdat;return this.stream.seek(A.start+A.size,!1,this.discardMdatData)?(d.debug("ISOFile","Found 'mdat' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(A,t){this.stream.addUsedBytes&&(A.type==="mdat"?(this.stream.addUsedBytes(A.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(A.size-A.hdr_size)):this.stream.addUsedBytes(A.size))}addBox(A){return G.prototype.addBox.call(this,A)}init(A={}){const t=this.addBox(new iQ);t.major_brand=A.brands&&A.brands[0]||"iso4",t.minor_version=0,t.compatible_brands=A.brands||["iso4"];const e=this.addBox(new CB);e.addBox(new QB);const g=e.addBox(new CQ);return g.timescale=A.timescale||600,g.rate=A.rate||65536,g.creation_time=0,g.modification_time=0,g.duration=A.duration||0,g.volume=A.width?0:256,g.matrix=[65536,0,0,0,65536,0,0,0,1073741824],g.next_track_id=1,this}addTrack(A={}){this.moov||this.init(A);const t=A||{};t.width=t.width||320,t.height=t.height||320,t.id=t.id||this.moov.mvhd.next_track_id,t.type=t.type||"avc1";const e=this.moov.addBox(new WC);this.moov.mvhd.next_track_id=t.id+1;const g=e.addBox(new DQ);g.flags=br|Yr|Lr,g.creation_time=0,g.modification_time=0,g.track_id=t.id,g.duration=t.duration||0,g.layer=t.layer||0,g.alternate_group=0,g.volume=1,g.matrix=[65536,0,0,0,65536,0,0,0,1073741824],g.width=t.width<<16,g.height=t.height<<16;const I=e.addBox(new jC),s=I.addBox(new sQ);s.creation_time=0,s.modification_time=0,s.timescale=t.timescale||1,s.duration=t.media_duration||0,s.language=t.language||"und";const n=I.addBox(new gQ);n.handler=t.hdlr||"vide",n.name=t.name||"Track created with MP4Box.js";const B=I.addBox(new eQ);B.extended_language=t.language||"fr-FR";const C=I.addBox(new OC),Q=nA.sampleEntry[t.type];if(!Q)return;const a=new Q;if(a.data_reference_index=1,a instanceof T){const p=a,m=C.addBox(new mQ);m.graphicsmode=0,m.opcolor=[0,0,0],p.width=t.width,p.height=t.height,p.horizresolution=72<<16,p.vertresolution=72<<16,p.frame_count=1,p.compressorname=t.type+" Compressor",p.depth=24,t.avcDecoderConfigRecord?p.addBox(new zC(t.avcDecoderConfigRecord.byteLength)).parse(new sA(t.avcDecoderConfigRecord)):t.hevcDecoderConfigRecord&&p.addBox(new IQ(t.hevcDecoderConfigRecord.byteLength)).parse(new sA(t.hevcDecoderConfigRecord))}else if(a instanceof BA){const p=a,m=C.addBox(new rQ);m.balance=t.balance||0,p.channel_count=t.channel_count||2,p.samplesize=t.samplesize||16,p.samplerate=t.samplerate||65536}else a instanceof AC?C.addBox(new ZC):a instanceof zA?(C.addBox(new hQ),a instanceof EQ&&(a.namespace=t.namespace||"nonamespace",a.schema_location=t.schema_location||"",a.auxiliary_mime_types=t.auxiliary_mime_types||"")):a instanceof as?C.addBox(new an):a instanceof fB?C.addBox(new an):C.addBox(new an);t.description&&a.addBox.call(a,t.description),t.description_boxes&&t.description_boxes.forEach(function(p){a.addBox.call(a,p)});const E=C.addBox(new XC).addBox(new tQ),o=new pQ;o.flags=1,E.addEntry(o);const h=C.addBox(new PC);h.addBox(new lQ).addEntry(a);const f=h.addBox(new fQ);f.sample_counts=[],f.sample_deltas=[];const l=h.addBox(new cQ);l.first_chunk=[],l.samples_per_chunk=[],l.sample_description_index=[];const u=h.addBox(new oQ);u.chunk_offsets=[];const w=h.addBox(new dQ);w.sample_sizes=[];const y=this.moov.mvex.addBox(new aB);return y.track_id=t.id,y.default_sample_description_index=t.default_sample_description_index||1,y.default_sample_duration=t.default_sample_duration||0,y.default_sample_size=t.default_sample_size||0,y.default_sample_flags=t.default_sample_flags||0,this.buildTrakSampleLists(e),t.id}addSample(A,t,{sample_description_index:e,duration:g=1,cts:I=0,dts:s=0,is_sync:n=!1,is_leading:B=0,depends_on:C=0,is_depended_on:Q=0,has_redundancy:a=0,degradation_priority:r=0,subsamples:E,offset:o=0}={}){const h=this.getTrackById(A);if(h===void 0)return;const c=e?e-1:0,f={number:h.samples.length,track_id:h.tkhd.track_id,timescale:h.mdia.mdhd.timescale,description_index:c,description:h.mdia.minf.stbl.stsd.entries[c],data:t,size:t.byteLength,alreadyRead:t.byteLength,duration:g,cts:I,dts:s,is_sync:n,is_leading:B,depends_on:C,is_depended_on:Q,has_redundancy:a,degradation_priority:r,offset:o,subsamples:E};h.samples.push(f),h.samples_size+=f.size,h.samples_duration+=f.duration,h.first_dts===void 0&&(h.first_dts=s),this.processSamples();const l=this.addBox(this.createMoof([f]));l.computeSize(),l.trafs[0].truns[0].data_offset=l.size+8;const u=this.addBox(new Qn);return u.data=new Uint8Array(t),f}createMoof(A){if(A.length===0)return;if(A.some(Q=>Q.track_id!==A[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+A.map(Q=>Q.track_id).join(", "));const t=A[0].track_id,e=this.getTrackById(t);if(!e)throw new Error("Cannot create moof for non-existing track: "+t);const g=new $C,I=g.addBox(new BQ);I.sequence_number=++this.nextMoofNumber;const s=g.addBox(new AQ),n=s.addBox(new wQ);n.track_id=t,n.flags=jB;const B=s.addBox(new uQ);B.baseMediaDecodeTime=A[0].dts-(e.first_dts||0);const C=s.addBox(new yQ);C.flags=Us|ks|Ms|xs|bs,C.data_offset=0,C.first_sample_flags=0,C.sample_count=A.length;for(const Q of A){let a=0;Q.is_sync?a=1<<25:a=65536,C.sample_duration.push(Q.duration),C.sample_size.push(Q.size),C.sample_flags.push(a),C.sample_composition_time_offset.push(Q.cts-Q.dts)}return g}print(A){A.indent="";for(let t=0;t<this.boxes.length;t++)this.boxes[t]&&this.boxes[t].print(A)}};function Hh(i=!1,A){return new Jh(A,!i)}var GQ={};vC(GQ,{Descriptor:()=>ZA,ES_Descriptor:()=>RQ,MPEG4DescriptorParser:()=>Vh});var FQ=3,ln=4,uB=5,SQ=6,ZA=class NQ{constructor(A,t){this.tag=A,this.size=t,this.descs=[]}parse(A){this.data=A.readUint8Array(this.size)}findDescriptor(A){for(let t=0;t<this.descs.length;t++)if(this.descs[t].tag===A)return this.descs[t]}parseOneDescriptor(A){let t=0;const e=A.readUint8();let g=A.readUint8();for(;g&128;)t=(t<<7)+(g&127),g=A.readUint8();t=(t<<7)+(g&127),d.debug("Descriptor","Found "+(En[e]||"Descriptor "+e)+", size "+t+" at position "+A.getPosition());const I=En[e]?new qh[En[e]](t):new NQ(t);return I.parse(A),I}parseRemainingDescriptors(A){var e;const t=A.getPosition();for(;A.getPosition()<t+this.size;){const g=(e=this.parseOneDescriptor)==null?void 0:e.call(this,A);this.descs.push(g)}}},RQ=class extends ZA{constructor(i){super(FQ,i)}parse(i){if(this.ES_ID=i.readUint16(),this.flags=i.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=i.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const A=i.readUint8();this.URL=i.readString(A),this.size-=A+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=i.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(i)}getOTI(){const i=this.findDescriptor(ln);return i?i.oti:0}getAudioConfig(){const i=this.findDescriptor(ln);if(!i)return;const A=i.findDescriptor(uB);if(A&&A.data){let t=(A.data[0]&248)>>3;return t===31&&A.data.length>=2&&(t=32+((A.data[0]&7)<<3)+((A.data[1]&224)>>5)),t}}},Kh=class extends ZA{constructor(i){super(ln,i)}parse(i){this.oti=i.readUint8(),this.streamType=i.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=i.readUint24(),this.maxBitrate=i.readUint32(),this.avgBitrate=i.readUint32(),this.size-=13,this.parseRemainingDescriptors(i)}},vh=class extends ZA{constructor(i){super(uB,i)}},Th=class extends ZA{constructor(i){super(SQ,i)}},qh={Descriptor:ZA,ES_Descriptor:RQ,DecoderConfigDescriptor:Kh,DecoderSpecificInfo:vh,SLConfigDescriptor:Th},En={[FQ]:"ES_Descriptor",[ln]:"DecoderConfigDescriptor",[uB]:"DecoderSpecificInfo",[SQ]:"SLConfigDescriptor"},Vh=class{constructor(){this.parseOneDescriptor=ZA.prototype.parseOneDescriptor}getDescriptorName(i){return En[i]}},UQ={};vC(UQ,{CoLLBox:()=>gc,ItemContentIDPropertyBox:()=>Md,OpusSampleEntry:()=>lh,SmDmBox:()=>Rl,a1lxBox:()=>zh,a1opBox:()=>Zh,ac_3SampleEntry:()=>oh,ac_4SampleEntry:()=>hh,aebrBox:()=>Dc,afbrBox:()=>yc,albcBox:()=>pc,alstSampleGroupEntry:()=>Bd,altrBox:()=>mc,auxCBox:()=>Wh,av01SampleEntry:()=>To,av1CBox:()=>xo,avc1SampleEntry:()=>Jo,avc2SampleEntry:()=>Ho,avc3SampleEntry:()=>Ko,avc4SampleEntry:()=>vo,avcCBox:()=>zC,avllSampleGroupEntry:()=>Cd,avs3SampleEntry:()=>sh,avssSampleGroupEntry:()=>Qd,brstBox:()=>Gc,btrtBox:()=>jh,bxmlBox:()=>io,ccstBox:()=>Oh,cdefBox:()=>Xh,clapBox:()=>Ph,clefBox:()=>ol,clliBox:()=>$h,cmexBox:()=>Ac,cminBox:()=>tc,cmpdBox:()=>ec,co64Box:()=>ic,colrBox:()=>_o,coviBox:()=>nc,cprtBox:()=>Bc,cschBox:()=>Cc,cslgBox:()=>Qc,cttsBox:()=>ac,dOpsBox:()=>dc,dac3Box:()=>Ec,dataBox:()=>ps,dav1SampleEntry:()=>qo,dec3Box:()=>rc,dfLaBox:()=>oc,dimmBox:()=>hc,dinfBox:()=>XC,dmax:()=>cc,dmedBox:()=>lc,dobrBox:()=>Fc,drefBox:()=>tQ,drepBox:()=>fc,dtrtSampleGroupEntry:()=>ad,dvh1SampleEntry:()=>Po,dvheSampleEntry:()=>$o,ec_3SampleEntry:()=>ch,edtsBox:()=>Io,elngBox:()=>eQ,elstBox:()=>uc,emsgBox:()=>wc,encaSampleEntry:()=>ph,encmSampleEntry:()=>Nh,encsSampleEntry:()=>Gh,enctSampleEntry:()=>Sh,encuSampleEntry:()=>mh,encvSampleEntry:()=>yh,enofBox:()=>cl,eqivBox:()=>Sc,esdsBox:()=>bo,etypBox:()=>yo,fLaCSampleEntry:()=>Dh,favcBox:()=>Nc,fielBox:()=>Jc,fobrBox:()=>Rc,freeBox:()=>$r,frmaBox:()=>Hc,ftypBox:()=>iQ,grplBox:()=>wo,hdlrBox:()=>gQ,hev1SampleEntry:()=>Zo,hev2SampleEntry:()=>Wo,hinfBox:()=>Qo,hmhdBox:()=>ZC,hntiBox:()=>Co,hvc1SampleEntry:()=>Vo,hvc2SampleEntry:()=>zo,hvcCBox:()=>IQ,hvt1SampleEntry:()=>jo,iaugBox:()=>Uc,idatBox:()=>Pr,iinfBox:()=>Go,ilocBox:()=>Fo,ilstBox:()=>ll,imirBox:()=>Kc,infeBox:()=>mo,iodsBox:()=>to,ipcoBox:()=>uo,ipmaBox:()=>vc,iproBox:()=>go,iprpBox:()=>fo,irefBox:()=>No,irotBox:()=>Tc,ispeBox:()=>qc,itaiBox:()=>Vc,j2kHBox:()=>Do,j2kiSampleEntry:()=>nh,keysBox:()=>dl,kindBox:()=>zc,levaBox:()=>Zc,lhe1SampleEntry:()=>Oo,lhv1SampleEntry:()=>Xo,lhvCBox:()=>Wc,lselBox:()=>jc,m4aeSampleEntry:()=>rh,maxrBox:()=>Oc,mdatBox:()=>Qn,mdcvBox:()=>Xc,mdhdBox:()=>sQ,mdiaBox:()=>jC,mecoBox:()=>Bo,mehdBox:()=>nQ,metaBox:()=>Uo,mettSampleEntry:()=>ko,metxSampleEntry:()=>Mo,mfhdBox:()=>BQ,mfraBox:()=>no,mfroBox:()=>Pc,mha1SampleEntry:()=>dh,mha2SampleEntry:()=>fh,mhm1SampleEntry:()=>uh,mhm2SampleEntry:()=>wh,minfBox:()=>OC,mjp2SampleEntry:()=>Bh,mjpgSampleEntry:()=>Ch,moofBox:()=>$C,moovBox:()=>CB,mp4aSampleEntry:()=>Eh,mp4sSampleEntry:()=>Fh,mp4vSampleEntry:()=>ah,mskCBox:()=>$c,msrcTrackGroupTypeBox:()=>Ol,mvexBox:()=>QB,mvhdBox:()=>CQ,mvifSampleGroupEntry:()=>Ed,nmhdBox:()=>an,npckBox:()=>Al,numpBox:()=>tl,padbBox:()=>il,panoBox:()=>kc,paspBox:()=>gl,paylBox:()=>Il,paytBox:()=>sl,pdinBox:()=>nl,piffLsmBox:()=>Fd,piffPsshBox:()=>Sd,piffSencBox:()=>Nd,piffTencBox:()=>Rd,piffTfrfBox:()=>Ud,piffTfxdBox:()=>kd,pitmBox:()=>Ro,pixiBox:()=>Bl,pmaxBox:()=>Cl,povdBox:()=>po,prdiBox:()=>Ql,prfrBox:()=>al,prftBox:()=>El,prgrBox:()=>Lc,profBox:()=>fl,prolSampleGroupEntry:()=>rd,psshBox:()=>rl,pymdBox:()=>_c,rapSampleGroupEntry:()=>od,rashSampleGroupEntry:()=>hd,resvSampleEntry:()=>Rh,rinfBox:()=>oo,rollSampleGroupEntry:()=>cd,rtp_Box:()=>Dl,saioBox:()=>yl,saizBox:()=>pl,sbgpBox:()=>bh,sbpmBox:()=>Gl,sbttSampleEntry:()=>Uh,schiBox:()=>ho,schmBox:()=>Fl,scifSampleGroupEntry:()=>ld,scnmSampleGroupEntry:()=>dd,sdp_Box:()=>Sl,sdtpBox:()=>Yh,seigSampleGroupEntry:()=>fd,sencBox:()=>Nl,sgpdBox:()=>Lh,sidxBox:()=>_h,sinfBox:()=>ro,skipBox:()=>Ao,slidBox:()=>Mc,smhdBox:()=>rQ,sratBox:()=>Ul,ssixBox:()=>kl,stblBox:()=>PC,stcoBox:()=>oQ,stdpBox:()=>Ml,sterBox:()=>xc,sthdBox:()=>hQ,stppSampleEntry:()=>EQ,strdBox:()=>Eo,striBox:()=>xl,strkBox:()=>ao,stsaSampleGroupEntry:()=>ud,stscBox:()=>cQ,stsdBox:()=>lQ,stsgBox:()=>bl,stshBox:()=>Yl,stssBox:()=>Ll,stszBox:()=>dQ,sttsBox:()=>fQ,stviBox:()=>_l,stxtSampleEntry:()=>kh,stypBox:()=>Jl,stz2Box:()=>Hl,subsBox:()=>Kl,syncSampleGroupEntry:()=>wd,taicBox:()=>vl,taptBox:()=>ul,teleSampleGroupEntry:()=>Dd,tencBox:()=>Tl,tfdtBox:()=>uQ,tfhdBox:()=>wQ,tfraBox:()=>ql,tkhdBox:()=>DQ,tmaxBox:()=>Vl,tminBox:()=>zl,totlBox:()=>Zl,tpayBox:()=>Wl,tpylBox:()=>jl,trafBox:()=>AQ,trakBox:()=>WC,trefBox:()=>Xl,trepBox:()=>Pl,trexBox:()=>aB,trgrBox:()=>co,trpyBox:()=>$l,trunBox:()=>yQ,tsasSampleGroupEntry:()=>yd,tsclSampleGroupEntry:()=>pd,tselBox:()=>Ad,tsynBox:()=>bc,tx3gSampleEntry:()=>Mh,txtcBox:()=>td,tycoBox:()=>ed,udesBox:()=>id,udtaBox:()=>lo,uncCBox:()=>gd,uncvSampleEntry:()=>Qh,urlBox:()=>pQ,urnBox:()=>Id,viprSampleGroupEntry:()=>md,vmhdBox:()=>mQ,vp08SampleEntry:()=>gh,vp09SampleEntry:()=>Ih,vpcCBox:()=>Yo,vttCBox:()=>sd,vttcBox:()=>so,vvc1SampleEntry:()=>Ah,vvcCBox:()=>Lo,vvcNSampleEntry:()=>ih,vvi1SampleEntry:()=>th,vvnCBox:()=>nd,vvs1SampleEntry:()=>eh,waveBox:()=>wl,wbbrBox:()=>Yc,wvttSampleEntry:()=>xh,xmlBox:()=>eo});var Si,zh=(Si=class extends G{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(A){const e=((A.readUint8()&1&1)+1)*16;this.layer_size=[];for(let g=0;g<3;g++)e===16?this.layer_size[g]=A.readUint16():this.layer_size[g]=A.readUint32()}},Si.fourcc="a1lx",Si),Ni,Zh=(Ni=class extends G{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(A){this.op_index=A.readUint8()}},Ni.fourcc="a1op",Ni),Ri,Wh=(Ri=class extends D{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(A){this.parseFullHeader(A),this.aux_type=A.readCString();const t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=A.readUint8Array(t)}},Ri.fourcc="auxC",Ri),Ui,jh=(Ui=class extends G{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(A){this.bufferSizeDB=A.readUint32(),this.maxBitrate=A.readUint32(),this.avgBitrate=A.readUint32()}},Ui.fourcc="btrt",Ui),ki,Oh=(ki=class extends D{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.all_ref_pics_intra=(t&128)===128,this.intra_pred_used=(t&64)===64,this.max_ref_per_pic=(t&63)>>2,A.readUint24()}},ki.fourcc="ccst",ki),Mi,Xh=(Mi=class extends G{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.channel_count=A.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let t=0;t<this.channel_count;t++)this.channel_indexes.push(A.readUint16()),this.channel_types.push(A.readUint16()),this.channel_associations.push(A.readUint16())}},Mi.fourcc="cdef",Mi),xi,Ph=(xi=class extends G{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(A){this.cleanApertureWidthN=A.readUint32(),this.cleanApertureWidthD=A.readUint32(),this.cleanApertureHeightN=A.readUint32(),this.cleanApertureHeightD=A.readUint32(),this.horizOffN=A.readUint32(),this.horizOffD=A.readUint32(),this.vertOffN=A.readUint32(),this.vertOffD=A.readUint32()}},xi.fourcc="clap",xi),bi,$h=(bi=class extends G{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.max_content_light_level=A.readUint16(),this.max_pic_average_light_level=A.readUint16()}},bi.fourcc="clli",bi),Yi,Ac=(Yi=class extends G{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(A){this.flags&1&&(this.pos_x=A.readInt32()),this.flags&2&&(this.pos_y=A.readInt32()),this.flags&4&&(this.pos_z=A.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=A.readInt32(),this.quat_y=A.readInt32(),this.quat_z=A.readInt32()):(this.quat_x=A.readInt16(),this.quat_y=A.readInt16(),this.quat_z=A.readInt16()):this.version),this.flags&32&&(this.id=A.readUint32())}},Yi.fourcc="cmex",Yi),Li,tc=(Li=class extends G{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(A){this.focal_length_x=A.readInt32(),this.principal_point_x=A.readInt32(),this.principal_point_y=A.readInt32(),this.flags&1&&(this.focal_length_y=A.readInt32(),this.skew_factor=A.readInt32())}},Li.fourcc="cmin",Li),_i,ec=(_i=class extends G{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.component_count=A.readUint32(),this.component_types=[],this.component_type_urls=[];for(let t=0;t<this.component_count;t++){const e=A.readUint16();this.component_types.push(e),e>=32768&&this.component_type_urls.push(A.readCString())}}},_i.fourcc="cmpd",_i),Ji,ic=(Ji=class extends D{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint64())}write(A){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length);for(let t=0;t<this.chunk_offsets.length;t++)A.writeUint64(this.chunk_offsets[t])}},Ji.fourcc="co64",Ji),Hi,gc=(Hi=class extends D{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.parseFullHeader(A),this.maxCLL=A.readUint16(),this.maxFALL=A.readUint16()}},Hi.fourcc="CoLL",Hi),Ic=class{toString(){let i="centre_azimuth: ";return i+=this.centre_azimuth,i+=" (",i+=this.centre_azimuth*2**-16,i+="°), centre_elevation: ",i+=this.centre_elevation,i+=" (",i+=this.centre_elevation*2**-16,i+="°), centre_tilt: ",i+=this.centre_tilt,i+=" (",i+=this.centre_tilt*2**-16,i+="°)",this.range_included_flag&&(i+=", azimuth_range: ",i+=this.azimuth_range,i+=" (",i+=this.azimuth_range*2**-16,i+="°), elevation_range: ",i+=this.elevation_range,i+=" (",i+=this.elevation_range*2**-16,i+="°)"),this.interpolate_included_flag&&(i+=", interpolate: ",i+=this.interpolate),i}},sc=class{toString(){let i="";return this.view_idc&&(i+="view_idc: ",i+=this.view_idc,i+=", "),i+="sphere_region: {",i+=this.sphere_region,i+="}",i}},Ki,nc=(Ki=class extends D{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(A){this.parseFullHeader(A),this.coverage_shape_type=A.readUint8();const t=A.readUint8(),e=A.readInt8(),g=e&128;g&&(this.default_view_idc=(e&96)>>5),this.coverage_regions=new Array;for(let I=0;I<t;I++){const s=new sc;g&&(s.view_idc=A.readUint8()>>6),s.sphere_region=this.parseSphereRegion(A,!0,!0),this.coverage_regions.push(s)}}parseSphereRegion(A,t,e){const g=new Ic;return g.centre_azimuth=A.readInt32(),g.centre_elevation=A.readInt32(),g.centre_tilt=A.readInt32(),g.range_included_flag=t,t&&(g.azimuth_range=A.readUint32(),g.elevation_range=A.readUint32()),g.interpolate_included_flag=e,e&&(g.interpolate=(A.readUint8()&128)===128),g}},Ki.fourcc="covi",Ki),vi,Bc=(vi=class extends D{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(A){this.parseFullHeader(A),this.parseLanguage(A),this.notice=A.readCString()}},vi.fourcc="cprt",vi),Ti,Cc=(Ti=class extends D{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readCString())}},Ti.fourcc="csch",Ti),ds=2147483647,qi,Qc=(qi=class extends D{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(A){this.parseFullHeader(A),this.version===0?(this.compositionToDTSShift=A.readInt32(),this.leastDecodeToDisplayDelta=A.readInt32(),this.greatestDecodeToDisplayDelta=A.readInt32(),this.compositionStartTime=A.readInt32(),this.compositionEndTime=A.readInt32()):this.version===1&&(this.compositionToDTSShift=A.readInt64(),this.leastDecodeToDisplayDelta=A.readInt64(),this.greatestDecodeToDisplayDelta=A.readInt64(),this.compositionStartTime=A.readInt64(),this.compositionEndTime=A.readInt64())}write(A){this.version=0,(this.compositionToDTSShift>ds||this.leastDecodeToDisplayDelta>ds||this.greatestDecodeToDisplayDelta>ds||this.compositionStartTime>ds||this.compositionEndTime>ds)&&(this.version=1),this.flags=0,this.version===0?(this.size=20,this.writeHeader(A),A.writeInt32(this.compositionToDTSShift),A.writeInt32(this.leastDecodeToDisplayDelta),A.writeInt32(this.greatestDecodeToDisplayDelta),A.writeInt32(this.compositionStartTime),A.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=40,this.writeHeader(A),A.writeInt64(this.compositionToDTSShift),A.writeInt64(this.leastDecodeToDisplayDelta),A.writeInt64(this.greatestDecodeToDisplayDelta),A.writeInt64(this.compositionStartTime),A.writeInt64(this.compositionEndTime))}},qi.fourcc="cslg",qi),Vi,ac=(Vi=class extends D{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());const g=A.readInt32();g<0&&d.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(g)}else if(this.version===1)for(let e=0;e<t;e++)this.sample_counts.push(A.readUint32()),this.sample_offsets.push(A.readInt32())}write(A){this.version=this.sample_offsets.some(t=>t<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),this.version===1?A.writeInt32(this.sample_offsets[t]):A.writeUint32(this.sample_offsets[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let g=0;g<this.sample_counts[e];g++)A[t].pts=A[t].dts+this.sample_offsets[e],t++}},Vi.fourcc="ctts",Vi),zi,Ec=(zi=class extends G{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(A){const t=A.readUint8(),e=A.readUint8(),g=A.readUint8();this.fscod=t>>6,this.bsid=t>>1&31,this.bsmod=(t&1)<<2|e>>6&3,this.acmod=e>>3&7,this.lfeon=e>>2&1,this.bit_rate_code=e&3|g>>5&7}},zi.fourcc="dac3",zi),Zi,rc=(Zi=class extends G{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(A){const t=A.readUint16();this.data_rate=t>>3,this.num_ind_sub=t&7,this.ind_subs=[];for(let e=0;e<this.num_ind_sub+1;e++){const g=A.readUint8(),I=A.readUint8(),s=A.readUint8(),n={fscod:g>>6,bsid:g>>1&31,bsmod:(g&1)<<4|I>>4&15,acmod:I>>1&7,lfeon:I&1,num_dep_sub:s>>1&15};this.ind_subs.push(n),n.num_dep_sub>0&&(n.chan_loc=(s&1)<<8|A.readUint8())}}},Zi.fourcc="dec3",Zi),Wi,oc=(Wi=class extends D{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(A){this.parseFullHeader(A);const t=127,e=128,g=[],I=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let s;do{s=A.readUint8();const n=Math.min(s&t,I.length-1);n?A.readUint8Array(A.readUint24()):(A.readUint8Array(13),this.samplerate=A.readUint32()>>12,A.readUint8Array(20)),g.push(I[n])}while(s&e);this.numMetadataBlocks=g.length+" ("+g.join(", ")+")"}},Wi.fourcc="dfLa",Wi),ji,hc=(ji=class extends G{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(A){this.bytessent=A.readUint64()}},ji.fourcc="dimm",ji),Oi,cc=(Oi=class extends G{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(A){this.time=A.readUint32()}},Oi.fourcc="dmax",Oi),Xi,lc=(Xi=class extends G{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(A){this.bytessent=A.readUint64()}},Xi.fourcc="dmed",Xi),Pi,dc=(Pi=class extends G{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(A){if(this.Version=A.readUint8(),this.OutputChannelCount=A.readUint8(),this.PreSkip=A.readUint16(),this.InputSampleRate=A.readUint32(),this.OutputGain=A.readInt16(),this.ChannelMappingFamily=A.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=A.readUint8(),this.CoupledCount=A.readUint8(),this.ChannelMapping=[];for(let t=0;t<this.OutputChannelCount;t++)this.ChannelMapping[t]=A.readUint8()}}write(A){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(A),A.writeUint8(this.Version),A.writeUint8(this.OutputChannelCount),A.writeUint16(this.PreSkip),A.writeUint32(this.InputSampleRate),A.writeInt16(this.OutputGain),A.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){A.writeUint8(this.StreamCount),A.writeUint8(this.CoupledCount);for(let t=0;t<this.OutputChannelCount;t++)A.writeUint8(this.ChannelMapping[t])}}},Pi.fourcc="dOps",Pi),$i,fc=($i=class extends G{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(A){this.bytessent=A.readUint64()}},$i.fourcc="drep",$i),Ag,uc=(Ag=class extends D{constructor(){super(...arguments),this.box_name="EditListBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const g={segment_duration:this.version===1?A.readUint64():A.readUint32(),media_time:this.version===1?A.readInt64():A.readInt32(),media_rate_integer:A.readInt16(),media_rate_fraction:A.readInt16()};this.entries.push(g)}}write(A){const t=this.entries.some(e=>e.segment_duration>X||e.media_time>X)||this.version===1;this.version=t?1:0,this.size=4+12*this.entries.length,this.size+=t?8*this.entries.length:0,this.writeHeader(A),A.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const g=this.entries[e];t?(A.writeUint64(g.segment_duration),A.writeInt64(g.media_time)):(A.writeUint32(g.segment_duration),A.writeInt32(g.media_time)),A.writeInt16(g.media_rate_integer),A.writeInt16(g.media_rate_fraction)}}},Ag.fourcc="elst",Ag),tg,wc=(tg=class extends D{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.timescale=A.readUint32(),this.presentation_time=A.readUint64(),this.event_duration=A.readUint32(),this.id=A.readUint32(),this.scheme_id_uri=A.readCString(),this.value=A.readCString()):(this.scheme_id_uri=A.readCString(),this.value=A.readCString(),this.timescale=A.readUint32(),this.presentation_time_delta=A.readUint32(),this.event_duration=A.readUint32(),this.id=A.readUint32());let t=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(t-=4),this.message_data=A.readUint8Array(t)}write(A){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(A),A.writeCString(this.scheme_id_uri),A.writeCString(this.value),A.writeUint32(this.timescale),A.writeUint32(this.presentation_time_delta),A.writeUint32(this.event_duration),A.writeUint32(this.id),A.writeUint8Array(this.message_data)}},tg.fourcc="emsg",tg),tA=class extends D{parse(i){this.parseFullHeader(i),this.group_id=i.readUint32(),this.num_entities_in_group=i.readUint32(),this.entity_ids=[];for(let A=0;A<this.num_entities_in_group;A++){const t=i.readUint32();this.entity_ids.push(t)}}},eg,Dc=(eg=class extends tA{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},eg.fourcc="aebr",eg),ig,yc=(ig=class extends tA{constructor(){super(...arguments),this.box_name="Flash exposure information"}},ig.fourcc="afbr",ig),gg,pc=(gg=class extends tA{constructor(){super(...arguments),this.box_name="Album collection"}},gg.fourcc="albc",gg),Ig,mc=(Ig=class extends tA{constructor(){super(...arguments),this.box_name="Alternative entity"}},Ig.fourcc="altr",Ig),sg,Gc=(sg=class extends tA{constructor(){super(...arguments),this.box_name="Burst image"}},sg.fourcc="brst",sg),ng,Fc=(ng=class extends tA{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},ng.fourcc="dobr",ng),Bg,Sc=(Bg=class extends tA{constructor(){super(...arguments),this.box_name="Equivalent entity"}},Bg.fourcc="eqiv",Bg),Cg,Nc=(Cg=class extends tA{constructor(){super(...arguments),this.box_name="Favorites collection"}},Cg.fourcc="favc",Cg),Qg,Rc=(Qg=class extends tA{constructor(){super(...arguments),this.box_name="Focus bracketing"}},Qg.fourcc="fobr",Qg),ag,Uc=(ag=class extends tA{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},ag.fourcc="iaug",ag),Eg,kc=(Eg=class extends tA{constructor(){super(...arguments),this.box_name="Panorama"}},Eg.fourcc="pano",Eg),rg,Mc=(rg=class extends tA{constructor(){super(...arguments),this.box_name="Slideshow"}},rg.fourcc="slid",rg),og,xc=(og=class extends tA{constructor(){super(...arguments),this.box_name="Stereo"}},og.fourcc="ster",og),hg,bc=(hg=class extends tA{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},hg.fourcc="tsyn",hg),cg,Yc=(cg=class extends tA{constructor(){super(...arguments),this.box_name="White balance bracketing"}},cg.fourcc="wbbr",cg),lg,Lc=(lg=class extends tA{constructor(){super(...arguments),this.box_name="Progressive rendering"}},lg.fourcc="prgr",lg),dg,_c=(dg=class extends tA{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(A){this.parseFullHeader(A),this.group_id=A.readUint32(),this.num_entities_in_group=A.readUint32(),this.entity_ids=[];for(let t=0;t<this.num_entities_in_group;t++){const e=A.readUint32();this.entity_ids.push(e)}this.tile_size_x=A.readUint16(),this.tile_size_y=A.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let t=0;t<this.num_entities_in_group;t++)this.layer_binning[t]=A.readUint16(),this.tiles_in_layer_row_minus1[t]=A.readUint16(),this.tiles_in_layer_column_minus1[t]=A.readUint16()}},dg.fourcc="pymd",dg),fg,Jc=(fg=class extends G{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(A){this.fieldCount=A.readUint8(),this.fieldOrdering=A.readUint8()}},fg.fourcc="fiel",fg),ug,Hc=(ug=class extends G{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(A){this.data_format=A.readString(4)}},ug.fourcc="frma",ug),wg,Kc=(wg=class extends G{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(A){const t=A.readUint8();this.reserved=t>>7,this.axis=t&1}},wg.fourcc="imir",wg),Dg,vc=(Dg=class extends D{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.associations=[];for(let e=0;e<t;e++){const g=this.version<1?A.readUint16():A.readUint32(),I=[],s=A.readUint8();for(let n=0;n<s;n++){const B=A.readUint8();I.push({essential:(B&128)>>7===1,property_index:this.flags&1?(B&127)<<8|A.readUint8():B&127})}this.associations.push({id:g,props:I})}}},Dg.fourcc="ipma",Dg),yg,Tc=(yg=class extends G{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(A){this.angle=A.readUint8()&3}},yg.fourcc="irot",yg),pg,qc=(pg=class extends D{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(A){this.parseFullHeader(A),this.image_width=A.readUint32(),this.image_height=A.readUint32()}},pg.fourcc="ispe",pg),mg,Vc=(mg=class extends D{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(A){this.TAI_timestamp=A.readUint64();const t=A.readUint8();this.sychronization_state=t>>7&1,this.timestamp_generation_failure=t>>6&1,this.timestamp_is_modified=t>>5&1}},mg.fourcc="itai",mg),Gg,zc=(Gg=class extends D{constructor(){super(...arguments),this.box_name="KindBox"}parse(A){this.parseFullHeader(A),this.schemeURI=A.readCString(),this.isEndOfBox(A)||(this.value=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(A),A.writeCString(this.schemeURI),this.value&&A.writeCString(this.value)}},Gg.fourcc="kind",Gg),Fg,Zc=(Fg=class extends D{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.levels=[];for(let e=0;e<t;e++){const g={};this.levels[e]=g,g.track_ID=A.readUint32();const I=A.readUint8();switch(g.padding_flag=I>>7,g.assignment_type=I&127,g.assignment_type){case 0:g.grouping_type=A.readString(4);break;case 1:g.grouping_type=A.readString(4),g.grouping_type_parameter=A.readUint32();break;case 2:break;case 3:break;case 4:g.sub_track_id=A.readUint32();break;default:d.warn("BoxParser",`Unknown level assignment type: ${g.assignment_type}`)}}}},Fg.fourcc="leva",Fg),Sg,Wc=(Sg=class extends G{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3;let t=A.readUint8();this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let g=0;g<e;g++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}},Sg.fourcc="lhvC",Sg),Ng,jc=(Ng=class extends G{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(A){this.layer_id=A.readUint16()}},Ng.fourcc="lsel",Ng),Rg,Oc=(Rg=class extends G{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(A){this.period=A.readUint32(),this.bytes=A.readUint32()}},Rg.fourcc="maxr",Rg),Os=class{constructor(i,A){this.x=i,this.y=A}toString(){return"("+this.x+","+this.y+")"}},Ug,Xc=(Ug=class extends G{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(A){this.display_primaries=[],this.display_primaries[0]=new Os(A.readUint16(),A.readUint16()),this.display_primaries[1]=new Os(A.readUint16(),A.readUint16()),this.display_primaries[2]=new Os(A.readUint16(),A.readUint16()),this.white_point=new Os(A.readUint16(),A.readUint16()),this.max_display_mastering_luminance=A.readUint32(),this.min_display_mastering_luminance=A.readUint32()}},Ug.fourcc="mdcv",Ug),kg,Pc=(kg=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(A){this.parseFullHeader(A),this._size=A.readUint32()}},kg.fourcc="mfro",kg),Mg,$c=(Mg=class extends D{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(A){this.parseFullHeader(A),this.bits_per_pixel=A.readUint8()}},Mg.fourcc="mskC",Mg),xg,Al=(xg=class extends G{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint32()}},xg.fourcc="npck",xg),bg,tl=(bg=class extends G{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint64()}},bg.fourcc="nump",bg),el=class{constructor(i,A){this.pad1=i,this.pad2=A}},Yg,il=(Yg=class extends D{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.padbits=[];for(let e=0;e<Math.floor((t+1)/2);e++){const g=A.readUint8(),I=(g&112)>>4,s=g&7;this.padbits.push(new el(I,s))}}},Yg.fourcc="padb",Yg),Lg,gl=(Lg=class extends G{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(A){this.hSpacing=A.readUint32(),this.vSpacing=A.readUint32()}},Lg.fourcc="pasp",Lg),_g,Il=(_g=class extends G{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},_g.fourcc="payl",_g),Jg,sl=(Jg=class extends G{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(A){this.payloadID=A.readUint32();const t=A.readUint8();this.rtpmap_string=A.readString(t)}},Jg.fourcc="payt",Jg),Hg,nl=(Hg=class extends D{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/8;for(let e=0;e<t;e++)this.rate[e]=A.readUint32(),this.initial_delay[e]=A.readUint32()}},Hg.fourcc="pdin",Hg),Kg,Bl=(Kg=class extends D{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(A){this.parseFullHeader(A),this.num_channels=A.readUint8(),this.bits_per_channels=[];for(let t=0;t<this.num_channels;t++)this.bits_per_channels[t]=A.readUint8()}},Kg.fourcc="pixi",Kg),vg,Cl=(vg=class extends G{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(A){this.bytes=A.readUint32()}},vg.fourcc="pmax",vg),Tg,Ql=(Tg=class extends D{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(A){if(this.parseFullHeader(A),this.step_count=A.readUint16(),this.item_count=[],this.flags&2)for(let t=0;t<this.step_count;t++)this.item_count[t]=A.readUint16()}},Tg.fourcc="prdi",Tg),qg,al=(qg=class extends D{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(A){this.parseFullHeader(A),this.projection_type=A.readUint8()&31}},qg.fourcc="prfr",qg),Vg,El=(Vg=class extends D{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(A){this.parseFullHeader(A),this.ref_track_id=A.readUint32(),this.ntp_timestamp=A.readUint64(),this.version===0?this.media_time=A.readUint32():this.media_time=A.readUint64()}},Vg.fourcc="prft",Vg),zg,rl=(zg=class extends D{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(A){if(this.parseFullHeader(A),this.system_id=VA(A),this.kid=[],this.version>0){const e=A.readUint32();for(let g=0;g<e;g++)this.kid[g]=VA(A)}const t=A.readUint32();t>0&&(this.protection_data=A.readUint8Array(t))}},zg.fourcc="pssh",zg),Zg,ol=(Zg=class extends D{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Zg.fourcc="clef",Zg);function hl(i,A){if(i===ps.Types.UTF8)return new TextDecoder("utf-8").decode(A);const t=new DataView(A.buffer);if(i===ps.Types.BE_UNSIGNED_INT){if(A.length===1)return t.getUint8(0);if(A.length===2)return t.getUint16(0,!1);if(A.length===4)return t.getUint32(0,!1);if(A.length===8)return t.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+A.length)}else if(i===ps.Types.BE_SIGNED_INT){if(A.length===1)return t.getInt8(0);if(A.length===2)return t.getInt16(0,!1);if(A.length===4)return t.getInt32(0,!1);if(A.length===8)return t.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+A.length)}else if(i===ps.Types.BE_FLOAT32)return t.getFloat32(0,!1);d.warn("DataBox","Unsupported or unimplemented itif data type: "+i)}var qA,ps=(qA=class extends G{constructor(){super(...arguments),this.box_name="DataBox"}parse(A){this.valueType=A.readUint32(),this.country=A.readUint16(),this.country>255&&(A.seek(A.getPosition()-2),this.countryString=A.readString(2)),this.language=A.readUint16(),this.language>255&&(A.seek(A.getPosition()-2),this.parseLanguage(A)),this.raw=A.readUint8Array(this.size-this.hdr_size-8),this.value=hl(this.valueType,this.raw)}},qA.fourcc="data",qA.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},qA),Wg,cl=(Wg=class extends D{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Wg.fourcc="enof",Wg),jg,ll=(jg=class extends G{constructor(){super(...arguments),this.box_name="IlstBox"}parse(A){this.list={};let t=this.size-this.hdr_size;for(;t>0;){const e=A.readUint32(),g=A.readUint32(),I=wA(A,!1,e-8);I.code===EA&&(this.list[g]=I.box),t-=e}}},jg.fourcc="ilst",jg),Og,dl=(Og=class extends D{constructor(){super(...arguments),this.box_name="KeysBox"}parse(A){this.parseFullHeader(A),this.count=A.readUint32(),this.keys={};for(let t=0;t<this.count;t++){const e=A.readUint32();this.keys[t+1]=A.readString(e-4)}}},Og.fourcc="keys",Og),Xg,fl=(Xg=class extends D{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Xg.fourcc="prof",Xg),Pg,ul=(Pg=class extends M{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},Pg.fourcc="tapt",Pg),$g,wl=($g=class extends M{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},$g.fourcc="wave",$g),AI,Dl=(AI=class extends G{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(A){this.descriptionformat=A.readString(4),this.sdptext=A.readString(this.size-this.hdr_size-4)}},AI.fourcc="rtp ",AI),tI,yl=(tI=class extends D{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32());const t=A.readUint32();this.offset=[];for(let e=0;e<t;e++)this.version===0?this.offset[e]=A.readUint32():this.offset[e]=A.readUint64()}},tI.fourcc="saio",tI),eI,pl=(eI=class extends D{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(A){if(this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32()),this.default_sample_info_size=A.readUint8(),this.sample_count=A.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let t=0;t<this.sample_count;t++)this.sample_info_size[t]=A.readUint8()}},eI.fourcc="saiz",eI),ml=class{constructor(i,A){this.bad_pixel_row=i,this.bad_pixel_column=A}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},iI,Gl=(iI=class extends D{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(A){this.parseFullHeader(A),this.component_count=A.readUint16(),this.component_index=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16());const t=A.readUint8();this.correction_applied=(t&128)===128,this.num_bad_rows=A.readUint32(),this.num_bad_cols=A.readUint32(),this.num_bad_pixels=A.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let e=0;e<this.num_bad_rows;e++)this.bad_rows.push(A.readUint32());for(let e=0;e<this.num_bad_cols;e++)this.bad_columns.push(A.readUint32());for(let e=0;e<this.num_bad_pixels;e++){const g=A.readUint32(),I=A.readUint32();this.bad_pixels.push(new ml(g,I))}}},iI.fourcc="sbpm",iI),gI,Fl=(gI=class extends D{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readString(this.size-this.hdr_size-8))}},gI.fourcc="schm",gI),II,Sl=(II=class extends G{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(A){this.sdptext=A.readString(this.size-this.hdr_size)}},II.fourcc="sdp ",II),sI,Nl=(sI=class extends D{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},sI.fourcc="senc",sI),nI,Rl=(nI=class extends D{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(A){this.parseFullHeader(A),this.primaryRChromaticity_x=A.readUint16(),this.primaryRChromaticity_y=A.readUint16(),this.primaryGChromaticity_x=A.readUint16(),this.primaryGChromaticity_y=A.readUint16(),this.primaryBChromaticity_x=A.readUint16(),this.primaryBChromaticity_y=A.readUint16(),this.whitePointChromaticity_x=A.readUint16(),this.whitePointChromaticity_y=A.readUint16(),this.luminanceMax=A.readUint32(),this.luminanceMin=A.readUint32()}},nI.fourcc="SmDm",nI),BI,Ul=(BI=class extends D{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(A){this.parseFullHeader(A),this.sampling_rate=A.readUint32()}},BI.fourcc="srat",BI),CI,kl=(CI=class extends D{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(A){this.parseFullHeader(A),this.subsegments=[];const t=A.readUint32();for(let e=0;e<t;e++){const g={};this.subsegments.push(g),g.ranges=[];const I=A.readUint32();for(let s=0;s<I;s++){const n={};g.ranges.push(n),n.level=A.readUint8(),n.range_size=A.readUint24()}}}},CI.fourcc="ssix",CI),QI,Ml=(QI=class extends D{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/2;this.priority=[];for(let e=0;e<t;e++)this.priority[e]=A.readUint16()}},QI.fourcc="stpd",QI),aI,xl=(aI=class extends D{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint16(),this.alternate_group=A.readUint16(),this.sub_track_id=A.readUint32();const t=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},aI.fourcc="stri",aI),EI,bl=(EI=class extends D{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readUint32();const t=A.readUint16();this.group_description_index=[];for(let e=0;e<t;e++)this.group_description_index[e]=A.readUint32()}},EI.fourcc="stsg",EI),rI,Yl=(rI=class extends D{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let e=0;e<t;e++)this.shadowed_sample_numbers.push(A.readUint32()),this.sync_sample_numbers.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(A),A.writeUint32(this.shadowed_sample_numbers.length);for(let t=0;t<this.shadowed_sample_numbers.length;t++)A.writeUint32(this.shadowed_sample_numbers[t]),A.writeUint32(this.sync_sample_numbers[t])}},rI.fourcc="stsh",rI),oI,Ll=(oI=class extends D{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.version===0){this.sample_numbers=[];for(let e=0;e<t;e++)this.sample_numbers.push(A.readUint32())}}write(A){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(A),A.writeUint32(this.sample_numbers.length),A.writeUint32Array(this.sample_numbers)}},oI.fourcc="stss",oI),hI,_l=(hI=class extends D{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.single_view_allowed=t&3,this.stereo_scheme=A.readUint32();const e=A.readUint32();for(this.stereo_indication_type=A.readString(e),this.boxes=[];A.getPosition()<this.start+this.size;){const g=wA(A,!1,this.size-(A.getPosition()-this.start));if(g.code===EA){const I=g.box;this.boxes.push(I),this[I.type]=I}else return}}},hI.fourcc="stvi",hI),cI,Jl=(cI=class extends G{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},cI.fourcc="styp",cI),lI,Hl=(lI=class extends D{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.reserved=A.readUint24(),this.field_size=A.readUint8();const t=A.readUint32();if(this.field_size===4)for(let e=0;e<t;e+=2){const g=A.readUint8();this.sample_sizes[e]=g>>4&15,this.sample_sizes[e+1]=g&15}else if(this.field_size===8)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint8();else if(this.field_size===16)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint16();else d.error("BoxParser","Error in length field in stz2 box",A.isofile)}}},lI.fourcc="stz2",lI),dI,Kl=(dI=class extends D{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.entries=[];let e;for(let g=0;g<t;g++){const I={};if(this.entries[g]=I,I.sample_delta=A.readUint32(),I.subsamples=[],e=A.readUint16(),e>0)for(let s=0;s<e;s++){const n={};I.subsamples.push(n),this.version===1?n.size=A.readUint32():n.size=A.readUint16(),n.priority=A.readUint8(),n.discardable=A.readUint8(),n.codec_specific_parameters=A.readUint32()}}}},dI.fourcc="subs",dI),fI,vl=(fI=class extends D{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(A){this.time_uncertainty=A.readUint64(),this.clock_resolution=A.readUint32(),this.clock_drift_rate=A.readInt32();const t=A.readUint8();this.clock_type=(t&192)>>6}},fI.fourcc="taic",fI),uI,Tl=(uI=class extends D{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(A){if(this.parseFullHeader(A),A.readUint8(),this.version===0)A.readUint8();else{const t=A.readUint8();this.default_crypt_byte_block=t>>4&15,this.default_skip_byte_block=t&15}this.default_isProtected=A.readUint8(),this.default_Per_Sample_IV_Size=A.readUint8(),this.default_KID=VA(A),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=A.readUint8(),this.default_constant_IV=A.readUint8Array(this.default_constant_IV_size))}},uI.fourcc="tenc",uI),wI,ql=(wI=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(A){this.parseFullHeader(A),this.track_ID=A.readUint32(),A.readUint24();const t=A.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=t&3,this.entries=[];const e=A.readUint32();for(let g=0;g<e;g++)this.version===1?(this.time=A.readUint64(),this.moof_offset=A.readUint64()):(this.time=A.readUint32(),this.moof_offset=A.readUint32()),this.traf_number=A["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=A["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=A["readUint"+8*(this.length_size_of_sample_num+1)]()}},wI.fourcc="tfra",wI),DI,Vl=(DI=class extends G{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(A){this.time=A.readUint32()}},DI.fourcc="tmax",DI),yI,zl=(yI=class extends G{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(A){this.time=A.readUint32()}},yI.fourcc="tmin",yI),pI,Zl=(pI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},pI.fourcc="totl",pI),mI,Wl=(mI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},mI.fourcc="tpay",mI),GI,jl=(GI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},GI.fourcc="tpyl",GI),FI,Ol=(FI=class extends Jr{},FI.fourcc="msrc",FI),YA,Xl=(YA=class extends G{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(A){for(;A.getPosition()<this.start+this.size;){const t=wA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===EA){YA.allowed_types.includes(t.type)||d.warn("BoxParser",`Unknown track reference type: '${t.type}'`);const e=new vr(t.type,t.size,t.hdr_size,t.start);e.write===G.prototype.write&&e.type!=="mdat"&&(d.info("BoxParser","TrackReference "+e.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(A)),e.parse(A),this.references.push(e)}else return}}},YA.fourcc="tref",YA.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],YA),SI,Pl=(SI=class extends D{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(A){for(this.parseFullHeader(A),this.track_ID=A.readUint32(),this.boxes=[];A.getPosition()<this.start+this.size;){const t=wA(A,!1,this.size-(A.getPosition()-this.start));if(t.code===EA){const e=t.box;this.boxes.push(e)}else return}}},SI.fourcc="trep",SI),NI,$l=(NI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},NI.fourcc="trpy",NI),RI,Ad=(RI=class extends D{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint32();const t=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},RI.fourcc="tsel",RI),UI,td=(UI=class extends D{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(A){this.parseFullHeader(A),this.config=A.readCString()}},UI.fourcc="txtc",UI),kI,ed=(kI=class extends G{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(A){const t=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let e=0;e<t;e++)this.compatible_brands[e]=A.readString(4)}},kI.fourcc="tyco",kI),MI,id=(MI=class extends D{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(A){this.parseFullHeader(A),this.lang=A.readCString(),this.name=A.readCString(),this.description=A.readCString(),this.tags=A.readCString()}},MI.fourcc="udes",MI),xI,gd=(xI=class extends D{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(A){if(this.parseFullHeader(A),this.profile=A.readString(4),this.version!==1){if(this.version===0){this.component_count=A.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16()),this.component_bit_depth_minus_one.push(A.readUint8()),this.component_format.push(A.readUint8()),this.component_align_size.push(A.readUint8());this.sampling_type=A.readUint8(),this.interleave_type=A.readUint8(),this.block_size=A.readUint8();const t=A.readUint8();this.component_little_endian=t>>7&1,this.block_pad_lsb=t>>6&1,this.block_little_endian=t>>5&1,this.block_reversed=t>>4&1,this.pad_unknown=t>>3&1,this.pixel_size=A.readUint32(),this.row_align_size=A.readUint32(),this.tile_align_size=A.readUint32(),this.num_tile_cols_minus_one=A.readUint32(),this.num_tile_rows_minus_one=A.readUint32()}}}},xI.fourcc="uncC",xI),bI,Id=(bI=class extends D{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(A){this.parseFullHeader(A),this.name=A.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(A),A.writeCString(this.name),this.location&&A.writeCString(this.location)}},bI.fourcc="urn ",bI),YI,sd=(YI=class extends G{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},YI.fourcc="vttC",YI),LI,nd=(LI=class extends D{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.lengthSizeMinusOne=t&3}},LI.fourcc="vvnC",LI),_I,Bd=(_I=class extends Z{parse(A){const t=A.readUint16();this.first_output_sample=A.readUint16(),this.sample_offset=[];for(let g=0;g<t;g++)this.sample_offset[g]=A.readUint32();const e=this.description_length-4-4*t;this.num_output_samples=[],this.num_total_samples=[];for(let g=0;g<e/4;g++)this.num_output_samples[g]=A.readUint16(),this.num_total_samples[g]=A.readUint16()}},_I.grouping_type="alst",_I),JI,Cd=(JI=class extends Z{parse(A){this.layerNumber=A.readUint8(),this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()}},JI.grouping_type="avll",JI),HI,Qd=(HI=class extends Z{parse(A){this.subSequenceIdentifier=A.readUint16(),this.layerNumber=A.readUint8();const t=A.readUint8();this.durationFlag=t>>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=A.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()),this.dependency=[];const e=A.readUint8();for(let g=0;g<e;g++)this.dependency.push({subSeqDirectionFlag:A.readUint8(),layerNumber:A.readUint8(),subSequenceIdentifier:A.readUint16()})}},HI.grouping_type="avss",HI),KI,ad=(KI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},KI.grouping_type="dtrt",KI),vI,Ed=(vI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},vI.grouping_type="mvif",vI),TI,rd=(TI=class extends Z{parse(A){this.roll_distance=A.readInt16()}},TI.grouping_type="prol",TI),qI,od=(qI=class extends Z{parse(A){const t=A.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=t&127}},qI.grouping_type="rap ",qI),VI,hd=(VI=class extends Z{parse(A){if(this.operation_point_count=A.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)d.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=A.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=A.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let t=0;t<this.operation_point_count;t++)this.available_bitrate[t]=A.readUint32(),this.target_rate_share[t]=A.readUint16()}this.maximum_bitrate=A.readUint32(),this.minimum_bitrate=A.readUint32(),this.discard_priority=A.readUint8()}}},VI.grouping_type="rash",VI),zI,cd=(zI=class extends Z{parse(A){this.roll_distance=A.readInt16()}},zI.grouping_type="roll",zI),ZI,ld=(ZI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},ZI.grouping_type="scif",ZI),WI,dd=(WI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},WI.grouping_type="scnm",WI),jI,fd=(jI=class extends Z{parse(A){this.reserved=A.readUint8();const t=A.readUint8();this.crypt_byte_block=t>>4,this.skip_byte_block=t&15,this.isProtected=A.readUint8(),this.Per_Sample_IV_Size=A.readUint8(),this.KID=VA(A),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=A.readUint8(),this.constant_IV=A.readUint8Array(this.constant_IV_size))}},jI.grouping_type="seig",jI),OI,ud=(OI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},OI.grouping_type="stsa",OI),XI,wd=(XI=class extends Z{parse(A){const t=A.readUint8();this.NAL_unit_type=t&63}},XI.grouping_type="sync",XI),PI,Dd=(PI=class extends Z{parse(A){const t=A.readUint8();this.level_independently_decodable=t>>7}},PI.grouping_type="tele",PI),$I,yd=($I=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},$I.grouping_type="tsas",$I),As,pd=(As=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},As.grouping_type="tscl",As),ts,md=(ts=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},ts.grouping_type="vipr",ts),es,Gd=(es=class extends G{},es.fourcc="uuid",es),is,Es=(is=class extends D{},is.fourcc="uuid",is),gs,Fd=(gs=class extends Es{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(A){this.parseFullHeader(A),this.LiveServerManifest=A.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}},gs.uuid="a5d40b30e81411ddba2f0800200c9a66",gs),Is,Sd=(Is=class extends Es{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(A){this.parseFullHeader(A),this.system_id=VA(A);const t=A.readUint32();t>0&&(this.data=A.readUint8Array(t))}},Is.uuid="d08a4f1810f34a82b6c832d8aba183d3",Is),ss,Nd=(ss=class extends Es{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},ss.uuid="a2394f525a9b4f14a2446c427c648df4",ss),ns,Rd=(ns=class extends Es{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(A){this.parseFullHeader(A),this.default_AlgorithmID=A.readUint24(),this.default_IV_size=A.readUint8(),this.default_KID=VA(A)}},ns.uuid="8974dbce7be74c5184f97148f9882554",ns),Bs,Ud=(Bs=class extends Es{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(A){this.parseFullHeader(A),this.fragment_count=A.readUint8(),this.entries=[];for(let t=0;t<this.fragment_count;t++){let e=0,g=0;this.version===1?(e=A.readUint64(),g=A.readUint64()):(e=A.readUint32(),g=A.readUint32()),this.entries.push({absolute_time:e,absolute_duration:g})}}},Bs.uuid="d4807ef2ca3946958e5426cb9e46a79f",Bs),Cs,kd=(Cs=class extends Es{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.absolute_time=A.readUint64(),this.duration=A.readUint64()):(this.absolute_time=A.readUint32(),this.duration=A.readUint32())}},Cs.uuid="6d1d9b0542d544e680e2141daff757b2",Cs),Qs,Md=(Qs=class extends Gd{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(A){this.content_id=A.readCString()}},Qs.uuid="261ef3741d975bbaacbd9d2c8ea73522",Qs);Wr(UQ);jr(GQ);const xd=800;function bd(i){return i.startsWith("avc1")||i.startsWith("avc3")}function Yd(i){const A=new Uint8Array(i);if(A.byteLength<8)return i;const t=A[4],e=A[5],g=A[6],I=A[7];return t===97&&e===118&&g===99&&I===67?i.slice(8):i}function Ld(i){const A=i.avcC;if(!A)return;const t=new sA;A.write(t);const e=t.byteLength;if(e<=0)return;const g=t.buffer.slice(0,e);return Yd(g)}function _d(i){return new Promise((A,t)=>{const e=Hh(),g=i.slice(0);g.fileStart=0,e.onError=I=>{t(new Error(`mp4box: ${I}`))},e.onReady=I=>{var s,n,B,C,Q,a,r;const E=(s=I.videoTracks)==null?void 0:s[0];if(!E){t(new Error("mp4box: no video track"));return}if(!bd(E.codec)){t(new Error(`mp4box: unsupported video codec ${E.codec}`));return}if(E.nb_samples>xd){t(new Error(`mp4box: too many samples (${E.nb_samples})`));return}const o=[];e.onSamples=(c,f,l)=>{o.push(...l)},e.setExtractionOptions(E.id,null,{nbSamples:Math.max(E.nb_samples,1)}),e.start();const h=E.timescale>0?E.duration/E.timescale:I.duration/(I.timescale||1);if(o.length===0){t(new Error("mp4box: extraction produced no samples"));return}A({codec:E.codec,timescale:E.timescale,durationSec:Number.isFinite(h)?h:0,videoWidth:(C=(B=(n=E.video)==null?void 0:n.width)!=null?B:E.track_width)!=null?C:0,videoHeight:(r=(a=(Q=E.video)==null?void 0:Q.height)!=null?a:E.track_height)!=null?r:0,samples:o})},e.appendBuffer(g),e.flush()})}const eC=25e3;async function Jd(i,A,t){const e=performance.now();let g=0;for(;i.decodeQueueSize>0;)if(await new Promise(I=>queueMicrotask(I)),g++,g%120===0&&await new Promise(I=>setTimeout(I,0)),performance.now()-e>t){console.warn("[GiftStage:WC] decodeQueue drain gave up",{label:A,decodeQueueSize:i.decodeQueueSize,spins:g});break}}async function Hd(i,A){console.info("[GiftStage:WC] VideoDecoder.flush…",A);try{await Promise.race([i.flush(),new Promise((t,e)=>{setTimeout(()=>e(new Error(`VideoDecoder.flush() timed out after ${eC}ms (${JSON.stringify(A)})`)),eC)})])}catch(t){try{i.close()}catch(e){}throw t}}async function Kd(i,A,t,e){var g,I;if(t.length===0)return{frames:[],timesSec:new Float64Array(0)};const s=[...t].sort((o,h)=>{var c,f,l,u;const w=((f=(c=o.dts)!=null?c:o.cts)!=null?f:0)-((u=(l=h.dts)!=null?l:h.cts)!=null?u:0);return w!==0?w:0}),n=[],B=new VideoDecoder({output:o=>{n.push(o)},error:o=>{throw o}}),C=await Td(i,A);B.configure(C);let Q=0;for(const o of s){const h=o.data;if(!h||h.byteLength===0)continue;const c=(I=(g=o.cts)!=null?g:o.dts)!=null?I:0,f=Math.round(c/e*1e6),l=o.duration&&e>0?Math.round(o.duration/e*1e6):void 0,u=new Uint8Array(h.byteLength);u.set(h);const w=new EncodedVideoChunk({type:o.is_sync?"key":"delta",timestamp:f,duration:l,data:u});try{B.decode(w)}catch(y){console.error("[GiftStage:WC] decoder.decode failed",{chunkIndex:Q,err:y});try{B.close()}catch(p){}throw y}Q++,await new Promise(y=>queueMicrotask(y))}await Jd(B,"after last decode",1e4);const a=B.decodeQueueSize,r=n.length;await Hd(B,{chunksDecoded:Q,outputsBeforeFlush:r,queueBeforeFlush:a}),B.close(),n.sort((o,h)=>o.timestamp-h.timestamp);const E=Float64Array.from(n.map(o=>o.timestamp/1e6));if(n.length===0)throw new Error("WebCodecs: decoder produced no frames");return{frames:n,timesSec:E}}function jn(i,A,t){if(i.length===0)return 0;const e=i.length;if(t<=i[0])return 0;const g=i[e-1];if(t>=A||t>=g)return e-1;for(let I=1;I<e;I++)if(t<i[I])return I-1;return e-1}function vd(i,A,t){if(t.length===0)return 1e-6;const e=t.length-1,g=t[e],I=A.length>e?A[e]:0;let s=0;g.duration!=null&&Number.isFinite(g.duration)&&g.duration>0?s=g.duration/1e6:A.length>=2?s=A[e]-A[e-1]:s=1/30;const n=I+s;let B=i>0?i:n;if(!(B>0)&&A.length>=2){const C=(A[A.length-1]-A[0])/(A.length-1);B=A[A.length-1]+(C>0?C:1/30)}return B>0||(B=Math.max(n,1/30)),B}async function Td(i,A){var t;const e={codec:i,hardwareAcceleration:"prefer-software",...A&&A.byteLength>0?{description:A}:{}};let g=await VideoDecoder.isConfigSupported(e),I=e;if(!g.supported){const s={codec:i,...A&&A.byteLength>0?{description:A}:{}};if(g=await VideoDecoder.isConfigSupported(s),!g.supported)throw new Error(`WebCodecs: unsupported config ${i}`);I=s}return(t=g.config)!=null?t:I}const kQ=`var Xn = (r) => {
1478
+ `,qB=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",JC],{type:"text/javascript;charset=utf-8"});function Er(i){let A;try{if(A=qB&&(self.URL||self.webkitURL).createObjectURL(qB),!A)throw"";const t=new Worker(A,{type:"module",name:i==null?void 0:i.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(JC),{type:"module",name:i==null?void 0:i.name})}}let jA=null,rr=1;const XA=new Map;function or(){return jA||(jA=new Er,jA.addEventListener("message",i=>{const A=i.data;if(!A||A.type!=="decode-batch-result")return;const t=XA.get(A.id);t&&(XA.delete(A.id),t.resolve(A))}),jA.addEventListener("error",i=>{const A=new Error(i.message||"SVGA image decode worker error");for(const[,t]of XA)t.reject(A);XA.clear(),jA=null})),jA}function hr(){return typeof Worker!="undefined"&&typeof createImageBitmap=="function"}async function cr(i,A){const t=or(),e=new Map,g=Math.max(1,Math.min(256,Math.floor(A)));for(let I=0;I<i.length;I+=g){const s=i.slice(I,I+g),n=[],B=[];for(const[a,E]of s){const r=E.buffer.slice(E.byteOffset,E.byteOffset+E.byteLength);n.push({key:a,data:r}),B.push(r)}const C=rr++,Q=await new Promise((a,E)=>{XA.set(C,{resolve:a,reject:E});const r={type:"decode-batch",id:C,items:n};try{t.postMessage(r,B)}catch(o){XA.delete(C),E(o instanceof Error?o:new Error(String(o)))}});for(const a of Q.results)a.bitmap&&e.set(a.key,a.bitmap)}return e}const qn=[73,68,51],lr=128,dr=12,fr=8,js=new Map,tn=new WeakMap,Vn=new WeakMap;async function HC(){await new Promise(i=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>i());return}setTimeout(i,0)})}function ur(i,A){return!!(i.startsWith("audio")||A.length>=3&&A[0]===qn[0]&&A[1]===qn[1]&&A[2]===qn[2])}function wr(i){const A=[],t=new Map;for(const[e,g]of i.images){if(ur(e,g)){const I=g.buffer;t.set(e,I.slice(g.byteOffset,g.byteOffset+g.byteLength));continue}g.length!==0&&A.push([e,g])}return{imageEntries:A,audioBlobs:t}}async function VB(i,A){const t=new Map,e=Math.max(2,Math.min(32,Math.floor(A)));for(let g=0;g<i.length;g+=e){const I=i.slice(g,g+e);await Promise.all(I.map(async([s,n])=>{try{const B=await createImageBitmap(new Blob([new Uint8Array(n)]),{premultiplyAlpha:"none"});t.set(s,B)}catch(B){}})),g+e<i.length&&await HC()}return t}async function zB(i,A){const t=new Map;if(i.length===0)return t;let e=4;const g=2,I=24,s=Math.max(4,A);for(let n=0;n<i.length;){const B=typeof performance!="undefined"?performance.now():0,C=Math.min(n+e,i.length),Q=i.slice(n,C);await Promise.all(Q.map(async([E,r])=>{try{const o=await createImageBitmap(new Blob([new Uint8Array(r)]),{premultiplyAlpha:"none"});t.set(E,o)}catch(o){}}));const a=typeof performance!="undefined"?performance.now()-B:s*.5;a<s*.45&&e<I?e=Math.min(I,e+2):a>s*1.4&&e>g&&(e=Math.max(g,e-2)),n=C,n<i.length&&a>s&&await HC()}return t}function Dr(i){var A,t,e;return{useImageBitmapDecodeWorker:(i==null?void 0:i.useImageBitmapDecodeWorker)!==!1,imageDecodeWorkerChunkSize:(A=i==null?void 0:i.imageDecodeWorkerChunkSize)!=null?A:lr,imageDecodeAdaptiveOnMainThread:(i==null?void 0:i.imageDecodeAdaptiveOnMainThread)!==!1,imageDecodeFrameBudgetMs:(t=i==null?void 0:i.imageDecodeFrameBudgetMs)!=null?t:dr,imageDecodeFixedBatchSize:(e=i==null?void 0:i.imageDecodeFixedBatchSize)!=null?e:fr}}async function yr(i,A){const{imageEntries:t,audioBlobs:e}=wr(i),g=Dr(A);let I;if(g.useImageBitmapDecodeWorker&&hr()&&t.length>0)try{I=await cr(t,g.imageDecodeWorkerChunkSize)}catch(n){console.warn("[GiftStage:SVGA] image decode worker failed, using main thread",n),I=g.imageDecodeAdaptiveOnMainThread?await zB(t,g.imageDecodeFrameBudgetMs):await VB(t,g.imageDecodeFixedBatchSize)}else I=g.imageDecodeAdaptiveOnMainThread?await zB(t,g.imageDecodeFrameBudgetMs):await VB(t,g.imageDecodeFixedBatchSize);return{movie:i,imageBitmaps:I,audioBlobs:e}}async function ZB(i,A){return yr(ar(i),A)}function pr(i){const A={};for(const[t,e]of i.images)A[t]=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);return{version:i.version,params:i.params,sprites:i.sprites,audios:i.audios,images:A}}async function KC(i,A,t,e){if(!A){const I=tn.get(i);if(I)return I;const s=Vn.get(i);if(s)return s}if(A){const I=cB(A);if(I)return I;const s=js.get(A);if(s)return s}const g=iB(async()=>{if(e)try{const B=new Uint8Array(t).slice().buffer,C=await Qr(B);return A?_B(A,C):tn.set(i,C),C}catch(B){console.warn("[GiftStage:SVGA] worker parse failed, using main thread",B)}const I=At()&&Sa(t)||await bC(t),s=At()&&Na(I)||LC(I),n=pr(s);return A?_B(A,n):tn.set(i,n),n});if(!A){const I=g.finally(()=>{Vn.delete(i)});return Vn.set(i,I),I}return js.set(A,g.finally(()=>{js.delete(A)})),js.get(A)}async function mr(i,A){let t;const e=typeof i=="string"?`svga-payload:${i}`:null;if(typeof i=="string"){if(t=new Uint8Array(await Ls(i)),e){const s=cB(e);if(s)return s.params}}else{t=new Uint8Array(i);const s=tn.get(i);if(s)return s.params}const g=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return(await KC(i,e,t,g)).params}async function sB(i,A){let t;const e=typeof i=="string"?`svga-payload:${i}`:null;if(typeof i=="string"){if(t=new Uint8Array(await Ls(i)),e){const s=cB(e);if(s)return iB(async()=>ZB(s,A))}}else t=new Uint8Array(i);const g=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined",I=await KC(i,e,t,g);return iB(async()=>ZB(I,A))}const zn=24;async function Gr(){await new Promise(i=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>i());return}setTimeout(i,0)})}function Fr(){return{rects:[],cursorX:0,shelfY:0,shelfH:0,usedW:0,usedH:0}}function Sr(i,A,t,e,g){const I=Math.max(1,e-t),s=Math.min(1,g,I/Math.max(A.width,A.height));return{key:i,width:A.width,height:A.height,packedWidth:Math.max(1,Math.floor(A.width*s)),packedHeight:Math.max(1,Math.floor(A.height*s)),scale:s}}function nB(i,A,t,e,g){const I=A.packedWidth+e,s=A.packedHeight+e;if(i.cursorX+I<=g&&i.shelfY+Math.max(i.shelfH,s)<=g)return i.rects.push({key:A.key,pageIndex:t,x:i.cursorX,y:i.shelfY,w:A.packedWidth,h:A.packedHeight}),i.cursorX+=I,i.shelfH=Math.max(i.shelfH,s),i.usedW=Math.max(i.usedW,i.cursorX),i.usedH=Math.max(i.usedH,i.shelfY+i.shelfH),!0;const n=i.shelfY+i.shelfH;return n+s>g?!1:(i.shelfY=n,i.shelfH=0,i.cursorX=0,nB(i,A,t,e,g))}function Zn(i,A,t,e){const g=Array.from(i.entries()).map(([s,n])=>Sr(s,n,A,t,e));g.sort((s,n)=>n.packedHeight-s.packedHeight||n.packedWidth-s.packedWidth);const I=[];for(const s of g){let n=!1;for(let Q=0;Q<I.length;Q++)if(nB(I[Q],s,Q,A,t)){n=!0;break}if(n)continue;const B=Fr(),C=I.length;if(!nB(B,s,C,A,t))throw new Error(`SVGA atlas image too large: ${s.key} ${s.width}x${s.height}, max texture size ${t}`);I.push(B)}return I}function WB(i,A){return i.map(t=>({rects:t.rects,atlasW:Math.min(A,jB(Math.max(1,t.usedW))),atlasH:Math.min(A,jB(Math.max(1,t.usedH)))}))}function Nr(i,A){let t=1;for(const e of i.values())t=Math.max(t,e.width,e.height);return Math.max(1/Math.max(t,A),1e-4)}function Rr(i,A,t,e){const g=Math.max(1,Math.floor(e)),I=Zn(i,A,t,1);if(I.length<=g)return WB(I,t);let s=Nr(i,t),n=1,B=Zn(i,A,t,s);if(B.length>g)throw new Error(`SVGA atlas needs ${B.length} pages even at minimum scale, max pages ${g}`);for(let C=0;C<16;C++){const Q=(s+n)*.5,a=Zn(i,A,t,Q);a.length<=g?(B=a,s=Q):n=Q}return WB(B,t)}function jB(i){return i--,i|=i>>1,i|=i>>2,i|=i>>4,i|=i>>8,i|=i>>16,i+1}function Ur(i,A){if(ra())return new OffscreenCanvas(i,A);if(typeof document=="undefined")throw new Error("Atlas compose needs OffscreenCanvas or DOM (document)");const t=document.createElement("canvas");return t.width=i,t.height=A,t}function kr(i){return i.getContext("2d")}function Mr(i,A,t,e,g,I){if(t.w<=0||t.h<=0||I<=0)return;const s=Math.max(1,Math.floor(I*.5)),n=t.x,B=t.y,C=t.w,Q=t.h,a=Math.min(s,n),E=Math.min(s,B),r=Math.min(s,e-(n+C)),o=Math.min(s,g-(B+Q)),h=A.imageSmoothingEnabled;A.imageSmoothingEnabled=!1,a>0&&A.drawImage(i,n,B,1,Q,n-a,B,a,Q),r>0&&A.drawImage(i,n+C-1,B,1,Q,n+C,B,r,Q),E>0&&A.drawImage(i,n,B,C,1,n,B-E,C,E),o>0&&A.drawImage(i,n,B+Q-1,C,1,n,B+Q,C,o),a>0&&E>0&&A.drawImage(i,n,B,1,1,n-a,B-E,a,E),r>0&&E>0&&A.drawImage(i,n+C-1,B,1,1,n+C,B-E,r,E),a>0&&o>0&&A.drawImage(i,n,B+Q-1,1,1,n-a,B+Q,a,o),r>0&&o>0&&A.drawImage(i,n+C-1,B+Q-1,1,1,n+C,B+Q,r,o),A.imageSmoothingEnabled=h}async function xr(i){if(typeof OffscreenCanvas!="undefined"&&i instanceof OffscreenCanvas){if(typeof i.convertToBlob=="function")try{return await(await i.convertToBlob({type:"image/png"})).arrayBuffer()}catch(t){return null}return null}const A=i;return new Promise(t=>{try{A.toBlob(e=>{if(!e){t(null);return}e.arrayBuffer().then(t).catch(()=>t(null))},"image/png")}catch(e){t(null)}})}async function vC(i,A,t=4096,e=2,g){var I,s;if(i.size===0)throw new Error("No images to build atlas from");const n=Math.max(64,Math.min(t,(I=A.maxTextureSize)!=null?I:t)),B=Rr(i,e,n,(s=g==null?void 0:g.maxPages)!=null?s:4);if(B.length===0)throw new Error("No atlas pages built");const C=new Map,Q=[];for(let o=0;o<B.length;o++){const h=B[o],c=Ur(h.atlasW,h.atlasH),u=kr(c);if(!u)throw new Error("Atlas: 2d context unavailable");u.clearRect(0,0,h.atlasW,h.atlasH);for(let w=0;w<h.rects.length;w+=zn){const p=h.rects.slice(w,w+zn);for(const y of p){const m=i.get(y.key);u.drawImage(m,y.x,y.y,y.w,y.h),Mr(c,u,y,h.atlasW,h.atlasH,e)}w+zn<h.rects.length&&await Gr()}const d=(g==null?void 0:g.captureEncodedPng)===!0?xr(c):void 0,f=A.createTexture(c,{width:h.atlasW,height:h.atlasH,filter:"linear",premultiplyAlpha:!0});for(const w of h.rects)C.set(w.key,{x:w.x/h.atlasW,y:w.y/h.atlasH,w:w.w/h.atlasW,h:w.h/h.atlasH,textureIndex:o});Q.push({textureHandle:f,atlasWidth:h.atlasW,atlasHeight:h.atlasH,encodedPngBytesPromise:d})}const a=Q.map(o=>o.textureHandle),E=Q.map(o=>o.encodedPngBytesPromise).filter(o=>!!o),r=Q[0];return{textureHandle:r.textureHandle,textureHandles:a,pages:Q,rects:C,atlasWidth:r.atlasWidth,atlasHeight:r.atlasHeight,encodedPngBytesPromise:r.encodedPngBytesPromise,encodedPngBytesPromises:E.length>0?E:void 0}}var br=Object.defineProperty,TC=(i,A)=>{for(var t in A)br(i,t,{get:A[t],enumerable:!0})},Wn=Math.pow(2,32),P=Math.pow(2,32)-1,Yr=1,Lr=2,_r=4,en=1,gn=2,In=8,sn=16,nn=32,OB=131072,ks=1,Bn=4,Ms=256,xs=512,bs=1024,Ys=2048,qC=-1,UA=0,EA=1,xA=class VC extends ArrayBuffer{constructor(A){super(A),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(A,t){const e=new VC(A.byteLength);return new Uint8Array(e).set(new Uint8Array(A)),e.fileStart=t,e}},Js,BB,k,sA=(k=class{constructor(A,t,e){Fn(this,Js);this._byteLength=0,this.failurePosition=0,this._dynamicSize=1,this._byteOffset=t||0,A instanceof ArrayBuffer?this.buffer=xA.fromArrayBuffer(A,0):A instanceof DataView?(this.dataView=A,t&&(this._byteOffset+=t)):this.buffer=new xA(A||0),this.position=0,this.endianness=e||1}getPosition(){return this.position}_realloc(A){if(!this._dynamicSize)return;const t=this._byteOffset+this.position+A;let e=this._buffer.byteLength;if(t<=e){t>this._byteLength&&(this._byteLength=t);return}for(e<1&&(e=1);t>e;)e*=2;const g=new xA(e),I=new Uint8Array(this._buffer);new Uint8Array(g,0,I.length).set(I),this.buffer=g,this._byteLength=t}_trimAlloc(){if(this._byteLength===this._buffer.byteLength)return;const A=new xA(this._byteLength),t=new Uint8Array(A),e=new Uint8Array(this._buffer,0,t.length);t.set(e),this.buffer=A}get byteLength(){return this._byteLength-this._byteOffset}get buffer(){return this._trimAlloc(),this._buffer}set buffer(A){this._buffer=A,this._dataView=new DataView(A,this._byteOffset),this._byteLength=A.byteLength}get byteOffset(){return this._byteOffset}set byteOffset(A){this._byteOffset=A,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}get dataView(){return this._dataView}set dataView(A){this._byteOffset=A.byteOffset,this._buffer=xA.fromArrayBuffer(A.buffer,0),this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+A.byteLength}seek(A){const t=Math.max(0,Math.min(this.byteLength,A));this.position=isNaN(t)||!isFinite(t)?0:t}isEof(){return this.position>=this._byteLength}mapUint8Array(A){this._realloc(A*1);const t=new Uint8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,t}readInt32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Int32Array(A);return k.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),k.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Int16Array(A);return k.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),k.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Int8Array(A);return k.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readUint32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Uint32Array(A);return k.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),k.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint16Array(A,t){A=A===void 0?this.byteLength-this.position/2:A;const e=new Uint16Array(A);return k.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),k.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readUint8Array(A){A=A===void 0?this.byteLength-this.position:A;const t=new Uint8Array(A);return k.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,A*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t}readFloat64Array(A,t){A=A===void 0?this.byteLength-this.position/8:A;const e=new Float64Array(A);return k.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),k.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readFloat32Array(A,t){A=A===void 0?this.byteLength-this.position/4:A;const e=new Float32Array(A);return k.memcpy(e.buffer,0,this.buffer,this.byteOffset+this.position,A*e.BYTES_PER_ELEMENT),k.arrayToNative(e,t!=null?t:this.endianness),this.position+=e.byteLength,e}readInt32(A){const t=this._dataView.getInt32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readInt16(A){const t=this._dataView.getInt16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readInt8(){const A=this._dataView.getInt8(this.position);return this.position+=1,A}readUint32(A){const t=this._dataView.getUint32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readUint16(A){const t=this._dataView.getUint16(this.position,(A!=null?A:this.endianness)===2);return this.position+=2,t}readUint8(){const A=this._dataView.getUint8(this.position);return this.position+=1,A}readFloat32(A){const t=this._dataView.getFloat32(this.position,(A!=null?A:this.endianness)===2);return this.position+=4,t}readFloat64(A){const t=this._dataView.getFloat64(this.position,(A!=null?A:this.endianness)===2);return this.position+=8,t}static memcpy(A,t,e,g,I){const s=new Uint8Array(A,t,I),n=new Uint8Array(e,g,I);s.set(n)}static arrayToNative(A,t){return t===k.ENDIANNESS?A:this.flipArrayEndianness(A)}static nativeToEndian(A,t){return t&&k.ENDIANNESS===2?A:this.flipArrayEndianness(A)}static flipArrayEndianness(A){const t=new Uint8Array(A.buffer,A.byteOffset,A.byteLength);for(let e=0;e<A.byteLength;e+=A.BYTES_PER_ELEMENT)for(let g=e+A.BYTES_PER_ELEMENT-1,I=e;g>I;g--,I++){const s=t[I];t[I]=t[g],t[g]=s}return A}readString(A,t){return t===void 0||t==="ASCII"?XB(this.mapUint8Array(A===void 0?this.byteLength-this.position:A)):new TextDecoder(t).decode(this.mapUint8Array(A))}readCString(A){let t=0;const e=this.byteLength-this.position,g=new Uint8Array(this._buffer,this._byteOffset+this.position),I=A!==void 0?Math.min(A,e):e;for(;t<I&&g[t]!==0;t++);const s=XB(this.mapUint8Array(t));return A!==void 0?this.position+=I-t:t!==e&&(this.position+=1),s}readInt64(){return this.readInt32()*Wn+this.readUint32()}readUint64(){return this.readUint32()*Wn+this.readUint32()}readUint24(){return(this.readUint8()<<16)+(this.readUint8()<<8)+this.readUint8()}save(A){const t=new Blob([this.buffer]);if(typeof window!="undefined"&&typeof document!="undefined")if(window.URL&&URL.createObjectURL){const e=window.URL.createObjectURL(t),g=document.createElement("a");document.body.appendChild(g),g.setAttribute("href",e),g.setAttribute("download",A),g.setAttribute("target","_self"),g.click(),window.URL.revokeObjectURL(e),document.body.removeChild(g)}else throw new Error("DataStream.save: Can't create object URL.");return t}get dynamicSize(){return this._dynamicSize}set dynamicSize(A){A||this._trimAlloc(),this._dynamicSize=A}shift(A){const t=new xA(this._byteLength-A),e=new Uint8Array(t),g=new Uint8Array(this._buffer,A,e.length);e.set(g),this.buffer=t,this.position-=A}writeInt32Array(A,t){if(this._realloc(A.length*4),A instanceof Int32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt32(A[e],t)}writeInt16Array(A,t){if(this._realloc(A.length*2),A instanceof Int16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeInt16(A[e],t)}writeInt8Array(A){if(this._realloc(A.length*1),A instanceof Int8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapInt8Array(A.length);else for(let t=0;t<A.length;t++)this.writeInt8(A[t])}writeUint32Array(A,t){if(this._realloc(A.length*4),A instanceof Uint32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint32(A[e],t)}writeUint16Array(A,t){if(this._realloc(A.length*2),A instanceof Uint16Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint16Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeUint16(A[e],t)}writeUint8Array(A){if(this._realloc(A.length*1),A instanceof Uint8Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapUint8Array(A.length);else for(let t=0;t<A.length;t++)this.writeUint8(A[t])}writeFloat64Array(A,t){if(this._realloc(A.length*8),A instanceof Float64Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat64Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat64(A[e],t)}writeFloat32Array(A,t){if(this._realloc(A.length*4),A instanceof Float32Array&&this.byteOffset+this.position%A.BYTES_PER_ELEMENT===0)k.memcpy(this._buffer,this.byteOffset+this.position,A.buffer,0,A.byteLength),this.mapFloat32Array(A.length,t);else for(let e=0;e<A.length;e++)this.writeFloat32(A[e],t)}writeInt64(A,t){this._realloc(8),this._dataView.setBigInt64(this.position,BigInt(A),(t!=null?t:this.endianness)===2),this.position+=8}writeInt32(A,t){this._realloc(4),this._dataView.setInt32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeInt16(A,t){this._realloc(2),this._dataView.setInt16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeInt8(A){this._realloc(1),this._dataView.setInt8(this.position,A),this.position+=1}writeUint32(A,t){this._realloc(4),this._dataView.setUint32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeUint16(A,t){this._realloc(2),this._dataView.setUint16(this.position,A,(t!=null?t:this.endianness)===2),this.position+=2}writeUint8(A){this._realloc(1),this._dataView.setUint8(this.position,A),this.position+=1}writeFloat32(A,t){this._realloc(4),this._dataView.setFloat32(this.position,A,(t!=null?t:this.endianness)===2),this.position+=4}writeFloat64(A,t){this._realloc(8),this._dataView.setFloat64(this.position,A,(t!=null?t:this.endianness)===2),this.position+=8}writeUCS2String(A,t,e){e===void 0&&(e=A.length);let g;for(g=0;g<A.length&&g<e;g++)this.writeUint16(A.charCodeAt(g),t);for(;g<e;g++)this.writeUint16(0)}writeString(A,t,e){let g=0;if(t===void 0||t==="ASCII")if(e!==void 0){const I=Math.min(A.length,e);for(g=0;g<I;g++)this.writeUint8(A.charCodeAt(g));for(;g<e;g++)this.writeUint8(0)}else for(g=0;g<A.length;g++)this.writeUint8(A.charCodeAt(g));else this.writeUint8Array(new TextEncoder(t).encode(A.substring(0,e)))}writeCString(A,t){let e=0;if(t!==void 0){const g=Math.min(A.length,t);for(e=0;e<g;e++)this.writeUint8(A.charCodeAt(e));for(;e<t;e++)this.writeUint8(0)}else{for(e=0;e<A.length;e++)this.writeUint8(A.charCodeAt(e));this.writeUint8(0)}}writeStruct(A,t){for(let e=0;e<A.length;e++){const[g,I]=A[e],s=t[g];this.writeType(I,s,t)}}writeType(A,t,e){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.set(this,t,e);let g,I="ASCII";const s=this.position;let n=A;if(typeof A=="string"&&/:/.test(A)){const B=A.split(":");n=B[0],g=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":this.writeUint8(t);break;case"int8":this.writeInt8(t);break;case"uint16":this.writeUint16(t,this.endianness);break;case"int16":this.writeInt16(t,this.endianness);break;case"uint32":this.writeUint32(t,this.endianness);break;case"int32":this.writeInt32(t,this.endianness);break;case"float32":this.writeFloat32(t,this.endianness);break;case"float64":this.writeFloat64(t,this.endianness);break;case"uint16be":this.writeUint16(t,1);break;case"int16be":this.writeInt16(t,1);break;case"uint32be":this.writeUint32(t,1);break;case"int32be":this.writeInt32(t,1);break;case"float32be":this.writeFloat32(t,1);break;case"float64be":this.writeFloat64(t,1);break;case"uint16le":this.writeUint16(t,2);break;case"int16le":this.writeInt16(t,2);break;case"uint32le":this.writeUint32(t,2);break;case"int32le":this.writeInt32(t,2);break;case"float32le":this.writeFloat32(t,2);break;case"float64le":this.writeFloat64(t,2);break;case"cstring":this.writeCString(t,g);break;case"string":this.writeString(t,I,g);break;case"u16string":this.writeUCS2String(t,this.endianness,g);break;case"u16stringle":this.writeUCS2String(t,2,g);break;case"u16stringbe":this.writeUCS2String(t,1,g);break;default:if(Sn(this,Js,BB).call(this,n)){const[,B]=n;for(let C=0;C<t.length;C++)this.writeType(B,t[C]);break}else{this.writeStruct(n,t);break}}g&&(this.position=s,this._realloc(g),this.position=s+g)}writeUint64(A){const t=Math.floor(A/Wn);this.writeUint32(t),this.writeUint32(A&4294967295)}writeUint24(A){this.writeUint8((A&16711680)>>16),this.writeUint8((A&65280)>>8),this.writeUint8(A&255)}adjustUint32(A,t){const e=this.position;this.seek(A),this.writeUint32(t),this.seek(e)}readStruct(A){const t={},e=this.position;for(let g=0;g<A.length;g+=1){const I=A[g][1],s=this.readType(I,t);if(!s){this.failurePosition===0&&(this.failurePosition=this.position),this.position=e;return}t[A[g][0]]=s}return t}readUCS2String(A,t){return String.fromCharCode.apply(void 0,this.readUint16Array(A,t))}readType(A,t){if(typeof A=="function")return A(this,t);if(typeof A=="object"&&!(A instanceof Array))return A.get(this,t);if(A instanceof Array&&A.length!==3)return this.readStruct(A);let e,g,I="ASCII";const s=this.position;let n=A;if(typeof n=="string"&&/:/.test(n)){const B=n.split(":");n=B[0],g=parseInt(B[1])}if(typeof n=="string"&&/,/.test(n)){const B=n.split(",");n=B[0],I=B[1]}switch(n){case"uint8":e=this.readUint8();break;case"int8":e=this.readInt8();break;case"uint16":e=this.readUint16(this.endianness);break;case"int16":e=this.readInt16(this.endianness);break;case"uint32":e=this.readUint32(this.endianness);break;case"int32":e=this.readInt32(this.endianness);break;case"float32":e=this.readFloat32(this.endianness);break;case"float64":e=this.readFloat64(this.endianness);break;case"uint16be":e=this.readUint16(1);break;case"int16be":e=this.readInt16(1);break;case"uint32be":e=this.readUint32(1);break;case"int32be":e=this.readInt32(1);break;case"float32be":e=this.readFloat32(1);break;case"float64be":e=this.readFloat64(1);break;case"uint16le":e=this.readUint16(2);break;case"int16le":e=this.readInt16(2);break;case"uint32le":e=this.readUint32(2);break;case"int32le":e=this.readInt32(2);break;case"float32le":e=this.readFloat32(2);break;case"float64le":e=this.readFloat64(2);break;case"cstring":e=this.readCString(g);break;case"string":e=this.readString(g,I);break;case"u16string":e=this.readUCS2String(g,this.endianness);break;case"u16stringle":e=this.readUCS2String(g,2);break;case"u16stringbe":e=this.readUCS2String(g,1);break;default:if(Sn(this,Js,BB).call(this,n)){const[,B,C]=n,Q=typeof C=="function"?C(t,this,n):typeof C=="string"&&t[C]!==void 0?parseInt(t[C]):typeof C=="number"?C:C==="*"?void 0:parseInt(C);if(typeof B=="string"){const a=B.replace(/(le|be)$/,"");let E;switch(/le$/.test(B)?E=2:/be$/.test(B)&&(E=1),a){case"uint8":e=this.readUint8Array(Q);break;case"uint16":e=this.readUint16Array(Q,E);break;case"uint32":e=this.readUint32Array(Q,E);break;case"int8":e=this.readInt8Array(Q);break;case"int16":e=this.readInt16Array(Q,E);break;case"int32":e=this.readInt32Array(Q,E);break;case"float32":e=this.readFloat32Array(Q,E);break;case"float64":e=this.readFloat64Array(Q,E);break;case"cstring":case"utf16string":case"string":if(Q){e=new Array(Q);for(let r=0;r<Q;r++)e[r]=this.readType(B,t)}else for(e=[];!this.isEof();){const r=this.readType(B,t);if(!r)break;e.push(r)}break}}else if(Q){e=new Array(Q);for(let a=0;a<Q;a++){const E=this.readType(B,t);if(!E)return;e[a]=E}}else for(e=[];;){const a=this.position;try{const E=this.readType(B,t);if(!E){this.position=a;break}e.push(E)}catch(E){this.position=a;break}}break}}return g&&(this.position=s+g),e}mapInt32Array(A,t){this._realloc(A*4);const e=new Int32Array(this._buffer,this.byteOffset+this.position,A);return k.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapInt16Array(A,t){this._realloc(A*2);const e=new Int16Array(this._buffer,this.byteOffset+this.position,A);return k.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapInt8Array(A,t){this._realloc(A*1);const e=new Int8Array(this._buffer,this.byteOffset+this.position,A);return this.position+=A*1,e}mapUint32Array(A,t){this._realloc(A*4);const e=new Uint32Array(this._buffer,this.byteOffset+this.position,A);return k.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}mapUint16Array(A,t){this._realloc(A*2);const e=new Uint16Array(this._buffer,this.byteOffset+this.position,A);return k.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*2,e}mapFloat64Array(A,t){this._realloc(A*8);const e=new Float64Array(this._buffer,this.byteOffset+this.position,A);return k.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*8,e}mapFloat32Array(A,t){this._realloc(A*4);const e=new Float32Array(this._buffer,this.byteOffset+this.position,A);return k.arrayToNative(e,t!=null?t:this.endianness),this.position+=A*4,e}},Js=new WeakSet,BB=function(A){return Array.isArray(A)&&A.length===3&&A[0]==="[]"},k.ENDIANNESS=new Int8Array(new Int16Array([1]).buffer)[0]>0?2:1,k);function XB(i){const A=[];for(let t=0;t<i.length;t++)A[t]=i[t];return String.fromCharCode.apply(void 0,A)}var Os=new Date,Cn=4,PB=3,$B=2,AC=1,mA=Cn,l={setLogLevel(i){i===this.debug?mA=AC:i===this.info?mA=$B:i===this.warn?mA=PB:(this.error,mA=Cn)},debug(i,A){console.debug===void 0&&(console.debug=console.log),AC>=mA&&console.debug("["+l.getDurationString(new Date().getTime()-Os.getTime(),1e3)+"]","["+i+"]",A)},log(i,A){this.debug(i.msg)},info(i,A){$B>=mA&&console.info("["+l.getDurationString(new Date().getTime()-Os.getTime(),1e3)+"]","["+i+"]",A)},warn(i,A){PB>=mA&&console.warn("["+l.getDurationString(new Date().getTime()-Os.getTime(),1e3)+"]","["+i+"]",A)},error(i,A,t){t!=null&&t.onError?t.onError(i,A):Cn>=mA&&console.error("["+l.getDurationString(new Date().getTime()-Os.getTime(),1e3)+"]","["+i+"]",A)},getDurationString(i,A){let t;function e(C,Q){const E=(""+C).split(".");for(;E[0].length<Q;)E[0]="0"+E[0];return E.join(".")}i<0?(t=!0,i=-i):t=!1;let I=i/(A||1);const s=Math.floor(I/3600);I-=s*3600;const n=Math.floor(I/60);I-=n*60;let B=I*1e3;return I=Math.floor(I),B-=I*1e3,B=Math.floor(B),(t?"-":"")+s+":"+e(n,2)+":"+e(I,2)+"."+e(B,3)},printRanges(i){const A=i.length;if(A>0){let t="";for(let e=0;e<A;e++)e>0&&(t+=","),t+="["+l.getDurationString(i.start(e))+","+l.getDurationString(i.end(e))+"]";return t}else return"(empty)"}};function Jr(i,A){l.debug("ArrayBuffer","Trying to create a new buffer of size: "+(i.byteLength+A.byteLength));const t=new Uint8Array(i.byteLength+A.byteLength);return t.set(new Uint8Array(i),0),t.set(new Uint8Array(A),i.byteLength),t.buffer}var Qn=class extends sA{constructor(i){super(new ArrayBuffer,0),this.buffers=[],this.bufferIndex=-1,i&&(this.insertBuffer(i),this.bufferIndex=0)}initialized(){if(this.bufferIndex>-1)return!0;if(this.buffers.length>0){const i=this.buffers[0];return i.fileStart===0?(this.buffer=i,this.bufferIndex=0,l.debug("MultiBufferStream","Stream ready for parsing"),!0):(l.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1)}else return l.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1}reduceBuffer(i,A,t){const e=new Uint8Array(t);return e.set(new Uint8Array(i,A,t)),e.buffer.fileStart=i.fileStart+A,e.buffer.usedBytes=0,e.buffer}insertBuffer(i){let A=!0,t=0;for(;t<this.buffers.length;t++){const e=this.buffers[t];if(i.fileStart<=e.fileStart){if(i.fileStart===e.fileStart)if(i.byteLength>e.byteLength){this.buffers.splice(t,1),t--;continue}else l.warn("MultiBufferStream","Buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+") already appended, ignoring");else i.fileStart+i.byteLength<=e.fileStart||(i=this.reduceBuffer(i,0,e.fileStart-i.fileStart)),l.debug("MultiBufferStream","Appending new buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+")"),this.buffers.splice(t,0,i),t===0&&(this.buffer=i);A=!1;break}else if(i.fileStart<e.fileStart+e.byteLength){const g=e.fileStart+e.byteLength-i.fileStart,I=i.byteLength-g;if(I>0)i=this.reduceBuffer(i,g,I);else{A=!1;break}}}A&&(l.debug("MultiBufferStream","Appending new buffer (fileStart: "+i.fileStart+" - Length: "+i.byteLength+")"),this.buffers.push(i),t===0&&(this.buffer=i))}logBufferLevel(i){const A=[];let t="",e,g=0,I=0;for(let n=0;n<this.buffers.length;n++){const B=this.buffers[n];n===0?(e={start:B.fileStart,end:B.fileStart+B.byteLength},A.push(e),t+="["+e.start+"-"):e.end===B.fileStart?e.end=B.fileStart+B.byteLength:(e={start:B.fileStart,end:B.fileStart+B.byteLength},t+=A[A.length-1].end-1+"], ["+e.start+"-",A.push(e)),g+=B.usedBytes,I+=B.byteLength}A.length>0&&(t+=e.end-1+"]");const s=i?l.info:l.debug;this.buffers.length===0?s("MultiBufferStream","No more buffer in memory"):s("MultiBufferStream",""+this.buffers.length+" stored buffer(s) ("+g+"/"+I+" bytes), continuous ranges: "+t)}cleanBuffers(){for(let i=0;i<this.buffers.length;i++){const A=this.buffers[i];A.usedBytes===A.byteLength&&(l.debug("MultiBufferStream","Removing buffer #"+i),this.buffers.splice(i,1),i--)}}mergeNextBuffer(){if(this.bufferIndex+1<this.buffers.length){const i=this.buffers[this.bufferIndex+1];if(i.fileStart===this.buffer.fileStart+this.buffer.byteLength){const A=this.buffer.byteLength,t=this.buffer.usedBytes,e=this.buffer.fileStart;return this.buffers[this.bufferIndex]=Jr(this.buffer,i),this.buffer=this.buffers[this.bufferIndex],this.buffers.splice(this.bufferIndex+1,1),this.buffer.usedBytes=t,this.buffer.fileStart=e,l.debug("ISOFile","Concatenating buffer for box parsing (length: "+A+"->"+this.buffer.byteLength+")"),!0}else return!1}else return!1}findPosition(i,A,t){let e=-1,g=i===!0?0:this.bufferIndex;for(;g<this.buffers.length;){const s=this.buffers[g];if(s&&s.fileStart<=A)e=g,t&&(s.fileStart+s.byteLength<=A?s.usedBytes=s.byteLength:s.usedBytes=A-s.fileStart,this.logBufferLevel());else break;g++}if(e===-1)return-1;const I=this.buffers[e];return I.fileStart+I.byteLength>=A?(l.debug("MultiBufferStream","Found position in existing buffer #"+e),e):-1}findEndContiguousBuf(i){const A=i!==void 0?i:this.bufferIndex;let t=this.buffers[A];if(this.buffers.length>A+1)for(let e=A+1;e<this.buffers.length;e++){const g=this.buffers[e];if(g.fileStart===t.fileStart+t.byteLength)t=g;else break}return t.fileStart+t.byteLength}getEndFilePositionAfter(i){const A=this.findPosition(!0,i,!1);return A!==-1?this.findEndContiguousBuf(A):i}addUsedBytes(i){this.buffer.usedBytes+=i,this.logBufferLevel()}setAllUsedBytes(){this.buffer.usedBytes=this.buffer.byteLength,this.logBufferLevel()}seek(i,A,t){const e=this.findPosition(A,i,t);return e!==-1?(this.buffer=this.buffers[e],this.bufferIndex=e,this.position=i-this.buffer.fileStart,l.debug("MultiBufferStream","Repositioning parser at buffer position: "+this.position),!0):(l.debug("MultiBufferStream","Position "+i+" not found in buffered data"),!1)}getPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.position}getLength(){return this.byteLength}getEndPosition(){return this.bufferIndex===-1||this.buffers[this.bufferIndex]===void 0?0:this.buffers[this.bufferIndex].fileStart+this.byteLength}getAbsoluteEndPosition(){if(this.buffers.length===0)return 0;const i=this.buffers[this.buffers.length-1];return i.fileStart+i.byteLength}},Hs,It,G=(It=class{constructor(A=0){Fn(this,Hs);this.size=A}get type(){var A;return(A=this.constructor.fourcc)!=null?A:yB(this,Hs)}set type(A){pB(this,Hs,A)}addBox(A){return this.boxes||(this.boxes=[]),this.boxes.push(A),this[A.type+"s"]?this[A.type+"s"].push(A):this[A.type]=A,A}set(A,t){return this[A]=t,this}addEntry(A,t){const e=t||"entries";return this[e]||(this[e]=[]),this[e].push(A),this}writeHeader(A,t){if(this.size+=8,(this.size>P||this.original_size===1)&&(this.size+=8),this.type==="uuid"&&(this.size+=16),l.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+A.getPosition()+(t||"")),this.original_size===0?A.writeUint32(0):this.size>P||this.original_size===1?A.writeUint32(1):(this.sizePosition=A.getPosition(),A.writeUint32(this.size)),A.writeString(this.type,void 0,4),this.type==="uuid"){const e=new Uint8Array(16);for(let g=0;g<16;g++)e[g]=parseInt(this.uuid.substring(g*2,g*2+2),16);A.writeUint8Array(e)}(this.size>P||this.original_size===1)&&(this.sizePosition=A.getPosition(),A.writeUint64(this.size))}write(A){if(this.type==="mdat"){const t=this;if(t.stream){this.size=t.stream.getAbsoluteEndPosition(),this.writeHeader(A);for(const e of t.stream.buffers){const g=new Uint8Array(e);A.writeUint8Array(g)}}else t.data&&(this.size=t.data.length,this.writeHeader(A),A.writeUint8Array(t.data))}else this.size=this.data?this.data.length:0,this.writeHeader(A),this.data&&A.writeUint8Array(this.data)}printHeader(A){this.size+=8,this.size>P&&(this.size+=8),this.type==="uuid"&&(this.size+=16),A.log(A.indent+"size:"+this.size),A.log(A.indent+"type:"+this.type)}print(A){this.printHeader(A)}parse(A){this.type!=="mdat"?this.data=A.readUint8Array(this.size-this.hdr_size):this.size===0?A.seek(A.getEndPosition()):A.seek(this.start+this.size)}parseDataAndRewind(A){this.data=A.readUint8Array(this.size-this.hdr_size),A.seek(this.start+this.hdr_size)}parseLanguage(A){this.language=A.readUint16();const t=[];t[0]=this.language>>10&31,t[1]=this.language>>5&31,t[2]=this.language&31,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)}computeSize(A){const t=A||new Qn;this.write(t)}isEndOfBox(A){const t=A.getPosition(),e=this.start+this.size;return t===e}},Hs=new WeakMap,It.registryId=Symbol.for("BoxIdentifier"),It),D=class extends G{constructor(){super(...arguments),this.flags=0,this.version=0}writeHeader(i){this.size+=4,super.writeHeader(i," v="+this.version+" f="+this.flags),i.writeUint8(this.version),i.writeUint24(this.flags)}printHeader(i){this.size+=4,super.printHeader(i),i.log(i.indent+"version:"+this.version),i.log(i.indent+"flags:"+this.flags)}parseDataAndRewind(i){this.parseFullHeader(i),this.data=i.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,i.seek(this.start+this.hdr_size)}parseFullHeader(i){this.version=i.readUint8(),this.flags=i.readUint24(),this.hdr_size+=4}parse(i){this.parseFullHeader(i),this.data=i.readUint8Array(this.size-this.hdr_size)}},st,W=(st=class{constructor(A){this.grouping_type=A}write(A){A.writeUint8Array(this.data)}parse(A){l.warn("BoxParser",`Unknown sample group type: '${this.grouping_type}'`),this.data=A.readUint8Array(this.description_length)}},st.registryId=Symbol.for("SampleGroupEntryIdentifier"),st),Hr=class extends D{parse(i){this.parseFullHeader(i),this.track_group_id=i.readUint32()}},Kr=class extends G{constructor(i,A,t,e,g){super(A),this.box_name=t,this.hdr_size=e,this.start=g,this.type=i}parse(i){this.from_item_ID=i.readUint16();const A=i.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:i.readUint16()}}},vr=class extends G{constructor(i,A,t,e,g){super(A),this.box_name=t,this.hdr_size=e,this.start=g,this.type=i}parse(i){this.from_item_ID=i.readUint32();const A=i.readUint16();this.references=[];for(let t=0;t<A;t++)this.references[t]={to_item_ID:i.readUint32()}}},Tr=class extends G{constructor(i,A,t,e){super(A),this.hdr_size=t,this.start=e,this.type=i}parse(i){this.track_ids=i.readUint32Array((this.size-this.hdr_size)/4)}write(i){this.size=this.track_ids.length*4,this.writeHeader(i),i.writeUint32Array(this.track_ids)}},CB=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],qr=["compatible_brands","matrix","opcolor","sample_counts","sample_deltas","first_chunk","samples_per_chunk","sample_sizes","chunk_offsets","sample_offsets","sample_description_index","sample_duration"];function Vr(i,A){if(i&&!A)return!1;let t;for(t in i)if(!CB.find(e=>e===t)){if(i[t]instanceof G||A[t]instanceof G)continue;if(typeof i[t]=="undefined"||typeof A[t]=="undefined")continue;if(typeof i[t]=="function"||typeof A[t]=="function")continue;if("subBoxNames"in i&&i.subBoxNames.indexOf(t.slice(0,4))>-1||"subBoxNames"in A&&A.subBoxNames.indexOf(t.slice(0,4))>-1)continue;if(t==="data"||t==="start"||t==="size"||t==="creation_time"||t==="modification_time")continue;if(qr.find(e=>e===t))continue;if(i[t]!==A[t])return!1}return!0}function zC(i,A){if(!Vr(i,A))return!1;for(let t=0;t<CB.length;t++){const e=CB[t];if(i[e]&&A[e]&&!zC(i[e],A[e]))return!1}return!0}function fB(i){let A=i;for(;A;){if("registryId"in A)return A.registryId;A=Object.getPrototypeOf(A)}}var zr=i=>{const A=Symbol.for("SampleGroupEntryIdentifier");return fB(i)===A},Zr=i=>{const A=Symbol.for("SampleEntryIdentifier");return fB(i)===A},Wr=i=>{const A=Symbol.for("BoxIdentifier");return fB(i)===A},nA={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function jr(i){const A={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[t,e]of Object.entries(i)){if(zr(e)){const g="grouping_type"in e?e.grouping_type:void 0;if(!g)throw new Error(`SampleGroupEntry class ${t} does not have a valid static grouping_type. Please ensure it is defined correctly.`);if(g in A.sampleGroupEntry)throw new Error(`SampleGroupEntry class ${t} has a grouping_type that is already registered. Please ensure it is unique.`);A.sampleGroupEntry[g]=e;continue}if(Zr(e)){const g="fourcc"in e?e.fourcc:void 0;if(!g)throw new Error(`SampleEntry class ${t} does not have a valid static fourcc. Please ensure it is defined correctly.`);if(g in A.sampleEntry)throw new Error(`SampleEntry class ${t} has a fourcc that is already registered. Please ensure it is unique.`);A.sampleEntry[g]=e;continue}if(Wr(e)){const g="fourcc"in e?e.fourcc:void 0,I="uuid"in e?e.uuid:void 0;if(g==="uuid"){if(!I)throw new Error(`Box class ${t} has a fourcc of 'uuid' but does not have a valid uuid. Please ensure it is defined correctly.`);if(I in A.uuid)throw new Error(`Box class ${t} has a uuid that is already registered. Please ensure it is unique.`);A.uuid[I]=e;continue}A.box[g]=e;continue}throw new Error(`Box class ${t} does not have a valid static fourcc, uuid, or grouping_type. Please ensure it is defined correctly.`)}return nA.uuid={...A.uuid},nA.sampleEntry={...A.sampleEntry},nA.sampleGroupEntry={...A.sampleGroupEntry},nA.box={...A.box},nA}var ln={};function Or(i){return Object.entries(i).forEach(([A,t])=>ln[A]=t),ln}function Xr(i){return VA(i)}function VA(i){let A="";for(let t=0;t<16;t++){const e=i.readUint8().toString(16);A+=e.length===1?"0"+e:e}return A}function DA(i,A,t){let e,g;const I=i.getPosition();let s=0,n;if(i.getEndPosition()-I<8)return l.debug("BoxParser","Not enough data in stream to parse the type and size of the box"),{code:UA};if(t&&t<8)return l.debug("BoxParser","Not enough bytes left in the parent box to parse a new box"),{code:UA};let B=i.readUint32();const C=i.readString(4);if(C.length!==4||!/^[\x20-\x7E]{4}$/.test(C))return l.error("BoxParser",`Invalid box type: '${C}'`),{code:qC,start:I,type:C};let Q=C;if(l.debug("BoxParser","Found box of type '"+C+"' and size "+B+" at position "+I),s=8,C==="uuid"){if(i.getEndPosition()-i.getPosition()<16||t-s<16)return i.seek(I),l.debug("BoxParser","Not enough bytes left in the parent box to parse a UUID box"),{code:UA};n=Xr(i),s+=16,Q=n}if(B===1){if(i.getEndPosition()-i.getPosition()<8||t&&t-s<8)return i.seek(I),l.warn("BoxParser",'Not enough data in stream to parse the extended size of the "'+C+'" box'),{code:UA};g=B,B=i.readUint64(),s+=8}else if(B===0){if(t)B=t;else if(C!=="mdat")return l.error("BoxParser","Unlimited box size not supported for type: '"+C+"'"),e=new G(B),e.type=C,{code:EA,box:e,size:e.size}}if(B!==0&&B<s)return l.error("BoxParser","Box of type "+C+" has an invalid size "+B+" (too small to be a box)"),{code:UA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&t&&B>t)return l.error("BoxParser","Box of type '"+C+"' has a size "+B+" greater than its container size "+t),{code:UA,type:C,size:B,hdr_size:s,start:I};if(B!==0&&I+B>i.getEndPosition())return i.seek(I),l.info("BoxParser","Not enough data in stream to parse the entire '"+C+"' box"),{code:UA,type:C,size:B,hdr_size:s,start:I,original_size:g};if(A)return{code:EA,type:C,size:B,hdr_size:s,start:I};C in nA.box?e=new nA.box[C](B):C!=="uuid"?(l.warn("BoxParser",`Unknown box type: '${C}'`),e=new G(B),e.type=C,e.has_unparsed_data=!0):n in nA.uuid?e=new nA.uuid[n](B):(l.warn("BoxParser",`Unknown UUID box type: '${n}'`),e=new G(B),e.type=C,e.uuid=n,e.has_unparsed_data=!0),e.original_size=g,e.hdr_size=s,e.start=I,e.write===G.prototype.write&&e.type!=="mdat"&&(l.info("BoxParser","'"+Q+"' box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(i)),e.parse(i);const a=i.getPosition()-(e.start+e.size);return a<0?(l.warn("BoxParser","Parsing of box '"+Q+"' did not read the entire indicated box data size (missing "+-a+" bytes), seeking forward"),i.seek(e.start+e.size)):a>0&&e.size!==0&&(l.error("BoxParser","Parsing of box '"+Q+"' read "+a+" more bytes than the indicated box data size, seeking backwards"),i.seek(e.start+e.size)),{code:EA,box:e,size:e.size}}var x=class extends G{write(i){if(this.size=0,this.writeHeader(i),this.boxes)for(let A=0;A<this.boxes.length;A++)this.boxes[A]&&(this.boxes[A].write(i),this.size+=this.boxes[A].size);l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),i.adjustUint32(this.sizePosition,this.size)}print(i){this.printHeader(i);for(let A=0;A<this.boxes.length;A++)if(this.boxes[A]){const t=i.indent;i.indent+=" ",this.boxes[A].print(i),i.indent=t}}parse(i){let A;for(;i.getPosition()<this.start+this.size;)if(A=DA(i,!1,this.size-(i.getPosition()-this.start)),A.code===EA){const t=A.box;if(this.boxes||(this.boxes=[]),this.boxes.push(t),this.subBoxNames&&this.subBoxNames.indexOf(t.type)!==-1){const e=this.subBoxNames[this.subBoxNames.indexOf(t.type)]+"s";this[e]||(this[e]=[]),this[e].push(t)}else{const e=t.type!=="uuid"?t.type:t.uuid;this[e]?l.warn("ContainerBox",`Box of type ${e} already exists in container box ${this.type}.`):this[e]=t}}else return}},nt,SA=(nt=class extends x{constructor(A,t,e){super(A),this.hdr_size=t,this.start=e}isVideo(){return!1}isAudio(){return!1}isSubtitle(){return!1}isMetadata(){return!1}isHint(){return!1}getCodec(){return this.type.replace(".","")}getWidth(){return""}getHeight(){return""}getChannelCount(){return""}getSampleRate(){return""}getSampleSize(){return""}parseHeader(A){A.readUint8Array(6),this.data_reference_index=A.readUint16(),this.hdr_size+=8}parse(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size)}parseDataAndRewind(A){this.parseHeader(A),this.data=A.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,A.seek(this.start+this.hdr_size)}parseFooter(A){super.parse(A)}writeHeader(A){this.size=8,super.writeHeader(A),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint8(0),A.writeUint16(this.data_reference_index)}writeFooter(A){if(this.boxes)for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A),this.size+=this.boxes[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}write(A){this.writeHeader(A),A.writeUint8Array(this.data),this.size+=this.data.length,l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},nt.registryId=Symbol.for("SampleEntryIdentifier"),nt),tC=class extends SA{},Es=class extends SA{isMetadata(){return!0}},zA=class extends SA{isSubtitle(){return!0}},Pr=class extends SA{},q=class extends SA{parse(i){this.parseHeader(i),i.readUint16(),i.readUint16(),i.readUint32Array(3),this.width=i.readUint16(),this.height=i.readUint16(),this.horizresolution=i.readUint32(),this.vertresolution=i.readUint32(),i.readUint32(),this.frame_count=i.readUint16();const A=Math.min(31,i.readUint8());this.compressorname=i.readString(A),A<31&&i.readString(31-A),this.depth=i.readUint16(),i.readUint16(),this.parseFooter(i)}isVideo(){return!0}getWidth(){return this.width}getHeight(){return this.height}write(i){this.writeHeader(i),this.size+=70,i.writeUint16(0),i.writeUint16(0),i.writeUint32(0),i.writeUint32(0),i.writeUint32(0),i.writeUint16(this.width),i.writeUint16(this.height),i.writeUint32(this.horizresolution),i.writeUint32(this.vertresolution),i.writeUint32(0),i.writeUint16(this.frame_count),i.writeUint8(Math.min(31,this.compressorname.length)),i.writeString(this.compressorname,void 0,31),i.writeUint16(this.depth),i.writeInt16(-1),this.writeFooter(i)}},BA=class extends SA{parse(i){var t,e;this.parseHeader(i),this.version=i.readUint16(),i.readUint16(),i.readUint32(),this.channel_count=i.readUint16(),this.samplesize=i.readUint16(),i.readUint16(),i.readUint16(),this.samplerate=i.readUint32()/65536,((e=(t=i.isofile)==null?void 0:t.ftyp)==null?void 0:e.major_brand.includes("qt"))&&(this.version===1?this.extensions=i.readUint8Array(16):this.version===2&&(this.extensions=i.readUint8Array(36))),this.parseFooter(i)}isAudio(){return!0}getChannelCount(){return this.channel_count}getSampleRate(){return this.samplerate}getSampleSize(){return this.samplesize}write(i){this.writeHeader(i),this.size+=20,i.writeUint32(0),i.writeUint32(0),i.writeUint16(this.channel_count),i.writeUint16(this.samplesize),i.writeUint16(0),i.writeUint16(0),i.writeUint32(this.samplerate<<16),this.writeFooter(i)}},uB=class extends SA{parse(i){this.parseHeader(i),this.parseFooter(i)}write(i){this.writeHeader(i),this.writeFooter(i)}},eC=class extends Array{toString(){let i="<table class='inner-table'>";i+="<thead><tr><th>length</th><th>nalu_data</th></tr></thead>",i+="<tbody>";for(let A=0;A<this.length;A++){const t=this[A];i+="<tr>",i+="<td>"+t.length+"</td>",i+="<td>",i+=t.data.reduce(function(e,g){return e+g.toString(16).padStart(2,"0")},"0x"),i+="</td></tr>"}return i+="</tbody></table>",i}},Bt,ZC=(Bt=class extends G{constructor(){super(...arguments),this.box_name="AVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.AVCProfileIndication=A.readUint8(),this.profile_compatibility=A.readUint8(),this.AVCLevelIndication=A.readUint8(),this.lengthSizeMinusOne=A.readUint8()&3,this.nb_SPS_nalus=A.readUint8()&31;let t=this.size-this.hdr_size-6;this.SPS=new eC;for(let e=0;e<this.nb_SPS_nalus;e++){const g=A.readUint16();this.SPS.push({length:g,data:A.readUint8Array(g)}),t-=2+g}this.nb_PPS_nalus=A.readUint8(),t--,this.PPS=new eC;for(let e=0;e<this.nb_PPS_nalus;e++){const g=A.readUint16();this.PPS.push({length:g,data:A.readUint8Array(g)}),t-=2+g}t>0&&(this.ext=A.readUint8Array(t))}write(A){this.size=7;for(let t=0;t<this.SPS.length;t++)this.size+=2+this.SPS[t].length;for(let t=0;t<this.PPS.length;t++)this.size+=2+this.PPS[t].length;this.ext&&(this.size+=this.ext.length),this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8(this.AVCProfileIndication),A.writeUint8(this.profile_compatibility),A.writeUint8(this.AVCLevelIndication),A.writeUint8(this.lengthSizeMinusOne+252),A.writeUint8(this.SPS.length+224);for(let t=0;t<this.SPS.length;t++)A.writeUint16(this.SPS[t].length),A.writeUint8Array(this.SPS[t].data);A.writeUint8(this.PPS.length);for(let t=0;t<this.PPS.length;t++)A.writeUint16(this.PPS[t].length),A.writeUint8Array(this.PPS[t].data);this.ext&&A.writeUint8Array(this.ext)}},Bt.fourcc="avcC",Bt),Ct,an=(Ct=class extends G{constructor(){super(...arguments),this.box_name="MediaDataBox"}},Ct.fourcc="mdat",Ct),Qt,$r=(Qt=class extends G{constructor(){super(...arguments),this.box_name="ItemDataBox"}},Qt.fourcc="idat",Qt),at,Ao=(at=class extends G{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},at.fourcc="free",at),Et,to=(Et=class extends G{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},Et.fourcc="skip",Et),rt,WC=(rt=class extends D{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},rt.fourcc="hmhd",rt),ot,En=(ot=class extends D{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},ot.fourcc="nmhd",ot),ht,eo=(ht=class extends D{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},ht.fourcc="iods",ht),ct,io=(ct=class extends D{constructor(){super(...arguments),this.box_name="XMLBox"}},ct.fourcc="xml ",ct),lt,go=(lt=class extends D{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},lt.fourcc="bxml",lt),dt,Io=(dt=class extends D{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},dt.fourcc="ipro",dt),ft,QB=(ft=class extends x{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},ft.fourcc="moov",ft),ut,jC=(ut=class extends x{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},ut.fourcc="trak",ut),wt,so=(wt=class extends x{constructor(){super(...arguments),this.box_name="EditBox"}},wt.fourcc="edts",wt),Dt,OC=(Dt=class extends x{constructor(){super(...arguments),this.box_name="MediaBox"}},Dt.fourcc="mdia",Dt),yt,XC=(yt=class extends x{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},yt.fourcc="minf",yt),pt,PC=(pt=class extends x{constructor(){super(...arguments),this.box_name="DataInformationBox"}},pt.fourcc="dinf",pt),mt,$C=(mt=class extends x{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},mt.fourcc="stbl",mt),Gt,aB=(Gt=class extends x{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},Gt.fourcc="mvex",Gt),Ft,AQ=(Ft=class extends x{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},Ft.fourcc="moof",Ft),St,tQ=(St=class extends x{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},St.fourcc="traf",St),Nt,no=(Nt=class extends x{constructor(){super(...arguments),this.box_name="VTTCueBox"}},Nt.fourcc="vttc",Nt),Rt,Bo=(Rt=class extends x{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},Rt.fourcc="mfra",Rt),Ut,Co=(Ut=class extends x{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},Ut.fourcc="meco",Ut),kt,Qo=(kt=class extends x{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},kt.fourcc="hnti",kt),Mt,ao=(Mt=class extends x{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},Mt.fourcc="hinf",Mt),xt,Eo=(xt=class extends x{constructor(){super(...arguments),this.box_name="SubTrackBox"}},xt.fourcc="strk",xt),bt,ro=(bt=class extends x{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},bt.fourcc="strd",bt),Yt,oo=(Yt=class extends x{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},Yt.fourcc="sinf",Yt),Lt,ho=(Lt=class extends x{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},Lt.fourcc="rinf",Lt),_t,co=(_t=class extends x{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},_t.fourcc="schi",_t),Jt,lo=(Jt=class extends x{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Jt.fourcc="trgr",Jt),Ht,fo=(Ht=class extends x{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},Ht.fourcc="udta",Ht),Kt,uo=(Kt=class extends x{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},Kt.fourcc="iprp",Kt),vt,wo=(vt=class extends x{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},vt.fourcc="ipco",vt),Tt,Do=(Tt=class extends x{constructor(){super(...arguments),this.box_name="GroupsListBox"}},Tt.fourcc="grpl",Tt),qt,yo=(qt=class extends x{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},qt.fourcc="j2kH",qt),Vt,po=(Vt=class extends x{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},Vt.fourcc="etyp",Vt),zt,mo=(zt=class extends x{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},zt.fourcc="povd",zt),Zt,eQ=(Zt=class extends D{constructor(){super(...arguments),this.box_name="DataReferenceBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const g=DA(A,!1,this.size-(A.getPosition()-this.start));if(g.code===EA){const I=g.box;this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},Zt.fourcc="dref",Zt),Wt,iQ=(Wt=class extends D{constructor(){super(...arguments),this.box_name="ExtendedLanguageBox"}parse(A){this.parseFullHeader(A),this.extended_language=A.readString(this.size-this.hdr_size)}write(A){this.version=0,this.flags=0,this.size=this.extended_language.length,this.writeHeader(A),A.writeString(this.extended_language)}},Wt.fourcc="elng",Wt),jt,gQ=(jt=class extends G{constructor(){super(...arguments),this.box_name="FileTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},jt.fourcc="ftyp",jt),Ot,IQ=(Ot=class extends D{constructor(){super(...arguments),this.box_name="HandlerBox"}parse(A){if(this.parseFullHeader(A),this.version===0&&(A.readUint32(),this.handler=A.readString(4),A.readUint32Array(3),!this.isEndOfBox(A))){const t=this.start+this.size-A.getPosition();this.name=A.readCString();const e=this.start+this.size-1;A.seek(e),A.readUint8()!==0&&t>1&&(l.info("BoxParser","Warning: hdlr name is not null-terminated, possibly length-prefixed string. Trimming first byte."),this.name=this.name.slice(1))}}write(A){this.size=20+this.name.length+1,this.version=0,this.flags=0,this.writeHeader(A),A.writeUint32(0),A.writeString(this.handler,void 0,4),A.writeUint32Array([0,0,0]),A.writeCString(this.name)}},Ot.fourcc="hdlr",Ot),Xt,sQ=(Xt=class extends G{constructor(){super(...arguments),this.box_name="HEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8();let t=A.readUint8();this.general_profile_space=t>>6,this.general_tier_flag=(t&32)>>5,this.general_profile_idc=t&31,this.general_profile_compatibility=A.readUint32(),this.general_constraint_indicator=A.readUint8Array(6),this.general_level_idc=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3,this.chroma_format_idc=A.readUint8()&3,this.bit_depth_luma_minus8=A.readUint8()&7,this.bit_depth_chroma_minus8=A.readUint8()&7,this.avgFrameRate=A.readUint16(),t=A.readUint8(),this.constantFrameRate=t>>6,this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let g=0;g<e;g++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}write(A){this.size=23;for(let t=0;t<this.nalu_arrays.length;t++){this.size+=3;for(let e=0;e<this.nalu_arrays[t].length;e++)this.size+=2+this.nalu_arrays[t][e].data.length}this.writeHeader(A),A.writeUint8(this.configurationVersion),A.writeUint8((this.general_profile_space<<6)+(this.general_tier_flag<<5)+this.general_profile_idc),A.writeUint32(this.general_profile_compatibility),A.writeUint8Array(this.general_constraint_indicator),A.writeUint8(this.general_level_idc),A.writeUint16(this.min_spatial_segmentation_idc+(15<<24)),A.writeUint8(this.parallelismType+252),A.writeUint8(this.chroma_format_idc+252),A.writeUint8(this.bit_depth_luma_minus8+248),A.writeUint8(this.bit_depth_chroma_minus8+248),A.writeUint16(this.avgFrameRate),A.writeUint8((this.constantFrameRate<<6)+(this.numTemporalLayers<<3)+(this.temporalIdNested<<2)+this.lengthSizeMinusOne),A.writeUint8(this.nalu_arrays.length);for(let t=0;t<this.nalu_arrays.length;t++){A.writeUint8((this.nalu_arrays[t].completeness<<7)+this.nalu_arrays[t].nalu_type),A.writeUint16(this.nalu_arrays[t].length);for(let e=0;e<this.nalu_arrays[t].length;e++)A.writeUint16(this.nalu_arrays[t][e].data.length),A.writeUint8Array(this.nalu_arrays[t][e].data)}}},Xt.fourcc="hvcC",Xt),Pt,nQ=(Pt=class extends D{constructor(){super(...arguments),this.box_name="MediaHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.parseLanguage(A),A.readUint16()}write(A){const t=this.modification_time>P||this.creation_time>P||this.duration>P||this.version===1;this.version=t?1:0,this.size=20,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint16(this.language),A.writeUint16(0)}},Pt.fourcc="mdhd",Pt),$t,BQ=($t=class extends D{constructor(){super(...arguments),this.box_name="MovieExtendsHeaderBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(l.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),this.version===1?this.fragment_duration=A.readUint64():this.fragment_duration=A.readUint32()}write(A){const t=this.fragment_duration>P||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.fragment_duration):A.writeUint32(this.fragment_duration)}},$t.fourcc="mehd",$t),Ae,Go=(Ae=class extends D{constructor(){super(...arguments),this.box_name="ItemInfoEntry"}parse(A){if(this.parseFullHeader(A),(this.version===0||this.version===1)&&(this.item_ID=A.readUint16(),this.item_protection_index=A.readUint16(),this.item_name=A.readCString(),this.content_type=A.readCString(),this.isEndOfBox(A)||(this.content_encoding=A.readCString())),this.version===1){this.extension_type=A.readString(4),l.warn("BoxParser","Cannot parse extension type"),A.seek(this.start+this.size);return}this.version>=2&&(this.version===2?this.item_ID=A.readUint16():this.version===3&&(this.item_ID=A.readUint32()),this.item_protection_index=A.readUint16(),this.item_type=A.readString(4),this.item_name=A.readCString(),this.item_type==="mime"?(this.content_type=A.readCString(),this.content_encoding=A.readCString()):this.item_type==="uri "&&(this.item_uri_type=A.readCString()))}},Ae.fourcc="infe",Ae),te,Fo=(te=class extends D{constructor(){super(...arguments),this.box_name="ItemInfoBox"}parse(A){this.parseFullHeader(A),this.version===0?this.entry_count=A.readUint16():this.entry_count=A.readUint32(),this.item_infos=[];for(let t=0;t<this.entry_count;t++){const e=DA(A,!1,this.size-(A.getPosition()-this.start));if(e.code===EA){const g=e.box;g.type==="infe"?this.item_infos[t]=g:l.error("BoxParser","Expected 'infe' box, got "+e.box.type,A.isofile)}else return}}},te.fourcc="iinf",te),ee,So=(ee=class extends D{constructor(){super(...arguments),this.box_name="ItemLocationBox"}parse(A){this.parseFullHeader(A);let t;t=A.readUint8(),this.offset_size=t>>4&15,this.length_size=t&15,t=A.readUint8(),this.base_offset_size=t>>4&15,this.version===1||this.version===2?this.index_size=t&15:this.index_size=0,this.items=[];let e=0;if(this.version<2)e=A.readUint16();else if(this.version===2)e=A.readUint32();else throw new Error("version of iloc box not supported");for(let g=0;g<e;g++){let I=0,s=0,n=0;if(this.version<2)I=A.readUint16();else if(this.version===2)I=A.readUint32();else throw new Error("version of iloc box not supported");this.version===1||this.version===2?s=A.readUint16()&15:s=0;const B=A.readUint16();switch(this.base_offset_size){case 0:n=0;break;case 4:n=A.readUint32();break;case 8:n=A.readUint64();break;default:throw new Error("Error reading base offset size")}const C=[],Q=A.readUint16();for(let a=0;a<Q;a++){let E=0,r=0,o=0;if(this.version===1||this.version===2)switch(this.index_size){case 0:E=0;break;case 4:E=A.readUint32();break;case 8:E=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.offset_size){case 0:r=0;break;case 4:r=A.readUint32();break;case 8:r=A.readUint64();break;default:throw new Error("Error reading extent index")}switch(this.length_size){case 0:o=0;break;case 4:o=A.readUint32();break;case 8:o=A.readUint64();break;default:throw new Error("Error reading extent index")}C.push({extent_index:E,extent_length:o,extent_offset:r})}this.items.push({base_offset:n,construction_method:s,item_ID:I,data_reference_index:B,extents:C})}}},ee.fourcc="iloc",ee),No={auxl:"Auxiliary image item",base:"Pre-derived image item base",cdsc:"Item describes referenced item",dimg:"Derived image item",dpnd:"Item coding dependency",eroi:"Region",evir:"EVC slice",exbl:"Scalable image item","fdl ":"File delivery",font:"Font item",iloc:"Item data location",mask:"Region mask",mint:"Data integrity",pred:"Predictively coded item",prem:"Pre-multiplied item",tbas:"HEVC tile track base item",text:"Text item",thmb:"Thumbnail image item"},YA,Ro=(YA=class extends D{constructor(){super(...arguments),this.box_name="ItemReferenceBox",this.references=[]}parse(A){for(this.parseFullHeader(A),this.references=[];A.getPosition()<this.start+this.size;){const t=DA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===EA){let e="Unknown item reference";YA.allowed_types.includes(t.type)?e=No[t.type]:l.warn("BoxParser",`Unknown item reference type: '${t.type}'`);const g=this.version===0?new Kr(t.type,t.size,e,t.hdr_size,t.start):new vr(t.type,t.size,e,t.hdr_size,t.start);g.write===G.prototype.write&&g.type!=="mdat"&&(l.warn("BoxParser",g.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),g.parseDataAndRewind(A)),g.parse(A),this.references.push(g)}else return}}},YA.fourcc="iref",YA.allowed_types=["auxl","base","cdsc","dimg","dpnd","eroi","evir","exbl","fdl ","font","iloc","mask","mint","pred","prem","tbas","text","thmb"],YA),ie,Uo=(ie=class extends D{constructor(){super(...arguments),this.box_name="PrimaryItemBox"}parse(A){this.parseFullHeader(A),this.version===0?this.item_id=A.readUint16():this.item_id=A.readUint32()}},ie.fourcc="pitm",ie),ge,ko=(ge=class extends D{constructor(){super(...arguments),this.box_name="MetaBox",this.isQT=!1}parse(A){const t=A.getPosition();if(this.size>8){switch(A.readUint32(),A.readString(4)){case"hdlr":case"mhdr":case"keys":case"ilst":case"ctry":case"lang":this.isQT=!0;break}A.seek(t)}this.isQT||this.parseFullHeader(A),x.prototype.parse.call(this,A)}},ge.fourcc="meta",ge),Ie,CQ=(Ie=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentHeaderBox"}parse(A){this.parseFullHeader(A),this.sequence_number=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=4,this.writeHeader(A),A.writeUint32(this.sequence_number)}},Ie.fourcc="mfhd",Ie),se,QQ=(se=class extends D{constructor(){super(...arguments),this.box_name="MovieHeaderBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.timescale=A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.timescale=A.readUint32(),this.duration=A.readUint32()),this.rate=A.readUint32(),this.volume=A.readUint16()>>8,A.readUint16(),A.readUint32Array(2),this.matrix=A.readInt32Array(9),A.readUint32Array(6),this.next_track_id=A.readUint32()}write(A){const t=this.modification_time>P||this.creation_time>P||this.duration>P||this.version===1;this.version=t?1:0,this.size=96,this.size+=t?12:0,this.flags=0,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.timescale),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.timescale),A.writeUint32(this.duration)),A.writeUint32(this.rate),A.writeUint16(this.volume<<8),A.writeUint16(0),A.writeUint32(0),A.writeUint32(0),A.writeInt32Array(this.matrix),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(0),A.writeUint32(this.next_track_id)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"timescale: "+this.timescale),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"rate: "+this.rate),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"next_track_id: "+this.next_track_id)}},se.fourcc="mvhd",se),ne,Mo=(ne=class extends Es{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},ne.fourcc="mett",ne),Be,xo=(Be=class extends Es{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.parseFooter(A)}},Be.fourcc="metx",Be),Ce,bo=(Ce=class extends G{constructor(){super(...arguments),this.box_name="AV1CodecConfigurationBox"}parse(A){let t=A.readUint8();if((t>>7&1)!==1){l.error("BoxParser","av1C marker problem",A.isofile);return}if(this.version=t&127,this.version!==1){l.error("BoxParser","av1C version "+this.version+" not supported",A.isofile);return}if(t=A.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=t&31,t=A.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=t&3,t=A.readUint8(),this.reserved_1=t>>5&7,this.reserved_1!==0){l.error("BoxParser","av1C reserved_1 parsing problem",A.isofile);return}if(this.initial_presentation_delay_present=t>>4&1,this.initial_presentation_delay_present===1)this.initial_presentation_delay_minus_one=t&15;else if(this.reserved_2=t&15,this.reserved_2!==0){l.error("BoxParser","av1C reserved_2 parsing problem",A.isofile);return}const e=this.size-this.hdr_size-4;this.configOBUs=A.readUint8Array(e)}},Ce.fourcc="av1C",Ce),Qe,Yo=(Qe=class extends D{constructor(){super(...arguments),this.box_name="ElementaryStreamDescriptorBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8Array(this.size-this.hdr_size);if("MPEG4DescriptorParser"in ln){const e=new ln.MPEG4DescriptorParser;this.esd=e.parseOneDescriptor(new sA(t.buffer,0))}}},Qe.fourcc="esds",Qe),ae,Lo=(ae=class extends D{constructor(){super(...arguments),this.box_name="VPCodecConfigurationRecord"}parse(A){if(this.parseFullHeader(A),this.version===1){this.profile=A.readUint8(),this.level=A.readUint8();const t=A.readUint8();this.bitDepth=t>>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=t&1,this.colourPrimaries=A.readUint8(),this.transferCharacteristics=A.readUint8(),this.matrixCoefficients=A.readUint8(),this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}else{this.profile=A.readUint8(),this.level=A.readUint8();let t=A.readUint8();this.bitDepth=t>>4&15,this.colorSpace=t&15,t=A.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=t&1,this.codecIntializationDataSize=A.readUint16(),this.codecIntializationData=A.readUint8Array(this.codecIntializationDataSize)}}},ae.fourcc="vpcC",ae),Ee,_o=(Ee=class extends D{constructor(){super(...arguments),this.box_name="VvcConfigurationBox"}parse(A){this.parseFullHeader(A);const t={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(s){this.held_bits=s.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(s){this.held_bits=s.readUint16(),this.num_held_bits=16},extract_bits:function(s){const n=this.held_bits>>this.num_held_bits-s&(1<<s)-1;return this.num_held_bits-=s,n}};if(t.stream_read_1_bytes(A),t.extract_bits(5),this.lengthSizeMinusOne=t.extract_bits(2),this.ptl_present_flag=t.extract_bits(1),this.ptl_present_flag){t.stream_read_2_bytes(A),this.ols_idx=t.extract_bits(9),this.num_sublayers=t.extract_bits(3),this.constant_frame_rate=t.extract_bits(2),this.chroma_format_idc=t.extract_bits(2),t.stream_read_1_bytes(A),this.bit_depth_minus8=t.extract_bits(3),t.extract_bits(5);{if(t.stream_read_2_bytes(A),t.extract_bits(2),this.num_bytes_constraint_info=t.extract_bits(6),this.general_profile_idc=t.extract_bits(7),this.general_tier_flag=t.extract_bits(1),this.general_level_idc=A.readUint8(),t.stream_read_1_bytes(A),this.ptl_frame_only_constraint_flag=t.extract_bits(1),this.ptl_multilayer_enabled_flag=t.extract_bits(1),this.general_constraint_info=new Uint8Array(this.num_bytes_constraint_info),this.num_bytes_constraint_info){for(let s=0;s<this.num_bytes_constraint_info-1;s++){const n=t.extract_bits(6);t.stream_read_1_bytes(A);const B=t.extract_bits(2);this.general_constraint_info[s]=n<<2|B}this.general_constraint_info[this.num_bytes_constraint_info-1]=t.extract_bits(6)}else t.extract_bits(6);if(this.num_sublayers>1){t.stream_read_1_bytes(A),this.ptl_sublayer_present_mask=0;for(let s=this.num_sublayers-2;s>=0;--s){const n=t.extract_bits(1);this.ptl_sublayer_present_mask|=n<<s}for(let s=this.num_sublayers;s<=8&&this.num_sublayers>1;++s)t.extract_bits(1);this.sublayer_level_idc=[];for(let s=this.num_sublayers-2;s>=0;--s)this.ptl_sublayer_present_mask&1<<s&&(this.sublayer_level_idc[s]=A.readUint8())}if(this.ptl_num_sub_profiles=A.readUint8(),this.general_sub_profile_idc=[],this.ptl_num_sub_profiles)for(let s=0;s<this.ptl_num_sub_profiles;s++)this.general_sub_profile_idc.push(A.readUint32())}this.max_picture_width=A.readUint16(),this.max_picture_height=A.readUint16(),this.avg_frame_rate=A.readUint16()}const e=12,g=13;this.nalu_arrays=[];const I=A.readUint8();for(let s=0;s<I;s++){const n=[];this.nalu_arrays.push(n),t.stream_read_1_bytes(A),n.completeness=t.extract_bits(1),t.extract_bits(2),n.nalu_type=t.extract_bits(5);let B=1;n.nalu_type!==g&&n.nalu_type!==e&&(B=A.readUint16());for(let C=0;C<B;C++){const Q=A.readUint16();n.push({data:A.readUint8Array(Q),length:Q})}}}},Ee.fourcc="vvcC",Ee),re,Jo=(re=class extends G{constructor(){super(...arguments),this.box_name="ColourInformationBox"}parse(A){if(this.colour_type=A.readString(4),this.colour_type==="nclx"){this.colour_primaries=A.readUint16(),this.transfer_characteristics=A.readUint16(),this.matrix_coefficients=A.readUint16();const t=A.readUint8();this.full_range_flag=t>>7}else this.colour_type==="rICC"?this.ICC_profile=A.readUint8Array(this.size-4):this.colour_type==="prof"&&(this.ICC_profile=A.readUint8Array(this.size-4))}},re.fourcc="colr",re);function gt(i,A){let t=Number(i).toString(16);for(A=typeof A=="undefined"?2:A;t.length<A;)t="0"+t;return t}var wn=class extends q{getCodec(){const i=super.getCodec();return this.avcC?`${i}.${gt(this.avcC.AVCProfileIndication)}${gt(this.avcC.profile_compatibility)}${gt(this.avcC.AVCLevelIndication)}`:i}},oe,Ho=(oe=class extends wn{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},oe.fourcc="avc1",oe),he,Ko=(he=class extends wn{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},he.fourcc="avc2",he),ce,vo=(ce=class extends wn{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},ce.fourcc="avc3",ce),le,To=(le=class extends wn{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},le.fourcc="avc4",le),de,qo=(de=class extends q{constructor(){super(...arguments),this.box_name="AV1SampleEntry"}getCodec(){const A=super.getCodec(),t=this.av1C.seq_level_idx_0,e=t<10?"0"+t:t;let g;return this.av1C.seq_profile===2&&this.av1C.high_bitdepth===1?g=this.av1C.twelve_bit===1?"12":"10":this.av1C.seq_profile<=2&&(g=this.av1C.high_bitdepth===1?"10":"08"),A+"."+this.av1C.seq_profile+"."+e+(this.av1C.seq_tier_0?"H":"M")+"."+g}},de.fourcc="av01",de),fe,Vo=(fe=class extends q{},fe.fourcc="dav1",fe),Dn=class extends q{getCodec(){let i=super.getCodec();if(this.hvcC){switch(i+=".",this.hvcC.general_profile_space){case 0:i+="";break;case 1:i+="A";break;case 2:i+="B";break;case 3:i+="C";break}i+=this.hvcC.general_profile_idc,i+=".";let A=this.hvcC.general_profile_compatibility,t=0;for(let I=0;I<32&&(t|=A&1,I!==31);I++)t<<=1,A>>=1;i+=gt(t,0),i+=".",this.hvcC.general_tier_flag===0?i+="L":i+="H",i+=this.hvcC.general_level_idc;let e=!1,g="";for(let I=5;I>=0;I--)(this.hvcC.general_constraint_indicator[I]||e)&&(g="."+gt(this.hvcC.general_constraint_indicator[I],0)+g,e=!0);i+=g}return i}},ue,zo=(ue=class extends Dn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},ue.fourcc="hvc1",ue),we,Zo=(we=class extends Dn{},we.fourcc="hvc2",we),De,Wo=(De=class extends Dn{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},De.fourcc="hev1",De),ye,jo=(ye=class extends Dn{},ye.fourcc="hev2",ye),pe,Oo=(pe=class extends q{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},pe.fourcc="hvt1",pe),me,Xo=(me=class extends q{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},me.fourcc="lhe1",me),Ge,Po=(Ge=class extends q{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},Ge.fourcc="lhv1",Ge),Fe,$o=(Fe=class extends q{},Fe.fourcc="dvh1",Fe),Se,Ah=(Se=class extends q{},Se.fourcc="dvhe",Se),aQ=class extends q{getCodec(){let i=super.getCodec();if(this.vvcC){i+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?i+=".H":i+=".L",i+=this.vvcC.general_level_idc;let A="";if(this.vvcC.general_constraint_info){const t=[];let e=0;e|=this.vvcC.ptl_frame_only_constraint_flag<<7,e|=this.vvcC.ptl_multilayer_enabled_flag<<6;let g;for(let I=0;I<this.vvcC.general_constraint_info.length;++I)e|=this.vvcC.general_constraint_info[I]>>2&63,t.push(e),e&&(g=I),e=this.vvcC.general_constraint_info[I]>>2&3;if(g===void 0)A=".CA";else{A=".C";const I="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let s=0,n=0;for(let B=0;B<=g;++B)for(s=s<<8|t[B],n+=8;n>=5;){const C=s>>n-5&31;A+=I[C],n-=5,s&=(1<<n)-1}n&&(s<<=5-n,A+=I[s&31])}}i+=A}return i}},Ne,th=(Ne=class extends aQ{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ne.fourcc="vvc1",Ne),Re,eh=(Re=class extends aQ{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Re.fourcc="vvi1",Re),Ue,ih=(Ue=class extends q{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ue.fourcc="vvs1",Ue),ke,gh=(ke=class extends q{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},ke.fourcc="vvcN",ke),EQ=class extends q{getCodec(){const i=super.getCodec();let A=this.vpcC.level;A===0&&(A="00");let t=this.vpcC.bitDepth;return t===8&&(t="08"),`${i}.0${this.vpcC.profile}.${A}.${t}`}},Me,Ih=(Me=class extends EQ{},Me.fourcc="vp08",Me),xe,sh=(xe=class extends EQ{},xe.fourcc="vp09",xe),be,nh=(be=class extends q{},be.fourcc="avs3",be),Ye,Bh=(Ye=class extends q{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},Ye.fourcc="j2ki",Ye),Le,Ch=(Le=class extends q{},Le.fourcc="mjp2",Le),_e,Qh=(_e=class extends q{},_e.fourcc="mjpg",_e),Je,ah=(Je=class extends q{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Je.fourcc="uncv",Je),He,Eh=(He=class extends q{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},He.fourcc="mp4v",He),Ke,rh=(Ke=class extends BA{constructor(){super(...arguments),this.box_name="MP4AudioSampleEntry"}getCodec(){const A=super.getCodec();if(this.esds&&this.esds.esd){const t=this.esds.esd.getOTI(),e=this.esds.esd.getAudioConfig();return A+"."+gt(t)+(e?"."+e:"")}else return A}},Ke.fourcc="mp4a",Ke),ve,oh=(ve=class extends BA{},ve.fourcc="m4ae",ve),Te,hh=(Te=class extends BA{},Te.fourcc="ac-3",Te),qe,ch=(qe=class extends BA{},qe.fourcc="ac-4",qe),Ve,lh=(Ve=class extends BA{},Ve.fourcc="ec-3",Ve),ze,dh=(ze=class extends BA{},ze.fourcc="Opus",ze),Ze,fh=(Ze=class extends BA{},Ze.fourcc="mha1",Ze),We,uh=(We=class extends BA{},We.fourcc="mha2",We),je,wh=(je=class extends BA{},je.fourcc="mhm1",je),Oe,Dh=(Oe=class extends BA{},Oe.fourcc="mhm2",Oe),Xe,yh=(Xe=class extends BA{},Xe.fourcc="fLaC",Xe),Pe,ph=(Pe=class extends q{},Pe.fourcc="encv",Pe),$e,mh=($e=class extends BA{},$e.fourcc="enca",$e),Ai,Gh=(Ai=class extends zA{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Ai.fourcc="encu",Ai),ti,Fh=(ti=class extends uB{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ti.fourcc="encs",ti),ei,Sh=(ei=class extends uB{},ei.fourcc="mp4s",ei),ii,Nh=(ii=class extends Pr{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ii.fourcc="enct",ii),gi,Rh=(gi=class extends Es{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},gi.fourcc="encm",gi),Ii,Uh=(Ii=class extends q{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},Ii.fourcc="resv",Ii),si,kh=(si=class extends zA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},si.fourcc="sbtt",si),ni,rQ=(ni=class extends zA{parse(A){this.parseHeader(A),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.auxiliary_mime_types=A.readCString(),this.parseFooter(A)}write(A){this.writeHeader(A),this.size+=this.namespace.length+1+this.schema_location.length+1+this.auxiliary_mime_types.length+1,A.writeCString(this.namespace),A.writeCString(this.schema_location),A.writeCString(this.auxiliary_mime_types),this.writeFooter(A)}},ni.fourcc="stpp",ni),Bi,Mh=(Bi=class extends zA{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}getCodec(){const A=super.getCodec();return this.mime_format?A+"."+this.mime_format:A}},Bi.fourcc="stxt",Bi),Ci,xh=(Ci=class extends zA{parse(A){this.parseHeader(A),this.displayFlags=A.readUint32(),this.horizontal_justification=A.readInt8(),this.vertical_justification=A.readInt8(),this.bg_color_rgba=A.readUint8Array(4),this.box_record=A.readInt16Array(4),this.style_record=A.readUint8Array(12),this.parseFooter(A)}},Ci.fourcc="tx3g",Ci),Qi,bh=(Qi=class extends Es{parse(A){this.parseHeader(A),this.parseFooter(A)}},Qi.fourcc="wvtt",Qi),ai,Yh=(ai=class extends D{constructor(){super(...arguments),this.box_name="SampleToGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),this.version===1?this.grouping_type_parameter=A.readUint32():this.grouping_type_parameter=0,this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++)this.entries.push({sample_count:A.readInt32(),group_description_index:A.readInt32()})}write(A){this.grouping_type_parameter?this.version=1:this.version=0,this.flags=0,this.size=8+8*this.entries.length+(this.version===1?4:0),this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.grouping_type_parameter),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];A.writeInt32(e.sample_count),A.writeInt32(e.group_description_index)}}},ai.fourcc="sbgp",ai),Ei,Lh=(Ei=class extends D{constructor(){super(...arguments),this.box_name="SampleDependencyTypeBox"}parse(A){this.parseFullHeader(A);const t=this.size-this.hdr_size;this.is_leading=[],this.sample_depends_on=[],this.sample_is_depended_on=[],this.sample_has_redundancy=[];for(let e=0;e<t;e++){const g=A.readUint8();this.is_leading[e]=g>>6,this.sample_depends_on[e]=g>>4&3,this.sample_is_depended_on[e]=g>>2&3,this.sample_has_redundancy[e]=g&3}}},Ei.fourcc="sdtp",Ei),ri,_h=(ri=class extends D{constructor(){super(...arguments),this.box_name="SampleGroupDescriptionBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readString(4),l.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),this.version===1?this.default_length=A.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=A.readUint32()),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){let g;this.grouping_type in nA.sampleGroupEntry?g=new nA.sampleGroupEntry[this.grouping_type](this.grouping_type):g=new W(this.grouping_type),this.entries.push(g),this.version===1?this.default_length===0?g.description_length=A.readUint32():g.description_length=this.default_length:g.description_length=this.default_length,g.write===W.prototype.write&&(l.info("BoxParser","SampleGroup for type "+this.grouping_type+" writing not yet implemented, keeping unparsed data in memory for later write"),g.data=A.readUint8Array(g.description_length),A.seek(A.getPosition()-g.description_length)),g.parse(A)}}write(A){this.flags=0,this.size=12;for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&(this.default_length===0&&(this.size+=4),this.size+=e.data.length)}this.writeHeader(A),A.writeString(this.grouping_type,void 0,4),this.version===1&&A.writeUint32(this.default_length),this.version>=2&&A.writeUint32(this.default_sample_description_index),A.writeUint32(this.entries.length);for(let t=0;t<this.entries.length;t++){const e=this.entries[t];this.version===1&&this.default_length===0&&A.writeUint32(e.description_length),e.write(A)}}},ri.fourcc="sgpd",ri),oi,Jh=(oi=class extends D{constructor(){super(...arguments),this.box_name="CompressedSegmentIndexBox"}parse(A){this.parseFullHeader(A),this.reference_ID=A.readUint32(),this.timescale=A.readUint32(),this.version===0?(this.earliest_presentation_time=A.readUint32(),this.first_offset=A.readUint32()):(this.earliest_presentation_time=A.readUint64(),this.first_offset=A.readUint64()),A.readUint16(),this.references=[];const t=A.readUint16();for(let e=0;e<t;e++){const g=A.readUint32(),I=A.readUint32(),s=A.readUint32();this.references.push({reference_type:g>>31&1,referenced_size:g&2147483647,subsegment_duration:I,starts_with_SAP:s>>31&1,SAP_type:s>>28&7,SAP_delta_time:s&268435455})}}write(A){const t=this.earliest_presentation_time>P||this.first_offset>P||this.version===1;this.version=t?1:0,this.size=12+12*this.references.length,this.size+=t?16:8,this.flags=0,this.writeHeader(A),A.writeUint32(this.reference_ID),A.writeUint32(this.timescale),t?(A.writeUint64(this.earliest_presentation_time),A.writeUint64(this.first_offset)):(A.writeUint32(this.earliest_presentation_time),A.writeUint32(this.first_offset)),A.writeUint16(0),A.writeUint16(this.references.length);for(let e=0;e<this.references.length;e++){const g=this.references[e];A.writeUint32(g.reference_type<<31|g.referenced_size),A.writeUint32(g.subsegment_duration),A.writeUint32(g.starts_with_SAP<<31|g.SAP_type<<28|g.SAP_delta_time)}}},oi.fourcc="sidx",oi),hi,oQ=(hi=class extends D{constructor(){super(...arguments),this.box_name="SoundMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.balance=A.readUint16(),A.readUint16()}write(A){this.version=0,this.size=4,this.writeHeader(A),A.writeUint16(this.balance),A.writeUint16(0)}},hi.fourcc="smhd",hi),ci,hQ=(ci=class extends D{constructor(){super(...arguments),this.box_name="ChunkOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+4*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length),A.writeUint32Array(this.chunk_offsets)}unpack(A){for(let t=0;t<this.chunk_offsets.length;t++)A[t].offset=this.chunk_offsets[t]}},ci.fourcc="stco",ci),li,cQ=(li=class extends D{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},li.fourcc="sthd",li),di,lQ=(di=class extends D{constructor(){super(...arguments),this.box_name="SampleToChunkBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.first_chunk=[],this.samples_per_chunk=[],this.sample_description_index=[],this.version===0)for(let e=0;e<t;e++)this.first_chunk.push(A.readUint32()),this.samples_per_chunk.push(A.readUint32()),this.sample_description_index.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+12*this.first_chunk.length,this.writeHeader(A),A.writeUint32(this.first_chunk.length);for(let t=0;t<this.first_chunk.length;t++)A.writeUint32(this.first_chunk[t]),A.writeUint32(this.samples_per_chunk[t]),A.writeUint32(this.sample_description_index[t])}unpack(A){let t=0,e=0;for(let g=0;g<this.first_chunk.length;g++)for(let I=0;I<(g+1<this.first_chunk.length?this.first_chunk[g+1]:1/0);I++){e++;for(let s=0;s<this.samples_per_chunk[g];s++){if(A[t])A[t].description_index=this.sample_description_index[g],A[t].chunk_index=e;else return;t++}}}},di.fourcc="stsc",di),fi,dQ=(fi=class extends D{constructor(){super(...arguments),this.box_name="SampleDescriptionBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=1;e<=t;e++){const g=DA(A,!0,this.size-(A.getPosition()-this.start));if(g.code===EA){let I;g.type in nA.sampleEntry?(I=new nA.sampleEntry[g.type](g.size),I.hdr_size=g.hdr_size,I.start=g.start):(l.warn("BoxParser",`Unknown sample entry type: '${g.type}'`),I=new SA(g.size,g.hdr_size,g.start),I.type=g.type),I.write===SA.prototype.write&&(l.info("BoxParser","SampleEntry "+I.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),I.parseDataAndRewind(A)),I.parse(A),this.entries.push(I)}else return}}write(A){this.version=0,this.flags=0,this.size=0,this.writeHeader(A),A.writeUint32(this.entries.length),this.size+=4;for(let t=0;t<this.entries.length;t++)this.entries[t].write(A),this.size+=this.entries[t].size;l.debug("BoxWriter","Adjusting box "+this.type+" with new size "+this.size),A.adjustUint32(this.sizePosition,this.size)}},fi.fourcc="stsd",fi),ui,fQ=(ui=class extends D{constructor(){super(...arguments),this.box_name="SampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.sample_size=A.readUint32(),this.sample_count=A.readUint32();for(let t=0;t<this.sample_count;t++)this.sample_size===0?this.sample_sizes.push(A.readUint32()):this.sample_sizes[t]=this.sample_size}}write(A){let t=!0;if(this.version=0,this.flags=0,this.sample_sizes.length>0){let e=0;for(;e+1<this.sample_sizes.length;)if(this.sample_sizes[e+1]!==this.sample_sizes[0]){t=!1;break}else e++}else t=!1;this.size=8,t||(this.size+=4*this.sample_sizes.length),this.writeHeader(A),t?A.writeUint32(this.sample_sizes[0]):A.writeUint32(0),A.writeUint32(this.sample_sizes.length),t||A.writeUint32Array(this.sample_sizes)}unpack(A){for(let t=0;t<this.sample_sizes.length;t++)A[t].size=this.sample_sizes[t]}},ui.fourcc="stsz",ui),wi,uQ=(wi=class extends D{constructor(){super(...arguments),this.box_name="TimeToSampleBox",this.sample_counts=[],this.sample_deltas=[]}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts.length=0,this.sample_deltas.length=0,this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());let g=A.readInt32();g<0&&(l.warn("BoxParser","File uses negative stts sample delta, using value 1 instead, sync may be lost!"),g=1),this.sample_deltas.push(g)}}write(A){this.version=0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),A.writeUint32(this.sample_deltas[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let g=0;g<this.sample_counts[e];g++)t===0?A[t].dts=0:A[t].dts=A[t-1].dts+this.sample_deltas[e],t++}},wi.fourcc="stts",wi),Di,wQ=(Di=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentBaseMediaDecodeTimeBox"}parse(A){this.parseFullHeader(A),this.version===1?this.baseMediaDecodeTime=A.readUint64():this.baseMediaDecodeTime=A.readUint32()}write(A){const t=this.baseMediaDecodeTime>P||this.version===1;this.version=t?1:0,this.size=4,this.size+=t?4:0,this.flags=0,this.writeHeader(A),t?A.writeUint64(this.baseMediaDecodeTime):A.writeUint32(this.baseMediaDecodeTime)}},Di.fourcc="tfdt",Di),yi,DQ=(yi=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentHeaderBox"}parse(A){this.parseFullHeader(A);let t=0;this.track_id=A.readUint32(),this.size-this.hdr_size>t&&this.flags&en?(this.base_data_offset=A.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&gn?(this.default_sample_description_index=A.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&In?(this.default_sample_duration=A.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&sn?(this.default_sample_size=A.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&nn?(this.default_sample_flags=A.readUint32(),t+=4):this.default_sample_flags=0}write(A){this.version=0,this.size=4,this.flags&en&&(this.size+=8),this.flags&gn&&(this.size+=4),this.flags&In&&(this.size+=4),this.flags&sn&&(this.size+=4),this.flags&nn&&(this.size+=4),this.writeHeader(A),A.writeUint32(this.track_id),this.flags&en&&A.writeUint64(this.base_data_offset),this.flags&gn&&A.writeUint32(this.default_sample_description_index),this.flags&In&&A.writeUint32(this.default_sample_duration),this.flags&sn&&A.writeUint32(this.default_sample_size),this.flags&nn&&A.writeUint32(this.default_sample_flags)}},yi.fourcc="tfhd",yi),pi,yQ=(pi=class extends D{constructor(){super(...arguments),this.box_name="TrackHeaderBox",this.layer=0,this.alternate_group=0}parse(A){this.parseFullHeader(A),this.version===1?(this.creation_time=A.readUint64(),this.modification_time=A.readUint64(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint64()):(this.creation_time=A.readUint32(),this.modification_time=A.readUint32(),this.track_id=A.readUint32(),A.readUint32(),this.duration=A.readUint32()),A.readUint32Array(2),this.layer=A.readInt16(),this.alternate_group=A.readInt16(),this.volume=A.readInt16()>>8,A.readUint16(),this.matrix=A.readInt32Array(9),this.width=A.readUint32(),this.height=A.readUint32()}write(A){var e;const t=this.modification_time>P||this.creation_time>P||this.duration>P||this.version===1;this.version=t?1:0,this.size=80,this.size+=t?12:0,this.flags=(e=this.flags)!=null?e:3,this.writeHeader(A),t?(A.writeUint64(this.creation_time),A.writeUint64(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint64(this.duration)):(A.writeUint32(this.creation_time),A.writeUint32(this.modification_time),A.writeUint32(this.track_id),A.writeUint32(0),A.writeUint32(this.duration)),A.writeUint32Array([0,0]),A.writeInt16(this.layer),A.writeInt16(this.alternate_group),A.writeInt16(this.volume<<8),A.writeInt16(0),A.writeInt32Array(this.matrix),A.writeUint32(this.width),A.writeUint32(this.height)}print(A){super.printHeader(A),A.log(A.indent+"creation_time: "+this.creation_time),A.log(A.indent+"modification_time: "+this.modification_time),A.log(A.indent+"track_id: "+this.track_id),A.log(A.indent+"duration: "+this.duration),A.log(A.indent+"volume: "+(this.volume>>8)),A.log(A.indent+"matrix: "+this.matrix.join(", ")),A.log(A.indent+"layer: "+this.layer),A.log(A.indent+"alternate_group: "+this.alternate_group),A.log(A.indent+"width: "+this.width),A.log(A.indent+"height: "+this.height)}},pi.fourcc="tkhd",pi),mi,EB=(mi=class extends D{constructor(){super(...arguments),this.box_name="TrackExtendsBox"}parse(A){this.parseFullHeader(A),this.track_id=A.readUint32(),this.default_sample_description_index=A.readUint32(),this.default_sample_duration=A.readUint32(),this.default_sample_size=A.readUint32(),this.default_sample_flags=A.readUint32()}write(A){this.version=0,this.flags=0,this.size=20,this.writeHeader(A),A.writeUint32(this.track_id),A.writeUint32(this.default_sample_description_index),A.writeUint32(this.default_sample_duration),A.writeUint32(this.default_sample_size),A.writeUint32(this.default_sample_flags)}},mi.fourcc="trex",mi),Gi,pQ=(Gi=class extends D{constructor(){super(...arguments),this.box_name="TrackRunBox",this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[]}parse(A){this.parseFullHeader(A);let t=0;if(this.sample_count=A.readUint32(),t+=4,this.size-this.hdr_size>t&&this.flags&ks?(this.data_offset=A.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&Bn?(this.first_sample_flags=A.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(let e=0;e<this.sample_count;e++)this.flags&Ms&&(this.sample_duration[e]=A.readUint32()),this.flags&xs&&(this.sample_size[e]=A.readUint32()),this.flags&bs&&(this.sample_flags[e]=A.readUint32()),this.flags&Ys&&(this.version===0?this.sample_composition_time_offset[e]=A.readUint32():this.sample_composition_time_offset[e]=A.readInt32())}write(A){this.size=4,this.flags&ks&&(this.size+=4),this.flags&Bn&&(this.size+=4),this.flags&Ms&&(this.size+=4*this.sample_duration.length),this.flags&xs&&(this.size+=4*this.sample_size.length),this.flags&bs&&(this.size+=4*this.sample_flags.length),this.flags&Ys&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(A),A.writeUint32(this.sample_count),this.flags&ks&&(this.data_offset_position=A.getPosition(),A.writeInt32(this.data_offset)),this.flags&Bn&&A.writeUint32(this.first_sample_flags);for(let t=0;t<this.sample_count;t++)this.flags&Ms&&A.writeUint32(this.sample_duration[t]),this.flags&xs&&A.writeUint32(this.sample_size[t]),this.flags&bs&&A.writeUint32(this.sample_flags[t]),this.flags&Ys&&(this.version===0?A.writeUint32(this.sample_composition_time_offset[t]):A.writeInt32(this.sample_composition_time_offset[t]))}},Gi.fourcc="trun",Gi),Fi,mQ=(Fi=class extends D{constructor(){super(...arguments),this.box_name="DataEntryUrlBox"}parse(A){this.parseFullHeader(A),this.flags!==1&&(this.location=A.readCString())}write(A){this.version=0,this.location?(this.flags=0,this.size=this.location.length+1):(this.flags=1,this.size=0),this.writeHeader(A),this.location&&A.writeCString(this.location)}},Fi.fourcc="url ",Fi),Si,GQ=(Si=class extends D{constructor(){super(...arguments),this.box_name="VideoMediaHeaderBox"}parse(A){this.parseFullHeader(A),this.graphicsmode=A.readUint16(),this.opcolor=A.readUint16Array(3)}write(A){this.version=0,this.size=8,this.writeHeader(A),A.writeUint16(this.graphicsmode),A.writeUint16Array(this.opcolor)}},Si.fourcc="vmhd",Si),jn=class{constructor(i,A,t){this.grouping_type=i,this.grouping_type_parameter=A,this.sbgp=t,this.last_sample_in_run=-1,this.entry_index=-1}},Hh=class kA{constructor(A,t=!0){this.boxes=[],this.mdats=[],this.moofs=[],this.isProgressive=!1,this.moovStartFound=!1,this.moovStartSent=!1,this.readySent=!1,this.sampleListBuilt=!1,this.fragmentedTracks=[],this.extractedTracks=[],this.isFragmentationInitialized=!1,this.sampleProcessingStarted=!1,this.nextMoofNumber=0,this.itemListBuilt=!1,this.sidxSent=!1,this.items=[],this.entity_groups=[],this.itemsDataSize=0,this.lastMoofIndex=0,this.samplesDataSize=0,this.lastBoxStartPosition=0,this.nextParsePosition=0,this.discardMdatData=!0,this.discardMdatData=t,A?(this.stream=A,this.parse()):this.stream=new Qn,this.stream.isofile=this}setSegmentOptions(A,t,e){var C,Q,a;const{sizePerSegment:g=Number.MAX_SAFE_INTEGER,rapAlignement:I=!0}=e;let s=(Q=(C=e.nbSamples)!=null?C:e.nbSamplesPerFragment)!=null?Q:1e3;const n=(a=e.nbSamplesPerFragment)!=null?a:s;if(s<=0||n<=0||g<=0){l.error("ISOFile",`Invalid segment options: nbSamples=${s}, nbSamplesPerFragment=${n}, sizePerSegment=${g}`);return}if(s<n&&(l.warn("ISOFile",`nbSamples (${s}) is less than nbSamplesPerFragment (${n}), setting nbSamples to nbSamplesPerFragment`),s=n),this.fragmentedTracks.some(E=>E.nb_samples!==s)){l.error("ISOFile",`Cannot set segment options for track ${A}: nbSamples (${s}) does not match existing tracks`);return}const B=this.getTrackById(A);if(B){const E={id:A,user:t,trak:B,segmentStream:void 0,nb_samples:s,nb_samples_per_fragment:n,size_per_segment:g,rapAlignement:I,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(E),B.nextSample=0}this.discardMdatData&&l.warn("ISOFile","Segmentation options set but discardMdatData is true, samples will not be segmented")}unsetSegmentOptions(A){let t=-1;for(let e=0;e<this.fragmentedTracks.length;e++)this.fragmentedTracks[e].id===A&&(t=e);t>-1&&this.fragmentedTracks.splice(t,1)}setExtractionOptions(A,t,{nbSamples:e=1e3}={}){const g=this.getTrackById(A);g&&(this.extractedTracks.push({id:A,user:t,trak:g,nb_samples:e,samples:[]}),g.nextSample=0),this.discardMdatData&&l.warn("ISOFile","Extraction options set but discardMdatData is true, samples will not be extracted")}unsetExtractionOptions(A){let t=-1;for(let e=0;e<this.extractedTracks.length;e++)this.extractedTracks[e].id===A&&(t=e);t>-1&&this.extractedTracks.splice(t,1)}parse(){if(!(this.restoreParsePosition&&!this.restoreParsePosition()))for(;;)if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}else{this.saveParsePosition&&this.saveParsePosition();const t=DA(this.stream,!1);if(t.code===UA)if(this.processIncompleteBox){if(this.processIncompleteBox(t))continue;return}else return;else if(t.code===EA){const e=t.box;if(this.boxes.push(e),e.type==="uuid")this[e.uuid]!==void 0&&l.warn("ISOFile","Duplicate Box of uuid: "+e.uuid+", overriding previous occurrence"),this[e.uuid]=e;else switch(e.type){case"mdat":this.mdats.push(e),this.transferMdatData(e);break;case"moof":this.moofs.push(e);break;case"free":case"skip":break;case"moov":this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0);default:this[e.type]!==void 0?Array.isArray(this[e.type+"s"])?(l.info("ISOFile",`Found multiple boxes of type ${e.type} in ISOFile, adding to array`),this[e.type+"s"].push(e)):(l.warn("ISOFile",`Found multiple boxes of type ${e.type} but no array exists. Creating array dynamically.`),this[e.type+"s"]=[this[e.type],e]):(this[e.type]=e,Array.isArray(this[e.type+"s"])&&this[e.type+"s"].push(e));break}this.updateUsedBytes&&this.updateUsedBytes(e,t)}else if(t.code===qC){l.error("ISOFile",`Invalid data found while parsing box of type '${t.type}' at position ${t.start}. Aborting parsing.`,this);break}}}checkBuffer(A){if(!A)throw new Error("Buffer must be defined and non empty");return A.byteLength===0?(l.warn("ISOFile","Ignoring empty buffer (fileStart: "+A.fileStart+")"),this.stream.logBufferLevel(),!1):(l.info("ISOFile","Processing buffer (fileStart: "+A.fileStart+")"),A.usedBytes=0,this.stream.insertBuffer(A),this.stream.logBufferLevel(),this.stream.initialized()?!0:(l.warn("ISOFile","Not ready to start parsing"),!1))}appendBuffer(A,t){let e;if(this.checkBuffer(A))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(e=this.nextSeekPosition,this.nextSeekPosition=void 0):e=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(e=this.stream.getEndFilePositionAfter(e))):this.nextParsePosition?e=this.nextParsePosition:e=0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(l.info("ISOFile","Done processing buffer (fileStart: "+A.fileStart+") - next buffer to fetch should have a fileStart position of "+e),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),e}getFragmentDuration(){const A=this.getBox("mvex");if(!A)return;if(A.mehd)return{num:A.mehd.fragment_duration,den:this.moov.mvhd.timescale};const t=this.getBoxes("trak",!1);let e={num:0,den:1};for(const g of t){const I=g.samples_duration,s=g.mdia.mdhd.timescale;I&&s&&I/s>e.num/e.den&&(e={num:I,den:s})}return e}getInfo(){if(!this.moov)return{hasMoov:!1,mime:""};const A=new Date("1904-01-01T00:00:00Z").getTime(),t=this.getBox("mvex")!==void 0,e={hasMoov:!0,duration:this.moov.mvhd.duration,timescale:this.moov.mvhd.timescale,isFragmented:t,fragment_duration:this.getFragmentDuration(),isProgressive:this.isProgressive,hasIOD:this.moov.iods!==void 0,brands:[this.ftyp.major_brand].concat(this.ftyp.compatible_brands),created:new Date(A+this.moov.mvhd.creation_time*1e3),modified:new Date(A+this.moov.mvhd.modification_time*1e3),tracks:[],audioTracks:[],videoTracks:[],subtitleTracks:[],metadataTracks:[],hintTracks:[],otherTracks:[],mime:""};for(let g=0;g<this.moov.traks.length;g++){const I=this.moov.traks[g],s=I.mdia.minf.stbl.stsd.entries[0],n=I.samples_size,B=I.mdia.mdhd.timescale,C=I.samples_duration,Q=n*8*B/C,a={samples_duration:C,bitrate:Q,size:n,timescale:B,alternate_group:I.tkhd.alternate_group,codec:s.getCodec(),created:new Date(A+I.tkhd.creation_time*1e3),cts_shift:I.mdia.minf.stbl.cslg,duration:I.mdia.mdhd.duration,id:I.tkhd.track_id,kind:I.udta&&I.udta.kinds.length?I.udta.kinds[0]:{schemeURI:"",value:""},language:I.mdia.elng?I.mdia.elng.extended_language:I.mdia.mdhd.languageString,layer:I.tkhd.layer,matrix:I.tkhd.matrix,modified:new Date(A+I.tkhd.modification_time*1e3),movie_duration:I.tkhd.duration,movie_timescale:e.timescale,name:I.mdia.hdlr.name,nb_samples:I.samples.length,references:[],track_height:I.tkhd.height/65536,track_width:I.tkhd.width/65536,volume:I.tkhd.volume};if(e.tracks.push(a),I.tref)for(let E=0;E<I.tref.references.length;E++)a.references.push({type:I.tref.references[E].type,track_ids:I.tref.references[E].track_ids});I.edts!==void 0&&I.edts.elst!==void 0&&(a.edits=I.edts.elst.entries),s instanceof BA?(a.type="audio",e.audioTracks.push(a),a.audio={sample_rate:s.getSampleRate(),channel_count:s.getChannelCount(),sample_size:s.getSampleSize()}):s instanceof q?(a.type="video",e.videoTracks.push(a),a.video={width:s.getWidth(),height:s.getHeight()}):s instanceof zA?(a.type="subtitles",e.subtitleTracks.push(a)):s instanceof tC?(a.type="metadata",e.hintTracks.push(a)):s instanceof Es?(a.type="metadata",e.metadataTracks.push(a)):(a.type="metadata",e.otherTracks.push(a))}e.videoTracks&&e.videoTracks.length>0?e.mime+='video/mp4; codecs="':e.audioTracks&&e.audioTracks.length>0?e.mime+='audio/mp4; codecs="':e.mime+='application/mp4; codecs="';for(let g=0;g<e.tracks.length;g++)g!==0&&(e.mime+=","),e.mime+=e.tracks[g].codec;return e.mime+='"; profiles="',e.mime+=this.ftyp.compatible_brands.join(),e.mime+='"',e}setNextSeekPositionFromSample(A){A&&(this.nextSeekPosition?this.nextSeekPosition=Math.min(A.offset+A.alreadyRead,this.nextSeekPosition):this.nextSeekPosition=A.offset+A.alreadyRead)}processSamples(A){if(this.sampleProcessingStarted){if(this.isFragmentationInitialized&&this.onSegment!==void 0){const t=new Set;for(;t.size<this.fragmentedTracks.length&&this.fragmentedTracks.some(e=>e.trak.nextSample<e.trak.samples.length)&&this.sampleProcessingStarted;)for(const e of this.fragmentedTracks){const g=e.trak;if(!t.has(e.id)){const I=g.nextSample<g.samples.length?this.getSample(g,g.nextSample):void 0;if(!I){this.setNextSeekPositionFromSample(g.samples[g.nextSample]),t.add(e.id);continue}e.state.accumulatedSize+=I.size;const s=g.nextSample+1,n=s-e.state.lastFragmentSampleNumber>e.nb_samples_per_fragment,B=s-e.state.lastSegmentSampleNumber>e.nb_samples;let C=n||s%e.nb_samples_per_fragment===0,Q=B||s%e.nb_samples===0,a=e.state.accumulatedSize>=e.size_per_segment;const E=!e.rapAlignement||I.is_sync,r=A||g.nextSample+1>=g.samples.length;if(r&&!E&&l.warn("ISOFile","Flushing track #"+e.id+" at sample #"+g.nextSample+" which is not a RAP, this may lead to playback issues"),C=C&&E,Q=Q&&E,a=a&&E,C||a||r){n?l.warn("ISOFile","Fragment on track #"+e.id+" is overdue, creating it with samples ["+e.state.lastFragmentSampleNumber+", "+g.nextSample+"]"):l.debug("ISOFile","Creating media fragment on track #"+e.id+" for samples ["+e.state.lastFragmentSampleNumber+", "+g.nextSample+"]");const o=this.createFragment(e.id,e.state.lastFragmentSampleNumber,g.nextSample,e.segmentStream);if(o)e.segmentStream=o,e.state.lastFragmentSampleNumber=g.nextSample+1;else{t.add(e.id);continue}}(Q||a||r)&&(B?l.warn("ISOFile","Segment on track #"+e.id+" is overdue, sending it with samples ["+Math.max(0,g.nextSample-e.nb_samples)+", "+(g.nextSample-1)+"]"):l.info("ISOFile","Sending fragmented data on track #"+e.id+" for samples ["+Math.max(0,g.nextSample-e.nb_samples)+", "+(g.nextSample-1)+"]"),l.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(e.id,e.user,e.segmentStream.buffer,g.nextSample+1,A||g.nextSample+1>=g.samples.length),e.segmentStream=void 0,e.state.accumulatedSize=0,e.state.lastSegmentSampleNumber=g.nextSample+1),g.nextSample++}}}if(this.onSamples!==void 0)for(let t=0;t<this.extractedTracks.length;t++){const e=this.extractedTracks[t],g=e.trak;for(;g.nextSample<g.samples.length&&this.sampleProcessingStarted;){l.debug("ISOFile","Exporting on track #"+e.id+" sample #"+g.nextSample);const I=this.getSample(g,g.nextSample);if(I)g.nextSample++,e.samples.push(I);else{this.setNextSeekPositionFromSample(g.samples[g.nextSample]);break}if((g.nextSample%e.nb_samples===0||g.nextSample>=g.samples.length)&&(l.debug("ISOFile","Sending samples on track #"+e.id+" for sample "+g.nextSample),this.onSamples&&this.onSamples(e.id,e.user,e.samples),e.samples=[],e!==this.extractedTracks[t]))break}}}}getBox(A){const t=this.getBoxes(A,!0);return t.length?t[0]:void 0}getBoxes(A,t){const e=[],g=I=>{I instanceof G&&I.type&&I.type===A&&e.push(I);const s=[];I.boxes&&s.push(...I.boxes),I.entries&&s.push(...I.entries),I.item_infos&&s.push(...I.item_infos),I.references&&s.push(...I.references);for(const n of s){if(e.length&&t)return;g(n)}};return g(this),e}getTrackSamplesInfo(A){const t=this.getTrackById(A);if(t)return t.samples}getTrackSample(A,t){const e=this.getTrackById(A);return this.getSample(e,t)}releaseUsedSamples(A,t){let e=0;const g=this.getTrackById(A);g.lastValidSample||(g.lastValidSample=0);for(let I=g.lastValidSample;I<t;I++)e+=this.releaseSample(g,I);l.info("ISOFile","Track #"+A+" released samples up to "+t+" (released size: "+e+", remaining: "+this.samplesDataSize+")"),g.lastValidSample=t}start(){this.sampleProcessingStarted=!0,this.processSamples(!1)}stop(){this.sampleProcessingStarted=!1}flush(){l.info("ISOFile","Flushing remaining samples"),this.updateSampleLists(),this.processSamples(!0),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0)}seekTrack(A,t,e){let g=0,I=0,s;if(e.samples.length===0)return l.info("ISOFile","No sample in track, cannot seek! Using time "+l.getDurationString(0,1)+" and offset: 0"),{offset:0,time:0};for(let B=0;B<e.samples.length;B++){const C=e.samples[B];if(B===0)I=0,s=C.timescale;else if(C.cts>A*C.timescale){I=B-1;break}t&&C.is_sync&&(g=B)}for(t&&(I=g),A=e.samples[I].cts,e.nextSample=I;e.samples[I].alreadyRead===e.samples[I].size&&e.samples[I+1];)I++;const n=e.samples[I].offset+e.samples[I].alreadyRead;return l.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+e.nextSample+" on track "+e.tkhd.track_id+", time "+l.getDurationString(A,s)+" and offset: "+n),{offset:n,time:A/s}}getTrackDuration(A){if(!A.samples)return 1/0;const t=A.samples[A.samples.length-1];return(t.cts+t.duration)/t.timescale}seek(A,t){const e=this.moov;let g={offset:1/0,time:1/0};if(this.moov){for(let I=0;I<e.traks.length;I++){const s=e.traks[I];if(A>this.getTrackDuration(s))continue;const n=this.seekTrack(A,t,s);n.offset<g.offset&&(g.offset=n.offset),n.time<g.time&&(g.time=n.time)}return l.info("ISOFile","Seeking at time "+l.getDurationString(g.time,1)+" needs a buffer with a fileStart position of "+g.offset),g.offset===1/0?g={offset:this.nextParsePosition,time:0}:g.offset=this.stream.getEndFilePositionAfter(g.offset),l.info("ISOFile","Adjusted seek position (after checking data already in buffer): "+g.offset),g}else throw new Error("Cannot seek: moov not received!")}equal(A){let t=0;for(;t<this.boxes.length&&t<A.boxes.length;){const e=this.boxes[t],g=A.boxes[t];if(!zC(e,g))return!1;t++}return!0}write(A){for(let t=0;t<this.boxes.length;t++)this.boxes[t].write(A)}createFragment(A,t,e,g){const I=[];for(let Q=t;Q<=e;Q++){const a=this.getTrackById(A),E=this.getSample(a,Q);if(!E){this.setNextSeekPositionFromSample(a.samples[Q]);return}I.push(E)}const s=g||new sA,n=this.createMoof(I);n.write(s),n.trafs[0].truns[0].data_offset=n.size+8,l.debug("MP4Box","Adjusting data_offset with new value "+n.trafs[0].truns[0].data_offset),s.adjustUint32(n.trafs[0].truns[0].data_offset_position,n.trafs[0].truns[0].data_offset);const B=new an;B.stream=new Qn;let C=0;for(const Q of I)if(Q.data){const a=xA.fromArrayBuffer(Q.data.buffer,C);B.stream.insertBuffer(a),C+=Q.data.byteLength}return B.write(s),s}static writeInitializationSegment(A,t,e){var s,n;l.debug("ISOFile","Generating initialization segment");const g=new sA;A.write(g);const I=t.addBox(new aB);if(e){const B=I.addBox(new BQ);B.fragment_duration=e}for(let B=0;B<t.traks.length;B++){const C=I.addBox(new EB);C.track_id=t.traks[B].tkhd.track_id,C.default_sample_description_index=1,C.default_sample_duration=(n=(s=t.traks[B].samples[0])==null?void 0:s.duration)!=null?n:0,C.default_sample_size=0,C.default_sample_flags=65536}return t.write(g),g.buffer}save(A){const t=new sA;return t.isofile=this,this.write(t),t.save(A)}getBuffer(){const A=new sA;return A.isofile=this,this.write(A),A}initializeSegmentation(){var t,e;this.onSegment||l.warn("MP4Box","No segmentation callback set!"),this.isFragmentationInitialized||(this.isFragmentationInitialized=!0,this.resetTables());const A=new QB;A.addBox(this.moov.mvhd);for(let g=0;g<this.fragmentedTracks.length;g++){const I=this.getTrackById(this.fragmentedTracks[g].id);if(!I){l.warn("ISOFile",`Track with id ${this.fragmentedTracks[g].id} not found, skipping fragmentation initialization`);continue}A.addBox(I)}return{tracks:A.traks.map((g,I)=>({id:g.tkhd.track_id,user:this.fragmentedTracks[I].user})),buffer:kA.writeInitializationSegment(this.ftyp,A,(e=(t=this.moov)==null?void 0:t.mvex)==null?void 0:e.mehd.fragment_duration)}}resetTables(){this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0;for(let A=0;A<this.moov.traks.length;A++){const t=this.moov.traks[A];t.tkhd.duration=0,t.mdia.mdhd.duration=0;const e=t.mdia.minf.stbl.stco||t.mdia.minf.stbl.co64;e.chunk_offsets=[];const g=t.mdia.minf.stbl.stsc;g.first_chunk=[],g.samples_per_chunk=[],g.sample_description_index=[];const I=t.mdia.minf.stbl.stsz||t.mdia.minf.stbl.stz2;I.sample_sizes=[];const s=t.mdia.minf.stbl.stts;s.sample_counts=[],s.sample_deltas=[];const n=t.mdia.minf.stbl.ctts;n&&(n.sample_counts=[],n.sample_offsets=[]);const B=t.mdia.minf.stbl.stss,C=t.mdia.minf.stbl.boxes.indexOf(B);C!==-1&&(t.mdia.minf.stbl.boxes[C]=void 0)}}static initSampleGroups(A,t,e,g,I){t&&(t.sample_groups_info=[]),A.sample_groups_info||(A.sample_groups_info=[]);for(let s=0;s<e.length;s++){const n=e[s].grouping_type+"/"+e[s].grouping_type_parameter,B=new jn(e[s].grouping_type,e[s].grouping_type_parameter,e[s]);t&&(t.sample_groups_info[n]=B),A.sample_groups_info[n]||(A.sample_groups_info[n]=B);for(let C=0;C<g.length;C++)g[C].grouping_type===e[s].grouping_type&&(B.description=g[C],B.description.used=!0);if(I)for(let C=0;C<I.length;C++)I[C].grouping_type===e[s].grouping_type&&(B.fragment_description=I[C],B.fragment_description.used=!0,B.is_fragment=!0)}if(t){if(I){for(let s=0;s<I.length;s++)if(!I[s].used&&I[s].version>=2){const n=I[s].grouping_type+"/0",B=new jn(I[s].grouping_type,0);B.is_fragment=!0,t.sample_groups_info[n]||(t.sample_groups_info[n]=B)}}}else for(let s=0;s<g.length;s++)if(!g[s].used&&g[s].version>=2){const n=g[s].grouping_type+"/0",B=new jn(g[s].grouping_type,0);A.sample_groups_info[n]||(A.sample_groups_info[n]=B)}}static setSampleGroupProperties(A,t,e,g){t.sample_groups=[];for(const I in g)if(t.sample_groups[I]={grouping_type:g[I].grouping_type,grouping_type_parameter:g[I].grouping_type_parameter},e>=g[I].last_sample_in_run&&(g[I].last_sample_in_run<0&&(g[I].last_sample_in_run=0),g[I].entry_index++,g[I].entry_index<=g[I].sbgp.entries.length-1&&(g[I].last_sample_in_run+=g[I].sbgp.entries[g[I].entry_index].sample_count)),g[I].entry_index<=g[I].sbgp.entries.length-1?t.sample_groups[I].group_description_index=g[I].sbgp.entries[g[I].entry_index].group_description_index:t.sample_groups[I].group_description_index=-1,t.sample_groups[I].group_description_index!==0){let s;if(g[I].fragment_description?s=g[I].fragment_description:s=g[I].description,t.sample_groups[I].group_description_index>0){let n;t.sample_groups[I].group_description_index>65535?n=(t.sample_groups[I].group_description_index>>16)-1:n=t.sample_groups[I].group_description_index-1,s&&n>=0&&(t.sample_groups[I].description=s.entries[n])}else s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[I].description=s.entries[s.default_group_description_index-1])}}static process_sdtp(A,t,e){t&&(A?(t.is_leading=A.is_leading[e],t.depends_on=A.sample_depends_on[e],t.is_depended_on=A.sample_is_depended_on[e],t.has_redundancy=A.sample_has_redundancy[e]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))}buildSampleLists(){for(let A=0;A<this.moov.traks.length;A++)this.buildTrakSampleLists(this.moov.traks[A])}buildTrakSampleLists(A){let t,e,g,I,s,n;A.samples=[],A.samples_duration=0,A.samples_size=0;const B=A.mdia.minf.stbl.stco||A.mdia.minf.stbl.co64,C=A.mdia.minf.stbl.stsc,Q=A.mdia.minf.stbl.stsz||A.mdia.minf.stbl.stz2,a=A.mdia.minf.stbl.stts,E=A.mdia.minf.stbl.ctts,r=A.mdia.minf.stbl.stss,o=A.mdia.minf.stbl.stsd,h=A.mdia.minf.stbl.subs,c=A.mdia.minf.stbl.stdp,u=A.mdia.minf.stbl.sbgps,d=A.mdia.minf.stbl.sgpds;let f=-1,w=-1,p=-1,y=-1,m=0,N=0,U=0;if(kA.initSampleGroups(A,void 0,u,d),typeof Q!="undefined"){for(t=0;t<Q.sample_sizes.length;t++){const S={number:t,track_id:A.tkhd.track_id,timescale:A.mdia.mdhd.timescale,alreadyRead:0,size:Q.sample_sizes[t]};A.samples[t]=S,A.samples_size+=S.size,t===0?(g=1,e=0,S.chunk_index=g,S.chunk_run_index=e,n=C.samples_per_chunk[e],s=0,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0):t<n?(S.chunk_index=g,S.chunk_run_index=e):(g++,S.chunk_index=g,s=0,g<=I||(e++,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0),S.chunk_run_index=e,n+=C.samples_per_chunk[e]),S.description_index=C.sample_description_index[S.chunk_run_index]-1,S.description=o.entries[S.description_index],S.offset=B.chunk_offsets[S.chunk_index-1]+s,s+=S.size,t>f&&(w++,f<0&&(f=0),f+=a.sample_counts[w]),t>0?(A.samples[t-1].duration=a.sample_deltas[w],A.samples_duration+=A.samples[t-1].duration,S.dts=A.samples[t-1].dts+A.samples[t-1].duration):S.dts=0,E?(t>=p&&(y++,p<0&&(p=0),p+=E.sample_counts[y]),S.cts=A.samples[t].dts+E.sample_offsets[y]):S.cts=S.dts,r?(t===r.sample_numbers[m]-1?(S.is_sync=!0,m++):(S.is_sync=!1,S.degradation_priority=0),h&&h.entries[N].sample_delta+U===t+1&&(S.subsamples=h.entries[N].subsamples,U+=h.entries[N].sample_delta,N++)):S.is_sync=!0,kA.process_sdtp(A.mdia.minf.stbl.sdtp,S,S.number),c?S.degradation_priority=c.priority[t]:S.degradation_priority=0,h&&h.entries[N].sample_delta+U===t&&(S.subsamples=h.entries[N].subsamples,U+=h.entries[N].sample_delta),(u.length>0||d.length>0)&&kA.setSampleGroupProperties(A,S,t,A.sample_groups_info)}t>0&&(A.samples[t-1].duration=Math.max(A.mdia.mdhd.duration-A.samples[t-1].dts,0),A.samples_duration+=A.samples[t-1].duration)}}updateSampleLists(){let A,t,e,g,I;if(this.moov!==void 0)for(;this.lastMoofIndex<this.moofs.length;){const s=this.moofs[this.lastMoofIndex];if(this.lastMoofIndex++,s.type==="moof"){const n=s;for(let B=0;B<n.trafs.length;B++){const C=n.trafs[B],Q=this.getTrackById(C.tfhd.track_id),a=this.getTrexById(C.tfhd.track_id);C.tfhd.flags&gn?A=C.tfhd.default_sample_description_index:A=a?a.default_sample_description_index:1,C.tfhd.flags&In?t=C.tfhd.default_sample_duration:t=a?a.default_sample_duration:0,C.tfhd.flags&sn?e=C.tfhd.default_sample_size:e=a?a.default_sample_size:0,C.tfhd.flags&nn?g=C.tfhd.default_sample_flags:g=a?a.default_sample_flags:0,C.sample_number=0,C.sbgps.length>0&&kA.initSampleGroups(Q,C,C.sbgps,Q.mdia.minf.stbl.sgpds,C.sgpds);for(let E=0;E<C.truns.length;E++){const r=C.truns[E];for(let o=0;o<r.sample_count;o++){const h=A-1;let c=g;r.flags&bs?c=r.sample_flags[o]:o===0&&r.flags&Bn&&(c=r.first_sample_flags);let u=e;r.flags&xs&&(u=r.sample_size[o]),Q.samples_size+=u;let d=t;r.flags&Ms&&(d=r.sample_duration[o]),Q.samples_duration+=d;let f;Q.first_traf_merged||o>0?f=Q.samples[Q.samples.length-1].dts+Q.samples[Q.samples.length-1].duration:(C.tfdt?f=C.tfdt.baseMediaDecodeTime:f=0,Q.first_traf_merged=!0);let w=f;r.flags&Ys&&(w=f+r.sample_composition_time_offset[o]);const p=!!(C.tfhd.flags&en),y=!!(C.tfhd.flags&OB),m=!!(r.flags&ks);let N=0;p?N=C.tfhd.base_data_offset:y||E===0?N=n.start:N=I;let U;E===0&&o===0?m?U=N+r.data_offset:U=N:U=I,I=U+u;const S=C.sample_number;C.sample_number++;const J={cts:w,description_index:h,description:Q.mdia.minf.stbl.stsd.entries[h],dts:f,duration:d,moof_number:this.lastMoofIndex,number_in_traf:S,number:Q.samples.length,offset:U,size:u,timescale:Q.mdia.mdhd.timescale,track_id:Q.tkhd.track_id,is_sync:!(c>>16&1),is_leading:c>>26&3,depends_on:c>>24&3,is_depended_on:c>>22&3,has_redundancy:c>>20&3,degradation_priority:c&65535};C.first_sample_index=Q.samples.length,Q.samples.push(J),(C.sbgps.length>0||C.sgpds.length>0||Q.mdia.minf.stbl.sbgps.length>0||Q.mdia.minf.stbl.sgpds.length>0)&&kA.setSampleGroupProperties(Q,J,J.number_in_traf,C.sample_groups_info)}}if(C.subs){Q.has_fragment_subsamples=!0;let E=C.first_sample_index;for(let r=0;r<C.subs.entries.length;r++){E+=C.subs.entries[r].sample_delta;const o=Q.samples[E-1];o.subsamples=C.subs.entries[r].subsamples}}}}}}getSample(A,t){const e=A.samples[t];if(this.moov){if(!e.data)e.data=new Uint8Array(e.size),e.alreadyRead=0,this.samplesDataSize+=e.size,l.debug("ISOFile","Allocating sample #"+t+" on track #"+A.tkhd.track_id+" of size "+e.size+" (total: "+this.samplesDataSize+")");else if(e.alreadyRead===e.size)return e;for(;;){let g=this.stream,I=g.findPosition(!0,e.offset+e.alreadyRead,!1),s,n;if(I>-1)s=g.buffers[I],n=s.fileStart;else for(const B of this.mdats){if(!B.stream){l.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(B)+" mdat");continue}if(I=B.stream.findPosition(!0,e.offset+e.alreadyRead-B.start-B.hdr_size,!1),I>-1){g=B.stream,s=B.stream.buffers[I],n=B.start+B.hdr_size+s.fileStart;break}}if(s){const B=s.byteLength-(e.offset+e.alreadyRead-n);if(e.size-e.alreadyRead<=B)return l.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+(e.size-e.alreadyRead)+" full size: "+e.size+")"),sA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,e.size-e.alreadyRead),s.usedBytes+=e.size-e.alreadyRead,g.logBufferLevel(),e.alreadyRead=e.size,e;if(B===0)return;l.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-n)+" read size: "+B+" full size: "+e.size+")"),sA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-n,B),e.alreadyRead+=B,s.usedBytes+=B,g.logBufferLevel()}else return}}}releaseSample(A,t){const e=A.samples[t];return e.data?(this.samplesDataSize-=e.size,e.data=void 0,e.alreadyRead=0,e.size):0}getAllocatedSampleDataSize(){return this.samplesDataSize}getCodecs(){let A="";for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];t>0&&(A+=","),A+=e.mdia.minf.stbl.stsd.entries[0].getCodec()}return A}getTrexById(A){if(!(!this.moov||!this.moov.mvex))for(let t=0;t<this.moov.mvex.trexs.length;t++){const e=this.moov.mvex.trexs[t];if(e.track_id===A)return e}}getTrackById(A){if(this.moov)for(let t=0;t<this.moov.traks.length;t++){const e=this.moov.traks[t];if(e.tkhd.track_id===A)return e}}flattenItemInfo(){var g;const A=this.items,t=this.entity_groups,e=this.meta;if(!(!e||!e.hdlr||!e.iinf)){for(let I=0;I<e.iinf.item_infos.length;I++){const s=e.iinf.item_infos[I].item_ID;A[s]={id:s,name:e.iinf.item_infos[I].item_name,ref_to:[],content_type:e.iinf.item_infos[I].content_type,content_encoding:e.iinf.item_infos[I].content_encoding,item_uri_type:e.iinf.item_infos[I].item_uri_type,type:e.iinf.item_infos[I].item_type?e.iinf.item_infos[I].item_type:"mime",protection:e.iinf.item_infos[I].item_protection_index>0?e.ipro.protections[e.iinf.item_infos[I].item_protection_index-1]:void 0}}if(e.grpl)for(let I=0;I<e.grpl.boxes.length;I++){const s=e.grpl.boxes[I];t[s.group_id]={id:s.group_id,entity_ids:s.entity_ids,type:s.type}}if(e.iloc)for(let I=0;I<e.iloc.items.length;I++){const s=e.iloc.items[I],n=A[s.item_ID];s.data_reference_index!==0&&(l.warn("Item storage with reference to other files: not supported"),n.source=e.dinf.boxes[s.data_reference_index-1]),n.extents=[],n.size=0;for(let B=0;B<s.extents.length;B++)n.extents[B]={offset:s.extents[B].extent_offset+s.base_offset,length:s.extents[B].extent_length,alreadyRead:0},s.construction_method===1&&(n.extents[B].offset+=e.idat.start+e.idat.hdr_size),n.size+=n.extents[B].length}if(e.pitm&&(A[e.pitm.item_id].primary=!0),e.iref)for(let I=0;I<e.iref.references.length;I++){const s=e.iref.references[I];for(let n=0;n<s.references.length;n++)A[s.from_item_ID].ref_to.push({type:s.type,id:s.references[n]})}if(e.iprp)for(let I=0;I<e.iprp.ipmas.length;I++){const s=e.iprp.ipmas[I];for(let n=0;n<s.associations.length;n++){const B=s.associations[n],C=(g=A[B.id])!=null?g:t[B.id];if(C){C.properties===void 0&&(C.properties={boxes:[]});for(let Q=0;Q<B.props.length;Q++){const a=B.props[Q];if(a.property_index>0&&a.property_index-1<e.iprp.ipco.boxes.length){const E=e.iprp.ipco.boxes[a.property_index-1];C.properties[E.type]=E,C.properties.boxes.push(E)}}}}}}}getItem(A){if(!this.meta)return;const t=this.items[A];if(!t.data&&t.size)t.data=new Uint8Array(t.size),t.alreadyRead=0,this.itemsDataSize+=t.size,l.debug("ISOFile","Allocating item #"+A+" of size "+t.size+" (total: "+this.itemsDataSize+")");else if(t.alreadyRead===t.size)return t;for(let e=0;e<t.extents.length;e++){const g=t.extents[e];if(g.alreadyRead!==g.length){const I=this.stream.findPosition(!0,g.offset+g.alreadyRead,!1);if(I>-1){const s=this.stream.buffers[I],n=s.byteLength-(g.offset+g.alreadyRead-s.fileStart);if(g.length-g.alreadyRead<=n)l.debug("ISOFile","Getting item #"+A+" extent #"+e+" data (alreadyRead: "+g.alreadyRead+" offset: "+(g.offset+g.alreadyRead-s.fileStart)+" read size: "+(g.length-g.alreadyRead)+" full extent size: "+g.length+" full item size: "+t.size+")"),sA.memcpy(t.data.buffer,t.alreadyRead,s,g.offset+g.alreadyRead-s.fileStart,g.length-g.alreadyRead),(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=g.length-g.alreadyRead),this.stream.logBufferLevel(),t.alreadyRead+=g.length-g.alreadyRead,g.alreadyRead=g.length;else{l.debug("ISOFile","Getting item #"+A+" extent #"+e+" partial data (alreadyRead: "+g.alreadyRead+" offset: "+(g.offset+g.alreadyRead-s.fileStart)+" read size: "+n+" full extent size: "+g.length+" full item size: "+t.size+")"),sA.memcpy(t.data.buffer,t.alreadyRead,s,g.offset+g.alreadyRead-s.fileStart,n),g.alreadyRead+=n,t.alreadyRead+=n,(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=n),this.stream.logBufferLevel();return}}else return}}if(t.alreadyRead===t.size)return t}releaseItem(A){const t=this.items[A];if(t.data){this.itemsDataSize-=t.size,t.data=void 0,t.alreadyRead=0;for(let e=0;e<t.extents.length;e++){const g=t.extents[e];g.alreadyRead=0}return t.size}else return 0}processItems(A){for(const t in this.items){const e=this.items[t];this.getItem(e.id),A&&!e.sent&&(A(e),e.sent=!0,e.data=void 0)}}hasItem(A){for(const t in this.items){const e=this.items[t];if(e.name===A)return e.id}return-1}getMetaHandler(){if(this.meta)return this.meta.hdlr.handler}getPrimaryItem(){if(this.meta&&this.meta.pitm)return this.getItem(this.meta.pitm.item_id)}itemToFragmentedTrackFile({itemId:A}={}){let t;if(A?t=this.getItem(A):t=this.getPrimaryItem(),!t)return;const e=new kA;e.discardMdatData=!1;const g={type:t.type,description_boxes:t.properties.boxes};t.properties.ispe&&(g.width=t.properties.ispe.image_width,g.height=t.properties.ispe.image_height);const I=e.addTrack(g);if(I)return e.addSample(I,t.data),e}processIncompleteBox(A){if(A.type==="mdat"){const t=new an(A.size);return this.parsingMdat=t,this.boxes.push(t),this.mdats.push(t),t.start=A.start,t.hdr_size=A.hdr_size,t.original_size=A.original_size,this.stream.addUsedBytes(t.hdr_size),this.lastBoxStartPosition=t.start+t.size,this.stream.seek(t.start+t.size,!1,this.discardMdatData)?(this.transferMdatData(),this.parsingMdat=void 0,!0):(this.moovStartFound?this.nextParsePosition=this.stream.findEndContiguousBuf():this.nextParsePosition=t.start+t.size,!1)}else return A.type==="moov"&&(this.moovStartFound=!0,this.mdats.length===0&&(this.isProgressive=!0)),(this.stream.mergeNextBuffer?this.stream.mergeNextBuffer():!1)?(this.nextParsePosition=this.stream.getEndPosition(),!0):(A.type?this.moovStartFound?this.nextParsePosition=this.stream.getEndPosition():this.nextParsePosition=this.stream.getPosition()+A.size:this.nextParsePosition=this.stream.getEndPosition(),!1)}hasIncompleteMdat(){return this.parsingMdat!==void 0}transferMdatData(A){const t=A!=null?A:this.parsingMdat;if(this.discardMdatData){l.debug("ISOFile","Discarding 'mdat' data, not transferring it to the mdat box stream");return}if(!t){l.warn("ISOFile","Cannot transfer 'mdat' data, no mdat box is being parsed");return}const e=this.stream.findPosition(!0,t.start+t.hdr_size,!1),g=this.stream.findPosition(!0,t.start+t.size,!1);if(e===-1||g===-1){l.warn("ISOFile","Cannot transfer 'mdat' data, start or end buffer not found");return}t.stream=new Qn;for(let I=e;I<=g;I++){const s=this.stream.buffers[I],n=I===e?t.start+t.hdr_size-s.fileStart:0,B=I===g?t.start+t.size-s.fileStart:s.byteLength;if(B>n){l.debug("ISOFile","Transferring 'mdat' data from buffer #"+I+" ("+n+" to "+B+")");const C=B-n,Q=new xA(C),a=t.stream.getAbsoluteEndPosition();sA.memcpy(Q,0,s,n,C),Q.fileStart=a,t.stream.insertBuffer(Q),s.usedBytes+=C}}}processIncompleteMdat(){const A=this.parsingMdat;return this.stream.seek(A.start+A.size,!1,this.discardMdatData)?(l.debug("ISOFile","Found 'mdat' end in buffered data"),this.transferMdatData(),this.parsingMdat=void 0,!0):(this.nextParsePosition=this.stream.findEndContiguousBuf(),!1)}restoreParsePosition(){return this.stream.seek(this.lastBoxStartPosition,!0,this.discardMdatData)}saveParsePosition(){this.lastBoxStartPosition=this.stream.getPosition()}updateUsedBytes(A,t){this.stream.addUsedBytes&&(A.type==="mdat"?(this.stream.addUsedBytes(A.hdr_size),this.discardMdatData&&this.stream.addUsedBytes(A.size-A.hdr_size)):this.stream.addUsedBytes(A.size))}addBox(A){return G.prototype.addBox.call(this,A)}init(A={}){const t=this.addBox(new gQ);t.major_brand=A.brands&&A.brands[0]||"iso4",t.minor_version=0,t.compatible_brands=A.brands||["iso4"];const e=this.addBox(new QB);e.addBox(new aB);const g=e.addBox(new QQ);return g.timescale=A.timescale||600,g.rate=A.rate||65536,g.creation_time=0,g.modification_time=0,g.duration=A.duration||0,g.volume=A.width?0:256,g.matrix=[65536,0,0,0,65536,0,0,0,1073741824],g.next_track_id=1,this}addTrack(A={}){this.moov||this.init(A);const t=A||{};t.width=t.width||320,t.height=t.height||320,t.id=t.id||this.moov.mvhd.next_track_id,t.type=t.type||"avc1";const e=this.moov.addBox(new jC);this.moov.mvhd.next_track_id=t.id+1;const g=e.addBox(new yQ);g.flags=Yr|Lr|_r,g.creation_time=0,g.modification_time=0,g.track_id=t.id,g.duration=t.duration||0,g.layer=t.layer||0,g.alternate_group=0,g.volume=1,g.matrix=[65536,0,0,0,65536,0,0,0,1073741824],g.width=t.width<<16,g.height=t.height<<16;const I=e.addBox(new OC),s=I.addBox(new nQ);s.creation_time=0,s.modification_time=0,s.timescale=t.timescale||1,s.duration=t.media_duration||0,s.language=t.language||"und";const n=I.addBox(new IQ);n.handler=t.hdlr||"vide",n.name=t.name||"Track created with MP4Box.js";const B=I.addBox(new iQ);B.extended_language=t.language||"fr-FR";const C=I.addBox(new XC),Q=nA.sampleEntry[t.type];if(!Q)return;const a=new Q;if(a.data_reference_index=1,a instanceof q){const y=a,m=C.addBox(new GQ);m.graphicsmode=0,m.opcolor=[0,0,0],y.width=t.width,y.height=t.height,y.horizresolution=72<<16,y.vertresolution=72<<16,y.frame_count=1,y.compressorname=t.type+" Compressor",y.depth=24,t.avcDecoderConfigRecord?y.addBox(new ZC(t.avcDecoderConfigRecord.byteLength)).parse(new sA(t.avcDecoderConfigRecord)):t.hevcDecoderConfigRecord&&y.addBox(new sQ(t.hevcDecoderConfigRecord.byteLength)).parse(new sA(t.hevcDecoderConfigRecord))}else if(a instanceof BA){const y=a,m=C.addBox(new oQ);m.balance=t.balance||0,y.channel_count=t.channel_count||2,y.samplesize=t.samplesize||16,y.samplerate=t.samplerate||65536}else a instanceof tC?C.addBox(new WC):a instanceof zA?(C.addBox(new cQ),a instanceof rQ&&(a.namespace=t.namespace||"nonamespace",a.schema_location=t.schema_location||"",a.auxiliary_mime_types=t.auxiliary_mime_types||"")):a instanceof Es?C.addBox(new En):a instanceof uB?C.addBox(new En):C.addBox(new En);t.description&&a.addBox.call(a,t.description),t.description_boxes&&t.description_boxes.forEach(function(y){a.addBox.call(a,y)});const r=C.addBox(new PC).addBox(new eQ),o=new mQ;o.flags=1,r.addEntry(o);const h=C.addBox(new $C);h.addBox(new dQ).addEntry(a);const u=h.addBox(new uQ);u.sample_counts=[],u.sample_deltas=[];const d=h.addBox(new lQ);d.first_chunk=[],d.samples_per_chunk=[],d.sample_description_index=[];const f=h.addBox(new hQ);f.chunk_offsets=[];const w=h.addBox(new fQ);w.sample_sizes=[];const p=this.moov.mvex.addBox(new EB);return p.track_id=t.id,p.default_sample_description_index=t.default_sample_description_index||1,p.default_sample_duration=t.default_sample_duration||0,p.default_sample_size=t.default_sample_size||0,p.default_sample_flags=t.default_sample_flags||0,this.buildTrakSampleLists(e),t.id}addSample(A,t,{sample_description_index:e,duration:g=1,cts:I=0,dts:s=0,is_sync:n=!1,is_leading:B=0,depends_on:C=0,is_depended_on:Q=0,has_redundancy:a=0,degradation_priority:E=0,subsamples:r,offset:o=0}={}){const h=this.getTrackById(A);if(h===void 0)return;const c=e?e-1:0,u={number:h.samples.length,track_id:h.tkhd.track_id,timescale:h.mdia.mdhd.timescale,description_index:c,description:h.mdia.minf.stbl.stsd.entries[c],data:t,size:t.byteLength,alreadyRead:t.byteLength,duration:g,cts:I,dts:s,is_sync:n,is_leading:B,depends_on:C,is_depended_on:Q,has_redundancy:a,degradation_priority:E,offset:o,subsamples:r};h.samples.push(u),h.samples_size+=u.size,h.samples_duration+=u.duration,h.first_dts===void 0&&(h.first_dts=s),this.processSamples();const d=this.addBox(this.createMoof([u]));d.computeSize(),d.trafs[0].truns[0].data_offset=d.size+8;const f=this.addBox(new an);return f.data=new Uint8Array(t),u}createMoof(A){if(A.length===0)return;if(A.some(Q=>Q.track_id!==A[0].track_id))throw new Error("Cannot create moof for samples from different tracks: "+A.map(Q=>Q.track_id).join(", "));const t=A[0].track_id,e=this.getTrackById(t);if(!e)throw new Error("Cannot create moof for non-existing track: "+t);const g=new AQ,I=g.addBox(new CQ);I.sequence_number=++this.nextMoofNumber;const s=g.addBox(new tQ),n=s.addBox(new DQ);n.track_id=t,n.flags=OB;const B=s.addBox(new wQ);B.baseMediaDecodeTime=A[0].dts-(e.first_dts||0);const C=s.addBox(new pQ);C.flags=ks|Ms|xs|bs|Ys,C.data_offset=0,C.first_sample_flags=0,C.sample_count=A.length;for(const Q of A){let a=0;Q.is_sync?a=1<<25:a=65536,C.sample_duration.push(Q.duration),C.sample_size.push(Q.size),C.sample_flags.push(a),C.sample_composition_time_offset.push(Q.cts-Q.dts)}return g}print(A){A.indent="";for(let t=0;t<this.boxes.length;t++)this.boxes[t]&&this.boxes[t].print(A)}};function Kh(i=!1,A){return new Hh(A,!i)}var FQ={};TC(FQ,{Descriptor:()=>ZA,ES_Descriptor:()=>UQ,MPEG4DescriptorParser:()=>zh});var SQ=3,dn=4,wB=5,NQ=6,ZA=class RQ{constructor(A,t){this.tag=A,this.size=t,this.descs=[]}parse(A){this.data=A.readUint8Array(this.size)}findDescriptor(A){for(let t=0;t<this.descs.length;t++)if(this.descs[t].tag===A)return this.descs[t]}parseOneDescriptor(A){let t=0;const e=A.readUint8();let g=A.readUint8();for(;g&128;)t=(t<<7)+(g&127),g=A.readUint8();t=(t<<7)+(g&127),l.debug("Descriptor","Found "+(rn[e]||"Descriptor "+e)+", size "+t+" at position "+A.getPosition());const I=rn[e]?new Vh[rn[e]](t):new RQ(t);return I.parse(A),I}parseRemainingDescriptors(A){var e;const t=A.getPosition();for(;A.getPosition()<t+this.size;){const g=(e=this.parseOneDescriptor)==null?void 0:e.call(this,A);this.descs.push(g)}}},UQ=class extends ZA{constructor(i){super(SQ,i)}parse(i){if(this.ES_ID=i.readUint16(),this.flags=i.readUint8(),this.size-=3,this.flags&128?(this.dependsOn_ES_ID=i.readUint16(),this.size-=2):this.dependsOn_ES_ID=0,this.flags&64){const A=i.readUint8();this.URL=i.readString(A),this.size-=A+1}else this.URL="";this.flags&32?(this.OCR_ES_ID=i.readUint16(),this.size-=2):this.OCR_ES_ID=0,this.parseRemainingDescriptors(i)}getOTI(){const i=this.findDescriptor(dn);return i?i.oti:0}getAudioConfig(){const i=this.findDescriptor(dn);if(!i)return;const A=i.findDescriptor(wB);if(A&&A.data){let t=(A.data[0]&248)>>3;return t===31&&A.data.length>=2&&(t=32+((A.data[0]&7)<<3)+((A.data[1]&224)>>5)),t}}},vh=class extends ZA{constructor(i){super(dn,i)}parse(i){this.oti=i.readUint8(),this.streamType=i.readUint8(),this.upStream=(this.streamType>>1&1)!==0,this.streamType=this.streamType>>>2,this.bufferSize=i.readUint24(),this.maxBitrate=i.readUint32(),this.avgBitrate=i.readUint32(),this.size-=13,this.parseRemainingDescriptors(i)}},Th=class extends ZA{constructor(i){super(wB,i)}},qh=class extends ZA{constructor(i){super(NQ,i)}},Vh={Descriptor:ZA,ES_Descriptor:UQ,DecoderConfigDescriptor:vh,DecoderSpecificInfo:Th,SLConfigDescriptor:qh},rn={[SQ]:"ES_Descriptor",[dn]:"DecoderConfigDescriptor",[wB]:"DecoderSpecificInfo",[NQ]:"SLConfigDescriptor"},zh=class{constructor(){this.parseOneDescriptor=ZA.prototype.parseOneDescriptor}getDescriptorName(i){return rn[i]}},kQ={};TC(kQ,{CoLLBox:()=>Ic,ItemContentIDPropertyBox:()=>xd,OpusSampleEntry:()=>dh,SmDmBox:()=>Ul,a1lxBox:()=>Zh,a1opBox:()=>Wh,ac_3SampleEntry:()=>hh,ac_4SampleEntry:()=>ch,aebrBox:()=>yc,afbrBox:()=>pc,albcBox:()=>mc,alstSampleGroupEntry:()=>Cd,altrBox:()=>Gc,auxCBox:()=>jh,av01SampleEntry:()=>qo,av1CBox:()=>bo,avc1SampleEntry:()=>Ho,avc2SampleEntry:()=>Ko,avc3SampleEntry:()=>vo,avc4SampleEntry:()=>To,avcCBox:()=>ZC,avllSampleGroupEntry:()=>Qd,avs3SampleEntry:()=>nh,avssSampleGroupEntry:()=>ad,brstBox:()=>Fc,btrtBox:()=>Oh,bxmlBox:()=>go,ccstBox:()=>Xh,cdefBox:()=>Ph,clapBox:()=>$h,clefBox:()=>hl,clliBox:()=>Ac,cmexBox:()=>tc,cminBox:()=>ec,cmpdBox:()=>ic,co64Box:()=>gc,colrBox:()=>Jo,coviBox:()=>Bc,cprtBox:()=>Cc,cschBox:()=>Qc,cslgBox:()=>ac,cttsBox:()=>Ec,dOpsBox:()=>fc,dac3Box:()=>rc,dataBox:()=>ms,dav1SampleEntry:()=>Vo,dec3Box:()=>oc,dfLaBox:()=>hc,dimmBox:()=>cc,dinfBox:()=>PC,dmax:()=>lc,dmedBox:()=>dc,dobrBox:()=>Sc,drefBox:()=>eQ,drepBox:()=>uc,dtrtSampleGroupEntry:()=>Ed,dvh1SampleEntry:()=>$o,dvheSampleEntry:()=>Ah,ec_3SampleEntry:()=>lh,edtsBox:()=>so,elngBox:()=>iQ,elstBox:()=>wc,emsgBox:()=>Dc,encaSampleEntry:()=>mh,encmSampleEntry:()=>Rh,encsSampleEntry:()=>Fh,enctSampleEntry:()=>Nh,encuSampleEntry:()=>Gh,encvSampleEntry:()=>ph,enofBox:()=>ll,eqivBox:()=>Nc,esdsBox:()=>Yo,etypBox:()=>po,fLaCSampleEntry:()=>yh,favcBox:()=>Rc,fielBox:()=>Hc,fobrBox:()=>Uc,freeBox:()=>Ao,frmaBox:()=>Kc,ftypBox:()=>gQ,grplBox:()=>Do,hdlrBox:()=>IQ,hev1SampleEntry:()=>Wo,hev2SampleEntry:()=>jo,hinfBox:()=>ao,hmhdBox:()=>WC,hntiBox:()=>Qo,hvc1SampleEntry:()=>zo,hvc2SampleEntry:()=>Zo,hvcCBox:()=>sQ,hvt1SampleEntry:()=>Oo,iaugBox:()=>kc,idatBox:()=>$r,iinfBox:()=>Fo,ilocBox:()=>So,ilstBox:()=>dl,imirBox:()=>vc,infeBox:()=>Go,iodsBox:()=>eo,ipcoBox:()=>wo,ipmaBox:()=>Tc,iproBox:()=>Io,iprpBox:()=>uo,irefBox:()=>Ro,irotBox:()=>qc,ispeBox:()=>Vc,itaiBox:()=>zc,j2kHBox:()=>yo,j2kiSampleEntry:()=>Bh,keysBox:()=>fl,kindBox:()=>Zc,levaBox:()=>Wc,lhe1SampleEntry:()=>Xo,lhv1SampleEntry:()=>Po,lhvCBox:()=>jc,lselBox:()=>Oc,m4aeSampleEntry:()=>oh,maxrBox:()=>Xc,mdatBox:()=>an,mdcvBox:()=>Pc,mdhdBox:()=>nQ,mdiaBox:()=>OC,mecoBox:()=>Co,mehdBox:()=>BQ,metaBox:()=>ko,mettSampleEntry:()=>Mo,metxSampleEntry:()=>xo,mfhdBox:()=>CQ,mfraBox:()=>Bo,mfroBox:()=>$c,mha1SampleEntry:()=>fh,mha2SampleEntry:()=>uh,mhm1SampleEntry:()=>wh,mhm2SampleEntry:()=>Dh,minfBox:()=>XC,mjp2SampleEntry:()=>Ch,mjpgSampleEntry:()=>Qh,moofBox:()=>AQ,moovBox:()=>QB,mp4aSampleEntry:()=>rh,mp4sSampleEntry:()=>Sh,mp4vSampleEntry:()=>Eh,mskCBox:()=>Al,msrcTrackGroupTypeBox:()=>Xl,mvexBox:()=>aB,mvhdBox:()=>QQ,mvifSampleGroupEntry:()=>rd,nmhdBox:()=>En,npckBox:()=>tl,numpBox:()=>el,padbBox:()=>gl,panoBox:()=>Mc,paspBox:()=>Il,paylBox:()=>sl,paytBox:()=>nl,pdinBox:()=>Bl,piffLsmBox:()=>Sd,piffPsshBox:()=>Nd,piffSencBox:()=>Rd,piffTencBox:()=>Ud,piffTfrfBox:()=>kd,piffTfxdBox:()=>Md,pitmBox:()=>Uo,pixiBox:()=>Cl,pmaxBox:()=>Ql,povdBox:()=>mo,prdiBox:()=>al,prfrBox:()=>El,prftBox:()=>rl,prgrBox:()=>_c,profBox:()=>ul,prolSampleGroupEntry:()=>od,psshBox:()=>ol,pymdBox:()=>Jc,rapSampleGroupEntry:()=>hd,rashSampleGroupEntry:()=>cd,resvSampleEntry:()=>Uh,rinfBox:()=>ho,rollSampleGroupEntry:()=>ld,rtp_Box:()=>yl,saioBox:()=>pl,saizBox:()=>ml,sbgpBox:()=>Yh,sbpmBox:()=>Fl,sbttSampleEntry:()=>kh,schiBox:()=>co,schmBox:()=>Sl,scifSampleGroupEntry:()=>dd,scnmSampleGroupEntry:()=>fd,sdp_Box:()=>Nl,sdtpBox:()=>Lh,seigSampleGroupEntry:()=>ud,sencBox:()=>Rl,sgpdBox:()=>_h,sidxBox:()=>Jh,sinfBox:()=>oo,skipBox:()=>to,slidBox:()=>xc,smhdBox:()=>oQ,sratBox:()=>kl,ssixBox:()=>Ml,stblBox:()=>$C,stcoBox:()=>hQ,stdpBox:()=>xl,sterBox:()=>bc,sthdBox:()=>cQ,stppSampleEntry:()=>rQ,strdBox:()=>ro,striBox:()=>bl,strkBox:()=>Eo,stsaSampleGroupEntry:()=>wd,stscBox:()=>lQ,stsdBox:()=>dQ,stsgBox:()=>Yl,stshBox:()=>Ll,stssBox:()=>_l,stszBox:()=>fQ,sttsBox:()=>uQ,stviBox:()=>Jl,stxtSampleEntry:()=>Mh,stypBox:()=>Hl,stz2Box:()=>Kl,subsBox:()=>vl,syncSampleGroupEntry:()=>Dd,taicBox:()=>Tl,taptBox:()=>wl,teleSampleGroupEntry:()=>yd,tencBox:()=>ql,tfdtBox:()=>wQ,tfhdBox:()=>DQ,tfraBox:()=>Vl,tkhdBox:()=>yQ,tmaxBox:()=>zl,tminBox:()=>Zl,totlBox:()=>Wl,tpayBox:()=>jl,tpylBox:()=>Ol,trafBox:()=>tQ,trakBox:()=>jC,trefBox:()=>Pl,trepBox:()=>$l,trexBox:()=>EB,trgrBox:()=>lo,trpyBox:()=>Ad,trunBox:()=>pQ,tsasSampleGroupEntry:()=>pd,tsclSampleGroupEntry:()=>md,tselBox:()=>td,tsynBox:()=>Yc,tx3gSampleEntry:()=>xh,txtcBox:()=>ed,tycoBox:()=>id,udesBox:()=>gd,udtaBox:()=>fo,uncCBox:()=>Id,uncvSampleEntry:()=>ah,urlBox:()=>mQ,urnBox:()=>sd,viprSampleGroupEntry:()=>Gd,vmhdBox:()=>GQ,vp08SampleEntry:()=>Ih,vp09SampleEntry:()=>sh,vpcCBox:()=>Lo,vttCBox:()=>nd,vttcBox:()=>no,vvc1SampleEntry:()=>th,vvcCBox:()=>_o,vvcNSampleEntry:()=>gh,vvi1SampleEntry:()=>eh,vvnCBox:()=>Bd,vvs1SampleEntry:()=>ih,waveBox:()=>Dl,wbbrBox:()=>Lc,wvttSampleEntry:()=>bh,xmlBox:()=>io});var Ni,Zh=(Ni=class extends G{constructor(){super(...arguments),this.box_name="AV1LayeredImageIndexingProperty"}parse(A){const e=((A.readUint8()&1&1)+1)*16;this.layer_size=[];for(let g=0;g<3;g++)e===16?this.layer_size[g]=A.readUint16():this.layer_size[g]=A.readUint32()}},Ni.fourcc="a1lx",Ni),Ri,Wh=(Ri=class extends G{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(A){this.op_index=A.readUint8()}},Ri.fourcc="a1op",Ri),Ui,jh=(Ui=class extends D{constructor(){super(...arguments),this.box_name="AuxiliaryTypeProperty"}parse(A){this.parseFullHeader(A),this.aux_type=A.readCString();const t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=A.readUint8Array(t)}},Ui.fourcc="auxC",Ui),ki,Oh=(ki=class extends G{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(A){this.bufferSizeDB=A.readUint32(),this.maxBitrate=A.readUint32(),this.avgBitrate=A.readUint32()}},ki.fourcc="btrt",ki),Mi,Xh=(Mi=class extends D{constructor(){super(...arguments),this.box_name="CodingConstraintsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.all_ref_pics_intra=(t&128)===128,this.intra_pred_used=(t&64)===64,this.max_ref_per_pic=(t&63)>>2,A.readUint24()}},Mi.fourcc="ccst",Mi),xi,Ph=(xi=class extends G{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.channel_count=A.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[];for(let t=0;t<this.channel_count;t++)this.channel_indexes.push(A.readUint16()),this.channel_types.push(A.readUint16()),this.channel_associations.push(A.readUint16())}},xi.fourcc="cdef",xi),bi,$h=(bi=class extends G{constructor(){super(...arguments),this.box_name="CleanApertureBox"}parse(A){this.cleanApertureWidthN=A.readUint32(),this.cleanApertureWidthD=A.readUint32(),this.cleanApertureHeightN=A.readUint32(),this.cleanApertureHeightD=A.readUint32(),this.horizOffN=A.readUint32(),this.horizOffD=A.readUint32(),this.vertOffN=A.readUint32(),this.vertOffD=A.readUint32()}},bi.fourcc="clap",bi),Yi,Ac=(Yi=class extends G{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.max_content_light_level=A.readUint16(),this.max_pic_average_light_level=A.readUint16()}},Yi.fourcc="clli",Yi),Li,tc=(Li=class extends G{constructor(){super(...arguments),this.box_name="CameraExtrinsicMatrixProperty"}parse(A){this.flags&1&&(this.pos_x=A.readInt32()),this.flags&2&&(this.pos_y=A.readInt32()),this.flags&4&&(this.pos_z=A.readInt32()),this.flags&8&&(this.version===0?this.flags&16?(this.quat_x=A.readInt32(),this.quat_y=A.readInt32(),this.quat_z=A.readInt32()):(this.quat_x=A.readInt16(),this.quat_y=A.readInt16(),this.quat_z=A.readInt16()):this.version),this.flags&32&&(this.id=A.readUint32())}},Li.fourcc="cmex",Li),_i,ec=(_i=class extends G{constructor(){super(...arguments),this.box_name="CameraIntrinsicMatrixProperty"}parse(A){this.focal_length_x=A.readInt32(),this.principal_point_x=A.readInt32(),this.principal_point_y=A.readInt32(),this.flags&1&&(this.focal_length_y=A.readInt32(),this.skew_factor=A.readInt32())}},_i.fourcc="cmin",_i),Ji,ic=(Ji=class extends G{constructor(){super(...arguments),this.box_name="ComponentDefinitionBox"}parse(A){this.component_count=A.readUint32(),this.component_types=[],this.component_type_urls=[];for(let t=0;t<this.component_count;t++){const e=A.readUint16();this.component_types.push(e),e>=32768&&this.component_type_urls.push(A.readCString())}}},Ji.fourcc="cmpd",Ji),Hi,gc=(Hi=class extends D{constructor(){super(...arguments),this.box_name="ChunkLargeOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.chunk_offsets=[],this.version===0)for(let e=0;e<t;e++)this.chunk_offsets.push(A.readUint64())}write(A){this.version=0,this.flags=0,this.size=4+8*this.chunk_offsets.length,this.writeHeader(A),A.writeUint32(this.chunk_offsets.length);for(let t=0;t<this.chunk_offsets.length;t++)A.writeUint64(this.chunk_offsets[t])}},Hi.fourcc="co64",Hi),Ki,Ic=(Ki=class extends D{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.parseFullHeader(A),this.maxCLL=A.readUint16(),this.maxFALL=A.readUint16()}},Ki.fourcc="CoLL",Ki),sc=class{toString(){let i="centre_azimuth: ";return i+=this.centre_azimuth,i+=" (",i+=this.centre_azimuth*2**-16,i+="°), centre_elevation: ",i+=this.centre_elevation,i+=" (",i+=this.centre_elevation*2**-16,i+="°), centre_tilt: ",i+=this.centre_tilt,i+=" (",i+=this.centre_tilt*2**-16,i+="°)",this.range_included_flag&&(i+=", azimuth_range: ",i+=this.azimuth_range,i+=" (",i+=this.azimuth_range*2**-16,i+="°), elevation_range: ",i+=this.elevation_range,i+=" (",i+=this.elevation_range*2**-16,i+="°)"),this.interpolate_included_flag&&(i+=", interpolate: ",i+=this.interpolate),i}},nc=class{toString(){let i="";return this.view_idc&&(i+="view_idc: ",i+=this.view_idc,i+=", "),i+="sphere_region: {",i+=this.sphere_region,i+="}",i}},vi,Bc=(vi=class extends D{constructor(){super(...arguments),this.box_name="CoverageInformationBox"}parse(A){this.parseFullHeader(A),this.coverage_shape_type=A.readUint8();const t=A.readUint8(),e=A.readInt8(),g=e&128;g&&(this.default_view_idc=(e&96)>>5),this.coverage_regions=new Array;for(let I=0;I<t;I++){const s=new nc;g&&(s.view_idc=A.readUint8()>>6),s.sphere_region=this.parseSphereRegion(A,!0,!0),this.coverage_regions.push(s)}}parseSphereRegion(A,t,e){const g=new sc;return g.centre_azimuth=A.readInt32(),g.centre_elevation=A.readInt32(),g.centre_tilt=A.readInt32(),g.range_included_flag=t,t&&(g.azimuth_range=A.readUint32(),g.elevation_range=A.readUint32()),g.interpolate_included_flag=e,e&&(g.interpolate=(A.readUint8()&128)===128),g}},vi.fourcc="covi",vi),Ti,Cc=(Ti=class extends D{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(A){this.parseFullHeader(A),this.parseLanguage(A),this.notice=A.readCString()}},Ti.fourcc="cprt",Ti),qi,Qc=(qi=class extends D{constructor(){super(...arguments),this.box_name="CompatibleSchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readCString())}},qi.fourcc="csch",qi),fs=2147483647,Vi,ac=(Vi=class extends D{constructor(){super(...arguments),this.box_name="CompositionToDecodeBox"}parse(A){this.parseFullHeader(A),this.version===0?(this.compositionToDTSShift=A.readInt32(),this.leastDecodeToDisplayDelta=A.readInt32(),this.greatestDecodeToDisplayDelta=A.readInt32(),this.compositionStartTime=A.readInt32(),this.compositionEndTime=A.readInt32()):this.version===1&&(this.compositionToDTSShift=A.readInt64(),this.leastDecodeToDisplayDelta=A.readInt64(),this.greatestDecodeToDisplayDelta=A.readInt64(),this.compositionStartTime=A.readInt64(),this.compositionEndTime=A.readInt64())}write(A){this.version=0,(this.compositionToDTSShift>fs||this.leastDecodeToDisplayDelta>fs||this.greatestDecodeToDisplayDelta>fs||this.compositionStartTime>fs||this.compositionEndTime>fs)&&(this.version=1),this.flags=0,this.version===0?(this.size=20,this.writeHeader(A),A.writeInt32(this.compositionToDTSShift),A.writeInt32(this.leastDecodeToDisplayDelta),A.writeInt32(this.greatestDecodeToDisplayDelta),A.writeInt32(this.compositionStartTime),A.writeInt32(this.compositionEndTime)):this.version===1&&(this.size=40,this.writeHeader(A),A.writeInt64(this.compositionToDTSShift),A.writeInt64(this.leastDecodeToDisplayDelta),A.writeInt64(this.greatestDecodeToDisplayDelta),A.writeInt64(this.compositionStartTime),A.writeInt64(this.compositionEndTime))}},Vi.fourcc="cslg",Vi),zi,Ec=(zi=class extends D{constructor(){super(...arguments),this.box_name="CompositionOffsetBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.sample_counts=[],this.sample_offsets=[],this.version===0)for(let e=0;e<t;e++){this.sample_counts.push(A.readUint32());const g=A.readInt32();g<0&&l.warn("BoxParser","ctts box uses negative values without using version 1"),this.sample_offsets.push(g)}else if(this.version===1)for(let e=0;e<t;e++)this.sample_counts.push(A.readUint32()),this.sample_offsets.push(A.readInt32())}write(A){this.version=this.sample_offsets.some(t=>t<0)?1:0,this.flags=0,this.size=4+8*this.sample_counts.length,this.writeHeader(A),A.writeUint32(this.sample_counts.length);for(let t=0;t<this.sample_counts.length;t++)A.writeUint32(this.sample_counts[t]),this.version===1?A.writeInt32(this.sample_offsets[t]):A.writeUint32(this.sample_offsets[t])}unpack(A){let t=0;for(let e=0;e<this.sample_counts.length;e++)for(let g=0;g<this.sample_counts[e];g++)A[t].pts=A[t].dts+this.sample_offsets[e],t++}},zi.fourcc="ctts",zi),Zi,rc=(Zi=class extends G{constructor(){super(...arguments),this.box_name="AC3SpecificBox"}parse(A){const t=A.readUint8(),e=A.readUint8(),g=A.readUint8();this.fscod=t>>6,this.bsid=t>>1&31,this.bsmod=(t&1)<<2|e>>6&3,this.acmod=e>>3&7,this.lfeon=e>>2&1,this.bit_rate_code=e&3|g>>5&7}},Zi.fourcc="dac3",Zi),Wi,oc=(Wi=class extends G{constructor(){super(...arguments),this.box_name="EC3SpecificBox"}parse(A){const t=A.readUint16();this.data_rate=t>>3,this.num_ind_sub=t&7,this.ind_subs=[];for(let e=0;e<this.num_ind_sub+1;e++){const g=A.readUint8(),I=A.readUint8(),s=A.readUint8(),n={fscod:g>>6,bsid:g>>1&31,bsmod:(g&1)<<4|I>>4&15,acmod:I>>1&7,lfeon:I&1,num_dep_sub:s>>1&15};this.ind_subs.push(n),n.num_dep_sub>0&&(n.chan_loc=(s&1)<<8|A.readUint8())}}},Wi.fourcc="dec3",Wi),ji,hc=(ji=class extends D{constructor(){super(...arguments),this.box_name="FLACSpecificBox"}parse(A){this.parseFullHeader(A);const t=127,e=128,g=[],I=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];let s;do{s=A.readUint8();const n=Math.min(s&t,I.length-1);n?A.readUint8Array(A.readUint24()):(A.readUint8Array(13),this.samplerate=A.readUint32()>>12,A.readUint8Array(20)),g.push(I[n])}while(s&e);this.numMetadataBlocks=g.length+" ("+g.join(", ")+")"}},ji.fourcc="dfLa",ji),Oi,cc=(Oi=class extends G{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(A){this.bytessent=A.readUint64()}},Oi.fourcc="dimm",Oi),Xi,lc=(Xi=class extends G{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(A){this.time=A.readUint32()}},Xi.fourcc="dmax",Xi),Pi,dc=(Pi=class extends G{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(A){this.bytessent=A.readUint64()}},Pi.fourcc="dmed",Pi),$i,fc=($i=class extends G{constructor(){super(...arguments),this.box_name="OpusSpecificBox"}parse(A){if(this.Version=A.readUint8(),this.OutputChannelCount=A.readUint8(),this.PreSkip=A.readUint16(),this.InputSampleRate=A.readUint32(),this.OutputGain=A.readInt16(),this.ChannelMappingFamily=A.readUint8(),this.ChannelMappingFamily!==0){this.StreamCount=A.readUint8(),this.CoupledCount=A.readUint8(),this.ChannelMapping=[];for(let t=0;t<this.OutputChannelCount;t++)this.ChannelMapping[t]=A.readUint8()}}write(A){if(this.size=11,this.ChannelMappingFamily!==0&&(this.size+=2+this.OutputChannelCount),this.writeHeader(A),A.writeUint8(this.Version),A.writeUint8(this.OutputChannelCount),A.writeUint16(this.PreSkip),A.writeUint32(this.InputSampleRate),A.writeInt16(this.OutputGain),A.writeUint8(this.ChannelMappingFamily),this.ChannelMappingFamily!==0){A.writeUint8(this.StreamCount),A.writeUint8(this.CoupledCount);for(let t=0;t<this.OutputChannelCount;t++)A.writeUint8(this.ChannelMapping[t])}}},$i.fourcc="dOps",$i),Ag,uc=(Ag=class extends G{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(A){this.bytessent=A.readUint64()}},Ag.fourcc="drep",Ag),tg,wc=(tg=class extends D{constructor(){super(...arguments),this.box_name="EditListBox"}parse(A){this.parseFullHeader(A),this.entries=[];const t=A.readUint32();for(let e=0;e<t;e++){const g={segment_duration:this.version===1?A.readUint64():A.readUint32(),media_time:this.version===1?A.readInt64():A.readInt32(),media_rate_integer:A.readInt16(),media_rate_fraction:A.readInt16()};this.entries.push(g)}}write(A){const t=this.entries.some(e=>e.segment_duration>P||e.media_time>P)||this.version===1;this.version=t?1:0,this.size=4+12*this.entries.length,this.size+=t?8*this.entries.length:0,this.writeHeader(A),A.writeUint32(this.entries.length);for(let e=0;e<this.entries.length;e++){const g=this.entries[e];t?(A.writeUint64(g.segment_duration),A.writeInt64(g.media_time)):(A.writeUint32(g.segment_duration),A.writeInt32(g.media_time)),A.writeInt16(g.media_rate_integer),A.writeInt16(g.media_rate_fraction)}}},tg.fourcc="elst",tg),eg,Dc=(eg=class extends D{constructor(){super(...arguments),this.box_name="EventMessageBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.timescale=A.readUint32(),this.presentation_time=A.readUint64(),this.event_duration=A.readUint32(),this.id=A.readUint32(),this.scheme_id_uri=A.readCString(),this.value=A.readCString()):(this.scheme_id_uri=A.readCString(),this.value=A.readCString(),this.timescale=A.readUint32(),this.presentation_time_delta=A.readUint32(),this.event_duration=A.readUint32(),this.id=A.readUint32());let t=this.size-this.hdr_size-(16+(this.scheme_id_uri.length+1)+(this.value.length+1));this.version===1&&(t-=4),this.message_data=A.readUint8Array(t)}write(A){this.version=0,this.flags=0,this.size=16+this.message_data.length+(this.scheme_id_uri.length+1)+(this.value.length+1),this.writeHeader(A),A.writeCString(this.scheme_id_uri),A.writeCString(this.value),A.writeUint32(this.timescale),A.writeUint32(this.presentation_time_delta),A.writeUint32(this.event_duration),A.writeUint32(this.id),A.writeUint8Array(this.message_data)}},eg.fourcc="emsg",eg),tA=class extends D{parse(i){this.parseFullHeader(i),this.group_id=i.readUint32(),this.num_entities_in_group=i.readUint32(),this.entity_ids=[];for(let A=0;A<this.num_entities_in_group;A++){const t=i.readUint32();this.entity_ids.push(t)}}},ig,yc=(ig=class extends tA{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},ig.fourcc="aebr",ig),gg,pc=(gg=class extends tA{constructor(){super(...arguments),this.box_name="Flash exposure information"}},gg.fourcc="afbr",gg),Ig,mc=(Ig=class extends tA{constructor(){super(...arguments),this.box_name="Album collection"}},Ig.fourcc="albc",Ig),sg,Gc=(sg=class extends tA{constructor(){super(...arguments),this.box_name="Alternative entity"}},sg.fourcc="altr",sg),ng,Fc=(ng=class extends tA{constructor(){super(...arguments),this.box_name="Burst image"}},ng.fourcc="brst",ng),Bg,Sc=(Bg=class extends tA{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},Bg.fourcc="dobr",Bg),Cg,Nc=(Cg=class extends tA{constructor(){super(...arguments),this.box_name="Equivalent entity"}},Cg.fourcc="eqiv",Cg),Qg,Rc=(Qg=class extends tA{constructor(){super(...arguments),this.box_name="Favorites collection"}},Qg.fourcc="favc",Qg),ag,Uc=(ag=class extends tA{constructor(){super(...arguments),this.box_name="Focus bracketing"}},ag.fourcc="fobr",ag),Eg,kc=(Eg=class extends tA{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},Eg.fourcc="iaug",Eg),rg,Mc=(rg=class extends tA{constructor(){super(...arguments),this.box_name="Panorama"}},rg.fourcc="pano",rg),og,xc=(og=class extends tA{constructor(){super(...arguments),this.box_name="Slideshow"}},og.fourcc="slid",og),hg,bc=(hg=class extends tA{constructor(){super(...arguments),this.box_name="Stereo"}},hg.fourcc="ster",hg),cg,Yc=(cg=class extends tA{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},cg.fourcc="tsyn",cg),lg,Lc=(lg=class extends tA{constructor(){super(...arguments),this.box_name="White balance bracketing"}},lg.fourcc="wbbr",lg),dg,_c=(dg=class extends tA{constructor(){super(...arguments),this.box_name="Progressive rendering"}},dg.fourcc="prgr",dg),fg,Jc=(fg=class extends tA{constructor(){super(...arguments),this.box_name="Image pyramid"}parse(A){this.parseFullHeader(A),this.group_id=A.readUint32(),this.num_entities_in_group=A.readUint32(),this.entity_ids=[];for(let t=0;t<this.num_entities_in_group;t++){const e=A.readUint32();this.entity_ids.push(e)}this.tile_size_x=A.readUint16(),this.tile_size_y=A.readUint16(),this.layer_binning=[],this.tiles_in_layer_column_minus1=[],this.tiles_in_layer_row_minus1=[];for(let t=0;t<this.num_entities_in_group;t++)this.layer_binning[t]=A.readUint16(),this.tiles_in_layer_row_minus1[t]=A.readUint16(),this.tiles_in_layer_column_minus1[t]=A.readUint16()}},fg.fourcc="pymd",fg),ug,Hc=(ug=class extends G{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(A){this.fieldCount=A.readUint8(),this.fieldOrdering=A.readUint8()}},ug.fourcc="fiel",ug),wg,Kc=(wg=class extends G{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(A){this.data_format=A.readString(4)}},wg.fourcc="frma",wg),Dg,vc=(Dg=class extends G{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(A){const t=A.readUint8();this.reserved=t>>7,this.axis=t&1}},Dg.fourcc="imir",Dg),yg,Tc=(yg=class extends D{constructor(){super(...arguments),this.box_name="ItemPropertyAssociationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.associations=[];for(let e=0;e<t;e++){const g=this.version<1?A.readUint16():A.readUint32(),I=[],s=A.readUint8();for(let n=0;n<s;n++){const B=A.readUint8();I.push({essential:(B&128)>>7===1,property_index:this.flags&1?(B&127)<<8|A.readUint8():B&127})}this.associations.push({id:g,props:I})}}},yg.fourcc="ipma",yg),pg,qc=(pg=class extends G{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(A){this.angle=A.readUint8()&3}},pg.fourcc="irot",pg),mg,Vc=(mg=class extends D{constructor(){super(...arguments),this.box_name="ImageSpatialExtentsProperty"}parse(A){this.parseFullHeader(A),this.image_width=A.readUint32(),this.image_height=A.readUint32()}},mg.fourcc="ispe",mg),Gg,zc=(Gg=class extends D{constructor(){super(...arguments),this.box_name="TAITimestampBox"}parse(A){this.TAI_timestamp=A.readUint64();const t=A.readUint8();this.sychronization_state=t>>7&1,this.timestamp_generation_failure=t>>6&1,this.timestamp_is_modified=t>>5&1}},Gg.fourcc="itai",Gg),Fg,Zc=(Fg=class extends D{constructor(){super(...arguments),this.box_name="KindBox"}parse(A){this.parseFullHeader(A),this.schemeURI=A.readCString(),this.isEndOfBox(A)||(this.value=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.schemeURI.length+1+(this.value?this.value.length+1:0),this.writeHeader(A),A.writeCString(this.schemeURI),this.value&&A.writeCString(this.value)}},Fg.fourcc="kind",Fg),Sg,Wc=(Sg=class extends D{constructor(){super(...arguments),this.box_name="LevelAssignmentBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.levels=[];for(let e=0;e<t;e++){const g={};this.levels[e]=g,g.track_ID=A.readUint32();const I=A.readUint8();switch(g.padding_flag=I>>7,g.assignment_type=I&127,g.assignment_type){case 0:g.grouping_type=A.readString(4);break;case 1:g.grouping_type=A.readString(4),g.grouping_type_parameter=A.readUint32();break;case 2:break;case 3:break;case 4:g.sub_track_id=A.readUint32();break;default:l.warn("BoxParser",`Unknown level assignment type: ${g.assignment_type}`)}}}},Sg.fourcc="leva",Sg),Ng,jc=(Ng=class extends G{constructor(){super(...arguments),this.box_name="LHEVCConfigurationBox"}parse(A){this.configurationVersion=A.readUint8(),this.min_spatial_segmentation_idc=A.readUint16()&4095,this.parallelismType=A.readUint8()&3;let t=A.readUint8();this.numTemporalLayers=(t&13)>>3,this.temporalIdNested=(t&4)>>2,this.lengthSizeMinusOne=t&3,this.nalu_arrays=[];const e=A.readUint8();for(let g=0;g<e;g++){const I=[];this.nalu_arrays.push(I),t=A.readUint8(),I.completeness=(t&128)>>7,I.nalu_type=t&63;const s=A.readUint16();for(let n=0;n<s;n++){const B=A.readUint16();I.push({data:A.readUint8Array(B)})}}}},Ng.fourcc="lhvC",Ng),Rg,Oc=(Rg=class extends G{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(A){this.layer_id=A.readUint16()}},Rg.fourcc="lsel",Rg),Ug,Xc=(Ug=class extends G{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(A){this.period=A.readUint32(),this.bytes=A.readUint32()}},Ug.fourcc="maxr",Ug),Xs=class{constructor(i,A){this.x=i,this.y=A}toString(){return"("+this.x+","+this.y+")"}},kg,Pc=(kg=class extends G{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(A){this.display_primaries=[],this.display_primaries[0]=new Xs(A.readUint16(),A.readUint16()),this.display_primaries[1]=new Xs(A.readUint16(),A.readUint16()),this.display_primaries[2]=new Xs(A.readUint16(),A.readUint16()),this.white_point=new Xs(A.readUint16(),A.readUint16()),this.max_display_mastering_luminance=A.readUint32(),this.min_display_mastering_luminance=A.readUint32()}},kg.fourcc="mdcv",kg),Mg,$c=(Mg=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(A){this.parseFullHeader(A),this._size=A.readUint32()}},Mg.fourcc="mfro",Mg),xg,Al=(xg=class extends D{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(A){this.parseFullHeader(A),this.bits_per_pixel=A.readUint8()}},xg.fourcc="mskC",xg),bg,tl=(bg=class extends G{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint32()}},bg.fourcc="npck",bg),Yg,el=(Yg=class extends G{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint64()}},Yg.fourcc="nump",Yg),il=class{constructor(i,A){this.pad1=i,this.pad2=A}},Lg,gl=(Lg=class extends D{constructor(){super(...arguments),this.box_name="PaddingBitsBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.padbits=[];for(let e=0;e<Math.floor((t+1)/2);e++){const g=A.readUint8(),I=(g&112)>>4,s=g&7;this.padbits.push(new il(I,s))}}},Lg.fourcc="padb",Lg),_g,Il=(_g=class extends G{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(A){this.hSpacing=A.readUint32(),this.vSpacing=A.readUint32()}},_g.fourcc="pasp",_g),Jg,sl=(Jg=class extends G{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},Jg.fourcc="payl",Jg),Hg,nl=(Hg=class extends G{constructor(){super(...arguments),this.box_name="hintpayloadID"}parse(A){this.payloadID=A.readUint32();const t=A.readUint8();this.rtpmap_string=A.readString(t)}},Hg.fourcc="payt",Hg),Kg,Bl=(Kg=class extends D{constructor(){super(...arguments),this.box_name="ProgressiveDownloadInfoBox",this.rate=[],this.initial_delay=[]}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/8;for(let e=0;e<t;e++)this.rate[e]=A.readUint32(),this.initial_delay[e]=A.readUint32()}},Kg.fourcc="pdin",Kg),vg,Cl=(vg=class extends D{constructor(){super(...arguments),this.box_name="PixelInformationProperty"}parse(A){this.parseFullHeader(A),this.num_channels=A.readUint8(),this.bits_per_channels=[];for(let t=0;t<this.num_channels;t++)this.bits_per_channels[t]=A.readUint8()}},vg.fourcc="pixi",vg),Tg,Ql=(Tg=class extends G{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(A){this.bytes=A.readUint32()}},Tg.fourcc="pmax",Tg),qg,al=(qg=class extends D{constructor(){super(...arguments),this.box_name="ProgressiveDerivedImageItemInformationProperty"}parse(A){if(this.parseFullHeader(A),this.step_count=A.readUint16(),this.item_count=[],this.flags&2)for(let t=0;t<this.step_count;t++)this.item_count[t]=A.readUint16()}},qg.fourcc="prdi",qg),Vg,El=(Vg=class extends D{constructor(){super(...arguments),this.box_name="ProjectionFormatBox"}parse(A){this.parseFullHeader(A),this.projection_type=A.readUint8()&31}},Vg.fourcc="prfr",Vg),zg,rl=(zg=class extends D{constructor(){super(...arguments),this.box_name="ProducerReferenceTimeBox"}parse(A){this.parseFullHeader(A),this.ref_track_id=A.readUint32(),this.ntp_timestamp=A.readUint64(),this.version===0?this.media_time=A.readUint32():this.media_time=A.readUint64()}},zg.fourcc="prft",zg),Zg,ol=(Zg=class extends D{constructor(){super(...arguments),this.box_name="ProtectionSystemSpecificHeaderBox"}parse(A){if(this.parseFullHeader(A),this.system_id=VA(A),this.kid=[],this.version>0){const e=A.readUint32();for(let g=0;g<e;g++)this.kid[g]=VA(A)}const t=A.readUint32();t>0&&(this.protection_data=A.readUint8Array(t))}},Zg.fourcc="pssh",Zg),Wg,hl=(Wg=class extends D{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Wg.fourcc="clef",Wg);function cl(i,A){if(i===ms.Types.UTF8)return new TextDecoder("utf-8").decode(A);const t=new DataView(A.buffer);if(i===ms.Types.BE_UNSIGNED_INT){if(A.length===1)return t.getUint8(0);if(A.length===2)return t.getUint16(0,!1);if(A.length===4)return t.getUint32(0,!1);if(A.length===8)return t.getBigUint64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_UNSIGNED_INT length "+A.length)}else if(i===ms.Types.BE_SIGNED_INT){if(A.length===1)return t.getInt8(0);if(A.length===2)return t.getInt16(0,!1);if(A.length===4)return t.getInt32(0,!1);if(A.length===8)return t.getBigInt64(0,!1);throw new Error("Unsupported ITIF_TYPE_BE_SIGNED_INT length "+A.length)}else if(i===ms.Types.BE_FLOAT32)return t.getFloat32(0,!1);l.warn("DataBox","Unsupported or unimplemented itif data type: "+i)}var qA,ms=(qA=class extends G{constructor(){super(...arguments),this.box_name="DataBox"}parse(A){this.valueType=A.readUint32(),this.country=A.readUint16(),this.country>255&&(A.seek(A.getPosition()-2),this.countryString=A.readString(2)),this.language=A.readUint16(),this.language>255&&(A.seek(A.getPosition()-2),this.parseLanguage(A)),this.raw=A.readUint8Array(this.size-this.hdr_size-8),this.value=cl(this.valueType,this.raw)}},qA.fourcc="data",qA.Types={RESERVED:0,UTF8:1,UTF16:2,SJIS:3,UTF8_SORT:4,UTF16_SORT:5,JPEG:13,PNG:14,BE_SIGNED_INT:21,BE_UNSIGNED_INT:22,BE_FLOAT32:23,BE_FLOAT64:24,BMP:27,QT_ATOM:28,BE_SIGNED_INT8:65,BE_SIGNED_INT16:66,BE_SIGNED_INT32:67,BE_FLOAT32_POINT:70,BE_FLOAT32_DIMENSIONS:71,BE_FLOAT32_RECT:72,BE_SIGNED_INT64:74,BE_UNSIGNED_INT8:75,BE_UNSIGNED_INT16:76,BE_UNSIGNED_INT32:77,BE_UNSIGNED_INT64:78,BE_FLOAT64_AFFINE_TRANSFORM:79},qA),jg,ll=(jg=class extends D{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},jg.fourcc="enof",jg),Og,dl=(Og=class extends G{constructor(){super(...arguments),this.box_name="IlstBox"}parse(A){this.list={};let t=this.size-this.hdr_size;for(;t>0;){const e=A.readUint32(),g=A.readUint32(),I=DA(A,!1,e-8);I.code===EA&&(this.list[g]=I.box),t-=e}}},Og.fourcc="ilst",Og),Xg,fl=(Xg=class extends D{constructor(){super(...arguments),this.box_name="KeysBox"}parse(A){this.parseFullHeader(A),this.count=A.readUint32(),this.keys={};for(let t=0;t<this.count;t++){const e=A.readUint32();this.keys[t+1]=A.readString(e-4)}}},Xg.fourcc="keys",Xg),Pg,ul=(Pg=class extends D{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Pg.fourcc="prof",Pg),$g,wl=($g=class extends x{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},$g.fourcc="tapt",$g),AI,Dl=(AI=class extends x{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},AI.fourcc="wave",AI),tI,yl=(tI=class extends G{constructor(){super(...arguments),this.box_name="rtpmoviehintinformation"}parse(A){this.descriptionformat=A.readString(4),this.sdptext=A.readString(this.size-this.hdr_size-4)}},tI.fourcc="rtp ",tI),eI,pl=(eI=class extends D{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationOffsetsBox"}parse(A){this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32());const t=A.readUint32();this.offset=[];for(let e=0;e<t;e++)this.version===0?this.offset[e]=A.readUint32():this.offset[e]=A.readUint64()}},eI.fourcc="saio",eI),iI,ml=(iI=class extends D{constructor(){super(...arguments),this.box_name="SampleAuxiliaryInformationSizesBox"}parse(A){if(this.parseFullHeader(A),this.flags&1&&(this.aux_info_type=A.readString(4),this.aux_info_type_parameter=A.readUint32()),this.default_sample_info_size=A.readUint8(),this.sample_count=A.readUint32(),this.sample_info_size=[],this.default_sample_info_size===0)for(let t=0;t<this.sample_count;t++)this.sample_info_size[t]=A.readUint8()}},iI.fourcc="saiz",iI),Gl=class{constructor(i,A){this.bad_pixel_row=i,this.bad_pixel_column=A}toString(){return"[row: "+this.bad_pixel_row+", column: "+this.bad_pixel_column+"]"}},gI,Fl=(gI=class extends D{constructor(){super(...arguments),this.box_name="SensorBadPixelsMapBox"}parse(A){this.parseFullHeader(A),this.component_count=A.readUint16(),this.component_index=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16());const t=A.readUint8();this.correction_applied=(t&128)===128,this.num_bad_rows=A.readUint32(),this.num_bad_cols=A.readUint32(),this.num_bad_pixels=A.readUint32(),this.bad_rows=[],this.bad_columns=[],this.bad_pixels=[];for(let e=0;e<this.num_bad_rows;e++)this.bad_rows.push(A.readUint32());for(let e=0;e<this.num_bad_cols;e++)this.bad_columns.push(A.readUint32());for(let e=0;e<this.num_bad_pixels;e++){const g=A.readUint32(),I=A.readUint32();this.bad_pixels.push(new Gl(g,I))}}},gI.fourcc="sbpm",gI),II,Sl=(II=class extends D{constructor(){super(...arguments),this.box_name="SchemeTypeBox"}parse(A){this.parseFullHeader(A),this.scheme_type=A.readString(4),this.scheme_version=A.readUint32(),this.flags&1&&(this.scheme_uri=A.readString(this.size-this.hdr_size-8))}},II.fourcc="schm",II),sI,Nl=(sI=class extends G{constructor(){super(...arguments),this.box_name="rtptracksdphintinformation"}parse(A){this.sdptext=A.readString(this.size-this.hdr_size)}},sI.fourcc="sdp ",sI),nI,Rl=(nI=class extends D{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},nI.fourcc="senc",nI),BI,Ul=(BI=class extends D{constructor(){super(...arguments),this.box_name="SMPTE2086MasteringDisplayMetadataBox"}parse(A){this.parseFullHeader(A),this.primaryRChromaticity_x=A.readUint16(),this.primaryRChromaticity_y=A.readUint16(),this.primaryGChromaticity_x=A.readUint16(),this.primaryGChromaticity_y=A.readUint16(),this.primaryBChromaticity_x=A.readUint16(),this.primaryBChromaticity_y=A.readUint16(),this.whitePointChromaticity_x=A.readUint16(),this.whitePointChromaticity_y=A.readUint16(),this.luminanceMax=A.readUint32(),this.luminanceMin=A.readUint32()}},BI.fourcc="SmDm",BI),CI,kl=(CI=class extends D{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(A){this.parseFullHeader(A),this.sampling_rate=A.readUint32()}},CI.fourcc="srat",CI),QI,Ml=(QI=class extends D{constructor(){super(...arguments),this.box_name="CompressedSubsegmentIndexBox"}parse(A){this.parseFullHeader(A),this.subsegments=[];const t=A.readUint32();for(let e=0;e<t;e++){const g={};this.subsegments.push(g),g.ranges=[];const I=A.readUint32();for(let s=0;s<I;s++){const n={};g.ranges.push(n),n.level=A.readUint8(),n.range_size=A.readUint24()}}}},QI.fourcc="ssix",QI),aI,xl=(aI=class extends D{constructor(){super(...arguments),this.box_name="DegradationPriorityBox"}parse(A){this.parseFullHeader(A);const t=(this.size-this.hdr_size)/2;this.priority=[];for(let e=0;e<t;e++)this.priority[e]=A.readUint16()}},aI.fourcc="stpd",aI),EI,bl=(EI=class extends D{constructor(){super(...arguments),this.box_name="SubTrackInformationBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint16(),this.alternate_group=A.readUint16(),this.sub_track_id=A.readUint32();const t=(this.size-this.hdr_size-8)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},EI.fourcc="stri",EI),rI,Yl=(rI=class extends D{constructor(){super(...arguments),this.box_name="SubTrackSampleGroupBox"}parse(A){this.parseFullHeader(A),this.grouping_type=A.readUint32();const t=A.readUint16();this.group_description_index=[];for(let e=0;e<t;e++)this.group_description_index[e]=A.readUint32()}},rI.fourcc="stsg",rI),oI,Ll=(oI=class extends D{constructor(){super(...arguments),this.box_name="ShadowSyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.shadowed_sample_numbers=[],this.sync_sample_numbers=[],this.version===0)for(let e=0;e<t;e++)this.shadowed_sample_numbers.push(A.readUint32()),this.sync_sample_numbers.push(A.readUint32())}write(A){this.version=0,this.flags=0,this.size=4+8*this.shadowed_sample_numbers.length,this.writeHeader(A),A.writeUint32(this.shadowed_sample_numbers.length);for(let t=0;t<this.shadowed_sample_numbers.length;t++)A.writeUint32(this.shadowed_sample_numbers[t]),A.writeUint32(this.sync_sample_numbers[t])}},oI.fourcc="stsh",oI),hI,_l=(hI=class extends D{constructor(){super(...arguments),this.box_name="SyncSampleBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();if(this.version===0){this.sample_numbers=[];for(let e=0;e<t;e++)this.sample_numbers.push(A.readUint32())}}write(A){this.version=0,this.flags=0,this.size=4+4*this.sample_numbers.length,this.writeHeader(A),A.writeUint32(this.sample_numbers.length),A.writeUint32Array(this.sample_numbers)}},hI.fourcc="stss",hI),cI,Jl=(cI=class extends D{constructor(){super(...arguments),this.box_name="StereoVideoBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.single_view_allowed=t&3,this.stereo_scheme=A.readUint32();const e=A.readUint32();for(this.stereo_indication_type=A.readString(e),this.boxes=[];A.getPosition()<this.start+this.size;){const g=DA(A,!1,this.size-(A.getPosition()-this.start));if(g.code===EA){const I=g.box;this.boxes.push(I),this[I.type]=I}else return}}},cI.fourcc="stvi",cI),lI,Hl=(lI=class extends G{constructor(){super(...arguments),this.box_name="SegmentTypeBox"}parse(A){let t=this.size-this.hdr_size;this.major_brand=A.readString(4),this.minor_version=A.readUint32(),t-=8,this.compatible_brands=[];let e=0;for(;t>=4;)this.compatible_brands[e]=A.readString(4),t-=4,e++}write(A){this.size=8+4*this.compatible_brands.length,this.writeHeader(A),A.writeString(this.major_brand,void 0,4),A.writeUint32(this.minor_version);for(let t=0;t<this.compatible_brands.length;t++)A.writeString(this.compatible_brands[t],void 0,4)}},lI.fourcc="styp",lI),dI,Kl=(dI=class extends D{constructor(){super(...arguments),this.box_name="CompactSampleSizeBox"}parse(A){if(this.parseFullHeader(A),this.sample_sizes=[],this.version===0){this.reserved=A.readUint24(),this.field_size=A.readUint8();const t=A.readUint32();if(this.field_size===4)for(let e=0;e<t;e+=2){const g=A.readUint8();this.sample_sizes[e]=g>>4&15,this.sample_sizes[e+1]=g&15}else if(this.field_size===8)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint8();else if(this.field_size===16)for(let e=0;e<t;e++)this.sample_sizes[e]=A.readUint16();else l.error("BoxParser","Error in length field in stz2 box",A.isofile)}}},dI.fourcc="stz2",dI),fI,vl=(fI=class extends D{constructor(){super(...arguments),this.box_name="SubSampleInformationBox"}parse(A){this.parseFullHeader(A);const t=A.readUint32();this.entries=[];let e;for(let g=0;g<t;g++){const I={};if(this.entries[g]=I,I.sample_delta=A.readUint32(),I.subsamples=[],e=A.readUint16(),e>0)for(let s=0;s<e;s++){const n={};I.subsamples.push(n),this.version===1?n.size=A.readUint32():n.size=A.readUint16(),n.priority=A.readUint8(),n.discardable=A.readUint8(),n.codec_specific_parameters=A.readUint32()}}}},fI.fourcc="subs",fI),uI,Tl=(uI=class extends D{constructor(){super(...arguments),this.box_name="TAIClockInfoBox"}parse(A){this.time_uncertainty=A.readUint64(),this.clock_resolution=A.readUint32(),this.clock_drift_rate=A.readInt32();const t=A.readUint8();this.clock_type=(t&192)>>6}},uI.fourcc="taic",uI),wI,ql=(wI=class extends D{constructor(){super(...arguments),this.box_name="TrackEncryptionBox"}parse(A){if(this.parseFullHeader(A),A.readUint8(),this.version===0)A.readUint8();else{const t=A.readUint8();this.default_crypt_byte_block=t>>4&15,this.default_skip_byte_block=t&15}this.default_isProtected=A.readUint8(),this.default_Per_Sample_IV_Size=A.readUint8(),this.default_KID=VA(A),this.default_isProtected===1&&this.default_Per_Sample_IV_Size===0&&(this.default_constant_IV_size=A.readUint8(),this.default_constant_IV=A.readUint8Array(this.default_constant_IV_size))}},wI.fourcc="tenc",wI),DI,Vl=(DI=class extends D{constructor(){super(...arguments),this.box_name="TrackFragmentRandomAccessBox"}parse(A){this.parseFullHeader(A),this.track_ID=A.readUint32(),A.readUint24();const t=A.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=t&3,this.entries=[];const e=A.readUint32();for(let g=0;g<e;g++)this.version===1?(this.time=A.readUint64(),this.moof_offset=A.readUint64()):(this.time=A.readUint32(),this.moof_offset=A.readUint32()),this.traf_number=A["readUint"+8*(this.length_size_of_traf_num+1)](),this.trun_number=A["readUint"+8*(this.length_size_of_trun_num+1)](),this.sample_number=A["readUint"+8*(this.length_size_of_sample_num+1)]()}},DI.fourcc="tfra",DI),yI,zl=(yI=class extends G{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(A){this.time=A.readUint32()}},yI.fourcc="tmax",yI),pI,Zl=(pI=class extends G{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(A){this.time=A.readUint32()}},pI.fourcc="tmin",pI),mI,Wl=(mI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},mI.fourcc="totl",mI),GI,jl=(GI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},GI.fourcc="tpay",GI),FI,Ol=(FI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},FI.fourcc="tpyl",FI),SI,Xl=(SI=class extends Hr{},SI.fourcc="msrc",SI),LA,Pl=(LA=class extends G{constructor(){super(...arguments),this.box_name="TrackReferenceBox",this.references=[]}parse(A){for(;A.getPosition()<this.start+this.size;){const t=DA(A,!0,this.size-(A.getPosition()-this.start));if(t.code===EA){LA.allowed_types.includes(t.type)||l.warn("BoxParser",`Unknown track reference type: '${t.type}'`);const e=new Tr(t.type,t.size,t.hdr_size,t.start);e.write===G.prototype.write&&e.type!=="mdat"&&(l.info("BoxParser","TrackReference "+e.type+" box writing not yet implemented, keeping unparsed data in memory for later write"),e.parseDataAndRewind(A)),e.parse(A),this.references.push(e)}else return}}},LA.fourcc="tref",LA.allowed_types=["hint","cdsc","font","hind","vdep","vplx","subt","thmb","auxl","cdtg","shsc","aest"],LA),NI,$l=(NI=class extends D{constructor(){super(...arguments),this.box_name="TrackExtensionPropertiesBox"}parse(A){for(this.parseFullHeader(A),this.track_ID=A.readUint32(),this.boxes=[];A.getPosition()<this.start+this.size;){const t=DA(A,!1,this.size-(A.getPosition()-this.start));if(t.code===EA){const e=t.box;this.boxes.push(e)}else return}}},NI.fourcc="trep",NI),RI,Ad=(RI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},RI.fourcc="trpy",RI),UI,td=(UI=class extends D{constructor(){super(...arguments),this.box_name="TrackSelectionBox"}parse(A){this.parseFullHeader(A),this.switch_group=A.readUint32();const t=(this.size-this.hdr_size-4)/4;this.attribute_list=[];for(let e=0;e<t;e++)this.attribute_list[e]=A.readUint32()}},UI.fourcc="tsel",UI),kI,ed=(kI=class extends D{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(A){this.parseFullHeader(A),this.config=A.readCString()}},kI.fourcc="txtc",kI),MI,id=(MI=class extends G{constructor(){super(...arguments),this.box_name="TypeCombinationBox"}parse(A){const t=(this.size-this.hdr_size)/4;this.compatible_brands=[];for(let e=0;e<t;e++)this.compatible_brands[e]=A.readString(4)}},MI.fourcc="tyco",MI),xI,gd=(xI=class extends D{constructor(){super(...arguments),this.box_name="UserDescriptionProperty"}parse(A){this.parseFullHeader(A),this.lang=A.readCString(),this.name=A.readCString(),this.description=A.readCString(),this.tags=A.readCString()}},xI.fourcc="udes",xI),bI,Id=(bI=class extends D{constructor(){super(...arguments),this.box_name="UncompressedFrameConfigBox"}parse(A){if(this.parseFullHeader(A),this.profile=A.readString(4),this.version!==1){if(this.version===0){this.component_count=A.readUint32(),this.component_index=[],this.component_bit_depth_minus_one=[],this.component_format=[],this.component_align_size=[];for(let e=0;e<this.component_count;e++)this.component_index.push(A.readUint16()),this.component_bit_depth_minus_one.push(A.readUint8()),this.component_format.push(A.readUint8()),this.component_align_size.push(A.readUint8());this.sampling_type=A.readUint8(),this.interleave_type=A.readUint8(),this.block_size=A.readUint8();const t=A.readUint8();this.component_little_endian=t>>7&1,this.block_pad_lsb=t>>6&1,this.block_little_endian=t>>5&1,this.block_reversed=t>>4&1,this.pad_unknown=t>>3&1,this.pixel_size=A.readUint32(),this.row_align_size=A.readUint32(),this.tile_align_size=A.readUint32(),this.num_tile_cols_minus_one=A.readUint32(),this.num_tile_rows_minus_one=A.readUint32()}}}},bI.fourcc="uncC",bI),YI,sd=(YI=class extends D{constructor(){super(...arguments),this.box_name="DataEntryUrnBox"}parse(A){this.parseFullHeader(A),this.name=A.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=A.readCString())}write(A){this.version=0,this.flags=0,this.size=this.name.length+1+(this.location?this.location.length+1:0),this.writeHeader(A),A.writeCString(this.name),this.location&&A.writeCString(this.location)}},YI.fourcc="urn ",YI),LI,nd=(LI=class extends G{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},LI.fourcc="vttC",LI),_I,Bd=(_I=class extends D{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.lengthSizeMinusOne=t&3}},_I.fourcc="vvnC",_I),JI,Cd=(JI=class extends W{parse(A){const t=A.readUint16();this.first_output_sample=A.readUint16(),this.sample_offset=[];for(let g=0;g<t;g++)this.sample_offset[g]=A.readUint32();const e=this.description_length-4-4*t;this.num_output_samples=[],this.num_total_samples=[];for(let g=0;g<e/4;g++)this.num_output_samples[g]=A.readUint16(),this.num_total_samples[g]=A.readUint16()}},JI.grouping_type="alst",JI),HI,Qd=(HI=class extends W{parse(A){this.layerNumber=A.readUint8(),this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()}},HI.grouping_type="avll",HI),KI,ad=(KI=class extends W{parse(A){this.subSequenceIdentifier=A.readUint16(),this.layerNumber=A.readUint8();const t=A.readUint8();this.durationFlag=t>>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=A.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()),this.dependency=[];const e=A.readUint8();for(let g=0;g<e;g++)this.dependency.push({subSeqDirectionFlag:A.readUint8(),layerNumber:A.readUint8(),subSequenceIdentifier:A.readUint16()})}},KI.grouping_type="avss",KI),vI,Ed=(vI=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},vI.grouping_type="dtrt",vI),TI,rd=(TI=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},TI.grouping_type="mvif",TI),qI,od=(qI=class extends W{parse(A){this.roll_distance=A.readInt16()}},qI.grouping_type="prol",qI),VI,hd=(VI=class extends W{parse(A){const t=A.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=t&127}},VI.grouping_type="rap ",VI),zI,cd=(zI=class extends W{parse(A){if(this.operation_point_count=A.readUint16(),this.description_length!==2+(this.operation_point_count===1?2:this.operation_point_count*6)+9)l.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=A.readUint8Array(this.description_length-2);else{if(this.operation_point_count===1)this.target_rate_share=A.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(let t=0;t<this.operation_point_count;t++)this.available_bitrate[t]=A.readUint32(),this.target_rate_share[t]=A.readUint16()}this.maximum_bitrate=A.readUint32(),this.minimum_bitrate=A.readUint32(),this.discard_priority=A.readUint8()}}},zI.grouping_type="rash",zI),ZI,ld=(ZI=class extends W{parse(A){this.roll_distance=A.readInt16()}},ZI.grouping_type="roll",ZI),WI,dd=(WI=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},WI.grouping_type="scif",WI),jI,fd=(jI=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},jI.grouping_type="scnm",jI),OI,ud=(OI=class extends W{parse(A){this.reserved=A.readUint8();const t=A.readUint8();this.crypt_byte_block=t>>4,this.skip_byte_block=t&15,this.isProtected=A.readUint8(),this.Per_Sample_IV_Size=A.readUint8(),this.KID=VA(A),this.constant_IV_size=0,this.constant_IV=0,this.isProtected===1&&this.Per_Sample_IV_Size===0&&(this.constant_IV_size=A.readUint8(),this.constant_IV=A.readUint8Array(this.constant_IV_size))}},OI.grouping_type="seig",OI),XI,wd=(XI=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},XI.grouping_type="stsa",XI),PI,Dd=(PI=class extends W{parse(A){const t=A.readUint8();this.NAL_unit_type=t&63}},PI.grouping_type="sync",PI),$I,yd=($I=class extends W{parse(A){const t=A.readUint8();this.level_independently_decodable=t>>7}},$I.grouping_type="tele",$I),As,pd=(As=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},As.grouping_type="tsas",As),ts,md=(ts=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},ts.grouping_type="tscl",ts),es,Gd=(es=class extends W{parse(A){l.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},es.grouping_type="vipr",es),is,Fd=(is=class extends G{},is.fourcc="uuid",is),gs,rs=(gs=class extends D{},gs.fourcc="uuid",gs),Is,Sd=(Is=class extends rs{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(A){this.parseFullHeader(A),this.LiveServerManifest=A.readString(this.size-this.hdr_size).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}},Is.uuid="a5d40b30e81411ddba2f0800200c9a66",Is),ss,Nd=(ss=class extends rs{constructor(){super(...arguments),this.box_name="PiffProtectionSystemSpecificHeaderBox"}parse(A){this.parseFullHeader(A),this.system_id=VA(A);const t=A.readUint32();t>0&&(this.data=A.readUint8Array(t))}},ss.uuid="d08a4f1810f34a82b6c832d8aba183d3",ss),ns,Rd=(ns=class extends rs{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},ns.uuid="a2394f525a9b4f14a2446c427c648df4",ns),Bs,Ud=(Bs=class extends rs{constructor(){super(...arguments),this.box_name="PiffTrackEncryptionBox"}parse(A){this.parseFullHeader(A),this.default_AlgorithmID=A.readUint24(),this.default_IV_size=A.readUint8(),this.default_KID=VA(A)}},Bs.uuid="8974dbce7be74c5184f97148f9882554",Bs),Cs,kd=(Cs=class extends rs{constructor(){super(...arguments),this.box_name="TfrfBox"}parse(A){this.parseFullHeader(A),this.fragment_count=A.readUint8(),this.entries=[];for(let t=0;t<this.fragment_count;t++){let e=0,g=0;this.version===1?(e=A.readUint64(),g=A.readUint64()):(e=A.readUint32(),g=A.readUint32()),this.entries.push({absolute_time:e,absolute_duration:g})}}},Cs.uuid="d4807ef2ca3946958e5426cb9e46a79f",Cs),Qs,Md=(Qs=class extends rs{constructor(){super(...arguments),this.box_name="TfxdBox"}parse(A){this.parseFullHeader(A),this.version===1?(this.absolute_time=A.readUint64(),this.duration=A.readUint64()):(this.absolute_time=A.readUint32(),this.duration=A.readUint32())}},Qs.uuid="6d1d9b0542d544e680e2141daff757b2",Qs),as,xd=(as=class extends Fd{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(A){this.content_id=A.readCString()}},as.uuid="261ef3741d975bbaacbd9d2c8ea73522",as);jr(kQ);Or(FQ);const bd=800;function Yd(i){return i.startsWith("avc1")||i.startsWith("avc3")}function Ld(i){const A=new Uint8Array(i);if(A.byteLength<8)return i;const t=A[4],e=A[5],g=A[6],I=A[7];return t===97&&e===118&&g===99&&I===67?i.slice(8):i}function _d(i){const A=i.avcC;if(!A)return;const t=new sA;A.write(t);const e=t.byteLength;if(e<=0)return;const g=t.buffer.slice(0,e);return Ld(g)}function Jd(i){return new Promise((A,t)=>{const e=Kh(),g=i.slice(0);g.fileStart=0,e.onError=I=>{t(new Error(`mp4box: ${I}`))},e.onReady=I=>{var s,n,B,C,Q,a,E;const r=(s=I.videoTracks)==null?void 0:s[0];if(!r){t(new Error("mp4box: no video track"));return}if(!Yd(r.codec)){t(new Error(`mp4box: unsupported video codec ${r.codec}`));return}if(r.nb_samples>bd){t(new Error(`mp4box: too many samples (${r.nb_samples})`));return}const o=[];e.onSamples=(c,u,d)=>{o.push(...d)},e.setExtractionOptions(r.id,null,{nbSamples:Math.max(r.nb_samples,1)}),e.start();const h=r.timescale>0?r.duration/r.timescale:I.duration/(I.timescale||1);if(o.length===0){t(new Error("mp4box: extraction produced no samples"));return}A({codec:r.codec,timescale:r.timescale,durationSec:Number.isFinite(h)?h:0,videoWidth:(C=(B=(n=r.video)==null?void 0:n.width)!=null?B:r.track_width)!=null?C:0,videoHeight:(E=(a=(Q=r.video)==null?void 0:Q.height)!=null?a:r.track_height)!=null?E:0,samples:o})},e.appendBuffer(g),e.flush()})}const iC=25e3;async function Hd(i,A,t){const e=performance.now();let g=0;for(;i.decodeQueueSize>0;)if(await new Promise(I=>queueMicrotask(I)),g++,g%120===0&&await new Promise(I=>setTimeout(I,0)),performance.now()-e>t){console.warn("[GiftStage:WC] decodeQueue drain gave up",{label:A,decodeQueueSize:i.decodeQueueSize,spins:g});break}}async function Kd(i,A){console.info("[GiftStage:WC] VideoDecoder.flush…",A);try{await Promise.race([i.flush(),new Promise((t,e)=>{setTimeout(()=>e(new Error(`VideoDecoder.flush() timed out after ${iC}ms (${JSON.stringify(A)})`)),iC)})])}catch(t){try{i.close()}catch(e){}throw t}}async function vd(i,A,t,e){var g,I;if(t.length===0)return{frames:[],timesSec:new Float64Array(0)};const s=[...t].sort((o,h)=>{var c,u,d,f;const w=((u=(c=o.dts)!=null?c:o.cts)!=null?u:0)-((f=(d=h.dts)!=null?d:h.cts)!=null?f:0);return w!==0?w:0}),n=[],B=new VideoDecoder({output:o=>{n.push(o)},error:o=>{throw o}}),C=await qd(i,A);B.configure(C);let Q=0;for(const o of s){const h=o.data;if(!h||h.byteLength===0)continue;const c=(I=(g=o.cts)!=null?g:o.dts)!=null?I:0,u=Math.round(c/e*1e6),d=o.duration&&e>0?Math.round(o.duration/e*1e6):void 0,f=new Uint8Array(h.byteLength);f.set(h);const w=new EncodedVideoChunk({type:o.is_sync?"key":"delta",timestamp:u,duration:d,data:f});try{B.decode(w)}catch(p){console.error("[GiftStage:WC] decoder.decode failed",{chunkIndex:Q,err:p});try{B.close()}catch(y){}throw p}Q++,await new Promise(p=>queueMicrotask(p))}await Hd(B,"after last decode",1e4);const a=B.decodeQueueSize,E=n.length;await Kd(B,{chunksDecoded:Q,outputsBeforeFlush:E,queueBeforeFlush:a}),B.close(),n.sort((o,h)=>o.timestamp-h.timestamp);const r=Float64Array.from(n.map(o=>o.timestamp/1e6));if(n.length===0)throw new Error("WebCodecs: decoder produced no frames");return{frames:n,timesSec:r}}function On(i,A,t){if(i.length===0)return 0;const e=i.length;if(t<=i[0])return 0;const g=i[e-1];if(t>=A||t>=g)return e-1;for(let I=1;I<e;I++)if(t<i[I])return I-1;return e-1}function Td(i,A,t){if(t.length===0)return 1e-6;const e=t.length-1,g=t[e],I=A.length>e?A[e]:0;let s=0;g.duration!=null&&Number.isFinite(g.duration)&&g.duration>0?s=g.duration/1e6:A.length>=2?s=A[e]-A[e-1]:s=1/30;const n=I+s;let B=i>0?i:n;if(!(B>0)&&A.length>=2){const C=(A[A.length-1]-A[0])/(A.length-1);B=A[A.length-1]+(C>0?C:1/30)}return B>0||(B=Math.max(n,1/30)),B}async function qd(i,A){var t;const e={codec:i,hardwareAcceleration:"prefer-software",...A&&A.byteLength>0?{description:A}:{}};let g=await VideoDecoder.isConfigSupported(e),I=e;if(!g.supported){const s={codec:i,...A&&A.byteLength>0?{description:A}:{}};if(g=await VideoDecoder.isConfigSupported(s),!g.supported)throw new Error(`WebCodecs: unsupported config ${i}`);I=s}return(t=g.config)!=null?t:I}const MQ=`var Xn = (r) => {
1479
1479
  throw TypeError(r);
1480
1480
  };
1481
1481
  var Hn = (r, t, e) => t.has(r) || Xn("Cannot " + e);
@@ -8534,7 +8534,7 @@ async function xu(r) {
8534
8534
  }
8535
8535
  }
8536
8536
  //# sourceMappingURL=webcodecs-mp4.worker-M2-SB0h_.js.map
8537
- `,iC=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",kQ],{type:"text/javascript;charset=utf-8"});function qd(i){let A;try{if(A=iC&&(self.URL||self.webkitURL).createObjectURL(iC),!A)throw"";const t=new Worker(A,{type:"module",name:i==null?void 0:i.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(kQ),{type:"module",name:i==null?void 0:i.name})}}var Vd=Object.defineProperty,zd=(i,A,t)=>A in i?Vd(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,iA=(i,A,t)=>zd(i,typeof A!="symbol"?A+"":A,t);const Zd=28,Wd=8;class jd{constructor(A){iA(this,"maxSize"),iA(this,"map",new Map),iA(this,"playbackHint",0),this.maxSize=Math.max(4,A)}setPlaybackHint(A){Number.isFinite(A)&&A>=0&&(this.playbackHint=A)}minKey(){let A;for(const t of this.map.keys())(A===void 0||t<A)&&(A=t);return A}set(A,t){this.map.set(A,t),this.evictDownToCapacity()}evictDownToCapacity(){const A=Math.max(4,Math.floor(this.maxSize*.35)),t=Math.max(4,this.maxSize-A-2);for(;this.map.size>this.maxSize;){const e=[...this.map.keys()].sort((C,Q)=>C-Q),g=this.playbackHint,I=e.filter(C=>C<g-A);if(I.length){this.closeKey(I[0]);continue}const s=e.filter(C=>C>g+t);if(s.length){this.closeKey(s[s.length-1]);continue}let n=e[0],B=0;for(const C of e){const Q=Math.abs(C-g);Q>=B&&(B=Q,n=C)}this.closeKey(n)}}closeKey(A){const t=this.map.get(A);this.map.delete(A);try{t==null||t.close()}catch(e){}}bestAtOrBefore(A){let t=-1;for(const e of this.map.keys())e<=A&&e>t&&(t=e);return t<0?null:this.map.get(t)}frameForDisplay(A){const t=this.bestAtOrBefore(A);if(t)return t;const e=[...this.map.keys()].sort((I,s)=>I-s);if(e.length===0)return null;const g=e.find(I=>I>=A);return g!==void 0?this.map.get(g):this.map.get(e[e.length-1])}clear(){for(const A of this.map.values())try{A.close()}catch(t){}this.map.clear()}get size(){return this.map.size}}function gC(i,A,t){return new Promise((e,g)=>{const I=performance.now(),s=()=>{try{if(i()){e();return}if(performance.now()-I>A){g(new Error(`WebCodecs: timeout waiting for ${t}`));return}setTimeout(s,0)}catch(n){g(n instanceof Error?n:new Error(String(n)))}};setTimeout(s,0)})}let Od=1;class KA{constructor(A,t,e,g,I,s,n,B,C,Q,a){iA(this,"duration"),iA(this,"videoWidth"),iA(this,"videoHeight"),iA(this,"timesSec"),iA(this,"worker"),iA(this,"workerMsgId"),iA(this,"streaming"),iA(this,"ring"),iA(this,"frames"),iA(this,"maxDecodedFrames"),iA(this,"decodeAheadFrames"),iA(this,"lastWrapped",-1),iA(this,"destroyed",!1),this.duration=A,this.videoWidth=t,this.videoHeight=e,this.timesSec=g,this.worker=I,this.workerMsgId=s,this.streaming=n,this.ring=B,this.frames=C,this.maxDecodedFrames=Q,this.decodeAheadFrames=a}static async create(A,t,e){var g,I;if(typeof VideoDecoder=="undefined")throw new Error("WebCodecs VideoDecoder not available");const s=(e==null?void 0:e.useWorker)!==!1,n=(g=e==null?void 0:e.maxDecodedFrames)!=null?g:Zd,B=(I=e==null?void 0:e.decodeAheadFrames)!=null?I:Wd;let C;if(typeof A=="string"?C=await Xd(A,t):C=A,s&&typeof Worker!="undefined"){const Q=C.slice(0);try{return await KA.createViaWorker(Q,n,B)}catch(a){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",a)}}return KA.createOnMainThread(C,n,B)}static async createViaWorker(A,t,e){const g=new qd,I=Od++,s=new jd(t);let n=0,B=0,C=0,Q=new Float64Array(0),a=!1,r=null;const E=l=>{const u=l.data;if(!(!u||u.id!==I)){if(u.type==="meta"){n=u.duration,B=u.videoWidth,C=u.videoHeight;const w=u.timesSec;Q=Float64Array.from(w),a=!0;return}if(u.type==="frame"){s.set(u.index,u.frame);return}u.type!=="eos"&&u.type==="error"&&(r=new Error(u.message))}},o=l=>{r=new Error(l.message||"Worker error")};g.addEventListener("message",E),g.addEventListener("error",o);const h=A;g.postMessage({type:"init",id:I,buffer:h,maxDecodedFrames:t,decodeAheadFrames:e},[h]);try{if(await gC(()=>a||r!=null,6e4,"meta"),r)throw r;const l=n>0?n:1e-6,u=jn(Q,l,0);if(await gC(()=>r!=null||s.bestAtOrBefore(u)!=null,6e4,"first frame"),r)throw r}catch(l){throw g.removeEventListener("message",E),g.removeEventListener("error",o),g.terminate(),s.clear(),l instanceof Error?l:new Error(String(l))}const c=Q.length>0?Q[0]:0,f=Q.length>0?Q[Q.length-1]:0;return console.info(`[GiftStage:WC] worker streaming ready frames=${Q.length} duration=${n.toFixed(4)}s size=${B}x${C} times=[${c.toFixed(4)} … ${f.toFixed(4)}] ring=${t}`),new KA(n,B,C,Q,g,I,!0,s,null,t,e)}static async createOnMainThread(A,t,e){console.info("[GiftStage:WC] mp4box demux (main thread)…");const g=await _d(A);if(g.samples.length===0)throw new Error("mp4box: no samples");const s=g.samples[0].description,n=s?Ld(s):void 0;console.info("[GiftStage:WC] VideoDecoder decode (main thread)…");const{frames:B,timesSec:C}=await Kd(g.codec,n,g.samples,g.timescale),Q=B[B.length-1],a=vd(g.durationSec,C,B),r=g.videoWidth||Q.displayWidth||Q.codedWidth||0,E=g.videoHeight||Q.displayHeight||Q.codedHeight||0,o=C.length>0?C[0]:0,h=C.length>0?C[C.length-1]:0;return console.info(`[GiftStage:WC] main decode ok frames=${B.length} duration=${a.toFixed(4)}s size=${r}x${E} times=[${o.toFixed(4)} … ${h.toFixed(4)}]`),new KA(a,r,E,C,null,0,!1,null,B,t,e)}ensureDecodedThrough(A){var t,e,g,I,s;if(this.destroyed||!this.streaming||!this.worker)return;const n=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(n))return;const B=(A%n+n)%n;if(this.lastWrapped>=0&&B<this.lastWrapped-.001&&this.lastWrapped>n*.1&&((t=this.ring)==null||t.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId})),this.lastWrapped=B,this.timesSec.length===0)return;const C=jn(this.timesSec,n,B);(e=this.ring)==null||e.setPlaybackHint(C);const Q=(g=this.ring)==null?void 0:g.minKey(),a=Math.max(4,this.decodeAheadFrames);this.ring&&Q!==void 0&&Q>C+a&&(this.ring.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId}));const r=Math.min(this.timesSec.length-1,Math.max(0,C+Math.max(0,this.decodeAheadFrames))),E=Math.max(0,this.maxDecodedFrames-((s=(I=this.ring)==null?void 0:I.size)!=null?s:0));this.worker.postMessage({type:"ensure",id:this.workerMsgId,needIdx:r,freeSlots:E})}getFrameForTime(A){var t,e,g;if(this.timesSec.length===0)return null;const I=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(I))return console.warn("[GiftStage:WC] getFrameForTime bad input",{tSec:A,clip:I,frames:this.timesSec.length}),this.streaming&&this.ring?this.ring.frameForDisplay(0):(e=(t=this.frames)==null?void 0:t[0])!=null?e:null;const s=(A%I+I)%I,n=jn(this.timesSec,I,s);if(this.streaming&&this.ring){this.ring.setPlaybackHint(n);const C=this.ring.frameForDisplay(n);return C||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:n,wrapped:s,clip:I}),C}const B=(g=this.frames)==null?void 0:g[n];return B||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:n,wrapped:s,clip:I}),B!=null?B:null}destroy(){var A;if(!this.destroyed){if(this.destroyed=!0,this.worker){try{this.worker.postMessage({type:"destroy",id:this.workerMsgId})}catch(t){}try{this.worker.terminate()}catch(t){}}if((A=this.ring)==null||A.clear(),this.frames){for(const t of this.frames)try{t==null||t.close()}catch(e){}this.frames.length=0}}}}async function Xd(i,A){return Ys(i,A)}function IC(i,A,t,e,g){const I=Math.max(1,Math.floor(A)),s=Math.max(1,Math.floor(t)),n=Math.max(1,i.width*i.scale),B=Math.max(1,i.height*i.scale);let C;if(TA(i)==="contain"){let Q,a;if(e==="alphaVideo")Q=I*.5,a=s;else{if(!g)return C=Math.min(1,n/I,B/s),On(I,s,C);({w:Q,h:a}=tt(g.info))}if(!(Q>0)||!(a>0))return C=Math.min(1,n/I,B/s),On(I,s,C);const r=Math.min(n/Q,B/a);C=Math.min(1,r)}else C=Math.min(1,n/I,B/s);return On(I,s,C)}function On(i,A,t){const e=Math.max(1,Math.min(i,Math.ceil(i*t))),g=Math.max(1,Math.min(A,Math.ceil(A*t)));return{w:e,h:g}}var Pd=Object.defineProperty,$d=(i,A,t)=>A in i?Pd(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,dA=(i,A,t)=>$d(i,typeof A!="symbol"?A+"":A,t);const dn=9;function Af(i,A){if(typeof document=="undefined"||typeof document.createElement!="function")throw new Error("VAP mixed rendering requires DOM canvas support");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(i)),t.height=Math.max(1,Math.round(A)),t}function fn(i,A,t,e,g,I){return[i/g,(i+t)/g,(I-A-e)/I,(I-A)/I]}function sC(i,A,t){const e=i.createShader(A);if(!e)throw new Error("Failed to create VAP mix shader");if(i.shaderSource(e,t),i.compileShader(e),!i.getShaderParameter(e,i.COMPILE_STATUS)){const g=i.getShaderInfoLog(e)||"unknown shader compile error";throw i.deleteShader(e),new Error(`Failed to compile VAP mix shader: ${g}`)}return e}function tf(i,A,t){const e=sC(i,i.VERTEX_SHADER,A),g=sC(i,i.FRAGMENT_SHADER,t),I=i.createProgram();if(!I)throw i.deleteShader(e),i.deleteShader(g),new Error("Failed to create VAP mix program");if(i.attachShader(I,e),i.attachShader(I,g),i.linkProgram(I),!i.getProgramParameter(I,i.LINK_STATUS)){const s=i.getProgramInfoLog(I)||"unknown program link error";throw i.deleteProgram(I),i.deleteShader(e),i.deleteShader(g),new Error(`Failed to link VAP mix program: ${s}`)}return i.useProgram(I),{program:I,vertexShader:e,fragmentShader:g}}function nC(i,A,t,e=!1){const g=i.createTexture();if(!g)throw new Error("Failed to create VAP mix texture");return i.activeTexture(i.TEXTURE0+A),i.bindTexture(i.TEXTURE_2D,g),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),t?(i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e?1:0),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)):i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,null),g}function ef(i){const[A,t,e,g]=i.rgbFrame,[I,s,n,B]=i.aFrame,C=fn(A,t,e,g,i.videoW,i.videoH),Q=fn(I,s,n,B,i.videoW,i.videoH);return new Float32Array([-1,1,C[0],C[3],Q[0],Q[3],1,1,C[1],C[3],Q[1],Q[3],-1,-1,C[0],C[2],Q[0],Q[2],1,-1,C[1],C[2],Q[1],Q[2]])}function gf(i){const A=i*dn,t=[],e=[];for(let g=0;g<i;g++)t.push(`uniform sampler2D u_image${g+1};`),e.push(`if (ndx == ${g+1}) { color = texture2D(u_image${g+1}, uv); }`);return`
8537
+ `,gC=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",MQ],{type:"text/javascript;charset=utf-8"});function Vd(i){let A;try{if(A=gC&&(self.URL||self.webkitURL).createObjectURL(gC),!A)throw"";const t=new Worker(A,{type:"module",name:i==null?void 0:i.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(A)}),t}catch(t){return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(MQ),{type:"module",name:i==null?void 0:i.name})}}var zd=Object.defineProperty,Zd=(i,A,t)=>A in i?zd(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,iA=(i,A,t)=>Zd(i,typeof A!="symbol"?A+"":A,t);const Wd=28,jd=8;class Od{constructor(A){iA(this,"maxSize"),iA(this,"map",new Map),iA(this,"playbackHint",0),this.maxSize=Math.max(4,A)}setPlaybackHint(A){Number.isFinite(A)&&A>=0&&(this.playbackHint=A)}minKey(){let A;for(const t of this.map.keys())(A===void 0||t<A)&&(A=t);return A}set(A,t){this.map.set(A,t),this.evictDownToCapacity()}evictDownToCapacity(){const A=Math.max(4,Math.floor(this.maxSize*.35)),t=Math.max(4,this.maxSize-A-2);for(;this.map.size>this.maxSize;){const e=[...this.map.keys()].sort((C,Q)=>C-Q),g=this.playbackHint,I=e.filter(C=>C<g-A);if(I.length){this.closeKey(I[0]);continue}const s=e.filter(C=>C>g+t);if(s.length){this.closeKey(s[s.length-1]);continue}let n=e[0],B=0;for(const C of e){const Q=Math.abs(C-g);Q>=B&&(B=Q,n=C)}this.closeKey(n)}}closeKey(A){const t=this.map.get(A);this.map.delete(A);try{t==null||t.close()}catch(e){}}bestAtOrBefore(A){let t=-1;for(const e of this.map.keys())e<=A&&e>t&&(t=e);return t<0?null:this.map.get(t)}frameForDisplay(A){const t=this.bestAtOrBefore(A);if(t)return t;const e=[...this.map.keys()].sort((I,s)=>I-s);if(e.length===0)return null;const g=e.find(I=>I>=A);return g!==void 0?this.map.get(g):this.map.get(e[e.length-1])}clear(){for(const A of this.map.values())try{A.close()}catch(t){}this.map.clear()}get size(){return this.map.size}}function IC(i,A,t){return new Promise((e,g)=>{const I=performance.now(),s=()=>{try{if(i()){e();return}if(performance.now()-I>A){g(new Error(`WebCodecs: timeout waiting for ${t}`));return}setTimeout(s,0)}catch(n){g(n instanceof Error?n:new Error(String(n)))}};setTimeout(s,0)})}let Xd=1;class vA{constructor(A,t,e,g,I,s,n,B,C,Q,a){iA(this,"duration"),iA(this,"videoWidth"),iA(this,"videoHeight"),iA(this,"timesSec"),iA(this,"worker"),iA(this,"workerMsgId"),iA(this,"streaming"),iA(this,"ring"),iA(this,"frames"),iA(this,"maxDecodedFrames"),iA(this,"decodeAheadFrames"),iA(this,"lastWrapped",-1),iA(this,"destroyed",!1),this.duration=A,this.videoWidth=t,this.videoHeight=e,this.timesSec=g,this.worker=I,this.workerMsgId=s,this.streaming=n,this.ring=B,this.frames=C,this.maxDecodedFrames=Q,this.decodeAheadFrames=a}static async create(A,t,e){var g,I;if(typeof VideoDecoder=="undefined")throw new Error("WebCodecs VideoDecoder not available");const s=(e==null?void 0:e.useWorker)!==!1,n=(g=e==null?void 0:e.maxDecodedFrames)!=null?g:Wd,B=(I=e==null?void 0:e.decodeAheadFrames)!=null?I:jd;let C;if(typeof A=="string"?C=await Pd(A,t):C=A,s&&typeof Worker!="undefined"){const Q=C.slice(0);try{return await vA.createViaWorker(Q,n,B)}catch(a){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",a)}}return vA.createOnMainThread(C,n,B)}static async createViaWorker(A,t,e){const g=new Vd,I=Xd++,s=new Od(t);let n=0,B=0,C=0,Q=new Float64Array(0),a=!1,E=null;const r=d=>{const f=d.data;if(!(!f||f.id!==I)){if(f.type==="meta"){n=f.duration,B=f.videoWidth,C=f.videoHeight;const w=f.timesSec;Q=Float64Array.from(w),a=!0;return}if(f.type==="frame"){s.set(f.index,f.frame);return}f.type!=="eos"&&f.type==="error"&&(E=new Error(f.message))}},o=d=>{E=new Error(d.message||"Worker error")};g.addEventListener("message",r),g.addEventListener("error",o);const h=A;g.postMessage({type:"init",id:I,buffer:h,maxDecodedFrames:t,decodeAheadFrames:e},[h]);try{if(await IC(()=>a||E!=null,6e4,"meta"),E)throw E;const d=n>0?n:1e-6,f=On(Q,d,0);if(await IC(()=>E!=null||s.bestAtOrBefore(f)!=null,6e4,"first frame"),E)throw E}catch(d){throw g.removeEventListener("message",r),g.removeEventListener("error",o),g.terminate(),s.clear(),d instanceof Error?d:new Error(String(d))}const c=Q.length>0?Q[0]:0,u=Q.length>0?Q[Q.length-1]:0;return console.info(`[GiftStage:WC] worker streaming ready frames=${Q.length} duration=${n.toFixed(4)}s size=${B}x${C} times=[${c.toFixed(4)} … ${u.toFixed(4)}] ring=${t}`),new vA(n,B,C,Q,g,I,!0,s,null,t,e)}static async createOnMainThread(A,t,e){console.info("[GiftStage:WC] mp4box demux (main thread)…");const g=await Jd(A);if(g.samples.length===0)throw new Error("mp4box: no samples");const s=g.samples[0].description,n=s?_d(s):void 0;console.info("[GiftStage:WC] VideoDecoder decode (main thread)…");const{frames:B,timesSec:C}=await vd(g.codec,n,g.samples,g.timescale),Q=B[B.length-1],a=Td(g.durationSec,C,B),E=g.videoWidth||Q.displayWidth||Q.codedWidth||0,r=g.videoHeight||Q.displayHeight||Q.codedHeight||0,o=C.length>0?C[0]:0,h=C.length>0?C[C.length-1]:0;return console.info(`[GiftStage:WC] main decode ok frames=${B.length} duration=${a.toFixed(4)}s size=${E}x${r} times=[${o.toFixed(4)} … ${h.toFixed(4)}]`),new vA(a,E,r,C,null,0,!1,null,B,t,e)}ensureDecodedThrough(A){var t,e,g,I,s;if(this.destroyed||!this.streaming||!this.worker)return;const n=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(n))return;const B=(A%n+n)%n;if(this.lastWrapped>=0&&B<this.lastWrapped-.001&&this.lastWrapped>n*.1&&((t=this.ring)==null||t.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId})),this.lastWrapped=B,this.timesSec.length===0)return;const C=On(this.timesSec,n,B);(e=this.ring)==null||e.setPlaybackHint(C);const Q=(g=this.ring)==null?void 0:g.minKey(),a=Math.max(4,this.decodeAheadFrames);this.ring&&Q!==void 0&&Q>C+a&&(this.ring.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId}));const E=Math.min(this.timesSec.length-1,Math.max(0,C+Math.max(0,this.decodeAheadFrames))),r=Math.max(0,this.maxDecodedFrames-((s=(I=this.ring)==null?void 0:I.size)!=null?s:0));this.worker.postMessage({type:"ensure",id:this.workerMsgId,needIdx:E,freeSlots:r})}getFrameForTime(A){var t,e,g;if(this.timesSec.length===0)return null;const I=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(I))return console.warn("[GiftStage:WC] getFrameForTime bad input",{tSec:A,clip:I,frames:this.timesSec.length}),this.streaming&&this.ring?this.ring.frameForDisplay(0):(e=(t=this.frames)==null?void 0:t[0])!=null?e:null;const s=(A%I+I)%I,n=On(this.timesSec,I,s);if(this.streaming&&this.ring){this.ring.setPlaybackHint(n);const C=this.ring.frameForDisplay(n);return C||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:n,wrapped:s,clip:I}),C}const B=(g=this.frames)==null?void 0:g[n];return B||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:n,wrapped:s,clip:I}),B!=null?B:null}destroy(){var A;if(!this.destroyed){if(this.destroyed=!0,this.worker){try{this.worker.postMessage({type:"destroy",id:this.workerMsgId})}catch(t){}try{this.worker.terminate()}catch(t){}}if((A=this.ring)==null||A.clear(),this.frames){for(const t of this.frames)try{t==null||t.close()}catch(e){}this.frames.length=0}}}}async function Pd(i,A){return Ls(i,A)}function sC(i,A,t,e,g){const I=Math.max(1,Math.floor(A)),s=Math.max(1,Math.floor(t)),n=Math.max(1,i.width*i.scale),B=Math.max(1,i.height*i.scale);let C;const Q=uA(i);if(Q==="contain"||Q==="cover"){let a,E;if(e==="alphaVideo")a=I*.5,E=s;else{if(!g)return C=Math.min(1,n/I,B/s),Xn(I,s,C);({w:a,h:E}=et(g.info))}if(!(a>0)||!(E>0))return C=Math.min(1,n/I,B/s),Xn(I,s,C);const r=Q==="cover"?Math.max(n/a,B/E):Math.min(n/a,B/E);C=Math.min(1,r)}else C=Math.min(1,n/I,B/s);return Xn(I,s,C)}function Xn(i,A,t){const e=Math.max(1,Math.min(i,Math.ceil(i*t))),g=Math.max(1,Math.min(A,Math.ceil(A*t)));return{w:e,h:g}}var $d=Object.defineProperty,Af=(i,A,t)=>A in i?$d(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,dA=(i,A,t)=>Af(i,typeof A!="symbol"?A+"":A,t);const fn=9;function tf(i,A){if(typeof document=="undefined"||typeof document.createElement!="function")throw new Error("VAP mixed rendering requires DOM canvas support");const t=document.createElement("canvas");return t.width=Math.max(1,Math.round(i)),t.height=Math.max(1,Math.round(A)),t}function un(i,A,t,e,g,I){return[i/g,(i+t)/g,(I-A-e)/I,(I-A)/I]}function nC(i,A,t){const e=i.createShader(A);if(!e)throw new Error("Failed to create VAP mix shader");if(i.shaderSource(e,t),i.compileShader(e),!i.getShaderParameter(e,i.COMPILE_STATUS)){const g=i.getShaderInfoLog(e)||"unknown shader compile error";throw i.deleteShader(e),new Error(`Failed to compile VAP mix shader: ${g}`)}return e}function ef(i,A,t){const e=nC(i,i.VERTEX_SHADER,A),g=nC(i,i.FRAGMENT_SHADER,t),I=i.createProgram();if(!I)throw i.deleteShader(e),i.deleteShader(g),new Error("Failed to create VAP mix program");if(i.attachShader(I,e),i.attachShader(I,g),i.linkProgram(I),!i.getProgramParameter(I,i.LINK_STATUS)){const s=i.getProgramInfoLog(I)||"unknown program link error";throw i.deleteProgram(I),i.deleteShader(e),i.deleteShader(g),new Error(`Failed to link VAP mix program: ${s}`)}return i.useProgram(I),{program:I,vertexShader:e,fragmentShader:g}}function BC(i,A,t,e=!1){const g=i.createTexture();if(!g)throw new Error("Failed to create VAP mix texture");return i.activeTexture(i.TEXTURE0+A),i.bindTexture(i.TEXTURE_2D,g),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),t?(i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e?1:0),i.texImage2D(i.TEXTURE_2D,0,i.RGBA,i.RGBA,i.UNSIGNED_BYTE,t),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,0)):i.texImage2D(i.TEXTURE_2D,0,i.RGBA,1,1,0,i.RGBA,i.UNSIGNED_BYTE,null),g}function gf(i){const[A,t,e,g]=i.rgbFrame,[I,s,n,B]=i.aFrame,C=un(A,t,e,g,i.videoW,i.videoH),Q=un(I,s,n,B,i.videoW,i.videoH);return new Float32Array([-1,1,C[0],C[3],Q[0],Q[3],1,1,C[1],C[3],Q[1],Q[3],-1,-1,C[0],C[2],Q[0],Q[2],1,-1,C[1],C[2],Q[1],Q[2]])}function If(i){const A=i*fn,t=[],e=[];for(let g=0;g<i;g++)t.push(`uniform sampler2D u_image${g+1};`),e.push(`if (ndx == ${g+1}) { color = texture2D(u_image${g+1}, uv); }`);return`
8538
8538
  precision lowp float;
8539
8539
  varying vec2 v_texcoord;
8540
8540
  varying vec2 v_alpha_texCoord;
@@ -8568,7 +8568,7 @@ async function xu(r) {
8568
8568
  float my1;
8569
8569
  float my2;
8570
8570
 
8571
- for (int i = 0; i < ${A}; i += ${dn}) {
8571
+ for (int i = 0; i < ${A}; i += ${fn}) {
8572
8572
  if (int(image_pos[i]) > 0) {
8573
8573
  srcIndex = int(image_pos[i]);
8574
8574
  x1 = image_pos[i + 1];
@@ -8593,7 +8593,7 @@ async function xu(r) {
8593
8593
 
8594
8594
  gl_FragColor = bgColor;
8595
8595
  }
8596
- `}const If=`
8596
+ `}const sf=`
8597
8597
  attribute vec2 a_position;
8598
8598
  attribute vec2 a_texCoord;
8599
8599
  attribute vec2 a_alpha_texCoord;
@@ -8605,5 +8605,5 @@ async function xu(r) {
8605
8605
  v_texcoord = a_texCoord;
8606
8606
  v_alpha_texCoord = a_alpha_texCoord;
8607
8607
  }
8608
- `;function sf(i,A,t,e){const g=new Float32Array(t.size*dn),I=A.get(e);if(!I||I.length===0)return g;const[s,n]=i.info.rgbFrame;let B=0;for(const C of I){const Q=t.get(String(C.srcId));if(!Q)continue;if(B+dn>g.length)break;const[a,r,E,o]=C.frame,[h,c,f,l]=C.mFrame,u=fn(a+s,r+n,E,o,i.info.videoW,i.info.videoH),w=fn(h,c,f,l,i.info.videoW,i.info.videoH);g[B++]=Q,g[B++]=u[0],g[B++]=u[1],g[B++]=u[2],g[B++]=u[3],g[B++]=w[0],g[B++]=w[1],g[B++]=w[2],g[B++]=w[3]}return g}class nf{constructor(A,t,e,g,I){this.config=A,this.frameMap=t,dA(this,"canvas"),dA(this,"gl"),dA(this,"program"),dA(this,"vertexShader"),dA(this,"fragmentShader"),dA(this,"vertexBuffer"),dA(this,"videoTexture"),dA(this,"imagePosLoc"),dA(this,"resourceEntries"),dA(this,"textureUnitBySrcId",new Map);var s;if(e.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=Af(g,I);const n=this.canvas.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("webgl",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("experimental-webgl");if(!n)throw new Error("VAP mixed rendering requires WebGL support");this.gl=n;const B=Math.max(1,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),C=Math.max(0,B-1),Q=[];let a=1;for(const u of(s=A.src)!=null?s:[]){const w=e.get(String(u.srcId));if(!w)continue;if(a>C){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:u.srcId,srcTag:u.srcTag,maxUnits:B});continue}const y=nC(n,a,w.source,!0),p={srcId:String(u.srcId),unit:a,texture:y};Q.push(p),this.textureUnitBySrcId.set(p.srcId,p.unit),a++}if(Q.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=Q;const r=tf(n,If,gf(this.resourceEntries.length));this.program=r.program,this.vertexShader=r.vertexShader,this.fragmentShader=r.fragmentShader,this.imagePosLoc=n.getUniformLocation(this.program,"image_pos"),this.videoTexture=nC(n,0);const E=n.getUniformLocation(this.program,"u_image_video");E!==null&&n.uniform1i(E,0);for(const u of this.resourceEntries){const w=n.getUniformLocation(this.program,`u_image${u.unit}`);w!==null&&n.uniform1i(w,u.unit)}const o=n.createBuffer();if(!o)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=o,n.bindBuffer(n.ARRAY_BUFFER,this.vertexBuffer),n.bufferData(n.ARRAY_BUFFER,ef(A.info),n.STATIC_DRAW);const h=6*Float32Array.BYTES_PER_ELEMENT,c=n.getAttribLocation(this.program,"a_position"),f=n.getAttribLocation(this.program,"a_texCoord"),l=n.getAttribLocation(this.program,"a_alpha_texCoord");n.enableVertexAttribArray(c),n.vertexAttribPointer(c,2,n.FLOAT,!1,h,0),n.enableVertexAttribArray(f),n.vertexAttribPointer(f,2,n.FLOAT,!1,h,2*Float32Array.BYTES_PER_ELEMENT),n.enableVertexAttribArray(l),n.vertexAttribPointer(l,2,n.FLOAT,!1,h,4*Float32Array.BYTES_PER_ELEMENT),n.viewport(0,0,this.canvas.width,this.canvas.height),n.disable(n.BLEND),n.disable(n.DEPTH_TEST),n.clearColor(0,0,0,0),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE)}render(A,t){const e=this.gl;e.useProgram(this.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.videoTexture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);const g=sf(this.config,this.frameMap,this.textureUnitBySrcId,t);return this.imagePosLoc!==null&&e.uniform1fv(this.imagePosLoc,g),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const e of this.resourceEntries)A.deleteTexture(e.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}var Bf=Object.defineProperty,Cf=(i,A,t)=>A in i?Bf(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,mA=(i,A,t)=>Cf(i,typeof A!="symbol"?A+"":A,t);const MQ=1397178947,xQ=12,Qf=8;class af{constructor(A=1024){mA(this,"buffer"),mA(this,"view"),mA(this,"bytes"),mA(this,"offset",0),mA(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const t=this.offset+A;if(t<=this.buffer.byteLength)return;let e=this.buffer.byteLength;for(;e<t;)e*=2;const g=new ArrayBuffer(e);new Uint8Array(g).set(this.bytes.subarray(0,this.offset)),this.buffer=g,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}u8(A){this.ensure(1),this.view.setUint8(this.offset,A),this.offset+=1}u16(A){this.ensure(2),this.view.setUint16(this.offset,A,!0),this.offset+=2}u32(A){this.ensure(4),this.view.setUint32(this.offset,A,!0),this.offset+=4}f32(A){this.ensure(4),this.view.setFloat32(this.offset,A,!0),this.offset+=4}bytesValue(A){this.u32(A.byteLength),this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}string(A){this.bytesValue(this.encoder.encode(A))}finish(){return this.buffer.slice(0,this.offset)}}class Ef{constructor(A){mA(this,"view"),mA(this,"bytes"),mA(this,"offset",0),mA(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),t=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,t}string(){return this.decoder.decode(this.bytesValue())}}function rf(i){var A,t;let e=0;for(const g of i.atlasPages)e+=g.imageBytes.byteLength;for(const[g,I]of i.audioBlobs)e+=g.length*2+I.byteLength;for(const[g]of i.atlasRects)e+=g.length*2+20;for(const g of i.sprites){e+=g.imageKey.length*2+g.frames.length*64;for(const I of g.frames)if(e+=I.clipPath.length*2,I.shapes)for(const s of I.shapes)e+=((t=(A=s.pathData)==null?void 0:A.length)!=null?t:0)*2+96}return e}function of(i,A){var t;let e=0;A.fill&&(e|=1),A.stroke&&(e|=2),i.u8(e),A.fill&&(i.f32(A.fill.r),i.f32(A.fill.g),i.f32(A.fill.b),i.f32(A.fill.a)),A.stroke&&(i.f32(A.stroke.r),i.f32(A.stroke.g),i.f32(A.stroke.b),i.f32(A.stroke.a)),i.f32((t=A.strokeWidth)!=null?t:0)}function hf(i){const A=i.u8(),t=A&1?{r:i.f32(),g:i.f32(),b:i.f32(),a:i.f32()}:null,e=A&2?{r:i.f32(),g:i.f32(),b:i.f32(),a:i.f32()}:null;return{fill:t,stroke:e,strokeWidth:i.f32()}}function cf(i,A){var t,e,g,I;i.u8(A.kind==="path"?0:A.kind==="rect"?1:2),i.string((t=A.pathData)!=null?t:"");const s=(e=A.rect)!=null?e:{x:0,y:0,width:0,height:0,cornerRadius:0};i.f32(s.x),i.f32(s.y),i.f32(s.width),i.f32(s.height),i.f32((g=s.cornerRadius)!=null?g:0);const n=(I=A.ellipse)!=null?I:{x:0,y:0,radiusX:0,radiusY:0};i.f32(n.x),i.f32(n.y),i.f32(n.radiusX),i.f32(n.radiusY),of(i,A.style),i.f32(A.transform.a),i.f32(A.transform.b),i.f32(A.transform.c),i.f32(A.transform.d),i.f32(A.transform.tx),i.f32(A.transform.ty)}function lf(i){const A=i.u8(),t=i.string(),e={x:i.f32(),y:i.f32(),width:i.f32(),height:i.f32(),cornerRadius:i.f32()},g={x:i.f32(),y:i.f32(),radiusX:i.f32(),radiusY:i.f32()},I=hf(i),s={a:i.f32(),b:i.f32(),c:i.f32(),d:i.f32(),tx:i.f32(),ty:i.f32()};return A===1?{kind:"rect",rect:e,style:I,transform:s}:A===2?{kind:"ellipse",ellipse:g,style:I,transform:s}:{kind:"path",pathData:t,style:I,transform:s}}function BC(i){const A=new Uint8Array(i.byteLength);return A.set(i),A.buffer}function df(i){var A;const t=new af(Qf+i.atlasPages.reduce((e,g)=>e+g.imageBytes.byteLength+12,0)+i.sprites.length*64+i.audioBlobs.size*32+i.atlasRects.size*32);t.u32(MQ),t.u16(xQ),t.u16(0),t.f32(i.params.viewBoxWidth),t.f32(i.params.viewBoxHeight),t.f32(i.params.fps),t.u32(i.params.frames),t.u32(i.atlasPages.length);for(const e of i.atlasPages)t.u32(e.width),t.u32(e.height),t.bytesValue(new Uint8Array(e.imageBytes));t.u32(i.atlasRects.size);for(const[e,g]of i.atlasRects)t.string(e),t.u32((A=g.textureIndex)!=null?A:0),t.f32(g.x),t.f32(g.y),t.f32(g.w),t.f32(g.h);t.u32(i.audios.length);for(const e of i.audios)t.string(e.audioKey),t.u32(e.startFrame),t.u32(e.endFrame),t.f32(e.startTime),t.f32(e.totalTime);t.u32(i.audioBlobs.size);for(const[e,g]of i.audioBlobs)t.string(e),t.bytesValue(new Uint8Array(g));t.u32(i.sprites.length);for(const e of i.sprites){t.string(e.imageKey),t.u32(e.frames.length);for(const g of e.frames){let I=0;if(g.layout&&(I|=1),g.transform&&(I|=2),g.clipPath&&(I|=4),g.shapes&&g.shapes.length>0&&(I|=8),t.u8(I),t.f32(g.alpha),g.layout&&(t.f32(g.layout.x),t.f32(g.layout.y),t.f32(g.layout.width),t.f32(g.layout.height)),g.transform&&(t.f32(g.transform.a),t.f32(g.transform.b),t.f32(g.transform.c),t.f32(g.transform.d),t.f32(g.transform.tx),t.f32(g.transform.ty)),g.clipPath&&t.string(g.clipPath),g.shapes&&g.shapes.length>0){t.u32(g.shapes.length);for(const s of g.shapes)cf(t,s)}}}return t.finish()}function ff(i){const A=new Ef(i);if(A.u32()!==MQ)throw new Error("Invalid SVGA cache binary magic");if(A.u16()!==xQ)throw new Error("Unsupported SVGA cache binary version");A.u16();const t={viewBoxWidth:A.f32(),viewBoxHeight:A.f32(),fps:A.f32(),frames:A.u32()},e=A.u32(),g=[];for(let E=0;E<e;E++)g.push({width:A.u32(),height:A.u32(),imageBytes:BC(A.bytesValue())});const I=A.u32(),s=new Map;for(let E=0;E<I;E++){const o=A.string(),h=A.u32();s.set(o,{textureIndex:h,x:A.f32(),y:A.f32(),w:A.f32(),h:A.f32()})}const n=A.u32(),B=[];for(let E=0;E<n;E++)B.push({audioKey:A.string(),startFrame:A.u32(),endFrame:A.u32(),startTime:A.f32(),totalTime:A.f32()});const C=A.u32(),Q=new Map;for(let E=0;E<C;E++){const o=A.string();Q.set(o,BC(A.bytesValue()))}const a=A.u32(),r=[];for(let E=0;E<a;E++){const o=A.string(),h=A.u32(),c=[];for(let f=0;f<h;f++){const l=A.u8(),u=A.f32(),w=l&1?{x:A.f32(),y:A.f32(),width:A.f32(),height:A.f32()}:null,y=l&2?{a:A.f32(),b:A.f32(),c:A.f32(),d:A.f32(),tx:A.f32(),ty:A.f32()}:null,p=l&4?A.string():"";let m=null;if(l&8){const N=A.u32();m=[];for(let R=0;R<N;R++)m.push(lf(A))}c.push({alpha:u,layout:w,transform:y,clipPath:p,shapes:m})}r.push({imageKey:o,frames:c})}return{params:t,sprites:r,audios:B,audioBlobs:Q,atlasRects:s,atlasPages:g}}function EB(i){return`svga-asset:${i}`}function rB(i){return`svga-asset-bin:${i}`}async function uf(i){const A=eE(EB(i),"svga-asset");if(A)return A;const t=await iE(rB(i));if(!t)return null;try{const e=ff(t);return yC(EB(i),"svga-asset",e,t.byteLength),e}catch(e){return IE(rB(i)),null}}async function Xn(i,A){const t=df(A);yC(EB(i),"svga-asset",A,Math.max(t.byteLength,rf(A))),await gE(rB(i),t)}function xA(i){return typeof i=="number"&&Number.isFinite(i)&&i>0}function wf(i,A){const t=xA(i)?i*.5:0,e=xA(A)?A:0;return{width:t,height:e}}function Df(i,A,t,e){const g=xA(A.width)?A.width:void 0,I=xA(A.height)?A.height:void 0,s=xA(i.width)?i.width:void 0,n=xA(i.height)?i.height:void 0,B=i.useOriginalSize===!0;if(s&&n)return{width:s,height:n};if(s)return g&&I?{width:s,height:s*I/g}:{width:s,height:s};if(n)return g&&I?{width:n*g/I,height:n}:{width:n,height:n};let C=g!=null?g:0,Q=I!=null?I:0;if(C>0&&Q>0&&xA(t)&&xA(e)&&(!B||C>t||Q>e)){const a=Math.min(t/C,e/Q);C*=a,Q*=a}return{width:C,height:Q}}var yf=Object.defineProperty,pf=(i,A,t)=>A in i?yf(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,z=(i,A,t)=>pf(i,typeof A!="symbol"?A+"":A,t);const rs=class OA{constructor(A){z(this,"sharedSVGAEntities",new Map),z(this,"pendingSharedSVGAEntities",new Map),z(this,"sharedVideoSources",new Map),z(this,"sharedHtmlVideos",new Map),z(this,"sharedVideoTextures",new Map),z(this,"pendingSharedHtmlVideos",new Map),z(this,"canvas"),z(this,"backend",null),z(this,"manager",null),z(this,"options"),z(this,"ready"),z(this,"destroyed",!1),z(this,"resizeObserver",null),z(this,"nextRenderOrder",0),z(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;return A!=null&&A>0&&Number.isFinite(A)?A:typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1}syncCanvasSize(){var A;ra(this.canvas,this.backingStoreDpr()),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){if(this.options.maxConcurrentParse!=null)return Math.max(1,Math.max(4,this.options.maxConcurrentParse));const A=typeof navigator!="undefined"&&typeof navigator.hardwareConcurrency=="number"?navigator.hardwareConcurrency/2:4;return Math.max(1,Math.max(4,A))}async init(){var A;this.syncCanvasSize(),await new Promise(I=>requestAnimationFrame(()=>I())),this.syncCanvasSize(),AE({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:OA.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:OA.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES});const t=(A=this.options.preferWebGPU)!=null?A:!0,e=this.options.antialias,[g]=await Promise.all([EC(this.canvas,t,e,this.options.forceWebGL1===!0),fC()]);this.backend=g,this.manager=new MC(this.backend),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,t=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:t}}async resolveGiftIntrinsicSize(A){switch(A.type){case"svga":{const t=await pr(A.source,{useWorker:this.options.svgaParseInWorker!==!1});return{width:t.viewBoxWidth,height:t.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const t=await iB(A.config),e=tt(t.info);return{width:e.w,height:e.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo")}}async normalizeAddGiftOptions(A){if(A.width!=null&&A.height!=null)return A;const t=await this.resolveGiftIntrinsicSize(A),e=this.currentCanvasCssSize(),g=Df({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},t,e.width,e.height);return{...A,width:g.width,height:g.height}}async addGift(A){var t,e,g,I;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");const s=await this.normalizeAddGiftOptions(A),n=wC(),{sx:B,sy:C}=ms(this.canvas),Q=kC(s.x,s.y,s.width,s.height,this.canvas.clientWidth,this.canvas.clientHeight),a={id:n,type:s.type,state:"loading",options:s,zIndex:(t=s.zIndex)!=null?t:0,renderOrder:this.nextRenderOrder++,x:Q.x*B,y:Q.y*C,width:s.width*B,height:s.height*C,scale:1,paused:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,videoEntity:null,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,vapMixState:null,onComplete:s.onComplete,flyTo:s.flyTo,scaleTo:s.scaleTo,flyDuration:s.flyDuration,easing:(e=s.easing)!=null?e:Ls,onFlyComplete:s.onFlyComplete},r={id:n,type:s.type,pause:()=>{a.paused=!0},resume:()=>{a.paused=!1},destroy:()=>{this.removeGift(n)}};this.manager.addSlot(a,r);try{switch(s.type){case"svga":await this.loadSVGA(a);break;case"vap":await this.loadVAP(a,s);break;case"alphaVideo":await this.loadAlphaVideo(a,s);break}a.state="playing",s.type==="svga"&&a.videoEntity&&this.manager.audioManager.tickFrame(a,a.currentFrame,r),a.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:a.id,type:a.type,layoutBufPx:{x:a.x,y:a.y,w:a.width,h:a.height}})}catch(E){a.state="finished",(I=(g=this.options).onError)==null||I.call(g,E instanceof Error?E:new Error(String(E)))}return r}async loadSVGA(A){var t,e,g;const I=typeof A.options.source=="string"?A.options.source:null;if(I){const a=await this.acquireSharedSVGAEntity(I);if(A.state==="finished"){a.release();return}A.releaseSharedSVGAAsset=a.release,await this.finishLoadSVGA(A,a.entity,a.audioBlobs);return}const{movie:s,imageBitmaps:n,audioBlobs:B}=await IB(A.options.source,{useWorker:this.options.svgaParseInWorker!==!1});if(A.state==="finished")return;const C=await this.buildSVGAAtlasIfNeeded(n,!!I);if(A.state==="finished"){for(const a of n.values())a.close();return}const Q={params:s.params,sprites:s.sprites,audios:s.audios,atlasTextureHandle:(t=C==null?void 0:C.textureHandle)!=null?t:null,atlasTextureHandles:(e=C==null?void 0:C.textureHandles)!=null?e:[],atlasRects:(g=C==null?void 0:C.rects)!=null?g:new Map,audioBuffers:new Map};await this.finishLoadSVGA(A,Q,B),I&&(C!=null&&C.encodedPngBytesPromises)&&Promise.all(C.encodedPngBytesPromises).then(a=>{a.some(r=>!r)||Xn(I,{params:s.params,sprites:s.sprites,audios:s.audios,audioBlobs:B,atlasRects:C.rects,atlasPages:C.pages.map((r,E)=>({width:r.atlasWidth,height:r.atlasHeight,imageBytes:a[E]}))})});for(const a of n.values())a.close()}async acquireSharedSVGAEntity(A){const t=A,e=this.sharedSVGAEntities.get(t);if(e)return e.refs++,{entity:e.entity,audioBlobs:e.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)};let g=this.pendingSharedSVGAEntities.get(t);g||(g=this.buildSharedSVGAEntity(A),this.pendingSharedSVGAEntities.set(t,g));let I;try{I=await g}catch(n){throw this.pendingSharedSVGAEntities.delete(t),n}let s=this.sharedSVGAEntities.get(t);return s?s.refs++:(s={refs:1,entity:I.entity,audioBlobs:I.audioBlobs},this.sharedSVGAEntities.set(t,s)),this.pendingSharedSVGAEntities.delete(t),{entity:s.entity,audioBlobs:s.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)}}async buildSharedSVGAEntity(A){var t,e,g,I;const s=await uf(A);if(s){const Q=await this.createCachedSVGAAtlasTextures(s.atlasPages);return{entity:{params:s.params,sprites:s.sprites,audios:s.audios,atlasTextureHandle:(t=Q[0])!=null?t:null,atlasTextureHandles:Q,atlasRects:s.atlasRects,audioBuffers:new Map},audioBlobs:s.audioBlobs}}const{movie:n,imageBitmaps:B,audioBlobs:C}=await IB(A,{useWorker:this.options.svgaParseInWorker!==!1});try{const Q=await this.buildSVGAAtlasIfNeeded(B,!0);return Q!=null&&Q.encodedPngBytesPromises?Promise.all(Q.encodedPngBytesPromises).then(a=>{a.some(r=>!r)||Xn(A,{params:n.params,sprites:n.sprites,audios:n.audios,audioBlobs:C,atlasRects:Q.rects,atlasPages:Q.pages.map((r,E)=>({width:r.atlasWidth,height:r.atlasHeight,imageBytes:a[E]}))})}):Q||Xn(A,{params:n.params,sprites:n.sprites,audios:n.audios,audioBlobs:C,atlasRects:new Map,atlasPages:[]}),{entity:{params:n.params,sprites:n.sprites,audios:n.audios,atlasTextureHandle:(e=Q==null?void 0:Q.textureHandle)!=null?e:null,atlasTextureHandles:(g=Q==null?void 0:Q.textureHandles)!=null?g:[],atlasRects:(I=Q==null?void 0:Q.rects)!=null?I:new Map,audioBuffers:new Map},audioBlobs:C}}finally{for(const Q of B.values())Q.close()}}releaseSharedSVGAEntity(A){const t=this.sharedSVGAEntities.get(A);t&&(t.refs=Math.max(0,t.refs-1),!(t.refs>0)&&(this.deleteSVGAAtlasTextures(t.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A){const t=[];for(const e of A){const g=await createImageBitmap(new Blob([e.imageBytes],{type:"image/png"}),{premultiplyAlpha:"premultiply"}),I=this.backend.createTexture(g,{width:e.width,height:e.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});g.close(),t.push(I)}return t}deleteSVGAAtlasTextures(A){var t,e;const g=(t=A.atlasTextureHandles)!=null&&t.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],I=new Set;for(const s of g)I.has(s.id)||(I.add(s.id),(e=this.backend)==null||e.deleteTexture(s))}async finishLoadSVGA(A,t,e){let g=0;for(const[I,s]of e)await this.manager.audioManager.decodeAudio(I,s),g++,g<e.size&&await new Promise(n=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>n());return}setTimeout(n,0)});A.videoEntity=t,A.options.svgaSlots&&(A.svgaSlotTextures=await hE(this.backend,A.videoEntity,A.options.svgaSlots))}svgaAtlasMaxSize(){var A,t,e;const g=(A=this.options.svgaAtlasMaxSize)!=null?A:OA.SVGA_ATLAS_MAX_SIZE,I=(e=(t=this.backend)==null?void 0:t.maxTextureSize)!=null?e:g;return Math.max(64,Math.min(I,g))}async buildSVGAAtlasIfNeeded(A,t){return A.size===0?null:KC(A,this.backend,this.svgaAtlasMaxSize(),OA.SVGA_ATLAS_PADDING,{captureEncodedPng:t,maxPages:this.svgaAtlasMaxPages()})}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(){return this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,t,e){const g=t==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",I=e?` — ${e}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${g}${I}`)}async tryWebCodecsPlayback(A){if(!this.shouldTryWebCodecs())return null;try{const t=typeof A=="string"?await Ys(A):A;return await KA.create(t,void 0,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(t){const e=t instanceof Error?t.message:String(t);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${e}`),null}}async loadVAP(A,t){var e;if(!t.config)throw new Error("VAP requires config");const g=await iB(t.config);A.vapConfig=g;const I=await fE(g,t.vapSlots);if(I.size>0){const Q=tt(g.info),a=uE(g);let r=null,E=null;try{r=new nf(g,a,I,Q.w,Q.h)}catch(o){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",o),E=wE(Q.w,Q.h)}A.vapMixState={texture:this.backend.createEmptyTexture(Q.w,Q.h,{filter:"linear"}),width:Q.w,height:Q.h,composer:r,frameMap:a,resources:I,lastFrameIndex:-1,lastSourceRef:null,...E!=null?E:{}},A.videoTextureHandle=A.vapMixState.texture}console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const n=await this.tryWebCodecsPlayback(t.source);if(n){A.webcodecsPlayback=n,A.wcPlaybackTime=0;const Q=n.getFrameForTime(0);if(!Q)throw n.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");if(!A.vapMixState){const r=Q.displayWidth||Q.codedWidth,E=Q.displayHeight||Q.codedHeight,{w:o,h}=IC(A,r,E,"vap",g),c=this.manager.tryAllocateWebCodecsAtlas(A.id,o,h,this.options.webCodecsVideoAtlas);if(c)A.videoTextureHandle=c.handle,A.wcAtlasRect=c.rect,this.backend.updateTextureRegion(c.handle,Q,c.rect.x,c.rect.y,o,h);else{const f=this.backend.createTexture(Q,{width:r,height:E,filter:"linear"});A.videoTextureHandle=f}}A.videoElement=null;const a=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${a.width}x${a.height}`,frame0:`${Q.displayWidth}x${Q.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const B=await this.tryAcquireSharedHtmlVideo(A,t);if(B)A.videoElement=B.video,A.releaseSharedVideoPlayback=B.release;else{const Q=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=Q.release)!=null?e:null;const a=this.createVideo(Q.src,t.loop===0);A.videoElement=a}const C=A.videoElement;if(B){await B.ready;const Q=this.acquireSharedVideoTexture(B.cacheKey,C);A.videoTextureHandle=Q.texture,A.releaseSharedVideoTexture=Q.release}else await this.waitVideoReady(C),A.vapMixState||(A.videoTextureHandle=this.backend.createTexture(C,{width:C.videoWidth,height:C.videoHeight,filter:"linear"}));A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,C),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}async loadAlphaVideo(A,t){var e;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const g=await this.tryWebCodecsPlayback(t.source);if(g){A.webcodecsPlayback=g,A.wcPlaybackTime=0;const n=g.getFrameForTime(0);if(!n)throw g.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");const B=n.displayWidth||n.codedWidth,C=n.displayHeight||n.codedHeight,{w:Q,h:a}=IC(A,B,C,"alphaVideo",void 0),r=this.manager.tryAllocateWebCodecsAtlas(A.id,Q,a,this.options.webCodecsVideoAtlas);if(r)A.videoTextureHandle=r.handle,A.wcAtlasRect=r.rect,this.backend.updateTextureRegion(r.handle,n,r.rect.x,r.rect.y,Q,a);else{const o=this.backend.createTexture(n,{width:B,height:C,filter:"linear"});A.videoTextureHandle=o}A.videoElement=null;const E=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${E.width}x${E.height}`,frame0:`${n.displayWidth}x${n.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const I=await this.tryAcquireSharedHtmlVideo(A,t);if(I)A.videoElement=I.video,A.releaseSharedVideoPlayback=I.release;else{const n=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=n.release)!=null?e:null;const B=this.createVideo(n.src,t.loop===0);A.videoElement=B}const s=A.videoElement;if(I){await I.ready;const n=this.acquireSharedVideoTexture(I.cacheKey,s);A.videoTextureHandle=n.texture,A.releaseSharedVideoTexture=n.release}else await this.waitVideoReady(s),A.videoTextureHandle=this.backend.createTexture(s,{width:s.videoWidth,height:s.videoHeight,filter:"linear"});A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,s),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,t){t.addEventListener("ended",()=>{var e,g,I,s,n;if(A.state!=="playing")return;const B=(e=A.options.loop)!=null?e:1;if(B===0){t.currentTime=0,t.play();return}if(A.loopCount++,A.loopCount>=B){const C={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id)};if((g=A.onComplete)==null||g.call(A,C),A.flyTo){A.state="fly";const Q=ms(this.canvas);this.manager.postAnimator.startFly(A,A.flyTo.x*Q.sx,A.flyTo.y*Q.sy,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:Ls,()=>{var a;A.state="finished",(a=A.onFlyComplete)==null||a.call(A,C)})}else A.state="finished";return}t.currentTime=0,t.play()})}createVideo(A,t){const e=document.createElement("video");return e.crossOrigin="anonymous",e.autoplay=!0,e.preload="auto",e.muted=!0,e.playsInline=!0,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline","true"),e.loop=t,e.style.cssText="display:none;",e.src=A,document.body.appendChild(e),e.load(),e}waitVideoMetadata(A){return new Promise((t,e)=>{const g=()=>{A.removeEventListener("loadedmetadata",I),A.removeEventListener("error",s)},I=()=>{g(),t()},s=()=>{g(),e(new Error("Video metadata load failed"))};A.addEventListener("loadedmetadata",I),A.addEventListener("error",s),A.readyState>=HTMLMediaElement.HAVE_METADATA&&(g(),t())})}async probeVideoNaturalSize(A,t="video"){var e;const g=await this.acquireVideoPlaybackSource(A),I=document.createElement("video");I.crossOrigin="anonymous",I.preload="metadata",I.muted=!0,I.playsInline=!0,I.setAttribute("playsinline",""),I.setAttribute("webkit-playsinline","true"),I.style.cssText="display:none;",I.src=g.src,document.body.appendChild(I),I.load();try{return await this.waitVideoMetadata(I),t==="alphaVideo"?wf(I.videoWidth,I.videoHeight):{width:I.videoWidth,height:I.videoHeight}}finally{try{I.pause(),I.removeAttribute("src"),I.load(),I.remove()}catch(s){}(e=g.release)==null||e.call(g)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const g=URL.createObjectURL(new Blob([A]));return{src:g,release:()=>URL.revokeObjectURL(g)}}const t=this.normalizeSharedVideoSourceKey(A);if(!t)return{src:A};let e=this.sharedVideoSources.get(t);e||(e={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(t)},this.sharedVideoSources.set(t,e)),e.refs++;try{return{src:await e.promise,release:()=>this.releaseSharedVideoSource(t)}}catch(g){return this.releaseSharedVideoSource(t),console.warn("[GiftStage] shared video prefetch failed, using original url",g),{src:A}}}normalizeSharedVideoSourceKey(A){try{const t=new URL(A,window.location.href);return t.protocol==="blob:"||t.protocol==="data:"?null:t.href}catch(t){return null}}async fetchSharedVideoSource(A){const t=new Blob([await Ys(A)]),e=this.sharedVideoSources.get(A),g=URL.createObjectURL(t);return e&&(e.objectUrl=g,e.refs===0&&(URL.revokeObjectURL(g),this.sharedVideoSources.delete(A))),g}releaseSharedVideoSource(A){const t=this.sharedVideoSources.get(A);t&&(t.refs=Math.max(0,t.refs-1),t.refs===0&&t.objectUrl&&(URL.revokeObjectURL(t.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,t){var e,g;if(this.options.shareIdenticalVideoPlayback===!1||t.loop!==0||typeof t.source!="string"||A.type==="vap"&&A.vapMixState)return null;const I=this.normalizeSharedVideoSourceKey(t.source);if(!I)return null;const s=(e=this.options.sharedVideoPlaybackWindowMs)!=null?e:OA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,n=Math.max(0,s)/1e3,B=this.sharedHtmlVideos.get(I);if(B)return B.video.currentTime>n?null:(B.refs++,{cacheKey:I,video:B.video,ready:B.ready,release:()=>this.releaseSharedHtmlVideo(I)});let C=this.pendingSharedHtmlVideos.get(I);C||(C=(async()=>{var r;const E=await this.acquireVideoPlaybackSource(t.source),o=this.createVideo(E.src,!0),h=this.waitVideoReady(o);return{video:o,ready:h,releaseSource:(r=E.release)!=null?r:null}})(),this.pendingSharedHtmlVideos.set(I,C));let Q;try{Q=await C}catch(r){throw this.pendingSharedHtmlVideos.delete(I),r}let a=this.sharedHtmlVideos.get(I);return a?a.refs++:(a={refs:1,video:Q.video,ready:Q.ready,releaseSource:(g=Q.releaseSource)!=null?g:null},this.sharedHtmlVideos.set(I,a)),this.pendingSharedHtmlVideos.delete(I),{cacheKey:I,video:a.video,ready:a.ready,release:()=>this.releaseSharedHtmlVideo(I)}}acquireSharedVideoTexture(A,t){const e=this.sharedVideoTextures.get(A);if(e)return e.refs++,{texture:e.texture,release:()=>this.releaseSharedVideoTexture(A)};const g=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:g}),{texture:g,release:()=>this.releaseSharedVideoTexture(A)}}releaseSharedVideoTexture(A){var t;const e=this.sharedVideoTextures.get(A);e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0)&&((t=this.backend)==null||t.deleteTexture(e.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var t;const e=this.sharedHtmlVideos.get(A);if(e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0))){try{e.video.pause(),e.video.removeAttribute("src"),e.video.load(),e.video.remove()}catch(g){}(t=e.releaseSource)==null||t.call(e),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(t=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>t()):requestAnimationFrame(()=>t())})}waitVideoReady(A){return new Promise((t,e)=>{const g=()=>{A.removeEventListener("canplay",s),A.removeEventListener("error",n)},I=async()=>{try{await A.play(),await this.waitForFirstVideoFrame(A),t()}catch(B){e(B)}},s=()=>{g(),I()},n=()=>{g(),e(new Error("Video load failed"))};A.addEventListener("canplay",s),A.addEventListener("error",n),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(g(),I())})}removeGift(A){var t;(t=this.manager)==null||t.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;(A=this.manager)==null||A.pause()}resume(){var A;(A=this.manager)==null||A.resume()}get activeCount(){var A,t;return(t=(A=this.manager)==null?void 0:A.activeCount)!=null?t:0}get backendType(){var A,t;return(t=(A=this.backend)==null?void 0:A.type)!=null?t:"webgl2"}destroy(){var A,t;this.destroyed=!0,(A=this.resizeObserver)==null||A.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),(t=this.manager)==null||t.destroy();for(const[e]of this.sharedHtmlVideos)this.releaseSharedHtmlVideo(e);for(const[e]of this.sharedSVGAEntities)this.releaseSharedSVGAEntity(e);for(const[e]of this.sharedVideoTextures)this.releaseSharedVideoTexture(e);this.pendingSharedSVGAEntities.clear(),this.pendingSharedHtmlVideos.clear();for(const[e,g]of this.sharedVideoSources)g.objectUrl&&URL.revokeObjectURL(g.objectUrl),this.sharedVideoSources.delete(e);this.canvas.remove(),this.backend=null,this.manager=null}};z(rs,"SVGA_ATLAS_MAX_SIZE",2048);z(rs,"SVGA_ATLAS_PADDING",2);z(rs,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);z(rs,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);z(rs,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let mf=rs;exports.AlphaVideoRenderer=NC;exports.AudioManager=UC;exports.BufferPool=uC;exports.GiftStage=mf;exports.PostAnimator=RC;exports.RenderManager=MC;exports.SVGABatchRenderer=DC;exports.VAPRenderer=SC;exports.WebCodecsMp4Playback=KA;exports.WebGL1Backend=Pn;exports.WebGL2Backend=QC;exports.WebGPUBackend=CC;exports.buildAtlas=KC;exports.buildBatchVerticesJS=Xs;exports.canSharedArrayBuffer=aa;exports.canWebGL1=Qa;exports.canWebGL2=Ca;exports.canWebGPU=Ba;exports.clamp=AB;exports.createBackend=EC;exports.decodeSVGAProto=YC;exports.easeInOutCubic=bE;exports.easeInOutQuad=xE;exports.easeInQuad=kE;exports.easeOutBack=YE;exports.easeOutCubic=Ls;exports.easeOutQuad=ME;exports.generateId=wC;exports.inflateJS=xC;exports.initWasm=fC;exports.isWasmReady=At;exports.lerp=$s;exports.linear=UE;exports.ortho=vA;exports.parseSVGA=IB;exports.parseVAPConfig=iB;
8608
+ `;function nf(i,A,t,e){const g=new Float32Array(t.size*fn),I=A.get(e);if(!I||I.length===0)return g;const[s,n]=i.info.rgbFrame;let B=0;for(const C of I){const Q=t.get(String(C.srcId));if(!Q)continue;if(B+fn>g.length)break;const[a,E,r,o]=C.frame,[h,c,u,d]=C.mFrame,f=un(a+s,E+n,r,o,i.info.videoW,i.info.videoH),w=un(h,c,u,d,i.info.videoW,i.info.videoH);g[B++]=Q,g[B++]=f[0],g[B++]=f[1],g[B++]=f[2],g[B++]=f[3],g[B++]=w[0],g[B++]=w[1],g[B++]=w[2],g[B++]=w[3]}return g}class Bf{constructor(A,t,e,g,I){this.config=A,this.frameMap=t,dA(this,"canvas"),dA(this,"gl"),dA(this,"program"),dA(this,"vertexShader"),dA(this,"fragmentShader"),dA(this,"vertexBuffer"),dA(this,"videoTexture"),dA(this,"imagePosLoc"),dA(this,"resourceEntries"),dA(this,"textureUnitBySrcId",new Map);var s;if(e.size===0)throw new Error("VAP mix composer requires at least one slot resource");this.canvas=tf(g,I);const n=this.canvas.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("webgl",{alpha:!0,antialias:!1,depth:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,stencil:!1})||this.canvas.getContext("experimental-webgl");if(!n)throw new Error("VAP mixed rendering requires WebGL support");this.gl=n;const B=Math.max(1,n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)),C=Math.max(0,B-1),Q=[];let a=1;for(const f of(s=A.src)!=null?s:[]){const w=e.get(String(f.srcId));if(!w)continue;if(a>C){console.warn("[GiftStage] VAP mixed resources exceed texture unit limit, skipping",{srcId:f.srcId,srcTag:f.srcTag,maxUnits:B});continue}const p=BC(n,a,w.source,!0),y={srcId:String(f.srcId),unit:a,texture:p};Q.push(y),this.textureUnitBySrcId.set(y.srcId,y.unit),a++}if(Q.length===0)throw new Error("VAP mixed rendering could not bind any slot resources");this.resourceEntries=Q;const E=ef(n,sf,If(this.resourceEntries.length));this.program=E.program,this.vertexShader=E.vertexShader,this.fragmentShader=E.fragmentShader,this.imagePosLoc=n.getUniformLocation(this.program,"image_pos"),this.videoTexture=BC(n,0);const r=n.getUniformLocation(this.program,"u_image_video");r!==null&&n.uniform1i(r,0);for(const f of this.resourceEntries){const w=n.getUniformLocation(this.program,`u_image${f.unit}`);w!==null&&n.uniform1i(w,f.unit)}const o=n.createBuffer();if(!o)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=o,n.bindBuffer(n.ARRAY_BUFFER,this.vertexBuffer),n.bufferData(n.ARRAY_BUFFER,gf(A.info),n.STATIC_DRAW);const h=6*Float32Array.BYTES_PER_ELEMENT,c=n.getAttribLocation(this.program,"a_position"),u=n.getAttribLocation(this.program,"a_texCoord"),d=n.getAttribLocation(this.program,"a_alpha_texCoord");n.enableVertexAttribArray(c),n.vertexAttribPointer(c,2,n.FLOAT,!1,h,0),n.enableVertexAttribArray(u),n.vertexAttribPointer(u,2,n.FLOAT,!1,h,2*Float32Array.BYTES_PER_ELEMENT),n.enableVertexAttribArray(d),n.vertexAttribPointer(d,2,n.FLOAT,!1,h,4*Float32Array.BYTES_PER_ELEMENT),n.viewport(0,0,this.canvas.width,this.canvas.height),n.disable(n.BLEND),n.disable(n.DEPTH_TEST),n.clearColor(0,0,0,0),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE)}render(A,t){const e=this.gl;e.useProgram(this.program),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,this.videoTexture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,1),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,A),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,0);const g=nf(this.config,this.frameMap,this.textureUnitBySrcId,t);return this.imagePosLoc!==null&&e.uniform1fv(this.imagePosLoc,g),e.clear(e.COLOR_BUFFER_BIT),e.drawArrays(e.TRIANGLE_STRIP,0,4),this.canvas}destroy(){const A=this.gl;for(const e of this.resourceEntries)A.deleteTexture(e.texture);A.deleteTexture(this.videoTexture),A.deleteBuffer(this.vertexBuffer),A.deleteProgram(this.program),A.deleteShader(this.vertexShader),A.deleteShader(this.fragmentShader);const t=A.getExtension("WEBGL_lose_context");t==null||t.loseContext()}}var Cf=Object.defineProperty,Qf=(i,A,t)=>A in i?Cf(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,GA=(i,A,t)=>Qf(i,typeof A!="symbol"?A+"":A,t);const xQ=1397178947,bQ=12,af=8;class Ef{constructor(A=1024){GA(this,"buffer"),GA(this,"view"),GA(this,"bytes"),GA(this,"offset",0),GA(this,"encoder",new TextEncoder),this.buffer=new ArrayBuffer(A),this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}ensure(A){const t=this.offset+A;if(t<=this.buffer.byteLength)return;let e=this.buffer.byteLength;for(;e<t;)e*=2;const g=new ArrayBuffer(e);new Uint8Array(g).set(this.bytes.subarray(0,this.offset)),this.buffer=g,this.view=new DataView(this.buffer),this.bytes=new Uint8Array(this.buffer)}u8(A){this.ensure(1),this.view.setUint8(this.offset,A),this.offset+=1}u16(A){this.ensure(2),this.view.setUint16(this.offset,A,!0),this.offset+=2}u32(A){this.ensure(4),this.view.setUint32(this.offset,A,!0),this.offset+=4}f32(A){this.ensure(4),this.view.setFloat32(this.offset,A,!0),this.offset+=4}bytesValue(A){this.u32(A.byteLength),this.ensure(A.byteLength),this.bytes.set(A,this.offset),this.offset+=A.byteLength}string(A){this.bytesValue(this.encoder.encode(A))}finish(){return this.buffer.slice(0,this.offset)}}class rf{constructor(A){GA(this,"view"),GA(this,"bytes"),GA(this,"offset",0),GA(this,"decoder",new TextDecoder),this.view=new DataView(A),this.bytes=new Uint8Array(A)}u8(){const A=this.view.getUint8(this.offset);return this.offset+=1,A}u16(){const A=this.view.getUint16(this.offset,!0);return this.offset+=2,A}u32(){const A=this.view.getUint32(this.offset,!0);return this.offset+=4,A}f32(){const A=this.view.getFloat32(this.offset,!0);return this.offset+=4,A}bytesValue(){const A=this.u32(),t=this.bytes.slice(this.offset,this.offset+A);return this.offset+=A,t}string(){return this.decoder.decode(this.bytesValue())}}function of(i){var A,t;let e=0;for(const g of i.atlasPages)e+=g.imageBytes.byteLength;for(const[g,I]of i.audioBlobs)e+=g.length*2+I.byteLength;for(const[g]of i.atlasRects)e+=g.length*2+20;for(const g of i.sprites){e+=g.imageKey.length*2+g.frames.length*64;for(const I of g.frames)if(e+=I.clipPath.length*2,I.shapes)for(const s of I.shapes)e+=((t=(A=s.pathData)==null?void 0:A.length)!=null?t:0)*2+96}return e}function hf(i,A){var t;let e=0;A.fill&&(e|=1),A.stroke&&(e|=2),i.u8(e),A.fill&&(i.f32(A.fill.r),i.f32(A.fill.g),i.f32(A.fill.b),i.f32(A.fill.a)),A.stroke&&(i.f32(A.stroke.r),i.f32(A.stroke.g),i.f32(A.stroke.b),i.f32(A.stroke.a)),i.f32((t=A.strokeWidth)!=null?t:0)}function cf(i){const A=i.u8(),t=A&1?{r:i.f32(),g:i.f32(),b:i.f32(),a:i.f32()}:null,e=A&2?{r:i.f32(),g:i.f32(),b:i.f32(),a:i.f32()}:null;return{fill:t,stroke:e,strokeWidth:i.f32()}}function lf(i,A){var t,e,g,I;i.u8(A.kind==="path"?0:A.kind==="rect"?1:2),i.string((t=A.pathData)!=null?t:"");const s=(e=A.rect)!=null?e:{x:0,y:0,width:0,height:0,cornerRadius:0};i.f32(s.x),i.f32(s.y),i.f32(s.width),i.f32(s.height),i.f32((g=s.cornerRadius)!=null?g:0);const n=(I=A.ellipse)!=null?I:{x:0,y:0,radiusX:0,radiusY:0};i.f32(n.x),i.f32(n.y),i.f32(n.radiusX),i.f32(n.radiusY),hf(i,A.style),i.f32(A.transform.a),i.f32(A.transform.b),i.f32(A.transform.c),i.f32(A.transform.d),i.f32(A.transform.tx),i.f32(A.transform.ty)}function df(i){const A=i.u8(),t=i.string(),e={x:i.f32(),y:i.f32(),width:i.f32(),height:i.f32(),cornerRadius:i.f32()},g={x:i.f32(),y:i.f32(),radiusX:i.f32(),radiusY:i.f32()},I=cf(i),s={a:i.f32(),b:i.f32(),c:i.f32(),d:i.f32(),tx:i.f32(),ty:i.f32()};return A===1?{kind:"rect",rect:e,style:I,transform:s}:A===2?{kind:"ellipse",ellipse:g,style:I,transform:s}:{kind:"path",pathData:t,style:I,transform:s}}function CC(i){const A=new Uint8Array(i.byteLength);return A.set(i),A.buffer}function ff(i){var A;const t=new Ef(af+i.atlasPages.reduce((e,g)=>e+g.imageBytes.byteLength+12,0)+i.sprites.length*64+i.audioBlobs.size*32+i.atlasRects.size*32);t.u32(xQ),t.u16(bQ),t.u16(0),t.f32(i.params.viewBoxWidth),t.f32(i.params.viewBoxHeight),t.f32(i.params.fps),t.u32(i.params.frames),t.u32(i.atlasPages.length);for(const e of i.atlasPages)t.u32(e.width),t.u32(e.height),t.bytesValue(new Uint8Array(e.imageBytes));t.u32(i.atlasRects.size);for(const[e,g]of i.atlasRects)t.string(e),t.u32((A=g.textureIndex)!=null?A:0),t.f32(g.x),t.f32(g.y),t.f32(g.w),t.f32(g.h);t.u32(i.audios.length);for(const e of i.audios)t.string(e.audioKey),t.u32(e.startFrame),t.u32(e.endFrame),t.f32(e.startTime),t.f32(e.totalTime);t.u32(i.audioBlobs.size);for(const[e,g]of i.audioBlobs)t.string(e),t.bytesValue(new Uint8Array(g));t.u32(i.sprites.length);for(const e of i.sprites){t.string(e.imageKey),t.u32(e.frames.length);for(const g of e.frames){let I=0;if(g.layout&&(I|=1),g.transform&&(I|=2),g.clipPath&&(I|=4),g.shapes&&g.shapes.length>0&&(I|=8),t.u8(I),t.f32(g.alpha),g.layout&&(t.f32(g.layout.x),t.f32(g.layout.y),t.f32(g.layout.width),t.f32(g.layout.height)),g.transform&&(t.f32(g.transform.a),t.f32(g.transform.b),t.f32(g.transform.c),t.f32(g.transform.d),t.f32(g.transform.tx),t.f32(g.transform.ty)),g.clipPath&&t.string(g.clipPath),g.shapes&&g.shapes.length>0){t.u32(g.shapes.length);for(const s of g.shapes)lf(t,s)}}}return t.finish()}function uf(i){const A=new rf(i);if(A.u32()!==xQ)throw new Error("Invalid SVGA cache binary magic");if(A.u16()!==bQ)throw new Error("Unsupported SVGA cache binary version");A.u16();const t={viewBoxWidth:A.f32(),viewBoxHeight:A.f32(),fps:A.f32(),frames:A.u32()},e=A.u32(),g=[];for(let r=0;r<e;r++)g.push({width:A.u32(),height:A.u32(),imageBytes:CC(A.bytesValue())});const I=A.u32(),s=new Map;for(let r=0;r<I;r++){const o=A.string(),h=A.u32();s.set(o,{textureIndex:h,x:A.f32(),y:A.f32(),w:A.f32(),h:A.f32()})}const n=A.u32(),B=[];for(let r=0;r<n;r++)B.push({audioKey:A.string(),startFrame:A.u32(),endFrame:A.u32(),startTime:A.f32(),totalTime:A.f32()});const C=A.u32(),Q=new Map;for(let r=0;r<C;r++){const o=A.string();Q.set(o,CC(A.bytesValue()))}const a=A.u32(),E=[];for(let r=0;r<a;r++){const o=A.string(),h=A.u32(),c=[];for(let u=0;u<h;u++){const d=A.u8(),f=A.f32(),w=d&1?{x:A.f32(),y:A.f32(),width:A.f32(),height:A.f32()}:null,p=d&2?{a:A.f32(),b:A.f32(),c:A.f32(),d:A.f32(),tx:A.f32(),ty:A.f32()}:null,y=d&4?A.string():"";let m=null;if(d&8){const N=A.u32();m=[];for(let U=0;U<N;U++)m.push(df(A))}c.push({alpha:f,layout:w,transform:p,clipPath:y,shapes:m})}E.push({imageKey:o,frames:c})}return{params:t,sprites:E,audios:B,audioBlobs:Q,atlasRects:s,atlasPages:g}}function rB(i){return`svga-asset:${i}`}function oB(i){return`svga-asset-bin:${i}`}async function wf(i){const A=iE(rB(i),"svga-asset");if(A)return A;const t=await gE(oB(i));if(!t)return null;try{const e=uf(t);return pC(rB(i),"svga-asset",e,t.byteLength),e}catch(e){return sE(oB(i)),null}}async function Pn(i,A){const t=ff(A);pC(rB(i),"svga-asset",A,Math.max(t.byteLength,of(A))),await IE(oB(i),t)}function bA(i){return typeof i=="number"&&Number.isFinite(i)&&i>0}function Df(i,A){const t=bA(i)?i*.5:0,e=bA(A)?A:0;return{width:t,height:e}}function yf(i,A,t,e){const g=bA(A.width)?A.width:void 0,I=bA(A.height)?A.height:void 0,s=bA(i.width)?i.width:void 0,n=bA(i.height)?i.height:void 0,B=i.useOriginalSize===!0;if(s&&n)return{width:s,height:n};if(s)return g&&I?{width:s,height:s*I/g}:{width:s,height:s};if(n)return g&&I?{width:n*g/I,height:n}:{width:n,height:n};let C=g!=null?g:0,Q=I!=null?I:0;if(C>0&&Q>0&&bA(t)&&bA(e)&&(!B||C>t||Q>e)){const a=Math.min(t/C,e/Q);C*=a,Q*=a}return{width:C,height:Q}}var pf=Object.defineProperty,mf=(i,A,t)=>A in i?pf(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,Z=(i,A,t)=>mf(i,typeof A!="symbol"?A+"":A,t);const os=class OA{constructor(A){Z(this,"sharedSVGAEntities",new Map),Z(this,"pendingSharedSVGAEntities",new Map),Z(this,"sharedVideoSources",new Map),Z(this,"sharedHtmlVideos",new Map),Z(this,"sharedVideoTextures",new Map),Z(this,"pendingSharedHtmlVideos",new Map),Z(this,"canvas"),Z(this,"backend",null),Z(this,"manager",null),Z(this,"options"),Z(this,"ready"),Z(this,"destroyed",!1),Z(this,"resizeObserver",null),Z(this,"nextRenderOrder",0),Z(this,"onWindowLayout",()=>{this.destroyed||this.syncCanvasSize()}),this.options=A,this.canvas=document.createElement("canvas"),this.canvas.style.cssText="position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:9999;",A.container.appendChild(this.canvas),this.ready=this.init()}backingStoreDpr(){const A=this.options.resolution;return A!=null&&A>0&&Number.isFinite(A)?A:typeof window!="undefined"&&window.devicePixelRatio>0?window.devicePixelRatio:1}syncCanvasSize(){var A;oa(this.canvas,this.backingStoreDpr()),(A=this.manager)==null||A.syncSlotLayoutFromOptions()}resourcePipelineConcurrency(){if(this.options.maxConcurrentParse!=null)return Math.max(1,Math.max(4,this.options.maxConcurrentParse));const A=typeof navigator!="undefined"&&typeof navigator.hardwareConcurrency=="number"?navigator.hardwareConcurrency/2:4;return Math.max(1,Math.max(4,A))}async init(){var A;this.syncCanvasSize(),await new Promise(I=>requestAnimationFrame(()=>I())),this.syncCanvasSize(),tE({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:OA.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:OA.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES});const t=(A=this.options.preferWebGPU)!=null?A:!0,e=this.options.antialias,[g]=await Promise.all([rC(this.canvas,t,e,this.options.forceWebGL1===!0),uC()]);this.backend=g,this.manager=new xC(this.backend),this.resizeObserver=new ResizeObserver(()=>{this.destroyed||this.syncCanvasSize()}),this.resizeObserver.observe(this.canvas),window.addEventListener("resize",this.onWindowLayout),window.addEventListener("orientationchange",this.onWindowLayout)}currentCanvasCssSize(){const A=this.canvas.clientWidth||this.options.container.clientWidth||window.innerWidth||0,t=this.canvas.clientHeight||this.options.container.clientHeight||window.innerHeight||0;return{width:A,height:t}}async resolveGiftIntrinsicSize(A){switch(A.type){case"svga":{const t=await mr(A.source,{useWorker:this.options.svgaParseInWorker!==!1});return{width:t.viewBoxWidth,height:t.viewBoxHeight}}case"vap":{if(!A.config)throw new Error("VAP requires config");const t=await gB(A.config),e=et(t.info);return{width:e.w,height:e.h}}case"alphaVideo":return this.probeVideoNaturalSize(A.source,"alphaVideo")}}async normalizeAddGiftOptions(A){if(A.width!=null&&A.height!=null)return A;const t=this.currentCanvasCssSize();if(A.objectFit==="cover"&&A.width==null&&A.height==null&&t.width>0&&t.height>0)return{...A,width:t.width,height:t.height};const e=await this.resolveGiftIntrinsicSize(A),g=yf({width:A.width,height:A.height,useOriginalSize:A.useOriginalSize},e,t.width,t.height);return{...A,width:g.width,height:g.height}}async addGift(A){var t,e,g,I;if(console.info("[GiftStage] addGift await ready…",A.type),await this.ready,console.info("[GiftStage] addGift ready, loading…",A.type),this.destroyed)throw new Error("GiftStage is destroyed");const s=await this.normalizeAddGiftOptions(A),n=DC(),{sx:B,sy:C}=Gs(this.canvas),Q=MC(s.x,s.y,s.width,s.height,this.canvas.clientWidth,this.canvas.clientHeight),a={id:n,type:s.type,state:"loading",options:s,zIndex:(t=s.zIndex)!=null?t:0,renderOrder:this.nextRenderOrder++,x:Q.x*B,y:Q.y*C,width:s.width*B,height:s.height*C,scale:1,paused:!1,currentFrame:0,accumulatedTime:0,lastTickTime:0,loopCount:0,videoEntity:null,svgaSlotTextures:void 0,videoElement:null,releaseMediaSource:null,releaseSharedSVGAAsset:null,releaseSharedVideoPlayback:null,releaseSharedVideoTexture:null,webcodecsPlayback:null,wcPlaybackTime:0,videoTextureHandle:null,vapMixState:null,onComplete:s.onComplete,flyTo:s.flyTo,scaleTo:s.scaleTo,flyDuration:s.flyDuration,easing:(e=s.easing)!=null?e:_s,onFlyComplete:s.onFlyComplete},E={id:n,type:s.type,pause:()=>{a.paused=!0},resume:()=>{a.paused=!1},destroy:()=>{this.removeGift(n)}};this.manager.addSlot(a,E);try{switch(s.type){case"svga":await this.loadSVGA(a);break;case"vap":await this.loadVAP(a,s);break;case"alphaVideo":await this.loadAlphaVideo(a,s);break}a.state="playing",s.type==="svga"&&a.videoEntity&&this.manager.audioManager.tickFrame(a,a.currentFrame,E),a.webcodecsPlayback&&console.info("[GiftStage:WC] gift playing",{giftId:a.id,type:a.type,layoutBufPx:{x:a.x,y:a.y,w:a.width,h:a.height}})}catch(r){a.state="finished",(I=(g=this.options).onError)==null||I.call(g,r instanceof Error?r:new Error(String(r)))}return E}async loadSVGA(A){var t,e,g;const I=typeof A.options.source=="string"?A.options.source:null;if(I){const a=await this.acquireSharedSVGAEntity(I);if(A.state==="finished"){a.release();return}A.releaseSharedSVGAAsset=a.release,await this.finishLoadSVGA(A,a.entity,a.audioBlobs);return}const{movie:s,imageBitmaps:n,audioBlobs:B}=await sB(A.options.source,{useWorker:this.options.svgaParseInWorker!==!1});if(A.state==="finished")return;const C=await this.buildSVGAAtlasIfNeeded(n,!!I);if(A.state==="finished"){for(const a of n.values())a.close();return}const Q={params:s.params,sprites:s.sprites,audios:s.audios,atlasTextureHandle:(t=C==null?void 0:C.textureHandle)!=null?t:null,atlasTextureHandles:(e=C==null?void 0:C.textureHandles)!=null?e:[],atlasRects:(g=C==null?void 0:C.rects)!=null?g:new Map,audioBuffers:new Map};await this.finishLoadSVGA(A,Q,B),I&&(C!=null&&C.encodedPngBytesPromises)&&Promise.all(C.encodedPngBytesPromises).then(a=>{a.some(E=>!E)||Pn(I,{params:s.params,sprites:s.sprites,audios:s.audios,audioBlobs:B,atlasRects:C.rects,atlasPages:C.pages.map((E,r)=>({width:E.atlasWidth,height:E.atlasHeight,imageBytes:a[r]}))})});for(const a of n.values())a.close()}async acquireSharedSVGAEntity(A){const t=A,e=this.sharedSVGAEntities.get(t);if(e)return e.refs++,{entity:e.entity,audioBlobs:e.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)};let g=this.pendingSharedSVGAEntities.get(t);g||(g=this.buildSharedSVGAEntity(A),this.pendingSharedSVGAEntities.set(t,g));let I;try{I=await g}catch(n){throw this.pendingSharedSVGAEntities.delete(t),n}let s=this.sharedSVGAEntities.get(t);return s?s.refs++:(s={refs:1,entity:I.entity,audioBlobs:I.audioBlobs},this.sharedSVGAEntities.set(t,s)),this.pendingSharedSVGAEntities.delete(t),{entity:s.entity,audioBlobs:s.audioBlobs,release:()=>this.releaseSharedSVGAEntity(t)}}async buildSharedSVGAEntity(A){var t,e,g,I;const s=await wf(A);if(s){const Q=await this.createCachedSVGAAtlasTextures(s.atlasPages);return{entity:{params:s.params,sprites:s.sprites,audios:s.audios,atlasTextureHandle:(t=Q[0])!=null?t:null,atlasTextureHandles:Q,atlasRects:s.atlasRects,audioBuffers:new Map},audioBlobs:s.audioBlobs}}const{movie:n,imageBitmaps:B,audioBlobs:C}=await sB(A,{useWorker:this.options.svgaParseInWorker!==!1});try{const Q=await this.buildSVGAAtlasIfNeeded(B,!0);return Q!=null&&Q.encodedPngBytesPromises?Promise.all(Q.encodedPngBytesPromises).then(a=>{a.some(E=>!E)||Pn(A,{params:n.params,sprites:n.sprites,audios:n.audios,audioBlobs:C,atlasRects:Q.rects,atlasPages:Q.pages.map((E,r)=>({width:E.atlasWidth,height:E.atlasHeight,imageBytes:a[r]}))})}):Q||Pn(A,{params:n.params,sprites:n.sprites,audios:n.audios,audioBlobs:C,atlasRects:new Map,atlasPages:[]}),{entity:{params:n.params,sprites:n.sprites,audios:n.audios,atlasTextureHandle:(e=Q==null?void 0:Q.textureHandle)!=null?e:null,atlasTextureHandles:(g=Q==null?void 0:Q.textureHandles)!=null?g:[],atlasRects:(I=Q==null?void 0:Q.rects)!=null?I:new Map,audioBuffers:new Map},audioBlobs:C}}finally{for(const Q of B.values())Q.close()}}releaseSharedSVGAEntity(A){const t=this.sharedSVGAEntities.get(A);t&&(t.refs=Math.max(0,t.refs-1),!(t.refs>0)&&(this.deleteSVGAAtlasTextures(t.entity),this.sharedSVGAEntities.delete(A)))}async createCachedSVGAAtlasTextures(A){const t=[];for(const e of A){const g=await createImageBitmap(new Blob([e.imageBytes],{type:"image/png"}),{premultiplyAlpha:"premultiply"}),I=this.backend.createTexture(g,{width:e.width,height:e.height,filter:"linear",premultiplyAlpha:!0,sourcePremultiplied:!0});g.close(),t.push(I)}return t}deleteSVGAAtlasTextures(A){var t,e;const g=(t=A.atlasTextureHandles)!=null&&t.length?A.atlasTextureHandles:A.atlasTextureHandle?[A.atlasTextureHandle]:[],I=new Set;for(const s of g)I.has(s.id)||(I.add(s.id),(e=this.backend)==null||e.deleteTexture(s))}async finishLoadSVGA(A,t,e){let g=0;for(const[I,s]of e)await this.manager.audioManager.decodeAudio(I,s),g++,g<e.size&&await new Promise(n=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>n());return}setTimeout(n,0)});A.videoEntity=t,A.options.svgaSlots&&(A.svgaSlotTextures=await cE(this.backend,A.videoEntity,A.options.svgaSlots))}svgaAtlasMaxSize(){var A,t,e;const g=(A=this.options.svgaAtlasMaxSize)!=null?A:OA.SVGA_ATLAS_MAX_SIZE,I=(e=(t=this.backend)==null?void 0:t.maxTextureSize)!=null?e:g;return Math.max(64,Math.min(I,g))}async buildSVGAAtlasIfNeeded(A,t){return A.size===0?null:vC(A,this.backend,this.svgaAtlasMaxSize(),OA.SVGA_ATLAS_PADDING,{captureEncodedPng:t,maxPages:this.svgaAtlasMaxPages()})}svgaAtlasMaxPages(){var A;return Math.max(1,Math.floor((A=this.options.svgaAtlasMaxPages)!=null?A:4))}shouldTryWebCodecs(){return this.options.preferWebCodecs===!0&&typeof VideoDecoder!="undefined"}logPlaybackBackend(A,t,e){const g=t==="webcodecs"?"WebCodecs (mp4box decode)":"HTMLVideoElement",I=e?` — ${e}`:"";console.info(`[GiftStage] ${A.type} [${A.id}]: ${g}${I}`)}async tryWebCodecsPlayback(A){if(!this.shouldTryWebCodecs())return null;try{const t=typeof A=="string"?await Ls(A):A;return await vA.create(t,void 0,{useWorker:this.options.webCodecsDecodeInWorker!==!1,maxDecodedFrames:this.options.webCodecsMaxDecodedFrames,decodeAheadFrames:this.options.webCodecsDecodeAheadFrames})}catch(t){const e=t instanceof Error?t.message:String(t);return console.warn(`[GiftStage] WebCodecs path failed, falling back to <video>: ${e}`),null}}async loadVAP(A,t){var e;if(!t.config)throw new Error("VAP requires config");const g=await gB(t.config);A.vapConfig=g;const I=await uE(g,t.vapSlots);if(I.size>0){const Q=et(g.info),a=wE(g);let E=null,r=null;try{E=new Bf(g,a,I,Q.w,Q.h)}catch(o){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",o),r=DE(Q.w,Q.h)}A.vapMixState={texture:this.backend.createEmptyTexture(Q.w,Q.h,{filter:"linear"}),width:Q.w,height:Q.h,composer:E,frameMap:a,resources:I,lastFrameIndex:-1,lastSourceRef:null,...r!=null?r:{}},A.videoTextureHandle=A.vapMixState.texture}console.info("[GiftStage:WC] loadVAP: try WebCodecs / video…");const n=await this.tryWebCodecsPlayback(t.source);if(n){A.webcodecsPlayback=n,A.wcPlaybackTime=0;const Q=n.getFrameForTime(0);if(!Q)throw n.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");if(!A.vapMixState){const E=Q.displayWidth||Q.codedWidth,r=Q.displayHeight||Q.codedHeight,{w:o,h}=sC(A,E,r,"vap",g),c=this.manager.tryAllocateWebCodecsAtlas(A.id,o,h,this.options.webCodecsVideoAtlas);if(c)A.videoTextureHandle=c.handle,A.wcAtlasRect=c.rect,this.backend.updateTextureRegion(c.handle,Q,c.rect.x,c.rect.y,o,h);else{const u=this.backend.createTexture(Q,{width:E,height:r,filter:"linear"});A.videoTextureHandle=u}}A.videoElement=null;const a=A.videoTextureHandle;console.info("[GiftStage:WC] VAP texture",{giftId:A.id,atlas:!!A.wcAtlasRect&&!A.vapMixState,mixed:!!A.vapMixState,tex:`${a.width}x${a.height}`,frame0:`${Q.displayWidth}x${Q.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const B=await this.tryAcquireSharedHtmlVideo(A,t);if(B)A.videoElement=B.video,A.releaseSharedVideoPlayback=B.release;else{const Q=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=Q.release)!=null?e:null;const a=this.createVideo(Q.src,t.loop===0);A.videoElement=a}const C=A.videoElement;if(B){await B.ready;const Q=this.acquireSharedVideoTexture(B.cacheKey,C);A.videoTextureHandle=Q.texture,A.releaseSharedVideoTexture=Q.release}else await this.waitVideoReady(C),A.vapMixState||(A.videoTextureHandle=this.backend.createTexture(C,{width:C.videoWidth,height:C.videoHeight,filter:"linear"}));A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,C),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}async loadAlphaVideo(A,t){var e;console.info("[GiftStage:WC] loadAlphaVideo: try WebCodecs / video…");const g=await this.tryWebCodecsPlayback(t.source);if(g){A.webcodecsPlayback=g,A.wcPlaybackTime=0;const n=g.getFrameForTime(0);if(!n)throw g.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");const B=n.displayWidth||n.codedWidth,C=n.displayHeight||n.codedHeight,{w:Q,h:a}=sC(A,B,C,"alphaVideo",void 0),E=this.manager.tryAllocateWebCodecsAtlas(A.id,Q,a,this.options.webCodecsVideoAtlas);if(E)A.videoTextureHandle=E.handle,A.wcAtlasRect=E.rect,this.backend.updateTextureRegion(E.handle,n,E.rect.x,E.rect.y,Q,a);else{const o=this.backend.createTexture(n,{width:B,height:C,filter:"linear"});A.videoTextureHandle=o}A.videoElement=null;const r=A.videoTextureHandle;console.info("[GiftStage:WC] alphaVideo texture",{giftId:A.id,atlas:!!A.wcAtlasRect,tex:`${r.width}x${r.height}`,frame0:`${n.displayWidth}x${n.displayHeight}`,atlasCell:A.wcAtlasRect?`${A.wcAtlasRect.w}x${A.wcAtlasRect.h}`:void 0}),this.logPlaybackBackend(A,"webcodecs");return}const I=await this.tryAcquireSharedHtmlVideo(A,t);if(I)A.videoElement=I.video,A.releaseSharedVideoPlayback=I.release;else{const n=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=n.release)!=null?e:null;const B=this.createVideo(n.src,t.loop===0);A.videoElement=B}const s=A.videoElement;if(I){await I.ready;const n=this.acquireSharedVideoTexture(I.cacheKey,s);A.videoTextureHandle=n.texture,A.releaseSharedVideoTexture=n.release}else await this.waitVideoReady(s),A.videoTextureHandle=this.backend.createTexture(s,{width:s.videoWidth,height:s.videoHeight,filter:"linear"});A.releaseSharedVideoPlayback||this.bindVideoLoopOnEnded(A,s),this.logPlaybackBackend(A,"video",this.shouldTryWebCodecs()?"fallback after WebCodecs unavailable or failed":"preferWebCodecs off or no VideoDecoder")}bindVideoLoopOnEnded(A,t){t.addEventListener("ended",()=>{var e,g,I,s,n;if(A.state!=="playing")return;const B=(e=A.options.loop)!=null?e:1;if(B===0){t.currentTime=0,t.play();return}if(A.loopCount++,A.loopCount>=B){const C={id:A.id,type:A.type,pause:()=>{},resume:()=>{},destroy:()=>this.removeGift(A.id)};if((g=A.onComplete)==null||g.call(A,C),A.flyTo){A.state="fly";const Q=Gs(this.canvas);this.manager.postAnimator.startFly(A,A.flyTo.x*Q.sx,A.flyTo.y*Q.sy,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(n=A.easing)!=null?n:_s,()=>{var a;A.state="finished",(a=A.onFlyComplete)==null||a.call(A,C)})}else A.state="finished";return}t.currentTime=0,t.play()})}createVideo(A,t){const e=document.createElement("video");return e.crossOrigin="anonymous",e.autoplay=!0,e.preload="auto",e.muted=!0,e.playsInline=!0,e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline","true"),e.loop=t,e.style.cssText="display:none;",e.src=A,document.body.appendChild(e),e.load(),e}waitVideoMetadata(A){return new Promise((t,e)=>{const g=()=>{A.removeEventListener("loadedmetadata",I),A.removeEventListener("error",s)},I=()=>{g(),t()},s=()=>{g(),e(new Error("Video metadata load failed"))};A.addEventListener("loadedmetadata",I),A.addEventListener("error",s),A.readyState>=HTMLMediaElement.HAVE_METADATA&&(g(),t())})}async probeVideoNaturalSize(A,t="video"){var e;const g=await this.acquireVideoPlaybackSource(A),I=document.createElement("video");I.crossOrigin="anonymous",I.preload="metadata",I.muted=!0,I.playsInline=!0,I.setAttribute("playsinline",""),I.setAttribute("webkit-playsinline","true"),I.style.cssText="display:none;",I.src=g.src,document.body.appendChild(I),I.load();try{return await this.waitVideoMetadata(I),t==="alphaVideo"?Df(I.videoWidth,I.videoHeight):{width:I.videoWidth,height:I.videoHeight}}finally{try{I.pause(),I.removeAttribute("src"),I.load(),I.remove()}catch(s){}(e=g.release)==null||e.call(g)}}async acquireVideoPlaybackSource(A){if(typeof A!="string"){const g=URL.createObjectURL(new Blob([A]));return{src:g,release:()=>URL.revokeObjectURL(g)}}const t=this.normalizeSharedVideoSourceKey(A);if(!t)return{src:A};let e=this.sharedVideoSources.get(t);e||(e={refs:0,objectUrl:null,promise:this.fetchSharedVideoSource(t)},this.sharedVideoSources.set(t,e)),e.refs++;try{return{src:await e.promise,release:()=>this.releaseSharedVideoSource(t)}}catch(g){return this.releaseSharedVideoSource(t),console.warn("[GiftStage] shared video prefetch failed, using original url",g),{src:A}}}normalizeSharedVideoSourceKey(A){try{const t=new URL(A,window.location.href);return t.protocol==="blob:"||t.protocol==="data:"?null:t.href}catch(t){return null}}async fetchSharedVideoSource(A){const t=new Blob([await Ls(A)]),e=this.sharedVideoSources.get(A),g=URL.createObjectURL(t);return e&&(e.objectUrl=g,e.refs===0&&(URL.revokeObjectURL(g),this.sharedVideoSources.delete(A))),g}releaseSharedVideoSource(A){const t=this.sharedVideoSources.get(A);t&&(t.refs=Math.max(0,t.refs-1),t.refs===0&&t.objectUrl&&(URL.revokeObjectURL(t.objectUrl),this.sharedVideoSources.delete(A)))}async tryAcquireSharedHtmlVideo(A,t){var e,g;if(this.options.shareIdenticalVideoPlayback===!1||t.loop!==0||typeof t.source!="string"||A.type==="vap"&&A.vapMixState)return null;const I=this.normalizeSharedVideoSourceKey(t.source);if(!I)return null;const s=(e=this.options.sharedVideoPlaybackWindowMs)!=null?e:OA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,n=Math.max(0,s)/1e3,B=this.sharedHtmlVideos.get(I);if(B)return B.video.currentTime>n?null:(B.refs++,{cacheKey:I,video:B.video,ready:B.ready,release:()=>this.releaseSharedHtmlVideo(I)});let C=this.pendingSharedHtmlVideos.get(I);C||(C=(async()=>{var E;const r=await this.acquireVideoPlaybackSource(t.source),o=this.createVideo(r.src,!0),h=this.waitVideoReady(o);return{video:o,ready:h,releaseSource:(E=r.release)!=null?E:null}})(),this.pendingSharedHtmlVideos.set(I,C));let Q;try{Q=await C}catch(E){throw this.pendingSharedHtmlVideos.delete(I),E}let a=this.sharedHtmlVideos.get(I);return a?a.refs++:(a={refs:1,video:Q.video,ready:Q.ready,releaseSource:(g=Q.releaseSource)!=null?g:null},this.sharedHtmlVideos.set(I,a)),this.pendingSharedHtmlVideos.delete(I),{cacheKey:I,video:a.video,ready:a.ready,release:()=>this.releaseSharedHtmlVideo(I)}}acquireSharedVideoTexture(A,t){const e=this.sharedVideoTextures.get(A);if(e)return e.refs++,{texture:e.texture,release:()=>this.releaseSharedVideoTexture(A)};const g=this.backend.createTexture(t,{width:t.videoWidth,height:t.videoHeight,filter:"linear"});return this.sharedVideoTextures.set(A,{refs:1,texture:g}),{texture:g,release:()=>this.releaseSharedVideoTexture(A)}}releaseSharedVideoTexture(A){var t;const e=this.sharedVideoTextures.get(A);e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0)&&((t=this.backend)==null||t.deleteTexture(e.texture),this.sharedVideoTextures.delete(A)))}releaseSharedHtmlVideo(A){var t;const e=this.sharedHtmlVideos.get(A);if(e&&(e.refs=Math.max(0,e.refs-1),!(e.refs>0))){try{e.video.pause(),e.video.removeAttribute("src"),e.video.load(),e.video.remove()}catch(g){}(t=e.releaseSource)==null||t.call(e),this.sharedHtmlVideos.delete(A)}}waitForFirstVideoFrame(A){return new Promise(t=>{typeof A.requestVideoFrameCallback=="function"?A.requestVideoFrameCallback(()=>t()):requestAnimationFrame(()=>t())})}waitVideoReady(A){return new Promise((t,e)=>{const g=()=>{A.removeEventListener("canplay",s),A.removeEventListener("error",n)},I=async()=>{try{await A.play(),await this.waitForFirstVideoFrame(A),t()}catch(B){e(B)}},s=()=>{g(),I()},n=()=>{g(),e(new Error("Video load failed"))};A.addEventListener("canplay",s),A.addEventListener("error",n),A.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(g(),I())})}removeGift(A){var t;(t=this.manager)==null||t.removeSlot(A)}removeAll(){if(this.manager)for(const A of this.manager.getSlotIds())this.manager.removeSlot(A)}pause(){var A;(A=this.manager)==null||A.pause()}resume(){var A;(A=this.manager)==null||A.resume()}get activeCount(){var A,t;return(t=(A=this.manager)==null?void 0:A.activeCount)!=null?t:0}get backendType(){var A,t;return(t=(A=this.backend)==null?void 0:A.type)!=null?t:"webgl2"}destroy(){var A,t;this.destroyed=!0,(A=this.resizeObserver)==null||A.disconnect(),this.resizeObserver=null,window.removeEventListener("resize",this.onWindowLayout),window.removeEventListener("orientationchange",this.onWindowLayout),(t=this.manager)==null||t.destroy();for(const[e]of this.sharedHtmlVideos)this.releaseSharedHtmlVideo(e);for(const[e]of this.sharedSVGAEntities)this.releaseSharedSVGAEntity(e);for(const[e]of this.sharedVideoTextures)this.releaseSharedVideoTexture(e);this.pendingSharedSVGAEntities.clear(),this.pendingSharedHtmlVideos.clear();for(const[e,g]of this.sharedVideoSources)g.objectUrl&&URL.revokeObjectURL(g.objectUrl),this.sharedVideoSources.delete(e);this.canvas.remove(),this.backend=null,this.manager=null}};Z(os,"SVGA_ATLAS_MAX_SIZE",2048);Z(os,"SVGA_ATLAS_PADDING",2);Z(os,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);Z(os,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);Z(os,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let Gf=os;exports.AlphaVideoRenderer=RC;exports.AudioManager=kC;exports.BufferPool=wC;exports.GiftStage=Gf;exports.PostAnimator=UC;exports.RenderManager=xC;exports.SVGABatchRenderer=yC;exports.VAPRenderer=NC;exports.WebCodecsMp4Playback=vA;exports.WebGL1Backend=$n;exports.WebGL2Backend=aC;exports.WebGPUBackend=QC;exports.buildAtlas=vC;exports.buildBatchVerticesJS=Ps;exports.canSharedArrayBuffer=Ea;exports.canWebGL1=aa;exports.canWebGL2=Qa;exports.canWebGPU=Ca;exports.clamp=tB;exports.createBackend=rC;exports.decodeSVGAProto=LC;exports.easeInOutCubic=YE;exports.easeInOutQuad=bE;exports.easeInQuad=ME;exports.easeOutBack=LE;exports.easeOutCubic=_s;exports.easeOutQuad=xE;exports.generateId=DC;exports.inflateJS=bC;exports.initWasm=uC;exports.isWasmReady=At;exports.lerp=An;exports.linear=kE;exports.ortho=TA;exports.parseSVGA=sB;exports.parseVAPConfig=gB;
8609
8609
  //# sourceMappingURL=gift-stage.cjs.js.map