@taole/giftstage 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gift-stage.cjs.js +58 -27
- package/dist/gift-stage.es.js +1664 -1516
- package/package.json +1 -1
package/dist/gift-stage.cjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
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
|
|
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
|
-
`,
|
|
18
|
+
`,YQ=`#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
|
-
`,
|
|
42
|
+
`,pB=`#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
|
-
`,
|
|
56
|
+
`,LQ=`#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
|
-
`,
|
|
75
|
+
`,mB=`#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
|
-
`,
|
|
90
|
+
`,_Q=`#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
|
-
`,
|
|
109
|
+
`,GB=`#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
|
-
`,
|
|
124
|
+
`,JQ=`#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
|
-
`,
|
|
140
|
+
`,HQ=`#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
|
-
`,
|
|
152
|
+
`,KQ=`#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
|
-
`,
|
|
177
|
+
`,vQ=`#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
|
-
`,
|
|
211
|
+
`,TQ=`#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
|
-
`,
|
|
221
|
+
`,qQ=`#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
|
-
`,
|
|
229
|
+
`,VQ=`/** 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
|
-
`,
|
|
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
|
-
`,
|
|
304
|
+
`,ZQ=`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
|
-
`,
|
|
342
|
+
`,WQ=`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
|
-
`,
|
|
374
|
+
`,jQ=`/// 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
|
-
`,
|
|
422
|
+
`,OQ=`/// 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
|
-
`,
|
|
478
|
+
`,XQ=`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
|
-
`,
|
|
503
|
+
`,PQ=`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:NQ,frag:yn},svgaInstancedPremul:{vert:RQ,frag:yn},vap:{vert:UQ,frag:pn},vapInstanced:{vert:YQ,frag:pn},alphaVideo:{vert:kQ,frag:mn},alphaVideoInstanced:{vert:bQ,frag:mn},rgbaTextured:{vert:MQ,frag:xQ},clipMask:{vert:LQ,frag:_Q}},yA={svgaBatchPremul:JQ,svgaInstancedPremul:zQ,vap:HQ,vapInstanced:qQ,alphaVideo:KQ,alphaVideoInstanced:TQ,rgbaTextured:vQ,clipMask:VQ};var ZQ=Object.defineProperty,WQ=(i,A,t)=>A in i?ZQ(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,F=(i,A,t)=>WQ(i,typeof A!="symbol"?A+"":A,t);const jQ=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),OQ=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"}},B=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:B,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 B=this.device.createShaderModule({code:t}),n=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:B,entryPoint:"vs",buffers:[{arrayStride:I,attributes:g}]},fragment:{module:B,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:n,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 B=A,n=B.buffer,C=new Uint8Array(n,B.byteOffset,B.byteLength);return typeof SharedArrayBuffer!="undefined"&&n 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 n=t,C=n.buffer,Q=new Uint8Array(C,n.byteOffset,n.byteLength);return typeof SharedArrayBuffer!="undefined"&&C instanceof SharedArrayBuffer?new Uint8Array(Q):Q})(),s=I.byteLength;if(s>g.buffer.size){g.buffer.destroy();let n=GPUBufferUsage.COPY_DST;g.usage==="vertex"?n|=GPUBufferUsage.VERTEX:g.usage==="index"?n|=GPUBufferUsage.INDEX:n|=GPUBufferUsage.UNIFORM,g.buffer=this.device.createBuffer({size:s,usage:n})}const B=new Uint8Array(I.buffer,I.byteOffset,I.byteLength);this.device.queue.writeBuffer(g.buffer,0,B)}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,B=s.displayWidth||s.codedWidth,n=s.displayHeight||s.codedHeight;if(!B||!n||!t||!e||this.copyVideoFrameToTextureDirect(A,t,e,s))return;this.drawVideoLikeSourceToTexture(A,t,e,s);return}if(g instanceof HTMLVideoElement){const s=g,B=s.videoWidth,n=s.videoHeight;if(s.readyState<HTMLMediaElement.HAVE_CURRENT_DATA||!B||!n||!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,B=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:B},A,{bytesPerRow:I*4},[I,s]):this.copyImageSourceToTexture(B,I,s,A,t.premultiplyAlpha===!0);const n=this.nextId++;return this.textures.set(n,{texture:B,view:B.createView(),width:I,height:s}),{id:n,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}),B=this.nextId++;return this.textures.set(B,{texture:s,view:s.createView(),width:g,height:I}),{id:B,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 B=this.textures.get(A.id);if(!B)return;const n={texture:B.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(B.texture,h,c,r,n.origin.x,n.origin.y);return}try{this.device.queue.copyExternalImageToTexture({source:r,flipY:!0},n,[E,o])}catch(f){this.drawVideoLikeSourceToTextureRegion(B.texture,E,o,r,n.origin.x,n.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(B.texture,h,c,r,n.origin.x,n.origin.y);return}if(r.readyState<HTMLMediaElement.HAVE_ENOUGH_DATA){this.drawVideoLikeSourceToTextureRegion(B.texture,E,o,r,n.origin.x,n.origin.y);return}if(this.copyHtmlVideoToTextureRegionDirect(B.texture,E,o,r,n.origin.x,n.origin.y))return;this.drawVideoLikeSourceToTextureRegion(B.texture,E,o,r,n.origin.x,n.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(B.texture,Q,a,C,n.origin.x,n.origin.y);return}this.device.queue.copyExternalImageToTexture({source:C},n,[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(B){return!1}}drawVideoLikeSourceToTextureRegion(A,t,e,g,I,s){this.videoUploadCanvas||(this.videoUploadCanvas=document.createElement("canvas"),this.videoUploadCtx=this.videoUploadCanvas.getContext("2d"));const B=this.videoUploadCanvas,n=this.videoUploadCtx;n&&((B.width!==t||B.height!==e)&&(B.width=t,B.height=e),n.drawImage(g,0,0,t,e),this.device.queue.copyExternalImageToTexture({source:B,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}`,B=this.pipelines.get(s);if(!B)return;const n=this.passEncoder,C=B.pipeline;this.lastDrawPipeline!==C&&(n.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&&(n.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(B.needsTexture){const l=A.uniforms.u_transform,u=l instanceof Float32Array&&l.length>=16?l:jQ,w=A.uniforms.u_atlasRemap,y=w instanceof Float32Array&&w.length>=4?w:OQ;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(B.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:B.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)),n.setBindGroup(0,m,[r])}else B.uniformOnlyBindGroup||(B.uniformOnlyBindGroup=this.device.createBindGroup({layout:B.bindGroupLayout,entries:[{binding:0,resource:{buffer:this.uniformBuffer,offset:0,size:64}}]})),n.setBindGroup(0,B.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&&(n.setVertexBuffer(0,o.buffer),this.lastVertexBufferId=c),this.lastIndexBufferId!==f&&(n.setIndexBuffer(h.buffer,"uint32"),this.lastIndexBufferId=f),n.drawIndexed(A.indexCount)}drawInstancedSvga(A){var t,e,g;const I=this.passEncoder,s=(t=A.instanceCount)!=null?t:0,B=A.instanceData;if(s<1||!B||B.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,B.buffer,B.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,B=A.instanceData;if(s<1||!B||B.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,B.buffer,B.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,B=A.instanceData;if(s<1||!B||B.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,B.buffer,B.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,B=Math.max(0,Math.min(I,Math.round(A))),n=Math.max(0,Math.min(s,Math.round(t))),C=Math.max(B,Math.min(I,Math.round(A+e))),Q=Math.max(n,Math.min(s,Math.round(t+g)));this.passEncoder.setScissorRect(B,n,C-B,Q-n)}resetScissor(){this.passEncoder&&this.passEncoder.setScissorRect(0,0,this.canvas.width,this.canvas.height)}destroy(){var A,t,e,g,I,s,B,n,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(),(B=this.msaaColorTexture)==null||B.destroy(),(n=this.dummyTexture)==null||n.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 IC=AA;function Gn(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=Gn(i,i.VERTEX_SHADER,A),g=Gn(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 Fn(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 XQ=Object.defineProperty,PQ=(i,A,t)=>A in i?XQ(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,H=(i,A,t)=>PQ(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 B=NA(A,J.alphaVideoInstanced.vert,J.alphaVideoInstanced.frag);this.programs.set("alpha-video-instanced",{program:B,uniforms:this.getUniforms(B,["u_projection","u_video"]),vao:null});const n=NA(A,J.vapInstanced.vert,J.vapInstanced.frag);this.programs.set("vap-instanced",{program:n,uniforms:this.getUniforms(n,["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 B=this.getBufferSourceByteLength(t);e===0&&B<=g.byteLength?I.bufferSubData(s,0,t):(I.bufferData(s,t,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))}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,B=this.videoUploadCtx;return B?((s.width!==g||s.height!==I)&&(s.width=g,s.height=I),B.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,B=Fn(I,s),n=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,B),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n?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,B),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n?1:0),this.uploadVideoFrameToTexture(B,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),C=A.videoWidth||C,Q=A.videoHeight||Q;else{const r=n,E=t.sourcePremultiplied===!0,o=r&&!E?1:0;I.bindTexture(I.TEXTURE_2D,B),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:B,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=Fn(g,I),B=Math.max(1,Math.floor(A)),n=Math.max(1,Math.floor(t));g.bindTexture(g.TEXTURE_2D,s),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,B,n,0,g.RGBA,g.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:B,height:n}),{id:C,width:B,height:n}}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 B=this.textures.get(A.id);if(!B)return;const n=this.gl;n.bindTexture(n.TEXTURE_2D,B.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),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,1),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,E),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,1),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,t),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,1),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,t),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0);return}n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,t),n.pixelStorei(n.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 B=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);!B||!n||(e.bindBuffer(e.ARRAY_BUFFER,B.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n.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,B=this.canvas.height,n=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(B,Math.round(t))),Q=Math.max(n,Math.min(s,Math.round(A+e))),a=Math.max(C,Math.min(B,Math.round(t+g)));I.enable(I.SCISSOR_TEST),I.scissor(n,B-a,Q-n,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",B=this.programs.get(s);if(!B)return;this.cachedDrawProgram!==s&&(e.useProgram(B.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=B.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 n=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!n||!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,n.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",B=this.programs.get("alpha-video-instanced");if(!B)return;this.cachedDrawProgram!==s&&(e.useProgram(B.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=B.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 n=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!n||!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,n.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",B=this.programs.get("vap-instanced");if(!B)return;this.cachedDrawProgram!==s&&(e.useProgram(B.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=B.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 n=this.buffers.get(A.vertexBuffer.id),C=this.buffers.get(A.indexBuffer.id);if(!n||!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,n.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 sC=uA;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,eA=(i,A,t)=>Aa(i,typeof A!="symbol"?A+"":A,t);function ta(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 Sn(i,A,t,e){const g=i.createShader(A);if(!g)throw new Error("Failed to create shader");if(i.shaderSource(g,ta(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 rs(i,A,t,e){const g=Sn(i,i.VERTEX_SHADER,A,"vertex"),I=Sn(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[B,n]of Object.entries(e))i.bindAttribLocation(s,n,B);if(i.linkProgram(s),!i.getProgramParameter(s,i.LINK_STATUS)){const B=i.getProgramInfoLog(s);throw i.deleteProgram(s),i.deleteShader(g),i.deleteShader(I),new Error(`Program link failed: ${B}`)}return i.deleteShader(g),i.deleteShader(I),s}function Nn(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 OB{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:rs(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:rs(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:rs(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:rs(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:rs(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 B=this.nextId++;return this.buffers.set(B,{buffer:g,usage:t,byteLength:this.getBufferSourceByteLength(I)}),{id:B,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,B=g.usage==="index"?I.ELEMENT_ARRAY_BUFFER:I.ARRAY_BUFFER;I.bindBuffer(B,g.buffer);const n=this.getBufferSourceByteLength(s);e===0&&n<=g.byteLength?I.bufferSubData(B,0,s):(I.bufferData(B,s,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))}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,B=Nn(I,s),n=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,B),I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,1),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n?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,B),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n?1:0),this.uploadVideoFrameToTexture(B,A),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),C=A.videoWidth||C,Q=A.videoHeight||Q;else{const r=n,E=t.sourcePremultiplied===!0,o=r&&!E?1:0;I.bindTexture(I.TEXTURE_2D,B),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:B,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=Nn(g,I),B=Math.max(1,Math.floor(A)),n=Math.max(1,Math.floor(t));g.bindTexture(g.TEXTURE_2D,s),g.texImage2D(g.TEXTURE_2D,0,g.RGBA,B,n,0,g.RGBA,g.UNSIGNED_BYTE,null);const C=this.nextId++;return this.textures.set(C,{texture:s,width:B,height:n}),{id:C,width:B,height:n}}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 B=this.textures.get(A.id);if(!B)return;const n=this.gl;n.bindTexture(n.TEXTURE_2D,B.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),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,1),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,this.videoUploadCanvas),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0);return}if(typeof VideoFrame!="undefined"&&t instanceof VideoFrame){n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,1),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,t),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0);return}if(t instanceof HTMLVideoElement){n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,1),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.UNSIGNED_BYTE,t),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0);return}n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,0),n.texSubImage2D(n.TEXTURE_2D,0,e,g,n.RGBA,n.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 B=this.buffers.get(A.vertexBuffer.id),n=this.buffers.get(A.indexBuffer.id);!B||!n||(e.bindBuffer(e.ARRAY_BUFFER,B.buffer),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n.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,B=this.canvas.height,n=Math.max(0,Math.min(s,Math.round(A))),C=Math.max(0,Math.min(B,Math.round(t))),Q=Math.max(n,Math.min(s,Math.round(A+e))),a=Math.max(C,Math.min(B,Math.round(t+g)));I.enable(I.SCISSOR_TEST),I.scissor(n,B-a,Q-n,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 BC(){return typeof GPUQueue!="undefined"&&typeof GPUQueue.prototype.copyExternalImageToTexture=="function"}function ea(){return typeof navigator!="undefined"&&"gpu"in navigator&&BC()}function ia(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl2")!==null}catch(i){return!1}}function ga(){if(typeof document=="undefined")return!1;try{return document.createElement("canvas").getContext("webgl")!==null}catch(i){return!1}}function Ia(){return typeof SharedArrayBuffer!="undefined"&&typeof Atomics!="undefined"}function sa(){return typeof OffscreenCanvas!="undefined"}async function nC(i,A=!0,t=!0,e=!1){const g=t!=null?t:!1,I=t!=null?t:!0;if(e){const B=new OB(i,I);return await B.init(),B}if(A&&typeof navigator!="undefined"&&"gpu"in navigator&&BC())try{const B=await navigator.gpu.requestAdapter({powerPreference:"high-performance"});if(B){const n=new IC(i,B,g);return await n.init(),n}else console.warn("[GiftStage] WebGPU unavailable: requestAdapter returned null, fallback to WebGL2/WebGL1.")}catch(B){console.warn(`[GiftStage] WebGPU init failed: ${B instanceof Error?B.message:String(B)}, 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 B=new sC(i,I);return await B.init(),B}catch(B){console.warn(`[GiftStage] WebGL2 init failed: ${B instanceof Error?B.message:String(B)}, fallback to WebGL1.`)}const s=new OB(i,I);return await s.init(),s}function Ba(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 ys(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,OA=4,ps=6;function js(i,A,t){const e=Math.floor(i.length/kA),g=Math.floor(A.length/(OA*fA)),I=Math.floor(t.length/ps),s=Math.min(e,g,I);for(let B=0;B<s;B++){const n=B*kA,C=i[n],Q=i[n+1],a=i[n+2],r=i[n+3],E=i[n+4],o=i[n+5],h=i[n+6],c=i[n+7],f=i[n+8],l=i[n+9],u=i[n+10],w=i[n+11],y=i[n+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=B*OA*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 $=B*ps,W=B*OA;t[$]=W,t[$+1]=W+1,t[$+2]=W+2,t[$+3]=W,t[$+4]=W+2,t[$+5]=W+3}return s}function na(i,A,t){const e=Un(i,_.__wbindgen_malloc),g=cA;var I=Un(A,_.__wbindgen_malloc),s=cA,B=ra(t,_.__wbindgen_malloc),n=cA;return _.build_batch_vertices(e,g,I,s,A,B,n,t)>>>0}function Ca(i){const A=EC(i,_.__wbindgen_malloc),t=cA,e=_.decode_svga(A,t);if(e[2])throw XB(e[1]);return XB(e[0])}function Qa(i){const A=EC(i,_.__wbindgen_malloc),t=cA,e=_.inflate(A,t);if(e[3])throw XB(e[2]);var g=aC(e[0],e[1]).slice();return _.__wbindgen_free(e[0],e[1]*1,1),g}function CC(){_.init()}function QC(){return{__proto__:null,"./gift_stage_wasm_bg.js":{__proto__:null,__wbg_Error_2e59b1b37a9a34c3:function(A,t){return Error(GB(A,t))},__wbg_String_8564e559799eccda:function(A,t){const e=String(t),g=oa(e,_.__wbindgen_malloc,_.__wbindgen_realloc),I=cA;Rn().setInt32(A+4,I,!0),Rn().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(aC(A,t))},__wbg___wbindgen_is_string_b29b5c5a8065ba1a:function(A){return typeof A=="string"},__wbg___wbindgen_throw_81fc77679af83bc6:function(A,t){throw new Error(GB(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 GB(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 aC(i,A){return i=i>>>0,XA().subarray(i/1,i/1+A)}let JA=null;function Rn(){return(JA===null||JA.buffer.detached===!0||JA.buffer.detached===void 0&&JA.buffer!==_.memory.buffer)&&(JA=new DataView(_.memory.buffer)),JA}let ls=null;function aa(){return(ls===null||ls.byteLength===0)&&(ls=new Float32Array(_.memory.buffer)),ls}function GB(i,A){return i=i>>>0,ca(i,A)}let ds=null;function Ea(){return(ds===null||ds.byteLength===0)&&(ds=new Uint32Array(_.memory.buffer)),ds}let fs=null;function XA(){return(fs===null||fs.byteLength===0)&&(fs=new Uint8Array(_.memory.buffer)),fs}function ra(i,A){const t=A(i.length*4,4)>>>0;return Ea().set(i,t/4),cA=i.length,t}function EC(i,A){const t=A(i.length*1,1)>>>0;return XA().set(i,t/1),cA=i.length,t}function Un(i,A){const t=A(i.length*4,4)>>>0;return aa().set(i,t/4),cA=i.length,t}function oa(i,A,t){if(t===void 0){const B=ms.encode(i),n=A(B.length,1)>>>0;return XA().subarray(n,n+B.length).set(B),cA=B.length,n}let e=i.length,g=A(e,1)>>>0;const I=XA();let s=0;for(;s<e;s++){const B=i.charCodeAt(s);if(B>127)break;I[g+s]=B}if(s!==e){s!==0&&(i=i.slice(s)),g=t(g,e,e=s+i.length*3,1)>>>0;const B=XA().subarray(g+s,g+e),n=ms.encodeInto(i,B);s+=n.written,g=t(g,e,s,1)>>>0}return cA=s,g}function XB(i){const A=_.__wbindgen_externrefs.get(i);return _.__externref_table_dealloc(i),A}let Os=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Os.decode();const ha=2146435072;let FB=0;function ca(i,A){return FB+=A,FB>=ha&&(Os=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Os.decode(),FB=A),Os.decode(XA().subarray(i,i+A))}const ms=new TextEncoder;"encodeInto"in ms||(ms.encodeInto=function(i,A){const t=ms.encode(i);return A.set(t),{read:i.length,written:t.length}});let cA=0,_;function rC(i,A){return _=i.exports,JA=null,ls=null,ds=null,fs=null,_.__wbindgen_start(),_}async function la(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 da(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=QC();i instanceof WebAssembly.Module||(i=new WebAssembly.Module(i));const t=new WebAssembly.Instance(i,A);return rC(t)}async function oC(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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OwQAACYAAAAbBxAAbAAAAEQEAAAjAAAAGwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAAEcEAAANAAAAGwcQAGwAAABIBAAAIgAAABsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABNBAAADQAAABsHEABsAAAATgQAACIAAAAbBxAAbAAAAE4EAAANAAAAGwcQAGwAAABPBAAAJgAAABsHEABsAAAATwQAAA0AAAAbBxAAbAAAACwEAAAXAAAAmwUQAG4AAABCAQAAHAAAAJsFEABuAAAAdgEAADAAAABkZXN0IGlzIG91dCBvZiBib3VuZHMAAABtXcvWLFDrY3hBpldxG4u5mrjukVEUlljPlgDo0p8SimVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9yb3BlcmF0aW9uIHN1Y2Nlc3NmdWwAAABPAAAADAAAAAQAAABQAAAAUQAAAFIAAAAAAAAACAAAAAQAAABTAAAAVAAAAFUAAABWAAAAVwAAABAAAAAEAAAAWAAAAFkAAABaAAAAWwAAAEFjY2Vzc0Vycm9yAAAAAAAIAAAABAAAAFwAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkAABUCRAAKgAAALEEAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogcHNpemUgPD0gc2l6ZSArIG1heF9vdmVyaGVhZAAAVAkQACoAAAC3BAAADQAAAE8AAAAMAAAABAAAAF0AAAAQAAAAEQAAABIAAAAQAAAAEAAAABMAAAASAAAADQAAAA4AAAAVAAAADAAAAAsAAAAVAAAAFQAAAA8AAAAOAAAAEwAAACYAAAA4AAAAGQAAABcAAAAMAAAACQAAAAoAAAAQAAAAFwAAAA4AAAAOAAAADQAAABQAAAAIAAAAGwAAAA4AAAAQAAAAFgAAABUAAAALAAAAFgAAAA0AAAALAAAACwAAABMAAAB8IRAAjCEQAJ0hEACvIRAAvyEQAM8hEADiIRAA9CEQAAEiEAAPIhAAJCIQADAiEAA7IhAAUCIQAGUiEAB0IhAAgiIQAJUiEAC7IhAA8yIQAAwjEAAjIxAALyMQADgjEABCIxAAUiMQAGkjEAB3IxAAhSMQAJIjEACmIxAAriMQAMkjEADXIxAA5yMQAP0jEAASJBAAHSQQADMkEABAJBAASyQQAFYkEABIYXNoIHRhYmxlIGNhcGFjaXR5IG92ZXJmbG93QggQACoAAAAlAAAAKAAAAEVycm9yAAAAXgAAAAwAAAAEAAAAXwAAAGAAAABhAEGgzsAAC7EKAQAAAGIAAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3Igd2hlbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gZGlkIG5vdAAAHwMQAEgAAACKAgAADgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAAwkQAFAAAAAcAAAABQAAAABwAAcALQEBAQIBAgEBSAswFRABZQcCBgICAQQjAR4bWws6CQkBGAQBCQEDAQUrAzsJKhgBIDcBAQEECAQBAwcKAh0BOgEBAQIECAEJAQoCGgECAjkBBAIEAgIDAwEeAgMBCwI5AQQFAQIEARQCFgYBAToBAQIBBAgBBwMKAh4BOwEBAQwBCQEoAQMBNwEBAwUDAQQHAgsCHQE6AQICAQEDAwEEBwILAhwCOQIBAQIECAEJAQoCHQFIAQQBAgMBAQgBUQECBwwIYgECCQsHSQIbAQEBAQE3DgEFAQIFCwEkCQFmBAEGAQICAhkCBAMQBA0BAgIGAQ8BAAMABBwDHQIeAkACAQcIAQILCQEtAwEBdQIiAXYDBAIJAQYD2wICAToBAQcBAQEBAggGCgIBMC4CDBQEMAoEAyYJDAIgBAIGOAEBAgMBAQU4CAICmAMBDQEHBAEGAQMCxkAAAcMhAAONAWAgAAZpAgAEAQogAlACAAEDAQQBGQIFAZcCGhINASYIGQsBASwDMAECBAICAgEkAUMGAgICAgwBCAEvATMBAQMCAgUCAQEqAggB7gECAQQBAAEAEBAQAAIAAeIBlQUAAwECBQQoAwQBpQIABEEFAAJNBkYLMQR7ATYPKQECAgoDMQQCAgcBPQMkBQEIPgEMAjQJAQEIBAIBXwMCBAYBAgGdAQMIFQI5AgEBAQEMAQkBDgcDBUMBAgYBAQIBAQMEAwEBDgJVCAIDAQEXAVEBAgYBAQIBAQIBAusBAgQGAgECGwJVCAIBAQJqAQEBAghlAQEBAgQBBQAJAQL1AQoEBAGQBAICBAEgCigGAgQIAQkGAgMuDQECxgEBAwEByQcBBgEBUhYCBwECAQJ6BgMBAQIBBwEBSAIDAQEBAAILAjQFBQMXAQABBg8ADAMDAAU7BwABPwRRAQsCAAIALgIXAAUDBggIAgceBJQDADcEMggBDgEWBQEPAAcBEQIHAQIBBWQBoAcAAT0EAAT+AvMBAgEHAgUBAAdtBwBggPAAAG0IEABLAAAAfgsAACYAAABtCBAASwAAAIcLAAAaAAAAMDAwMTAyMDMwNDA1MDYwNzA4MDkxMDExMTIxMzE0MTUxNjE3MTgxOTIwMjEyMjIzMjQyNTI2MjcyODI5MzAzMTMyMzMzNDM1MzYzNzM4Mzk0MDQxNDI0MzQ0NDU0NjQ3NDg0OTUwNTE1MjUzNTQ1NTU2NTc1ODU5NjA2MTYyNjM2NDY1NjY2NzY4Njk3MDcxNzI3Mzc0NzU3Njc3Nzg3OTgwODE4MjgzODQ4NTg2ODc4ODg5OTA5MTkyOTM5NDk1OTY5Nzk4OTlPBRAASwAAAFcCAAAFAAAAMDEyMzQ1Njc4OWFiY2RlZjB4MDEyMzQ1Njc4OUFCQ0RFRn0gfQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEGT2cAACzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDBAQEBAQAQdHZwAALpQ1bLi4uXWNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAAAAAAwAAgwQgAJEFYABdE6AAEhcgHwwgYB/vLGArKjDgK2+moCwCqCAtHvsgLgD+YDae/6A2/QEhNwEKYTckDSE4qw6hOS8YITrzHiFLQDShUx5h4VTwamFVT2/hVZ28YVYAz2FXZdGhVwDaIVgA4KFZruIhW+zk4VzQ6GFdIADuXvABf18ABgEBAwEEAgUHBwIICAkCCgULAg4EEAERAhIFExwUARUCFwIZDRwFHQgfASQBagRrAm4CrwOxArwCzwLRAtQM1QnWAtcC2gHgBeEC5gHnBOgC7iDwBPgC+gX7AQwnOz5OT4+enp97i5OWorK6hrEGBwk2PT5W89DRBBQYNjdWV3+qrq+9NeASh4mOngQNDhESKTE0OkVGSUpOT2RlioyNj7bBw8TGy9ZctrcbHAcICgsUFzY5Oqip2NkJN5CRqAcKOz5maY+SEW9fv+7vWmK5uvT8/1NUmpsuLycoVZ2goaOkp6iturzEBgsMFR06P0VRpqfMzaAHGRoiJT4/3+fs7//FxgQgIyUmKDM4OkhKTFBTVVZYWlxeYGNlZmtzeH1/iqSqr7DA0K6vbm/H3d6TXiJ7BQMELQNmAwEvLoCCHQMxDxwEJAkeBSsFRAQOKoCqBiQEJAQoCDQLTgM0DIE3CRYKCBg7RTkDYwgJMBYFIQMbBRsmOARLBS8ECgcJB0AgJwQMCTYDOgUaBwQMB1BJNzMNMwcuCAoGJgMdCAKA0FIQBggJIS4IKhYaJhwUFwlOBCQJRA0ZBwoGSAgnCXULQj4qBjsFCgZRBgEFEAMFC1kIAh1iHkgICoCmXiJFCwoGDRM6BgoGFBwsBBeAuTxkUwxICQpGRRtICFMNSQcKVghYIg4KBkYKHQNHSTcDDggKBjkHCgYsBAqA9hkHOwMdVQEPMg2Dm2Z1C4DEikxjDYQwEBYKj5sFgkeauTqGxoI5ByoEXAYmCkYKKAUTgbA6gMZbBTQsSwQ5BxFABQsHCZzWKSBhc6H9gTMPAR0GDgQIgYyJBGsFDQMJBxCPYID9A4G0BhcPEQ9HCXQ8gPYKcwhwFUZ6FAwUDFcJGYCHgUcDhUIPFYRQHwYGgNUrBT4hAXAtAxoEAoFAHxE6BQGB0CqA1isEAYDANggCgOCA9ylMBAoEAoMRREw9gMI8BgEEVQUbNAKBDiwEZAxWCoCuOB0NLAQJBwIOBoCag9kDEQMNA4DaBgwEAQ8MBDgICgYoCCwEAg4JJ4FYCB0DCwM7BB4ECgeA+4QFAAEDBQUGBgIHBggHCREKHAsZDBkNEA4MDwQQAxISEwkWARcEGAEZAxoJGwEcAh8WIAMrAi0LLgEwBDECMgGpAqoEqwj6AvsF/gP/Ca14eYuNojBXWIuMkBzdDg9LTPv8Li8/XF1f4oSNjpGSqbG6u8XGycre5OX/AAQREikxNDc6Oz1JSl2EjpKpsbS6u8bKzs/k5QAEDQ4REikxNDo7RUZJSl5kZYSRm53Jzs8NESk6O0VJV1teX2RljZGptLq7xcnf5OXwDRFFSWRlgISyvL6/1dfw8YOFi6Smvr/Fx8/a20iYvc3Gzs9JTk9XWV5fiY6Psba3v8HGx9cRFhdbXPb3/v+AbXHe3w4fbm8cHV99fq6v3t9Nu7wWFx4fRkdOT1haXF5+f7XF1NXc8PH1cnOPdHUmLi+nr7e/x8/X35oAQJeYMI8fzv9OT1pbBwgPECcv7u9ubzc9P0JFU2d1yMnQ0djZ5/7/ACBfIoLfBIJECBsEBhGBrA6AqwUgB4EcAxkIAQQvBDQEBwMBBwYHEQpQDxIHVQcDBBwKCQMIAwcDAgMDAwwEBQMLBgEOFQVOBxsHVwcCBRgMUARDAy0DAQQRBg8MOgQdJV8gbQRqJYDIBYKwAxoGgv0DWQcWCRgJFAwUDGoGCgYaBlkHKwVGCiwEDAQBAzELLAQaBgsDgKwGCgZMFID0CDwDDwM+BTgIKwWC/xEYCC8RLQMiDiEPgIwEgpoWCxWIlAUvBTsHAg4YCYC+InQMgNYagRAFgOEJ8p4DNwmBXBSAuAiA3RQ8AwoGOAhGCAwGdAseA1oEWQmAgxgcChYJTASAigarpAwXBDGhBIHaJgcMBQWCsyAqBkwEgI0EgL4DGwMPDYgHEABVAAAACgAAACsAAACIBxAAVQAAABoAAAA2AAAALi5SZWZDZWxsIGFscmVhZHkgYm9ycm93ZWQAQYDnwAALAQQAfAlwcm9kdWNlcnMCCGxhbmd1YWdlAQRSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuOTQuMSAoZTQwODk0N2JmIDIwMjYtMDMtMjUpBndhbHJ1cwYwLjI2LjEMd2FzbS1iaW5kZ2VuEzAuMi4xMTcgKGZiNDAzY2ZlZikAaw90YXJnZXRfZmVhdHVyZXMGKw9tdXRhYmxlLWdsb2JhbHMrE25vbnRyYXBwaW5nLWZwdG9pbnQrC2J1bGstbWVtb3J5KwhzaWduLWV4dCsPcmVmZXJlbmNlLXR5cGVzKwptdWx0aXZhbHVl",typeof document=="undefined"?require("url").pathToFileURL(__filename).href:mB&&mB.tagName.toUpperCase()==="SCRIPT"&&mB.src||new URL("gift-stage.cjs.js",document.baseURI).href));const A=QC();(typeof i=="string"||typeof Request=="function"&&i instanceof Request||typeof URL=="function"&&i instanceof URL)&&(i=fetch(i));const{instance:t,module:e}=await la(await i,A);return rC(t)}const fa=Object.freeze(Object.defineProperty({__proto__:null,build_batch_vertices:na,decode_svga:Ca,default:oC,inflate:Qa,init:CC,initSync:da},Symbol.toStringTag,{value:"Module"})),ua="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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";let GA=null,Ts=null;function PA(){return GA!==null}async function hC(){return GA?!0:Ts||(Ts=(async()=>{try{return await oC({module_or_path:ua}),CC(),GA=fa,!0}catch(i){return console.warn("[GiftStage] WASM unavailable, using JS fallback:",i),!1}})(),Ts)}function wa(i){if(!GA)return null;try{return GA.inflate(i)}catch(A){return null}}function Da(i){if(!GA)return null;try{return ya(GA.decode_svga(i))}catch(A){return null}}function SB(i,A,t){if(!GA)return null;try{return GA.build_batch_vertices(i,A,t)}catch(e){return null}}function ya(i){var A,t,e,g,I,s,B;const n=i.params,C=n?{viewBoxWidth:(A=n.view_box_width)!=null?A:0,viewBoxHeight:(t=n.view_box_height)!=null?t:0,fps:(e=n.fps)!=null?e:20,frames:(g=n.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(pa),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:(B=i.version)!=null?B:"",params:C,images:Q,sprites:r,audios:E}}function pa(i){var A,t;let e=null;const g=((A=i.frames)!=null?A:[]).map(I=>{var s,B,n,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=Fa(u),e=w),{alpha:(B=I.alpha)!=null?B:0,layout:I.layout?{x:(n=I.layout.x)!=null?n: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 kn(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 ma(i){var A,t,e,g,I,s;const B=(A=i==null?void 0:i.line_dash)!=null?A:i==null?void 0:i.lineDash;return{fill:kn(i==null?void 0:i.fill),stroke:kn(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(B)&&B.length>0?B:void 0}}function Ga(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 Fa(i){var A,t,e,g,I,s,B,n,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:(B=(s=h.rect.corner_radius)!=null?s:h.rect.cornerRadius)!=null?B:0}:void 0,ellipse:h.ellipse?{x:(n=h.ellipse.x)!=null?n: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:ma(h.style),transform:Ga(h.transform)};o.push(f)}return o.length>0?o:null}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,NB=(i,A,t)=>Na(i,typeof A!="symbol"?A+"":A,t);class cC{constructor(){NB(this,"floatPoolA",null),NB(this,"floatPoolB",null),NB(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),B=1/(t-e),n=1/(g-I),C=new Float32Array(16);return C[0]=-2*s,C[5]=-2*B,C[10]=2*n,C[12]=(i+A)*s,C[13]=(e+t)*B,C[14]=(g+I)*n,C[15]=1,C}function Xs(i,A,t){return i+(A-i)*t}function PB(i,A,t){return i<A?A:i>t?t:i}let Ra=0;function lC(){return`gift_${++Ra}_${Date.now().toString(36)}`}const QB=8;function Mn(i){if(!i||i.trim().length===0)return[];const A=[];let t=[],e=0,g=0,I=0,s=0,B=0,n=0;const C=Ua(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();qs(t,e,g,E,o,h,c,f,l),B=h,n=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();qs(t,e,g,E,o,h,c,f,l),B=h,n=c,e=f,g=l}break}case"S":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=2*e-B,o=2*g-n,h=a(),c=a(),f=a(),l=a();qs(t,e,g,E,o,h,c,f,l),B=h,n=c,e=f,g=l}break}case"s":{for(;Q<C.length&&!isNaN(parseFloat(C[Q]));){const E=2*e-B,o=2*g-n,h=e+a(),c=g+a(),f=e+a(),l=g+a();qs(t,e,g,E,o,h,c,f,l),B=h,n=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();xn(t,e,g,E,o,h,c),B=E,n=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();xn(t,e,g,E,o,h,c),B=E,n=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 Ua(i){return i.replace(/([A-Za-z])/g," $1 ").replace(/,/g," ").trim().split(/\s+/).filter(A=>A.length>0)}function qs(i,A,t,e,g,I,s,B,n){for(let C=1;C<=QB;C++){const Q=C/QB,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*B,y:r*a*t+3*r*Q*g+3*a*E*s+E*Q*n})}}function xn(i,A,t,e,g,I,s){for(let B=1;B<=QB;B++){const n=B/QB,C=1-n;i.push({x:C*C*A+2*C*n*e+n*n*I,y:C*C*t+2*C*n*g+n*n*s})}}function bn(i){const A=i.length;if(A<3)return[];if(A===3)return[0,1,2];const t=[],e=Array.from({length:A},(B,n)=>n),I=ka(i)>0;let s=A*A;for(;e.length>3&&s-- >0;){let B=!1;const n=e.length;for(let C=0;C<n;C++){const Q=e[(C-1+n)%n],a=e[C],r=e[(C+1)%n],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<n;u++)if(!(u===(C-1+n)%n||u===C||u===(C+1)%n)&&Ma(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),B=!0;break}}if(!B)break}if(e.length===3){const[B,n,C]=e;I?t.push(B,n,C):t.push(B,C,n)}return t}function ka(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 Ma(i,A,t,e){const g=RB(i,A,t),I=RB(i,t,e),s=RB(i,e,A),B=g<0||I<0||s<0,n=g>0||I>0||s>0;return!(B&&n)}function RB(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 xa=Object.defineProperty,ba=(i,A,t)=>A in i?xa(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,Y=(i,A,t)=>ba(i,typeof A!="symbol"?A+"":A,t);const UB=2048,rn=class $B{constructor(){Y(this,"pool",new cC),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(UB*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 B=s.videoEntity,n=B.params.viewBoxWidth,C=B.params.viewBoxHeight,Q=s.width/n,a=s.height/C,r=TA(s);let E,o,h,c;if(r==="fill")E=Q*s.scale,o=a*s.scale,h=n*E,c=C*o;else{E=o=Math.min(Q,a)*s.scale;const l=Math.min(Q,a);h=n*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 B.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>=UB&&(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,UB);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 B=I*OA*fA,n=I*ps,C=this.pool.getFloat32B(B),Q=this.pool.getUint32(n),a=new Float32Array(s.buffer,0,I*kA),r=new Float32Array(C.buffer,0,B),E=new Uint32Array(Q.buffer,0,n);(!PA()||SB(a,r,E)===null)&&js(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:n,textures:[e],uniforms:{u_projection:g,u_atlas:0}})}drawBatchInstancedWebGL(A,t,e,g,I){this.ensureInstancedQuadBuffers(A);const s=this.instancedFrameDataScratch;for(let B=0;B<e;B++){const{slot:n,frame:C,binding:Q,sx:a,sy:r}=t[B];this.packFrameData(s,B,n,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,B,n,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=((B=c==null?void 0:c.c)!=null?B:0)*o,w=((n=c==null?void 0:c.d)!=null?n: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=OA*fA,K=ps;(!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;(!PA()||SB(P,x,v)===null)&&js(P,x,v);const $=this.clipSpriteDrawCursor++,W=this.ensureClipSpriteVertexBuffer(A,$,x.subarray(0,k)),LA=this.ensureClipSpriteIndexBuffer(A,$,v.subarray(0,K)),Es={shader:"svga-batch-premul",vertexBuffer:W,indexBuffer:LA,indexCount:K,textures:[E.handle],uniforms:{u_projection:g,u_atlas:0},stencil:"test"};A.draw(Es);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=OA*fA,s=ps;(!this.clipSpriteVertsScratch||this.clipSpriteVertsScratch.length<I)&&(this.clipSpriteVertsScratch=new Float32Array(I)),(!this.clipSpriteIndicesScratch||this.clipSpriteIndicesScratch.length<s)&&(this.clipSpriteIndicesScratch=new Uint32Array(s));const B=this.clipSpriteVertsScratch,n=this.clipSpriteIndicesScratch;(!PA()||SB(g,B,n)===null)&&js(g,B,n);const C=this.clipSpriteDrawCursor++,Q=this.ensureClipSpriteVertexBuffer(A,C,B.subarray(0,I)),a=this.ensureClipSpriteIndexBuffer(A,C,n.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,B){var n,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=(n=w==null?void 0:w.width)!=null?n: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)*B,K=((c=y==null?void 0:y.c)!=null?c:0)*s,x=((f=y==null?void 0:y.d)!=null?f:1)*B;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)*B+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,B;const n=(g=(e=A.svgaSlotTextures)==null?void 0:e.get(t))!=null?g:null;if(n)return{handle:n.texture,rect:{x:0,y:0,w:1,h:1},override:n};const C=A.videoEntity,Q=C.atlasRects.get(t),a=(I=Q==null?void 0:Q.textureIndex)!=null?I:0,r=(B=(s=C.atlasTextureHandles)==null?void 0:s[a])!=null?B:C.atlasTextureHandle;return!Q||!r?null:{handle:r,rect:Q,override:null}}drawShapeFrame(A,t,e,g,I,s,B){var n,C,Q,a,r,E,o,h,c,f,l,u,w;const y=this.getShapeMesh((n=e.shapes)!=null?n: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,fB=((l=b==null?void 0:b.d)!=null?l:1)*I,uB=((u=b==null?void 0:b.tx)!=null?u:0)*g+t.x,wB=((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 Hs=CA[SA],Ks=CA[SA+1];oA[SA]=V*Hs+rA*Ks+uB,oA[SA+1]=DA*Hs+fB*Ks+wB}const Js=this.clipMaskDrawCursor++;v=this.ensureClipVertexBuffer(A,Js,oA.subarray(0,CA.length)),$=this.ensureClipIndexBuffer(A,Js,s.indices),A.draw({shader:"clip-mask",vertexBuffer:v,indexBuffer:$,indexCount:s.indices.length,textures:[],uniforms:{u_projection:B},stencil:"write"})}const W=this.clipSpriteDrawCursor++,LA=this.ensureClipSpriteVertexBuffer(A,W,x.subarray(0,K)),Es=this.ensureClipSpriteIndexBuffer(A,W,y.indices);A.draw({shader:"svga-batch-premul",vertexBuffer:LA,indexBuffer:Es,indexCount:y.indices.length,textures:[p],uniforms:{u_projection:B,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:B},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 B of s){if(B.length<2)continue;const n=B.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&&n.length>=3&&this.appendFill(n,g,t,e),I&&I.a>0&&A.style.strokeWidth>.01&&this.appendStroke(n,I,A.style.strokeWidth,t,e)}}buildShapeSubPaths(A){var t;if(A.kind==="path")return Mn((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 B=s/I*Math.PI*2;g.push({x:e.x+Math.cos(B)*e.radiusX,y:e.y+Math.sin(B)*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 n of I)e.push(n.x,n.y,this.clamp01(t.r),this.clamp01(t.g),this.clamp01(t.b),this.clamp01(t.a));const B=bn(I);if(B.length>=(I.length-2)*3)for(const n of B)g.push(s+n);else for(let n=1;n<I.length-1;n++)g.push(s,s+n,s+n+1)}appendStroke(A,t,e,g,I){A=this.cleanupPoints(A);const s=e*.5;for(let B=0;B<A.length;B++){const n=A[B],C=A[(B+1)%A.length],Q=C.x-n.x,a=C.y-n.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(n.x-E,n.y-o,c,f,l,u),g.push(n.x+E,n.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,B=I.y-g.y;if(s*s+B*B<=e)continue}t.push(I),g=I}if(t.length>2){const I=t[0],s=t[t.length-1],B=I.x-s.x,n=I.y-s.y;B*B+n*n<=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=Mn(A);if(e.length===0)return this.clipMeshCache.set(A,null),null;const g=[],I=[];for(const B of e){if(B.length<3)continue;const n=g.length/2;for(const Q of B)g.push(Q.x,Q.y);const C=bn(B);for(const Q of C)I.push(Q+n)}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($B.INSTANCED_QUAD_VERTS,"vertex"),this.instancedQuadIB=A.createBuffer($B.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(rn,"INSTANCED_QUAD_VERTS",new Float32Array([0,0,1,0,1,1,0,1]));Y(rn,"INSTANCED_QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let dC=rn;var Ya=Object.defineProperty,La=(i,A,t)=>A in i?Ya(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,hA=(i,A,t)=>La(i,typeof A!="symbol"?A+"":A,t);const _a=4,Ja=128*1024*1024,Ha=2048*1024*1024,Ka="gift-stage-resource-cache",va=2,QA="resources",kB="byUpdatedAt",Ta=3e4;class qa{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 Va(){return typeof indexedDB!="undefined"}function Gs(i){return i.length*2}function za(i){let A=0;for(const t of Object.values(i.images))A+=t.byteLength;return A+=Gs(JSON.stringify({version:i.version,params:i.params,sprites:i.sprites,audios:i.audios})),A}function MB(i){return typeof i=="string"?Gs(i):i.byteLength}class Za{constructor(){hA(this,"limiter",new qa(_a)),hA(this,"pending",new Map),hA(this,"memory",new Map),hA(this,"memoryBytes",0),hA(this,"maxMemoryBytes",Ja),hA(this,"maxPersistentBytes",Ha),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 B=await s.arrayBuffer();return this.setMemory(e,"arrayBuffer",B,B.byteLength),this.setPersistent(e,"arrayBuffer",B.slice(0)),B.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,Gs(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 B=await s.text();return this.setMemory(e,"text",B,Gs(B)),this.setPersistent(e,"text",B),B}))}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,Gs(I)),s}getSVGAWorkerPayload(A){return this.getMemory(A,"svga-payload")}setSVGAWorkerPayload(A,t){this.setMemory(A,"svga-payload",t,za(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 Va()?(this.dbPromise||(this.dbPromise=new Promise(A=>{try{const t=indexedDB.open(Ka,va);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(kB)||g.createIndex(kB,"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 B=I.objectStore(QA).get(A);B.onsuccess=()=>{const n=B.result;if(!n||n.kind!==t){g(null);return}const C=n.sizeBytes||MB(n.value);if(Date.now()-n.updatedAt>=Ta&&this.touchPersistent({...n,sizeBytes:C,updatedAt:Date.now()}),t==="arrayBuffer"){g(n.value.slice(0));return}g(n.value)},B.onerror=()=>g(null)}catch(I){g(null)}}):null}async setPersistent(A,t,e){const g=await this.openDb();if(!g)return;const I=MB(e);await new Promise(s=>{try{const B=g.transaction(QA,"readwrite");B.onerror=()=>s(),B.onabort=()=>s();const C=B.objectStore(QA).put({key:A,kind:t,value:e,sizeBytes:I,updatedAt:Date.now()});C.onsuccess=()=>s(),C.onerror=()=>s()}catch(B){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(kB),s=[];let B=0;const n=I.openCursor();n.onsuccess=()=>{const C=n.result;if(C){const a=C.value,r=a.sizeBytes||MB(a.value);B+=r,s.push({key:a.key,sizeBytes:r}),C.continue();return}if(B<=this.maxPersistentBytes)return;let Q=B;for(const a of s){if(Q<=this.maxPersistentBytes)break;g.delete(a.key),Q-=a.sizeBytes}},n.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 Za;function Wa(i){lA.configure(i)}function An(i){return lA.runLimited(i)}function xs(i,A){return lA.fetchArrayBuffer(i,A)}function ja(i,A){return lA.fetchJSON(i,A)}function on(i){return lA.getSVGAWorkerPayload(i)}function Yn(i,A){lA.setSVGAWorkerPayload(i,A)}function Oa(i,A){return lA.getMemoryValue(i,A)}function fC(i,A,t,e){lA.setMemoryValue(i,A,t,e)}function Xa(i){return lA.getPersistedArrayBuffer(i)}function Pa(i,A){return lA.setPersistedArrayBuffer(i,A)}function $a(i){return lA.deletePersistedValue(i)}async function tn(i){const A=typeof i=="string"?await ja(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 $A(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 Vs(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 AE=Object.defineProperty,tE=(i,A,t)=>A in i?AE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,aA=(i,A,t)=>tE(i,typeof A!="symbol"?A+"":A,t);class uC{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),B=I!=null?I:s,n=this.lastTimeFallback.get(A),C=n!==void 0&&Math.abs(e-n)>1e-4;return this.firstUploaded.has(A)&&B!==void 0&&g-B>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-B),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-B)}),!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,B=Number.isFinite(s)&&s>0,n=B?Math.min(Math.max(0,s-.001),e+.001):e;try{B&&n>e&&(t.currentTime=n)}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:n,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 aB(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 eE=3;function iE(){return typeof document!="undefined"&&typeof document.createElement=="function"}function Fs(i,A){if(!iE())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 Ss(i,A){const t=i.getContext("2d",A);if(!t)throw new Error("Failed to acquire 2D canvas context");return t}function wC(i){return!!i&&typeof i=="object"&&typeof i.text=="string"}function gE(i){return!!i&&typeof i=="object"&&"image"in i}function DC(i){return!!i&&typeof i=="object"&&"image"in i}function Ln(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 EB(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 At(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 en(i){if(typeof ImageData!="undefined"&&i instanceof ImageData){const A=Fs(i.width,i.height);return Ss(A).putImageData(i,0,0),A}return i}function IE(i){const A=/^\[(.+)\]$/.exec(i);return A?A[1]:i}function sE(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 yC(i,A,t,e){var g;const I=Math.max(1,e.scale||1),s=Math.max(1,Math.round(i)),B=Math.max(1,Math.round(A)),n=Fs(s*I,B*I),C=Ss(n),Q=(g=e.color)!=null?g:"#ffffff",a=Math.max(1,t.length),r=Math.max(12,Math.min(s/a,B-8)),E=`${e.style==="b"?"bold ":""}${r*I}px Arial`,o=sE(e.fontStyle,E,Q);return C.clearRect(0,0,n.width,n.height),C.textAlign="center",C.textBaseline="middle",C.font=o.font,C.fillStyle=o.color,C.fillText(t,n.width/2,n.height/2),{canvas:n,logicalWidth:s,logicalHeight:B}}function BE(i,A){var t,e,g,I;const s=i.sprites.find(Q=>Q.imageKey===A);if(!s)return{width:1,height:1};let B=0,n=0;for(const Q of s.frames)B=Math.max(B,(e=(t=Q.layout)==null?void 0:t.width)!=null?e:0),n=Math.max(n,(I=(g=Q.layout)==null?void 0:g.height)!=null?I:0);if(B>0&&n>0)return{width:B,height:n};const C=i.atlasRects.get(A);return C?{width:C.w,height:C.h}:{width:1,height:1}}async function nE(i,A,t){var e,g,I;if(wC(i)){const B=yC(A,t,i.text,{scale:(e=i.scale)!=null?e:eE,color:i.color,style:i.style,fontStyle:i.fontStyle});return{source:B.canvas,mode:(g=i.mode)!=null?g:"dynamic",logicalWidth:B.logicalWidth,logicalHeight:B.logicalHeight}}if(gE(i)){const B=typeof i.image=="string"?await EB(i.image):i.image,n=At(B);return{source:B,mode:(I=i.mode)!=null?I:"replace",logicalWidth:Math.max(1,n.width||A),logicalHeight:Math.max(1,n.height||t)}}if(typeof i=="string"){const B=await EB(i),n=At(B);return{source:B,mode:"replace",logicalWidth:Math.max(1,n.width||A),logicalHeight:Math.max(1,n.height||t)}}const s=At(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=BE(A,g),B=await nE(I,s.width,s.height),n=At(B.source),C=n.width||s.width,Q=n.height||s.height,a=i.createTexture(B.source,{width:C,height:Q,filter:"linear",premultiplyAlpha:!0});e.set(g,{texture:a,mode:B.mode,logicalWidth:B.logicalWidth,logicalHeight:B.logicalHeight})}return e}function QE(i,A){var t,e;if(!A)return;const g=String(i.srcId),I=i.srcTag,s=IE(i.srcTag);return(e=(t=A[I])!=null?t:A[s])!=null?e:A[g]}function aE(i,A){var t,e,g,I;const s=typeof A=="string"?A:A.text,B=i.w&&i.w>0?i.w:1,n=i.h&&i.h>0?i.h:1,C=yC(B,n,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 EE(i){return typeof i=="string"?EB(i):DC(i)?typeof i.image=="string"?EB(i.image):en(i.image):en(i)}async function rE(i,A){const t=new Map;if(!i.src||i.src.length===0||!A)return t;for(const e of i.src){const g=QE(e,A);if(g==null)continue;if(e.srcType==="txt"){if(Ln(g)){const C=en(g),Q=At(C);t.set(String(e.srcId),{source:C,width:Math.max(1,Q.width),height:Math.max(1,Q.height)});continue}const n=aE(e,typeof g=="string"||wC(g)?g:String(g));t.set(String(e.srcId),n);continue}const I=Ln(g)||typeof g=="string"||DC(g)?g:null;if(!I)continue;const s=await EE(I),B=At(s);t.set(String(e.srcId),{source:s,width:Math.max(1,B.width),height:Math.max(1,B.height)})}return t}function oE(i){var A;const t=new Map;for(const e of(A=i.frame)!=null?A:[]){const g=[...e.obj].sort((I,s)=>{var B,n;return((B=I.z)!=null?B:0)-((n=s.z)!=null?n:0)});t.set(e.i,g)}return t}function hE(i,A){const t=Fs(i,A),e=Fs(i,A),g=Fs(1,1);return{compositeCanvas:t,compositeCtx:Ss(t),rawCanvas:e,rawCtx:Ss(e),scratchCanvas:g,scratchCtx:Ss(g)}}function _n(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,B=I.videoH||i.height,[n,C,Q,a]=I.rgbFrame,[r,E,o,h]=I.aFrame;(i.rawCanvas.width!==s||i.rawCanvas.height!==B)&&(i.rawCanvas.width=s,i.rawCanvas.height=B),i.rawCtx.clearRect(0,0,s,B),i.rawCtx.drawImage(t,0,0,s,B);const c=i.rawCtx.getImageData(0,0,s,B).data,f=i.compositeCtx.createImageData(i.width,i.height),l=f.data;for(let w=0;w<i.height;w++){const y=Math.min(B-1,Math.max(0,C+Math.floor(w/i.height*a))),p=Math.min(B-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,n+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))),Es=Math.min(B-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,fB=(Es*s+DA)*4,uB=k[rA+3]/255,wB=c[fB]/255,CA=uB*wB;if(CA<=0)continue;const oA=(W*i.width+b)*4,Js=k[rA]/255*CA,SA=k[rA+1]/255*CA,Hs=k[rA+2]/255*CA,Ks=l[oA+3]/255,vs=1-CA;l[oA]=Math.round((Js+l[oA]/255*vs)*255),l[oA+1]=Math.round((SA+l[oA+1]/255*vs)*255),l[oA+2]=Math.round((Hs+l[oA+2]/255*vs)*255),l[oA+3]=Math.round((CA+Ks*vs)*255)}}}return i.compositeCtx.putImageData(f,0,0),i.compositeCanvas}var cE=Object.defineProperty,lE=(i,A,t)=>A in i?cE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,O=(i,A,t)=>lE(i,typeof A!="symbol"?A+"":A,t);const xB=1024,bB=28,_s=class us{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 uC),O(this,"lastWcFrameRef",new Map),O(this,"scratchAtlasRemap",new Float32Array(4)),O(this,"instancePackScratch",new Float32Array(xB*bB)),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 B of t.values()){if(B.type!=="vap"||B.state!=="playing"&&B.state!=="fly"||!B.videoTextureHandle)continue;if(B.vapMixState){I=this.syncMixedTexture(A,B)||I;continue}const n=B.webcodecsPlayback;if(n){const C=(e=B.wcPlaybackTime)!=null?e:0,Q=n.getFrameForTime(C);if(this.wcDbgFirstDraw.has(B.id)||(this.wcDbgFirstDraw.add(B.id),console.info("[GiftStage:WC] VAP first draw",{giftId:B.id,state:B.state,t:C,hasFrame:!!Q,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),Q){if(this.lastWcFrameRef.get(B.id)!==Q){const r=B.wcAtlasRect;r?A.updateTextureRegion(B.videoTextureHandle,Q,r.x,r.y,r.w,r.h):A.updateTexture(B.videoTextureHandle,Q),this.lastWcFrameRef.set(B.id,Q),I=!0}}else{const a=((g=this.wcDbgNullWarns.get(B.id))!=null?g:0)+1;this.wcDbgNullWarns.set(B.id,a),a<=5&&console.warn("[GiftStage:WC] VAP getFrameForTime null",{giftId:B.id,t:C,n:a})}}else if(B.videoElement){const C=this.getHtmlVideoGateId(B);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,B.videoElement)&&(A.updateTexture(B.videoTextureHandle,B.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(us.QUAD_VERTS,"vertex"),this.quadIB=A.createBuffer(us.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 B=new Map;for(const C of e){const Q=C.videoTextureHandle.id;let a=B.get(Q);a||(a=[],B.set(Q,a)),a.push(C)}const n=this.instancePackScratch;for(const C of B.values())for(let Q=0;Q<C.length;Q+=xB){const a=Math.min(xB,C.length-Q);for(let E=0;E<a;E++)this.fillVapInstanceData(C[Q+E],n,E*bB);const r=n.subarray(0,a*bB);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,B;const n=A.vapConfig,{info:C}=n,Q=C.videoW>0?C.videoW:(I=(g=A.webcodecsPlayback)==null?void 0:g.videoWidth)!=null?I:1,a=C.videoH>0?C.videoH:(B=(s=A.webcodecsPlayback)==null?void 0:s.videoHeight)!=null?B: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}=$A(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=Vs(C.rgbFrame,Q,a),l=Vs(C.aFrame,Q,a),u=A.videoTextureHandle,w=aB(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),B=t.webcodecsPlayback;if(B){const C=(e=t.wcPlaybackTime)!=null?e:0,Q=B.getFrameForTime(C);if(!Q||I.lastSourceRef===Q&&I.lastFrameIndex===s)return!1;const a=I.composer?I.composer.render(Q,s):_n(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 n=I.composer?I.composer.render(t.videoElement,s):_n(I,g,t.videoElement,s);return A.updateTexture(t.videoTextureHandle,n),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 B=A.canvas.width,n=A.canvas.height;let C;this.projCache&&this.projCacheW===B&&this.projCacheH===n?C=this.projCache:(this.projCacheW=B,this.projCacheH=n,this.projCache=vA(0,B,n,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}=$A(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=Vs(a.rgbFrame,r,E),w=Vs(a.aFrame,r,E),y=t.videoTextureHandle,p=aB(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 B=t.vapConfig;if(!B||!t.vapMixState||!t.videoTextureHandle)return;const n=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}=$A(B.info);if(o>0&&h>0){const c=Math.min(C/o,Q/h);a=o*c,r=h*c}}n[0]=a,n[5]=r,n[10]=1,n[12]=t.x,n[13]=t.y,n[15]=1;const E=(e=t.vapMixState)!=null&&e.composer||A.type==="webgpu"?us.RGBA_QUAD_VERTS_WEBGPU:us.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:n,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),B=s==null?void 0:s.mediaTime;return typeof B=="number"&&Number.isFinite(B)&&B>=0?Math.max(0,Math.round(B*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(_s,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));O(_s,"RGBA_QUAD_VERTS_WEBGL",new Float32Array([0,0,0,1,1,0,1,1,1,1,1,0,0,1,0,0]));O(_s,"RGBA_QUAD_VERTS_WEBGPU",new Float32Array([0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1]));O(_s,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let pC=_s;var dE=Object.defineProperty,fE=(i,A,t)=>A in i?dE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,IA=(i,A,t)=>fE(i,typeof A!="symbol"?A+"":A,t);const YB=1024,LB=20,hn=class HA{constructor(){IA(this,"quadVB",null),IA(this,"quadIB",null),IA(this,"instancePackScratch",new Float32Array(YB*LB)),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 uC),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 B of t.values()){if(B.type!=="alphaVideo"||B.state!=="playing"&&B.state!=="fly"||!B.videoTextureHandle)continue;const n=B.webcodecsPlayback;if(n){const C=(e=B.wcPlaybackTime)!=null?e:0,Q=n.getFrameForTime(C);if(this.wcDbgFirstDraw.has(B.id)||(this.wcDbgFirstDraw.add(B.id),console.info("[GiftStage:WC] alphaVideo first draw",{giftId:B.id,state:B.state,t:C,hasFrame:!!Q,canvasBuf:`${A.canvas.width}x${A.canvas.height}`})),Q){if(this.lastWcFrameRef.get(B.id)!==Q){const r=B.wcAtlasRect;r?A.updateTextureRegion(B.videoTextureHandle,Q,r.x,r.y,r.w,r.h):A.updateTexture(B.videoTextureHandle,Q),this.lastWcFrameRef.set(B.id,Q),I=!0}}else{const a=((g=this.wcDbgNullWarns.get(B.id))!=null?g:0)+1;this.wcDbgNullWarns.set(B.id,a),a<=5&&console.warn("[GiftStage:WC] alphaVideo getFrameForTime null",{giftId:B.id,t:C,n:a})}}else if(B.videoElement){const C=this.getHtmlVideoGateId(B);if(s.has(C))continue;s.add(C),this.htmlGate.preUpload(C,B.videoElement)&&(A.updateTexture(B.videoTextureHandle,B.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 B=new Map;for(const C of e){const Q=C.videoTextureHandle.id;let a=B.get(Q);a||(a=[],B.set(Q,a)),a.push(C)}const n=this.instancePackScratch;for(const C of B.values())for(let Q=0;Q<C.length;Q+=YB){const a=Math.min(YB,C.length-Q);for(let E=0;E<a;E++)this.fillAlphaInstanceData(C[Q+E],n,E*LB);const r=n.subarray(0,a*LB);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 B=I,n=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);B=a*E,n=r*E}}g[0]=B,g[5]=n,g[10]=1,g[12]=A.x,g[13]=A.y,g[15]=1,t.set(g,e);const C=A.videoTextureHandle,Q=aB(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,B=t.width*t.scale,n=t.height*t.scale;let C=B,Q=n;if(TA(t)==="contain"){const{w:o,h}=HA.alphaVideoContentSize(t);if(o>0&&h>0){const c=Math.min(B/o,n/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=aB(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(hn,"QUAD_VERTS",new Float32Array([0,0,.5,1,1,0,1,1,1,1,1,0,0,1,.5,0]));IA(hn,"QUAD_INDICES",new Uint32Array([0,1,2,0,2,3]));let mC=hn;var uE=Object.defineProperty,wE=(i,A,t)=>A in i?uE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,DE=(i,A,t)=>wE(i,A+"",t);class GC{constructor(){DE(this,"animations",[])}startFly(A,t,e,g,I,s,B){this.animations=this.animations.filter(n=>n.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:B})}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),PB((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=PB((t-e.startTime)/e.duration,0,1),I=e.easing(g);return{x:Xs(e.startX,e.targetX,I),y:Xs(e.startY,e.targetY,I),scale:Xs(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 yE=Object.defineProperty,pE=(i,A,t)=>A in i?yE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,os=(i,A,t)=>pE(i,typeof A!="symbol"?A+"":A,t);class FC{constructor(){os(this,"ctx",null),os(this,"decodedCache",new Map),os(this,"activeSources",[]),os(this,"globalMute",!1),os(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 B=this.activeSources.findIndex(n=>n.source===s&&n.giftId===A);B>=0&&this.activeSources.splice(B,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 mE(i){return i}function GE(i){return i*i}function FE(i){return i*(2-i)}function SE(i){return i<.5?2*i*i:-1+(4-2*i)*i}function bs(i){const A=i-1;return A*A*A+1}function NE(i){return i<.5?4*i*i*i:(i-1)*(2*i-2)*(2*i-2)+1}function RE(i){return 1+2.70158*Math.pow(i-1,3)+1.70158*Math.pow(i-1,2)}var UE=Object.defineProperty,kE=(i,A,t)=>A in i?UE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,WA=(i,A,t)=>kE(i,typeof A!="symbol"?A+"":A,t);class ME{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 xE(i){const A=/^(-?\d+(?:\.\d+)?)%$/.exec(i.trim());if(!A)return null;const t=Number(A[1]);return Number.isFinite(t)?t:null}function Jn(i,A,t){if(typeof i=="number")return i;const e=xE(i);if(e==null)throw new Error(`Invalid percentage coordinate: ${i}`);return A*e/100-t/2}function SC(i,A,t,e,g,I){return{x:Jn(i,g,t),y:Jn(A,I,e)}}var bE=Object.defineProperty,YE=(i,A,t)=>A in i?bE(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,gA=(i,A,t)=>YE(i,typeof A!="symbol"?A+"":A,t);class NC{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 pC,this.alphaVideoRenderer=new mC,this.postAnimator=new GC,this.audioManager=new FC,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,B;const n=this.slots.get(A);if(n){if(n.type==="vap"&&(this.vapRenderer.releaseHtmlVideo(n),this.vapRenderer.clearWebCodecsFrameRef(n.id),(e=(t=n.vapMixState)==null?void 0:t.composer)==null||e.destroy()),n.type==="alphaVideo"&&(this.alphaVideoRenderer.releaseHtmlVideo(n),this.alphaVideoRenderer.clearWebCodecsFrameRef(n.id)),this.audioManager.stopAllForGift(A),this.postAnimator.cancelForGift(A),n.videoEntity&&!n.releaseSharedSVGAAsset&&this.deleteSVGAAtlasTextures(n.videoEntity),n.svgaSlotTextures){for(const C of n.svgaSlotTextures.values())this.backend.deleteTexture(C.texture);n.svgaSlotTextures.clear()}n.wcAtlasRect?this.releaseWebCodecsAtlasSlot(n.id):n.videoTextureHandle&&!n.releaseSharedVideoTexture&&this.backend.deleteTexture(n.videoTextureHandle),n.webcodecsPlayback&&(n.webcodecsPlayback.destroy(),n.webcodecsPlayback=null),n.videoElement&&!n.releaseSharedVideoPlayback&&(n.videoElement.pause(),n.videoElement.removeAttribute("src"),n.videoElement.load(),n.videoElement.remove()),(g=n.releaseSharedVideoPlayback)==null||g.call(n),n.releaseSharedVideoPlayback=null,(I=n.releaseSharedSVGAAsset)==null||I.call(n),n.releaseSharedSVGAAsset=null,(s=n.releaseSharedVideoTexture)==null||s.call(n),n.releaseSharedVideoTexture=null,(B=n.releaseMediaSource)==null||B.call(n),n.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 ME(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}=ys(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=SC(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,B]of this.slots){if(B.paused||B.state==="loading")continue;const n=this.handles.get(s),C=this.postAnimator.getAnimatedState(s,A);if(C&&(B.x=C.x,B.y=C.y,B.scale=C.scale,I=!0),B.type==="svga"&&B.videoEntity&&B.state==="playing"&&(I=this.tickSVGA(B,g,n,A)||I),(B.type==="vap"||B.type==="alphaVideo")&&B.webcodecsPlayback&&B.state==="playing"){this.tickWebCodecs(B,g,n);const Q=B.webcodecsPlayback;(e=Q.ensureDecodedThrough)==null||e.call(Q,(t=B.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 B=Math.max(s.duration,1e-9);if(!Number.isFinite(B))return;const n=(g=A.options.loop)!=null?g:1;let C=((I=A.wcPlaybackTime)!=null?I:0)+t;if(n===0){A.wcPlaybackTime=(C%B+B)%B,this.wcDbgLogTickOnce(A,B,A.wcPlaybackTime,n);return}for(;C>=B;)if(C-=B,A.loopCount++,A.loopCount>=n){A.wcPlaybackTime=B-1e-6,this.wcDbgLogTickOnce(A,B,A.wcPlaybackTime,n),this.onWebCodecsPlaybackComplete(A,e);return}A.wcPlaybackTime=C,this.wcDbgLogTickOnce(A,B,A.wcPlaybackTime,n)}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:B,sy:n}=ys(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*B,A.flyTo.y*n,(g=A.scaleTo)!=null?g:.3,(I=A.flyDuration)!=null?I:600,(s=A.easing)!=null?s:bs,()=>{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,B=s.params.fps;if(B<=0)return!1;const n=1/B,C=A.currentFrame;for(A.accumulatedTime+=t;A.accumulatedTime>=n;)if(A.accumulatedTime-=n,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,B;if((g=A.onComplete)==null||g.call(A,t),A.flyTo){A.state="fly";const{sx:n,sy:C}=ys(this.backend.canvas);this.postAnimator.startFly(A,A.flyTo.x*n,A.flyTo.y*C,(I=A.scaleTo)!=null?I:.3,(s=A.flyDuration)!=null?s:600,(B=A.easing)!=null?B:bs,()=>{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,B;const n=(g=t.zIndex)!=null?g:0,C=(I=e.zIndex)!=null?I:0;return n!==C?n-C:((s=t.renderOrder)!=null?s:0)-((B=e.renderOrder)!=null?B: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 B of e){const n=(t=B.zIndex)!=null?t:0;I.length>0&&n!==s&&(g.push(I),I=[],s=n),I.push(B)}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,B,n;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:${(n=(B=A.videoTextureHandle)==null?void 0:B.id)!=null?n:-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 RC(i){if(typeof DecompressionStream!="undefined"){try{return await _B(i,"deflate")}catch(A){}try{return await _B(i.slice(2),"deflate-raw")}catch(A){}return await _B(i.slice(2,-4),"deflate-raw")}throw new Error("No inflate implementation available (need WASM or DecompressionStream)")}async function _B(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 B=new Uint8Array(s);let n=0;for(const C of I)B.set(C,n),n+=C.length;return B}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,JB=(i,A,t)=>_E(i,typeof A!="symbol"?A+"":A,t);const JE=0,HE=1,KE=2,vE=5;class cn{constructor(A,t=0,e){JB(this,"view"),JB(this,"pos"),JB(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 JE:this.readVarint();break;case HE:this.pos+=8;break;case KE:this.pos+=this.readVarint();break;case vE:this.pos+=4;break}}sub(A){const t=new cn(new Uint8Array(this.view.buffer,this.view.byteOffset),this.pos,A);return this.pos+=A,t}}function TE(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 qE(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 UC(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 Hn(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 VE(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=Hn(i.sub(g));break}case 2:{const g=i.readVarint();A.stroke=Hn(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 zE(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 ZE(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 WE(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 jE(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 B=i.readTag();if(!B)break;switch(B.field){case 1:A=i.readVarint();break;case 2:{const n=i.readVarint();t=zE(i.sub(n));break}case 3:{const n=i.readVarint();e=ZE(i.sub(n));break}case 4:{const n=i.readVarint();g=WE(i.sub(n));break}case 10:{const n=i.readVarint();I=VE(i.sub(n));break}case 11:{const n=i.readVarint();s=UC(i.sub(n));break}default:i.skip(B.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 OE(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=qE(i.sub(g));break}case 3:{const g=i.readVarint();A.transform=UC(i.sub(g));break}case 4:A.clipPath=i.readString();break;case 5:{const g=i.readVarint(),I=jE(i.sub(g));I&&t.push(I);break}default:i.skip(e.wire)}}return t.length>0&&(A.shapes=t),A}function XE(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(OE(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(B=>B.kind!=="keep");g.shapes=s.length>0?s:null,e=g.shapes}return t}function PE(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 $E(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 kC(i){const A=new cn(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=TE(A.sub(g));break}case 3:{const g=A.readVarint(),{key:I,value:s}=$E(A.sub(g));t.images.set(I,s);break}case 4:{const g=A.readVarint();t.sprites.push(XE(A.sub(g)));break}case 5:{const g=A.readVarint();t.audios.push(PE(A.sub(g)));break}default:A.skip(e.wire)}}return t}const MC=`async function _(A) {
|
|
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//////////9AWEABB6K3AAAtVY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWRmYWlsZWQgdG8gZGVjb2RlIFByb3RvYnVmIG1lc3NhZ2U6IABByK7AAAulAwEAAAAnAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAoAAAAKQAAACoAAAArAAAALAAAALQDEABgAAAAOgUAADIAAAAtAAAALgAAAC8AAAAwAAAAMQAAADIAAAAzAAAANAAAADAAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAC0AxAAYAAAAEgFAABJAAAATGF5b3V0RXJyb3IA6gkQAF4AAACqAAAABQAAAGFib3J0AAAA6gkQAF4AAABuAAAACQAAAG92ZXJmbG93ugIQAGQAAACpAgAAFQAAALoCEABkAAAAvQIAAB0AAAA8AAAAPQAA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OwQAACYAAAAbBxAAbAAAAEQEAAAjAAAAGwcQAGwAAABEBAAADgAAAGFzc2VydGlvbiBmYWlsZWQ6IG91dF9wb3MgKyAxIDwgb3V0X3NsaWNlLmxlbigpABsHEABsAAAARgQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiAoc291cmNlX3BvcyArIDEpICYgb3V0X2J1Zl9zaXplX21hc2sgPCBvdXRfc2xpY2UubGVuKCkbBxAAbAAAAEcEAAANAAAAGwcQAGwAAABIBAAAIgAAABsHEABsAAAASAQAAA0AAABhc3NlcnRpb24gZmFpbGVkOiBvdXRfcG9zICsgMiA8IG91dF9zbGljZS5sZW4oKQAbBxAAbAAAAEwEAAANAAAAYXNzZXJ0aW9uIGZhaWxlZDogKHNvdXJjZV9wb3MgKyAyKSAmIG91dF9idWZfc2l6ZV9tYXNrIDwgb3V0X3NsaWNlLmxlbigpGwcQAGwAAABNBAAADQAAABsHEABsAAAATgQAACIAAAAbBxAAbAAAAE4EAAANAAAAGwcQAGwAAABPBAAAJgAAABsHEABsAAAATwQAAA0AAAAbBxAAbAAAACwEAAAXAAAAmwUQAG4AAABCAQAAHAAAAJsFEABuAAAAdgEAADAAAABkZXN0IGlzIG91dCBvZiBib3VuZHMAAABtXcvWLFDrY3hBpldxG4u5mrjukVEUlljPlgDo0p8SimVudGl0eSBub3QgZm91bmRwZXJtaXNzaW9uIGRlbmllZGNvbm5lY3Rpb24gcmVmdXNlZGNvbm5lY3Rpb24gcmVzZXRob3N0IHVucmVhY2hhYmxlbmV0d29yayB1bnJlYWNoYWJsZWNvbm5lY3Rpb24gYWJvcnRlZG5vdCBjb25uZWN0ZWRhZGRyZXNzIGluIHVzZWFkZHJlc3Mgbm90IGF2YWlsYWJsZW5ldHdvcmsgZG93bmJyb2tlbiBwaXBlZW50aXR5IGFscmVhZHkgZXhpc3Rzb3BlcmF0aW9uIHdvdWxkIGJsb2Nrbm90IGEgZGlyZWN0b3J5aXMgYSBkaXJlY3RvcnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQg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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) {
|
|
552
552
|
if (typeof DecompressionStream != "undefined") {
|
|
553
553
|
try {
|
|
554
554
|
return await l(A, "deflate");
|
|
@@ -1444,7 +1444,38 @@ Z.onmessage = async (A) => {
|
|
|
1444
1444
|
}
|
|
1445
1445
|
};
|
|
1446
1446
|
//# sourceMappingURL=parser-worker-C3zSIV4y.js.map
|
|
1447
|
-
`,Kn=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",MC],{type:"text/javascript;charset=utf-8"});function Ar(i){let A;try{if(A=Kn&&(self.URL||self.webkitURL).createObjectURL(Kn),!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(MC),{type:"module",name:i==null?void 0:i.name})}}let hs=null,tr=1;const ws=new Map;function er(){return hs||(hs=new Ar,hs.addEventListener("message",i=>{const A=i.data;if(!A||A.type!=="parse-svga-result"||A.id==null)return;const t=ws.get(A.id);t&&(ws.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")))}),hs.addEventListener("error",i=>{const A=i.message||"SVGA parser worker error";for(const[,t]of ws)t.reject(new Error(A));ws.clear()})),hs}function ir(i){const A=er(),t=tr++,e=i.slice(0);return new Promise((g,I)=>{ws.set(t,{resolve:g,reject:I}),A.postMessage({type:"parse-svga",id:t,data:e},[e])})}function gr(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 HB=[73,68,51],KB=2,zs=new Map,Ps=new WeakMap,vB=new WeakMap;async function Ir(){await new Promise(i=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>i());return}setTimeout(i,0)})}function sr(i,A){return!!(i.startsWith("audio")||A.length>=3&&A[0]===HB[0]&&A[1]===HB[1]&&A[2]===HB[2])}async function Br(i){const A=new Map,t=new Map,e=[];for(const[g,I]of i.images){if(sr(g,I)){const s=I.buffer;t.set(g,s.slice(I.byteOffset,I.byteOffset+I.byteLength));continue}I.length!==0&&e.push([g,I])}for(let g=0;g<e.length;g+=KB){const I=e.slice(g,g+KB);await Promise.all(I.map(async([s,B])=>{try{const n=await createImageBitmap(new Blob([new Uint8Array(B)]),{premultiplyAlpha:"none"});A.set(s,n)}catch(n){}})),g+KB<e.length&&await Ir()}return{movie:i,imageBitmaps:A,audioBlobs:t}}async function vn(i){return Br(gr(i))}function nr(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 xC(i,A,t,e){if(!A){const I=Ps.get(i);if(I)return I;const s=vB.get(i);if(s)return s}if(A){const I=on(A);if(I)return I;const s=zs.get(A);if(s)return s}const g=An(async()=>{if(e)try{const n=new Uint8Array(t).slice().buffer,C=await ir(n);return A?Yn(A,C):Ps.set(i,C),C}catch(n){console.warn("[GiftStage:SVGA] worker parse failed, using main thread",n)}const I=PA()&&wa(t)||await RC(t),s=PA()&&Da(I)||kC(I),B=nr(s);return A?Yn(A,B):Ps.set(i,B),B});if(!A){const I=g.finally(()=>{vB.delete(i)});return vB.set(i,I),I}return zs.set(A,g.finally(()=>{zs.delete(A)})),zs.get(A)}async function Cr(i,A){let t;const e=typeof i=="string"?`svga-payload:${i}`:null;if(typeof i=="string"){if(t=new Uint8Array(await xs(i)),e){const s=on(e);if(s)return s.params}}else{t=new Uint8Array(i);const s=Ps.get(i);if(s)return s.params}const g=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined";return(await xC(i,e,t,g)).params}async function gn(i,A){let t;const e=typeof i=="string"?`svga-payload:${i}`:null;if(typeof i=="string"){if(t=new Uint8Array(await xs(i)),e){const s=on(e);if(s)return An(async()=>vn(s))}}else t=new Uint8Array(i);const g=(A==null?void 0:A.useWorker)!==!1&&typeof Worker!="undefined",I=await xC(i,e,t,g);return An(async()=>vn(I))}const TB=24;async function Qr(){await new Promise(i=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>i());return}setTimeout(i,0)})}function ar(){return{rects:[],cursorX:0,shelfY:0,shelfH:0,usedW:0,usedH:0}}function Er(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 In(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 B=i.shelfY+i.shelfH;return B+s>g?!1:(i.shelfY=B,i.shelfH=0,i.cursorX=0,In(i,A,t,e,g))}function qB(i,A,t,e){const g=Array.from(i.entries()).map(([s,B])=>Er(s,B,A,t,e));g.sort((s,B)=>B.packedHeight-s.packedHeight||B.packedWidth-s.packedWidth);const I=[];for(const s of g){let B=!1;for(let Q=0;Q<I.length;Q++)if(In(I[Q],s,Q,A,t)){B=!0;break}if(B)continue;const n=ar(),C=I.length;if(!In(n,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(n)}return I}function Tn(i,A){return i.map(t=>({rects:t.rects,atlasW:Math.min(A,qn(Math.max(1,t.usedW))),atlasH:Math.min(A,qn(Math.max(1,t.usedH)))}))}function rr(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 or(i,A,t,e){const g=Math.max(1,Math.floor(e)),I=qB(i,A,t,1);if(I.length<=g)return Tn(I,t);let s=rr(i,t),B=1,n=qB(i,A,t,s);if(n.length>g)throw new Error(`SVGA atlas needs ${n.length} pages even at minimum scale, max pages ${g}`);for(let C=0;C<16;C++){const Q=(s+B)*.5,a=qB(i,A,t,Q);a.length<=g?(n=a,s=Q):B=Q}return Tn(n,t)}function qn(i){return i--,i|=i>>1,i|=i>>2,i|=i>>4,i|=i>>8,i|=i>>16,i+1}function hr(i,A){if(sa())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 cr(i){return i.getContext("2d")}function lr(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)),B=t.x,n=t.y,C=t.w,Q=t.h,a=Math.min(s,B),r=Math.min(s,n),E=Math.min(s,e-(B+C)),o=Math.min(s,g-(n+Q)),h=A.imageSmoothingEnabled;A.imageSmoothingEnabled=!1,a>0&&A.drawImage(i,B,n,1,Q,B-a,n,a,Q),E>0&&A.drawImage(i,B+C-1,n,1,Q,B+C,n,E,Q),r>0&&A.drawImage(i,B,n,C,1,B,n-r,C,r),o>0&&A.drawImage(i,B,n+Q-1,C,1,B,n+Q,C,o),a>0&&r>0&&A.drawImage(i,B,n,1,1,B-a,n-r,a,r),E>0&&r>0&&A.drawImage(i,B+C-1,n,1,1,B+C,n-r,E,r),a>0&&o>0&&A.drawImage(i,B,n+Q-1,1,1,B-a,n+Q,a,o),E>0&&o>0&&A.drawImage(i,B+C-1,n+Q-1,1,1,B+C,n+Q,E,o),A.imageSmoothingEnabled=h}async function dr(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 bC(i,A,t=4096,e=2,g){var I,s;if(i.size===0)throw new Error("No images to build atlas from");const B=Math.max(64,Math.min(t,(I=A.maxTextureSize)!=null?I:t)),n=or(i,e,B,(s=g==null?void 0:g.maxPages)!=null?s:4);if(n.length===0)throw new Error("No atlas pages built");const C=new Map,Q=[];for(let o=0;o<n.length;o++){const h=n[o],c=hr(h.atlasW,h.atlasH),f=cr(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+=TB){const y=h.rects.slice(w,w+TB);for(const p of y){const m=i.get(p.key);f.drawImage(m,p.x,p.y,p.w,p.h),lr(c,f,p,h.atlasW,h.atlasH,e)}w+TB<h.rects.length&&await Qr()}const l=(g==null?void 0:g.captureEncodedPng)===!0?dr(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 fr=Object.defineProperty,YC=(i,A)=>{for(var t in A)fr(i,t,{get:A[t],enumerable:!0})},VB=Math.pow(2,32),X=Math.pow(2,32)-1,ur=1,wr=2,Dr=4,$s=1,AB=2,tB=8,eB=16,iB=32,Vn=131072,Ns=1,gB=4,Rs=256,Us=512,ks=1024,Ms=2048,LC=-1,RA=0,EA=1,MA=class _C extends ArrayBuffer{constructor(A){super(A),this.fileStart=0,this.usedBytes=0}static fromArrayBuffer(A,t){const e=new _C(A.byteLength);return new Uint8Array(e).set(new Uint8Array(A)),e.fileStart=t,e}},Ys,sn,U,sA=(U=class{constructor(A,t,e){yB(this,Ys);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),B=new Uint8Array(e,g,I);s.set(B)}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"?zn(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=zn(this.mapUint8Array(t));return A!==void 0?this.position+=I-t:t!==e&&(this.position+=1),s}readInt64(){return this.readInt32()*VB+this.readUint32()}readUint64(){return this.readUint32()*VB+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 B=A;if(typeof A=="string"&&/:/.test(A)){const n=A.split(":");B=n[0],g=parseInt(n[1])}if(typeof B=="string"&&/,/.test(B)){const n=B.split(",");B=n[0],I=n[1]}switch(B){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(pB(this,Ys,sn).call(this,B)){const[,n]=B;for(let C=0;C<t.length;C++)this.writeType(n,t[C]);break}else{this.writeStruct(B,t);break}}g&&(this.position=s,this._realloc(g),this.position=s+g)}writeUint64(A){const t=Math.floor(A/VB);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 B=A;if(typeof B=="string"&&/:/.test(B)){const n=B.split(":");B=n[0],g=parseInt(n[1])}if(typeof B=="string"&&/,/.test(B)){const n=B.split(",");B=n[0],I=n[1]}switch(B){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(pB(this,Ys,sn).call(this,B)){const[,n,C]=B,Q=typeof C=="function"?C(t,this,B):typeof C=="string"&&t[C]!==void 0?parseInt(t[C]):typeof C=="number"?C:C==="*"?void 0:parseInt(C);if(typeof n=="string"){const a=n.replace(/(le|be)$/,"");let r;switch(/le$/.test(n)?r=2:/be$/.test(n)&&(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(n,t)}else for(e=[];!this.isEof();){const E=this.readType(n,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(n,t);if(!r)return;e[a]=r}}else for(e=[];;){const a=this.position;try{const r=this.readType(n,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}},Ys=new WeakSet,sn=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 zn(i){const A=[];for(let t=0;t<i.length;t++)A[t]=i[t];return String.fromCharCode.apply(void 0,A)}var Zs=new Date,IB=4,Zn=3,Wn=2,jn=1,pA=IB,d={setLogLevel(i){i===this.debug?pA=jn:i===this.info?pA=Wn:i===this.warn?pA=Zn:(this.error,pA=IB)},debug(i,A){console.debug===void 0&&(console.debug=console.log),jn>=pA&&console.debug("["+d.getDurationString(new Date().getTime()-Zs.getTime(),1e3)+"]","["+i+"]",A)},log(i,A){this.debug(i.msg)},info(i,A){Wn>=pA&&console.info("["+d.getDurationString(new Date().getTime()-Zs.getTime(),1e3)+"]","["+i+"]",A)},warn(i,A){Zn>=pA&&console.warn("["+d.getDurationString(new Date().getTime()-Zs.getTime(),1e3)+"]","["+i+"]",A)},error(i,A,t){t!=null&&t.onError?t.onError(i,A):IB>=pA&&console.error("["+d.getDurationString(new Date().getTime()-Zs.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 B=Math.floor(I/60);I-=B*60;let n=I*1e3;return I=Math.floor(I),n-=I*1e3,n=Math.floor(n),(t?"-":"")+s+":"+e(B,2)+":"+e(I,2)+"."+e(n,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 yr(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 sB=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 B=0;B<this.buffers.length;B++){const n=this.buffers[B];B===0?(e={start:n.fileStart,end:n.fileStart+n.byteLength},A.push(e),t+="["+e.start+"-"):e.end===n.fileStart?e.end=n.fileStart+n.byteLength:(e={start:n.fileStart,end:n.fileStart+n.byteLength},t+=A[A.length-1].end-1+"], ["+e.start+"-",A.push(e)),g+=n.usedBytes,I+=n.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]=yr(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}},Ls,et,G=(et=class{constructor(A=0){yB(this,Ls);this.size=A}get type(){var A;return(A=this.constructor.fourcc)!=null?A:wn(this,Ls)}set type(A){Dn(this,Ls,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 sB;this.write(t)}isEndOfBox(A){const t=A.getPosition(),e=this.start+this.size;return t===e}},Ls=new WeakMap,et.registryId=Symbol.for("BoxIdentifier"),et),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),pr=class extends D{parse(i){this.parseFullHeader(i),this.track_group_id=i.readUint32()}},mr=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()}}},Gr=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()}}},Fr=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)}},Bn=["boxes","entries","references","subsamples","items","item_infos","extents","associations","subsegments","ranges","seekLists","seekPoints","esd","levels"],Sr=["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 Nr(i,A){if(i&&!A)return!1;let t;for(t in i)if(!Bn.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(Sr.find(e=>e===t))continue;if(i[t]!==A[t])return!1}return!0}function JC(i,A){if(!Nr(i,A))return!1;for(let t=0;t<Bn.length;t++){const e=Bn[t];if(i[e]&&A[e]&&!JC(i[e],A[e]))return!1}return!0}function ln(i){let A=i;for(;A;){if("registryId"in A)return A.registryId;A=Object.getPrototypeOf(A)}}var Rr=i=>{const A=Symbol.for("SampleGroupEntryIdentifier");return ln(i)===A},Ur=i=>{const A=Symbol.for("SampleEntryIdentifier");return ln(i)===A},kr=i=>{const A=Symbol.for("BoxIdentifier");return ln(i)===A},BA={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};function Mr(i){const A={uuid:{},sampleEntry:{},sampleGroupEntry:{},box:{}};for(const[t,e]of Object.entries(i)){if(Rr(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(Ur(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(kr(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 BA.uuid={...A.uuid},BA.sampleEntry={...A.sampleEntry},BA.sampleGroupEntry={...A.sampleGroupEntry},BA.box={...A.box},BA}var rB={};function xr(i){return Object.entries(i).forEach(([A,t])=>rB[A]=t),rB}function br(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,B;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 n=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:LC,start:I,type:C};let Q=C;if(d.debug("BoxParser","Found box of type '"+C+"' and size "+n+" 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};B=br(i),s+=16,Q=B}if(n===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=n,n=i.readUint64(),s+=8}else if(n===0){if(t)n=t;else if(C!=="mdat")return d.error("BoxParser","Unlimited box size not supported for type: '"+C+"'"),e=new G(n),e.type=C,{code:EA,box:e,size:e.size}}if(n!==0&&n<s)return d.error("BoxParser","Box of type "+C+" has an invalid size "+n+" (too small to be a box)"),{code:RA,type:C,size:n,hdr_size:s,start:I};if(n!==0&&t&&n>t)return d.error("BoxParser","Box of type '"+C+"' has a size "+n+" greater than its container size "+t),{code:RA,type:C,size:n,hdr_size:s,start:I};if(n!==0&&I+n>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:n,hdr_size:s,start:I,original_size:g};if(A)return{code:EA,type:C,size:n,hdr_size:s,start:I};C in BA.box?e=new BA.box[C](n):C!=="uuid"?(d.warn("BoxParser",`Unknown box type: '${C}'`),e=new G(n),e.type=C,e.has_unparsed_data=!0):B in BA.uuid?e=new BA.uuid[B](n):(d.warn("BoxParser",`Unknown UUID box type: '${B}'`),e=new G(n),e.type=C,e.uuid=B,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}},gt,FA=(gt=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)}},gt.registryId=Symbol.for("SampleEntryIdentifier"),gt),On=class extends FA{},Cs=class extends FA{isMetadata(){return!0}},zA=class extends FA{isSubtitle(){return!0}},Yr=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)}},nA=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)}},dn=class extends FA{parse(i){this.parseHeader(i),this.parseFooter(i)}write(i){this.writeHeader(i),this.writeFooter(i)}},Xn=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}},It,HC=(It=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 Xn;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 Xn;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)}},It.fourcc="avcC",It),st,BB=(st=class extends G{constructor(){super(...arguments),this.box_name="MediaDataBox"}},st.fourcc="mdat",st),Bt,Lr=(Bt=class extends G{constructor(){super(...arguments),this.box_name="ItemDataBox"}},Bt.fourcc="idat",Bt),nt,_r=(nt=class extends G{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},nt.fourcc="free",nt),Ct,Jr=(Ct=class extends G{constructor(){super(...arguments),this.box_name="FreeSpaceBox"}},Ct.fourcc="skip",Ct),Qt,KC=(Qt=class extends D{constructor(){super(...arguments),this.box_name="HintMediaHeaderBox"}},Qt.fourcc="hmhd",Qt),at,nB=(at=class extends D{constructor(){super(...arguments),this.box_name="NullMediaHeaderBox"}},at.fourcc="nmhd",at),Et,Hr=(Et=class extends D{constructor(){super(...arguments),this.box_name="ObjectDescriptorBox"}},Et.fourcc="iods",Et),rt,Kr=(rt=class extends D{constructor(){super(...arguments),this.box_name="XMLBox"}},rt.fourcc="xml ",rt),ot,vr=(ot=class extends D{constructor(){super(...arguments),this.box_name="BinaryXMLBox"}},ot.fourcc="bxml",ot),ht,Tr=(ht=class extends D{constructor(){super(...arguments),this.box_name="ItemProtectionBox",this.sinfs=[]}get protections(){return this.sinfs}},ht.fourcc="ipro",ht),ct,nn=(ct=class extends M{constructor(){super(...arguments),this.box_name="MovieBox",this.traks=[],this.psshs=[],this.subBoxNames=["trak","pssh"]}},ct.fourcc="moov",ct),lt,vC=(lt=class extends M{constructor(){super(...arguments),this.box_name="TrackBox",this.samples=[]}},lt.fourcc="trak",lt),dt,qr=(dt=class extends M{constructor(){super(...arguments),this.box_name="EditBox"}},dt.fourcc="edts",dt),ft,TC=(ft=class extends M{constructor(){super(...arguments),this.box_name="MediaBox"}},ft.fourcc="mdia",ft),ut,qC=(ut=class extends M{constructor(){super(...arguments),this.box_name="MediaInformationBox"}},ut.fourcc="minf",ut),wt,VC=(wt=class extends M{constructor(){super(...arguments),this.box_name="DataInformationBox"}},wt.fourcc="dinf",wt),Dt,zC=(Dt=class extends M{constructor(){super(...arguments),this.box_name="SampleTableBox",this.sgpds=[],this.sbgps=[],this.subBoxNames=["sgpd","sbgp"]}},Dt.fourcc="stbl",Dt),yt,Cn=(yt=class extends M{constructor(){super(...arguments),this.box_name="MovieExtendsBox",this.trexs=[],this.subBoxNames=["trex"]}},yt.fourcc="mvex",yt),pt,ZC=(pt=class extends M{constructor(){super(...arguments),this.box_name="MovieFragmentBox",this.trafs=[],this.subBoxNames=["traf"]}},pt.fourcc="moof",pt),mt,WC=(mt=class extends M{constructor(){super(...arguments),this.box_name="TrackFragmentBox",this.truns=[],this.sgpds=[],this.sbgps=[],this.subBoxNames=["trun","sgpd","sbgp"]}},mt.fourcc="traf",mt),Gt,Vr=(Gt=class extends M{constructor(){super(...arguments),this.box_name="VTTCueBox"}},Gt.fourcc="vttc",Gt),Ft,zr=(Ft=class extends M{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessBox",this.tfras=[],this.subBoxNames=["tfra"]}},Ft.fourcc="mfra",Ft),St,Zr=(St=class extends M{constructor(){super(...arguments),this.box_name="AdditionalMetadataContainerBox"}},St.fourcc="meco",St),Nt,Wr=(Nt=class extends M{constructor(){super(...arguments),this.box_name="trackhintinformation",this.subBoxNames=["sdp ","rtp "]}},Nt.fourcc="hnti",Nt),Rt,jr=(Rt=class extends M{constructor(){super(...arguments),this.box_name="hintstatisticsbox",this.maxrs=[],this.subBoxNames=["maxr"]}},Rt.fourcc="hinf",Rt),Ut,Or=(Ut=class extends M{constructor(){super(...arguments),this.box_name="SubTrackBox"}},Ut.fourcc="strk",Ut),kt,Xr=(kt=class extends M{constructor(){super(...arguments),this.box_name="SubTrackDefinitionBox"}},kt.fourcc="strd",kt),Mt,Pr=(Mt=class extends M{constructor(){super(...arguments),this.box_name="ProtectionSchemeInfoBox"}},Mt.fourcc="sinf",Mt),xt,$r=(xt=class extends M{constructor(){super(...arguments),this.box_name="RestrictedSchemeInfoBox"}},xt.fourcc="rinf",xt),bt,Ao=(bt=class extends M{constructor(){super(...arguments),this.box_name="SchemeInformationBox"}},bt.fourcc="schi",bt),Yt,to=(Yt=class extends M{constructor(){super(...arguments),this.box_name="TrackGroupBox"}},Yt.fourcc="trgr",Yt),Lt,eo=(Lt=class extends M{constructor(){super(...arguments),this.box_name="UserDataBox",this.kinds=[],this.strks=[],this.subBoxNames=["kind","strk"]}},Lt.fourcc="udta",Lt),_t,io=(_t=class extends M{constructor(){super(...arguments),this.box_name="ItemPropertiesBox",this.ipmas=[],this.subBoxNames=["ipma"]}},_t.fourcc="iprp",_t),Jt,go=(Jt=class extends M{constructor(){super(...arguments),this.box_name="ItemPropertyContainerBox",this.hvcCs=[],this.ispes=[],this.claps=[],this.irots=[],this.subBoxNames=["hvcC","ispe","clap","irot"]}},Jt.fourcc="ipco",Jt),Ht,Io=(Ht=class extends M{constructor(){super(...arguments),this.box_name="GroupsListBox"}},Ht.fourcc="grpl",Ht),Kt,so=(Kt=class extends M{constructor(){super(...arguments),this.box_name="J2KHeaderInfoBox"}},Kt.fourcc="j2kH",Kt),vt,Bo=(vt=class extends M{constructor(){super(...arguments),this.box_name="ExtendedTypeBox",this.tycos=[],this.subBoxNames=["tyco"]}},vt.fourcc="etyp",vt),Tt,no=(Tt=class extends M{constructor(){super(...arguments),this.box_name="ProjectedOmniVideoBox",this.subBoxNames=["prfr"]}},Tt.fourcc="povd",Tt),qt,jC=(qt=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)}},qt.fourcc="dref",qt),Vt,OC=(Vt=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)}},Vt.fourcc="elng",Vt),zt,XC=(zt=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)}},zt.fourcc="ftyp",zt),Zt,PC=(Zt=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)}},Zt.fourcc="hdlr",Zt),Wt,$C=(Wt=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 B=0;B<s;B++){const n=A.readUint16();I.push({data:A.readUint8Array(n)})}}}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)}}},Wt.fourcc="hvcC",Wt),jt,AQ=(jt=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)}},jt.fourcc="mdhd",jt),Ot,tQ=(Ot=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)}},Ot.fourcc="mehd",Ot),Xt,Co=(Xt=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()))}},Xt.fourcc="infe",Xt),Pt,Qo=(Pt=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}}},Pt.fourcc="iinf",Pt),$t,ao=($t=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,B=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 n=A.readUint16();switch(this.base_offset_size){case 0:B=0;break;case 4:B=A.readUint32();break;case 8:B=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:B,construction_method:s,item_ID:I,data_reference_index:n,extents:C})}}},$t.fourcc="iloc",$t),Eo={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,ro=(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=Eo[t.type]:d.warn("BoxParser",`Unknown item reference type: '${t.type}'`);const g=this.version===0?new mr(t.type,t.size,e,t.hdr_size,t.start):new Gr(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),Ae,oo=(Ae=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()}},Ae.fourcc="pitm",Ae),te,ho=(te=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)}},te.fourcc="meta",te),ee,eQ=(ee=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)}},ee.fourcc="mfhd",ee),ie,iQ=(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),ge,co=(ge=class extends Cs{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.mime_format=A.readCString(),this.parseFooter(A)}},ge.fourcc="mett",ge),Ie,lo=(Ie=class extends Cs{parse(A){this.parseHeader(A),this.content_encoding=A.readCString(),this.namespace=A.readCString(),this.schema_location=A.readCString(),this.parseFooter(A)}},Ie.fourcc="metx",Ie),se,fo=(se=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)}},se.fourcc="av1C",se),Be,uo=(Be=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 rB){const e=new rB.MPEG4DescriptorParser;this.esd=e.parseOneDescriptor(new sA(t.buffer,0))}}},Be.fourcc="esds",Be),ne,wo=(ne=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)}}},ne.fourcc="vpcC",ne),Ce,Do=(Ce=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 B=this.held_bits>>this.num_held_bits-s&(1<<s)-1;return this.num_held_bits-=s,B}};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 B=t.extract_bits(6);t.stream_read_1_bytes(A);const n=t.extract_bits(2);this.general_constraint_info[s]=B<<2|n}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 B=t.extract_bits(1);this.ptl_sublayer_present_mask|=B<<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 B=[];this.nalu_arrays.push(B),t.stream_read_1_bytes(A),B.completeness=t.extract_bits(1),t.extract_bits(2),B.nalu_type=t.extract_bits(5);let n=1;B.nalu_type!==g&&B.nalu_type!==e&&(n=A.readUint16());for(let C=0;C<n;C++){const Q=A.readUint16();B.push({data:A.readUint8Array(Q),length:Q})}}}},Ce.fourcc="vvcC",Ce),Qe,yo=(Qe=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))}},Qe.fourcc="colr",Qe);function tt(i,A){let t=Number(i).toString(16);for(A=typeof A=="undefined"?2:A;t.length<A;)t="0"+t;return t}var lB=class extends T{getCodec(){const i=super.getCodec();return this.avcC?`${i}.${tt(this.avcC.AVCProfileIndication)}${tt(this.avcC.profile_compatibility)}${tt(this.avcC.AVCLevelIndication)}`:i}},ae,po=(ae=class extends lB{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},ae.fourcc="avc1",ae),Ee,mo=(Ee=class extends lB{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},Ee.fourcc="avc2",Ee),re,Go=(re=class extends lB{constructor(){super(...arguments),this.box_name="AVCSampleEntry"}},re.fourcc="avc3",re),oe,Fo=(oe=class extends lB{constructor(){super(...arguments),this.box_name="AVC2SampleEntry"}},oe.fourcc="avc4",oe),he,So=(he=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}},he.fourcc="av01",he),ce,No=(ce=class extends T{},ce.fourcc="dav1",ce),dB=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+=tt(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="."+tt(this.hvcC.general_constraint_indicator[I],0)+g,e=!0);i+=g}return i}},le,Ro=(le=class extends dB{constructor(){super(...arguments),this.box_name="HEVCSampleEntry"}},le.fourcc="hvc1",le),de,Uo=(de=class extends dB{},de.fourcc="hvc2",de),fe,ko=(fe=class extends dB{constructor(){super(...arguments),this.box_name="HEVCSampleEntry",this.colrs=[],this.subBoxNames=["colr"]}},fe.fourcc="hev1",fe),ue,Mo=(ue=class extends dB{},ue.fourcc="hev2",ue),we,xo=(we=class extends T{constructor(){super(...arguments),this.box_name="HEVCTileSampleSampleEntry"}},we.fourcc="hvt1",we),De,bo=(De=class extends T{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},De.fourcc="lhe1",De),ye,Yo=(ye=class extends T{constructor(){super(...arguments),this.box_name="LHEVCSampleEntry"}},ye.fourcc="lhv1",ye),pe,Lo=(pe=class extends T{},pe.fourcc="dvh1",pe),me,_o=(me=class extends T{},me.fourcc="dvhe",me),gQ=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,B=0;for(let n=0;n<=g;++n)for(s=s<<8|t[n],B+=8;B>=5;){const C=s>>B-5&31;A+=I[C],B-=5,s&=(1<<B)-1}B&&(s<<=5-B,A+=I[s&31])}}i+=A}return i}},Ge,Jo=(Ge=class extends gQ{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Ge.fourcc="vvc1",Ge),Fe,Ho=(Fe=class extends gQ{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Fe.fourcc="vvi1",Fe),Se,Ko=(Se=class extends T{constructor(){super(...arguments),this.box_name="VvcSampleEntry"}},Se.fourcc="vvs1",Se),Ne,vo=(Ne=class extends T{constructor(){super(...arguments),this.box_name="VvcNonVCLSampleEntry"}},Ne.fourcc="vvcN",Ne),IQ=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}`}},Re,To=(Re=class extends IQ{},Re.fourcc="vp08",Re),Ue,qo=(Ue=class extends IQ{},Ue.fourcc="vp09",Ue),ke,Vo=(ke=class extends T{},ke.fourcc="avs3",ke),Me,zo=(Me=class extends T{constructor(){super(...arguments),this.box_name="J2KSampleEntry"}},Me.fourcc="j2ki",Me),xe,Zo=(xe=class extends T{},xe.fourcc="mjp2",xe),be,Wo=(be=class extends T{},be.fourcc="mjpg",be),Ye,jo=(Ye=class extends T{constructor(){super(...arguments),this.box_name="UncompressedVideoSampleEntry"}},Ye.fourcc="uncv",Ye),Le,Oo=(Le=class extends T{constructor(){super(...arguments),this.box_name="MP4VisualSampleEntry"}},Le.fourcc="mp4v",Le),_e,Xo=(_e=class extends nA{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+"."+tt(t)+(e?"."+e:"")}else return A}},_e.fourcc="mp4a",_e),Je,Po=(Je=class extends nA{},Je.fourcc="m4ae",Je),He,$o=(He=class extends nA{},He.fourcc="ac-3",He),Ke,Ah=(Ke=class extends nA{},Ke.fourcc="ac-4",Ke),ve,th=(ve=class extends nA{},ve.fourcc="ec-3",ve),Te,eh=(Te=class extends nA{},Te.fourcc="Opus",Te),qe,ih=(qe=class extends nA{},qe.fourcc="mha1",qe),Ve,gh=(Ve=class extends nA{},Ve.fourcc="mha2",Ve),ze,Ih=(ze=class extends nA{},ze.fourcc="mhm1",ze),Ze,sh=(Ze=class extends nA{},Ze.fourcc="mhm2",Ze),We,Bh=(We=class extends nA{},We.fourcc="fLaC",We),je,nh=(je=class extends T{},je.fourcc="encv",je),Oe,Ch=(Oe=class extends nA{},Oe.fourcc="enca",Oe),Xe,Qh=(Xe=class extends zA{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Xe.fourcc="encu",Xe),Pe,ah=(Pe=class extends dn{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Pe.fourcc="encs",Pe),$e,Eh=($e=class extends dn{},$e.fourcc="mp4s",$e),Ai,rh=(Ai=class extends Yr{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},Ai.fourcc="enct",Ai),ti,oh=(ti=class extends Cs{constructor(){super(...arguments),this.subBoxNames=["sinf"],this.sinfs=[]}},ti.fourcc="encm",ti),ei,hh=(ei=class extends T{constructor(){super(...arguments),this.box_name="RestrictedVideoSampleEntry"}},ei.fourcc="resv",ei),ii,ch=(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),gi,sQ=(gi=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)}},gi.fourcc="stpp",gi),Ii,lh=(Ii=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}},Ii.fourcc="stxt",Ii),si,dh=(si=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)}},si.fourcc="tx3g",si),Bi,fh=(Bi=class extends Cs{parse(A){this.parseHeader(A),this.parseFooter(A)}},Bi.fourcc="wvtt",Bi),ni,uh=(ni=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)}}},ni.fourcc="sbgp",ni),Ci,wh=(Ci=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}}},Ci.fourcc="sdtp",Ci),Qi,Dh=(Qi=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 BA.sampleGroupEntry?g=new BA.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)}}},Qi.fourcc="sgpd",Qi),ai,yh=(ai=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)}}},ai.fourcc="sidx",ai),Ei,BQ=(Ei=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)}},Ei.fourcc="smhd",Ei),ri,nQ=(ri=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]}},ri.fourcc="stco",ri),oi,CQ=(oi=class extends D{constructor(){super(...arguments),this.box_name="SubtitleMediaHeaderBox"}},oi.fourcc="sthd",oi),hi,QQ=(hi=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++}}}},hi.fourcc="stsc",hi),ci,aQ=(ci=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 BA.sampleEntry?(I=new BA.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)}},ci.fourcc="stsd",ci),li,EQ=(li=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]}},li.fourcc="stsz",li),di,rQ=(di=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++}},di.fourcc="stts",di),fi,oQ=(fi=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)}},fi.fourcc="tfdt",fi),ui,hQ=(ui=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&$s?(this.base_data_offset=A.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&AB?(this.default_sample_description_index=A.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&tB?(this.default_sample_duration=A.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&eB?(this.default_sample_size=A.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&iB?(this.default_sample_flags=A.readUint32(),t+=4):this.default_sample_flags=0}write(A){this.version=0,this.size=4,this.flags&$s&&(this.size+=8),this.flags&AB&&(this.size+=4),this.flags&tB&&(this.size+=4),this.flags&eB&&(this.size+=4),this.flags&iB&&(this.size+=4),this.writeHeader(A),A.writeUint32(this.track_id),this.flags&$s&&A.writeUint64(this.base_data_offset),this.flags&AB&&A.writeUint32(this.default_sample_description_index),this.flags&tB&&A.writeUint32(this.default_sample_duration),this.flags&eB&&A.writeUint32(this.default_sample_size),this.flags&iB&&A.writeUint32(this.default_sample_flags)}},ui.fourcc="tfhd",ui),wi,cQ=(wi=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)}},wi.fourcc="tkhd",wi),Di,Qn=(Di=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)}},Di.fourcc="trex",Di),yi,lQ=(yi=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&Ns?(this.data_offset=A.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&gB?(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&Rs&&(this.sample_duration[e]=A.readUint32()),this.flags&Us&&(this.sample_size[e]=A.readUint32()),this.flags&ks&&(this.sample_flags[e]=A.readUint32()),this.flags&Ms&&(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&Ns&&(this.size+=4),this.flags&gB&&(this.size+=4),this.flags&Rs&&(this.size+=4*this.sample_duration.length),this.flags&Us&&(this.size+=4*this.sample_size.length),this.flags&ks&&(this.size+=4*this.sample_flags.length),this.flags&Ms&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(A),A.writeUint32(this.sample_count),this.flags&Ns&&(this.data_offset_position=A.getPosition(),A.writeInt32(this.data_offset)),this.flags&gB&&A.writeUint32(this.first_sample_flags);for(let t=0;t<this.sample_count;t++)this.flags&Rs&&A.writeUint32(this.sample_duration[t]),this.flags&Us&&A.writeUint32(this.sample_size[t]),this.flags&ks&&A.writeUint32(this.sample_flags[t]),this.flags&Ms&&(this.version===0?A.writeUint32(this.sample_composition_time_offset[t]):A.writeInt32(this.sample_composition_time_offset[t]))}},yi.fourcc="trun",yi),pi,dQ=(pi=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)}},pi.fourcc="url ",pi),mi,fQ=(mi=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)}},mi.fourcc="vmhd",mi),zB=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}},ph=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 sB,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 B=(a=e.nbSamplesPerFragment)!=null?a:s;if(s<=0||B<=0||g<=0){d.error("ISOFile",`Invalid segment options: nbSamples=${s}, nbSamplesPerFragment=${B}, sizePerSegment=${g}`);return}if(s<B&&(d.warn("ISOFile",`nbSamples (${s}) is less than nbSamplesPerFragment (${B}), setting nbSamples to nbSamplesPerFragment`),s=B),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 n=this.getTrackById(A);if(n){const r={id:A,user:t,trak:n,segmentStream:void 0,nb_samples:s,nb_samples_per_fragment:B,size_per_segment:g,rapAlignement:I,state:{lastFragmentSampleNumber:0,lastSegmentSampleNumber:0,accumulatedSize:0}};this.fragmentedTracks.push(r),n.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===LC){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],B=I.samples_size,n=I.mdia.mdhd.timescale,C=I.samples_duration,Q=B*8*n/C,a={samples_duration:C,bitrate:Q,size:B,timescale:n,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 nA?(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 On?(a.type="metadata",e.hintTracks.push(a)):s instanceof Cs?(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,B=s-e.state.lastFragmentSampleNumber>e.nb_samples_per_fragment,n=s-e.state.lastSegmentSampleNumber>e.nb_samples;let C=B||s%e.nb_samples_per_fragment===0,Q=n||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){B?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)&&(n?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 B of s){if(e.length&&t)return;g(B)}};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 n=0;n<e.samples.length;n++){const C=e.samples[n];if(n===0)I=0,s=C.timescale;else if(C.cts>A*C.timescale){I=n-1;break}t&&C.is_sync&&(g=n)}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 B=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: "+B),{offset:B,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 B=this.seekTrack(A,t,s);B.offset<g.offset&&(g.offset=B.offset),B.time<g.time&&(g.time=B.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(!JC(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,B=this.createMoof(I);B.write(s),B.trafs[0].truns[0].data_offset=B.size+8,d.debug("MP4Box","Adjusting data_offset with new value "+B.trafs[0].truns[0].data_offset),s.adjustUint32(B.trafs[0].truns[0].data_offset_position,B.trafs[0].truns[0].data_offset);const n=new BB;n.stream=new sB;let C=0;for(const Q of I)if(Q.data){const a=MA.fromArrayBuffer(Q.data.buffer,C);n.stream.insertBuffer(a),C+=Q.data.byteLength}return n.write(s),s}static writeInitializationSegment(A,t,e){var s,B;d.debug("ISOFile","Generating initialization segment");const g=new sA;A.write(g);const I=t.addBox(new Cn);if(e){const n=I.addBox(new tQ);n.fragment_duration=e}for(let n=0;n<t.traks.length;n++){const C=I.addBox(new Qn);C.track_id=t.traks[n].tkhd.track_id,C.default_sample_description_index=1,C.default_sample_duration=(B=(s=t.traks[n].samples[0])==null?void 0:s.duration)!=null?B: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 nn;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 B=t.mdia.minf.stbl.ctts;B&&(B.sample_counts=[],B.sample_offsets=[]);const n=t.mdia.minf.stbl.stss,C=t.mdia.minf.stbl.boxes.indexOf(n);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 B=e[s].grouping_type+"/"+e[s].grouping_type_parameter,n=new zB(e[s].grouping_type,e[s].grouping_type_parameter,e[s]);t&&(t.sample_groups_info[B]=n),A.sample_groups_info[B]||(A.sample_groups_info[B]=n);for(let C=0;C<g.length;C++)g[C].grouping_type===e[s].grouping_type&&(n.description=g[C],n.description.used=!0);if(I)for(let C=0;C<I.length;C++)I[C].grouping_type===e[s].grouping_type&&(n.fragment_description=I[C],n.fragment_description.used=!0,n.is_fragment=!0)}if(t){if(I){for(let s=0;s<I.length;s++)if(!I[s].used&&I[s].version>=2){const B=I[s].grouping_type+"/0",n=new zB(I[s].grouping_type,0);n.is_fragment=!0,t.sample_groups_info[B]||(t.sample_groups_info[B]=n)}}}else for(let s=0;s<g.length;s++)if(!g[s].used&&g[s].version>=2){const B=g[s].grouping_type+"/0",n=new zB(g[s].grouping_type,0);A.sample_groups_info[B]||(A.sample_groups_info[B]=n)}}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 B;t.sample_groups[I].group_description_index>65535?B=(t.sample_groups[I].group_description_index>>16)-1:B=t.sample_groups[I].group_description_index-1,s&&B>=0&&(t.sample_groups[I].description=s.entries[B])}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,B;A.samples=[],A.samples_duration=0,A.samples_size=0;const n=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,B=C.samples_per_chunk[e],s=0,e+1<C.first_chunk.length?I=C.first_chunk[e+1]-1:I=1/0):t<B?(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,B+=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=n.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 B=s;for(let n=0;n<B.trafs.length;n++){const C=B.trafs[n],Q=this.getTrackById(C.tfhd.track_id),a=this.getTrexById(C.tfhd.track_id);C.tfhd.flags&AB?A=C.tfhd.default_sample_description_index:A=a?a.default_sample_description_index:1,C.tfhd.flags&tB?t=C.tfhd.default_sample_duration:t=a?a.default_sample_duration:0,C.tfhd.flags&eB?e=C.tfhd.default_sample_size:e=a?a.default_sample_size:0,C.tfhd.flags&iB?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&ks?c=E.sample_flags[o]:o===0&&E.flags&gB&&(c=E.first_sample_flags);let f=e;E.flags&Us&&(f=E.sample_size[o]),Q.samples_size+=f;let l=t;E.flags&Rs&&(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&Ms&&(w=u+E.sample_composition_time_offset[o]);const y=!!(C.tfhd.flags&$s),p=!!(C.tfhd.flags&Vn),m=!!(E.flags&Ns);let N=0;y?N=C.tfhd.base_data_offset:p||r===0?N=B.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,B;if(I>-1)s=g.buffers[I],B=s.fileStart;else for(const n of this.mdats){if(!n.stream){d.debug("ISOFile","mdat stream not yet fully read for #"+this.mdats.indexOf(n)+" mdat");continue}if(I=n.stream.findPosition(!0,e.offset+e.alreadyRead-n.start-n.hdr_size,!1),I>-1){g=n.stream,s=n.stream.buffers[I],B=n.start+n.hdr_size+s.fileStart;break}}if(s){const n=s.byteLength-(e.offset+e.alreadyRead-B);if(e.size-e.alreadyRead<=n)return d.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-B)+" read size: "+(e.size-e.alreadyRead)+" full size: "+e.size+")"),sA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-B,e.size-e.alreadyRead),s.usedBytes+=e.size-e.alreadyRead,g.logBufferLevel(),e.alreadyRead=e.size,e;if(n===0)return;d.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+e.alreadyRead+" offset: "+(e.offset+e.alreadyRead-B)+" read size: "+n+" full size: "+e.size+")"),sA.memcpy(e.data.buffer,e.alreadyRead,s,e.offset+e.alreadyRead-B,n),e.alreadyRead+=n,s.usedBytes+=n,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],B=A[s.item_ID];s.data_reference_index!==0&&(d.warn("Item storage with reference to other files: not supported"),B.source=e.dinf.boxes[s.data_reference_index-1]),B.extents=[],B.size=0;for(let n=0;n<s.extents.length;n++)B.extents[n]={offset:s.extents[n].extent_offset+s.base_offset,length:s.extents[n].extent_length,alreadyRead:0},s.construction_method===1&&(B.extents[n].offset+=e.idat.start+e.idat.hdr_size),B.size+=B.extents[n].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 B=0;B<s.references.length;B++)A[s.from_item_ID].ref_to.push({type:s.type,id:s.references[B]})}if(e.iprp)for(let I=0;I<e.iprp.ipmas.length;I++){const s=e.iprp.ipmas[I];for(let B=0;B<s.associations.length;B++){const n=s.associations[B],C=(g=A[n.id])!=null?g:t[n.id];if(C){C.properties===void 0&&(C.properties={boxes:[]});for(let Q=0;Q<n.props.length;Q++){const a=n.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],B=s.byteLength-(g.offset+g.alreadyRead-s.fileStart);if(g.length-g.alreadyRead<=B)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: "+B+" full extent size: "+g.length+" full item size: "+t.size+")"),sA.memcpy(t.data.buffer,t.alreadyRead,s,g.offset+g.alreadyRead-s.fileStart,B),g.alreadyRead+=B,t.alreadyRead+=B,(!this.parsingMdat||this.discardMdatData)&&(s.usedBytes+=B),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 BB(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 sB;for(let I=e;I<=g;I++){const s=this.stream.buffers[I],B=I===e?t.start+t.hdr_size-s.fileStart:0,n=I===g?t.start+t.size-s.fileStart:s.byteLength;if(n>B){d.debug("ISOFile","Transferring 'mdat' data from buffer #"+I+" ("+B+" to "+n+")");const C=n-B,Q=new MA(C),a=t.stream.getAbsoluteEndPosition();sA.memcpy(Q,0,s,B,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 XC);t.major_brand=A.brands&&A.brands[0]||"iso4",t.minor_version=0,t.compatible_brands=A.brands||["iso4"];const e=this.addBox(new nn);e.addBox(new Cn);const g=e.addBox(new iQ);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 vC);this.moov.mvhd.next_track_id=t.id+1;const g=e.addBox(new cQ);g.flags=ur|wr|Dr,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 TC),s=I.addBox(new AQ);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 B=I.addBox(new PC);B.handler=t.hdlr||"vide",B.name=t.name||"Track created with MP4Box.js";const n=I.addBox(new OC);n.extended_language=t.language||"fr-FR";const C=I.addBox(new qC),Q=BA.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 fQ);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 HC(t.avcDecoderConfigRecord.byteLength)).parse(new sA(t.avcDecoderConfigRecord)):t.hevcDecoderConfigRecord&&p.addBox(new $C(t.hevcDecoderConfigRecord.byteLength)).parse(new sA(t.hevcDecoderConfigRecord))}else if(a instanceof nA){const p=a,m=C.addBox(new BQ);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 On?C.addBox(new KC):a instanceof zA?(C.addBox(new CQ),a instanceof sQ&&(a.namespace=t.namespace||"nonamespace",a.schema_location=t.schema_location||"",a.auxiliary_mime_types=t.auxiliary_mime_types||"")):a instanceof Cs?C.addBox(new nB):a instanceof dn?C.addBox(new nB):C.addBox(new nB);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 VC).addBox(new jC),o=new dQ;o.flags=1,E.addEntry(o);const h=C.addBox(new zC);h.addBox(new aQ).addEntry(a);const f=h.addBox(new rQ);f.sample_counts=[],f.sample_deltas=[];const l=h.addBox(new QQ);l.first_chunk=[],l.samples_per_chunk=[],l.sample_description_index=[];const u=h.addBox(new nQ);u.chunk_offsets=[];const w=h.addBox(new EQ);w.sample_sizes=[];const y=this.moov.mvex.addBox(new Qn);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:B=!1,is_leading:n=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:B,is_leading:n,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 BB);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 ZC,I=g.addBox(new eQ);I.sequence_number=++this.nextMoofNumber;const s=g.addBox(new WC),B=s.addBox(new hQ);B.track_id=t,B.flags=Vn;const n=s.addBox(new oQ);n.baseMediaDecodeTime=A[0].dts-(e.first_dts||0);const C=s.addBox(new lQ);C.flags=Ns|Rs|Us|ks|Ms,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 mh(i=!1,A){return new ph(A,!i)}var uQ={};YC(uQ,{Descriptor:()=>ZA,ES_Descriptor:()=>pQ,MPEG4DescriptorParser:()=>Rh});var wQ=3,oB=4,fn=5,DQ=6,ZA=class yQ{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 "+(CB[e]||"Descriptor "+e)+", size "+t+" at position "+A.getPosition());const I=CB[e]?new Nh[CB[e]](t):new yQ(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)}}},pQ=class extends ZA{constructor(i){super(wQ,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(oB);return i?i.oti:0}getAudioConfig(){const i=this.findDescriptor(oB);if(!i)return;const A=i.findDescriptor(fn);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}}},Gh=class extends ZA{constructor(i){super(oB,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)}},Fh=class extends ZA{constructor(i){super(fn,i)}},Sh=class extends ZA{constructor(i){super(DQ,i)}},Nh={Descriptor:ZA,ES_Descriptor:pQ,DecoderConfigDescriptor:Gh,DecoderSpecificInfo:Fh,SLConfigDescriptor:Sh},CB={[wQ]:"ES_Descriptor",[oB]:"DecoderConfigDescriptor",[fn]:"DecoderSpecificInfo",[DQ]:"SLConfigDescriptor"},Rh=class{constructor(){this.parseOneDescriptor=ZA.prototype.parseOneDescriptor}getDescriptorName(i){return CB[i]}},mQ={};YC(mQ,{CoLLBox:()=>Th,ItemContentIDPropertyBox:()=>dd,OpusSampleEntry:()=>eh,SmDmBox:()=>hl,a1lxBox:()=>Uh,a1opBox:()=>kh,ac_3SampleEntry:()=>$o,ac_4SampleEntry:()=>Ah,aebrBox:()=>Bc,afbrBox:()=>nc,albcBox:()=>Cc,alstSampleGroupEntry:()=>Zl,altrBox:()=>Qc,auxCBox:()=>Mh,av01SampleEntry:()=>So,av1CBox:()=>fo,avc1SampleEntry:()=>po,avc2SampleEntry:()=>mo,avc3SampleEntry:()=>Go,avc4SampleEntry:()=>Fo,avcCBox:()=>HC,avllSampleGroupEntry:()=>Wl,avs3SampleEntry:()=>Vo,avssSampleGroupEntry:()=>jl,brstBox:()=>ac,btrtBox:()=>xh,bxmlBox:()=>vr,ccstBox:()=>bh,cdefBox:()=>Yh,clapBox:()=>Lh,clefBox:()=>$c,clliBox:()=>_h,cmexBox:()=>Jh,cminBox:()=>Hh,cmpdBox:()=>Kh,co64Box:()=>vh,colrBox:()=>yo,coviBox:()=>zh,cprtBox:()=>Zh,cschBox:()=>Wh,cslgBox:()=>jh,cttsBox:()=>Oh,dOpsBox:()=>ic,dac3Box:()=>Xh,dataBox:()=>Ds,dav1SampleEntry:()=>No,dec3Box:()=>Ph,dfLaBox:()=>$h,dimmBox:()=>Ac,dinfBox:()=>VC,dmax:()=>tc,dmedBox:()=>ec,dobrBox:()=>Ec,drefBox:()=>jC,drepBox:()=>gc,dtrtSampleGroupEntry:()=>Ol,dvh1SampleEntry:()=>Lo,dvheSampleEntry:()=>_o,ec_3SampleEntry:()=>th,edtsBox:()=>qr,elngBox:()=>OC,elstBox:()=>Ic,emsgBox:()=>sc,encaSampleEntry:()=>Ch,encmSampleEntry:()=>oh,encsSampleEntry:()=>ah,enctSampleEntry:()=>rh,encuSampleEntry:()=>Qh,encvSampleEntry:()=>nh,enofBox:()=>tl,eqivBox:()=>rc,esdsBox:()=>uo,etypBox:()=>Bo,fLaCSampleEntry:()=>Bh,favcBox:()=>oc,fielBox:()=>pc,fobrBox:()=>hc,freeBox:()=>_r,frmaBox:()=>mc,ftypBox:()=>XC,grplBox:()=>Io,hdlrBox:()=>PC,hev1SampleEntry:()=>ko,hev2SampleEntry:()=>Mo,hinfBox:()=>jr,hmhdBox:()=>KC,hntiBox:()=>Wr,hvc1SampleEntry:()=>Ro,hvc2SampleEntry:()=>Uo,hvcCBox:()=>$C,hvt1SampleEntry:()=>xo,iaugBox:()=>cc,idatBox:()=>Lr,iinfBox:()=>Qo,ilocBox:()=>ao,ilstBox:()=>el,imirBox:()=>Gc,infeBox:()=>Co,iodsBox:()=>Hr,ipcoBox:()=>go,ipmaBox:()=>Fc,iproBox:()=>Tr,iprpBox:()=>io,irefBox:()=>ro,irotBox:()=>Sc,ispeBox:()=>Nc,itaiBox:()=>Rc,j2kHBox:()=>so,j2kiSampleEntry:()=>zo,keysBox:()=>il,kindBox:()=>Uc,levaBox:()=>kc,lhe1SampleEntry:()=>bo,lhv1SampleEntry:()=>Yo,lhvCBox:()=>Mc,lselBox:()=>xc,m4aeSampleEntry:()=>Po,maxrBox:()=>bc,mdatBox:()=>BB,mdcvBox:()=>Yc,mdhdBox:()=>AQ,mdiaBox:()=>TC,mecoBox:()=>Zr,mehdBox:()=>tQ,metaBox:()=>ho,mettSampleEntry:()=>co,metxSampleEntry:()=>lo,mfhdBox:()=>eQ,mfraBox:()=>zr,mfroBox:()=>Lc,mha1SampleEntry:()=>ih,mha2SampleEntry:()=>gh,mhm1SampleEntry:()=>Ih,mhm2SampleEntry:()=>sh,minfBox:()=>qC,mjp2SampleEntry:()=>Zo,mjpgSampleEntry:()=>Wo,moofBox:()=>ZC,moovBox:()=>nn,mp4aSampleEntry:()=>Xo,mp4sSampleEntry:()=>Eh,mp4vSampleEntry:()=>Oo,mskCBox:()=>_c,msrcTrackGroupTypeBox:()=>bl,mvexBox:()=>Cn,mvhdBox:()=>iQ,mvifSampleGroupEntry:()=>Xl,nmhdBox:()=>nB,npckBox:()=>Jc,numpBox:()=>Hc,padbBox:()=>vc,panoBox:()=>lc,paspBox:()=>Tc,paylBox:()=>qc,paytBox:()=>Vc,pdinBox:()=>zc,piffLsmBox:()=>Ed,piffPsshBox:()=>rd,piffSencBox:()=>od,piffTencBox:()=>hd,piffTfrfBox:()=>cd,piffTfxdBox:()=>ld,pitmBox:()=>oo,pixiBox:()=>Zc,pmaxBox:()=>Wc,povdBox:()=>no,prdiBox:()=>jc,prfrBox:()=>Oc,prftBox:()=>Xc,prgrBox:()=>Dc,profBox:()=>gl,prolSampleGroupEntry:()=>Pl,psshBox:()=>Pc,pymdBox:()=>yc,rapSampleGroupEntry:()=>$l,rashSampleGroupEntry:()=>Ad,resvSampleEntry:()=>hh,rinfBox:()=>$r,rollSampleGroupEntry:()=>td,rtp_Box:()=>Bl,saioBox:()=>nl,saizBox:()=>Cl,sbgpBox:()=>uh,sbpmBox:()=>al,sbttSampleEntry:()=>ch,schiBox:()=>Ao,schmBox:()=>El,scifSampleGroupEntry:()=>ed,scnmSampleGroupEntry:()=>id,sdp_Box:()=>rl,sdtpBox:()=>wh,seigSampleGroupEntry:()=>gd,sencBox:()=>ol,sgpdBox:()=>Dh,sidxBox:()=>yh,sinfBox:()=>Pr,skipBox:()=>Jr,slidBox:()=>dc,smhdBox:()=>BQ,sratBox:()=>cl,ssixBox:()=>ll,stblBox:()=>zC,stcoBox:()=>nQ,stdpBox:()=>dl,sterBox:()=>fc,sthdBox:()=>CQ,stppSampleEntry:()=>sQ,strdBox:()=>Xr,striBox:()=>fl,strkBox:()=>Or,stsaSampleGroupEntry:()=>Id,stscBox:()=>QQ,stsdBox:()=>aQ,stsgBox:()=>ul,stshBox:()=>wl,stssBox:()=>Dl,stszBox:()=>EQ,sttsBox:()=>rQ,stviBox:()=>yl,stxtSampleEntry:()=>lh,stypBox:()=>pl,stz2Box:()=>ml,subsBox:()=>Gl,syncSampleGroupEntry:()=>sd,taicBox:()=>Fl,taptBox:()=>Il,teleSampleGroupEntry:()=>Bd,tencBox:()=>Sl,tfdtBox:()=>oQ,tfhdBox:()=>hQ,tfraBox:()=>Nl,tkhdBox:()=>cQ,tmaxBox:()=>Rl,tminBox:()=>Ul,totlBox:()=>kl,tpayBox:()=>Ml,tpylBox:()=>xl,trafBox:()=>WC,trakBox:()=>vC,trefBox:()=>Yl,trepBox:()=>Ll,trexBox:()=>Qn,trgrBox:()=>to,trpyBox:()=>_l,trunBox:()=>lQ,tsasSampleGroupEntry:()=>nd,tsclSampleGroupEntry:()=>Cd,tselBox:()=>Jl,tsynBox:()=>uc,tx3gSampleEntry:()=>dh,txtcBox:()=>Hl,tycoBox:()=>Kl,udesBox:()=>vl,udtaBox:()=>eo,uncCBox:()=>Tl,uncvSampleEntry:()=>jo,urlBox:()=>dQ,urnBox:()=>ql,viprSampleGroupEntry:()=>Qd,vmhdBox:()=>fQ,vp08SampleEntry:()=>To,vp09SampleEntry:()=>qo,vpcCBox:()=>wo,vttCBox:()=>Vl,vttcBox:()=>Vr,vvc1SampleEntry:()=>Jo,vvcCBox:()=>Do,vvcNSampleEntry:()=>vo,vvi1SampleEntry:()=>Ho,vvnCBox:()=>zl,vvs1SampleEntry:()=>Ko,waveBox:()=>sl,wbbrBox:()=>wc,wvttSampleEntry:()=>fh,xmlBox:()=>Kr});var Gi,Uh=(Gi=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()}},Gi.fourcc="a1lx",Gi),Fi,kh=(Fi=class extends G{constructor(){super(...arguments),this.box_name="OperatingPointSelectorProperty"}parse(A){this.op_index=A.readUint8()}},Fi.fourcc="a1op",Fi),Si,Mh=(Si=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)}},Si.fourcc="auxC",Si),Ni,xh=(Ni=class extends G{constructor(){super(...arguments),this.box_name="BitRateBox"}parse(A){this.bufferSizeDB=A.readUint32(),this.maxBitrate=A.readUint32(),this.avgBitrate=A.readUint32()}},Ni.fourcc="btrt",Ni),Ri,bh=(Ri=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()}},Ri.fourcc="ccst",Ri),Ui,Yh=(Ui=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())}},Ui.fourcc="cdef",Ui),ki,Lh=(ki=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()}},ki.fourcc="clap",ki),Mi,_h=(Mi=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()}},Mi.fourcc="clli",Mi),xi,Jh=(xi=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())}},xi.fourcc="cmex",xi),bi,Hh=(bi=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())}},bi.fourcc="cmin",bi),Yi,Kh=(Yi=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())}}},Yi.fourcc="cmpd",Yi),Li,vh=(Li=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])}},Li.fourcc="co64",Li),_i,Th=(_i=class extends D{constructor(){super(...arguments),this.box_name="ContentLightLevelBox"}parse(A){this.parseFullHeader(A),this.maxCLL=A.readUint16(),this.maxFALL=A.readUint16()}},_i.fourcc="CoLL",_i),qh=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}},Vh=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}},Ji,zh=(Ji=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 Vh;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 qh;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}},Ji.fourcc="covi",Ji),Hi,Zh=(Hi=class extends D{constructor(){super(...arguments),this.box_name="CopyrightBox"}parse(A){this.parseFullHeader(A),this.parseLanguage(A),this.notice=A.readCString()}},Hi.fourcc="cprt",Hi),Ki,Wh=(Ki=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())}},Ki.fourcc="csch",Ki),cs=2147483647,vi,jh=(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>cs||this.leastDecodeToDisplayDelta>cs||this.greatestDecodeToDisplayDelta>cs||this.compositionStartTime>cs||this.compositionEndTime>cs)&&(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),Ti,Oh=(Ti=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++}},Ti.fourcc="ctts",Ti),qi,Xh=(qi=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}},qi.fourcc="dac3",qi),Vi,Ph=(Vi=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(),B={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(B),B.num_dep_sub>0&&(B.chan_loc=(s&1)<<8|A.readUint8())}}},Vi.fourcc="dec3",Vi),zi,$h=(zi=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 B=Math.min(s&t,I.length-1);B?A.readUint8Array(A.readUint24()):(A.readUint8Array(13),this.samplerate=A.readUint32()>>12,A.readUint8Array(20)),g.push(I[B])}while(s&e);this.numMetadataBlocks=g.length+" ("+g.join(", ")+")"}},zi.fourcc="dfLa",zi),Zi,Ac=(Zi=class extends G{constructor(){super(...arguments),this.box_name="hintimmediateBytesSent"}parse(A){this.bytessent=A.readUint64()}},Zi.fourcc="dimm",Zi),Wi,tc=(Wi=class extends G{constructor(){super(...arguments),this.box_name="hintlongestpacket"}parse(A){this.time=A.readUint32()}},Wi.fourcc="dmax",Wi),ji,ec=(ji=class extends G{constructor(){super(...arguments),this.box_name="hintmediaBytesSent"}parse(A){this.bytessent=A.readUint64()}},ji.fourcc="dmed",ji),Oi,ic=(Oi=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])}}},Oi.fourcc="dOps",Oi),Xi,gc=(Xi=class extends G{constructor(){super(...arguments),this.box_name="hintrepeatedBytesSent"}parse(A){this.bytessent=A.readUint64()}},Xi.fourcc="drep",Xi),Pi,Ic=(Pi=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)}}},Pi.fourcc="elst",Pi),$i,sc=($i=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)}},$i.fourcc="emsg",$i),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)}}},Ag,Bc=(Ag=class extends tA{constructor(){super(...arguments),this.box_name="Auto exposure bracketing"}},Ag.fourcc="aebr",Ag),tg,nc=(tg=class extends tA{constructor(){super(...arguments),this.box_name="Flash exposure information"}},tg.fourcc="afbr",tg),eg,Cc=(eg=class extends tA{constructor(){super(...arguments),this.box_name="Album collection"}},eg.fourcc="albc",eg),ig,Qc=(ig=class extends tA{constructor(){super(...arguments),this.box_name="Alternative entity"}},ig.fourcc="altr",ig),gg,ac=(gg=class extends tA{constructor(){super(...arguments),this.box_name="Burst image"}},gg.fourcc="brst",gg),Ig,Ec=(Ig=class extends tA{constructor(){super(...arguments),this.box_name="Depth of field bracketing"}},Ig.fourcc="dobr",Ig),sg,rc=(sg=class extends tA{constructor(){super(...arguments),this.box_name="Equivalent entity"}},sg.fourcc="eqiv",sg),Bg,oc=(Bg=class extends tA{constructor(){super(...arguments),this.box_name="Favorites collection"}},Bg.fourcc="favc",Bg),ng,hc=(ng=class extends tA{constructor(){super(...arguments),this.box_name="Focus bracketing"}},ng.fourcc="fobr",ng),Cg,cc=(Cg=class extends tA{constructor(){super(...arguments),this.box_name="Image item with an audio track"}},Cg.fourcc="iaug",Cg),Qg,lc=(Qg=class extends tA{constructor(){super(...arguments),this.box_name="Panorama"}},Qg.fourcc="pano",Qg),ag,dc=(ag=class extends tA{constructor(){super(...arguments),this.box_name="Slideshow"}},ag.fourcc="slid",ag),Eg,fc=(Eg=class extends tA{constructor(){super(...arguments),this.box_name="Stereo"}},Eg.fourcc="ster",Eg),rg,uc=(rg=class extends tA{constructor(){super(...arguments),this.box_name="Time-synchronized capture"}},rg.fourcc="tsyn",rg),og,wc=(og=class extends tA{constructor(){super(...arguments),this.box_name="White balance bracketing"}},og.fourcc="wbbr",og),hg,Dc=(hg=class extends tA{constructor(){super(...arguments),this.box_name="Progressive rendering"}},hg.fourcc="prgr",hg),cg,yc=(cg=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()}},cg.fourcc="pymd",cg),lg,pc=(lg=class extends G{constructor(){super(...arguments),this.box_name="FieldHandlingBox"}parse(A){this.fieldCount=A.readUint8(),this.fieldOrdering=A.readUint8()}},lg.fourcc="fiel",lg),dg,mc=(dg=class extends G{constructor(){super(...arguments),this.box_name="OriginalFormatBox"}parse(A){this.data_format=A.readString(4)}},dg.fourcc="frma",dg),fg,Gc=(fg=class extends G{constructor(){super(...arguments),this.box_name="ImageMirror"}parse(A){const t=A.readUint8();this.reserved=t>>7,this.axis=t&1}},fg.fourcc="imir",fg),ug,Fc=(ug=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 B=0;B<s;B++){const n=A.readUint8();I.push({essential:(n&128)>>7===1,property_index:this.flags&1?(n&127)<<8|A.readUint8():n&127})}this.associations.push({id:g,props:I})}}},ug.fourcc="ipma",ug),wg,Sc=(wg=class extends G{constructor(){super(...arguments),this.box_name="ImageRotation"}parse(A){this.angle=A.readUint8()&3}},wg.fourcc="irot",wg),Dg,Nc=(Dg=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()}},Dg.fourcc="ispe",Dg),yg,Rc=(yg=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}},yg.fourcc="itai",yg),pg,Uc=(pg=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)}},pg.fourcc="kind",pg),mg,kc=(mg=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}`)}}}},mg.fourcc="leva",mg),Gg,Mc=(Gg=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 B=0;B<s;B++){const n=A.readUint16();I.push({data:A.readUint8Array(n)})}}}},Gg.fourcc="lhvC",Gg),Fg,xc=(Fg=class extends G{constructor(){super(...arguments),this.box_name="LayerSelectorProperty"}parse(A){this.layer_id=A.readUint16()}},Fg.fourcc="lsel",Fg),Sg,bc=(Sg=class extends G{constructor(){super(...arguments),this.box_name="hintmaxrate"}parse(A){this.period=A.readUint32(),this.bytes=A.readUint32()}},Sg.fourcc="maxr",Sg),Ws=class{constructor(i,A){this.x=i,this.y=A}toString(){return"("+this.x+","+this.y+")"}},Ng,Yc=(Ng=class extends G{constructor(){super(...arguments),this.box_name="MasteringDisplayColourVolumeBox"}parse(A){this.display_primaries=[],this.display_primaries[0]=new Ws(A.readUint16(),A.readUint16()),this.display_primaries[1]=new Ws(A.readUint16(),A.readUint16()),this.display_primaries[2]=new Ws(A.readUint16(),A.readUint16()),this.white_point=new Ws(A.readUint16(),A.readUint16()),this.max_display_mastering_luminance=A.readUint32(),this.min_display_mastering_luminance=A.readUint32()}},Ng.fourcc="mdcv",Ng),Rg,Lc=(Rg=class extends D{constructor(){super(...arguments),this.box_name="MovieFragmentRandomAccessOffsetBox"}parse(A){this.parseFullHeader(A),this._size=A.readUint32()}},Rg.fourcc="mfro",Rg),Ug,_c=(Ug=class extends D{constructor(){super(...arguments),this.box_name="MaskConfigurationProperty"}parse(A){this.parseFullHeader(A),this.bits_per_pixel=A.readUint8()}},Ug.fourcc="mskC",Ug),kg,Jc=(kg=class extends G{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint32()}},kg.fourcc="npck",kg),Mg,Hc=(Mg=class extends G{constructor(){super(...arguments),this.box_name="hintPacketsSent"}parse(A){this.packetssent=A.readUint64()}},Mg.fourcc="nump",Mg),Kc=class{constructor(i,A){this.pad1=i,this.pad2=A}},xg,vc=(xg=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 Kc(I,s))}}},xg.fourcc="padb",xg),bg,Tc=(bg=class extends G{constructor(){super(...arguments),this.box_name="PixelAspectRatioBox"}parse(A){this.hSpacing=A.readUint32(),this.vSpacing=A.readUint32()}},bg.fourcc="pasp",bg),Yg,qc=(Yg=class extends G{constructor(){super(...arguments),this.box_name="CuePayloadBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},Yg.fourcc="payl",Yg),Lg,Vc=(Lg=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)}},Lg.fourcc="payt",Lg),_g,zc=(_g=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()}},_g.fourcc="pdin",_g),Jg,Zc=(Jg=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()}},Jg.fourcc="pixi",Jg),Hg,Wc=(Hg=class extends G{constructor(){super(...arguments),this.box_name="hintlargestpacket"}parse(A){this.bytes=A.readUint32()}},Hg.fourcc="pmax",Hg),Kg,jc=(Kg=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()}},Kg.fourcc="prdi",Kg),vg,Oc=(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),Tg,Xc=(Tg=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()}},Tg.fourcc="prft",Tg),qg,Pc=(qg=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))}},qg.fourcc="pssh",qg),Vg,$c=(Vg=class extends D{constructor(){super(...arguments),this.box_name="TrackCleanApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},Vg.fourcc="clef",Vg);function Al(i,A){if(i===Ds.Types.UTF8)return new TextDecoder("utf-8").decode(A);const t=new DataView(A.buffer);if(i===Ds.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===Ds.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===Ds.Types.BE_FLOAT32)return t.getFloat32(0,!1);d.warn("DataBox","Unsupported or unimplemented itif data type: "+i)}var qA,Ds=(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=Al(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),zg,tl=(zg=class extends D{constructor(){super(...arguments),this.box_name="TrackEncodedPixelsDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},zg.fourcc="enof",zg),Zg,el=(Zg=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}}},Zg.fourcc="ilst",Zg),Wg,il=(Wg=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)}}},Wg.fourcc="keys",Wg),jg,gl=(jg=class extends D{constructor(){super(...arguments),this.box_name="TrackProductionApertureDimensionsBox"}parse(A){this.parseFullHeader(A),this.width=A.readUint32(),this.height=A.readUint32()}},jg.fourcc="prof",jg),Og,Il=(Og=class extends M{constructor(){super(...arguments),this.box_name="TrackApertureModeDimensionsBox",this.clefs=[],this.profs=[],this.enofs=[],this.subBoxNames=["clef","prof","enof"]}},Og.fourcc="tapt",Og),Xg,sl=(Xg=class extends M{constructor(){super(...arguments),this.box_name="siDecompressionParamBox"}},Xg.fourcc="wave",Xg),Pg,Bl=(Pg=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)}},Pg.fourcc="rtp ",Pg),$g,nl=($g=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()}},$g.fourcc="saio",$g),AI,Cl=(AI=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()}},AI.fourcc="saiz",AI),Ql=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+"]"}},tI,al=(tI=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 Ql(g,I))}}},tI.fourcc="sbpm",tI),eI,El=(eI=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))}},eI.fourcc="schm",eI),iI,rl=(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),gI,ol=(gI=class extends D{constructor(){super(...arguments),this.box_name="SampleEncryptionBox"}},gI.fourcc="senc",gI),II,hl=(II=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()}},II.fourcc="SmDm",II),sI,cl=(sI=class extends D{constructor(){super(...arguments),this.box_name="SamplingRateBox"}parse(A){this.parseFullHeader(A),this.sampling_rate=A.readUint32()}},sI.fourcc="srat",sI),BI,ll=(BI=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 B={};g.ranges.push(B),B.level=A.readUint8(),B.range_size=A.readUint24()}}}},BI.fourcc="ssix",BI),nI,dl=(nI=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()}},nI.fourcc="stpd",nI),CI,fl=(CI=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()}},CI.fourcc="stri",CI),QI,ul=(QI=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()}},QI.fourcc="stsg",QI),aI,wl=(aI=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])}},aI.fourcc="stsh",aI),EI,Dl=(EI=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)}},EI.fourcc="stss",EI),rI,yl=(rI=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}}},rI.fourcc="stvi",rI),oI,pl=(oI=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)}},oI.fourcc="styp",oI),hI,ml=(hI=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)}}},hI.fourcc="stz2",hI),cI,Gl=(cI=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 B={};I.subsamples.push(B),this.version===1?B.size=A.readUint32():B.size=A.readUint16(),B.priority=A.readUint8(),B.discardable=A.readUint8(),B.codec_specific_parameters=A.readUint32()}}}},cI.fourcc="subs",cI),lI,Fl=(lI=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}},lI.fourcc="taic",lI),dI,Sl=(dI=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))}},dI.fourcc="tenc",dI),fI,Nl=(fI=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)]()}},fI.fourcc="tfra",fI),uI,Rl=(uI=class extends G{constructor(){super(...arguments),this.box_name="hintmaxrelativetime"}parse(A){this.time=A.readUint32()}},uI.fourcc="tmax",uI),wI,Ul=(wI=class extends G{constructor(){super(...arguments),this.box_name="hintminrelativetime"}parse(A){this.time=A.readUint32()}},wI.fourcc="tmin",wI),DI,kl=(DI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},DI.fourcc="totl",DI),yI,Ml=(yI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint32()}},yI.fourcc="tpay",yI),pI,xl=(pI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},pI.fourcc="tpyl",pI),mI,bl=(mI=class extends pr{},mI.fourcc="msrc",mI),YA,Yl=(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 Fr(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),GI,Ll=(GI=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}}},GI.fourcc="trep",GI),FI,_l=(FI=class extends G{constructor(){super(...arguments),this.box_name="hintBytesSent"}parse(A){this.bytessent=A.readUint64()}},FI.fourcc="trpy",FI),SI,Jl=(SI=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()}},SI.fourcc="tsel",SI),NI,Hl=(NI=class extends D{constructor(){super(...arguments),this.box_name="TextConfigBox"}parse(A){this.parseFullHeader(A),this.config=A.readCString()}},NI.fourcc="txtc",NI),RI,Kl=(RI=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)}},RI.fourcc="tyco",RI),UI,vl=(UI=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()}},UI.fourcc="udes",UI),kI,Tl=(kI=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()}}}},kI.fourcc="uncC",kI),MI,ql=(MI=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)}},MI.fourcc="urn ",MI),xI,Vl=(xI=class extends G{constructor(){super(...arguments),this.box_name="WebVTTConfigurationBox"}parse(A){this.text=A.readString(this.size-this.hdr_size)}},xI.fourcc="vttC",xI),bI,zl=(bI=class extends D{constructor(){super(...arguments),this.box_name="VvcNALUConfigBox"}parse(A){this.parseFullHeader(A);const t=A.readUint8();this.lengthSizeMinusOne=t&3}},bI.fourcc="vvnC",bI),YI,Zl=(YI=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()}},YI.grouping_type="alst",YI),LI,Wl=(LI=class extends Z{parse(A){this.layerNumber=A.readUint8(),this.accurateStatisticsFlag=A.readUint8(),this.avgBitRate=A.readUint16(),this.avgFrameRate=A.readUint16()}},LI.grouping_type="avll",LI),_I,jl=(_I=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()})}},_I.grouping_type="avss",_I),JI,Ol=(JI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},JI.grouping_type="dtrt",JI),HI,Xl=(HI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},HI.grouping_type="mvif",HI),KI,Pl=(KI=class extends Z{parse(A){this.roll_distance=A.readInt16()}},KI.grouping_type="prol",KI),vI,$l=(vI=class extends Z{parse(A){const t=A.readUint8();this.num_leading_samples_known=t>>7,this.num_leading_samples=t&127}},vI.grouping_type="rap ",vI),TI,Ad=(TI=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()}}},TI.grouping_type="rash",TI),qI,td=(qI=class extends Z{parse(A){this.roll_distance=A.readInt16()}},qI.grouping_type="roll",qI),VI,ed=(VI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},VI.grouping_type="scif",VI),zI,id=(zI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},zI.grouping_type="scnm",zI),ZI,gd=(ZI=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))}},ZI.grouping_type="seig",ZI),WI,Id=(WI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},WI.grouping_type="stsa",WI),jI,sd=(jI=class extends Z{parse(A){const t=A.readUint8();this.NAL_unit_type=t&63}},jI.grouping_type="sync",jI),OI,Bd=(OI=class extends Z{parse(A){const t=A.readUint8();this.level_independently_decodable=t>>7}},OI.grouping_type="tele",OI),XI,nd=(XI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},XI.grouping_type="tsas",XI),PI,Cd=(PI=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},PI.grouping_type="tscl",PI),$I,Qd=($I=class extends Z{parse(A){d.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")}},$I.grouping_type="vipr",$I),As,ad=(As=class extends G{},As.fourcc="uuid",As),ts,Qs=(ts=class extends D{},ts.fourcc="uuid",ts),es,Ed=(es=class extends Qs{constructor(){super(...arguments),this.box_name="LiveServerManifestBox"}parse(A){this.parseFullHeader(A),this.LiveServerManifest=A.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}},es.uuid="a5d40b30e81411ddba2f0800200c9a66",es),is,rd=(is=class extends Qs{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),gs,od=(gs=class extends Qs{constructor(){super(...arguments),this.box_name="PiffSampleEncryptionBox"}},gs.uuid="a2394f525a9b4f14a2446c427c648df4",gs),Is,hd=(Is=class extends Qs{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)}},Is.uuid="8974dbce7be74c5184f97148f9882554",Is),ss,cd=(ss=class extends Qs{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})}}},ss.uuid="d4807ef2ca3946958e5426cb9e46a79f",ss),Bs,ld=(Bs=class extends Qs{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())}},Bs.uuid="6d1d9b0542d544e680e2141daff757b2",Bs),ns,dd=(ns=class extends ad{constructor(){super(...arguments),this.box_name="ItemContentIDProperty"}parse(A){this.content_id=A.readCString()}},ns.uuid="261ef3741d975bbaacbd9d2c8ea73522",ns);Mr(mQ);xr(uQ);const fd=800;function ud(i){return i.startsWith("avc1")||i.startsWith("avc3")}function wd(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 Dd(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 wd(g)}function yd(i){return new Promise((A,t)=>{const e=mh(),g=i.slice(0);g.fileStart=0,e.onError=I=>{t(new Error(`mp4box: ${I}`))},e.onReady=I=>{var s,B,n,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(!ud(E.codec)){t(new Error(`mp4box: unsupported video codec ${E.codec}`));return}if(E.nb_samples>fd){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=(n=(B=E.video)==null?void 0:B.width)!=null?n: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 Pn=25e3;async function pd(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 md(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 ${Pn}ms (${JSON.stringify(A)})`)),Pn)})])}catch(t){try{i.close()}catch(e){}throw t}}async function Gd(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}),B=[],n=new VideoDecoder({output:o=>{B.push(o)},error:o=>{throw o}}),C=await Sd(i,A);n.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{n.decode(w)}catch(y){console.error("[GiftStage:WC] decoder.decode failed",{chunkIndex:Q,err:y});try{n.close()}catch(p){}throw y}Q++,await new Promise(y=>queueMicrotask(y))}await pd(n,"after last decode",1e4);const a=n.decodeQueueSize,r=B.length;await md(n,{chunksDecoded:Q,outputsBeforeFlush:r,queueBeforeFlush:a}),n.close(),B.sort((o,h)=>o.timestamp-h.timestamp);const E=Float64Array.from(B.map(o=>o.timestamp/1e6));if(B.length===0)throw new Error("WebCodecs: decoder produced no frames");return{frames:B,timesSec:E}}function ZB(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 Fd(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 B=I+s;let n=i>0?i:B;if(!(n>0)&&A.length>=2){const C=(A[A.length-1]-A[0])/(A.length-1);n=A[A.length-1]+(C>0?C:1/30)}return n>0||(n=Math.max(B,1/30)),n}async function Sd(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 GQ=`var Xn = (r) => {
|
|
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;
|
|
1448
|
+
c.onmessage = async (i) => {
|
|
1449
|
+
const t = i.data;
|
|
1450
|
+
if (t.type !== "decode-batch") return;
|
|
1451
|
+
const s = [];
|
|
1452
|
+
for (let e = 0; e < t.items.length; e += o) {
|
|
1453
|
+
const l = t.items.slice(e, e + o), d = await Promise.all(
|
|
1454
|
+
l.map(async (a) => {
|
|
1455
|
+
try {
|
|
1456
|
+
const r = await createImageBitmap(new Blob([new Uint8Array(a.data)]), {
|
|
1457
|
+
premultiplyAlpha: "none"
|
|
1458
|
+
});
|
|
1459
|
+
return { key: a.key, bitmap: r };
|
|
1460
|
+
} catch (r) {
|
|
1461
|
+
return { key: a.key, error: "decode-failed" };
|
|
1462
|
+
}
|
|
1463
|
+
})
|
|
1464
|
+
);
|
|
1465
|
+
s.push(...d);
|
|
1466
|
+
}
|
|
1467
|
+
const n = [];
|
|
1468
|
+
for (const e of s)
|
|
1469
|
+
e.bitmap && n.push(e.bitmap);
|
|
1470
|
+
const p = {
|
|
1471
|
+
type: "decode-batch-result",
|
|
1472
|
+
id: t.id,
|
|
1473
|
+
results: s
|
|
1474
|
+
};
|
|
1475
|
+
c.postMessage(p, n);
|
|
1476
|
+
};
|
|
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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}},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) => {
|
|
1448
1479
|
throw TypeError(r);
|
|
1449
1480
|
};
|
|
1450
1481
|
var Hn = (r, t, e) => t.has(r) || Xn("Cannot " + e);
|
|
@@ -8503,7 +8534,7 @@ async function xu(r) {
|
|
|
8503
8534
|
}
|
|
8504
8535
|
}
|
|
8505
8536
|
//# sourceMappingURL=webcodecs-mp4.worker-M2-SB0h_.js.map
|
|
8506
|
-
`,$n=typeof self!="undefined"&&self.Blob&&new Blob(["URL.revokeObjectURL(import.meta.url);",GQ],{type:"text/javascript;charset=utf-8"});function Nd(i){let A;try{if(A=$n&&(self.URL||self.webkitURL).createObjectURL($n),!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(GQ),{type:"module",name:i==null?void 0:i.name})}}var Rd=Object.defineProperty,Ud=(i,A,t)=>A in i?Rd(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,iA=(i,A,t)=>Ud(i,typeof A!="symbol"?A+"":A,t);const kd=28,Md=8;class xd{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 B=e[0],n=0;for(const C of e){const Q=Math.abs(C-g);Q>=n&&(n=Q,B=C)}this.closeKey(B)}}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 AC(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(B){g(B instanceof Error?B:new Error(String(B)))}};setTimeout(s,0)})}let bd=1;class KA{constructor(A,t,e,g,I,s,B,n,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=B,this.ring=n,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,B=(g=e==null?void 0:e.maxDecodedFrames)!=null?g:kd,n=(I=e==null?void 0:e.decodeAheadFrames)!=null?I:Md;let C;if(typeof A=="string"?C=await Yd(A,t):C=A,s&&typeof Worker!="undefined"){const Q=C.slice(0);try{return await KA.createViaWorker(Q,B,n)}catch(a){console.warn("[GiftStage:WC] Worker decode failed, falling back to main thread",a)}}return KA.createOnMainThread(C,B,n)}static async createViaWorker(A,t,e){const g=new Nd,I=bd++,s=new xd(t);let B=0,n=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"){B=u.duration,n=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 AC(()=>a||r!=null,6e4,"meta"),r)throw r;const l=B>0?B:1e-6,u=ZB(Q,l,0);if(await AC(()=>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=${B.toFixed(4)}s size=${n}x${C} times=[${c.toFixed(4)} … ${f.toFixed(4)}] ring=${t}`),new KA(B,n,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 yd(A);if(g.samples.length===0)throw new Error("mp4box: no samples");const s=g.samples[0].description,B=s?Dd(s):void 0;console.info("[GiftStage:WC] VideoDecoder decode (main thread)…");const{frames:n,timesSec:C}=await Gd(g.codec,B,g.samples,g.timescale),Q=n[n.length-1],a=Fd(g.durationSec,C,n),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=${n.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,n,t,e)}ensureDecodedThrough(A){var t,e,g,I,s;if(this.destroyed||!this.streaming||!this.worker)return;const B=this.duration>0?this.duration:1e-6;if(!Number.isFinite(A)||!Number.isFinite(B))return;const n=(A%B+B)%B;if(this.lastWrapped>=0&&n<this.lastWrapped-.001&&this.lastWrapped>B*.1&&((t=this.ring)==null||t.clear(),this.worker.postMessage({type:"rewind",id:this.workerMsgId})),this.lastWrapped=n,this.timesSec.length===0)return;const C=ZB(this.timesSec,B,n);(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,B=ZB(this.timesSec,I,s);if(this.streaming&&this.ring){this.ring.setPlaybackHint(B);const C=this.ring.frameForDisplay(B);return C||console.warn("[GiftStage:WC] getFrameForTime no frame in ring",{idx:B,wrapped:s,clip:I}),C}const n=(g=this.frames)==null?void 0:g[B];return n||console.warn("[GiftStage:WC] getFrameForTime missing frame at index",{idx:B,wrapped:s,clip:I}),n!=null?n: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 Yd(i,A){return xs(i,A)}function tC(i,A,t,e,g){const I=Math.max(1,Math.floor(A)),s=Math.max(1,Math.floor(t)),B=Math.max(1,i.width*i.scale),n=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,B/I,n/s),WB(I,s,C);({w:Q,h:a}=$A(g.info))}if(!(Q>0)||!(a>0))return C=Math.min(1,B/I,n/s),WB(I,s,C);const r=Math.min(B/Q,n/a);C=Math.min(1,r)}else C=Math.min(1,B/I,n/s);return WB(I,s,C)}function WB(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 Ld=Object.defineProperty,_d=(i,A,t)=>A in i?Ld(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 hB=9;function Jd(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 cB(i,A,t,e,g,I){return[i/g,(i+t)/g,(I-A-e)/I,(I-A)/I]}function eC(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 Hd(i,A,t){const e=eC(i,i.VERTEX_SHADER,A),g=eC(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 iC(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 Kd(i){const[A,t,e,g]=i.rgbFrame,[I,s,B,n]=i.aFrame,C=cB(A,t,e,g,i.videoW,i.videoH),Q=cB(I,s,B,n,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 vd(i){const A=i*hB,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
|
+
`,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`
|
|
8507
8538
|
precision lowp float;
|
|
8508
8539
|
varying vec2 v_texcoord;
|
|
8509
8540
|
varying vec2 v_alpha_texCoord;
|
|
@@ -8537,7 +8568,7 @@ async function xu(r) {
|
|
|
8537
8568
|
float my1;
|
|
8538
8569
|
float my2;
|
|
8539
8570
|
|
|
8540
|
-
for (int i = 0; i < ${A}; i += ${
|
|
8571
|
+
for (int i = 0; i < ${A}; i += ${dn}) {
|
|
8541
8572
|
if (int(image_pos[i]) > 0) {
|
|
8542
8573
|
srcIndex = int(image_pos[i]);
|
|
8543
8574
|
x1 = image_pos[i + 1];
|
|
@@ -8562,7 +8593,7 @@ async function xu(r) {
|
|
|
8562
8593
|
|
|
8563
8594
|
gl_FragColor = bgColor;
|
|
8564
8595
|
}
|
|
8565
|
-
`}const
|
|
8596
|
+
`}const If=`
|
|
8566
8597
|
attribute vec2 a_position;
|
|
8567
8598
|
attribute vec2 a_texCoord;
|
|
8568
8599
|
attribute vec2 a_alpha_texCoord;
|
|
@@ -8574,5 +8605,5 @@ async function xu(r) {
|
|
|
8574
8605
|
v_texcoord = a_texCoord;
|
|
8575
8606
|
v_alpha_texCoord = a_alpha_texCoord;
|
|
8576
8607
|
}
|
|
8577
|
-
`;function qd(i,A,t,e){const g=new Float32Array(t.size*hB),I=A.get(e);if(!I||I.length===0)return g;const[s,B]=i.info.rgbFrame;let n=0;for(const C of I){const Q=t.get(String(C.srcId));if(!Q)continue;if(n+hB>g.length)break;const[a,r,E,o]=C.frame,[h,c,f,l]=C.mFrame,u=cB(a+s,r+B,E,o,i.info.videoW,i.info.videoH),w=cB(h,c,f,l,i.info.videoW,i.info.videoH);g[n++]=Q,g[n++]=u[0],g[n++]=u[1],g[n++]=u[2],g[n++]=u[3],g[n++]=w[0],g[n++]=w[1],g[n++]=w[2],g[n++]=w[3]}return g}class Vd{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=Jd(g,I);const B=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(!B)throw new Error("VAP mixed rendering requires WebGL support");this.gl=B;const n=Math.max(1,B.getParameter(B.MAX_TEXTURE_IMAGE_UNITS)),C=Math.max(0,n-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:n});continue}const y=iC(B,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=Hd(B,Td,vd(this.resourceEntries.length));this.program=r.program,this.vertexShader=r.vertexShader,this.fragmentShader=r.fragmentShader,this.imagePosLoc=B.getUniformLocation(this.program,"image_pos"),this.videoTexture=iC(B,0);const E=B.getUniformLocation(this.program,"u_image_video");E!==null&&B.uniform1i(E,0);for(const u of this.resourceEntries){const w=B.getUniformLocation(this.program,`u_image${u.unit}`);w!==null&&B.uniform1i(w,u.unit)}const o=B.createBuffer();if(!o)throw new Error("Failed to create VAP mix vertex buffer");this.vertexBuffer=o,B.bindBuffer(B.ARRAY_BUFFER,this.vertexBuffer),B.bufferData(B.ARRAY_BUFFER,Kd(A.info),B.STATIC_DRAW);const h=6*Float32Array.BYTES_PER_ELEMENT,c=B.getAttribLocation(this.program,"a_position"),f=B.getAttribLocation(this.program,"a_texCoord"),l=B.getAttribLocation(this.program,"a_alpha_texCoord");B.enableVertexAttribArray(c),B.vertexAttribPointer(c,2,B.FLOAT,!1,h,0),B.enableVertexAttribArray(f),B.vertexAttribPointer(f,2,B.FLOAT,!1,h,2*Float32Array.BYTES_PER_ELEMENT),B.enableVertexAttribArray(l),B.vertexAttribPointer(l,2,B.FLOAT,!1,h,4*Float32Array.BYTES_PER_ELEMENT),B.viewport(0,0,this.canvas.width,this.canvas.height),B.disable(B.BLEND),B.disable(B.DEPTH_TEST),B.clearColor(0,0,0,0),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),B.pixelStorei(B.UNPACK_COLORSPACE_CONVERSION_WEBGL,B.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=qd(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 zd=Object.defineProperty,Zd=(i,A,t)=>A in i?zd(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,mA=(i,A,t)=>Zd(i,typeof A!="symbol"?A+"":A,t);const FQ=1397178947,SQ=12,Wd=8;class jd{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 Od{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 Xd(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 Pd(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 $d(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 Af(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 B=(I=A.ellipse)!=null?I:{x:0,y:0,radiusX:0,radiusY:0};i.f32(B.x),i.f32(B.y),i.f32(B.radiusX),i.f32(B.radiusY),Pd(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 tf(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=$d(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 gC(i){const A=new Uint8Array(i.byteLength);return A.set(i),A.buffer}function ef(i){var A;const t=new jd(Wd+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(FQ),t.u16(SQ),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)Af(t,s)}}}return t.finish()}function gf(i){const A=new Od(i);if(A.u32()!==FQ)throw new Error("Invalid SVGA cache binary magic");if(A.u16()!==SQ)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:gC(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 B=A.u32(),n=[];for(let E=0;E<B;E++)n.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,gC(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(tf(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:n,audioBlobs:Q,atlasRects:s,atlasPages:g}}function an(i){return`svga-asset:${i}`}function En(i){return`svga-asset-bin:${i}`}async function If(i){const A=Oa(an(i),"svga-asset");if(A)return A;const t=await Xa(En(i));if(!t)return null;try{const e=gf(t);return fC(an(i),"svga-asset",e,t.byteLength),e}catch(e){return $a(En(i)),null}}async function jB(i,A){const t=ef(A);fC(an(i),"svga-asset",A,Math.max(t.byteLength,Xd(A))),await Pa(En(i),t)}function xA(i){return typeof i=="number"&&Number.isFinite(i)&&i>0}function sf(i,A){const t=xA(i)?i*.5:0,e=xA(A)?A:0;return{width:t,height:e}}function Bf(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,B=xA(i.height)?i.height:void 0,n=i.useOriginalSize===!0;if(s&&B)return{width:s,height:B};if(s)return g&&I?{width:s,height:s*I/g}:{width:s,height:s};if(B)return g&&I?{width:B*g/I,height:B}:{width:B,height:B};let C=g!=null?g:0,Q=I!=null?I:0;if(C>0&&Q>0&&xA(t)&&xA(e)&&(!n||C>t||Q>e)){const a=Math.min(t/C,e/Q);C*=a,Q*=a}return{width:C,height:Q}}var nf=Object.defineProperty,Cf=(i,A,t)=>A in i?nf(i,A,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[A]=t,z=(i,A,t)=>Cf(i,typeof A!="symbol"?A+"":A,t);const as=class jA{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;Ba(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(),Wa({maxConcurrent:this.resourcePipelineConcurrency(),maxMemoryBytes:jA.DEFAULT_RESOURCE_CACHE_MEMORY_BYTES,maxPersistentBytes:jA.DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES});const t=(A=this.options.preferWebGPU)!=null?A:!0,e=this.options.antialias,[g]=await Promise.all([nC(this.canvas,t,e,this.options.forceWebGL1===!0),hC()]);this.backend=g,this.manager=new NC(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 Cr(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 tn(A.config),e=$A(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=Bf({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),B=lC(),{sx:n,sy:C}=ys(this.canvas),Q=SC(s.x,s.y,s.width,s.height,this.canvas.clientWidth,this.canvas.clientHeight),a={id:B,type:s.type,state:"loading",options:s,zIndex:(t=s.zIndex)!=null?t:0,renderOrder:this.nextRenderOrder++,x:Q.x*n,y:Q.y*C,width:s.width*n,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:bs,onFlyComplete:s.onFlyComplete},r={id:B,type:s.type,pause:()=>{a.paused=!0},resume:()=>{a.paused=!1},destroy:()=>{this.removeGift(B)}};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",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:B,audioBlobs:n}=await gn(A.options.source,{useWorker:this.options.svgaParseInWorker!==!1});if(A.state==="finished")return;const C=await this.buildSVGAAtlasIfNeeded(B,!!I);if(A.state==="finished"){for(const a of B.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,n),I&&(C!=null&&C.encodedPngBytesPromises)&&Promise.all(C.encodedPngBytesPromises).then(a=>{a.some(r=>!r)||jB(I,{params:s.params,sprites:s.sprites,audios:s.audios,audioBlobs:n,atlasRects:C.rects,atlasPages:C.pages.map((r,E)=>({width:r.atlasWidth,height:r.atlasHeight,imageBytes:a[E]}))})});for(const a of B.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(B){throw this.pendingSharedSVGAEntities.delete(t),B}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 If(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:B,imageBitmaps:n,audioBlobs:C}=await gn(A,{useWorker:this.options.svgaParseInWorker!==!1});try{const Q=await this.buildSVGAAtlasIfNeeded(n,!0);return Q!=null&&Q.encodedPngBytesPromises?Promise.all(Q.encodedPngBytesPromises).then(a=>{a.some(r=>!r)||jB(A,{params:B.params,sprites:B.sprites,audios:B.audios,audioBlobs:C,atlasRects:Q.rects,atlasPages:Q.pages.map((r,E)=>({width:r.atlasWidth,height:r.atlasHeight,imageBytes:a[E]}))})}):Q||jB(A,{params:B.params,sprites:B.sprites,audios:B.audios,audioBlobs:C,atlasRects:new Map,atlasPages:[]}),{entity:{params:B.params,sprites:B.sprites,audios:B.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 n.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(B=>{if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>B());return}setTimeout(B,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:jA.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:bC(A,this.backend,this.svgaAtlasMaxSize(),jA.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 xs(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 tn(t.config);A.vapConfig=g;const I=await rE(g,t.vapSlots);if(I.size>0){const Q=$A(g.info),a=oE(g);let r=null,E=null;try{r=new Vd(g,a,I,Q.w,Q.h)}catch(o){console.warn("[GiftStage] VAP mixed rendering fell back to CPU compositor",o),E=hE(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 B=await this.tryWebCodecsPlayback(t.source);if(B){A.webcodecsPlayback=B,A.wcPlaybackTime=0;const Q=B.getFrameForTime(0);if(!Q)throw B.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}=tC(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 n=await this.tryAcquireSharedHtmlVideo(A,t);if(n)A.videoElement=n.video,A.releaseSharedVideoPlayback=n.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(n){await n.ready;const Q=this.acquireSharedVideoTexture(n.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 B=g.getFrameForTime(0);if(!B)throw g.destroy(),A.webcodecsPlayback=null,new Error("WebCodecs: missing first frame");const n=B.displayWidth||B.codedWidth,C=B.displayHeight||B.codedHeight,{w:Q,h:a}=tC(A,n,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,B,r.rect.x,r.rect.y,Q,a);else{const o=this.backend.createTexture(B,{width:n,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:`${B.displayWidth}x${B.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 B=await this.acquireVideoPlaybackSource(t.source);A.releaseMediaSource=(e=B.release)!=null?e:null;const n=this.createVideo(B.src,t.loop===0);A.videoElement=n}const s=A.videoElement;if(I){await I.ready;const B=this.acquireSharedVideoTexture(I.cacheKey,s);A.videoTextureHandle=B.texture,A.releaseSharedVideoTexture=B.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,B;if(A.state!=="playing")return;const n=(e=A.options.loop)!=null?e:1;if(n===0){t.currentTime=0,t.play();return}if(A.loopCount++,A.loopCount>=n){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=ys(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,(B=A.easing)!=null?B:bs,()=>{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"?sf(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 xs(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:jA.DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS,B=Math.max(0,s)/1e3,n=this.sharedHtmlVideos.get(I);if(n)return n.video.currentTime>B?null:(n.refs++,{cacheKey:I,video:n.video,ready:n.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",B)},I=async()=>{try{await A.play(),await this.waitForFirstVideoFrame(A),t()}catch(n){e(n)}},s=()=>{g(),I()},B=()=>{g(),e(new Error("Video load failed"))};A.addEventListener("canplay",s),A.addEventListener("error",B),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(as,"SVGA_ATLAS_MAX_SIZE",2048);z(as,"SVGA_ATLAS_PADDING",2);z(as,"DEFAULT_SHARED_VIDEO_PLAYBACK_WINDOW_MS",100);z(as,"DEFAULT_RESOURCE_CACHE_MEMORY_BYTES",128*1024*1024);z(as,"DEFAULT_RESOURCE_CACHE_PERSISTENT_BYTES",2048*1024*1024);let Qf=as;exports.AlphaVideoRenderer=mC;exports.AudioManager=FC;exports.BufferPool=cC;exports.GiftStage=Qf;exports.PostAnimator=GC;exports.RenderManager=NC;exports.SVGABatchRenderer=dC;exports.VAPRenderer=pC;exports.WebCodecsMp4Playback=KA;exports.WebGL1Backend=OB;exports.WebGL2Backend=sC;exports.WebGPUBackend=IC;exports.buildAtlas=bC;exports.buildBatchVerticesJS=js;exports.canSharedArrayBuffer=Ia;exports.canWebGL1=ga;exports.canWebGL2=ia;exports.canWebGPU=ea;exports.clamp=PB;exports.createBackend=nC;exports.decodeSVGAProto=kC;exports.easeInOutCubic=NE;exports.easeInOutQuad=SE;exports.easeInQuad=GE;exports.easeOutBack=RE;exports.easeOutCubic=bs;exports.easeOutQuad=FE;exports.generateId=lC;exports.inflateJS=RC;exports.initWasm=hC;exports.isWasmReady=PA;exports.lerp=Xs;exports.linear=mE;exports.ortho=vA;exports.parseSVGA=gn;exports.parseVAPConfig=tn;
|
|
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",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;
|
|
8578
8609
|
//# sourceMappingURL=gift-stage.cjs.js.map
|