From 684aa45a1fd4b4acdb0431da4fd87430b5a8b795 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 13:56:17 +0700 Subject: [PATCH 01/15] feat(avatar): add procedural Clawd character WGSL shader --- .../rendering/src/shaders/avatar-clawd.wgsl | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 crates/rendering/src/shaders/avatar-clawd.wgsl diff --git a/crates/rendering/src/shaders/avatar-clawd.wgsl b/crates/rendering/src/shaders/avatar-clawd.wgsl new file mode 100644 index 0000000000..7a8be8094f --- /dev/null +++ b/crates/rendering/src/shaders/avatar-clawd.wgsl @@ -0,0 +1,161 @@ +struct AvatarUniforms { + head_rotation: vec3, + mouth_open: f32, + left_eye_open: f32, + right_eye_open: f32, + breathing_phase: f32, + bounce: f32, + bg_color: vec4, + _padding: vec2, +}; + +@group(0) @binding(0) var u: AvatarUniforms; + +struct VertexOutput { + @builtin(position) clip_position: vec4, + @location(0) tex_coords: vec2, +}; + +@vertex +fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> VertexOutput { + var out: VertexOutput; + let x = f32(i32(in_vertex_index & 1u) * 4 - 1); + let y = f32(i32(in_vertex_index & 2u) * 2 - 1); + out.tex_coords = vec2(x * 0.5 + 0.5, 1.0 - (y * 0.5 + 0.5)); + out.clip_position = vec4(x, y, 0.0, 1.0); + return out; +} + +fn sdf_rounded_rect(p: vec2, half_size: vec2, radius: f32) -> f32 { + let q = abs(p) - half_size + vec2(radius); + return length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - radius; +} + +fn sdf_rect(p: vec2, half_size: vec2) -> f32 { + let d = abs(p) - half_size; + return length(max(d, vec2(0.0))) + min(max(d.x, d.y), 0.0); +} + +fn sdf_ellipse(p: vec2, radii: vec2) -> f32 { + let n = p / radii; + return (length(n) - 1.0) * min(radii.x, radii.y); +} + +fn alpha_from_sdf(d: f32, aa: f32) -> f32 { + return 1.0 - smoothstep(-aa, aa, d); +} + +fn blend_over(base: vec4, top: vec4) -> vec4 { + let a = top.a + base.a * (1.0 - top.a); + if a < 0.001 { + return vec4(0.0); + } + let rgb = (top.rgb * top.a + base.rgb * base.a * (1.0 - top.a)) / a; + return vec4(rgb, a); +} + +fn rotate_2d(p: vec2, angle: f32) -> vec2 { + let c = cos(angle); + let s = sin(angle); + return vec2(p.x * c - p.y * s, p.x * s + p.y * c); +} + +const BODY_COLOR: vec4 = vec4(0.831, 0.518, 0.353, 1.0); +const EYE_COLOR: vec4 = vec4(0.0, 0.0, 0.0, 1.0); +const HIGHLIGHT_COLOR: vec4 = vec4(1.0, 1.0, 1.0, 0.7); +const MOUTH_COLOR: vec4 = vec4(0.15, 0.08, 0.05, 1.0); +const SHADOW_COLOR: vec4 = vec4(0.0, 0.0, 0.0, 0.12); + +@fragment +fn fs_main(@location(0) tex_coords: vec2) -> @location(0) vec4 { + let aa = 0.004; + + let pitch = u.head_rotation.x; + let yaw = u.head_rotation.y; + let roll = u.head_rotation.z; + + let breath_scale = 1.0 + u.breathing_phase * 0.012; + let bounce_offset = u.bounce * 0.025; + + var p = tex_coords - vec2(0.5, 0.5); + p.y += bounce_offset; + p = rotate_2d(p, roll * 0.3); + p.x -= yaw * 0.03; + p.y -= pitch * 0.03; + p /= breath_scale; + + var color = u.bg_color; + + let shadow_p = vec2(p.x, p.y - 0.195); + let shadow_d = sdf_ellipse(shadow_p, vec2(0.17, 0.025)); + let shadow_a = alpha_from_sdf(shadow_d, aa * 4.0) * SHADOW_COLOR.a; + color = blend_over(color, vec4(SHADOW_COLOR.rgb, shadow_a)); + + let body_half = vec2(0.18, 0.16); + let body_d = sdf_rounded_rect(p, body_half, 0.025); + let body_a = alpha_from_sdf(body_d, aa); + color = blend_over(color, vec4(BODY_COLOR.rgb, body_a * BODY_COLOR.a)); + + let left_arm_center = vec2(-0.215, -0.08); + let left_arm_p = p - left_arm_center; + let left_arm_d = sdf_rounded_rect(left_arm_p, vec2(0.045, 0.05), 0.012); + let left_arm_a = alpha_from_sdf(left_arm_d, aa); + color = blend_over(color, vec4(BODY_COLOR.rgb, left_arm_a * BODY_COLOR.a)); + + let right_arm_center = vec2(0.215, -0.08); + let right_arm_p = p - right_arm_center; + let right_arm_d = sdf_rounded_rect(right_arm_p, vec2(0.045, 0.05), 0.012); + let right_arm_a = alpha_from_sdf(right_arm_d, aa); + color = blend_over(color, vec4(BODY_COLOR.rgb, right_arm_a * BODY_COLOR.a)); + + let left_foot_center = vec2(-0.08, 0.19); + let left_foot_p = p - left_foot_center; + let left_foot_d = sdf_rounded_rect(left_foot_p, vec2(0.06, 0.04), 0.01); + let left_foot_a = alpha_from_sdf(left_foot_d, aa); + color = blend_over(color, vec4(BODY_COLOR.rgb, left_foot_a * BODY_COLOR.a)); + + let right_foot_center = vec2(0.08, 0.19); + let right_foot_p = p - right_foot_center; + let right_foot_d = sdf_rounded_rect(right_foot_p, vec2(0.06, 0.04), 0.01); + let right_foot_a = alpha_from_sdf(right_foot_d, aa); + color = blend_over(color, vec4(BODY_COLOR.rgb, right_foot_a * BODY_COLOR.a)); + + let eye_base_h = 0.032; + let left_eye_h = eye_base_h * max(u.left_eye_open, 0.05); + let left_eye_center = vec2(-0.065, -0.03); + let left_eye_p = p - left_eye_center; + let left_eye_d = sdf_rect(left_eye_p, vec2(0.03, left_eye_h)); + let left_eye_a = alpha_from_sdf(left_eye_d, aa); + color = blend_over(color, vec4(EYE_COLOR.rgb, left_eye_a * EYE_COLOR.a * body_a)); + + let right_eye_h = eye_base_h * max(u.right_eye_open, 0.05); + let right_eye_center = vec2(0.065, -0.03); + let right_eye_p = p - right_eye_center; + let right_eye_d = sdf_rect(right_eye_p, vec2(0.03, right_eye_h)); + let right_eye_a = alpha_from_sdf(right_eye_d, aa); + color = blend_over(color, vec4(EYE_COLOR.rgb, right_eye_a * EYE_COLOR.a * body_a)); + + let highlight_offset = vec2(-0.012 + yaw * 0.015, -0.012); + let highlight_size = vec2(0.01, 0.01); + + let lh_p = p - (left_eye_center + highlight_offset); + let lh_d = sdf_rect(lh_p, highlight_size); + let lh_a = alpha_from_sdf(lh_d, aa) * HIGHLIGHT_COLOR.a * step(0.3, u.left_eye_open); + color = blend_over(color, vec4(HIGHLIGHT_COLOR.rgb, lh_a * body_a)); + + let rh_p = p - (right_eye_center + highlight_offset); + let rh_d = sdf_rect(rh_p, highlight_size); + let rh_a = alpha_from_sdf(rh_d, aa) * HIGHLIGHT_COLOR.a * step(0.3, u.right_eye_open); + color = blend_over(color, vec4(HIGHLIGHT_COLOR.rgb, rh_a * body_a)); + + let mouth_height = u.mouth_open * 0.045; + if u.mouth_open > 0.01 { + let mouth_center = vec2(0.0, 0.1 + mouth_height * 0.3); + let mouth_p = p - mouth_center; + let mouth_d = sdf_rounded_rect(mouth_p, vec2(0.055, mouth_height), 0.015); + let mouth_a = alpha_from_sdf(mouth_d, aa); + color = blend_over(color, vec4(MOUTH_COLOR.rgb, mouth_a * MOUTH_COLOR.a * body_a)); + } + + return color; +} From 98501512e6e48a4b4e47fc182bce550d78947eeb Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:00:18 +0700 Subject: [PATCH 02/15] feat(avatar): add AvatarRenderer with procedural Clawd drawing and animation logic --- crates/rendering/src/avatar.rs | 342 +++++++++++++++++++++++++++++++++ crates/rendering/src/lib.rs | 1 + 2 files changed, 343 insertions(+) create mode 100644 crates/rendering/src/avatar.rs diff --git a/crates/rendering/src/avatar.rs b/crates/rendering/src/avatar.rs new file mode 100644 index 0000000000..72bd45e38c --- /dev/null +++ b/crates/rendering/src/avatar.rs @@ -0,0 +1,342 @@ +use bytemuck::{Pod, Zeroable}; +use wgpu::util::DeviceExt; + +const AVATAR_SIZE: u32 = 512; + +#[derive(Clone, Debug, Default)] +pub struct FacePose { + pub head_pitch: f32, + pub head_yaw: f32, + pub head_roll: f32, + pub mouth_open: f32, + pub left_eye_open: f32, + pub right_eye_open: f32, + pub confidence: f32, +} + +#[repr(C)] +#[derive(Copy, Clone, Debug, Pod, Zeroable)] +pub struct AvatarUniforms { + pub head_rotation: [f32; 3], + pub mouth_open: f32, + pub left_eye_open: f32, + pub right_eye_open: f32, + pub breathing_phase: f32, + pub bounce: f32, + pub bg_color: [f32; 4], + pub _padding: [f32; 2], +} + +impl Default for AvatarUniforms { + fn default() -> Self { + Self { + head_rotation: [0.0; 3], + mouth_open: 0.0, + left_eye_open: 1.0, + right_eye_open: 1.0, + breathing_phase: 0.0, + bounce: 0.0, + bg_color: [0.15, 0.15, 0.18, 1.0], + _padding: [0.0; 2], + } + } +} + +pub struct AvatarRenderer { + pipeline: wgpu::RenderPipeline, + uniforms_buffer: wgpu::Buffer, + bind_group: wgpu::BindGroup, + target_texture: wgpu::Texture, + target_view: wgpu::TextureView, + readback_buffer: wgpu::Buffer, + output_data: Vec, + time: f64, + blink_timer: f64, + next_blink: f64, +} + +impl AvatarRenderer { + pub fn new(device: &wgpu::Device) -> Self { + let shader_src = include_str!("shaders/avatar-clawd.wgsl"); + let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { + label: Some("avatar-clawd shader"), + source: wgpu::ShaderSource::Wgsl(shader_src.into()), + }); + + let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: Some("avatar bind group layout"), + entries: &[wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }], + }); + + let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: Some("avatar pipeline layout"), + bind_group_layouts: &[&bind_group_layout], + push_constant_ranges: &[], + }); + + let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("avatar render pipeline"), + layout: Some(&pipeline_layout), + vertex: wgpu::VertexState { + module: &shader, + entry_point: Some("vs_main"), + buffers: &[], + compilation_options: wgpu::PipelineCompilationOptions { + constants: &[], + zero_initialize_workgroup_memory: false, + }, + }, + fragment: Some(wgpu::FragmentState { + module: &shader, + entry_point: Some("fs_main"), + targets: &[Some(wgpu::ColorTargetState { + format: wgpu::TextureFormat::Rgba8UnormSrgb, + blend: Some(wgpu::BlendState::ALPHA_BLENDING), + write_mask: wgpu::ColorWrites::ALL, + })], + compilation_options: wgpu::PipelineCompilationOptions { + constants: &[], + zero_initialize_workgroup_memory: false, + }, + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + strip_index_format: None, + front_face: wgpu::FrontFace::Ccw, + cull_mode: Some(wgpu::Face::Back), + polygon_mode: wgpu::PolygonMode::Fill, + unclipped_depth: false, + conservative: false, + }, + depth_stencil: None, + multisample: wgpu::MultisampleState { + count: 1, + mask: !0, + alpha_to_coverage_enabled: false, + }, + multiview: None, + cache: None, + }); + + let uniforms = AvatarUniforms::default(); + let uniforms_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("avatar uniforms buffer"), + contents: bytemuck::cast_slice(&[uniforms]), + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + }); + + let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: Some("avatar bind group"), + layout: &bind_group_layout, + entries: &[wgpu::BindGroupEntry { + binding: 0, + resource: uniforms_buffer.as_entire_binding(), + }], + }); + + let target_texture = device.create_texture(&wgpu::TextureDescriptor { + label: Some("avatar target texture"), + size: wgpu::Extent3d { + width: AVATAR_SIZE, + height: AVATAR_SIZE, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: wgpu::TextureDimension::D2, + format: wgpu::TextureFormat::Rgba8UnormSrgb, + usage: wgpu::TextureUsages::RENDER_ATTACHMENT | wgpu::TextureUsages::COPY_SRC, + view_formats: &[], + }); + + let target_view = target_texture.create_view(&Default::default()); + + let buffer_size = (AVATAR_SIZE * AVATAR_SIZE * 4) as u64; + let readback_buffer = device.create_buffer(&wgpu::BufferDescriptor { + label: Some("avatar readback buffer"), + size: buffer_size, + usage: wgpu::BufferUsages::COPY_DST | wgpu::BufferUsages::MAP_READ, + mapped_at_creation: false, + }); + + let output_data = vec![0u8; (AVATAR_SIZE * AVATAR_SIZE * 4) as usize]; + + Self { + pipeline, + uniforms_buffer, + bind_group, + target_texture, + target_view, + readback_buffer, + output_data, + time: 0.0, + blink_timer: 0.0, + next_blink: 3.5, + } + } + + pub fn size() -> u32 { + AVATAR_SIZE + } + + pub fn render( + &mut self, + device: &wgpu::Device, + queue: &wgpu::Queue, + face_pose: &FacePose, + dt: f64, + ) { + self.time += dt; + self.blink_timer += dt; + + let idle_mode = face_pose.confidence < 0.3; + + let blink_progress = if self.blink_timer >= self.next_blink { + let elapsed = self.blink_timer - self.next_blink; + let blink_duration = 0.2; + if elapsed >= blink_duration { + self.blink_timer = 0.0; + self.next_blink = 3.0 + 3.0 * ((self.time * 0.7).sin() * 0.5 + 0.5); + 1.0_f32 + } else { + let t = (elapsed / blink_duration) as f32; + let blink_curve = if t < 0.5 { + 1.0 - (t * 2.0) + } else { + (t - 0.5) * 2.0 + }; + blink_curve + } + } else { + 1.0_f32 + }; + + let breathing_phase = (self.time * 1.5).sin() as f32; + + let (head_rotation, mouth_open, left_eye_open, right_eye_open, bounce) = if idle_mode { + let sway_x = (self.time * 0.4).sin() as f32 * 0.05; + let sway_y = (self.time * 0.3).sin() as f32 * 0.03; + ( + [sway_y, sway_x, 0.0], + 0.0_f32, + blink_progress, + blink_progress, + 0.0_f32, + ) + } else { + let left_eye = face_pose.left_eye_open.min(blink_progress); + let right_eye = face_pose.right_eye_open.min(blink_progress); + + let bounce_val = if face_pose.mouth_open > 0.2 { + (self.time * 12.0).sin().abs() as f32 * face_pose.mouth_open + } else { + 0.0 + }; + + ( + [ + face_pose.head_pitch, + face_pose.head_yaw, + face_pose.head_roll, + ], + face_pose.mouth_open, + left_eye, + right_eye, + bounce_val, + ) + }; + + let uniforms = AvatarUniforms { + head_rotation, + mouth_open, + left_eye_open, + right_eye_open, + breathing_phase, + bounce, + bg_color: [0.15, 0.15, 0.18, 1.0], + _padding: [0.0; 2], + }; + + queue.write_buffer(&self.uniforms_buffer, 0, bytemuck::bytes_of(&uniforms)); + + let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor { + label: Some("avatar render encoder"), + }); + + { + let mut pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: Some("avatar render pass"), + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view: &self.target_view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color { + r: 0.0, + g: 0.0, + b: 0.0, + a: 0.0, + }), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + + pass.set_pipeline(&self.pipeline); + pass.set_bind_group(0, &self.bind_group, &[]); + pass.draw(0..3, 0..1); + } + + encoder.copy_texture_to_buffer( + wgpu::TexelCopyTextureInfo { + texture: &self.target_texture, + mip_level: 0, + origin: wgpu::Origin3d::ZERO, + aspect: wgpu::TextureAspect::All, + }, + wgpu::TexelCopyBufferInfo { + buffer: &self.readback_buffer, + layout: wgpu::TexelCopyBufferLayout { + offset: 0, + bytes_per_row: Some(AVATAR_SIZE * 4), + rows_per_image: Some(AVATAR_SIZE), + }, + }, + wgpu::Extent3d { + width: AVATAR_SIZE, + height: AVATAR_SIZE, + depth_or_array_layers: 1, + }, + ); + + queue.submit(std::iter::once(encoder.finish())); + + let buffer_slice = self.readback_buffer.slice(..); + let (tx, rx) = std::sync::mpsc::channel(); + buffer_slice.map_async(wgpu::MapMode::Read, move |result| { + let _ = tx.send(result); + }); + + if device.poll(wgpu::PollType::Wait).is_ok() && rx.recv().is_ok_and(|r| r.is_ok()) { + let data = buffer_slice.get_mapped_range(); + self.output_data.copy_from_slice(&data); + drop(data); + self.readback_buffer.unmap(); + } + } + + pub fn output_rgba(&self) -> &[u8] { + &self.output_data + } +} diff --git a/crates/rendering/src/lib.rs b/crates/rendering/src/lib.rs index 813f400147..d277a0fad4 100644 --- a/crates/rendering/src/lib.rs +++ b/crates/rendering/src/lib.rs @@ -19,6 +19,7 @@ use std::{collections::HashMap, sync::Arc}; use std::{path::PathBuf, time::Instant}; use tokio::sync::mpsc; +pub mod avatar; pub mod composite_frame; mod coord; pub mod cpu_yuv; From ed730c507e60796c784a8e5542284440a1279f23 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:02:36 +0700 Subject: [PATCH 03/15] feat(settings): add avatar mode toggle and background config --- apps/desktop/src-tauri/src/general_settings.rs | 6 ++++++ .../routes/(window-chrome)/settings/experimental.tsx | 10 ++++++++++ crates/project/src/configuration.rs | 9 +++++++++ 3 files changed, 25 insertions(+) diff --git a/apps/desktop/src-tauri/src/general_settings.rs b/apps/desktop/src-tauri/src/general_settings.rs index 546b4960a8..97ae2a05dd 100644 --- a/apps/desktop/src-tauri/src/general_settings.rs +++ b/apps/desktop/src-tauri/src/general_settings.rs @@ -124,6 +124,10 @@ pub struct GeneralSettingsStore { #[serde(default)] pub auto_zoom_on_clicks: bool, #[serde(default)] + pub avatar_mode: bool, + #[serde(default)] + pub avatar_background: cap_project::AvatarBackground, + #[serde(default)] pub post_deletion_behaviour: PostDeletionBehaviour, #[serde(default = "default_excluded_windows")] pub excluded_windows: Vec, @@ -203,6 +207,8 @@ impl Default for GeneralSettingsStore { recording_countdown: Some(3), enable_native_camera_preview: default_enable_native_camera_preview(), auto_zoom_on_clicks: false, + avatar_mode: false, + avatar_background: cap_project::AvatarBackground::Dark, post_deletion_behaviour: PostDeletionBehaviour::DoNothing, excluded_windows: default_excluded_windows(), delete_instant_recordings_after_upload: false, diff --git a/apps/desktop/src/routes/(window-chrome)/settings/experimental.tsx b/apps/desktop/src/routes/(window-chrome)/settings/experimental.tsx index 3d1bd22fc7..271dd9d318 100644 --- a/apps/desktop/src/routes/(window-chrome)/settings/experimental.tsx +++ b/apps/desktop/src/routes/(window-chrome)/settings/experimental.tsx @@ -26,6 +26,7 @@ function Inner(props: { initialStore: GeneralSettingsStore | null }) { enableNotifications: true, enableNativeCameraPreview: false, autoZoomOnClicks: false, + avatarMode: false, custom_cursor_capture2: true, }, ); @@ -96,6 +97,15 @@ function Inner(props: { initialStore: GeneralSettingsStore | null }) { /> +

Camera Features

+
+ handleChange("avatarMode", value)} + /> +
); diff --git a/crates/project/src/configuration.rs b/crates/project/src/configuration.rs index 612bb691fa..754a277555 100644 --- a/crates/project/src/configuration.rs +++ b/crates/project/src/configuration.rs @@ -1182,6 +1182,15 @@ impl ProjectConfiguration { } } +#[derive(Type, Serialize, Deserialize, Clone, Copy, Debug, Default)] +#[serde(rename_all = "camelCase")] +pub enum AvatarBackground { + #[default] + Dark, + Light, + Gradient, +} + pub const SLOW_SMOOTHING_SAMPLES: usize = 24; pub const REGULAR_SMOOTHING_SAMPLES: usize = 16; pub const FAST_SMOOTHING_SAMPLES: usize = 10; From 4f2f8c989d24478dd008f4e7f253a55a27301691 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:08:44 +0700 Subject: [PATCH 04/15] feat(avatar): wire AvatarRenderer into camera layer rendering pipeline --- crates/rendering/src/lib.rs | 173 ++++++++++++++++++++++++++---------- 1 file changed, 125 insertions(+), 48 deletions(-) diff --git a/crates/rendering/src/lib.rs b/crates/rendering/src/lib.rs index d277a0fad4..b2b2f11acc 100644 --- a/crates/rendering/src/lib.rs +++ b/crates/rendering/src/lib.rs @@ -2607,6 +2607,9 @@ pub struct RendererLayers { mask: MaskLayer, text: TextLayer, captions: CaptionsLayer, + avatar: Option, + avatar_face_pose: crate::avatar::FacePose, + avatar_enabled: bool, } impl RendererLayers { @@ -2646,6 +2649,9 @@ impl RendererLayers { mask: MaskLayer::new(device), text: TextLayer::new(device, queue), captions: CaptionsLayer::new(device, queue), + avatar: None, + avatar_face_pose: crate::avatar::FacePose::default(), + avatar_enabled: false, } } @@ -2673,6 +2679,17 @@ impl RendererLayers { } } + pub fn set_avatar_enabled(&mut self, device: &wgpu::Device, enabled: bool) { + self.avatar_enabled = enabled; + if enabled && self.avatar.is_none() { + self.avatar = Some(crate::avatar::AvatarRenderer::new(device)); + } + } + + pub fn set_avatar_face_pose(&mut self, pose: crate::avatar::FacePose) { + self.avatar_face_pose = pose; + } + pub async fn prepare( &mut self, constants: &RenderVideoConstants, @@ -2709,29 +2726,58 @@ impl RendererLayers { constants, ); - self.camera.prepare( - &constants.device, - &constants.queue, - uniforms.camera, - constants.options.camera_size.and_then(|size| { - segment_frames - .camera_frame - .as_ref() - .map(|frame| (size, frame, segment_frames.recording_time)) - }), - ); - - self.camera_only.prepare( - &constants.device, - &constants.queue, - uniforms.camera_only, - constants.options.camera_size.and_then(|size| { - segment_frames - .camera_frame - .as_ref() - .map(|frame| (size, frame, segment_frames.recording_time)) - }), - ); + if self.avatar_enabled { + if let Some(ref mut avatar) = self.avatar { + avatar.render( + &constants.device, + &constants.queue, + &self.avatar_face_pose, + 1.0 / 30.0, + ); + let avatar_size = crate::avatar::AvatarRenderer::size(); + let avatar_frame = decoder::DecodedFrame::new( + avatar.output_rgba().to_vec(), + avatar_size, + avatar_size, + ); + let avatar_xy = XY::new(avatar_size, avatar_size); + self.camera.prepare( + &constants.device, + &constants.queue, + uniforms.camera, + Some((avatar_xy, &avatar_frame, segment_frames.recording_time)), + ); + self.camera_only.prepare( + &constants.device, + &constants.queue, + uniforms.camera_only, + Some((avatar_xy, &avatar_frame, segment_frames.recording_time)), + ); + } + } else { + self.camera.prepare( + &constants.device, + &constants.queue, + uniforms.camera, + constants.options.camera_size.and_then(|size| { + segment_frames + .camera_frame + .as_ref() + .map(|frame| (size, frame, segment_frames.recording_time)) + }), + ); + self.camera_only.prepare( + &constants.device, + &constants.queue, + uniforms.camera_only, + constants.options.camera_size.and_then(|size| { + segment_frames + .camera_frame + .as_ref() + .map(|frame| (size, frame, segment_frames.recording_time)) + }), + ); + } self.text.prepare( &constants.device, @@ -2788,31 +2834,62 @@ impl RendererLayers { constants, ); - self.camera.prepare_with_encoder( - &constants.device, - &constants.queue, - uniforms.camera, - constants.options.camera_size.and_then(|size| { - segment_frames - .camera_frame - .as_ref() - .map(|frame| (size, frame, segment_frames.recording_time)) - }), - encoder, - ); - - self.camera_only.prepare_with_encoder( - &constants.device, - &constants.queue, - uniforms.camera_only, - constants.options.camera_size.and_then(|size| { - segment_frames - .camera_frame - .as_ref() - .map(|frame| (size, frame, segment_frames.recording_time)) - }), - encoder, - ); + if self.avatar_enabled { + if let Some(ref mut avatar) = self.avatar { + avatar.render( + &constants.device, + &constants.queue, + &self.avatar_face_pose, + 1.0 / 30.0, + ); + let avatar_size = crate::avatar::AvatarRenderer::size(); + let avatar_frame = decoder::DecodedFrame::new( + avatar.output_rgba().to_vec(), + avatar_size, + avatar_size, + ); + let avatar_xy = XY::new(avatar_size, avatar_size); + self.camera.prepare_with_encoder( + &constants.device, + &constants.queue, + uniforms.camera, + Some((avatar_xy, &avatar_frame, segment_frames.recording_time)), + encoder, + ); + self.camera_only.prepare_with_encoder( + &constants.device, + &constants.queue, + uniforms.camera_only, + Some((avatar_xy, &avatar_frame, segment_frames.recording_time)), + encoder, + ); + } + } else { + self.camera.prepare_with_encoder( + &constants.device, + &constants.queue, + uniforms.camera, + constants.options.camera_size.and_then(|size| { + segment_frames + .camera_frame + .as_ref() + .map(|frame| (size, frame, segment_frames.recording_time)) + }), + encoder, + ); + self.camera_only.prepare_with_encoder( + &constants.device, + &constants.queue, + uniforms.camera_only, + constants.options.camera_size.and_then(|size| { + segment_frames + .camera_frame + .as_ref() + .map(|frame| (size, frame, segment_frames.recording_time)) + }), + encoder, + ); + } self.text.prepare( &constants.device, From 7b1e8a8d1603d91613213fb31e8da51ca24abd3c Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:16:30 +0700 Subject: [PATCH 05/15] feat(face-tracking): create face tracking crate with Apple Vision backend --- Cargo.lock | 8 + Cargo.toml | 1 + crates/face-tracking/Cargo.toml | 13 ++ crates/face-tracking/src/lib.rs | 30 ++++ crates/face-tracking/src/macos.rs | 243 ++++++++++++++++++++++++++++++ 5 files changed, 295 insertions(+) create mode 100644 crates/face-tracking/Cargo.toml create mode 100644 crates/face-tracking/src/lib.rs create mode 100644 crates/face-tracking/src/macos.rs diff --git a/Cargo.lock b/Cargo.lock index 9e437b7672..3378507ad0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1413,6 +1413,14 @@ dependencies = [ "workspace-hack", ] +[[package]] +name = "cap-face-tracking" +version = "0.1.0" +dependencies = [ + "cidre", + "tracing", +] + [[package]] name = "cap-fail" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index f39d35f4c6..da7f2745ce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,6 +65,7 @@ cidre = { git = "https://github.com/CapSoftware/cidre", rev = "bf84b67079a8", fe "io_surface", "mtl", "vt", + "vn", ], default-features = false } windows = "0.60.0" diff --git a/crates/face-tracking/Cargo.toml b/crates/face-tracking/Cargo.toml new file mode 100644 index 0000000000..6f70e29c80 --- /dev/null +++ b/crates/face-tracking/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "cap-face-tracking" +version = "0.1.0" +edition = "2024" + +[lints] +workspace = true + +[dependencies] +tracing.workspace = true + +[target.'cfg(target_os = "macos")'.dependencies] +cidre = { workspace = true } diff --git a/crates/face-tracking/src/lib.rs b/crates/face-tracking/src/lib.rs new file mode 100644 index 0000000000..f634e924e1 --- /dev/null +++ b/crates/face-tracking/src/lib.rs @@ -0,0 +1,30 @@ +#[derive(Clone, Debug, Default)] +pub struct FacePose { + pub head_pitch: f32, + pub head_yaw: f32, + pub head_roll: f32, + pub mouth_open: f32, + pub left_eye_open: f32, + pub right_eye_open: f32, + pub confidence: f32, +} + +#[cfg(target_os = "macos")] +mod macos; + +#[cfg(target_os = "macos")] +pub use macos::FaceTracker; + +#[cfg(not(target_os = "macos"))] +pub struct FaceTracker; + +#[cfg(not(target_os = "macos"))] +impl FaceTracker { + pub fn new() -> Self { + Self + } + + pub fn track(&mut self, _rgba_data: &[u8], _width: u32, _height: u32) -> FacePose { + FacePose::default() + } +} diff --git a/crates/face-tracking/src/macos.rs b/crates/face-tracking/src/macos.rs new file mode 100644 index 0000000000..56bf8ef3da --- /dev/null +++ b/crates/face-tracking/src/macos.rs @@ -0,0 +1,243 @@ +use std::ffi::c_void; + +use cidre::{arc, cv, ns, objc, vn}; + +use crate::FacePose; + +pub struct FaceTracker { + landmarks_request: arc::R, +} + +impl FaceTracker { + pub fn new() -> Self { + let landmarks_request = create_landmarks_request(); + Self { landmarks_request } + } + + pub fn track(&mut self, rgba_data: &[u8], width: u32, height: u32) -> FacePose { + match self.track_inner(rgba_data, width, height) { + Some(pose) => pose, + None => FacePose::default(), + } + } + + fn track_inner(&mut self, rgba_data: &[u8], width: u32, height: u32) -> Option { + let w = width as usize; + let h = height as usize; + let src_row_bytes = w * 4; + let expected_len = src_row_bytes * h; + if rgba_data.len() < expected_len { + tracing::warn!( + "RGBA data too small: {} < {}", + rgba_data.len(), + expected_len + ); + return None; + } + + let mut pixel_buf = cv::PixelBuf::new(w, h, cv::PixelFormat::_32_BGRA, None).ok()?; + + unsafe { + pixel_buf + .lock_base_addr(cv::pixel_buffer::LockFlags::DEFAULT) + .result() + .ok()?; + } + + let dst_base = unsafe { CVPixelBufferGetBaseAddress(&pixel_buf) }; + let dst_row_bytes = unsafe { CVPixelBufferGetBytesPerRow(&pixel_buf) }; + + if dst_base.is_null() { + unsafe { + pixel_buf.unlock_lock_base_addr(cv::pixel_buffer::LockFlags::DEFAULT); + } + return None; + } + + unsafe { + rgba_to_bgra_copy( + rgba_data, + dst_base as *mut u8, + w, + h, + src_row_bytes, + dst_row_bytes, + ); + } + + unsafe { + pixel_buf.unlock_lock_base_addr(cv::pixel_buffer::LockFlags::DEFAULT); + } + + let handler = vn::ImageRequestHandler::with_cv_pixel_buf(&pixel_buf, None)?; + + let mut rect_request = vn::DetectFaceRectanglesRequest::new(); + rect_request.set_revision(vn::DetectFaceRectanglesRequest::REVISION_3); + + let requests = + ns::Array::::from_slice(&[&rect_request, &self.landmarks_request]); + if handler.perform(&requests).is_err() { + return None; + } + + let landmarks_results: Option>> = unsafe { + let raw: *const vn::Request = &*self.landmarks_request; + let face_req: &vn::DetectFaceRectanglesRequest = + &*(raw as *const vn::DetectFaceRectanglesRequest); + face_req.results() + }; + + let face_obs = landmarks_results + .as_ref() + .filter(|r| !r.is_empty()) + .and_then(|r| r.get(0).ok()); + + let face_obs = match face_obs { + Some(obs) => obs, + None => { + let results = rect_request.results()?; + if results.is_empty() { + return None; + } + results.get(0).ok()? + } + }; + + let head_roll = face_obs.roll().map(|n| n.as_f32()).unwrap_or(0.0); + let head_yaw = face_obs.yaw().map(|n| n.as_f32()).unwrap_or(0.0); + let head_pitch = face_obs.pitch().map(|n| n.as_f32()).unwrap_or(0.0); + let confidence = face_obs.confidence(); + + let (mouth_open, left_eye_open, right_eye_open) = extract_landmark_features(&face_obs); + + Some(FacePose { + head_pitch, + head_yaw, + head_roll, + mouth_open, + left_eye_open, + right_eye_open, + confidence, + }) + } +} + +fn create_landmarks_request() -> arc::R { + unsafe { + let cls = objc::objc_getClass(b"VNDetectFaceLandmarksRequest\0".as_ptr()); + match cls { + Some(cls) => { + let cls: &objc::Class = std::mem::transmute(cls); + cls.new() + } + None => { + tracing::warn!( + "VNDetectFaceLandmarksRequest not found, falling back to rectangles" + ); + let req = vn::DetectFaceRectanglesRequest::new(); + std::mem::transmute(req) + } + } + } +} + +fn extract_landmark_features(face: &vn::FaceObservation) -> (f32, f32, f32) { + let landmarks = match face.landmarks() { + Some(l) => l, + None => return (0.0, 1.0, 1.0), + }; + + let mouth_open = compute_mouth_openness(&landmarks); + let left_eye_open = compute_eye_openness(landmarks.left_eye()); + let right_eye_open = compute_eye_openness(landmarks.right_eye()); + + (mouth_open, left_eye_open, right_eye_open) +} + +fn compute_mouth_openness(landmarks: &vn::FaceLandmarks2d) -> f32 { + let inner_lips = match landmarks.inner_lips() { + Some(region) => region, + None => return 0.0, + }; + + let points = inner_lips.normalized_points(); + if points.len() < 6 { + return 0.0; + } + + let top = points[2]; + let bottom = points[points.len() - 2]; + let vertical = (top.y - bottom.y).abs() as f32; + + let left = points[0]; + let right = points[points.len() / 2]; + let horizontal = (right.x - left.x).abs() as f32; + + if horizontal < 1e-6 { + return 0.0; + } + + let ratio = vertical / horizontal; + (ratio * 3.0).clamp(0.0, 1.0) +} + +fn compute_eye_openness(eye_region: Option>) -> f32 { + let region = match eye_region { + Some(r) => r, + None => return 1.0, + }; + + let points = region.normalized_points(); + if points.len() < 6 { + return 1.0; + } + + let half = points.len() / 2; + let top = points[half / 2]; + let bottom = points[half + half / 2]; + let vertical = (top.y - bottom.y).abs() as f32; + + let left = points[0]; + let right = points[half]; + let horizontal = (right.x - left.x).abs() as f32; + + if horizontal < 1e-6 { + return 1.0; + } + + let ratio = vertical / horizontal; + (ratio * 4.0).clamp(0.0, 1.0) +} + +unsafe fn rgba_to_bgra_copy( + src: &[u8], + dst: *mut u8, + width: usize, + height: usize, + src_row_bytes: usize, + dst_row_bytes: usize, +) { + for y in 0..height { + let src_row = &src[y * src_row_bytes..]; + let dst_row = unsafe { dst.add(y * dst_row_bytes) }; + for x in 0..width { + let si = x * 4; + let di = x * 4; + let r = src_row[si]; + let g = src_row[si + 1]; + let b = src_row[si + 2]; + let a = src_row[si + 3]; + unsafe { + *dst_row.add(di) = b; + *dst_row.add(di + 1) = g; + *dst_row.add(di + 2) = r; + *dst_row.add(di + 3) = a; + } + } + } +} + +unsafe extern "C-unwind" { + fn CVPixelBufferGetBaseAddress(pixel_buffer: &cv::PixelBuf) -> *mut c_void; + fn CVPixelBufferGetBytesPerRow(pixel_buffer: &cv::PixelBuf) -> usize; +} From 581792b56047c081a033ca7d8939371871c6e54e Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:24:52 +0700 Subject: [PATCH 06/15] feat(avatar): integrate face tracking into rendering pipeline --- crates/rendering/Cargo.toml | 1 + crates/rendering/src/avatar.rs | 12 +----------- crates/rendering/src/lib.rs | 29 ++++++++++++++++++++++++++--- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/crates/rendering/Cargo.toml b/crates/rendering/Cargo.toml index 8727008bcb..829d0f5a22 100644 --- a/crates/rendering/Cargo.toml +++ b/crates/rendering/Cargo.toml @@ -9,6 +9,7 @@ workspace = true [dependencies] anyhow.workspace = true bytemuck = { version = "1.7", features = ["derive"] } +cap-face-tracking = { path = "../face-tracking" } cap-flags = { path = "../flags" } cap-project = { path = "../project" } cap-video-decode = { path = "../video-decode" } diff --git a/crates/rendering/src/avatar.rs b/crates/rendering/src/avatar.rs index 72bd45e38c..4be9afcc62 100644 --- a/crates/rendering/src/avatar.rs +++ b/crates/rendering/src/avatar.rs @@ -1,19 +1,9 @@ use bytemuck::{Pod, Zeroable}; +pub use cap_face_tracking::FacePose; use wgpu::util::DeviceExt; const AVATAR_SIZE: u32 = 512; -#[derive(Clone, Debug, Default)] -pub struct FacePose { - pub head_pitch: f32, - pub head_yaw: f32, - pub head_roll: f32, - pub mouth_open: f32, - pub left_eye_open: f32, - pub right_eye_open: f32, - pub confidence: f32, -} - #[repr(C)] #[derive(Copy, Clone, Debug, Pod, Zeroable)] pub struct AvatarUniforms { diff --git a/crates/rendering/src/lib.rs b/crates/rendering/src/lib.rs index b2b2f11acc..abd65aabd4 100644 --- a/crates/rendering/src/lib.rs +++ b/crates/rendering/src/lib.rs @@ -2608,8 +2608,9 @@ pub struct RendererLayers { text: TextLayer, captions: CaptionsLayer, avatar: Option, - avatar_face_pose: crate::avatar::FacePose, + avatar_face_pose: cap_face_tracking::FacePose, avatar_enabled: bool, + face_tracker: Option, } impl RendererLayers { @@ -2650,8 +2651,9 @@ impl RendererLayers { text: TextLayer::new(device, queue), captions: CaptionsLayer::new(device, queue), avatar: None, - avatar_face_pose: crate::avatar::FacePose::default(), + avatar_face_pose: cap_face_tracking::FacePose::default(), avatar_enabled: false, + face_tracker: None, } } @@ -2683,10 +2685,11 @@ impl RendererLayers { self.avatar_enabled = enabled; if enabled && self.avatar.is_none() { self.avatar = Some(crate::avatar::AvatarRenderer::new(device)); + self.face_tracker = Some(cap_face_tracking::FaceTracker::new()); } } - pub fn set_avatar_face_pose(&mut self, pose: crate::avatar::FacePose) { + pub fn set_avatar_face_pose(&mut self, pose: cap_face_tracking::FacePose) { self.avatar_face_pose = pose; } @@ -2727,6 +2730,16 @@ impl RendererLayers { ); if self.avatar_enabled { + if let Some(ref mut face_tracker) = self.face_tracker { + if let Some(camera_frame) = segment_frames.camera_frame.as_ref() { + let raw_pose = face_tracker.track( + camera_frame.data(), + camera_frame.width(), + camera_frame.height(), + ); + self.avatar_face_pose = raw_pose; + } + } if let Some(ref mut avatar) = self.avatar { avatar.render( &constants.device, @@ -2835,6 +2848,16 @@ impl RendererLayers { ); if self.avatar_enabled { + if let Some(ref mut face_tracker) = self.face_tracker { + if let Some(camera_frame) = segment_frames.camera_frame.as_ref() { + let raw_pose = face_tracker.track( + camera_frame.data(), + camera_frame.width(), + camera_frame.height(), + ); + self.avatar_face_pose = raw_pose; + } + } if let Some(ref mut avatar) = self.avatar { avatar.render( &constants.device, From 1943615f3d5a743ee7b4008c69b0592b5bb670b5 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:33:05 +0700 Subject: [PATCH 07/15] feat(avatar): add spring-smoothed face pose for organic avatar motion --- crates/rendering/src/avatar_smoothing.rs | 76 ++++++++++++++++++++++++ crates/rendering/src/lib.rs | 16 ++++- 2 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 crates/rendering/src/avatar_smoothing.rs diff --git a/crates/rendering/src/avatar_smoothing.rs b/crates/rendering/src/avatar_smoothing.rs new file mode 100644 index 0000000000..16c1893dd4 --- /dev/null +++ b/crates/rendering/src/avatar_smoothing.rs @@ -0,0 +1,76 @@ +use crate::spring_mass_damper::{SpringMassDamperSimulation, SpringMassDamperSimulationConfig}; +use cap_face_tracking::FacePose; +use cap_project::XY; + +pub struct FacePoseSmoother { + pitch_spring: SpringMassDamperSimulation, + yaw_spring: SpringMassDamperSimulation, + roll_spring: SpringMassDamperSimulation, + mouth_spring: SpringMassDamperSimulation, + left_eye_spring: SpringMassDamperSimulation, + right_eye_spring: SpringMassDamperSimulation, +} + +impl FacePoseSmoother { + pub fn new() -> Self { + let head_config = SpringMassDamperSimulationConfig { + tension: 300.0, + mass: 1.5, + friction: 25.0, + }; + let fast_config = SpringMassDamperSimulationConfig { + tension: 500.0, + mass: 0.8, + friction: 20.0, + }; + + fn make_spring(config: SpringMassDamperSimulationConfig) -> SpringMassDamperSimulation { + let mut sim = SpringMassDamperSimulation::new(config); + sim.set_position(XY::new(0.0, 0.0)); + sim.set_velocity(XY::new(0.0, 0.0)); + sim.set_target_position(XY::new(0.0, 0.0)); + sim + } + + Self { + pitch_spring: make_spring(head_config), + yaw_spring: make_spring(head_config), + roll_spring: make_spring(head_config), + mouth_spring: make_spring(fast_config), + left_eye_spring: make_spring(fast_config), + right_eye_spring: make_spring(fast_config), + } + } + + pub fn update(&mut self, raw_pose: &FacePose, dt_ms: f32) -> FacePose { + self.pitch_spring + .set_target_position(XY::new(raw_pose.head_pitch, 0.0)); + self.yaw_spring + .set_target_position(XY::new(raw_pose.head_yaw, 0.0)); + self.roll_spring + .set_target_position(XY::new(raw_pose.head_roll, 0.0)); + self.mouth_spring + .set_target_position(XY::new(raw_pose.mouth_open, 0.0)); + self.left_eye_spring + .set_target_position(XY::new(raw_pose.left_eye_open, 0.0)); + self.right_eye_spring + .set_target_position(XY::new(raw_pose.right_eye_open, 0.0)); + + self.pitch_spring.run(dt_ms); + self.yaw_spring.run(dt_ms); + self.roll_spring.run(dt_ms); + self.mouth_spring.run(dt_ms); + self.left_eye_spring.run(dt_ms); + self.right_eye_spring.run(dt_ms); + + FacePose { + head_pitch: self.pitch_spring.position.x, + head_yaw: self.yaw_spring.position.x, + head_roll: self.roll_spring.position.x, + mouth_open: self.mouth_spring.position.x.clamp(0.0, 1.0), + left_eye_open: self.left_eye_spring.position.x.clamp(0.0, 1.0), + right_eye_open: self.right_eye_spring.position.x.clamp(0.0, 1.0), + confidence: raw_pose.confidence, + } + } +} diff --git a/crates/rendering/src/lib.rs b/crates/rendering/src/lib.rs index abd65aabd4..85c2a26b45 100644 --- a/crates/rendering/src/lib.rs +++ b/crates/rendering/src/lib.rs @@ -20,6 +20,7 @@ use std::{path::PathBuf, time::Instant}; use tokio::sync::mpsc; pub mod avatar; +mod avatar_smoothing; pub mod composite_frame; mod coord; pub mod cpu_yuv; @@ -2611,6 +2612,7 @@ pub struct RendererLayers { avatar_face_pose: cap_face_tracking::FacePose, avatar_enabled: bool, face_tracker: Option, + face_pose_smoother: Option, } impl RendererLayers { @@ -2654,6 +2656,7 @@ impl RendererLayers { avatar_face_pose: cap_face_tracking::FacePose::default(), avatar_enabled: false, face_tracker: None, + face_pose_smoother: None, } } @@ -2686,6 +2689,7 @@ impl RendererLayers { if enabled && self.avatar.is_none() { self.avatar = Some(crate::avatar::AvatarRenderer::new(device)); self.face_tracker = Some(cap_face_tracking::FaceTracker::new()); + self.face_pose_smoother = Some(avatar_smoothing::FacePoseSmoother::new()); } } @@ -2737,7 +2741,11 @@ impl RendererLayers { camera_frame.width(), camera_frame.height(), ); - self.avatar_face_pose = raw_pose; + if let Some(ref mut smoother) = self.face_pose_smoother { + self.avatar_face_pose = smoother.update(&raw_pose, 33.0); + } else { + self.avatar_face_pose = raw_pose; + } } } if let Some(ref mut avatar) = self.avatar { @@ -2855,7 +2863,11 @@ impl RendererLayers { camera_frame.width(), camera_frame.height(), ); - self.avatar_face_pose = raw_pose; + if let Some(ref mut smoother) = self.face_pose_smoother { + self.avatar_face_pose = smoother.update(&raw_pose, 33.0); + } else { + self.avatar_face_pose = raw_pose; + } } } if let Some(ref mut avatar) = self.avatar { From 0e0b9010bc3dc4802e1cd3d89c4deb6444451e43 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 14:39:04 +0700 Subject: [PATCH 08/15] chore: update Cargo.lock for face-tracking crate --- Cargo.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.lock b/Cargo.lock index 3378507ad0..5ae3439719 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1609,6 +1609,7 @@ dependencies = [ "build-time", "bytemuck", "cap-cursor-info", + "cap-face-tracking", "cap-flags", "cap-project", "cap-video-decode", From 69497a021e70fdd057f49ee638899765f3f21160 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 15:45:39 +0700 Subject: [PATCH 09/15] fix(avatar): fix uniform buffer size mismatch causing wgpu crash --- apps/desktop/src-tauri/src/camera.rs | 231 +++++++++++++++--- apps/desktop/src-tauri/src/export.rs | 49 +++- apps/desktop/src-tauri/src/lib.rs | 7 + .../src-tauri/src/screenshot_editor.rs | 1 + apps/desktop/src-tauri/src/windows.rs | 21 +- crates/editor/src/editor.rs | 5 +- crates/editor/src/editor_instance.rs | 7 +- crates/export/src/lib.rs | 17 +- crates/rendering/src/avatar.rs | 6 +- crates/rendering/src/lib.rs | 14 +- .../rendering/src/shaders/avatar-clawd.wgsl | 2 +- 11 files changed, 301 insertions(+), 59 deletions(-) diff --git a/apps/desktop/src-tauri/src/camera.rs b/apps/desktop/src-tauri/src/camera.rs index fdd3199071..5b1797639f 100644 --- a/apps/desktop/src-tauri/src/camera.rs +++ b/apps/desktop/src-tauri/src/camera.rs @@ -169,6 +169,7 @@ impl CameraPreviewManager { &mut self, window: WebviewWindow, actor: ActorRef, + avatar_mode: bool, ) -> anyhow::Result<()> { if let Some(preview) = &mut self.preview { actor @@ -176,6 +177,12 @@ impl CameraPreviewManager { .await .context("Error re-attaching camera feed consumer")?; + preview + .reconfigure + .send(ReconfigureEvent::AvatarMode(avatar_mode)) + .map_err(|err| error!("Error sending avatar mode update: {err}")) + .ok(); + if preview.is_paused { preview.is_paused = false; preview @@ -216,6 +223,7 @@ impl CameraPreviewManager { window.clone(), &default_state, self.wgpu_instance.clone(), + avatar_mode, ) .await?; window @@ -276,6 +284,7 @@ impl CameraPreviewManager { enum ReconfigureEvent { State(CameraPreviewState), WindowResized { width: u32, height: u32 }, + AvatarMode(bool), Pause, Resume, Shutdown, @@ -294,6 +303,7 @@ impl InitializedCameraPreview { window: WebviewWindow, default_state: &CameraPreviewState, instance: wgpu::Instance, + avatar_mode: bool, ) -> anyhow::Result { let aspect = if default_state.shape == CameraPreviewShape::Full { 16.0 / 9.0 @@ -520,6 +530,22 @@ impl InitializedCameraPreview { ..Default::default() }); + let avatar_renderer = if avatar_mode { + Some(cap_rendering::avatar::AvatarRenderer::new(&device)) + } else { + None + }; + let face_tracker = if avatar_mode { + Some(cap_rendering::cap_face_tracking::FaceTracker::new()) + } else { + None + }; + let face_pose_smoother = if avatar_mode { + Some(cap_rendering::avatar_smoothing::FacePoseSmoother::new()) + } else { + None + }; + let mut renderer = Renderer { surface: Some(surface), surface_config, @@ -534,6 +560,11 @@ impl InitializedCameraPreview { uniform_bind_group, texture: Cached::default(), aspect_ratio: Cached::default(), + avatar_mode, + avatar_renderer, + face_tracker, + face_pose_smoother, + avatar_face_pose: cap_rendering::cap_face_tracking::FacePose::default(), }; renderer.update_state_uniforms(default_state); @@ -586,6 +617,11 @@ struct Renderer { uniform_bind_group: wgpu::BindGroup, texture: Cached<(u32, u32), PreparedTexture>, aspect_ratio: Cached, + avatar_mode: bool, + avatar_renderer: Option, + face_tracker: Option, + face_pose_smoother: Option, + avatar_face_pose: cap_rendering::cap_face_tracking::FacePose, } impl Renderer { @@ -646,6 +682,10 @@ impl Renderer { Ok(ReconfigureEvent::WindowResized { width, height }) => { self.reconfigure_gpu_surface(width, height); } + Ok(ReconfigureEvent::AvatarMode(enabled)) => { + self.apply_avatar_mode(enabled); + self.texture = Cached::default(); + } Ok(ReconfigureEvent::Pause) => {} Err(_) => { continue; @@ -700,58 +740,147 @@ impl Renderer { match event { Ok(frame) => { received_first_frame = true; - let aspect_ratio = frame.inner.width() as f32 / frame.inner.height() as f32; - self.sync_ratio_uniform_and_resize_window_to_it(&window, &state, aspect_ratio) - .await; - let surface_result = self.surface.as_ref().and_then(|s| { - s.get_current_texture() - .map_err(|err| { - error!("Error getting camera renderer surface texture: {err:?}") - }) - .ok() - }); - if let Some(surface) = surface_result { - let output_width = 1280; - let output_height = (1280.0 / aspect_ratio) as u32; + if self.avatar_mode { + let cam_aspect = frame.inner.width() as f32 / frame.inner.height() as f32; + let tracking_width = 640u32; + let tracking_height = (640.0 / cam_aspect) as u32; - let resampler_frame = resampler_frame - .get_or_init((output_width, output_height), frame::Video::empty); + let tracking_frame = resampler_frame + .get_or_init((tracking_width, tracking_height), frame::Video::empty); scaler.cached( frame.inner.format(), frame.inner.width(), frame.inner.height(), format::Pixel::RGBA, - output_width, - output_height, + tracking_width, + tracking_height, ffmpeg::software::scaling::flag::Flags::FAST_BILINEAR, ); - if let Err(err) = scaler.run(&frame.inner, resampler_frame) { - error!("Error rescaling frame with ffmpeg: {err:?}"); + if let Err(err) = scaler.run(&frame.inner, tracking_frame) { + error!("Error rescaling frame for face tracking: {err:?}"); continue 'main_loop; } - self.texture - .get_or_init((output_width, output_height), || { - PreparedTexture::init( - self.device.clone(), - self.queue.clone(), - &self.sampler, - &self.bind_group_layout, - self.uniform_bind_group.clone(), - self.render_pipeline.clone(), - output_width, - output_height, - ) - }) - .render( - &surface, - resampler_frame.data(0), - resampler_frame.stride(0) as u32, + if let Some(ref mut tracker) = self.face_tracker { + let raw_pose = tracker.track( + tracking_frame.data(0), + tracking_width, + tracking_height, + ); + if let Some(ref mut smoother) = self.face_pose_smoother { + self.avatar_face_pose = smoother.update(&raw_pose, 33.0); + } else { + self.avatar_face_pose = raw_pose; + } + } + + let avatar_size = cap_rendering::avatar::AvatarRenderer::size(); + let avatar_rgba = if let Some(ref mut avatar) = self.avatar_renderer { + avatar.render( + &self.device, + &self.queue, + &self.avatar_face_pose, + 1.0 / 30.0, ); - surface.present(); + Some(avatar.output_rgba().to_vec()) + } else { + None + }; + + if let Some(rgba_data) = avatar_rgba { + self.sync_ratio_uniform_and_resize_window_to_it( + &window, &state, 1.0_f32, + ) + .await; + + let surface_result = self.surface.as_ref().and_then(|s| { + s.get_current_texture() + .map_err(|err| { + error!( + "Error getting camera renderer surface texture: {err:?}" + ) + }) + .ok() + }); + if let Some(surface) = surface_result { + self.texture + .get_or_init((avatar_size, avatar_size), || { + PreparedTexture::init( + self.device.clone(), + self.queue.clone(), + &self.sampler, + &self.bind_group_layout, + self.uniform_bind_group.clone(), + self.render_pipeline.clone(), + avatar_size, + avatar_size, + ) + }) + .render(&surface, &rgba_data, avatar_size * 4); + surface.present(); + } + } + } else { + let aspect_ratio = frame.inner.width() as f32 / frame.inner.height() as f32; + self.sync_ratio_uniform_and_resize_window_to_it( + &window, + &state, + aspect_ratio, + ) + .await; + + let surface_result = self.surface.as_ref().and_then(|s| { + s.get_current_texture() + .map_err(|err| { + error!("Error getting camera renderer surface texture: {err:?}") + }) + .ok() + }); + if let Some(surface) = surface_result { + let output_width = 1280; + let output_height = (1280.0 / aspect_ratio) as u32; + + let resampler_frame = resampler_frame + .get_or_init((output_width, output_height), frame::Video::empty); + + scaler.cached( + frame.inner.format(), + frame.inner.width(), + frame.inner.height(), + format::Pixel::RGBA, + output_width, + output_height, + ffmpeg::software::scaling::flag::Flags::FAST_BILINEAR, + ); + + if let Err(err) = scaler.run(&frame.inner, resampler_frame) { + error!("Error rescaling frame with ffmpeg: {err:?}"); + continue 'main_loop; + } + + self.texture + .get_or_init((output_width, output_height), || { + PreparedTexture::init( + self.device.clone(), + self.queue.clone(), + &self.sampler, + &self.bind_group_layout, + self.uniform_bind_group.clone(), + self.render_pipeline.clone(), + output_width, + output_height, + ) + }) + .render( + &surface, + resampler_frame.data(0), + resampler_frame.stride(0) as u32, + ); + surface.present(); + } } } Err(ReconfigureEvent::State(new_state)) => { @@ -781,6 +910,10 @@ impl Renderer { trace!("CameraPreview/ReconfigureEvent.WindowResized({width}x{height})"); self.reconfigure_gpu_surface(width, height); } + Err(ReconfigureEvent::AvatarMode(enabled)) => { + self.apply_avatar_mode(enabled); + self.texture = Cached::default(); + } Err(ReconfigureEvent::Pause) => { // When pausing, we hide the window to provide proper UX feedback. // The WGPU Surface and Device are kept alive to avoid repeated GPU @@ -839,6 +972,30 @@ impl Renderer { tokio::time::sleep(Duration::from_millis(50)).await; } + fn apply_avatar_mode(&mut self, enabled: bool) { + if self.avatar_mode == enabled { + return; + } + self.avatar_mode = enabled; + if enabled { + if self.avatar_renderer.is_none() { + self.avatar_renderer = + Some(cap_rendering::avatar::AvatarRenderer::new(&self.device)); + } + if self.face_tracker.is_none() { + self.face_tracker = Some(cap_rendering::cap_face_tracking::FaceTracker::new()); + } + if self.face_pose_smoother.is_none() { + self.face_pose_smoother = + Some(cap_rendering::avatar_smoothing::FacePoseSmoother::new()); + } + } else { + self.avatar_renderer = None; + self.face_tracker = None; + self.face_pose_smoother = None; + } + } + fn reconfigure_gpu_surface(&mut self, window_width: u32, window_height: u32) { self.surface_config.width = if window_width > 0 { window_width * GPU_SURFACE_SCALE diff --git a/apps/desktop/src-tauri/src/export.rs b/apps/desktop/src-tauri/src/export.rs index 0eba1e546a..09b3d235d8 100644 --- a/apps/desktop/src-tauri/src/export.rs +++ b/apps/desktop/src-tauri/src/export.rs @@ -1,4 +1,5 @@ use crate::editor_window::{OptionalWindowEditorInstance, WindowEditorInstance}; +use crate::general_settings::GeneralSettingsStore; use crate::{FramesRendered, get_video_metadata}; use cap_export::ExporterBase; use cap_project::{RecordingMeta, XY}; @@ -48,9 +49,11 @@ async fn do_export( settings: &ExportSettings, progress: &tauri::ipc::Channel, force_ffmpeg: bool, + avatar_mode: bool, ) -> Result { let exporter_base = ExporterBase::builder(project_path.to_path_buf()) .with_force_ffmpeg_decoder(force_ffmpeg) + .with_avatar_mode(avatar_mode) .build() .await .map_err(|e| e.to_string())?; @@ -99,8 +102,9 @@ fn is_frame_decode_error(error: &str) -> bool { #[tauri::command] #[specta::specta] -#[instrument(skip(progress, editor))] +#[instrument(skip(app, progress, editor))] pub async fn export_video( + app: tauri::AppHandle, project_path: PathBuf, progress: tauri::ipc::Channel, settings: ExportSettings, @@ -108,6 +112,12 @@ pub async fn export_video( ) -> Result { let force_ffmpeg = false; + let avatar_mode = GeneralSettingsStore::get(&app) + .ok() + .flatten() + .map(|s| s.avatar_mode) + .unwrap_or(false); + let _guard = if let Some(ref ed) = *editor { ed.export_active.store(true, Ordering::Release); tracing::info!("Pausing editor preview during export"); @@ -116,7 +126,14 @@ pub async fn export_video( None }; - let result = do_export(&project_path, &settings, &progress, force_ffmpeg).await; + let result = do_export( + &project_path, + &settings, + &progress, + force_ffmpeg, + avatar_mode, + ) + .await; match result { Ok(path) => { @@ -129,7 +146,8 @@ pub async fn export_video( e ); - let retry_result = do_export(&project_path, &settings, &progress, true).await; + let retry_result = + do_export(&project_path, &settings, &progress, true, avatar_mode).await; match retry_result { Ok(path) => { @@ -253,6 +271,7 @@ fn bpp_to_jpeg_quality(bpp: f32) -> u8 { #[specta::specta] #[instrument(skip_all)] pub async fn generate_export_preview( + app: tauri::AppHandle, project_path: PathBuf, frame_time: f64, settings: ExportPreviewSettings, @@ -261,6 +280,12 @@ pub async fn generate_export_preview( use cap_editor::create_segments; use std::time::Instant; + let avatar_mode = GeneralSettingsStore::get(&app) + .ok() + .flatten() + .map(|s| s.avatar_mode) + .unwrap_or(false); + let recording_meta = RecordingMeta::load_for_project(&project_path) .map_err(|e| format!("Failed to load recording meta: {e}"))?; @@ -275,15 +300,17 @@ pub async fn generate_export_preview( .map_err(|e| format!("Failed to load recordings: {e}"))?, ); - let render_constants = Arc::new( - RenderVideoConstants::new( + let render_constants = { + let mut rc = RenderVideoConstants::new( &recordings.segments, recording_meta.clone(), (**studio_meta).clone(), ) .await - .map_err(|e| format!("Failed to create render constants: {e}"))?, - ); + .map_err(|e| format!("Failed to create render constants: {e}"))?; + rc.options.avatar_mode = avatar_mode; + Arc::new(rc) + }; let segments = create_segments(&recording_meta, studio_meta, false) .await @@ -359,6 +386,10 @@ pub async fn generate_export_preview( render_constants.is_software_adapter, ); + if render_constants.options.avatar_mode { + layers.set_avatar_enabled(&render_constants.device, true); + } + let frame = frame_renderer .render_immediate( segment_frames, @@ -505,6 +536,10 @@ pub async fn generate_export_preview_fast( editor.render_constants.is_software_adapter, ); + if editor.render_constants.options.avatar_mode { + layers.set_avatar_enabled(&editor.render_constants.device, true); + } + let frame = frame_renderer .render_immediate(segment_frames, uniforms, &segment_media.cursor, &mut layers) .await diff --git a/apps/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs index 09916751a5..57e9b7b953 100644 --- a/apps/desktop/src-tauri/src/lib.rs +++ b/apps/desktop/src-tauri/src/lib.rs @@ -4079,6 +4079,12 @@ async fn create_editor_instance_impl( is_software_adapter: shared.is_software_adapter, }); + let avatar_mode = GeneralSettingsStore::get(&app) + .ok() + .flatten() + .map(|s| s.avatar_mode) + .unwrap_or(false); + let instance = { let app = app.clone(); EditorInstance::new( @@ -4088,6 +4094,7 @@ async fn create_editor_instance_impl( }, frame_cb, shared_device, + avatar_mode, ) .await? }; diff --git a/apps/desktop/src-tauri/src/screenshot_editor.rs b/apps/desktop/src-tauri/src/screenshot_editor.rs index 6dec290f6f..eeadcb7a4f 100644 --- a/apps/desktop/src-tauri/src/screenshot_editor.rs +++ b/apps/desktop/src-tauri/src/screenshot_editor.rs @@ -291,6 +291,7 @@ impl ScreenshotEditorInstances { let options = cap_rendering::RenderOptions { screen_size: cap_project::XY::new(width, height), camera_size: None, + avatar_mode: false, }; let studio_meta = match &recording_meta.inner { diff --git a/apps/desktop/src-tauri/src/windows.rs b/apps/desktop/src-tauri/src/windows.rs index d04e8039e4..8558a68403 100644 --- a/apps/desktop/src-tauri/src/windows.rs +++ b/apps/desktop/src-tauri/src/windows.rs @@ -694,10 +694,15 @@ impl ShowCapWindow { }; if enable_native_camera_preview { + let avatar_mode = GeneralSettingsStore::get(app) + .ok() + .flatten() + .map(|s| s.avatar_mode) + .unwrap_or(false); let camera_feed = app_state.camera_feed.clone(); if let Err(err) = app_state .camera_preview - .init_window(window.clone(), camera_feed) + .init_window(window.clone(), camera_feed, avatar_mode) .await { error!( @@ -774,10 +779,15 @@ impl ShowCapWindow { }; if enable_native_camera_preview && !app_state.camera_preview.is_initialized() { + let avatar_mode = GeneralSettingsStore::get(app) + .ok() + .flatten() + .map(|s| s.avatar_mode) + .unwrap_or(false); let camera_feed = app_state.camera_feed.clone(); if let Err(err) = app_state .camera_preview - .init_window(window.clone(), camera_feed) + .init_window(window.clone(), camera_feed, avatar_mode) .await { error!( @@ -1670,10 +1680,15 @@ impl ShowCapWindow { } if enable_native_camera_preview { + let avatar_mode = GeneralSettingsStore::get(app) + .ok() + .flatten() + .map(|s| s.avatar_mode) + .unwrap_or(false); let camera_feed = state.camera_feed.clone(); if let Err(err) = state .camera_preview - .init_window(window.clone(), camera_feed) + .init_window(window.clone(), camera_feed, avatar_mode) .await { error!( diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 3ceca87143..45e31109d4 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -49,11 +49,14 @@ pub fn start_renderer_layers_creation( std::thread::Builder::new() .name("renderer-layers-init".into()) .spawn(move || { - let layers = RendererLayers::new_with_options( + let mut layers = RendererLayers::new_with_options( &constants.device, &constants.queue, constants.is_software_adapter, ); + if constants.options.avatar_mode { + layers.set_avatar_enabled(&constants.device, true); + } let _ = layers_tx.send(layers); }) .expect("failed to spawn renderer layers init thread"); diff --git a/crates/editor/src/editor_instance.rs b/crates/editor/src/editor_instance.rs index bf42055aa6..2ff58e920f 100644 --- a/crates/editor/src/editor_instance.rs +++ b/crates/editor/src/editor_instance.rs @@ -96,6 +96,7 @@ impl EditorInstance { on_state_change: impl Fn(&EditorState) + Send + Sync + 'static, frame_cb: Box, shared_device: Option, + avatar_mode: bool, ) -> Result, String> { if !project_path.exists() { return Err(format!("Video path {} not found!", project_path.display())); @@ -251,22 +252,24 @@ impl EditorInstance { )?); let render_constants = if let Some(shared) = shared_device { - let rc = RenderVideoConstants::new_with_device( + let mut rc = RenderVideoConstants::new_with_device( shared, &recordings.segments, recording_meta.clone(), (**meta).clone(), ) .map_err(|e| format!("Failed to create render constants: {e}"))?; + rc.options.avatar_mode = avatar_mode; Arc::new(rc) } else { - let rc = RenderVideoConstants::new( + let mut rc = RenderVideoConstants::new( &recordings.segments, recording_meta.clone(), (**meta).clone(), ) .await .map_err(|e| format!("Failed to create render constants: {e}"))?; + rc.options.avatar_mode = avatar_mode; Arc::new(rc) }; diff --git a/crates/export/src/lib.rs b/crates/export/src/lib.rs index cd593a0268..272f96a1d0 100644 --- a/crates/export/src/lib.rs +++ b/crates/export/src/lib.rs @@ -53,6 +53,7 @@ pub struct ExporterBuilder { config: Option, output_path: Option, force_ffmpeg_decoder: bool, + avatar_mode: bool, } impl ExporterBuilder { @@ -71,6 +72,11 @@ impl ExporterBuilder { self } + pub fn with_avatar_mode(mut self, avatar_mode: bool) -> Self { + self.avatar_mode = avatar_mode; + self + } + pub async fn build(self) -> Result { type Error = ExporterBuildError; @@ -91,15 +97,17 @@ impl ExporterBuilder { .map_err(Error::RecordingsMeta)?, ); - let render_constants = Arc::new( - RenderVideoConstants::new( + let render_constants = { + let mut rc = RenderVideoConstants::new( &recordings.segments, recording_meta.clone(), studio_meta.clone(), ) .await - .map_err(Error::RendererSetup)?, - ); + .map_err(Error::RendererSetup)?; + rc.options.avatar_mode = self.avatar_mode; + Arc::new(rc) + }; let segments = cap_editor::create_segments(&recording_meta, studio_meta, self.force_ffmpeg_decoder) @@ -157,6 +165,7 @@ impl ExporterBase { config: None, output_path: None, force_ffmpeg_decoder: false, + avatar_mode: false, } } } diff --git a/crates/rendering/src/avatar.rs b/crates/rendering/src/avatar.rs index 4be9afcc62..bec5664569 100644 --- a/crates/rendering/src/avatar.rs +++ b/crates/rendering/src/avatar.rs @@ -14,7 +14,7 @@ pub struct AvatarUniforms { pub breathing_phase: f32, pub bounce: f32, pub bg_color: [f32; 4], - pub _padding: [f32; 2], + pub _padding: [f32; 4], } impl Default for AvatarUniforms { @@ -27,7 +27,7 @@ impl Default for AvatarUniforms { breathing_phase: 0.0, bounce: 0.0, bg_color: [0.15, 0.15, 0.18, 1.0], - _padding: [0.0; 2], + _padding: [0.0; 4], } } } @@ -253,7 +253,7 @@ impl AvatarRenderer { breathing_phase, bounce, bg_color: [0.15, 0.15, 0.18, 1.0], - _padding: [0.0; 2], + _padding: [0.0; 4], }; queue.write_buffer(&self.uniforms_buffer, 0, bytemuck::bytes_of(&uniforms)); diff --git a/crates/rendering/src/lib.rs b/crates/rendering/src/lib.rs index 85c2a26b45..926196be0a 100644 --- a/crates/rendering/src/lib.rs +++ b/crates/rendering/src/lib.rs @@ -20,7 +20,7 @@ use std::{path::PathBuf, time::Instant}; use tokio::sync::mpsc; pub mod avatar; -mod avatar_smoothing; +pub mod avatar_smoothing; pub mod composite_frame; mod coord; pub mod cpu_yuv; @@ -41,6 +41,7 @@ pub mod yuv_converter; mod zoom; pub mod zoom_focus_interpolation; +pub use cap_face_tracking; pub use coord::*; pub use decoder::{DecodedFrame, DecoderStatus, DecoderType, PixelFormat}; pub use frame_pipeline::{GpuOutputFormat, Nv12RenderedFrame, RenderedFrame}; @@ -127,6 +128,7 @@ fn rounding_type_value(style: CornerStyle) -> f32 { pub struct RenderOptions { pub camera_size: Option>, pub screen_size: XY, + pub avatar_mode: bool, } #[derive(Debug, Clone, Copy)] @@ -435,6 +437,10 @@ pub async fn render_video_to_channel( constants.is_software_adapter, ); + if constants.options.avatar_mode { + layers.set_avatar_enabled(&constants.device, true); + } + if let Some(first_segment) = render_segments.first() { let (screen_w, screen_h) = first_segment.decoders.screen_video_dimensions(); let camera_dims = first_segment.decoders.camera_video_dimensions(); @@ -727,6 +733,10 @@ pub async fn render_video_to_channel_nv12( constants.is_software_adapter, ); + if constants.options.avatar_mode { + layers.set_avatar_enabled(&constants.device, true); + } + if let Some(first_segment) = render_segments.first() { let (screen_w, screen_h) = first_segment.decoders.screen_video_dimensions(); let camera_dims = first_segment.decoders.camera_video_dimensions(); @@ -1080,6 +1090,7 @@ impl RenderVideoConstants { .camera .as_ref() .map(|c| XY::new(c.width, c.height)), + avatar_mode: false, }; let background_textures = Arc::new(tokio::sync::RwLock::new(HashMap::new())); @@ -1138,6 +1149,7 @@ impl RenderVideoConstants { .camera .as_ref() .map(|c| XY::new(c.width, c.height)), + avatar_mode: false, }; let instance = create_wgpu_instance().await; diff --git a/crates/rendering/src/shaders/avatar-clawd.wgsl b/crates/rendering/src/shaders/avatar-clawd.wgsl index 7a8be8094f..f5a4b1a09a 100644 --- a/crates/rendering/src/shaders/avatar-clawd.wgsl +++ b/crates/rendering/src/shaders/avatar-clawd.wgsl @@ -6,7 +6,7 @@ struct AvatarUniforms { breathing_phase: f32, bounce: f32, bg_color: vec4, - _padding: vec2, + _padding: vec4, }; @group(0) @binding(0) var u: AvatarUniforms; From 399951c8a8b8978026effdaf78cb0e16a7933038 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 16:09:19 +0700 Subject: [PATCH 10/15] fix(avatar): improve Clawd shader proportions with white outline --- .../rendering/src/shaders/avatar-clawd.wgsl | 143 ++++++++---------- 1 file changed, 59 insertions(+), 84 deletions(-) diff --git a/crates/rendering/src/shaders/avatar-clawd.wgsl b/crates/rendering/src/shaders/avatar-clawd.wgsl index f5a4b1a09a..50a66fc9e7 100644 --- a/crates/rendering/src/shaders/avatar-clawd.wgsl +++ b/crates/rendering/src/shaders/avatar-clawd.wgsl @@ -26,19 +26,14 @@ fn vs_main(@builtin(vertex_index) in_vertex_index: u32) -> VertexOutput { return out; } -fn sdf_rounded_rect(p: vec2, half_size: vec2, radius: f32) -> f32 { - let q = abs(p) - half_size + vec2(radius); - return length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - radius; -} - fn sdf_rect(p: vec2, half_size: vec2) -> f32 { let d = abs(p) - half_size; return length(max(d, vec2(0.0))) + min(max(d.x, d.y), 0.0); } -fn sdf_ellipse(p: vec2, radii: vec2) -> f32 { - let n = p / radii; - return (length(n) - 1.0) * min(radii.x, radii.y); +fn sdf_rounded_rect(p: vec2, half_size: vec2, radius: f32) -> f32 { + let q = abs(p) - half_size + vec2(radius); + return length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - radius; } fn alpha_from_sdf(d: f32, aa: f32) -> f32 { @@ -60,101 +55,81 @@ fn rotate_2d(p: vec2, angle: f32) -> vec2 { return vec2(p.x * c - p.y * s, p.x * s + p.y * c); } +fn clawd_body_sdf(p: vec2) -> f32 { + let main_body = sdf_rect(p - vec2(0.0, 0.0), vec2(0.19, 0.155)); + + let left_arm = sdf_rect(p - vec2(-0.225, -0.09), vec2(0.04, 0.065)); + let right_arm = sdf_rect(p - vec2(0.225, -0.09), vec2(0.04, 0.065)); + + let left_foot = sdf_rect(p - vec2(-0.095, 0.21), vec2(0.055, 0.06)); + let right_foot = sdf_rect(p - vec2(0.095, 0.21), vec2(0.055, 0.06)); + + var d = main_body; + d = min(d, left_arm); + d = min(d, right_arm); + d = min(d, left_foot); + d = min(d, right_foot); + + return d; +} + const BODY_COLOR: vec4 = vec4(0.831, 0.518, 0.353, 1.0); -const EYE_COLOR: vec4 = vec4(0.0, 0.0, 0.0, 1.0); -const HIGHLIGHT_COLOR: vec4 = vec4(1.0, 1.0, 1.0, 0.7); -const MOUTH_COLOR: vec4 = vec4(0.15, 0.08, 0.05, 1.0); -const SHADOW_COLOR: vec4 = vec4(0.0, 0.0, 0.0, 0.12); +const OUTLINE_COLOR: vec4 = vec4(1.0, 1.0, 1.0, 1.0); +const EYE_COLOR: vec4 = vec4(0.05, 0.05, 0.05, 1.0); +const MOUTH_COLOR: vec4 = vec4(0.12, 0.06, 0.04, 1.0); @fragment fn fs_main(@location(0) tex_coords: vec2) -> @location(0) vec4 { - let aa = 0.004; + let aa = 0.003; + let outline_width = 0.018; let pitch = u.head_rotation.x; let yaw = u.head_rotation.y; let roll = u.head_rotation.z; - let breath_scale = 1.0 + u.breathing_phase * 0.012; - let bounce_offset = u.bounce * 0.025; + let breath_scale = 1.0 + u.breathing_phase * 0.008; + let bounce_offset = u.bounce * 0.015; - var p = tex_coords - vec2(0.5, 0.5); + var p = tex_coords - vec2(0.5, 0.48); p.y += bounce_offset; - p = rotate_2d(p, roll * 0.3); - p.x -= yaw * 0.03; - p.y -= pitch * 0.03; + p = rotate_2d(p, roll * 0.25); + p.x -= yaw * 0.025; + p.y -= pitch * 0.02; p /= breath_scale; var color = u.bg_color; - let shadow_p = vec2(p.x, p.y - 0.195); - let shadow_d = sdf_ellipse(shadow_p, vec2(0.17, 0.025)); - let shadow_a = alpha_from_sdf(shadow_d, aa * 4.0) * SHADOW_COLOR.a; - color = blend_over(color, vec4(SHADOW_COLOR.rgb, shadow_a)); + let body_d = clawd_body_sdf(p); + + let outline_d = body_d - outline_width; + let outline_a = alpha_from_sdf(outline_d, aa * 2.0); + color = blend_over(color, vec4(OUTLINE_COLOR.rgb, outline_a * OUTLINE_COLOR.a)); - let body_half = vec2(0.18, 0.16); - let body_d = sdf_rounded_rect(p, body_half, 0.025); let body_a = alpha_from_sdf(body_d, aa); color = blend_over(color, vec4(BODY_COLOR.rgb, body_a * BODY_COLOR.a)); - let left_arm_center = vec2(-0.215, -0.08); - let left_arm_p = p - left_arm_center; - let left_arm_d = sdf_rounded_rect(left_arm_p, vec2(0.045, 0.05), 0.012); - let left_arm_a = alpha_from_sdf(left_arm_d, aa); - color = blend_over(color, vec4(BODY_COLOR.rgb, left_arm_a * BODY_COLOR.a)); - - let right_arm_center = vec2(0.215, -0.08); - let right_arm_p = p - right_arm_center; - let right_arm_d = sdf_rounded_rect(right_arm_p, vec2(0.045, 0.05), 0.012); - let right_arm_a = alpha_from_sdf(right_arm_d, aa); - color = blend_over(color, vec4(BODY_COLOR.rgb, right_arm_a * BODY_COLOR.a)); - - let left_foot_center = vec2(-0.08, 0.19); - let left_foot_p = p - left_foot_center; - let left_foot_d = sdf_rounded_rect(left_foot_p, vec2(0.06, 0.04), 0.01); - let left_foot_a = alpha_from_sdf(left_foot_d, aa); - color = blend_over(color, vec4(BODY_COLOR.rgb, left_foot_a * BODY_COLOR.a)); - - let right_foot_center = vec2(0.08, 0.19); - let right_foot_p = p - right_foot_center; - let right_foot_d = sdf_rounded_rect(right_foot_p, vec2(0.06, 0.04), 0.01); - let right_foot_a = alpha_from_sdf(right_foot_d, aa); - color = blend_over(color, vec4(BODY_COLOR.rgb, right_foot_a * BODY_COLOR.a)); - - let eye_base_h = 0.032; - let left_eye_h = eye_base_h * max(u.left_eye_open, 0.05); - let left_eye_center = vec2(-0.065, -0.03); - let left_eye_p = p - left_eye_center; - let left_eye_d = sdf_rect(left_eye_p, vec2(0.03, left_eye_h)); - let left_eye_a = alpha_from_sdf(left_eye_d, aa); - color = blend_over(color, vec4(EYE_COLOR.rgb, left_eye_a * EYE_COLOR.a * body_a)); - - let right_eye_h = eye_base_h * max(u.right_eye_open, 0.05); - let right_eye_center = vec2(0.065, -0.03); - let right_eye_p = p - right_eye_center; - let right_eye_d = sdf_rect(right_eye_p, vec2(0.03, right_eye_h)); - let right_eye_a = alpha_from_sdf(right_eye_d, aa); - color = blend_over(color, vec4(EYE_COLOR.rgb, right_eye_a * EYE_COLOR.a * body_a)); - - let highlight_offset = vec2(-0.012 + yaw * 0.015, -0.012); - let highlight_size = vec2(0.01, 0.01); - - let lh_p = p - (left_eye_center + highlight_offset); - let lh_d = sdf_rect(lh_p, highlight_size); - let lh_a = alpha_from_sdf(lh_d, aa) * HIGHLIGHT_COLOR.a * step(0.3, u.left_eye_open); - color = blend_over(color, vec4(HIGHLIGHT_COLOR.rgb, lh_a * body_a)); - - let rh_p = p - (right_eye_center + highlight_offset); - let rh_d = sdf_rect(rh_p, highlight_size); - let rh_a = alpha_from_sdf(rh_d, aa) * HIGHLIGHT_COLOR.a * step(0.3, u.right_eye_open); - color = blend_over(color, vec4(HIGHLIGHT_COLOR.rgb, rh_a * body_a)); - - let mouth_height = u.mouth_open * 0.045; - if u.mouth_open > 0.01 { - let mouth_center = vec2(0.0, 0.1 + mouth_height * 0.3); - let mouth_p = p - mouth_center; - let mouth_d = sdf_rounded_rect(mouth_p, vec2(0.055, mouth_height), 0.015); - let mouth_a = alpha_from_sdf(mouth_d, aa); - color = blend_over(color, vec4(MOUTH_COLOR.rgb, mouth_a * MOUTH_COLOR.a * body_a)); + let eye_yaw_shift = yaw * 0.012; + + let eye_base_h = 0.028; + let left_eye_h = eye_base_h * max(u.left_eye_open, 0.08); + let left_eye_center = vec2(-0.075 + eye_yaw_shift, -0.04); + let left_eye_d = sdf_rect(p - left_eye_center, vec2(0.028, left_eye_h)); + let left_eye_a = alpha_from_sdf(left_eye_d, aa) * body_a; + color = blend_over(color, vec4(EYE_COLOR.rgb, left_eye_a)); + + let right_eye_h = eye_base_h * max(u.right_eye_open, 0.08); + let right_eye_center = vec2(0.075 + eye_yaw_shift, -0.04); + let right_eye_d = sdf_rect(p - right_eye_center, vec2(0.028, right_eye_h)); + let right_eye_a = alpha_from_sdf(right_eye_d, aa) * body_a; + color = blend_over(color, vec4(EYE_COLOR.rgb, right_eye_a)); + + let mouth_height = u.mouth_open * 0.05; + if u.mouth_open > 0.05 { + let mouth_center = vec2(0.0 + eye_yaw_shift * 0.5, 0.155); + let mouth_half = vec2(0.035, mouth_height * 0.5 + 0.005); + let mouth_d = sdf_rounded_rect(p - mouth_center, mouth_half, 0.008); + let mouth_a = alpha_from_sdf(mouth_d, aa) * body_a; + color = blend_over(color, vec4(MOUTH_COLOR.rgb, mouth_a)); } return color; From ca603d695a5a37364f08ae10149ac32b6dccbab3 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 16:23:40 +0700 Subject: [PATCH 11/15] feat(avatar): wire Rive integration with Canvas2D Clawd fallback and face tracking events --- apps/desktop/package.json | 4 +- apps/desktop/src-tauri/src/camera.rs | 26 ++- apps/desktop/src-tauri/src/lib.rs | 1 + apps/desktop/src/routes/camera.tsx | 166 +++++++++++++++- apps/desktop/src/utils/tauri.ts | 6 +- pnpm-lock.yaml | 275 ++++++++++++++------------- 6 files changed, 335 insertions(+), 143 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 49eb8f37a8..cd08762050 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -20,7 +20,7 @@ "@corvu/tooltip": "^0.2.1", "@kobalte/core": "^0.13.7", "@radix-ui/colors": "^3.0.0", - "@rive-app/canvas": "^2.32.2", + "@rive-app/canvas": "^2.33.1", "@solid-primitives/bounds": "^0.0.122", "@solid-primitives/broadcast-channel": "^0.1.1", "@solid-primitives/context": "^0.2.3", @@ -74,12 +74,12 @@ }, "devDependencies": { "@fontsource/geist-sans": "^5.0.3", - "@webgpu/types": "^0.1.44", "@iconify/json": "^2.2.239", "@tauri-apps/cli": ">=2.1.0", "@total-typescript/ts-reset": "^0.6.1", "@types/dom-webcodecs": "^0.1.11", "@types/uuid": "^9.0.8", + "@webgpu/types": "^0.1.44", "cross-env": "^7.0.3", "typescript": "^5.8.3", "vite": "^6.3.5", diff --git a/apps/desktop/src-tauri/src/camera.rs b/apps/desktop/src-tauri/src/camera.rs index 5b1797639f..7c4cfee5ec 100644 --- a/apps/desktop/src-tauri/src/camera.rs +++ b/apps/desktop/src-tauri/src/camera.rs @@ -18,7 +18,8 @@ use std::{ }, thread, }; -use tauri::{LogicalPosition, LogicalSize, PhysicalSize, WebviewWindow}; +use tauri::{LogicalPosition, LogicalSize, Manager, PhysicalSize, WebviewWindow}; +use tauri_specta::Event; use tokio::{ runtime::Runtime, sync::{broadcast, oneshot}, @@ -28,6 +29,17 @@ use tokio::{ use tracing::{error, info, trace, warn}; use wgpu::{CompositeAlphaMode, SurfaceTexture}; +#[derive(Serialize, Type, tauri_specta::Event, Debug, Clone)] +pub struct FaceTrackingUpdate { + pub head_pitch: f32, + pub head_yaw: f32, + pub head_roll: f32, + pub mouth_open: f32, + pub left_eye_open: f32, + pub right_eye_open: f32, + pub confidence: f32, +} + static TOOLBAR_HEIGHT: f32 = 56.0; static GPU_SURFACE_SCALE: u32 = 4; @@ -777,6 +789,18 @@ impl Renderer { } } + FaceTrackingUpdate { + head_pitch: self.avatar_face_pose.head_pitch, + head_yaw: self.avatar_face_pose.head_yaw, + head_roll: self.avatar_face_pose.head_roll, + mouth_open: self.avatar_face_pose.mouth_open, + left_eye_open: self.avatar_face_pose.left_eye_open, + right_eye_open: self.avatar_face_pose.right_eye_open, + confidence: self.avatar_face_pose.confidence, + } + .emit(window.app_handle()) + .ok(); + let avatar_size = cap_rendering::avatar::AvatarRenderer::size(); let avatar_rgba = if let Some(ref mut avatar) = self.avatar_renderer { avatar.render( diff --git a/apps/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs index 57e9b7b953..3a98ea7a65 100644 --- a/apps/desktop/src-tauri/src/lib.rs +++ b/apps/desktop/src-tauri/src/lib.rs @@ -3191,6 +3191,7 @@ pub async fn run(recording_logging_handle: LoggingHandle, logs_dir: PathBuf) { import::VideoImportProgress, SetCaptureAreaPending, DevicesUpdated, + camera::FaceTrackingUpdate, ]) .error_handling(tauri_specta::ErrorHandlingMode::Throw) .typ::() diff --git a/apps/desktop/src/routes/camera.tsx b/apps/desktop/src/routes/camera.tsx index 3342c97cd9..dde6a9e61a 100644 --- a/apps/desktop/src/routes/camera.tsx +++ b/apps/desktop/src/routes/camera.tsx @@ -101,6 +101,7 @@ export default function () { const isNativePreviewEnabled = (type() !== "windows" && generalSettings.data?.enableNativeCameraPreview) || false; + const avatarMode = () => generalSettings.data?.avatarMode ?? false; const [cameraDisconnected, setCameraDisconnected] = createSignal(false); @@ -169,15 +170,174 @@ export default function () { return ( } + when={avatarMode()} + fallback={ + + } + > + + + } > - + ); } +function drawClawdShape(ctx: CanvasRenderingContext2D, s: number, pad: number) { + ctx.beginPath(); + ctx.rect( + -s * 0.48 - pad, + -s * 0.42 - pad, + s * 0.96 + pad * 2, + s * 0.84 + pad * 2, + ); + ctx.fill(); + ctx.beginPath(); + ctx.rect(-s * 0.65 - pad, -s * 0.35 - pad, s * 0.2 + pad, s * 0.3 + pad * 2); + ctx.fill(); + ctx.beginPath(); + ctx.rect(s * 0.45, -s * 0.35 - pad, s * 0.2 + pad, s * 0.3 + pad * 2); + ctx.fill(); + ctx.beginPath(); + ctx.rect(-s * 0.38 - pad, s * 0.42, s * 0.28 + pad, s * 0.28 + pad); + ctx.fill(); + ctx.beginPath(); + ctx.rect(s * 0.1, s * 0.42, s * 0.28 + pad, s * 0.28 + pad); + ctx.fill(); +} + +function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { + let canvasRef: HTMLCanvasElement | undefined; + const [faceData, setFaceData] = createSignal({ + headPitch: 0, + headYaw: 0, + headRoll: 0, + mouthOpen: 0, + leftEyeOpen: 1, + rightEyeOpen: 1, + confidence: 0, + }); + + createTauriEventListener(events.faceTrackingUpdate, (payload) => { + setFaceData({ + headPitch: payload.head_pitch, + headYaw: payload.head_yaw, + headRoll: payload.head_roll, + mouthOpen: payload.mouth_open, + leftEyeOpen: payload.left_eye_open, + rightEyeOpen: payload.right_eye_open, + confidence: payload.confidence, + }); + }); + + onMount(() => { + getCurrentWindow().show(); + + if (!canvasRef) return; + const ctx = canvasRef.getContext("2d"); + if (!ctx) return; + + let animationId: number; + + const draw = () => { + if (!canvasRef) return; + const data = faceData(); + const w = canvasRef.width; + const h = canvasRef.height; + ctx.clearRect(0, 0, w, h); + + ctx.fillStyle = "#262629"; + ctx.fillRect(0, 0, w, h); + + ctx.save(); + ctx.translate(w / 2, h / 2); + + ctx.rotate(data.headRoll * 0.25); + ctx.translate(data.headYaw * 15, data.headPitch * 10); + + const breath = 1 + Math.sin(Date.now() * 0.003) * 0.01; + ctx.scale(breath, breath); + + const s = Math.min(w, h) * 0.35; + + ctx.fillStyle = "#FFFFFF"; + drawClawdShape(ctx, s, 4); + + ctx.fillStyle = "#D4845A"; + drawClawdShape(ctx, s, 0); + + const eyeY = -s * 0.2; + const eyeSpacing = s * 0.35; + const eyeSize = s * 0.14; + + ctx.fillStyle = "#111111"; + const leftEyeH = eyeSize * Math.max(data.leftEyeOpen, 0.08); + ctx.fillRect( + -eyeSpacing - eyeSize / 2, + eyeY - leftEyeH / 2, + eyeSize, + leftEyeH, + ); + const rightEyeH = eyeSize * Math.max(data.rightEyeOpen, 0.08); + ctx.fillRect( + eyeSpacing - eyeSize / 2, + eyeY - rightEyeH / 2, + eyeSize, + rightEyeH, + ); + + if (data.mouthOpen > 0.05) { + const mouthH = data.mouthOpen * s * 0.2; + const mouthW = s * 0.2; + const mouthY = s * 0.35; + ctx.fillStyle = "#2A1508"; + ctx.beginPath(); + ctx.roundRect( + -mouthW / 2, + mouthY - mouthH / 2, + mouthW, + mouthH, + mouthH * 0.3, + ); + ctx.fill(); + } + + ctx.restore(); + animationId = requestAnimationFrame(draw); + }; + + animationId = requestAnimationFrame(draw); + + onCleanup(() => { + cancelAnimationFrame(animationId); + }); + }); + + return ( +
+ + + + +
+ ); +} + function NativeCameraPreviewPage(props: { disconnected: Accessor }) { const isCameraOnlyMode = () => getCameraOnlyMode(); diff --git a/apps/desktop/src/utils/tauri.ts b/apps/desktop/src/utils/tauri.ts index b6cfbffa5d..b6bb606a9c 100644 --- a/apps/desktop/src/utils/tauri.ts +++ b/apps/desktop/src/utils/tauri.ts @@ -351,6 +351,7 @@ currentRecordingChanged: CurrentRecordingChanged, devicesUpdated: DevicesUpdated, downloadProgress: DownloadProgress, editorStateChanged: EditorStateChanged, +faceTrackingUpdate: FaceTrackingUpdate, newNotification: NewNotification, newScreenshotAdded: NewScreenshotAdded, newStudioRecordingAdded: NewStudioRecordingAdded, @@ -376,6 +377,7 @@ currentRecordingChanged: "current-recording-changed", devicesUpdated: "devices-updated", downloadProgress: "download-progress", editorStateChanged: "editor-state-changed", +faceTrackingUpdate: "face-tracking-update", newNotification: "new-notification", newScreenshotAdded: "new-screenshot-added", newStudioRecordingAdded: "new-studio-recording-added", @@ -413,6 +415,7 @@ export type AudioInputLevelChange = number export type AudioMeta = { path: string; start_time?: number | null; device_id?: string | null } export type AuthSecret = { api_key: string } | { token: string; expires: number } export type AuthStore = { secret: AuthSecret; user_id: string | null; plan: Plan | null; organizations?: Organization[] } +export type AvatarBackground = "dark" | "light" | "gradient" export type BackgroundConfiguration = { source: BackgroundSource; blur: number; padding: number; rounding: number; roundingType: CornerStyle; inset: number; crop: Crop | null; shadow: number; advancedShadow: ShadowConfiguration | null; border: BorderConfiguration | null } export type BackgroundSource = { type: "wallpaper"; path: string | null } | { type: "image"; path: string | null } | { type: "color"; value: [number, number, number]; alpha?: number } | { type: "gradient"; from: [number, number, number]; to: [number, number, number]; angle?: number; noise_intensity?: number | null; noise_scale?: number | null; animated?: boolean | null; animation_speed?: number | null } export type BorderConfiguration = { enabled: boolean; width: number; color: [number, number, number]; opacity: number } @@ -461,10 +464,11 @@ export type ExportEstimates = { duration_seconds: number; estimated_time_seconds export type ExportPreviewResult = { jpeg_base64: string; estimated_size_mb: number; actual_width: number; actual_height: number; frame_render_time_ms: number; total_frames: number } export type ExportPreviewSettings = { fps: number; resolution_base: XY; compression_bpp: number } export type ExportSettings = ({ format: "Mp4" } & Mp4ExportSettings) | ({ format: "Gif" } & GifExportSettings) +export type FaceTrackingUpdate = { head_pitch: number; head_yaw: number; head_roll: number; mouth_open: number; left_eye_open: number; right_eye_open: number; confidence: number } export type FileType = "recording" | "screenshot" export type Flags = { captions: boolean } export type FramesRendered = { renderedCount: number; totalFrames: number; type: "FramesRendered" } -export type GeneralSettingsStore = { instanceId?: string; uploadIndividualFiles?: boolean; hideDockIcon?: boolean; autoCreateShareableLink?: boolean; enableNotifications?: boolean; disableAutoOpenLinks?: boolean; hasCompletedStartup?: boolean; theme?: AppTheme; commercialLicense?: CommercialLicense | null; lastVersion?: string | null; windowTransparency?: boolean; postStudioRecordingBehaviour?: PostStudioRecordingBehaviour; mainWindowRecordingStartBehaviour?: MainWindowRecordingStartBehaviour; custom_cursor_capture2?: boolean; serverUrl?: string; recordingCountdown?: number | null; enableNativeCameraPreview: boolean; autoZoomOnClicks?: boolean; postDeletionBehaviour?: PostDeletionBehaviour; excludedWindows?: WindowExclusion[]; deleteInstantRecordingsAfterUpload?: boolean; instantModeMaxResolution?: number; defaultProjectNameTemplate?: string | null; crashRecoveryRecording?: boolean; maxFps?: number; editorPreviewQuality?: EditorPreviewQuality; mainWindowPosition?: WindowPosition | null; cameraWindowPosition?: WindowPosition | null; cameraWindowPositionsByMonitorName?: { [key in string]: WindowPosition } } +export type GeneralSettingsStore = { instanceId?: string; uploadIndividualFiles?: boolean; hideDockIcon?: boolean; autoCreateShareableLink?: boolean; enableNotifications?: boolean; disableAutoOpenLinks?: boolean; hasCompletedStartup?: boolean; theme?: AppTheme; commercialLicense?: CommercialLicense | null; lastVersion?: string | null; windowTransparency?: boolean; postStudioRecordingBehaviour?: PostStudioRecordingBehaviour; mainWindowRecordingStartBehaviour?: MainWindowRecordingStartBehaviour; custom_cursor_capture2?: boolean; serverUrl?: string; recordingCountdown?: number | null; enableNativeCameraPreview: boolean; autoZoomOnClicks?: boolean; avatarMode?: boolean; avatarBackground?: AvatarBackground; postDeletionBehaviour?: PostDeletionBehaviour; excludedWindows?: WindowExclusion[]; deleteInstantRecordingsAfterUpload?: boolean; instantModeMaxResolution?: number; defaultProjectNameTemplate?: string | null; crashRecoveryRecording?: boolean; maxFps?: number; editorPreviewQuality?: EditorPreviewQuality; mainWindowPosition?: WindowPosition | null; cameraWindowPosition?: WindowPosition | null; cameraWindowPositionsByMonitorName?: { [key in string]: WindowPosition } } export type GifExportSettings = { fps: number; resolution_base: XY; quality: GifQuality | null } export type GifQuality = { /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b29e7f826..ea01370e7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,7 +60,7 @@ importers: specifier: ^3.0.0 version: 3.0.0 '@rive-app/canvas': - specifier: ^2.32.2 + specifier: ^2.33.1 version: 2.33.1 '@solid-primitives/bounds': specifier: ^0.0.122 @@ -115,7 +115,7 @@ importers: version: 0.14.10(solid-js@1.9.6) '@solidjs/start': specifier: ^1.1.3 - version: 1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1) + version: 1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1) '@tanstack/solid-query': specifier: ^5.51.21 version: 5.75.4(solid-js@1.9.6) @@ -205,7 +205,7 @@ importers: version: 9.0.1 vinxi: specifier: ^0.5.6 - version: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + version: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) webcodecs: specifier: ^0.1.0 version: 0.1.0 @@ -310,7 +310,7 @@ importers: devDependencies: '@types/bun': specifier: latest - version: 1.3.9 + version: 1.3.11 apps/storybook: dependencies: @@ -464,7 +464,7 @@ importers: version: 3.10.0(react-hook-form@7.56.2(react@19.1.1)) '@kubiks/otel-drizzle': specifier: ^2.1.0 - version: 2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2)) + version: 2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2)) '@mux/mux-node': specifier: ^8.5.1 version: 8.8.0(encoding@0.1.13) @@ -599,7 +599,7 @@ importers: version: 16.5.0 drizzle-orm: specifier: 0.44.6 - version: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2) + version: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2) dub: specifier: ^0.64.0 version: 0.64.0(@modelcontextprotocol/sdk@1.6.1)(zod@3.25.76) @@ -659,7 +659,7 @@ importers: version: 15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-auth: specifier: ^4.24.5 - version: 4.24.11(next@15.5.9(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 4.24.11(next@15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-contentlayer2: specifier: ^0.5.3 version: 0.5.8(acorn@8.15.0)(contentlayer2@0.5.8(acorn@8.15.0)(esbuild@0.25.12))(esbuild@0.25.12)(next@15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -975,7 +975,7 @@ importers: version: 0.47.0(@effect/experimental@0.56.0(@effect/platform@0.92.1(effect@3.18.4))(effect@3.18.4)(ioredis@5.6.1))(@effect/platform@0.92.1(effect@3.18.4))(@effect/sql@0.44.2(@effect/experimental@0.56.0(@effect/platform@0.92.1(effect@3.18.4))(effect@3.18.4)(ioredis@5.6.1))(@effect/platform@0.92.1(effect@3.18.4))(effect@3.18.4))(effect@3.18.4) '@kubiks/otel-drizzle': specifier: ^2.1.0 - version: 2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2)) + version: 2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2)) '@mattrax/mysql-planetscale': specifier: ^0.0.3 version: 0.0.3 @@ -996,7 +996,7 @@ importers: version: 1.0.5(react@19.1.1) drizzle-orm: specifier: 0.44.6 - version: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2) + version: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2) dub: specifier: ^0.64.0 version: 0.64.0(@modelcontextprotocol/sdk@1.6.1)(zod@3.25.76) @@ -1014,7 +1014,7 @@ importers: version: 15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-auth: specifier: ^4.24.5 - version: 4.24.11(next@15.5.9(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 4.24.11(next@15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react-email: specifier: ^4.0.16 version: 4.0.16(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -1400,7 +1400,7 @@ importers: version: 3.1.0(@aws-sdk/credential-provider-web-identity@3.965.0) drizzle-orm: specifier: 0.44.6 - version: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2) + version: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2) effect: specifier: ^3.18.4 version: 3.18.4 @@ -4737,8 +4737,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.115.0': - resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@oxc-project/types@0.120.0': + resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} '@oxc-project/types@0.94.0': resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} @@ -5688,8 +5688,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.7': - resolution: {integrity: sha512-/uadfNUaMLFFBGvcIOiq8NnlhvTZTjOyybJaJnhGxD0n9k5vZRJfTaitH5GHnbwmc6T2PC+ZpS1FQH+vXyS/UA==} + '@rolldown/binding-android-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -5700,8 +5700,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-rc.7': - resolution: {integrity: sha512-zokYr1KgRn0hRA89dmgtPj/BmKp9DxgrfAJvOEFfXa8nfYWW2nmgiYIBGpSIAJrEg7Qc/Qznovy6xYwmKh0M8g==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -5712,8 +5712,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.7': - resolution: {integrity: sha512-eZFjbmrapCBVgMmuLALH3pmQQQStHFuRhsFceJHk6KISW8CkI2e9OPLp9V4qXksrySQcD8XM8fpvGLs5l5C7LQ==} + '@rolldown/binding-darwin-x64@1.0.0-rc.10': + resolution: {integrity: sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -5724,8 +5724,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-rc.7': - resolution: {integrity: sha512-xjMrh8Dmu2DNwdY6DZsrF6YPGeesc3PaTlkh8v9cqmkSCNeTxnhX3ErhVnuv1j3n8t2IuuhQIwM9eZDINNEt5Q==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + resolution: {integrity: sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -5736,8 +5736,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.7': - resolution: {integrity: sha512-mOvftrHiXg4/xFdxJY3T9Wl1/zDAOSlMN8z9an2bXsCwuvv3RdyhYbSMZDuDO52S04w9z7+cBd90lvQSPTAQtw==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + resolution: {integrity: sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -5748,8 +5748,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.7': - resolution: {integrity: sha512-TuUkeuEEPRyXMBbJ86NRhAiPNezxHW8merl3Om2HASA9Pl1rI+VZcTtsVQ6v/P0MDIFpSl0k0+tUUze9HIXyEw==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -5760,20 +5760,20 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.7': - resolution: {integrity: sha512-G43ZElEvaby+YSOgrXfBgpeQv42LdS0ivFFYQufk2tBDWeBfzE/+ob5DmO8Izbyn4Y8k6GgLF11jFDYNnmU/3w==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + resolution: {integrity: sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.7': - resolution: {integrity: sha512-Y48ShVxGE2zUTt0A0PR3grCLNxW4DWtAfe5lxf6L3uYEQujwo/LGuRogMsAtOJeYLCPTJo2i714LOdnK34cHpw==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.7': - resolution: {integrity: sha512-KU5DUYvX3qI8/TX6D3RA4awXi4Ge/1+M6Jqv7kRiUndpqoVGgD765xhV3Q6QvtABnYjLJenrWDl3S1B5U56ixA==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -5784,8 +5784,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.7': - resolution: {integrity: sha512-1THb6FdBkAEL12zvUue2bmK4W1+P+tz8Pgu5uEzq+xrtYa3iBzmmKNlyfUzCFNCqsPd8WJEQrYdLcw4iMW4AVw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + resolution: {integrity: sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -5796,8 +5796,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.7': - resolution: {integrity: sha512-12o73atFNWDgYnLyA52QEUn9AH8pHIe12W28cmqjyHt4bIEYRzMICvYVCPa2IQm6DJBvCBrEhD9K+ct4wr2hwg==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + resolution: {integrity: sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -5808,8 +5808,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.7': - resolution: {integrity: sha512-+uUgGwvuUCXl894MTsmTS2J0BnCZccFsmzV7y1jFxW5pTSxkuwL5agyPuDvDOztPeS6RrdqWkn7sT0jRd0ECkg==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + resolution: {integrity: sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -5819,8 +5819,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.7': - resolution: {integrity: sha512-53p2L/NSy21UiFOqUGlC11kJDZS2Nx2GJRz1QvbkXovypA3cOHbsyZHLkV72JsLSbiEQe+kg4tndUhSiC31UEA==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + resolution: {integrity: sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -5830,8 +5830,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.7': - resolution: {integrity: sha512-K6svNRljO6QrL6VTKxwh4yThhlR9DT/tK0XpaFQMnJwwQKng+NYcVEtUkAM0WsoiZHw+Hnh3DGnn3taf/pNYGg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + resolution: {integrity: sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -5848,8 +5848,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.7': - resolution: {integrity: sha512-3ZJBT47VWLKVKIyvHhUSUgVwHzzZW761YAIkM3tOT+8ZTjFVp0acCM0Y2Z2j3jCl+XYi2d9y2uEWQ8H0PvvpPw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + resolution: {integrity: sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5857,8 +5857,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.42': resolution: {integrity: sha512-N7pQzk9CyE7q0bBN/q0J8s6Db279r5kUZc6d7/wWRe9/zXqC52HQovVyu6iXPIDY4BEzzgbVLhVFXrOuGJ22ZQ==} - '@rolldown/pluginutils@1.0.0-rc.7': - resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + '@rolldown/pluginutils@1.0.0-rc.10': + resolution: {integrity: sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -6893,11 +6893,11 @@ packages: react-dom: optional: true - '@storybook/builder-vite@10.3.0-alpha.14': - resolution: {integrity: sha512-5Y8x7ioYUEWveza8596hAeYhbB+Px6y/vRW7VzoMP5uEQtduk+NNU73iuNtSzfr+aiid+0VKYWfORD2O2JugAQ==} + '@storybook/builder-vite@10.4.0-alpha.2': + resolution: {integrity: sha512-1SObow4y5H8RPsUPF8NjLY8c28eN49EUWLWKOb1ENBxueDApJeaONpqdILaNT3f7Sl8tnJlhKdF/Ttl0XKev0g==} peerDependencies: - storybook: ^10.3.0-alpha.14 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0 + storybook: ^10.4.0-alpha.2 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@storybook/core@8.6.12': resolution: {integrity: sha512-t+ZuDzAlsXKa6tLxNZT81gEAt4GNwsKP/Id2wluhmUWD/lwYW0uum1JiPUuanw8xD6TdakCW/7ULZc7aQUBLCQ==} @@ -6907,12 +6907,12 @@ packages: prettier: optional: true - '@storybook/csf-plugin@10.3.0-alpha.14': - resolution: {integrity: sha512-frTYBFjvHBUmtfye2EtLwg7NEd4eK4lp+H0uWlrLJ/KY5q6ES29SIbX+MWmPOhya2kCL4DRmdK3/p3MTsm4LTg==} + '@storybook/csf-plugin@10.4.0-alpha.2': + resolution: {integrity: sha512-m1jPKHF12Sb9zNY0ZwcJgj/d1EtEkUs1a+tiyUdr4JJcWS5Fg4njhb0U3gGYZ2Aib72xZT1pSJ/6QjDXW18oSw==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.3.0-alpha.14 + storybook: ^10.4.0-alpha.2 vite: '*' webpack: '*' peerDependenciesMeta: @@ -7542,8 +7542,8 @@ packages: '@types/braces@3.0.5': resolution: {integrity: sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w==} - '@types/bun@1.3.9': - resolution: {integrity: sha512-KQ571yULOdWJiMH+RIWIOZ7B2RXQGpL1YQrBtLIV3FqDcCu6FsbFUBwhdKUlCKUpS3PJDsHlJ1QKlpxoVR+xtw==} + '@types/bun@1.3.11': + resolution: {integrity: sha512-5vPne5QvtpjGpsGYXiFyycfpDF2ECyPcTSsFBMa0fraoxiQyMJ3SmuQIGhzPg2WJuWxVBoxWJ2kClYTcw/4fAg==} '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} @@ -8623,6 +8623,7 @@ packages: aws-sdk@2.1692.0: resolution: {integrity: sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==} engines: {node: '>= 10.0.0'} + deprecated: The AWS SDK for JavaScript (v2) has reached end-of-support, and no longer receives updates. Please migrate your code to use AWS SDK for JavaScript (v3). More info https://a.co/cUPnyil aws-ssl-profiles@1.1.2: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} @@ -8785,8 +8786,8 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} - bun-types@1.3.9: - resolution: {integrity: sha512-+UBWWOakIP4Tswh0Bt0QD0alpTY8cb5hvgiYeWCMet9YukHbzuruIEeXC2D7nMJPB12kbh8C7XJykSexEqGKJg==} + bun-types@1.3.11: + resolution: {integrity: sha512-1KGPpoxQWl9f6wcZh57LvrPIInQMn2TQ7jsgxqpRzg+l0QPOFvJVH7HmvHo/AiPgwXy+/Thf6Ov3EdVn1vOabg==} bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} @@ -10759,11 +10760,12 @@ packages: glob@11.0.3: resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - deprecated: Glob versions prior to v9 are no longer supported + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -13633,8 +13635,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-rc.7: - resolution: {integrity: sha512-5X0zEeQFzDpB3MqUWQZyO2TUQqP9VnT7CqXHF2laTFRy487+b6QZyotCazOySAuZLAvplCaOVsg1tVn/Zlmwfg==} + rolldown@1.0.0-rc.10: + resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -14345,12 +14347,12 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me tauri-plugin-context-menu@0.5.0: resolution: {integrity: sha512-CkAjSyxLx26hTXabG5Unbv+GWeH0XYNQB3zTqRxHpp257mWX8I4oASp8YF5T3zxFQEK++ZHqMZHpLrQ3usShRQ==} @@ -18891,10 +18893,10 @@ snapshots: '@solid-primitives/utils': 6.3.1(solid-js@1.9.6) solid-js: 1.9.6 - '@kubiks/otel-drizzle@2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))': + '@kubiks/otel-drizzle@2.1.0(@opentelemetry/api@1.9.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))': dependencies: '@opentelemetry/api': 1.9.0 - drizzle-orm: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2) + drizzle-orm: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2) '@logdna/tail-file@2.2.0': {} @@ -19886,7 +19888,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.115.0': {} + '@oxc-project/types@0.120.0': {} '@oxc-project/types@0.94.0': {} @@ -20865,67 +20867,67 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.7': + '@rolldown/binding-android-arm64@1.0.0-rc.10': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.7': + '@rolldown/binding-darwin-arm64@1.0.0-rc.10': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.7': + '@rolldown/binding-darwin-x64@1.0.0-rc.10': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.7': + '@rolldown/binding-freebsd-x64@1.0.0-rc.10': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.7': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.7': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.7': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.7': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.7': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.7': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.7': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.7': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': @@ -20933,7 +20935,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.0.6 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.7': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true @@ -20941,7 +20943,7 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.7': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': @@ -20950,12 +20952,12 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.7': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': optional: true '@rolldown/pluginutils@1.0.0-beta.42': {} - '@rolldown/pluginutils@1.0.0-rc.7': {} + '@rolldown/pluginutils@1.0.0-rc.10': {} '@rollup/plugin-alias@5.1.1(rollup@4.40.2)': optionalDependencies: @@ -22194,11 +22196,11 @@ snapshots: dependencies: solid-js: 1.9.6 - '@solidjs/start@1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)': + '@solidjs/start@1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@tanstack/server-functions-plugin': 1.119.2(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) - '@vinxi/server-components': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/server-components': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) defu: 6.1.4 error-stack-parser: 2.1.4 html-to-image: 1.11.13 @@ -22209,7 +22211,7 @@ snapshots: source-map-js: 1.2.1 terracotta: 1.0.6(solid-js@1.9.6) tinyglobby: 0.2.13 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1)) transitivePeerDependencies: - '@testing-library/jest-dom' @@ -22339,9 +22341,9 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/builder-vite@10.3.0-alpha.14(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/builder-vite@10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': dependencies: - '@storybook/csf-plugin': 10.3.0-alpha.14(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/csf-plugin': 10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) storybook: 8.6.12(prettier@3.7.4) ts-dedent: 2.2.0 vite: 6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) @@ -22371,7 +22373,7 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@10.3.0-alpha.14(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/csf-plugin@10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': dependencies: storybook: 8.6.12(prettier@3.7.4) unplugin: 2.3.10 @@ -23003,9 +23005,9 @@ snapshots: '@types/braces@3.0.5': {} - '@types/bun@1.3.9': + '@types/bun@1.3.11': dependencies: - bun-types: 1.3.9 + bun-types: 1.3.11 '@types/cacheable-request@6.0.3': dependencies: @@ -23597,7 +23599,7 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vinxi/plugin-directives@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': + '@vinxi/plugin-directives@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: '@babel/parser': 7.27.2 acorn: 8.14.1 @@ -23608,18 +23610,18 @@ snapshots: magicast: 0.2.11 recast: 0.23.11 tslib: 2.8.1 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) - '@vinxi/server-components@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': + '@vinxi/server-components@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) acorn: 8.14.1 acorn-loose: 8.5.0 acorn-typescript: 1.4.13(acorn@8.14.1) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) '@virtual-grid/core@2.0.1': {} @@ -24722,7 +24724,7 @@ snapshots: builtin-modules@5.0.0: {} - bun-types@1.3.9: + bun-types@1.3.11: dependencies: '@types/node': 20.19.21 @@ -25317,9 +25319,9 @@ snapshots: dayjs@1.11.13: {} - db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2): + db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2): optionalDependencies: - drizzle-orm: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2) + drizzle-orm: 0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2) mysql2: 3.15.2 debounce@2.2.0: {} @@ -25597,12 +25599,12 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2): + drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2): optionalDependencies: '@cloudflare/workers-types': 4.20250507.0 '@opentelemetry/api': 1.9.0 '@planetscale/database': 1.19.0 - bun-types: 1.3.9 + bun-types: 1.3.11 mysql2: 3.15.2 dts-resolver@2.1.2: {} @@ -26103,7 +26105,7 @@ snapshots: eslint: 9.30.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-react-hooks: 5.2.0(eslint@9.30.1(jiti@2.6.1)) @@ -26142,7 +26144,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -26212,7 +26214,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -28982,7 +28984,7 @@ snapshots: p-wait-for: 5.0.2 qs: 6.14.0 - next-auth@4.24.11(next@15.5.9(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next-auth@4.24.11(next@15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(nodemailer@6.10.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime': 7.27.1 '@panva/hkdf': 1.2.1 @@ -29082,7 +29084,7 @@ snapshots: cors: 2.8.5 next: 15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - nitropack@2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(xml2js@0.6.2): + nitropack@2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(xml2js@0.6.2): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.1.5(encoding@0.1.13)(rollup@4.40.2) @@ -29104,7 +29106,7 @@ snapshots: cookie-es: 2.0.0 croner: 9.0.0 crossws: 0.3.5 - db0: 0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2) + db0: 0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2) defu: 6.1.4 destr: 2.0.5 dot-prop: 9.0.0 @@ -29136,7 +29138,7 @@ snapshots: pretty-bytes: 6.1.1 radix3: 1.1.2 rollup: 4.40.2 - rollup-plugin-visualizer: 5.14.0(rollup@4.40.2) + rollup-plugin-visualizer: 5.14.0(rolldown@1.0.0-rc.10)(rollup@4.40.2) scule: 1.3.0 semver: 7.7.2 serve-placeholder: 2.0.2 @@ -29150,7 +29152,7 @@ snapshots: unenv: 2.0.0-rc.15 unimport: 5.0.1 unplugin-utils: 0.2.4 - unstorage: 1.16.0(@planetscale/database@1.19.0)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(ioredis@5.6.1) + unstorage: 1.16.0(@planetscale/database@1.19.0)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(ioredis@5.6.1) untyped: 2.0.0 unwasm: 0.3.9 youch: 4.1.0-beta.7 @@ -30561,7 +30563,7 @@ snapshots: dependencies: glob: 7.2.3 - rolldown-plugin-dts@0.16.11(rolldown@1.0.0-rc.7)(typescript@5.8.3): + rolldown-plugin-dts@0.16.11(rolldown@1.0.0-rc.10)(typescript@5.8.3): dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.4 @@ -30572,7 +30574,7 @@ snapshots: dts-resolver: 2.1.2 get-tsconfig: 4.11.0 magic-string: 0.30.19 - rolldown: 1.0.0-rc.7 + rolldown: 1.0.0-rc.10 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30600,26 +30602,26 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 - rolldown@1.0.0-rc.7: + rolldown@1.0.0-rc.10: dependencies: - '@oxc-project/types': 0.115.0 - '@rolldown/pluginutils': 1.0.0-rc.7 + '@oxc-project/types': 0.120.0 + '@rolldown/pluginutils': 1.0.0-rc.10 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.7 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.7 - '@rolldown/binding-darwin-x64': 1.0.0-rc.7 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.7 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.7 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.7 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.7 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.7 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.7 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.7 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.7 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.7 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.7 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.7 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.7 + '@rolldown/binding-android-arm64': 1.0.0-rc.10 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.10 + '@rolldown/binding-darwin-x64': 1.0.0-rc.10 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.10 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.10 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.10 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.10 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.10 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.10 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.10 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.10 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.10 rollup-plugin-inject@3.0.2: dependencies: @@ -30631,13 +30633,14 @@ snapshots: dependencies: rollup-plugin-inject: 3.0.2 - rollup-plugin-visualizer@5.14.0(rollup@4.40.2): + rollup-plugin-visualizer@5.14.0(rolldown@1.0.0-rc.10)(rollup@4.40.2): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: + rolldown: 1.0.0-rc.10 rollup: 4.40.2 rollup-pluginutils@2.8.2: @@ -31243,7 +31246,7 @@ snapshots: storybook-solidjs-vite@1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(esbuild@0.25.5)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)): dependencies: - '@storybook/builder-vite': 10.3.0-alpha.14(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/builder-vite': 10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) '@storybook/types': 9.0.0-alpha.1(storybook@8.6.12(prettier@3.7.4)) magic-string: 0.30.17 solid-js: 1.9.6 @@ -31890,8 +31893,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-rc.7 - rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-rc.7)(typescript@5.8.3) + rolldown: 1.0.0-rc.10 + rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-rc.10)(typescript@5.8.3) semver: 7.7.2 tinyexec: 1.0.1 tinyglobby: 0.2.15 @@ -32330,7 +32333,7 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.7.2 '@unrs/resolver-binding-win32-x64-msvc': 1.7.2 - unstorage@1.16.0(@planetscale/database@1.19.0)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(ioredis@5.6.1): + unstorage@1.16.0(@planetscale/database@1.19.0)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(ioredis@5.6.1): dependencies: anymatch: 3.1.3 chokidar: 4.0.3 @@ -32342,7 +32345,7 @@ snapshots: ufo: 1.6.1 optionalDependencies: '@planetscale/database': 1.19.0 - db0: 0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2) + db0: 0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2) ioredis: 5.6.1 untun@0.1.3: @@ -32506,7 +32509,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1): + vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1): dependencies: '@babel/core': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) @@ -32528,7 +32531,7 @@ snapshots: hookable: 5.5.3 http-proxy: 1.18.1 micromatch: 4.0.8 - nitropack: 2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(xml2js@0.6.2) + nitropack: 2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(xml2js@0.6.2) node-fetch-native: 1.6.6 path-to-regexp: 6.3.0 pathe: 1.1.2 @@ -32539,7 +32542,7 @@ snapshots: ufo: 1.6.1 unctx: 2.4.1 unenv: 1.10.0 - unstorage: 1.16.0(@planetscale/database@1.19.0)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.9)(mysql2@3.15.2))(mysql2@3.15.2))(ioredis@5.6.1) + unstorage: 1.16.0(@planetscale/database@1.19.0)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(ioredis@5.6.1) vite: 6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) zod: 3.25.76 transitivePeerDependencies: From e91ff59c2bc72fa9db408101fcff767bd60a2ed9 Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 16:45:16 +0700 Subject: [PATCH 12/15] feat(avatar): add Rive runtime support with Canvas2D fallback for camera avatar Loads avatar.riv via createRive if available, drives state machine inputs from face tracking events. Falls back to Canvas2D Clawd when no .riv file is present. --- apps/desktop/src/routes/camera.tsx | 213 +++++++++++++++++------------ 1 file changed, 125 insertions(+), 88 deletions(-) diff --git a/apps/desktop/src/routes/camera.tsx b/apps/desktop/src/routes/camera.tsx index dde6a9e61a..d0f6dfb488 100644 --- a/apps/desktop/src/routes/camera.tsx +++ b/apps/desktop/src/routes/camera.tsx @@ -26,9 +26,17 @@ import { generalSettingsStore } from "~/store"; import { createTauriEventListener } from "~/utils/createEventListener"; import { createCameraMutation } from "~/utils/queries"; import { createLazySignal } from "~/utils/socket"; +import { createRive } from "~/utils/rive"; import { commands, events } from "~/utils/tauri"; import { RecordingOptionsProvider } from "./(window-chrome)/OptionsContext"; +let avatarRivAsset: string | undefined; +try { + avatarRivAsset = new URL("../assets/rive/avatar.riv", import.meta.url).href; +} catch { + avatarRivAsset = undefined; +} + type CameraWindowShape = "round" | "square" | "full"; type CameraWindowState = { size: number; @@ -101,7 +109,11 @@ export default function () { const isNativePreviewEnabled = (type() !== "windows" && generalSettings.data?.enableNativeCameraPreview) || false; - const avatarMode = () => generalSettings.data?.avatarMode ?? false; + const avatarMode = () => { + const val = generalSettings.data?.avatarMode ?? false; + console.log("[Camera] avatarMode =", val, "nativePreview =", isNativePreviewEnabled); + return val; + }; const [cameraDisconnected, setCameraDisconnected] = createSignal(false); @@ -212,7 +224,7 @@ function drawClawdShape(ctx: CanvasRenderingContext2D, s: number, pad: number) { } function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { - let canvasRef: HTMLCanvasElement | undefined; + let fallbackCanvasRef: HTMLCanvasElement | undefined; const [faceData, setFaceData] = createSignal({ headPitch: 0, headYaw: 0, @@ -222,9 +234,33 @@ function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { rightEyeOpen: 1, confidence: 0, }); + const [useRive, setUseRive] = createSignal(false); + + let riveInputs: Record = {}; + + const { rive, RiveComponent } = createRive(() => ({ + src: avatarRivAsset, + autoplay: true, + stateMachines: "State Machine 1", + onLoad: () => { + console.log("[Camera] Rive avatar loaded"); + const inputs = rive()?.stateMachineInputs("State Machine 1"); + if (inputs) { + for (const input of inputs) { + riveInputs[input.name] = input; + } + console.log("[Camera] Rive inputs:", Object.keys(riveInputs)); + } + setUseRive(true); + }, + onLoadError: () => { + console.log("[Camera] Rive load failed, using Canvas2D fallback"); + setUseRive(false); + }, + })); createTauriEventListener(events.faceTrackingUpdate, (payload) => { - setFaceData({ + const data = { headPitch: payload.head_pitch, headYaw: payload.head_yaw, headRoll: payload.head_roll, @@ -232,90 +268,80 @@ function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { leftEyeOpen: payload.left_eye_open, rightEyeOpen: payload.right_eye_open, confidence: payload.confidence, - }); + }; + setFaceData(data); + + if (useRive()) { + if (riveInputs.mouth_open) riveInputs.mouth_open.value = data.mouthOpen; + if (riveInputs.left_eye_open) riveInputs.left_eye_open.value = data.leftEyeOpen; + if (riveInputs.right_eye_open) riveInputs.right_eye_open.value = data.rightEyeOpen; + if (riveInputs.head_yaw) riveInputs.head_yaw.value = data.headYaw; + if (riveInputs.head_pitch) riveInputs.head_pitch.value = data.headPitch; + if (riveInputs.head_roll) riveInputs.head_roll.value = data.headRoll; + } }); onMount(() => { getCurrentWindow().show(); - if (!canvasRef) return; - const ctx = canvasRef.getContext("2d"); - if (!ctx) return; - - let animationId: number; - - const draw = () => { - if (!canvasRef) return; - const data = faceData(); - const w = canvasRef.width; - const h = canvasRef.height; - ctx.clearRect(0, 0, w, h); - - ctx.fillStyle = "#262629"; - ctx.fillRect(0, 0, w, h); - - ctx.save(); - ctx.translate(w / 2, h / 2); - - ctx.rotate(data.headRoll * 0.25); - ctx.translate(data.headYaw * 15, data.headPitch * 10); - - const breath = 1 + Math.sin(Date.now() * 0.003) * 0.01; - ctx.scale(breath, breath); - - const s = Math.min(w, h) * 0.35; - - ctx.fillStyle = "#FFFFFF"; - drawClawdShape(ctx, s, 4); - - ctx.fillStyle = "#D4845A"; - drawClawdShape(ctx, s, 0); - - const eyeY = -s * 0.2; - const eyeSpacing = s * 0.35; - const eyeSize = s * 0.14; - - ctx.fillStyle = "#111111"; - const leftEyeH = eyeSize * Math.max(data.leftEyeOpen, 0.08); - ctx.fillRect( - -eyeSpacing - eyeSize / 2, - eyeY - leftEyeH / 2, - eyeSize, - leftEyeH, - ); - const rightEyeH = eyeSize * Math.max(data.rightEyeOpen, 0.08); - ctx.fillRect( - eyeSpacing - eyeSize / 2, - eyeY - rightEyeH / 2, - eyeSize, - rightEyeH, - ); - - if (data.mouthOpen > 0.05) { - const mouthH = data.mouthOpen * s * 0.2; - const mouthW = s * 0.2; - const mouthY = s * 0.35; - ctx.fillStyle = "#2A1508"; - ctx.beginPath(); - ctx.roundRect( - -mouthW / 2, - mouthY - mouthH / 2, - mouthW, - mouthH, - mouthH * 0.3, - ); - ctx.fill(); - } + if (!useRive()) { + const canvas = fallbackCanvasRef; + if (!canvas) return; + const ctx = canvas.getContext("2d"); + if (!ctx) return; + + let animationId: number; + const draw = () => { + if (!canvas || useRive()) return; + const data = faceData(); + const w = canvas.width; + const h = canvas.height; + ctx.clearRect(0, 0, w, h); + + ctx.fillStyle = "#262629"; + ctx.fillRect(0, 0, w, h); + + ctx.save(); + ctx.translate(w / 2, h / 2); + ctx.rotate(data.headRoll * 0.25); + ctx.translate(data.headYaw * 15, data.headPitch * 10); + + const breath = 1 + Math.sin(Date.now() * 0.003) * 0.01; + ctx.scale(breath, breath); + + const s = Math.min(w, h) * 0.35; + + ctx.fillStyle = "#FFFFFF"; + drawClawdShape(ctx, s, 4); + ctx.fillStyle = "#D4845A"; + drawClawdShape(ctx, s, 0); + + const eyeY = -s * 0.2; + const eyeSpacing = s * 0.35; + const eyeSize = s * 0.14; + + ctx.fillStyle = "#111111"; + const leftEyeH = eyeSize * Math.max(data.leftEyeOpen, 0.08); + ctx.fillRect(-eyeSpacing - eyeSize / 2, eyeY - leftEyeH / 2, eyeSize, leftEyeH); + const rightEyeH = eyeSize * Math.max(data.rightEyeOpen, 0.08); + ctx.fillRect(eyeSpacing - eyeSize / 2, eyeY - rightEyeH / 2, eyeSize, rightEyeH); + + if (data.mouthOpen > 0.05) { + const mouthH = data.mouthOpen * s * 0.2; + const mouthW = s * 0.2; + const mouthY = s * 0.35; + ctx.fillStyle = "#2A1508"; + ctx.beginPath(); + ctx.roundRect(-mouthW / 2, mouthY - mouthH / 2, mouthW, mouthH, mouthH * 0.3); + ctx.fill(); + } - ctx.restore(); + ctx.restore(); + animationId = requestAnimationFrame(draw); + }; animationId = requestAnimationFrame(draw); - }; - - animationId = requestAnimationFrame(draw); - - onCleanup(() => { - cancelAnimationFrame(animationId); - }); + onCleanup(() => cancelAnimationFrame(animationId)); + } }); return ( @@ -326,14 +352,25 @@ function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { - + + } + > + + ); } From 08339c154ea2e312a9314df1be189106f54c0c8f Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Fri, 20 Mar 2026 17:03:55 +0700 Subject: [PATCH 13/15] fix(face-tracking): pass frame stride to fix RGBA data size mismatch FFmpeg frames may have stride padding (row bytes > width * 4). The face tracker now accepts stride parameter to handle this correctly. --- apps/desktop/src-tauri/src/camera.rs | 1 + crates/face-tracking/src/lib.rs | 2 +- crates/face-tracking/src/macos.rs | 15 +++++++++------ crates/rendering/src/lib.rs | 2 ++ 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/apps/desktop/src-tauri/src/camera.rs b/apps/desktop/src-tauri/src/camera.rs index 7c4cfee5ec..9e187535b6 100644 --- a/apps/desktop/src-tauri/src/camera.rs +++ b/apps/desktop/src-tauri/src/camera.rs @@ -781,6 +781,7 @@ impl Renderer { tracking_frame.data(0), tracking_width, tracking_height, + tracking_frame.stride(0), ); if let Some(ref mut smoother) = self.face_pose_smoother { self.avatar_face_pose = smoother.update(&raw_pose, 33.0); diff --git a/crates/face-tracking/src/lib.rs b/crates/face-tracking/src/lib.rs index f634e924e1..217af0361c 100644 --- a/crates/face-tracking/src/lib.rs +++ b/crates/face-tracking/src/lib.rs @@ -24,7 +24,7 @@ impl FaceTracker { Self } - pub fn track(&mut self, _rgba_data: &[u8], _width: u32, _height: u32) -> FacePose { + pub fn track(&mut self, _rgba_data: &[u8], _width: u32, _height: u32, _stride: usize) -> FacePose { FacePose::default() } } diff --git a/crates/face-tracking/src/macos.rs b/crates/face-tracking/src/macos.rs index 56bf8ef3da..e0aaa99ca2 100644 --- a/crates/face-tracking/src/macos.rs +++ b/crates/face-tracking/src/macos.rs @@ -14,23 +14,26 @@ impl FaceTracker { Self { landmarks_request } } - pub fn track(&mut self, rgba_data: &[u8], width: u32, height: u32) -> FacePose { - match self.track_inner(rgba_data, width, height) { + pub fn track(&mut self, rgba_data: &[u8], width: u32, height: u32, stride: usize) -> FacePose { + match self.track_inner(rgba_data, width, height, stride) { Some(pose) => pose, None => FacePose::default(), } } - fn track_inner(&mut self, rgba_data: &[u8], width: u32, height: u32) -> Option { + fn track_inner(&mut self, rgba_data: &[u8], width: u32, height: u32, stride: usize) -> Option { let w = width as usize; let h = height as usize; - let src_row_bytes = w * 4; + let src_row_bytes = if stride > 0 { stride } else { w * 4 }; let expected_len = src_row_bytes * h; if rgba_data.len() < expected_len { tracing::warn!( - "RGBA data too small: {} < {}", + "RGBA data too small: {} < {} (w={}, h={}, stride={})", rgba_data.len(), - expected_len + expected_len, + w, + h, + src_row_bytes ); return None; } diff --git a/crates/rendering/src/lib.rs b/crates/rendering/src/lib.rs index 494be6fba3..2999a68c0b 100644 --- a/crates/rendering/src/lib.rs +++ b/crates/rendering/src/lib.rs @@ -3055,6 +3055,7 @@ impl RendererLayers { camera_frame.data(), camera_frame.width(), camera_frame.height(), + camera_frame.width() as usize * 4, ); if let Some(ref mut smoother) = self.face_pose_smoother { self.avatar_face_pose = smoother.update(&raw_pose, 33.0); @@ -3177,6 +3178,7 @@ impl RendererLayers { camera_frame.data(), camera_frame.width(), camera_frame.height(), + camera_frame.width() as usize * 4, ); if let Some(ref mut smoother) = self.face_pose_smoother { self.avatar_face_pose = smoother.update(&raw_pose, 33.0); From 1fcef81614410fad36c0d2cc3e54289af6b2a57b Mon Sep 17 00:00:00 2001 From: namearth5005 Date: Tue, 24 Mar 2026 12:28:56 +0700 Subject: [PATCH 14/15] feat(avatar): working Rive runtime with face tracking expression mapping - Fixed Rive asset import (use ES module import, not URL constructor) - Fixed Rive instance timing (use createEffect instead of onLoad callback) - Always render RiveComponent (hidden until loaded) to solve canvas mount issue - Map face tracking data to Rive state machine inputs (Neutral, Smile, Happy, Surprise, Sad) - Added facial expression demo .riv and speaking character .riv as test assets --- .../src/assets/rive/avatar-speaking.riv | Bin 0 -> 169521 bytes apps/desktop/src/assets/rive/avatar.riv | Bin 0 -> 13036 bytes apps/desktop/src/routes/camera.tsx | 109 +++++++++++------- 3 files changed, 69 insertions(+), 40 deletions(-) create mode 100644 apps/desktop/src/assets/rive/avatar-speaking.riv create mode 100644 apps/desktop/src/assets/rive/avatar.riv diff --git a/apps/desktop/src/assets/rive/avatar-speaking.riv b/apps/desktop/src/assets/rive/avatar-speaking.riv new file mode 100644 index 0000000000000000000000000000000000000000..6c9f24299f945d72e7d2cacfdf939a4875240543 GIT binary patch literal 169521 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�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%0Aq$M>e8MtZ&e}Idf@`3wOt!+exVk$LiAy*UCEN zxSVROL4`J1jfQg)!E2QuI*UB4x3j-k^f27a8QgHa7SAp zf)tPy9u_h&nq-JvgIyE3qM5Up;hR$SHM4#kr$&Hn(hPb&iwwUP#&|Np_T?+MboDAW zcP<6(kuq5nTCn~T3;!7SN`#d%?ZAm`0G}|u{D~=HtOBP|JeMPLHVg?CRgL}g7btH< zniZ{uyn?ZuWXs!mlE=)E9T>r2=0B$K#7Wm0T0JZ;7s8a>IMkBl%*rOIV^~yG3WbKj zkE2MWzCUKg1${#c>3K#8cv_+}VagNM5&pn{Xm@&ZGRb}DqP|Ufu5obA4XXg+|ttCqC6bs@e zA#Zk)^Lf@rtT;D)HTQR27x%HzC-x;)s%jL`F3lODWUSfTOKdsk9K{M<{uAYnULkTb zzFGQz_Pz|43vL8Gtczf%*;56wC3>Ne^KtzHD2sTrfzR%L@PGIl@8F!%t0zE8G5VQf zBokq=bkqFYy75fKFwgK3+I=`g%?ptkB-ku-Q5Go5O4uRU@+Himu5PihwW$gh1htM; z+r1^?;t6`9RooNq9v8rIIUqj$L93|tVSd9vl4NM*UYy=CWBAFBLriCYM4Pt}NmeV5 zf+L=v^L+aZ44|kAZ0>A(tK{+}RO2zkp-uV8(nn+6NshB>|2@WOihL=9<@h{?XNh3( zPVJDUsbRSp*S8LNxwn;C=CJ3vMG|I9Vl8O@xo5#;0H{8amEUB~vx9wvf-QL?HeW{g zb4VNsEZgv^YLBR-$>oxf&e;GkbF5?!vwl*)ktQUXSONkFWi>MIIO~4^bnkX% zsT~%5jtn1ViO{CXN@gyPio^m?bWfhs_Pptp5+EU=S!`JaT#4|*ICA`VTov55(5Z= zW}`bNdxH3pWi4>biJT0zzw}WF;G!y%cb-6yUDI9HCF@@Vssdd_A?qT+$c_^rFM}if zl@cJ{|6wLIylV4Bdlduz73WyZTB#gjxPpH%y*HaRD4j*MB^r&!ka~l9%W!?u)EI9} zY=(fqsIUd!2&D1z#E4bz7->n1&=>g)z|jJvh)l_1^^)_VPEutsMowkS&3NNtnJ7QjsmC zC+gUe%rkPfl)fkSeH*Y8>^S$^$fE6UEU@=f^a-Gage2yFj zl3)StjE+ZWPb}|{>tlt!oom+8_3_rix}zwTVEPDU1q0nVor!p{U$#YADuN)L76rmJ zjjjpvlmc3@R}zWM8uZl|?4S;PQ2Zj!IlWQ>q$o^M62z%ZSgh7VJ)Pqz5VdknIE7d< zL{bieCDM?YtMLdBFN$9R!DB+)HZ4XWdI+&Y`FHCRiCdh;2rUz;3iX_bu0CAeNV+c> zv>AS%oD&&EQC3me?qTDUUC%@RBu&DcnroZ>*|KZxNtB(Qz&{)rFEjGnB`Sn4PS<4} zhz!>7n6_XjA4!18A`tepxe?qVO(2t5PnkU(_kQ^LD> z=y%f>?PiK&in688D5A?bBNU~8(2F2#s4U})95hB|pbHfd1O|*VrO}X7j7JotiJF1MF`>K+yn}O2=SqO^6Mo84 z*AN@L=h0&6)?QP$J{#S}W~2pBN#AP`P6R?xRaq29T-HA7gFrr1gJV@*$-C9a6n~{w z95qcz%#|=Z6DB4vvFnD|gC`&Ro&r*d#x0$t^m~GX=Y5J7rP{nbjm^0 zo$Ep?u>zP>`;E^KD|k_?Gy+I5FbLeMs)tzds+$CV7}@nCeQ{wkw^;2ead&W06#C){ z3Q?>>9SzM#qwB|=^CHtLB|y}qG@-Z4<M#`YydVD%A4ie5=nqe`818sryV z+NQ2iRU_HXL06jmZ7L!Nw;{vx!kts4QgT52eh}zmHyLe|v5=yO0?N6KB|#4))5S6* zlZ=>X;zGv=w15_y;D9Ki5=Nw0`VjW62QtlgATiJM+wSr>aDwWmD%^(dV{t&ruD1iF zuTiMKPpLMa+6SRgn*nL_GpyeyoL!Wq&JTxiCDV)C`T`@-kSq#i5q}E=B^tvTK_B5O z>bDJ&>g?u8S%Rw&%Ah4I`t8GnElSI3i;L*fJ zh_Q>PLPQDa7T~h(iMzH#H5y66mu~7O=5-A94N+LmiHauYO55>C1sm4f55iG}6q}?p z35)pXTOIPRVhTn}PM9Re->s@n=+~@LhMaE^+(*R{o@aj3Ibk-l5uU|b879goxjG1d zuIr4Yz}mm$Ju$3@&EsWnLEi$4R-r)ZfoG8lj3{E#3}=0K&0MgSPPjJn`}kl0iq=x% zvoqu8)otTcH^Tz4GHoDhCOGZ$>aP*dv7yUGInjaj!5uLV#^$FKMWNxg)?sDzs%TZI zvLZspL{>!unI+7(_Yz6FiL{6)f=$$MVJ{w%;m^jPEJIF}M4S=fI0y>>h|hN<*7*`3 z{A8c1OjrTh)=it1caOTJX;e$ma3JofUaGi&$cGDiXJFKHBuXRZA|@>ac1yDGNxmDU zOA{Bg3TZ5^r9H7r;HX5xV67vpFU=XCu=qKyQonCVS^AsD<)zSy(Q)O8bO6&#<^;M( zj;&j2iWJ%Nj6IhRB!mG9yBf%wP_5m$C~$2Ua6X=vk*ZM=uyC^X$ogWu)XI)Yz8MY~ zy;;$}rZ5?swk$Sf?n&eqvb6*ax6@R^_?r5;u`&s^pQ(*)hU7$Kp-748vuh@a4$NN} z0{a~beZ(Pg^l=PKAt;rs=ADv0K;b4z8WH1O_DCmGRTZNmNj9kQ1L?YsB`}MFt|aOP z1CSl0%;O}w<+=|Fx^jx4ec|YQ36LkGSgy*?-KufNUek737J?!=nqvscX~66&*M{)H zu$Cz?eOVKIZJE1>7m)f8^&Rx62MIe6WhsT3jlpod>JvI^Et=HIG7y7kjM5t$s+zEy zWUwJNOK2r|Oktb}uHT<8178V4vNlh~f7IIOg#x5b_P~sNrB&Ns=~vog#1W6AA_tJgg2AfZ7LMbzT{|D}&`;hkHCd&fcKFr2>yN)>g?$UAFKCk)36_tA zA`Mga`5GKD$Acyi!ka}oBC%M*Q<8JOta_p-$)tvt*M)af)?GM(WUa|76rF|fX{8<> zicqu86ihbrL$2#WXuZK3AQjaJMNuS1QX!ho5g&)*9h_r2R|4d;Mu(-*$QJ_?la&Bo zEKa6ZbrR((z7v%rfS9=yRty0g9OwXatAJoulUYf&`i{C_kNxgMqeaLcVK*@;aTI^_^n#&E@2fiUTeD7#LDSq5{&#jniNu*+;v1|XD-;c@R8qzw58|4Szm zn>@IvmXSe6^%YjW^gB$275M|>6NOn4$rsGafl5v3_{k+=vDl!WLbA{axo;&!I@3{P zThf5p2 zq(#%AzVMYD8%>R3(fh*ClB6HTaw_3jT-yR6V$!@ar0-j>T12`O$Cc#uV}AYEb6#LN zR|4dT9yCG+s*Nn`?nKu%EvMWghCGQ2+vr$8Q5IU4M>5OhU*{Z;Mk8jUy^8ORknFc8 zdq*eXF$$ZgiLTZ|FdKv$9sTZFc*kZ%Crd8ROVKMWWD_;d#2g6irw(lDb9|&izn_oB z=1&$wP>rR;rZM-+V=)tk8pt_kv5>s;iGiUOP=qe}kP;hznSrLvfExM9ihqz{XQpC7 zI=_kLA7L#~0Lmf?FD;Q`#(;vV9Qd3uK3Lna{wM_@t+71>Xi@gv!lD#k-XPpa-ZNI+ zC2fnrR1{?#1OnQ&gE&U?6}3hoC$o~gS)_$0WXd#)$C!N4?$C^PiEuR0mg-1{S{`xP zGoz>~3Qzzi`sEQs=RB16)e#^@86W_wnt>Bm_ia1f)6S&S3b$gz?EJT~tO7hmtmWW2 zc?l(Smn>Ms;N)%7D6UxB2U~<9V5>lhl+F)z`@7==)&9i1YhJ zfhUM#%=ke(f51v2J15GrV%V}g3rqV&f68r18spcN+B$k~Q`gNrZxkv$UsuKyDH)Xf zJu-WAvY?C(Au=)Di6B&7pt6wi&xrw}_J+Al5ZffLy%8HJn$~*C)DnrhN8zPa$k8HZE>FN=muFCA{CUwUBS1z~)UO%9YSrC2>9uv^q8|io zUNAs34*!=gYf@GvTNui?P`GVcDyvFxUw?vKMih4SHaph}Mw>7&$R5`wSVXiuk!wd; z&_;XCb0d@)TN5c&*nlAcwN7TSz3rM^4=Mg04`g{C{i~98*F9z)+MCO_q+tua39#sE zkr}2HFG{SGd<@ty@q`h^ioOQl)NW`1L&Cg`rKs}|-{&$`3DxjjX(Jy33q`r$(6-h_ zK3@W9#fP$N)Kqb{7EckMOLT}(eWwqDB{K~aMVYYvuI+*aMJe(ZB%HvA5c&y)pu%D1xsdyc(;< zT|eoyP0MEWCTW1smxUB_3c#+O9=5;s@3M29>Qx#l8FHV*of6(%c+;c6Ez%fR*SRRWgh{i$ zJM0T7#_svbydY?eIq3SAGIA6LRs@O4LK6F4?%_4LP*2NdqKmZyP+9o>dCf{X2Ep=u zb;b4L&w4TGr4}HT!IY)cAM#VWs@;^cbJl(8#!UsWjiqz}!DM9pgIP4e_|me)U73cN zI>W*Zls`oHH%(19G4`tbQH(S@f@B{M2>v|;^CV7Ki-%Z)=g z7kF0N?^$Xbm1S!ynCL&9Cp%i{mIN6ZDE}vUGvhD~lfkDD)GFyC$uR2|5pgynoovql zpcqvqW!)DxRjb67Qlxl)6`VmS3#ThaX^W5MMs*ld-Hu%(r}e85Gk0yParkjo!b}#~ zYM^=|qEPsa4WHLa zTdbNGMXg4Cc(QQ3PQ_%PYs+{%V`5&v*o8PUI%JHTsDDhZftXwQ22AoLspzOMpZ;c< zbRJr3?q_jz!Q`dCgg(O?V7FPnvLmiD76Qf7!bb#sG88oUxC+xG9Y`#=d>l=ChOer> zA%olopH3}_@G8pgMfy`JycDeG*ya%IXMw(Gr3NNwuTT0&$yh|DZUtsc9cAa(S|HGS zMA()Pt!}_WZE9yH5E~FuzS+KK0GJ9=kp|sKBzw)E${5F9>L;05CZeuw^G!yKBq2Qy z0M@~(17p5>q7z?0dSwJiSry6(Rws$&F7|{2H08j1wYNV-;qJunaQ6k{KWgtY@$`VeC@jJVW36D@p=Z7wRYsN>uiZ|SY8*Ofra4*Jyn={BE_ubbWA5r#FriA zG?9>c)#Oq+a#n&&J?6*97664QeYO)Vu&hF{De z7}FaaLymFv*ppsRI#&Y3Dqtu1$igYatPaI=>!v#vl*~VM?e_&C!>AJYgD7k+rK?+) zjD+-hEvle+OrcUv7E-M2Eif?I7dDORu@N6>&7pNKZxYI4oa9N^ST^vUy>rrTzDNu@ zlHPs@!cke5wZZXDxjQG93-$+*pHcab^J0N-`PpTfWb8tmTMgeeq0(x7=&8oihy$F# zVYx6SSnYJk7u2%^O*;mbL8>F$A=X^);aSUKiTcK;SiIRR=W}QtDc&J9&up~;sR*P| zh^!YRnn_WXeg_Y^xO1G}UJ)_|`*I{nuOyV-Jd~|u7WdT&eI(O=jc$zUBC%t}{$b-Q ztLVEx@um{94B-W`iQO?o7ZBD9O@(>6+t%$lclrs_npt3$vI`09DhO&(zzdJCCyv?W zmYvgG1cQphVWEmE-bD5it1%G-Oq588!kX}X1q(Q4oA<_}jL?__ChCJ^ny--h4CFiX z{)m4js`-FcZ+_tTPyYhbW`YE?9#_ z*;LDGBdU%CW7A*8>=&2CL?(J`t&z8deEm z_R3D83!vw$ru1I`2w|Zqr3du+jIc|}gdiE7z7?W4c`C#xIc9{Gz;~RrktM6hw99p2 zFN$O?W$HMzXIY^jWGV>8PKSjZ=+tI465|U#J(sjhLcOv<) zdkRsHtJ+c9w$?_L+mgs+KTIz1BO2|_7^sn<8%Ryw8%f-i&Lk7tbe<2)=8Z12?5*LV zD#K>fY8pNs!#OAPN(d02h3+}+nue$HvPK+;%>tn81qL`NqR0|iC{|3&b)}*o zIu&-v^p$y7lt9_;a}a!&O{W0L%Bc4#6)!1VVZ(eagOfNbfG7j|%RQRsh=A(E~pWmi-e7+}sr z7L^E2X72-uz>JQ771adE4S}lO?4q?|1!F1)sh77SI|}yu8qQ~nOBsmG__{b0I%LOj z(1Q>W%N#{X3{cZ{@>IDj7ON)~9!bPKtCbHsE&06Zx*QHH&}5VF+r#O~yfjI0T5tWQ zllSt`D@#y;!viuIU&O*qtzE5T8wx5K^8q3U%)U6m zg04FTI}xv5T?uSaBu2fVtOS6ND*F=x^YupleELfSRf3bHvSXi5KRt7#3Sx12>6$=>m(l{<&^3# z(PFM9sjBxbXu5f#`lsjS3V~Yvkm*rBZkb)EjMvpXU@0qn}xt)5kzBHWo_$DV6lxpS20*p zoGf9k32bC74;w;j%^&kS6{I`i5fT|-IKM(h(pyNi-qa#u?ML4?JOBb2%PYPTByf=N zRb?e|LdgXqC`6LvX?_ap8h;%dq*2PKt19IC5w|#(zu8P)G#t!*49>=WuM)qo6}fV$ z0C5iUg}g&%P>l34F~u)6y%GYXD*d}!A8CE~Fx{ibImRlKH3=oSBL@m^p~vjW@LCll z2xrJ!sfBlfuTbAd3F(am-nB=mp3b|QMA0$t^~*l=3($d zg;zl8j(3NC2l$Qyc8_X9Xw~u*@{%Z!m2n}~tu%p9tQZ&j-cnnQE)N*qmLdTAfYZpY+X5s&? z>##rT#7C)5?h_!R=H}ecs(E?nTnUiJenBZUL`_Hy5J)l1L@--((#1L< z>5Ic@|MKxQA&=q(kY0(2C-0t~XHzaB_`@JV(|AXJ)3gG;Nmmm%i&T<%1ucut0y`Ij z(29cnIwa|#zGO*Jm2k{CPW+#K_#B*LES52vFX}@^sXJ9P*7>7XLV#2SxM`0#p`|+~ zZOb|AHl2y}7OpO@uWSG%mWA-dU{*WhOwdFvm<471@CfUTz-3tuoGX0DVj<=P@Sp{f zbY1?ojG=#`$yG?94Aa7ZA%^sTB~A~sJtj<{2PVXew495v0WG9;6v=)R%EZ+QqIe)> zPWpc>bZiucXa!~SFfh(KFC;)Z!5Pf}p^sm6p(UE@K=e*KOEkJZ~h-lSxYbK9B za74Q&nPmAaR^2q-0YFrs)yI)q>(*$X=r@7Eg46S~>%kY|6>c6{rfNw<$3T(`G91cF z3e_Aph*4;1^F5?I>wc7M>9Y?km4URs=<~>~h$SepO^Om^On64d)N_Zl&YF=@u>u9H;Z^<}JN*UfY-6lICJ>ENw^XhI2uWvpHm3K9bq z-UaCxndgugMVT*>>?u=H-{6SMb=`YKRS7vb>>$Mx!_xDsU*YDLn_g-G0{93l09e)Q zqO9lxM|}M>ZPpF%DtFY7C#V`25}9%)?=jJ?i+Ycbn<9zGHSzEsTe1GfA_xNVIIzar zL(5r_VU}vz4AsMOZ5Q{_7I-F8>1_2^aa`*oBW1AuX#6{6(3x41(VEQPbcT{Il<<9{ zW(q=L+Q`hH;J9!SX`=%g`C0m zXdkn5(s`kmUVs!Kl(lJicj$L^?)QsRMnKG$-P8c?A~gWWmbFq$Q3Qv;A7Nu0P0-b# zs-PG7mskoZCS?%}SS_+DMn?*dG8`$~v{(aS*%02CMG)_$0H8o$zsC%;6 zno=r$Ow>w}e^yPuAfoK;!vGHEEyIBi3ZRs8=K3m!;mIwLzLVJshkV*oH-R#QL@?OoJUt$h&=QS4i8d33HPdLB z%+F#qCeMH2R)UjXoPsplXnM@e^Jro+60`P{ky z!Kg4bqfG;C+Q|^VM4zIhCD_~{vF`M-DP9o;36U1ul^2Ygp#6)dArTyi3r|Lyh#>o; zrvVjO%Ngc;IgJ^Xvw;dP-6LML~jmnRh#@X3RA6gPrSo6(v`zBOHY;!dUZFXZ_|n^(T$uU7ny8 z--}4+N`O2Ll@+0GhZ6`HnBKT`b9%ZKJuQ}QDoGp^fqZ7C{xe+@dOz_NBF3qQC@T!X zIwtCh3Zs|B4SCcIK*V1FT^31+P1e4G@~KTh1@LRywn#eVq%zUlbo02 z6^ISCO{;>tD9Rv+gJLnNq6|ZJOOxnltrjAJYtxX#A&V~^#D1IUT*ZO2_tJ5-eKQVf z*#kss!6g+Lf*)~Jw{hIG4v7el0AEEJnCwyz`lBUDWESFZ#k~+1Am^OwV1g|lE<0P| zH-oXFZ)CZ2AP`eQT!uYCu;#j<&(|K44?S;s=>-S?)U~_5=BM9(>^2+TC16S_2LOP` zxsC*)Vq--}!Vv@H*s(2X0`V|H_s>x)Mb@Z|rm|4I981b>1e-?=RO5awh-~Salr@cF zFx)7GX*h8{$J_N8uUV@x^*H%CW_#xVl|5AebEpuBM`0Lv^Z_96O4caB!wPy=D&iGG zs0^8ZOfZ4Ee}?X*&ucC=nz+h*YcY|OO;39-)&~GoRi)2SmL&?&)G7Ka6p=KJY~i0W zu3ejM4i=x!jJnkw`VSakx(xn|CH6B5Pjwt$BBUq^k_>dI{iZ$>vrT%_IDi?QZstIfa);W0FcG1^H+vsb|#{>b?YyFN$8~) zAXQ0Nw}}+vjFGHcc>Q@=kGHs}`eAb&*>@8)iXUZZYvu75DQNE4;k(tO=d`g zO`s!WeL~NglD#}4r_3w>y?4A$S&no`vvnwApfK&`!qyZ9>CSf$Dg5nj>F}8P>$qW&W@f}gfmjHGOC;H2lHLvx503oO(4ANrZ6AJ-o zA&71OQGMCydX$rgLR1tE0HlJoY;p-Of!TFVYy`HL zsqb%GQ>u+g;)SWvl$4wXtN(*ZBNcVf%JHbzch|I{(uMW}b{Tr-jm9a+v5YRqgtS3@ z+;aMazvLzF(k(-G%~>?7p6T=pGhn!Vf=ZQ?frv*vzgs76^;!6pI@9l zgZ^e=EXwYc_ZftGSu1>{R%AH0EGt-1E`!A8K9uw$RvqY?rvJR@tO`Wht6mswLVGQn ztE0fl3ROeaLcA(@aJ5M6h^*=+T9+y^d<=R_GE5EWm|JB*qUiI`Obz)S-aOZ~3SEJS z7PUKC0C0MT!@0LYsPxqV_~d0wrYAh_g`@K&K!|Uj_L86#><%{P@WGRGXR&ZoMtCCw zYjIvuC|eGTJgm%uKtx^GJPOg{XacFimBJiUL6U6r@V2WWX+)2zaK?^j3_@6WqMd5f zfMFO67&Aw*mj}R)^{Q41668O`CTQKMfn}*c;RLP{p_kY)hN&y`WPe-JrF;V@(?9?` zBG7K-EgP1oP|%Q1Dg0|9@65B9w!^85!?|8w6b5PoP>x1{<(fG(g2_T-`NlPan`t2m z4Kq@x2WR#$w+^i)dg~mpIPt9oF4ld>12h5e8exlA zX*#@Z{;tIEc`;IWPP`ZM5VvSg>IcBxTrO zN83eAu_d!?k`B;tGNIRO$#Ah$)6|RQMhFEJAqz3%wY{an>5oH#VNgNKY#9pvk^!_U zGAtfAmP|k@AoaOYsl{>ar}qgOyxkx*)p!TSA#)-Kc53` z6N5w;O-u@8C@%}!EU+~tG%zeeFuj}$$w!Eweq4#x60sqrELB#m^JTz)V6dU+=CBNv zll#yS3ysXU>`OwBzvy-Jd!=rnaXNpRb|!TNw9cLEHG+vU`n|kL^F{Sm3_bp zu_3U`slsW`PneKd*TQHlCo@7vA3lLSjOMBtmU+gsy`RyWb6*Y%Q~_9Ko0bpH?r&wH z>AHzaP!%{$V>6vo$;K(9q>)?!RI%(X^qtw4E=i`rBn^6tl418P(Twjz$eHehA!(a7 zRThRQ6O3vTCdz>^!3_S$%whj>POpv6&!pPFUS)2SzB^9mGK_b4At)q!iyP4lBYRZ2 zVEc9lNQ?DqQ!d5lFS@w96bO5VM^#_dN9kE}hYPo>aP});f}AS>0su_>{z)OG6AuEP zyc%y#i`q?{#;$v4NUHDxVPS{YvM37>m}4CxKmI_W)zDAobBIb8V;5S3)DB094gTv+l*$Vl6PM zk*E+Bq(*W;l7xx=_^0fj(s7Z8P2LqVmPP1=hz9_0F^7W+NT_<0`%sHcm+xv>i_ZcK zf(ssSsURmd1$pyc5Zy4GsWcKjB);zYdsj-Lcs3fyqj9crt6$m;$^e&3a=FrcP&dMdT54Y)m;nd zraKrGWl4&gn++#)sp_g%+e9_s+yd#^PFJrq0@FzHw{ZyjWGg`-GEto~OXhx?0D97W zAmp`wUSw%(o0OO{>zF=5xz^_~L)E)A^}i(PECvGN!M3d>mtsgdcF?yY8DB7?UZv$< zi=u$;Z_j=gLap$dO;N0xY#>nsqiF<|`X~mTLi1A+$qbdG_Ph+j6pK^0&V}kvGH{4% zMRp}jJ0U)Vx^Cl78vd*Uuj)T1gDheynZF3C#n;`+boO~s-oied9ql|%hRUUNvJMvB zzp2RN$>`CE&wRn?+zF7bs&3Y;Fqe`$+?LP0$0bca8R zPDI_3+&I=VAwp$|plZq*r-VBV+5DSnONHKAJwONKqPA+Md`EM3D=uE;T0msOj0P62-u&m+xlVP zlR46zW3-(gq`KvkwsYYFc~*4e*3BvLlZD>~(n%}EgAB&OVy||NX80|2yw;l1Kd44cf^{=J~IvU$!O3D8409? zoOcT2M*qjeWe~?L4x8!%=-Li#o#OAK@i=y?D3T=ibo}FdMbkF^+|*69c*6NZMPuci zu$6hO6im$qVet7cxe!w4UXrJj)PnO?w`>88I^=+;wZ{cX&Q+o%5hy8jA9X8v9@Yt! zvG?o6J7U^a&9_DEj`W-M-lqXGW4`DpL~@;|4Z47^o-H}J@0?skIN}p1IOiX`9oI2d zD|biQ^F9t1%fVNv2rseUL5|@%%>~hnb3u0juOpg2e7DXA$$5FJ<bE-1D)6?Db#i4U4K-zM2>&zQ{ z!ce;XSqCw#yQbE6RyCbqQWr%LqD$fnCfnAk-z4}$WWSK;h!5pVSThu*1%n4k5LVRD zLe(vd3?l+W&>8E)GD3}BGE9UB+{G|h^?7m-VUX+f!H}x!vAfoS@i2h#1LT4*TcfO} zM8+=tv(d~$mG$}%U50-2d_k<9);JAGtC81I5jEz_e?&TAoGCCVdt1$yy?3iDOKqMbt%b&qg>)MW)8LeX+%ugpkk|Lbpvs^Lw6!L=*mCy4= z=Td;&xOH<%INq6lLIcE~OZebPjG6h;?Mmf>&asL1NU11%0u_7v*7yjesGRhjLo}Cq zM+pont5H~w5rNTl8E~h_tU}v?Y36%_bfKJyKhJl^I;SmGB8R(BP?54Fnfg6oQM*i| zM|z#+Q*iQoQWo1pU#Z|QA+PB~a?+CovQdjC{K`O)=W^KRM;f*);>iEx^fVLqV7Rx= zTQu&1H4}}p$nF`8X4S-!`G%^=Nc%5VWO7f-&&}|vfkQxR%a;sLswmi}9kMO$(KrWv zWjp{}g>j>UY#>O|=@@~?)OGA3EIEyXB_W2MHI(B&W@AlJiYWFY*4vVoi~xpn9TC9u zvJVez_)#~ERqamPMvKuD=akN+00967zIC<@@|`DaVRyc8)1Xmv+cZ}3RXD0B z3$G1!o#c<1(s33xh!#xX2+ZIR3LM?la+784j4mrTMuN?klhgunt&0nc#4nJHNdjd6 ze!(bfPj$WYSYJ_xWjgkVf4ri9x_sBjBL6>MR^A*lJ&39N>Gih%y&m=8wQO_+3WAXq zL$L~JuQTY%!bOx=PkwgO(j`LUjWHBjqyT|hi^xWBnP+A5m5|lH%BhFTiNy5phxB*OiArw@M!Ja+=t0)T+h$d)dJUwVX2)9n1ASPE}G>{A8`)7G5 zW!GhllH@wep>1)+d|;7Yocs$FQtGJgT`o>^-xmqljRGaMnOGxiej9S$TS2EPd-@~i z!n~(#b9$|6m8mFKyN3`Nyd-AI8AQF@4fS-~oeS&%=1-Gh23gr{g~7buSR$91D;ew{A`y^S4e4 zQ5{E2^udw8pWw4txsW+)cJG5`-GUiZRwa|)i_~vm6BK`g-I}~!JAjIzPryna{#n1_S2>-ePUW z>X@omQpx~VW@-p}ienH&2qU?tU*neNu8VZ7pl^5sWm_5?7aw(%K*r*@vlm+bMbiw)d)!Umoz zom&AC=>4;5sH+}tYulXmXWf*TxvgtmAt5AJ%D0n`#PZw93iccKbujVpLRoE)q6k%a zlcXx(VBz*+Pwf8Stc$QRj`UW-I-`!9Pz>*d!eAis{kDwJUS#-jdYsdCVK^1?KRG*S zn7+{=DQP4|Um$V(Nlmu2H%fG2t zx2mqGaT9RQGP^14xX9yt}-W^=8Y$aY>b%hU#JsGXwFXHbJ&oVcPa ztnw45lAw`^i^WoVW}~M`eS9$oWH1-Um>JGW#eeRa;J5F_@P|mEkCgm zdyea10q0zR{MPUM_H8h3Ki14=vwP##%_$f^dhE8sXL``y0TGFhL$s>6(;#V4MPF$& zSwH%(g|gHV39PL2rC6aczC=_Mz~Q{xg+?vPk|(pCIKUvDoMxlTrX$vtu$sAH90I)< z2aYh_WJu+lA$;B>huMqN00`B0JyLCa9|OWB-XepI1nSD7jgrljD2`I(>ZZ}id;)SZ zu%&NcAYI#Kc{m~=GSJ??3uZRGA~6(wRTM?A82z;xjm1bJpHjwd$CAO$p%rK>NS#QUYt|^z%awx@jYe>U%rB6K@=7j< zFl(XSKHa9RwrMhNhB#4;#bR+LGHoOSo|`F%347chd+WAHj#+0d_97_3@MFOjtM~oJtbSb<*K6H1@ z_$PB=`i$PR^hOBA!mxfQ^O#8=ja*ilErmi&>35R%eZFj<{uTY*OaX}4TiD621J|qC7&S@z!2kgZG?hkQ zDe5Ly=mT;r<_mU?+vSoT?mt=N)le9(O!bLC5WcWLo-5tBb#v;#-#qPgMEzX~iBG@d z;SkLizO+f#wc%c|o)yFUFeq3cQt~-*lyk}>o!`MQq6GjKMG>O5JfEv7zh?Gl?G%PZ zB|I{$;*kmGb)7T#G_Pm&!lc8;>EB3sN&@p3oIJ5ij?jd)9XnULPgd-UIgtl0^Q@&v zk5kMlk9{UHP{M$m_FaZOx-(RPj!iJoENiQJC)O1UoFkTjObP>S+x3bk3RUAuAu10& z8bQ>TA4cH$el&Fxst@-mK7RBsB`BbEkb|KbN^inV2NK}ZCMrb>j&$chQbk5#-mtxF z%S`pEMk+S!l&};@^TmHd8Iu?k67ek{i@pj1 zoqGWS09;i!ae6CcH$U)y{@wrZgU4v6N6s-0W)5v#^Kc{(OGy*%e1SXRN-AXJI|Se5 z@I7RsRim-6Ap(KQutjw1u)A0}l{V^!Fj~4MrUB?y>HgTm{YA7yBzw1RV3$f2^$G#MRIRY_3af zlvMJhcZnO21wTenYOzE>f~xd<0)e}Zv0B9>Litoh!Q%Nb1HdWx8crZdG#AT1p3-$4 zwe<=Q4%!oFGRG4?5zjckNrb>lB0z!_@~u-}_pATP^?}15oJF5}iFcr>YlT5r>RrJn zgfWO**Rn)u1VFaV$%IleCjz8xOodj1M=M#&!;lN0 zn(?7$Jj60pYvvoqZgs=N;#kv8V2-*s2#HLE5pYm#zt?aW#|&vots_mK z0QoJ7Em3~o*k&FlHQ(>oz5+r8UiLnlBJ4mYolXR#^ibv@^sB2I533zPwjP$v>bJg| zT(+*C<9y;cQ2^x1q9|f>zElsfGgTPa`;%w5w51h?C z7)-c}mWO4EUE5;dY>T0oCW_(nG9GKc*zIDi)sfmfsUIlf94Y=TXM-7VQcc)2X5vKk zUll^}dcoRL_=@4$E{5^y!%)_K?6$yZZ9QDN1OPU+Hg()3`@C`oF#z|W`-#H+_OC&&k^VZEfIAwVgSG3pjV@$)2 z^vA(Q_YS)cn$^h^aYJl`@m&DypjX(g;c zT0Gz<$s(}^Nw9j`|M2(`Cyeb!e=V!UqdA-wE3;-9n_h&;ov(481Ez!tLI!%ylM5|W z+c=}BuGzv}?;KMsWM{QGSa>a#5mHMx;0v$IZt_T#=V&R0?!ynkI5yNk27D)?-|4HPf{E&dnn-&Srm{NW#?=08nJP2t z`J!i)oJ2G3W$|;YIo4A!tP`m>fT`6XDiC?-Rh;H*tPTk>0W;Hbu}YFd6I~#aS)ACW z$>1nlEK0~?{{YOuCl8MDMNrB9aQI)Eg`zz-Qx+TH)o`_RNy41Ex zT@RcxUHhE~4t{TqzT$^996569{;qg^#uoAUcz=T^CH`vZlN|3sZh1aNX7%`}D>hiZ zd4?qUF}pOJvs^Zzj#54r5z30nfTw0zuZ6GT{vW~rQAYnq(yzqj;4QSSZPC`X5zNCd zl^x?a6e;K=)vIiNPpbLn(5-EY1#yA|4+aR3gK{L!bejvpjRO{ozF;kV_%HHK5SWWm z)%$^{&=htCV>O!rUB?Hrmi=CCIFpZ95m}Jp39qL+IOp_I2@v3PRtPb!4<4uD_F463 zdf1|=S5x0E$%g@8H1@^ux~5?RUr|q)(yvC-CgQTJLbN2IEQpJYA;NgHxB@d>29jCfnIhRprNDxv|FC64vvJ5+e2?g;a2 zY6Te;-z;()Z6yNCp3clzHV&<`4Bb4x_DjmZdzQACt;H-!pW@^(Gw>-vQraN%nH~TV3FiE76n4Gpun-ZCLnku1IziUZ!Ot* z2$I;hou@vkzz;GoML|z%1GJMdA8Q7CudCo(4ftOH#{N}BjcO3Bb zlPCZV_{E_%niB7yg>wz?WrrR-T1}g}36?ZV0u@W0qqb?n8fELDO>V78gcLFf7*vfa zwf`BQDlN8)gP9Aw+~}5K2o$CIK^hy%n+mBx!69d~ZEJpx(M@?~azecRr}%@x&Vu52!`kORGHw*(1y;_(5FTnGzpy;pRK~<<3^WFNcoi05i8- z6*+J2eThtm^gcbAH1u7WI`?^a;dE^)v^`Fa69~u8AU-RJ&7qAU5xquKAO1~9!<-5 zaDuG!Q=?dJxQh1)uAQFu5MJOV6(Bcm-JCM;%@dtFoC^ZxGxLL>Y5DrzbTO6hy3-)Q z%fxhA{3CHH%NZFG3JS5>xYD|ekx#tT}>0*VBVPid$ll4-Q&y%$A zXx^HN0`dAj)AmwfUFBUMg|8&kJ3>%)9F1TCpqMZyLHLm{bOXx7NKsZ`nE@k|Z5j8r>9Aaw+$p&?V2^24UT=15p;9ISyUy`qZx60% z1BeB__vmaki^{32x+&=Nz6=Kc{!{7DGp3hPfB?Y?Vca=R4JeAyyF=HzQF-gE9Bp9W z{rDUJ0pfD1|{OQ;Y z*1RGBpUgVU=Zy?z|D3|G0OL(aZO8aLw&qmQuf#A(WP}+Ovgc|;QbZ9|eEhclW__sDflJFz$KNH%zS3iLsK;Dm{U)2G#;XGt%u0J(AN<`m?9 z{kZcO^v>GrPq6R$Nolck*gx<>A}j@xx>yAjU~tF^k8ViQNk!vh);I@8dP%afH%7(a zn>$-N<$4lAD&fJSP0z3rM|$RP*Mf2KT^c68Sy4KmSr>A~qD(sbom07Dp_B-1#S84d z=ysg!^-+^XlmPY~mZ6ylvlIl25kxXBQSW9P&Koc@I(Yz7wj+*re9m>1cL53C4GE&m zDSVYg#gPhJBEo!cUr$r`DLnUs{nl3sR%r~n$NMA?x9_+thn!{8$z5NzBCsU2??;mfz`$}ok3J6V z11BX-LSaP~D5a>xfyk&TLLP|)0Cx{MA95?a%p`M(AEY(4hm;IcCG*|73EaTuMCl+R zI-wK2HiKpC`G8h0icV`C4`q%nT&mn9fC{@Ufw3RLv9@Je%ooU~DbX${?5qyaW+gz)LPb0H7L`$5)>b?A4%Lu(0DK6##COtEs7!}XL+`qZIRDq>S=irBvyPdQzLNbzLSthH=n>N!wQ*Z2Ub~}kUHZ(4 zWt15u^3w?3{~@Sf0=uZ=Im)K4?T)lSCR-coL@BE(?b|>fUDINE~6p3}nfI5v` z*P?3%d;l69HeeBku^ZZ_K5Zjy%LY-zT39g{AQ4PiO_{c1ESI*7dpvP6E=`-k`~c9k z4$wpJ4wdlg?9I+J<9ulNZXZ1;N74sRtz*xSUU~uYo40P>afGiQamwyGN4o60ewO|D z=;MQ_2{j}TFseoo zifL;T&TAYgIgDY2V&X`be|xpBEcTr`J7R^CC=}!x>#h*XDbe(MR)gtZmO&l+n2SgQ zzZj-(-TJ}N+Y_XF%MPx~8MATJXBVt1oCtXMYCIV$gVjv*B$+dI*L5A{v%`1`=aO44 zg7pCazEaH^|A(kw`1B5lrYLpaxb&>jkIs{0^+)9v0B#VU9t0#T2K;& zLQ=wk!G$a<0tC8xnpBkKZ2)k^XqqUCJiJ!S=guJXbq?vJ7a#y6toP2^L7>rB*8Wx$ z@1JE~_77K>&%40eA_p98Y!DMsy;uZ%EBZ>H`x`*dXYVxx;1d$%=gp1bDP61_TrF^u z{?A(>o8Ag(ts~tQQH&QQ3|V{=j$LMeLVo@N4 z*lgPgbB|AuSqwqUhWkXBqI*j!Hec1DqzeFtB5OB$O2Xi_wL;^KvHBhWLQz#~6;G0fAs4&A`UM=7J@L!{*F$J~GlU+`=`}(_Q*afA+A-4V?y~a`O5%i%_sgB<>q?gZz~;`DYV75x3eizU08@0F z*Yi2rrb(X9it5=xho-eVmGk<0CvKkzS&@10h|Y1^rz75zup13z3$Mb%tU(NCRs{oH z$22>b`N+OxHc96?c3GTDAuucAa7+X|+;1^oIXqqB?+zY4K?D}RB=8mRiU<(EJJgxh z$ab89fR+-?jA`lRwAd1!@Y6ytVsIB*sPtza;(!IhfDI!0nT% zihtyZj{2o{AM+EU05u0vD<>;oLRt1X0T>a`)r>9_mCUOEN2tyJvpgdAL*Of+YBU1c65bJwyNBsKHgy*TK(D@;{c8Ln!Su5g*^)@LWOymL#?G1iD==wD zBs6&-KB=&E;MJ;06eBw^<8hVPupYLGVZ9t)%4PHPp{p=-@2~seI4TNv`>A*E8PO{v zKmdS!ovi7=Piy@k;kuhR)3|NE{?VsPXc(i1Y4jI z^HC(yBK~8GD<(KIrM{A0^p5@+J0(__H7F7Q%w9$!aO85&`}UU(EA|i;gHe`+=|nio zjMq`QAAawT&<7j7t9|hg-PSc$i=|p&BGar_XTINJFEe1<&Y^9(;5322Qwqjjr~GERm%2)vJh0HYiX0Zb@=K1 z`q*HWv-lL{__jRXaw9KglIkP_^Z{NHdZh%&jaxUTZVi-mlpiFNHu=t3zJP~^b3ED$ zj5kz;8;!gcN<>)9=gDuGVrTpq!4ER3bWIIqqzla!QhAo`qEWKz`#HNsAhaJ5OtKK-woBnGJg>O z&Q6JjMGC1!Sj$3&(OQ$SDMS8;a{M?Cen&!Ps+$(eM99VwX9lXWfXH$ZPnj8fqG#gw zkUo9)Yq$QLJM!&oH*ZYiSRV_Wy)+JV;1v@f0C3}Xe*1k4Kv`VimyWuwqvFYX z+`YfLqrpO8RHF)2H3BpH0*f{wNl+IF?@iQhpsYszHzI6ptQR1Aq0GB7;LyUxjxV86 z=Z;=0Jklgaz1}eg7|RMA`BmEK_hntKfe1L?6su1}e5+!CWU?iCR2fk-wvr-TOg&*1 zeKfKk3rYV(+fJ+@V7~GjacQ&{g&iS{;E?+sXWLyp= z6be;~{vO^`6sRWSz8@rKGIA^#P}XqX7`BGaGNc-f-(P#Z3H})RIQMd7pbNc{0_4W6 zn^W$WIoUqi#9yKBmd$hBy{cFP7|_6XAm3SPv#U1u$9n zg7%rqLGv~~*&cl|>rAwZXF|-3(Z<;OK~^T5*WWCOzKU1L&*c3e6lEG)ZL}XoC0#z6 zqP}TP=k(^;`64^?E_o(^S1&`ep4(C z?{AJ?GSGFvYPn_$-th0Z^4oE0?0aZuf7U${r@86Z2Nu5SjlywdOz7pvKo@!?1qcA# z_?_RrJpg5W`RHqI-o_F6B#%M6^=gTa@70D^6HhiaLUaviesCbsF$rG4%;ap@69SJ$ zW8HLOd!t-?)1_lPI`qB}y9?c9E6)eXEeKNPk?Zwc+a#PQG9CkZ=QzCZMOz{zOPnJr zLYWTB^eN$^Js-$$@6#^CflTf<^tbq9gbo)W_akV`YX3-NnlX=#uDrY9{T-oG;yibq z!+dW)Es&VOViF$Rv<@FWSieQ9-%fdmsjZRTYy__vis)7vut;scLfZsr>5`(XLNEdY z0$q85!VIQW)8b%oe|Ued(WnB$b~KqC4a5X^$sj_syZ>%=l3PU#_9Q;d#hQ zL$9m=0TjymK)w^vSB`?QJPp4;|yjh zM-@@w7v09>X!ZWlL5Gp8no5Ln?6cAvQ*L7j3CrOnhTmtyvC|M9P5;Ots{uqwG;r~4 z$n^%kOW`eL(y?Lne;{*s3*41txLY3$MIlB2WFI^2fApnLfC?qYpbaJX31Q!Ia3Yhs z&K((jwYjrppA6M_jC#JnY;TIVKa6!y53v0MhxrkXV-a%cB-n-woRr;wvVZgQdkzwt z3nPCT_{#pKRi-)kKbCc3-RcdPF&U>jr7<(6haEn8c=95NC;c2pHu@?b75n}U({S#{ zd8SudfZVusbIPOQmk~pBkA<<^sJw+U2kz?LKp=<~MuuuY3Kb?v`UJzI%>9w~BQ&I@g$t(`3yLkK?ei__mT_3K7BG~t zDNA#c@Mm*`@F=Si_<0suE|-Mm9!^=%O0*N!=V%EV`Dg{+pSYlnw>oi3B{ zWTNU=*S2Vy25go!Th`+l9T64mHDSMGwInDuB=T+jr|nf2Fd}FmYO3$7Pmjl% zj#BB6I5C0Pt`AgTHqZz_#P$CnHlwJg@;pzw)5pi z#~TwW)IrX?I6Mp}jTD*CMay0p^mVgF<1u8hZ%)c1?>k>QxF&T@k0xVKL8#}VJr5iA zIX=z++IkhW{@y~eP>}dVgfXUCzx-|$WQDYHKS#jBt-oLYh};e)@e&paOr9un9Eajp zi6u3g2fv4N(HFzsqOgzJ)Xn#O=|_nnK8T1opk zWmX7@!`ldn{LBPXjDJgVp$c}hVO0n@CP+3q7;Wn?n=ka0@#SWM3K0&j8p4l1ZSeh{ zHh8q(oh@c{!Vdv=e&cukz4wnBbI0pLiOZ_Hee9&2GrABUfp}EB2XTn|gt^bNJ}fh5#=RCR+=hXxR5EZDZ5dg-{*71tk-b}K{ zBNv`*Z<>6NK6?wd*Q&n3N7(QBn>?;_Ud*8=_$oP9cT+bkd@kPOu zV(DUaXgM)cR!lo*Cnw|G@<_9l3&OHiUkVd29;L#1vA=%bkMYJhCJQ3h@@?PyUWk$j zfBI>IX~W09V_G4AIoUU6J=z}xE9d8=rr)qSAwdK>Ss*IReUtM^q6rtP7W2b}F|a7f z{`Xc*;gucPc>bAvA~|;)>d?O?{dLXeQ|Fv61W2G8w{A|kEB*=?Qv&|_u^0F)bEjwJ zx#QpqnJpZq2OTjONp=V1+<$hRN zn+HNKpZ^265FiQN_`REVi23UPc5nRZzxM8t=ia(GWt_1ur1rb2eR{uzb3j1_#*?uw zYyg-a9;WOy7y>K?0R!WW2}Fmxw0ZOtI|n>G2(V0G0OO5`hp`q*za}ce& zC`**4dTw(><=wI>vAMGeP8hNXV@B%d3O6Uhh=9XK4nH}?21#ApsO4rJsRu6(ZOX-o zK*-0+3}&Lzq@!6>mHCNcyJ5b%7ML9_&~>Sxl(yu3EUeHu%EfR7G^pPZZXM@5S6buP zXU2D)ZqJ_&T?mkj{>^{*_ii%qO%VOVv4Aje| zci;lqf{I^?qLlp?u(Nr*_O_gL7?I`qjLG(<$p=Y#3F||!&U^xU3ncM$n?4G>VGI$g zy^0{wHWjY2$$)l?*!1rNMoIc>Fnq1yM+w7Au>Cw)FZ}p$=7R*Bb5Xm8Bmu^@j@q_% z`|?hDKQs4s=gD|Z_dAqWUt2hhjqnhB&yG6<%)iPe zKTN%MgP`dcGdot4!I`1WvP{ExpEZ@`=<6pvcU>*4vKoExTp!{o(S-mRpc}vY@4pA4 z-5bC9-n&PhckAYqakkm%O;f`$;lZ@UZ0Rr>jZlq75pM@DJ3NTcP~Z!(!mU3%8c#qV zOvZF%SrY)5HH>DNGTQOhMiR~&DMDAm;G&EmuycNsCGK4k`)Qf9y;dM5qmcTp7pBBj zp}(niok4-o`<^j1xowWhiGpqWi1hO9f-nzZ&)&+?B4#Mc5+ef@F6Zl$2PYwPmvdp! z^G-{L81sFH|LMW$6Xv?GTVhoZBtK|f;$$y4L5IQ$95Vk>58BfDhT$|{L@~8oV{jZ{ zRd?9mo0&(=ERi6jit_nESezA3Jo4PN5m-lOub*eS5FqQw6~Bzay?fkgH-7i#EzlFz zw=woIcd@3?NB2C_*x1@srb`64whQ?J>9rbd1Yk7wJKPlourbacfPqgM(n}a^_-L%7 z_Oa-DM=1C~R`PX_S?iBhYgMa+wa983b!BWGTY=a3VdC*zIGHDtI#OvW`!FJ^5wa5J9t(;Gv$8z&y{ zwF0F3?qf~hIiL#xvW9N_-pxBe@&1ipeee2l=RQu2tfOAy)%*b%73zj@?_rD4Xl&|S zLCd{c2B8$bS7X_fh_JnR{34t!ov-m^Xyej0n#KA`vi%q#?|11sm-Q=SMn+iJ0kII4 zY;Kfm=24U7el^+NAVAb3(u86bRQw}|aJJ&WN>kW9vYdXB2RyS;k} z(b9r4PTg3~_-aN(SnWCd(Szf|b%!VhGlZTN)<={%woU#<9FeqEGMj5j1+K9!LO_Qa z##I@iS8XrCl&)hO?$6Pz8gq}>H<3>O8bUbX9q4xa?7T8Fn%3dq;IKCZ3Jr$2FN)_1 zU!4g&T~#m722wd)2#{mw#tCD$xuah{%lme1<9CvCjGx?XP>n{)fH>4^>e>de%yfNq zRGUxGZh%tUy*MpWT#8F@3KS?5cPUcbT?-T_S||mI7K#*i5AIH}qJajt1P>B&)8BW` zJ?H-M9ZvF|1eW*R-DhWKW}lhCNeRCux2mjXa(1BuE)dz%t3lMM-8A273>h-;&a-Ty z<$bZ^&PK>RourTSq7G}OYnXVWUV-OqYsq8sssB_n^8xSu42?ZH_94+}P}8L8E8dss zyheAP@0}XZg>JaUo~^7ct94jM8RO^MzQuZg&pi!mzj?2O-mz#pZ5@Fxm4hlis3M{A z+aS@q0csfa^W1~C;)}7{%)7!F^Gf3hLMl|bfCH7=&IiUQN#tGFgP&XOZffYdKu<*X zz2I&bHma9Gg|yv%7le`B;)Xgwn_e$q&&tdf0O^@Lbg1&psD*k?{LyM){I>5aJ;`}O zeK}_|TQl2mzhQjR**=qFwa#DZn7Y8%?Td9RwsFRX!LR#Ukmc_}WRIHg$7Hpe$#Jre z$am{WnPpKWgycN@Xft2%8?(KC_D*QR$Lu#zIDa`OG1|EBtO05JQIMF_!IM4;^41I0 zNJL5{{6&6AT=dg;9j4;vBZ}RF8S_1Qs>@^-_`diWYr^SD*OkANT8x`Ar@uMc?z;cP zM_zaq0F$l+$Rh@WC;msv7%}?Y+KML8LCS6>r0_0iH{`|&uY~g}QiLv(=AvJrDEbHq zcsqh4E}n38V4gw#Yqhg;A%5uDr6^X(^E*4Pt_bbX2quD~3XAC5nm?UcpK`DrlBj^6UcFqhJwg*fC_U2U!YqDnw+u~$6j zI?DUBqDOvbtNn+W;pf2loK_3t#)~wD{(1k%D(_{9AMV{WpQ{ zq=^_uYz!HHr3hw%W~-^g6$qmL2WMTkh4)os0NfKk(iZ&SQ^NR;jkmD<&$A(_<%R z$RHMsJjJazb&gV5dZns4xT~CxWAYUE^)In=&4C@mCA`53E(Vph}Zt zC;|ER#@dq0AO6kUoY+&t#{I|j+}?e;VF*9u6xQ@5TAsi^IF{5P`?EzoKAC_~>vKq` zcKNpzv=%!^tH&WcVZl1CT^+GFyG9 zE2J)xTG&W(J11+5ZlZ+cdJ0Q?*7-T7V6=X%|ErOl?<&JLzTpJZz)agvKN?fRudG80 zckX*9>$%R24;t7}pCcH9O(8MKG$kEL!C4gJ(ZB3HuYxrq-}gO3H_gZhPxh(#EA(w) zM9P&rsStYj`yROclVdObI9k5!==wOe7cAX$^+RDcvep$iHwDB(ZHHQsv0c7vFH3tH z4B}(jA>j2G9%b5WoOdahVyi$H?A@*twU$(Zj}Drk6J1%{8(YY4%9VCiOYV-H50n|t z*$YmNOJ48WtjQ^ye8^>^;n`px9%j814q9U-3J?>?+{C_&stzHpo@*PSFHTDoz+EEz z#{05DP&QUXG@75K?|fz}2xzu7d%j()s;TAz`W<5fFv*6<`Lhx#fS+k&`9EV>U<59I z<(B=TID6(|#U&YbkEPE2bEP3MPu)(a!aZkt^4(nu7dU9m!`?~m)&MGLFI2?Gi<+)d z*?;>xRzU*}8o4oV1|WT(4l);m%Kuc%uLYBvAiAIF@$a_>y19|74qa+r&OT2wd>wVR z`}7+YNy+SFUJAU8%t_Htq!HgZ5vN(_#XHC6&u1U7o4XY*WH}CG-`kbH%ubZ&=+Fx8 zI)=h%-hDA-IySA9W%1g`{OY8h;e6~In4ex(s5}ARca3M1Dx1cyAN%FkbsRMnZQzgsKUnFic1{Q^~qc_CsIaz6rC;|5kxz^~Zfe}>#XkDL;_ z4JpuChF+wrXLho=*3YRoiw-++LDd$_h<{iDgobWHjUkT@`({t_qyDtbOlM9?Pc=tL z2hKgGdD_7qm{3nvKN_`2c%ANr^R>P&$dE%lNu#YMQ`NuK_05y^F@JW% zX4F8FIuR3ab0e`pu0m_mEo5EGSve?>8Bax-_KA9L7xyk~^^J2FQS;}~~+dOkmR^-MG%;IlX6#&ttx{KRd!$&g!0aY1|tffy4L zen%+@6pQkz`#IuogMm34S5yb+w%Kwf$$|_OySy609qmoRFGeSR@_GYgdI*z!{!x|o zjk#KP>34?4UPJKMG2%;x%j-{pV>?K`xnrfEnm<7 zo%IXX{ z%LU&n_(8VzvBcI^i6oz(>k=#XQhDmwOKesV|Ck&%F`S|VmE|hBzhB-oTfG(nEveFy zVoCf;8TBI3NfbMM#o^OXDI`ikN7AwPBWPT@ukLotYU8JIG5A7So-aF_;;{0(+D2K= zWpnoV5b)7GBAFGbP9<9i!ZN6I@163R%D7w)1f0RnxA!koMvhN~R7%Mml3 z$(*?~7fO*Jtozwf{3CFoVx1*mLFi*`=IxP|bx1G-MBCwONO$3v{}XhfNQJ)ra_-+r zlU~5Vep%(aa`h`u!sX@b$4Bfby{vCgsv@u4o0zC0o+hrHxcZ%}h~+*jx>F^k z2uD-2_<3Aa{Lc}oYm=T?f;gFYe;k|oCJHH?75oQpevntj`-h!n{gj_Tss_diZis9n z4W}kI7O}gcOEjjIU!mbteDXjR4CZ$5$e3%u<|3~f=K|UCtE-C|Vj@OAMa}<~{rWwL z5ML5HSw&yiHAuV46p=$+D=9HXcgiRt5GY8@^VpC ziD`UOL36EQ&DF=7n@q~|1jSlEyML~(t)y=Bt}-;e#dv8{Huees9%{$E?XS--FkF)3 zIA%n35~9&TWdG}G7VjzGt!L!H#8xShNie(ziP&u#pRRiNv|BbX`L0%+vLp}Zx;LvH z!ig%y1bF_6g6mn{C`u5$j)lqFipR8!7w2h)-knU>CgrKOdMV{9s zH)k}YacNV>^7FzFwaa=zl?mj@$^Gz&1;db9ZXJjY-{c1O^^}2J;qcr!1eL}iR*!9} zPaK2`!g>ye2_eCc0WS3Qs%M> zvq?3OGS4tdP}}1e*C`@O+z!x?-v3zH+m97wH{o^kywA1ZuTif-%hXdx$C?hyh)y*a zg*&rso&+!3o8m`8^9LnH{!kTl9g7bP-&%6;Db=5xRtK`*eUuGS) zc9nY5C>V4@ZYlDUab02kSpTCO;>+mnZk7>aGKNKf`ZT|_owEy}z31wlRvH!rQRO9F zM{bMX=wC?1O&Y=KwI?yO)o0c0?U4PnVfi1^Q&qZt zMiqyeop&YZr)Gdm8Pfun7J=nQ^cQ_+szqu!vPQahF78AsXBr|?udV)GU|4v2)YnB6 zGCAkSkKTLNDA5Enn`E@q{>itGCb-`gHVD&r-?Oaxx3hUsVXBaf5tB8Pw5k2$ST?2c zJoP&O8^kDT?)!cvRzs*^^{)OOCwz>~cHyUN+5UOkMcJ?M$OOX^M%OpZ2FTu)zs}q^7yJ& z6NHcYpK9?&@zSXf9CCNYEW(Qr;!w$$szfwr{rH7wF7Pq24l{T7{f(U=#tC`J6s_|520Dz-jRZ&h?Xr0oK9P4Ce$`>Hdm{?Ho{81QY5~X|2 zKL_^?!Z9$iS#KR>5Xc#zDhlr_&m$#lRu@&ceC$Y%xLqwC$q3KzOgE2XWKv1 z@G&OcvZ?`f3WZiS1NIHag)p$!KHlpyP}8fuA);rX^DYxYTN5EDNw$uo7t|-U<)`d- z9e()gAoX}?B(k>>C@QsFRl0OQmG%#TKV9Q$0Iv(KZ>=H`A(oKy>AVAw{y0r0j$%R( zR<>nA_?!N(8j&6o$=&G0YMl$a4-R>zhO8x515`PS|@*TOGcZ90V_# zct1ap5%5d-Zdf?TMtHL(+V7zdkB@!)#D?xpA zN-X%)q8M$9Rms|FN96hYNr%BZ{fFBraj8F07^H*e+CWLm9lMH>i<^q;Ih-IWlck!8 zc&wBB?~YCjA-biGyQo+b)qcMlhrREI1-JIPN@a$FPm z9y~H0N7CjC4FD$`QDa>Y=1V!lN*Nd6{fsrR(SEkN`Q~PJmFtr&5D3j_`V@o3>>9{$ zBpY^Imew$OJ2L8X8rVBnRXTeeuQ_eiJz@~~*o0gMhfyW@j@qH9O|NTf)b3y#xE(bJ z7Q$1c4L>k+6mOg*qXNS@Jwsdn`5MsDIU%B)e?p1UDLf$-JEK``;v0K6vMBOdjRj2+ zr$j=FXzd^1z;1djLvn1`aKc$&Q(uYmxRb6Hj~ppo+u{!{*jFk+=lAk!WYWq;1OvC_ zjDt9C8j`Pj%9t!IvD-^jvHnESg*{%4w*pOLZ?bd@md@H>U-Ewv>Zd92zz#Z1Lt@j%3`tfh>mm3JF39Y;4?tlV#X2Qh#7NIcVW-`$2E zb>9YQ4a;v%X&@8B;9+6N4~>YzIg~(A)AfdPQovYMzBa6Ei}r2wvx+qHT0wqKTh}3n z?L93gKh4H;718CRKm2?5xh6%~W=6PdK;Z z4zI>;@&8dO{U$i;dhd;l>b!Dm9i?y%gKs9o-QEf{*%-G&p{q3aLfaLQ=lpX@Oe-&q zdh69!{_cLyqN@+`JD*FaSS6@vvELm|xjk+yD;RhX!+PI2-D8&GVIRFDAqg>RG&{mL zOAyY%*nAvr*d)5`%ThY_4~yj+-0+UN57Hxb`MCh@|549${9O>r-nQ3|csA~eSClAF zt{pwt%k35Wj7JDC!_wLguwm8oZd0sG64n+I31d^Xth*H@QAUorcMmMd(elf=G3fl$p_S^Gg9^8o|`Dhy2NsC3;&O3>@{!g@>8XSD zR!T{pL={cNt(4UUs8U5Rg`#q>cgQ18e5)yaB7nD>IDjm^XwFOq6?4$49PaH>fk@?O zt~$e(3VlrSV!{=Z6k&qDE-C#RrwLqLh4ezIz5akD2g+T8X!Z_emc*GTf)^ZuA40U` zP$ajvO+EG zp^t4sKIME=$uk}ivkp;OjExRCHGS%%ESDC|qPTB{O5;I5u^gLaO@7>a4Q?W;ekUoe zu+=6r%7}EcUS(PAcDW&|q!Io!;*D)yPpE&Co>*~9#iAlf-36=I+Z1D0z}DEp__Xkc z86A-E;2y3!UCcmNLn@idtiO~g=b#ULNire6XK}N?_u6Xslf6B!;7^aq)}8UFVxyUi z^O>QZaHnZsJ9C1-&&v`ulpzq&E(C8Y99R3y3E;arWEB_|v26aQ*9|0J{cv??-&`9q zYK5Fbp2p=Ie*5g1P*pW<>8h<0Ki!?z>_k8B$Jo>=d7^oxbL^bxf#B&24vbxJj;H`$ zC~pMva~68hSvtGA-M5=!{H!Lkd3kjq`!twgH&0(@ga#{_;VNDn9X^Z7$wL`}_tS_+ zU^V;DB^KL+)+V9)l4r2N==Ceu(rlw2k|D>{>L@?)Gy2j-@X?zRQz&5Z5q8}zDc+ASvakV^Okt`VNw3+Y&tnC)w?=C$~ z@rAkDVO-+=lN{)GLqXsTCB4ve+3qKs>p#2{Q!4FvRu;>u#KCx%i&T6+xQX1|p^W)P zKoIe=+`Afg+j!V+^?M$#k4ke!o*mfV|eA9w_UE=!>%pLJbW<+`zL&WIRn#9C< z90joAd=#R97sbjASn(agFwP-L!ph6i`9YkX>lmKxzJ5}( z{;(ryFJf5pPuCnSaC;bP0kf7rN>D@5|45GtPYLW|316S`%r-HU+Izg94K>s4v9GpJ z?s&l24YDW8!URAjov4$sD|YaK7kAW>Y2IA=2Yu{B#!_oQGySV;sFYn6F;I;B{x{nL;GPT(7zaZr`JG}p>KhD~P9A>m; zV48fdnWokyGK1FYdD4^?4P$sNTYfTa6}+>j^%y?UlG*MSaso!|tlEn>)ckY)ll>Om zxW9JQ)(gvxxN(>NQI|w`<2X?wtdIAOrGH|;L3gu?&#dnp7Grpf-28K`DG`^Js9vW0 z{MER4*Cmazp0=@IJYs{uPsUaAkM&Q!U^}b~HZCbRjJLYeXYyVt5cI~axvnXCbkPp| z-Ewe>RF1(ES|!noj>V)H9B}RlwBN_fy0_6R0*Yug$D`7OhL($>PAD_L{&;nTn~>># zRlD;SE+@d?l&@JCUFKcBCvUu7E?({6Sp*a4EhH9i5~t z^hn5uzio?16nzYMdqz!zJK-0*|IKOD&CHOM{htT@NeBew1}%(g5m}Vg)slCC)cS?R z4a(v9PF3>tIp}Oo@|{}NA=wQX9^oUtnlf=wi6>4RGkrchp{FkB1n;L2Fvv4h1$E2H zQU9p?`z!&w8^#`=^*}B~FQM@A%G!`(BBK}IRGxZ}@LRTFs{hOgIHfh@*`2-P_dMQ0 z+bX(O$Jbt+7Yl~J?RK*WAt)NH?T24pxCi46H|?M>et#1@v3*14a@jGcc4a?|)Iw0KOvO7iwWn%q5vamfh}z-u34$Z#iNVbYO5=nsL{R@lFk z)sI(lhp~ToN}Z_O>aC+3d}yxJ?rDox1L_i*sS$tN&wn8HSy%3t7+;FRiSoqgyDlEr z!tY3|d5}_;%$J%EHnfo!y?}jI)@~5 z@#6QN{O|-DK)!>WoxNIigjsz8a5KdL#we|eL*D>hJ{lPjKThnah;`m$ulcmzEsG{Z zW;BGtvo%CSYU@Dhz4ZIN#<$)5TK2)ra(^bSZ)Qb=&*hVY;ss6?p z)+e5fv#)-Dabu2nc*9^3L;`kBA!sHUd{z*A1mjWQ)wR7}5Y7ISc<|kv)>#@On1Jec zI3^2QF+mfCuSFOnPUK5@vrOdZ0x+m#T3VJW=_bKE0PQ>x48QIe*r|!w=kkBLIHamt zm3q(RY(WG0-9&nS^C+;=K7FalB@1B8YN~6BT=4uf4Qh*4PYdweU02~bm5~UEJ721H z-AbIqyp{=xRj)DYeXo*J*>BaNh{vWtAl+$cN-8_3%m8@r<#wI4 z@J|YXhy*0@p*kb0%yHioj1AOxYdF+RgCJ-9N%5W-v~DsbV2H;--x=X11qIU~G5Z~7 zW(^SfNT*T}5bvm4z(IcveT3w(o{OPB0VvaUP$%Ne$72K^oRF~DMm3<$y80!r;!GAL z$tgll?VH~M;nb+=7574J)FalhA^gpJ7IMPX)*opKpRe2f+zax!%o~YH5YdRdeeA-) zNt$o&VMO>h`L3;$3~d#~WFB`$Ojex_U_4Yl8Sxb9e}DnPqmQtaj4W>wMW@U7jy~Af zMCIRRh4M~37D+$M0zqUfC#gD_#P`I?De;B1Z6P?T84PY2n&`Dxi&?kQnpzWnnP*o9 z3!DKc_Pl5)WEDzU-krFItu6hs&M8QK+XKaxO=zhu{7H#gXTX~_4PB+u(nnaSuwAKl z2}aMgUBon0@cL9{;Cf;FPiLp?DLA>Dvtn#7YTK-7F-BFbacL+QcaZ3>pG*!E>J;EN zw(>9vqD&@SWPek=EA&d(=HfTo*!dtCQ_u~x@W|9nafmkiPg{MEa)^-@YGp;PuUBnn zicOai5e3OqWKPlK&pmapXbbFvtw&gWM=@51A*5R&r*O%dR0skUIRu8&fP7% z9Mss~rW1{K6^|)BCk-Bh^~n z6k_ZQi;i7nJ@Mjq_S!bavtJK4&DC{cIk&$z1E;aAgn3}Yj3lNVra{U52MW&47V$F+ zUMSwkisRuktmI&CYLY%LWp&s3HlKgbpMU=#{HC7tv|Agp~%De8$q4z zrf$cYwMIb2)yCFqA-C{jb8`F?XBP72LQwFD@v{iqT!-7Xo?S>YJr(24X^gF^U)=J^jpb2b}tToXcyr(UWa-o4Vi`2SxPK zqZ}t*O5f`ht^B6mJ-7MYzHw;{NWBFKigB7su<79? z%ba#jr{h6wFqn4tbFBvj;!gE#aVO&jNgcgp*SPSBRfAfW=31Yrt=@Gk_*Q1XNaT5tK#u*IsoP?@OA7pSEtMb9cl}@38-UBK@(eC>*szC)-97hp(TI zh-zHJHTFih5pls*Mp;Y z=L*N@`GPMvnCsW`t5;7(hU|dB1`2)=Vl)_!G~g|4kRHS(_ON`8&V#^(1crWGYW8;mYGE>%~VFf{PbvQ&!P&8p^b!9CbNy!a!`Vw0fOoCD3%$|Z;1=LG%U59z_Cs0m!xkCh@^ zmQ2c)?rh$wZR&`u;>zGBKg?1w+^Hoe?X^BF`WQu;?=mOYb)zkidE;UJWW?Ex2z81R zu$`Xcw{s;L*wj81XtlT1QGEm()q)PS8w7MWz5=q&P@uJ*Ut9DnOg{!p$RMCw-}`N# zpo^@%%ny%+GkAyoVa!irJz~2f@thzNv1aj+FD7o@&*kP{{ghWMt8nVnr?U=f7+7er zP|=Qyl$s=nLjph$_z%-Y&9`Bjmt?%nr8jb89jfH@JkDths)T`S z@%#*;d$*t2#LD;}SU{uv=Uxo|4bYXRz{FR%KWodqyHis*#({$MTOG%AGLNIBzphA9 zrACh@PhV0TbmSxAQTik>+1GU0Z&#>gOxZI3S!6NnX(|%nzw$9P3M3@Tbj3 z#v=t$sV)#Q-~00`L3{hZ_iE4Tl})AT19_8f>{(=a>HhLPMFD881KDj8Ju)}OOzdbt z-`uX^e{@LQ;ntm0$e~HyHU3?JG^mba1j2>pIK7TjD`hw(h zVNbg7@}B*zv*apS@UBb#&;9Xl!JqRV;CVNCZH6yp?=S}vK`#PQdi^i%EQY3zfJgZ! z*hm$DmELO;=9nC(Cy-M=#2D`?N5BD|oumawgwJ0Y|9{`^PL$Q#ab z1ChUnA72?g)y;+^B?6W5_)4vA7eXy}&0**|ipVbM!moruAf zxBA7)ZWkiQqMvQ=_-8qB&M zpOu$Ck&L;&Vfc$O_c)AWb#!Dga~`zD(BWP(NUBhrg#qZ-KRl(G>-PnI`Gspei`meE zR$>NwEv?bBP&Vjtw8BHM&JwRXY?Ekaer_AyK+JSZeQ_Xz+tN23;!0Z+b}gJH*~7%f zuT&~QV0kq5mH;1FbWe7C0tIS=^B8X#{z)Z7khc31>XF?8D%*(lC9qUUF?%V>5Zwbp z)5sU@GI{!T&9w(Ah`3DcZ4RqLucsl0_Q;RTZNZlz^I6Eqvc7*0MF*t=|H2Clw(jbW zaw|O90OD0_*MWtIw6}8O19kWE?dHgT2U4OBAjNtg*NFr;vBOTMP5XB$RxwOUOFvrE zE20DPWgO2&`_tGZ^L$>WHJnFGT$egfs$;DWa z%yK>pLs~wnf5_JYMIy3rhyfP|Xx{@P&dLTP!?t*w-;{4CYlDWKMooYs1!UTTf^}9t z-1)AMP0NRuU0J>3AdbXUoCAj(#dEx6oc+B#v!`$!@NNku#aknnoj<5ezYmaXM~g?A ze|;W&I*o86Zzo+r!hFv|>hCWyP1{GV{9P}f__S(X=9!_uPLIlR7d}Wrcs=*Kj*mLA z7I~o63uyLhhQ%X~O*rC3A}YTIRO1|h{P-oBU}D;+c(%Vr*eT1842Od(JpugRV(_09 z{WH4m@l;OB{VCDkzv6@q@^umJ(J`zCMM1-mrK-SBH?7H+D|<-N>dq^?(K=u8!8JH= z$e`K=!m?z0`_OA>nTh{96s&B57Lm%Y+e;oy0X+g#x7q3y$Re)p$D&f~LQ zzzeHfjh{ql6BIJJ==n04(nDqzQfPlAVx&8)$n9qhwx-oaoj6~q<2lu=@+0h+8z5RNs)EU% zu0V=xT9ZGZSG_xvgnD{EJSg;iB0&lHZi<4VvR1&^( zuw~=bT{KLr=BrD%(m(h6k~SrD3%#(t;JHKd4F>mh*rhFCNy}^f1NCw+6mT+TLQX3w zN$uuBKev%qH%g@%e!Sk1k2{cK6azJoxxfSe8e8CNyFSn-`?Ha^Ddc9>$IiHZu^3}a zr-a>*bRVk7A7A2zoPHdHIy;-uIyY3@bo;{(usRH6kllBPQeYv~rEZ)%7KdxM{|^|| zrTiTDA^oOHEvh?_3^#SI)3W;HlujnN7H`*#6W7_I!}m?rd4@vxd_3mv{e3$PndR7z zab*oyLZFxZUWRCkUl+nVXuDy$g$>16(%S-ZBm%_K& zO!DvX1)r?x(iUt>L2U1L;dRy~6Ce#2yzY;fG{K|_Lmpg>%uSnz5#)znzLa@@g|6Y_ z#x_+GW5ytR5qIDYL{LkfZ#VD$VBz^_c58t_qAM~j>=mL0c>oMV);vacKky8c{E`2b;M&`T1!~mR|6nx@(2pK=>1Nc;&C_M24sG zBL=x3dlV|4$BNPg#vh{Qt35Z5o0|H{GEFk*{|#wJOWsDAIqEKaQ@EW48J{$d z92j2=UBY@5TC0~aNy^Wjm~fE&;=dxQK-H@Y`d;*Xq8u+P= zu>7C(R!oK+#V1uTG7TJOD<#|v;9!Kp%&y~g-0 zJ`p1Wb(UO!AS5>lUSo=#jE8RiisJO6x!Rpc*a^rl3&s#`A#u_)-oKn1DAPd*pIJPq zFqovQp5DKbhP=5%Wdb{leu-x-j2OT@vjG1Ys+s2N4hTB_Oh)xGDCf(E@6WJMcbH`h zdy9g5nD_n7snkJ=`OLW7zd6XG`5%1qxP~VYA%$N_`@`JF%z|>!zS_o}I4#M?9>wn{ z0!KfX%~>M16#kf5qJ5zu872id39>w_9To9~%%60rd!NJBhiS4vST{3GX3nxjeE_!L zioR`7c8i+^W6=R#pel;=YC0oS`Y&SXs<}Vt4V)Er7D{^Bet=?Bb$q-|U?X!jYx{V? zA$xra#`60ylyORxXI8O@1!+3@D=GRI9|lVY-=)`pv=mF5H#OC+JR|x+pk90T0gHPg zUY06ehwyTCx4$2G_r3q)YDR#yc0t{@T+k4T9)lS9@aQsbKT$r5Tg$GN8^Rt3eXhz~ zyf;tPayv&Fb0#<2c~8Akl?R8=J9`CR;`XI$v||DkFLe=&^&z~(H-Yar2}R*MNLV)_ zhEWPy*HM6?rEsU<1v2luJ&pxI`5~Z>F!fHhX{!K#{;EAZgv2mcOD zu0pl)xA@Iw#EbCowm+I<{|7Zj0Q@k>BEZehDXInl=M=1XZ?i|bVjD8tb}9kjzP>@Z zH#k549po!>hwqbkN3Lv|q})Y0m#@^nObh)W4@L(VwEAhFQV7k)RWNlBR@?@wDRvyU z5Ora2h9X+J?y%27Z3_M2x89 z@YP2W6Qx1J^W%Y!FJ|=QeQSuaBN(_-ssy%H^nLIEe`Yf%mLzP9=@|Na)?NAIyTsdT zC3yGAz0s`9X4(q6ua-7~S}?kd$>E+RqI1jrDob(bx&>&eXx1QZp9>Ir7H~c8L$9xblk7Y!Cjzc=x&aSN!|>T zN4Zfpb=-ypAi?=E(`Ri38Ik{C@a4f!O_v|&6vi9Th2FKV%Kqk&T-azYgHr=l)OnXQay4|E+@c zCRzkQb3dK&l7$olLceI$mJUIF|AqCan8nQ$plRDCV=^l!{-L9SA}hN6jtBu?O*`-3 z>m&g!OWe|{I((SLc=tb`h|_Ha1|MDFQfWkhwI`j=^TPdPFL|-MN7y-jd6J$RoqHjw zgR&Xrj_CjeoDtLJyxk08KP>tnTLxgB)>aP)@ZQf2SiIF)fQRn>4>Xu)FiN!}clw?V zj(z&g%i=k+r7icnk)?KHER$uMiGsqnXzwU4bF+~PK=|i}2b1peFsZ~#I4_B-MUO7k zCHH?K2(#*kY1xdx%+iA;<5l0Wku~N}itOlqmHME?Z548D&-$UN`m!#fj3{+q&0cy|F_pw$7Ahy&v^)a-k68UO%b^;R=`2~e|_yu_cU+D@6NeGEa2nllW^GopapMxr+{=Wt;Ztp+X1^n*~ zA~(s!Pz^Z#-yOU^xY&AmTe-OZ?``IhUF|2( zhIh!O(ExxH`5DyvH+g{LJX+_AxVM@r1h~&|QOyWcUn}aMuIi}QYwV|}_pTLeMbzbq zy_|*|08p2V_h5yI`pjhWT1Nu_2xJ2Q!co1tLwyy#4*>Y^0|1AX0Dwd$06^uQ)2=Or z`o&XgbrnSb^50JZsPx~U;kdsx@&W+x$o{?10N-<{0RR%*e>_nCl^s)y1k)w6$1bl^ zkWfc6#6y9pSWgg*Ss42zExF=b*^N#m%$KK<^Y?FmblKv_t$a?+eWBJOr+1={J)0qM zLZ*}QSB=~p;P!m>g}kMK6chQ#irgzz)%u2w_1hrm?V0=IMwXG=vmifuu~~onQ)#bL zXz<=WLfT$_P1&WPVU5!}R1OXA>G|I};O&Z#3eUS0|9Nz{UBnnKi6KA{kSc3`DuVuo zz6sE^W1Qb2iw3}n#hy8kzERPlYjW;dr<_;`xE^Iy@K{MnJr1&U;LrgsGlX{BIZ5Q7$jo8X6 zqP%*&P}|+SRx%2X>N#L!qNLCIn%Gy7=y=H_x!0k>3Y`_K7~_+DjrQ`d>Jvi@EdV}J z?uYcu;JNnap!XApz?*rN^gAqo{w;@fgqQrR6+2VTBv#!rU2^DF*&mpaj?a7^@l=~T%ML3s*gbULVLpd=cu{?m~jjq-U1b#bT zoHGSvHYCQSgD}?!{lJh3J5{Dy-nx_cBQ~=t38^)r*oHa4^Q$P4G=YS!-BrGc(fs!e z**Y2mYgtx8!8$R_ASLvna2WzMODH8|>qq_3+pP2tGCahF1=e&F$iSLRSr*>!F&D9) z3(2E&t7e&3s}*eY!(57UBiz(pJD46vWlFIhXqb&;n#4d2U(8MpBNS|weh8@JNrv`) zc`3qyt=jOW#!OeG@F_WfvvFwhwjoA1Mggs&yZJX;z_;EyRY2ua0BEZveCW|f_!4Rb z>N!WgtZl5th>b!|n8Z}&)WpDOLkK^Kmt>FnQbn8 zj7any{G*z_RIxaJH-+AT#yusU(Mkmk31 zT8sIy=z3cw-L&@e$%4AV{F5DiW%#iwO_p!Lu>^lD{*_~`s0^;(XgxvJ@#WWds!>r{ zydt$r806?~C2Nj7_X7Z`xH+uRY78{>Mg0{(MoOSqL`9%6EC*EY<-5e=KsqLjww*$1 zv>5&U2az~w>m^$Kk!+73=TQph8L~GDFLGJ`g%cW^^@()vpQUG}KfipkkWu)YM+OLJ z58fKLm!Y&2*U!a#qSmI%I@RS`WyWljQf7zF-Iu}Yfk9I7su0%lS~g-2^=C%e#R7!_bx40MN&B<#D`Hb_q6IexXO01HSkO0 z%eWffj7o0b-*81{Eq#^r)b-mmELTvE({P=Z4cDV(@Ks)x@L%RK;+=D*ZxoOqG-D;d`RGk|D;|uh_1A zQJ`fGz~L zwf!uZD%sGKmzFc+gT~o>RVrPy-eI2n$sCRT`s|VKDLln;1s78&BN~%mM@=K|6l;8y z57g=3;01b_-PBgUHubd&UychDTIqxT^ZV2H(;_&j7)ntKzvxCjE+p?UI);<6JYB{r z?g=j`pXu1h4jxH|B$6d>B=|jyOr$nxc4(7lutn&o-Ns64m#SJimRa%@6mX0LkMSh^ z63M}BQf#?-&6z1~t5Nv9taGKgcCI`0-68x-PpW3AFx|C9^^jiBdEV65;THsJMI?Ud zv+o-vUdNTIogNnP^0TJH#lWmHA_kY^f~8fq&wpGd{Cdd?t(Lm|f_DF_cg57m6_qPe zeWBL$t!wyY`c77U>wU#x&qA`*0vLg=`r&IRx z?yCuFy3Y20)trVsyZhwGK}%b;k&!1+O2Hf9tYY6etj=|eqw9(NqV3aohyH_^{i zQvsOyXsv;Xg}7hT#A?5;x-0BGyB|$x5m`xWv!Rs)-!<$cKIi_V|%&PG%; zy3O4Ia{g9WM;`C1 zyg=RXiws+vq9y~Ra}DieMpqDFCx2dI=k<oia%QD84TIUhePt*_PC9YNctOEAae1=W@EQXzE3qa4o|1Z6QR5 zvG51 zlHQhk)h~Vk6LYWj21~a>p9v*^2T1`V&oIjng!TEE@H7XH3-4(`{3D#E^_9;%x$@EW zaf&=%0HXluB1NWaio?6qWpA!@?GMqFU#5MNb+rl4=iT{p?r;*m!{^avzJIWh^8ah6 z%EI+I$~ewG?PZ22n&BN8+VG3GRkHAP=?kW4SK%*W0ljhifOiKzTt%+i9zXgfqt4>k zvg##3XF=WFQe>6+Qpicxw^N!_CptY3FRJ!*0w_i2Dmd%h8Yq*SdQ0p%U41?fG}>sF zo4+yIji+&?T4GInJjPMAjpiS+E++TZj#{yKMWA|T+k{eCr-fhl9uDb9DKqqpJ1rt&6A`}%(xyAH4@l3=|Hj0(bv1l=(r2q=nxU_fAZX25`AWWsqS zPzfp~%yKGbMG+HF`n$Tiy1IMn z-=4L3sBiQANlO--u9@U$A53Nm!=7GxSZf>;*JS0i@NtXu<5DWm?H@Ki<8qswX~&3a z2Rv%HsC(>X=%}ojdu!fERg1mu|1}}=OYzH3W^J3Me)iZ=<%+{VJM%R$TeD6N?lI_O zn7e)Z{^3H3Isyi+1;qBK|^~@sr)cz^G3T#rnJ7%9*XvkkyyT)jC`(zH(%O=i~+BA5^cl^z~QKMLe%9h;_(~TG3+D zk4s~_%s8T2ILOL)?f5^FM^;x|J>IGG$ecCj4qWyaxhZK(<4G39alD;Z_icYfwQ|hJ zQuX_=deG7AHjBf>0``jDrSoFO)+sS@+H|Bwt*BtWWl8Hgl2Y0u=S9{CJ!{d(??^&%*w9a{bMde+K zJsF=I8_sCvH7rj0=o+c^B^r0SzJCVmn7QwRF~K1$r&Y&KJ#CyOrYGbS+ujN?INUG2 z&OI3JWp@2w$Z^+j#{*rq_WhaZ+azfAv!Odod(y%=5kzeMHESH^fH78TV^hM)YeQ(>VYfruF+x+{c+v%;G4=3q^t5e4v{hPKu&MX*9 z+;6kaV(+lpQvx$myr*65n6Q6k@9|$pH@-FSOxC@UT(1~=l^@q+iLscga?5*K>4Z_? zf3C}(KFWPwvyd+RHy`-cx$w`zh$Di(nIGNfs`LAaC2W6xWBWHh^zgD3 z#%JF@e!Dw!u=m8?gW9f%TEAD_v(Z}rC2P|JHPt6J?KBnD!7S2z(<_?Hv_3XxYnZ)r z)7g)0hkI;mGWp@a*4jQ-*rB%@yz161W8p|>(ZiyGjzu+Jr}%VBKECf$zwgDVyKQ&rz6Z>k;UCbvC~iY)%0>&- z*yE1voW~pVMJKh^P0UrXjb?T|Tlo3OU*-u1ZgpMiHn_{Fo7*33`tNA^(i_@r%CiU#H2{YQ<}ZY%l%(w&?5Ao!{?%ogZ`eP|nvk174qd zJO1JQR^R3YJRUqUhAprY*t^!)V4hADpsH1+y< zZHsp)9p0VRt&taO=n~G!q`uf9IWs81{yVd>+7r&`|mkc_v_i4(p z&ffeM7 zF>$MDg!=4@<+Pdc^olreyk;q6d%Yt+$7&uMPZmqTjby(=KNbX)P05I;;=rQfq6t zRkXdSnM(U$W%vBlFX;&--o_PirB&l&w+~9~GocWu5(R$AuX!79nO|a>H1qte!oTuM z6)O0SUA71+DDz7d>I@ukunW}r#V@HXtb$`B<0A)*j*54xtWuo}uA)|1hghm8I>bsv zrG~r$rpe60qQ~&zqY0IbD)DTvreOBxVEC*`+X+!laf1eqBGfjscKwy7(OjOKr!u#& zjvo{gJK8B~LKFxIvucfo*QRWzQ#19|uVpUM+gRK#Wi(DVl8h=_!rV!%A_xnzUfhkA zDi^{+E9O;V$n<+X#U5T6&vfA*hR>oAKzpZtBttH@Nuwpy82g(vX>3_Y_ZXsL#PCYu zBU)ugY$aUht@~ICcc%$goqcGj$_wsB^*D4-H#)B*Q9s5EjDsJBivDGrE&ThA`szJG z=j&~@pYb+n9^BlC%(9luvMDpm=0D7``OPdF?Z2CqS#H*uavld?9}lnfP^aB>tMvd zqpyu*)r5rxw#8v@ksJF`NAZ*LO*%n;M~7Sa$<8s7wFb@8V;#Lyj!;-f;YBNqs6Vrg zk*riwUC(ObD2m%v)Rf}wUR@0mOlyL1D-ngoBAK+rOV&{^K2(o&1l+%lb&QJTY4ZE! z^&;!E+>_$+CKXcr!Q`x5;kHnS5kq5c)5r@(Y{&LG&GF||n%=>m^FMAS2MYUNX5i1i zKd;J=34h+er6p-6XmYlGnaDnSIZDU94Yi{AIamBe;dSk9*v79v_rRVPxK3n|hq&t- z6ZP2N5rwsA$(z<@O^uR9w%=qY1NWdfm*R)MaH52hLPOk2`AA_M&)ud{sv1NV;ZdAD z-qfIH#2eZf-MK88s5PqWi6(AS{@Pk9-7H^qywtrYb&CF12}oVN%7Y+#!#{q3!sGhJ zM!}k&QL|Bactd#jNa4|38y)RnB!}j=q;R7{pI)c1;bE;pQP-Ml3!$+LaDD7GZy zY7qDKUa+3O`PDL4h_I`Rx+WoLq(fwHWcyOwqD99k-XYDC5?am#_tzk{5gr{Pr<)qY zA3nu6qdS-5fs69M)|PHbYaXI5v~*j#?tZEJ^ZxsEze>k0-om8?D;}4+|GeB1b+4tH zRFb>r-Fvo~)V-0b+Ax~JWkK8{_=?8iF;O}&~Bjv>b71xIQy{?)s!PW_UXA8@s6%SlOZ+ZVt(=Z~b{%nz~=HHxVAKKN=;d=PM06pu{mJ%i|j}DUTDDNX4!Y@AXc@1Ja;bHkD zhG{T)<0IM`-MJXw`=Yq%P!=~G+$zS6T#_9d)H@kFwr^IOU`@xfg~+j;!LeN=$9C23 zJh6%brmMR45P*?5Hr`0Hu zU)Mm6xJ9pD$y24>fioEK^Xe!g83ErAuxTT7x!gVTB^2LH7eomcH@NB~9T_7g8p)}S zRy6K%y94ioaMb?cKL_jRopOvKhpPjPtcOcWid*NjhvMC4EzcFSIft>1Age+O^*|or zg7KO106Xklg>__&TuqY;of^}u-tm)x3#t)J^M}QidLhRGCKu{Uxfie4@orYb%^xRZhGwS+z zy6}xAD%RuQl&u0Io7VP<1cM& zCJN)1*1@er?A|1jt!inE?5etzC@$sFPl_LGKFc5!e^+5dRB}BL^-&(2_@ut_nqPmW z3r6JHx217!d%9~xE_3!6n*Vxah+g=%D-Fp};+VA1kuZqjoN8&#(Hw-JX8!nX(pxjtUI!5t8m zF+N6i{yk`yUej4X5dyvx7$OJ@k4v-*_T0- z$PMqXnBu2cR@Vtn7P{kBO81Hsxw~kfysQ~dH;`w}=2g;G7Ox$*qbp60$zCC{P3GB9 z+>MC?C_c_^m_Zl?cao*ws;;2P16GY>JFav#lNY{xCvUW@#cP{7tfX;orKJ&l&iCD$ z5F{+OmF9T7_8-ghG&yyAH<7K&RuQ?3o`Weq_phmX!K!aKZl!!Qa0q;Cq@^JQb`c(b zMIP5TxRR-2oY9@jv_`K*2!TX(Sq#8k#Ti;wl%rro?>#sQrftk(G;a*~6im^XY6yc_ zYAFt8tF^|h4YSFT_sewb$w7w=9CM!0@k?%#Fo*5Sz@|op+6opW19gxqEcgD`3 z*?OtodTz2YmE!w8uOkYtRwf~*0>q_r7DKLxg)K>X*vTHfOMYe;7*I`yOsKt@AuDz3 zNV9i#oXh26mq9SE61*tk?=8k`>9TDE|>r8wT{p9_MrsJ*B52T z75#FCoSD{>X6vl{JC|#<;op(wdsDntC=&ohyp-KWxQ;h%MNT&mMuicdMN7lj;uYuPV7^X8k#g%=ZP zc58;Gj*H2+*72=M!Q77D{bVi09afvjm}#*z`(xP@9hZNvHpMTj2al{h7uchf00!Xo z{B@F*wGxFmuURt0HF%SW)O?3A8q#T}j`Ii|1&h6>uPA(e z7cN5<-^?_T8}%J%cKG^e9kEYmzflB!~alPO%L&kZ^TtWkd7zpP$ePXS}pl!LKRWq`wx~o&23AjvAJl;<g+@=Xl((-$1}b3!qdJRgIl^mukTFPvZ zM=R&_4Fh-ax+BF8>v32wbZ%QiuF-B~cLs;3LlPr$W@kpxJW99)lyGCy92fgB9|`jAmK-;zkpJItfkQx$fyUue=BR5GPsUB zlarV4lwC4o&MlfW{C!$v5#hig!hx?_8O%KdBm~xS@VYBQHZ^RPqZqLk*iBMaEJbnE zqn#P@=nrR#MQJpL(r7+ml9NG*g47yonR$0BL%LYo%L@R?#jzHYpJT{yIBP|EB*UX9 zO6WP1(DNwC7f_OqA^AN_xFK9T6}yiiU$ptt$X2_b9LOQc0LPkHlgjAH1%f)gRT)H@ z8q0#K%IS&BI{@U5Ca|?Vxdx^oqJl$21#dI?cCN6Dcb2W6T_uAd!~bY!WS>p+pg32P zHO2pY{~=cxaWYeeQ0@nq3M<^XvvG3#jaj0VolUkp$dG>zn{H$`Y=h@ykIInde7_s3 z7g{)7mVMy**}#woi*}1_+LN~i?sL{&ir)~tUN59g2$6m8>mi~1(c!XMYc&`A`=t&% zy`z2#D3t>TfI#w*%cq(&i*i2><$ip+TXnrKWbXrHIzWzoJI#>O7AMhooyr)orhJ`( zBuav`aXSMWH`P#Gk4HJ7fO0~trS;Jn4B03}FmW%8ylwV;;=jKOE*jp$e<4{7z&wwON=mkj{hM3NuG?8a= zc$)Qttd4U^twZtdM1f97s9PWT9C|eM@d*cpd@qJQz}C&IA)_*TYJ-5D`Pzp%Q%}Y00}c-b5yc00i+Z9O7Ge z#K8!NgTY!Zd0NODzvNIv+F)C*bcTN`Skl73XbTTwX{QW$gG0;@h9EWwL!#e~mbD!I zmaXHyoSIAVF+eE^89*svNO@PWmN^4}gQ`L7Av~;$b{%ODpLw2kMt3fnXT4A^`$p{+ z(Q`IR5a4dn@?)iC>|j|@P7qSmy^lkJV4)cbzkAfGpI>voe!jk~y$LO(2_@I0$^cO!mI3nb%rXf6omvJ#MQ$02 zO5`#?l-Ol}DACIR`8R%99{QHQ5B+Sj3Vg9GF~>|wYUi3Mvc&*VqKh%)|KN*dlUn?4 zQnH!NFOJuiSb$ARG5ZgO7X(TaFF=$yUVtc(yZ}*Rc>$tC^8!SP=LN{W5xugv{C@XV znwiZn;?|Z}fxWfT>=$8)*C3g;1%VQ83lJsZ79dK@EkKm0TYxBWw*XNhZvmpj-U8&` z=v&#LzP~#(!_4Lv9cxQ$!VcXGJ^oiR76eLcEI^d#Sb!+;u>esbWC5bY$O1%(k_Cto zCkqfIQWhZP4#PW{#LCJ(Z~nW__n6uIVp(m8z1Zjb%>IL81%VRD3J@ih6(CA9D?pTZ zR)8oGtpHJCS^=U&wE{$mYXyiB*$NOPwiO^sbSpsqjc=6)*XQ@aHJaJ{B2R4z6CT_= zGezDMApbXSD!1qTdwa*tY<_W|w!{hC-bu6H=uapr(VqZOqCWwmM1KNAiT(tL68#Af zCHfN}O7tf{l;}@@DAAt)QKCNqqC|fJM2Y?ch!Xt?5GDE(AWHNnK$PfDfGE+Q08yep z0ir~I0;D4S2}LFP6Cg_TCqR_wPk<=Vp8!#!KLMgde*#2_{sf2;{Rt2y`V$~Z^d~@+ z=udzs(VqZOqCWwmM1KNAiT(tL68#AfCHfN}73ohXD$$<+QKCPQ7WB1=On*XAiT(tL z68#B~iu5OHLxKJTh!Xt?5GDE(AWHNnK$PfDfGE+Q08yep0ir~I0z`@a1c(y-36P5P zClrSX;>#!A{HO@5G8ZS}| zIi_bX5m;3yZt(QMMgB|GrtpP8%tS=Dg5ap9k4eI@%WFN;adqR$1g9@hSb%Z0GXhQI zgWHxAYqG8~&Oe+DY_Wr@$hDcX1%0nvO)sRw9j^Q7tleQ;S32Kf zJUvqWVgTJ?$ijp0EtsUGu!bwerKfv6T2i7cILX9TrSoNR6l-zm5(rP!#D1|qjDya~-`dDYhopPEZw z)dOVpP&Whl;ZGZx)NkBrf$UQM{JE$*04WWFQ|9BIuA^);rl47<0T9H0F*lLb@Arh@7&=tP5f@vaFPT6fZilZE0*9P1V3+m?UDE~& zyt6>Ckvd^upPZ>7a`s=|wBbLs(CY;HVlev71M1Gd9U_v=MlF^PW&LCm(eZf@JaO>H z0*qTwsWmR*HmHn#a^sWddy3?pPGt%P27o|PP;X09EWiprhu6nNtRT+vO8^#(-Vgm{ z8h`?y);fxd-10pDD;T-GHWuJw?7mtRi^qp*D;7IEtnpjX;3yZRUfzFTkBfZ%gd^F4 z-`hd5^_0D(NM?RqBzJ$$!!kisRuwG3<^p#Rh|N9N-&`bx3uQG*4&MsI_Bqy7V*$oh zZK%RUtf0%K>T;9B#&-rXH=|5JXGd#U@bueTEco9p{xSQGfpnc%RwMe;z##tVT3xnq zhE9-U144j7L4&3n4Bo0}D1K>r-GGbbA%*7>I~qdDj@VDQ?wxi7%_WG%L-*_%&8tf- zQ7jhXSS&Kv_F`gavc*5!^|<2D{K?2x5DjBe_VE+Y@oBl@b93$3u0v_^@rkmE zo!>7&6+u8{jKBh1vC-uD6)L_m*FLN|k|smflvR9M*B$vC1kMX&0j?+s%3J)$Tw7`C zD7hjUVh#;4?>#X$ThLdILTv+NnBQ2M+#L_PrKK}z0r*imdLj*bxw3cW+D%=`kkS`) zX!P-*BrSM?>;cHa_2X!=Z>KV4OhjQIRwhM6xv~;-?H8Z%GE!3ZwC)xZ`5*`wAq#ND zILiqEznu8lTzj|SM4HTZD)U9&z$`ScL16Tk1-PO#;mce6X0Dy?1?QYsAKPAW-lG*j zKq~;K00^isqLG!qUzAkX5eEp@PVVdFkSMiV$7o*6$VMSiibEpNLiRMe75J|u4BE=>|bj#(CfN%TR zj}i`5pC)VhWuF~!5dNLS`S0ZJqzuetG{fn`s5^5lqzx>|0%AgKB%6FZ3&;PUQ2{jy zO<@6z1R{&f^z$bmWvj5V)fU>; zF>WT(`rHE%oB+jT!M-B-dg>#Jy*Qw~$klLJPxH>*3j&2kla8a62iIW863$%V+ z&{WAv_;I|O%cQ1qDmJy@O>agM@}U><>`v5FC1RI_Hu6Yk6S-qi9V0GApRa2qYpb(G zw(_F3BA57MKF!B0>K7#3{3gB505x8guGf>d4MFlLu>f_XeAXZ>%n`W&AVt@MX{=>_ z9Go?nWBZ=sFId=Mft?!-G-Os@j38**RL9~rFKMa`STX+ z5!1HujHaqZD(cuF+_A$JT4qdp6Zv-IVAL@v7WGdzl8rs#fX4XKtwpYAQwN&g;XX|# z*lg>78URR`c@~W!1&MGd#-s2V#pi!+oh$6V1&@~!1e7u)F}kCy^xUqZ*5rn#Qz^U; zp3ALOZ`Jdu8(LGs2lK7yND8hYN)U)Su{^w? zfhITL`SkB>d(^;5+`uUdZIh4f_2h&;@FL4%0nX&iT4SL3jnm0) zP%A8u;-;UuMe#;1fD)c+)iR{KF5C3BKAWrQ15eX-gt2@dfNpd;36H7dGI(ptmbi?& zam4~oN(9m5!{YW7U%eWE?xA4{->I4dL&OWlLx~KAWq`9s{-pMz_ z_{yiiKEy@KkdfPiDY8Lj&{EB(1I2ZF5vk`<7X_({k_8SIYcXWUw5JC4I5>qX1gG$w zZNhQ|BBL8}I5v_YZCwITG(d6A08d!#%DYf)HOXKz3Ro)xcVp5RcpXe+DB;Ln>Fo@t zQSK%jx&0bfMgBFFKYD?GQ$O@$G+x90LH>P+{rkv5o9b{4-c?F{jJ$=5G^rO_iL9L~ z3}w;#$H?6vsPh*rxFC?HhSLD>mh?~)GEbUszp1h#@+t=CmQ(N^LVVJ5)bcaj@^cF~ z;4)PtQ%q~*1Z20l7jgy&2K`grNWSu#Lh*BngtZ= z8@4T%ORfxW6xpQvQo@Qh^U>&3Yy-O`Z1XfdxaAn(nzRJo$Cak%`?Y--&8k}#$hbGy zxVIMC54}T7u1QT8*4n-dv|ac_psFkXcc%ok~T1lAQq+ zWq;jVXU1TECBa>J4Y>_FBENhAESm{2+ar)kpOHxf@kNSjhBV85j2eKV6eFJ&AC!wy zjC9;zU1W!F5F=ibAx0)7xKY9;`{xv{ar6+pfkl0MPO-JVuFK|##S75bf-0K_bq(am zlozns^o9k(ITIdUB!M)?Vx3pQDR#1+o*UztPW?99uvI4Vml@LJ168tB(gc#Mk{*R` z-ajFyyyyh6g$0uVux^4i)OO3?Y7LjDIq<~m2%Y`z}LWdqODHgHZpITUY6g4HK9lGOllZ|Q9!6E&Me zc6St5Jvc(L8U*_TK`=UDlgO_kv@k^WJ!PdIibLT^3R+_)hELIR(Qo;Rf{d0)M)nQ^ zZ!Q}X`pJSNLd+4eZ!;$&j^+8itmRm)*4r9IW?2_dT|N|E-Vl=Km(?xr8_c4U<&Sx2 z4;q3N@4z$26)UkTz|bK#;LU^Rx+%!lP<%D+vyof_y92u*xvt1vts@HJcC;5fY}u@#`D$Ixr8Bq2M1(GJUjY`!cPm@)xC%hSNrV1xE6DkJ_i|9dd zafEsKowdq=s0DvM@TY^nF7Ve6{zk&zEHzvfqRUpO00bCZa?s^Cx)h>IDZ0$HfJ+Lx zq@v3zbV)~-t?057T@Im(30+R2%Vl(Vh%V32{Rta)KJ)BURG!) z9p)r`^UFVhnw43oGiX?hzg3%aXTx*>s7i(U^@1%xOTFMqA!=N`UT~FvRa-CEOacPD z3k9GP9)LP{5Gbh~TnL?3@O_tbjdqvVU82iz-T3aBtfQ zC~8NwS-FDLOU{LmF4KqN9N=~USM^&W!fiuz%O@J(HW1w+0O`94Rl%J>VgLWH9~}+# zB_q)9Y>e{XZq~*(uLK4;P!&{9hlaW=6wKP5CCVI0grE`#t)V3;jQ*FTMXPGzqv3~e zojSu$O$-_q<>aGklcXj_jfjdIqVi8tR}PDu06!JtqY6`XSq?u;5wc1Rzc;%HCL&zS i(M6@wtLWwMKOM%X($o%X)ppz9lQOWn9Bc;f`u-2LiqMJx literal 0 HcmV?d00001 diff --git a/apps/desktop/src/assets/rive/avatar.riv b/apps/desktop/src/assets/rive/avatar.riv new file mode 100644 index 0000000000000000000000000000000000000000..980ad746563b3fa92cb0972d01c40e4818f75d00 GIT binary patch literal 13036 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 }) { }); const [useRive, setUseRive] = createSignal(false); + console.log("[Camera] AvatarRivAsset value:", AvatarRivAsset, typeof AvatarRivAsset); + let riveInputs: Record = {}; const { rive, RiveComponent } = createRive(() => ({ - src: avatarRivAsset, + src: AvatarRivAsset, autoplay: true, stateMachines: "State Machine 1", - onLoad: () => { - console.log("[Camera] Rive avatar loaded"); - const inputs = rive()?.stateMachineInputs("State Machine 1"); - if (inputs) { + onLoadError: (e: unknown) => { + console.log("[Camera] Rive load failed:", e); + setUseRive(false); + }, + })); + + createEffect(() => { + const r = rive(); + if (!r) return; + console.log("[Camera] Rive instance ready"); + + const smNames = ["State Machine 1", "state_machine", "StateMachine"]; + for (const smName of smNames) { + const inputs = r.stateMachineInputs(smName); + if (inputs && inputs.length > 0) { + console.log("[Camera] Found state machine:", smName, "with", inputs.length, "inputs"); for (const input of inputs) { riveInputs[input.name] = input; + console.log("[Camera] Rive input:", input.name, "type:", input.type); } - console.log("[Camera] Rive inputs:", Object.keys(riveInputs)); + break; } - setUseRive(true); - }, - onLoadError: () => { - console.log("[Camera] Rive load failed, using Canvas2D fallback"); - setUseRive(false); - }, - })); + } + + if (Object.keys(riveInputs).length === 0) { + console.log("[Camera] No inputs found, listing contents:"); + const contents = r.contents; + if (contents) { + for (const ab of contents.artboards || []) { + console.log("[Camera] Artboard:", ab.name, "stateMachines:", ab.stateMachines); + } + } + } + + setUseRive(true); + }); createTauriEventListener(events.faceTrackingUpdate, (payload) => { const data = { @@ -272,12 +288,26 @@ function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { setFaceData(data); if (useRive()) { - if (riveInputs.mouth_open) riveInputs.mouth_open.value = data.mouthOpen; - if (riveInputs.left_eye_open) riveInputs.left_eye_open.value = data.leftEyeOpen; - if (riveInputs.right_eye_open) riveInputs.right_eye_open.value = data.rightEyeOpen; - if (riveInputs.head_yaw) riveInputs.head_yaw.value = data.headYaw; - if (riveInputs.head_pitch) riveInputs.head_pitch.value = data.headPitch; - if (riveInputs.head_roll) riveInputs.head_roll.value = data.headRoll; + const setInput = (names: string[], value: number) => { + for (const name of names) { + if (riveInputs[name]) { + riveInputs[name].value = value; + return; + } + } + }; + setInput(["mouth_open", "mouthOpen", "Mouth", "mouth", "jawOpen", "jaw_open"], data.mouthOpen); + setInput(["left_eye_open", "leftEyeOpen", "Left Eye", "leftEye", "eyeBlinkLeft"], data.leftEyeOpen); + setInput(["right_eye_open", "rightEyeOpen", "Right Eye", "rightEye", "eyeBlinkRight"], data.rightEyeOpen); + setInput(["head_yaw", "headYaw", "Head Yaw", "yaw", "Yaw", "numX", "x"], data.headYaw); + setInput(["head_pitch", "headPitch", "Head Pitch", "pitch", "Pitch", "numY", "y"], data.headPitch); + setInput(["head_roll", "headRoll", "Head Roll", "roll", "Roll"], data.headRoll); + + if (riveInputs.Neutral) riveInputs.Neutral.value = (1.0 - data.mouthOpen) * 100; + if (riveInputs.Smile) riveInputs.Smile.value = data.mouthOpen * 80; + if (riveInputs.Happy) riveInputs.Happy.value = data.mouthOpen > 0.3 ? (data.mouthOpen - 0.3) * 140 : 0; + if (riveInputs.Surprise) riveInputs.Surprise.value = data.mouthOpen > 0.5 ? (data.mouthOpen - 0.5) * 200 : 0; + if (riveInputs.Sad) riveInputs.Sad.value = data.confidence < 0.3 ? 50 : 0; } }); @@ -352,20 +382,19 @@ function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { - - } - > - + + Date: Tue, 24 Mar 2026 14:12:21 +0700 Subject: [PATCH 15/15] feat(avatar): swap to Live2D (pixi-live2d-display) for proper face puppeting Rive was designed for state machine transitions, not continuous face parameter driving. Live2D maps face tracking values 1:1 to character parameters (ParamMouthOpenY, ParamEyeLOpen, ParamAngleX etc). - Added pixi.js + pixi-live2d-display dependencies - Load Cubism Core SDK dynamically - Import from pixi-live2d-display/cubism4 for Cubism 4 models - Drive Live2D parameters directly from face tracking events - Using Hiyori test model from Live2D official samples --- apps/desktop/package.json | 4 +- .../public/live2d/live2dcubismcore.min.js | 9 + apps/desktop/src/routes/camera.tsx | 223 ++--- pnpm-lock.yaml | 908 +++++++++++++++--- 4 files changed, 873 insertions(+), 271 deletions(-) create mode 100644 apps/desktop/public/live2d/live2dcubismcore.min.js diff --git a/apps/desktop/package.json b/apps/desktop/package.json index cd08762050..cc75873a69 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -5,7 +5,7 @@ "dev": "pnpm -w cap-setup && dotenv -e ../../.env -- pnpm run preparescript && dotenv -e ../../.env -- pnpm tauri dev", "build:tauri": "dotenv -e ../../.env -- pnpm run preparescript && dotenv -e ../../.env -- pnpm tauri build", "preparescript": "node scripts/prepare.js", - "localdev": "dotenv -e ../../.env -- vinxi dev --port 3002", + "localdev": "dotenv -e ../../.env -- vinxi dev --port 5555", "build": "vinxi build", "tauri": "tauri", "test:memory": "node scripts/desktop-memory-soak.js", @@ -59,6 +59,8 @@ "effect": "^3.18.4", "lz4-wasm": "^0.9.2", "mp4box": "^0.5.2", + "pixi-live2d-display": "0.4.0", + "pixi.js": "7.3.3", "posthog-js": "^1.215.3", "solid-js": "^1.9.3", "solid-markdown": "^2.0.13", diff --git a/apps/desktop/public/live2d/live2dcubismcore.min.js b/apps/desktop/public/live2d/live2dcubismcore.min.js new file mode 100644 index 0000000000..d225300ecb --- /dev/null +++ b/apps/desktop/public/live2d/live2dcubismcore.min.js @@ -0,0 +1,9 @@ +/** + * Live2D Cubism Core + * (C) 2019 Live2D Inc. All rights reserved. + * + * This file is licensed pursuant to the license agreement below. + * This file corresponds to the "Redistributable Code" in the agreement. + * https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html + */ +var Live2DCubismCore;!function(Live2DCubismCore){var _scriptDir,_csm=function(){function _csm(){}return _csm.getVersion=function(){return _em.ccall("csmGetVersion","number",[],[])},_csm.getLatestMocVersion=function(){return _em.ccall("csmGetLatestMocVersion","number",[],[])},_csm.getMocVersion=function(moc,mocSize){return _em.ccall("csmGetMocVersion","number",["number","number"],[moc,mocSize])},_csm.getLogFunction=function(){return _em.ccall("csmGetLogFunction","number",[],[])},_csm.getSizeofModel=function(moc){return _em.ccall("csmGetSizeofModel","number",["number"],[moc])},_csm.reviveMocInPlace=function(memory,mocSize){return _em.ccall("csmReviveMocInPlace","number",["number","number"],[memory,mocSize])},_csm.initializeModelInPlace=function(moc,memory,modelSize){return _em.ccall("csmInitializeModelInPlace","number",["number","number","number"],[moc,memory,modelSize])},_csm.hasMocConsistency=function(memory,mocSize){return _em.ccall("csmHasMocConsistency","number",["number","number"],[memory,mocSize])},_csm.getParameterCount=function(model){return _em.ccall("csmGetParameterCount","number",["number"],[model])},_csm.getParameterIds=function(model){return _em.ccall("csmGetParameterIds","number",["number"],[model])},_csm.getParameterMinimumValues=function(model){return _em.ccall("csmGetParameterMinimumValues","number",["number"],[model])},_csm.getParameterTypes=function(model){return _em.ccall("csmGetParameterTypes","number",["number"],[model])},_csm.getParameterMaximumValues=function(model){return _em.ccall("csmGetParameterMaximumValues","number",["number"],[model])},_csm.getParameterDefaultValues=function(model){return _em.ccall("csmGetParameterDefaultValues","number",["number"],[model])},_csm.getParameterValues=function(model){return _em.ccall("csmGetParameterValues","number",["number"],[model])},_csm.getParameterRepeats=function(model){return _em.ccall("csmGetParameterRepeats","number",["number"],[model])},_csm.getParameterKeyCounts=function(model){return _em.ccall("csmGetParameterKeyCounts","number",["number"],[model])},_csm.getParameterKeyValues=function(model){return _em.ccall("csmGetParameterKeyValues","number",["number"],[model])},_csm.getPartCount=function(model){return _em.ccall("csmGetPartCount","number",["number"],[model])},_csm.getPartIds=function(model){return _em.ccall("csmGetPartIds","number",["number"],[model])},_csm.getPartOpacities=function(model){return _em.ccall("csmGetPartOpacities","number",["number"],[model])},_csm.getPartParentPartIndices=function(model){return _em.ccall("csmGetPartParentPartIndices","number",["number"],[model])},_csm.getDrawableCount=function(model){return _em.ccall("csmGetDrawableCount","number",["number"],[model])},_csm.getDrawableIds=function(model){return _em.ccall("csmGetDrawableIds","number",["number"],[model])},_csm.getDrawableConstantFlags=function(model){return _em.ccall("csmGetDrawableConstantFlags","number",["number"],[model])},_csm.getDrawableDynamicFlags=function(model){return _em.ccall("csmGetDrawableDynamicFlags","number",["number"],[model])},_csm.getDrawableTextureIndices=function(model){return _em.ccall("csmGetDrawableTextureIndices","number",["number"],[model])},_csm.getDrawableDrawOrders=function(model){return _em.ccall("csmGetDrawableDrawOrders","number",["number"],[model])},_csm.getDrawableRenderOrders=function(model){return _em.ccall("csmGetDrawableRenderOrders","number",["number"],[model])},_csm.getDrawableOpacities=function(model){return _em.ccall("csmGetDrawableOpacities","number",["number"],[model])},_csm.getDrawableMaskCounts=function(model){return _em.ccall("csmGetDrawableMaskCounts","number",["number"],[model])},_csm.getDrawableMasks=function(model){return _em.ccall("csmGetDrawableMasks","number",["number"],[model])},_csm.getDrawableVertexCounts=function(model){return _em.ccall("csmGetDrawableVertexCounts","number",["number"],[model])},_csm.getDrawableVertexPositions=function(model){return _em.ccall("csmGetDrawableVertexPositions","number",["number"],[model])},_csm.getDrawableVertexUvs=function(model){return _em.ccall("csmGetDrawableVertexUvs","number",["number"],[model])},_csm.getDrawableIndexCounts=function(model){return _em.ccall("csmGetDrawableIndexCounts","number",["number"],[model])},_csm.getDrawableIndices=function(model){return _em.ccall("csmGetDrawableIndices","number",["number"],[model])},_csm.getDrawableMultiplyColors=function(model){return _em.ccall("csmGetDrawableMultiplyColors","number",["number"],[model])},_csm.getDrawableScreenColors=function(model){return _em.ccall("csmGetDrawableScreenColors","number",["number"],[model])},_csm.getDrawableParentPartIndices=function(model){return _em.ccall("csmGetDrawableParentPartIndices","number",["number"],[model])},_csm.mallocMoc=function(mocSize){return _em.ccall("csmMallocMoc","number",["number"],[mocSize])},_csm.mallocModelAndInitialize=function(moc){return _em.ccall("csmMallocModelAndInitialize","number",["number"],[moc])},_csm.malloc=function(size){return _em.ccall("csmMalloc","number",["number"],[size])},_csm.setLogFunction=function(handler){_em.ccall("csmSetLogFunction",null,["number"],[handler])},_csm.updateModel=function(model){_em.ccall("csmUpdateModel",null,["number"],[model])},_csm.readCanvasInfo=function(model,outSizeInPixels,outOriginInPixels,outPixelsPerUnit){_em.ccall("csmReadCanvasInfo",null,["number","number","number","number"],[model,outSizeInPixels,outOriginInPixels,outPixelsPerUnit])},_csm.resetDrawableDynamicFlags=function(model){_em.ccall("csmResetDrawableDynamicFlags",null,["number"],[model])},_csm.free=function(memory){_em.ccall("csmFree",null,["number"],[memory])},_csm.initializeAmountOfMemory=function(size){_em.ccall("csmInitializeAmountOfMemory",null,["number"],[size])},_csm}(),Version=(Live2DCubismCore.AlignofMoc=64,Live2DCubismCore.AlignofModel=16,Live2DCubismCore.MocVersion_Unknown=0,Live2DCubismCore.MocVersion_30=1,Live2DCubismCore.MocVersion_33=2,Live2DCubismCore.MocVersion_40=3,Live2DCubismCore.MocVersion_42=4,Live2DCubismCore.MocVersion_50=5,Live2DCubismCore.ParameterType_Normal=0,Live2DCubismCore.ParameterType_BlendShape=1,function(){function Version(){}return Version.csmGetVersion=function(){return _csm.getVersion()},Version.csmGetLatestMocVersion=function(){return _csm.getLatestMocVersion()},Version.csmGetMocVersion=function(moc,mocBytes){return _csm.getMocVersion(moc._ptr,mocBytes.byteLength)},Version}()),Version=(Live2DCubismCore.Version=Version,function(){function Logging(){}return Logging.csmSetLogFunction=function(handler){Logging.logFunction=handler;handler=_em.addFunction(Logging.wrapLogFunction,"vi");_csm.setLogFunction(handler)},Logging.csmGetLogFunction=function(){return Logging.logFunction},Logging.wrapLogFunction=function(messagePtr){messagePtr=_em.UTF8ToString(messagePtr);Logging.logFunction(messagePtr)},Logging}()),Version=(Live2DCubismCore.Logging=Version,function(){function Moc(mocBytes){var memory=_csm.mallocMoc(mocBytes.byteLength);memory&&(new Uint8Array(_em.HEAPU8.buffer,memory,mocBytes.byteLength).set(new Uint8Array(mocBytes)),this._ptr=_csm.reviveMocInPlace(memory,mocBytes.byteLength),this._ptr||_csm.free(memory))}return Moc.prototype.hasMocConsistency=function(mocBytes){var memory=_csm.mallocMoc(mocBytes.byteLength);if(memory)return new Uint8Array(_em.HEAPU8.buffer,memory,mocBytes.byteLength).set(new Uint8Array(mocBytes)),mocBytes=_csm.hasMocConsistency(memory,mocBytes.byteLength),_csm.free(memory),mocBytes},Moc.fromArrayBuffer=function(buffer){return buffer&&(buffer=new Moc(buffer))._ptr?buffer:null},Moc.prototype._release=function(){_csm.free(this._ptr),this._ptr=0},Moc}()),Version=(Live2DCubismCore.Moc=Version,function(){function Model(moc){this._ptr=_csm.mallocModelAndInitialize(moc._ptr),this._ptr&&(this.parameters=new Parameters(this._ptr),this.parts=new Parts(this._ptr),this.drawables=new Drawables(this._ptr),this.canvasinfo=new CanvasInfo(this._ptr))}return Model.fromMoc=function(moc){moc=new Model(moc);return moc._ptr?moc:null},Model.prototype.update=function(){_csm.updateModel(this._ptr)},Model.prototype.release=function(){_csm.free(this._ptr),this._ptr=0},Model}()),CanvasInfo=(Live2DCubismCore.Model=Version,function(modelPtr){var _canvasSize_data,_canvasSize_dataPtr,_canvasSize_nDataBytes,_canvasOrigin_dataPtr,_canvasOrigin_nDataBytes,_canvasPPU_nDataBytes,_canvasPPU_dataPtr;modelPtr&&(_canvasSize_nDataBytes=(_canvasSize_data=new Float32Array(2)).length*_canvasSize_data.BYTES_PER_ELEMENT,_canvasSize_dataPtr=_csm.malloc(_canvasSize_nDataBytes),(_canvasSize_dataPtr=new Uint8Array(_em.HEAPU8.buffer,_canvasSize_dataPtr,_canvasSize_nDataBytes)).set(new Uint8Array(_canvasSize_data.buffer)),_canvasOrigin_nDataBytes=(_canvasSize_nDataBytes=new Float32Array(2)).length*_canvasSize_nDataBytes.BYTES_PER_ELEMENT,_canvasOrigin_dataPtr=_csm.malloc(_canvasOrigin_nDataBytes),(_canvasOrigin_dataPtr=new Uint8Array(_em.HEAPU8.buffer,_canvasOrigin_dataPtr,_canvasOrigin_nDataBytes)).set(new Uint8Array(_canvasSize_nDataBytes.buffer)),_canvasPPU_nDataBytes=(_canvasOrigin_nDataBytes=new Float32Array(1)).length*_canvasOrigin_nDataBytes.BYTES_PER_ELEMENT,_canvasPPU_dataPtr=_csm.malloc(_canvasPPU_nDataBytes),(_canvasPPU_dataPtr=new Uint8Array(_em.HEAPU8.buffer,_canvasPPU_dataPtr,_canvasPPU_nDataBytes)).set(new Uint8Array(_canvasOrigin_nDataBytes.buffer)),_csm.readCanvasInfo(modelPtr,_canvasSize_dataPtr.byteOffset,_canvasOrigin_dataPtr.byteOffset,_canvasPPU_dataPtr.byteOffset),_canvasSize_data=new Float32Array(_canvasSize_dataPtr.buffer,_canvasSize_dataPtr.byteOffset,_canvasSize_dataPtr.length),_canvasSize_nDataBytes=new Float32Array(_canvasOrigin_dataPtr.buffer,_canvasOrigin_dataPtr.byteOffset,_canvasOrigin_dataPtr.length),_canvasOrigin_nDataBytes=new Float32Array(_canvasPPU_dataPtr.buffer,_canvasPPU_dataPtr.byteOffset,_canvasPPU_dataPtr.length),this.CanvasWidth=_canvasSize_data[0],this.CanvasHeight=_canvasSize_data[1],this.CanvasOriginX=_canvasSize_nDataBytes[0],this.CanvasOriginY=_canvasSize_nDataBytes[1],this.PixelsPerUnit=_canvasOrigin_nDataBytes[0],_csm.free(_canvasSize_dataPtr.byteOffset),_csm.free(_canvasOrigin_dataPtr.byteOffset),_csm.free(_canvasPPU_dataPtr.byteOffset))}),Parameters=(Live2DCubismCore.CanvasInfo=CanvasInfo,function(modelPtr){this.count=_csm.getParameterCount(modelPtr),length=_csm.getParameterCount(modelPtr),this.ids=new Array(length);for(var length,length2,_ids=new Uint32Array(_em.HEAPU32.buffer,_csm.getParameterIds(modelPtr),length),i=0;i<_ids.length;i++)this.ids[i]=_em.UTF8ToString(_ids[i]);length=_csm.getParameterCount(modelPtr),this.minimumValues=new Float32Array(_em.HEAPF32.buffer,_csm.getParameterMinimumValues(modelPtr),length),length=_csm.getParameterCount(modelPtr),this.types=new Int32Array(_em.HEAP32.buffer,_csm.getParameterTypes(modelPtr),length),length=_csm.getParameterCount(modelPtr),this.maximumValues=new Float32Array(_em.HEAPF32.buffer,_csm.getParameterMaximumValues(modelPtr),length),length=_csm.getParameterCount(modelPtr),this.defaultValues=new Float32Array(_em.HEAPF32.buffer,_csm.getParameterDefaultValues(modelPtr),length),length=_csm.getParameterCount(modelPtr),this.values=new Float32Array(_em.HEAPF32.buffer,_csm.getParameterValues(modelPtr),length),length=_csm.getParameterCount(modelPtr),this.repeats=new Int32Array(_em.HEAP32.buffer,_csm.getParameterRepeats(modelPtr),length),length=_csm.getParameterCount(modelPtr),this.keyCounts=new Int32Array(_em.HEAP32.buffer,_csm.getParameterKeyCounts(modelPtr),length),length=_csm.getParameterCount(modelPtr),length2=new Int32Array(_em.HEAP32.buffer,_csm.getParameterKeyCounts(modelPtr),length),this.keyValues=new Array(length);for(var _keyValues=new Uint32Array(_em.HEAPU32.buffer,_csm.getParameterKeyValues(modelPtr),length),i=0;i<_keyValues.length;i++)this.keyValues[i]=new Float32Array(_em.HEAPF32.buffer,_keyValues[i],length2[i])}),Parts=(Live2DCubismCore.Parameters=Parameters,function(modelPtr){this.count=_csm.getPartCount(modelPtr),length=_csm.getPartCount(modelPtr),this.ids=new Array(length);for(var length,_ids=new Uint32Array(_em.HEAPU32.buffer,_csm.getPartIds(modelPtr),length),i=0;i<_ids.length;i++)this.ids[i]=_em.UTF8ToString(_ids[i]);length=_csm.getPartCount(modelPtr),this.opacities=new Float32Array(_em.HEAPF32.buffer,_csm.getPartOpacities(modelPtr),length),length=_csm.getPartCount(modelPtr),this.parentIndices=new Int32Array(_em.HEAP32.buffer,_csm.getPartParentPartIndices(modelPtr),length)}),Drawables=(Live2DCubismCore.Parts=Parts,function(){function Drawables(modelPtr){this._modelPtr=modelPtr;for(var length,length2=null,_ids=(this.count=_csm.getDrawableCount(modelPtr),length=_csm.getDrawableCount(modelPtr),this.ids=new Array(length),new Uint32Array(_em.HEAPU32.buffer,_csm.getDrawableIds(modelPtr),length)),i=0;i<_ids.length;i++)this.ids[i]=_em.UTF8ToString(_ids[i]);length=_csm.getDrawableCount(modelPtr),this.constantFlags=new Uint8Array(_em.HEAPU8.buffer,_csm.getDrawableConstantFlags(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.dynamicFlags=new Uint8Array(_em.HEAPU8.buffer,_csm.getDrawableDynamicFlags(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.textureIndices=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableTextureIndices(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.drawOrders=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableDrawOrders(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.renderOrders=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableRenderOrders(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.opacities=new Float32Array(_em.HEAPF32.buffer,_csm.getDrawableOpacities(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.maskCounts=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableMaskCounts(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.vertexCounts=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableVertexCounts(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.indexCounts=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableIndexCounts(modelPtr),length),length=_csm.getDrawableCount(modelPtr),this.multiplyColors=new Float32Array(_em.HEAPF32.buffer,_csm.getDrawableMultiplyColors(modelPtr),4*length),length=_csm.getDrawableCount(modelPtr),this.screenColors=new Float32Array(_em.HEAPF32.buffer,_csm.getDrawableScreenColors(modelPtr),4*length),length=_csm.getDrawableCount(modelPtr),this.parentPartIndices=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableParentPartIndices(modelPtr),length),length=_csm.getDrawableCount(modelPtr),length2=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableMaskCounts(modelPtr),length),this.masks=new Array(length);for(var _masks=new Uint32Array(_em.HEAPU32.buffer,_csm.getDrawableMasks(modelPtr),length),i=0;i<_masks.length;i++)this.masks[i]=new Int32Array(_em.HEAP32.buffer,_masks[i],length2[i]);length=_csm.getDrawableCount(modelPtr),length2=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableVertexCounts(modelPtr),length),this.vertexPositions=new Array(length);for(var _vertexPositions=new Uint32Array(_em.HEAPU32.buffer,_csm.getDrawableVertexPositions(modelPtr),length),i=0;i<_vertexPositions.length;i++)this.vertexPositions[i]=new Float32Array(_em.HEAPF32.buffer,_vertexPositions[i],2*length2[i]);length=_csm.getDrawableCount(modelPtr),length2=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableVertexCounts(modelPtr),length),this.vertexUvs=new Array(length);for(var _vertexUvs=new Uint32Array(_em.HEAPU32.buffer,_csm.getDrawableVertexUvs(modelPtr),length),i=0;i<_vertexUvs.length;i++)this.vertexUvs[i]=new Float32Array(_em.HEAPF32.buffer,_vertexUvs[i],2*length2[i]);length=_csm.getDrawableCount(modelPtr),length2=new Int32Array(_em.HEAP32.buffer,_csm.getDrawableIndexCounts(modelPtr),length),this.indices=new Array(length);for(var _indices=new Uint32Array(_em.HEAPU32.buffer,_csm.getDrawableIndices(modelPtr),length),i=0;i<_indices.length;i++)this.indices[i]=new Uint16Array(_em.HEAPU16.buffer,_indices[i],length2[i])}return Drawables.prototype.resetDynamicFlags=function(){_csm.resetDrawableDynamicFlags(this._modelPtr)},Drawables}()),Version=(Live2DCubismCore.Drawables=Drawables,function(){function Utils(){}return Utils.hasBlendAdditiveBit=function(bitfield){return 1==(1&bitfield)},Utils.hasBlendMultiplicativeBit=function(bitfield){return 2==(2&bitfield)},Utils.hasIsDoubleSidedBit=function(bitfield){return 4==(4&bitfield)},Utils.hasIsInvertedMaskBit=function(bitfield){return 8==(8&bitfield)},Utils.hasIsVisibleBit=function(bitfield){return 1==(1&bitfield)},Utils.hasVisibilityDidChangeBit=function(bitfield){return 2==(2&bitfield)},Utils.hasOpacityDidChangeBit=function(bitfield){return 4==(4&bitfield)},Utils.hasDrawOrderDidChangeBit=function(bitfield){return 8==(8&bitfield)},Utils.hasRenderOrderDidChangeBit=function(bitfield){return 16==(16&bitfield)},Utils.hasVertexPositionsDidChangeBit=function(bitfield){return 32==(32&bitfield)},Utils.hasBlendColorDidChangeBit=function(bitfield){return 64==(64&bitfield)},Utils}()),Version=(Live2DCubismCore.Utils=Version,function(){function Memory(){}return Memory.initializeAmountOfMemory=function(size){16777216>2]+(Mn<<5)|0)>>2],Qn=q[a+60>>2]+w(Xn,24)|0,Mn=(lo=q[Qn+8>>2])+-1|0,yo=(ro=q[Qn+4>>2])+-1|0,zo=vo=(Xn=q[q[a+152>>2]+(Xn<<2)>>2])+(lo<<3)|0,Ao=wo=Xn+((uo=w(ro,mo=lo+1|0))<<3)|0,Bo=xo=Xn+(lo+uo<<3)|0,Jo=q[Qn+12>>2],so=x(0|ro),to=x(0|lo),a=0;Wn=u[4+(Qn=(po=a<<3)+Nn|0)>>2],Sn=x(Wn*so),Yn=u[Qn>>2],Rn=x(Yn*to),Qn=Wn>=x(1),Sn=!(Wn=x(1)|Yn>2],Co=u[Xn+4>>2],Zn=x(bo-Co),Do=u[4+zo>>2],Eo=u[4+Ao>>2],_n=x(Do-Eo),co=x(x(Zn-_n)*x(.5)),Fo=u[xo>>2],Go=u[Xn>>2],$n=x(Fo-Go),Ho=u[vo>>2],Io=u[wo>>2],ao=x(Ho-Io),eo=x(x($n-ao)*x(.5)),_n=x(x(_n+Zn)*x(.5)),ao=x(x(ao+$n)*x(.5)),Ko=1,Zn=x(x(x(x(x(Co+Do)+Eo)+bo)*x(.25))-x(Zn*x(.5))),$n=x(x(x(x(x(Go+Ho)+Io)+Fo)*x(.25))-x($n*x(.5)))),Wnx(-2)^1|(Ynx(-2)^1)?(u[On+po>>2]=x(Wn*eo)+x(x(Yn*ao)+$n),Rn=x(Wn*co),x(x(Yn*_n)+Zn)):(Yn<=x(0)?Wn<=x(0)?(Vn=x(x(Wn+x(2))*x(.5)),Un=x(x(Yn+x(2))*x(.5)),Rn=x(co+co),no=x(Zn-Rn),Sn=x(eo+eo),oo=x($n-Sn),jo=x(Zn-x(_n+_n)),fo=x(jo-Rn),ko=x($n-x(ao+ao)),go=x(ko-Sn),ho=u[Xn+4>>2],io=u[Xn>>2]):Qn?(Rn=x(co*x(3)),Sn=x(Zn-x(_n+_n)),jo=x(Rn+Sn),fo=x(eo*x(3)),go=x($n-x(ao+ao)),ko=x(fo+go),Vn=x(x(Wn+x(-1))*x(.5)),Un=x(x(Yn+x(2))*x(.5)),ho=x(Rn+Zn),io=x(fo+$n),fo=x(co+Sn),go=x(eo+go),no=u[4+Ao>>2],oo=u[wo>>2]):(Rn=x(Zn-x(_n+_n)),Qn=yo,Tn=x(y(Sn))>2],oo=u[Qn>>2],Qn=Xn+(w(Tn,mo)<<3)|0,ho=u[Qn+4>>2],io=u[Qn>>2]):Yn>=x(1)?Wn<=x(0)?(Vn=x(x(Wn+x(2))*x(.5)),Un=x(x(Yn+x(-1))*x(.5)),Rn=x(co+co),fo=x(x(_n+Zn)-Rn),Sn=x(eo+eo),go=x(x(ao+$n)-Sn),ho=x(x(_n*x(3))+Zn),no=x(ho-Rn),io=x(x(ao*x(3))+$n),oo=x(io-Sn),jo=u[4+zo>>2],ko=u[vo>>2]):Qn?(Rn=x(co*x(3)),jo=x(Rn+x(_n+Zn)),Sn=x(eo*x(3)),ko=x(Sn+x(ao+$n)),bo=Rn,Rn=x(x(_n*x(3))+Zn),ho=x(bo+Rn),bo=Sn,Sn=x(x(ao*x(3))+$n),io=x(bo+Sn),Vn=x(x(Wn+x(-1))*x(.5)),Un=x(x(Yn+x(-1))*x(.5)),no=x(co+Rn),oo=x(eo+Sn),fo=u[4+Bo>>2],go=u[xo>>2]):(Rn=x(x(_n*x(3))+Zn),Qn=yo,Tn=x(y(Sn))>2],go=u[Qn>>2],Qn=Xn+(w(Tn,mo)+lo<<3)|0,jo=u[Qn+4>>2],ko=u[Qn>>2]):Wn<=x(0)?(Vn=x(x(Wn+x(2))*x(.5)),Qn=Mn,Tn=x(y(Sn=Rn))>2],ko=u[Qn>>2],ho=u[4+(Qn=Xn+(Tn<<3)|0)>>2],io=u[Qn>>2]):Qn?(bo=Sn=x(co*x(3)),Qn=Mn,Tn=x(y(Rn))>2],go=u[Qn>>2],no=u[4+(Qn=Xn+(Tn+uo<<3)|0)>>2],oo=u[Qn>>2]):(v[16+qo>>3]=Wn,q[qo>>2]=a,v[8+qo>>3]=Yn,Y(4,1107,qo)),x(Un+Vn)<=x(1)?(u[On+po>>2]=x(go+x(x(oo-go)*Un))+x(x(ko-go)*Vn),Rn=x(fo+x(x(no-fo)*Un)),x(x(jo-fo)*Vn)):(Rn=x(x(1)-Un),Sn=x(x(1)-Vn),u[On+po>>2]=x(io+x(x(ko-io)*Rn))+x(x(oo-io)*Sn),Rn=x(ho+x(x(jo-ho)*Rn)),x(x(no-ho)*Sn)))):(Qn=x(y(bo=Sn))>2]=x(x(x(Rn*x(Sn*u[Tn>>2]))+x(Rn*x(Un*u[Tn+8>>2])))+x(Vn*x(Sn*u[Qn>>2])))+x(Vn*x(Un*u[Qn+8>>2])),Rn=x(x(x(Rn*x(Sn*u[Tn+4>>2]))+x(Rn*x(Un*u[Tn+12>>2])))+x(Vn*x(Sn*u[Qn+4>>2]))),x(Vn*x(Un*u[Qn+12>>2]))):x(Un+Vn)<=x(1)?(Rn=x(x(x(1)-Un)-Vn),Tn=Xn+(Qn<<3)|0,Qn=Xn+(Qn+mo<<3)|0,u[On+po>>2]=x(x(Rn*u[Tn>>2])+x(Un*u[Tn+8>>2]))+x(Vn*u[Qn>>2]),Rn=x(x(Rn*u[Tn+4>>2])+x(Un*u[Tn+12>>2])),x(Vn*u[Qn+4>>2])):(Rn=x(x(Un+x(-1))+Vn),Tn=Xn+(Qn+mo<<3)|0,Sn=x(x(1)-Un),Wn=x(x(1)-Vn),Qn=Xn+(Qn<<3)|0,u[On+po>>2]=x(x(Rn*u[Tn+8>>2])+x(Sn*u[Tn>>2]))+x(Wn*u[Qn+8>>2]),Rn=x(x(Rn*u[Tn+12>>2])+x(Sn*u[Tn+4>>2])),x(Wn*u[Qn+12>>2]))),u[4+(On+po|0)>>2]=Rn+Sn,(0|Pn)!=(0|(a=a+1|0)););L=32+qo|0},n[2]=function(a,jh){a|=0,jh|=0;var Ah=0,Bh=0,Ch=0,Dh=0,Eh=0,Fh=x(0),Gh=0,Hh=0,Jh=(x(0),0),Kh=0,Dh=q[a+320>>2],Ah=q[a+316>>2],Eh=q[a+308>>2];-1==(0|(Bh=q[8+(Ch=Eh+(jh<<5)|0)>>2]))?(q[(Kh=Ah)+(Ah=jh<<2)>>2]=q[q[a+148>>2]+(q[Ch+16>>2]<<2)>>2],q[Ah+Dh>>2]=1065353216):(Gh=q[Ch+16>>2],Hh=q[q[a+152>>2]+(Gh<<2)>>2],n[q[24+(Eh+(Bh<<5)|0)>>2]](a,Bh,Hh,Hh,q[16+(q[a+60>>2]+w(Gh,24)|0)>>2]),Fh=u[q[a+148>>2]+(q[Ch+16>>2]<<2)>>2],Ch=q[Ch+8>>2]<<2,u[(Bh=jh<<2)+Ah>>2]=Fh*u[Ch+Ah>>2],q[Bh+Dh>>2]=q[Ch+Dh>>2]),4<=r[q[a>>2]+4|0]&&(Dh=jh<<2,Ah=q[a+308>>2]+(jh<<5)|0,Bh=q[Ah+16>>2]<<2,Ch=q[a+328>>2],jh=q[a+324>>2],-1==(0|(Eh=q[Ah+8>>2]))?(Eh=q[a+156>>2],q[(Ah=Dh<<2)+jh>>2]=q[Eh+(Bh<<=2)>>2],q[(Gh=4|Ah)+jh>>2]=q[(Hh=4|Bh)+Eh>>2],q[(Jh=8|Ah)+jh>>2]=q[Eh+(Kh=8|Bh)>>2],q[jh+((Dh|=3)<<2)>>2]=1065353216,a=q[a+160>>2],q[Ah+Ch>>2]=q[a+Bh>>2],q[Ch+Gh>>2]=q[a+Hh>>2],q[Ch+Jh>>2]=q[a+Kh>>2]):(Bh=(Hh=Bh<<2)+q[a+156>>2]|0,u[(Ah=(Gh=Dh<<2)+jh|0)>>2]=u[Bh>>2]*u[(Eh=(Jh=Eh<<4)+jh|0)>>2],u[Ah+4>>2]=u[Bh+4>>2]*u[Eh+4>>2],u[Ah+8>>2]=u[Bh+8>>2]*u[Eh+8>>2],q[jh+((Dh|=3)<<2)>>2]=1065353216,a=Hh+q[a+160>>2]|0,Kh=u[a>>2],Fh=u[(Ah=Ch+Jh|0)>>2],u[(jh=Ch+Gh|0)>>2]=x(Kh+Fh)-x(Kh*Fh),Kh=u[a+4>>2],Fh=u[Ah+4>>2],u[jh+4>>2]=x(Kh+Fh)-x(Kh*Fh),Kh=u[a+8>>2],Fh=u[Ah+8>>2],u[jh+8>>2]=x(Kh+Fh)-x(Kh*Fh)),q[Ch+(Dh<<2)>>2]=1065353216)},n[3]=function(a,rn,sn,vn,wn){a|=0,rn|=0,sn|=0,vn|=0,wn|=0;var Bn,Cn,Dn,Fn,Gn,xn=0,xn=(x(0),x(0),x(0),x(0),x(0),x(0),x(0),x(0),(rn=q[16+(q[a+308>>2]+(rn<<5)|0)>>2])<<2),zn=function(a){var Cl,Fl,Dl,El,Bl=x(0);L=Dl=L-16|0,j(a);a:if((Cl=2147483647&(El=b[0]))>>>0<=1061752794)Bl=x(1),Cl>>>0<964689920||(Bl=ba(+a));else if(Cl>>>0<=1081824209)Fl=+a,Bl=1075235812<=Cl>>>0?x(-ba(((0|El)<0?3.141592653589793:-3.141592653589793)+Fl)):aa((0|El)<=-1?1.5707963267948966+Fl:1.5707963267948966-Fl);else if(Cl>>>0<=1088565717)Bl=1085271520<=Cl>>>0?ba(+a+((0|El)<0?6.283185307179586:-6.283185307179586)):aa((0|El)<=-1?-4.71238898038469-+a:+a-4.71238898038469);else if(Bl=x(a-a),!(2139095040<=Cl>>>0))if((Cl=3&Da(a,8+Dl|0))>>>0<=2){switch(Cl-1|0){default:Bl=ba(v[8+Dl>>3]);break a;case 0:Bl=aa(-v[8+Dl>>3]);break a;case 1:}Bl=x(-ba(v[8+Dl>>3]))}else Bl=aa(v[8+Dl>>3]);return L=16+Dl|0,Bl}(yn=x(x(x(u[4+(q[a+168>>2]+w(rn,12)|0)>>2]+u[xn+q[a+284>>2]>>2])*x(3.1415927410125732))/x(180))),An=u[xn+q[a+272>>2]>>2],En=q[xn+q[a+292>>2]>>2],yn=function(a){var Tk,yl,Al,zl=0;L=yl=L-16|0,j(a);a:if((Tk=2147483647&(Al=b[0]))>>>0<=1061752794)Tk>>>0<964689920||(a=aa(+a));else if(Tk>>>0<=1081824209)zl=+a,a=Tk>>>0<=1075235811?(0|Al)<=-1?x(-ba(zl+1.5707963267948966)):ba(zl+-1.5707963267948966):aa(-(((0|Al)<0?3.141592653589793:-3.141592653589793)+zl));else if(Tk>>>0<=1088565717)zl=+a,a=Tk>>>0<=1085271519?(0|Al)<=-1?ba(zl+4.71238898038469):x(-ba(zl+-4.71238898038469)):aa(((0|Al)<0?6.283185307179586:-6.283185307179586)+zl);else if(2139095040<=Tk>>>0)a=x(a-a);else if((Tk=3&Da(a,8+yl|0))>>>0<=2){switch(Tk-1|0){default:a=aa(v[8+yl>>3]);break a;case 0:a=ba(v[8+yl>>3]);break a;case 1:}a=aa(-v[8+yl>>3])}else a=x(-ba(v[8+yl>>3]));return L=16+yl|0,a}(yn);if((rn=0)<(0|wn))for(zn=x(An*zn),Cn=x(En?-1:1),Fn=x(zn*Cn),Bn=q[xn+q[a+288>>2]>>2]?x(-1):x(1),Gn=x(x(An*yn)*Bn),zn=x(zn*Bn),An=x(x(An*x(-yn))*Cn),yn=u[xn+q[a+280>>2]>>2],Cn=u[xn+q[a+276>>2]>>2];xn=(a=rn<<3)+vn|0,Bn=u[(a=a+sn|0)>>2],Dn=u[a+4>>2],u[xn+4>>2]=yn+x(x(Gn*Bn)+x(Fn*Dn)),u[xn>>2]=Cn+x(x(zn*Bn)+x(An*Dn)),(0|wn)!=(0|(rn=rn+1|0)););},n[4]=function(a,jh){a|=0,jh|=0;var vh,wh,xh,yh,zh,kh,lh=0,mh=0,nh=0,oh=x(0),ph=0,qh=0,rh=x(0),sh=0,th=0,uh=0;if(x(0),x(0),x(0),x(0),L=kh=L+-64|0,sh=q[a+320>>2],th=q[a+316>>2],mh=q[a+308>>2],-1==(0|(ph=q[8+(nh=mh+(jh<<5)|0)>>2])))lh=q[nh+16>>2]<<2,q[(mh=jh<<2)+th>>2]=q[lh+q[a+268>>2]>>2],q[mh+sh>>2]=q[lh+q[a+272>>2]>>2];else{lh=q[nh+16>>2]<<2,uh=q[lh+q[a+276>>2]>>2],q[24+kh>>2]=uh,lh=q[lh+q[a+280>>2]>>2],q[28+kh>>2]=lh,q[16+kh>>2]=0,wh=1==q[12+(qh=mh+(ph<<5)|0)>>2]?x(-10):x(-.10000000149011612),u[20+kh>>2]=wh,q[60+kh>>2]=lh,q[56+kh>>2]=uh,n[q[qh+24>>2]](a,ph,56+kh|0,48+kh|0,1),oh=x(1),mh=9;b:{for(;;){if(lh=mh,rh=x(oh*x(0)),u[32+kh>>2]=rh+u[56+kh>>2],vh=x(wh*oh),u[36+kh>>2]=vh+u[60+kh>>2],n[q[qh+24>>2]](a,ph,32+kh|0,40+kh|0,1),xh=x(u[44+kh>>2]-u[52+kh>>2]),u[44+kh>>2]=xh,yh=x(u[40+kh>>2]-u[48+kh>>2]),u[40+kh>>2]=yh,xh!=x(0)||yh!=x(0)){mh=q[44+kh>>2],q[8+kh>>2]=q[40+kh>>2],q[12+kh>>2]=mh;break b}if(u[32+kh>>2]=u[56+kh>>2]-rh,u[36+kh>>2]=u[60+kh>>2]-vh,n[q[qh+24>>2]](a,ph,32+kh|0,40+kh|0,1),rh=x(u[40+kh>>2]-u[48+kh>>2]),u[40+kh>>2]=rh,vh=x(u[44+kh>>2]-u[52+kh>>2]),(u[44+kh>>2]=vh)!=x(0)||rh!=x(0)){u[12+kh>>2]=-vh,u[8+kh>>2]=-rh;break b}if(mh=lh+-1|0,oh=x(oh*x(.10000000149011612)),!lh)break}Y(3,1311,0)}oh=function(a,Sh){var Th=x(0);if((Th=x(Ba(u[4+a>>2],u[a>>2])-Ba(u[4+Sh>>2],u[Sh>>2])))x(3.1415927410125732))for(;(Th=x(Th+x(-6.2831854820251465)))>x(3.1415927410125732););return Th}(16+kh|0,8+kh|0),n[q[qh+24>>2]](a,q[nh+8>>2],24+kh|0,24+kh|0,1),mh=q[nh+16>>2]<<2,q[mh+q[a+276>>2]>>2]=q[24+kh>>2],q[mh+q[a+280>>2]>>2]=q[28+kh>>2],lh=mh+q[a+284>>2]|0,u[lh>>2]=u[lh>>2]+x(x(oh*x(-180))/x(3.1415927410125732)),nh=q[nh+8>>2]<<2,u[(lh=jh<<2)+th>>2]=u[mh+q[a+268>>2]>>2]*u[nh+th>>2],mh=mh+q[a+272>>2]|0,oh=x(u[mh>>2]*u[nh+sh>>2]),u[lh+sh>>2]=oh,u[mh>>2]=oh}4<=r[q[a>>2]+4|0]&&(lh=jh<<2,nh=q[a+308>>2]+(jh<<5)|0,ph=q[nh+16>>2]<<2,mh=q[a+328>>2],jh=q[a+324>>2],-1==(0|(qh=q[nh+8>>2]))?(qh=q[a+296>>2],q[(nh=lh<<2)+jh>>2]=q[qh+(ph<<=2)>>2],q[(sh=4|nh)+jh>>2]=q[(th=4|ph)+qh>>2],q[(uh=8|nh)+jh>>2]=q[qh+(zh=8|ph)>>2],q[jh+((lh|=3)<<2)>>2]=1065353216,a=q[a+300>>2],q[mh+nh>>2]=q[a+ph>>2],q[mh+sh>>2]=q[a+th>>2],q[mh+uh>>2]=q[a+zh>>2]):(ph=(th=ph<<2)+q[a+296>>2]|0,u[(nh=(sh=lh<<2)+jh|0)>>2]=u[ph>>2]*u[(qh=(uh=qh<<4)+jh|0)>>2],u[nh+4>>2]=u[ph+4>>2]*u[qh+4>>2],u[nh+8>>2]=u[ph+8>>2]*u[qh+8>>2],q[jh+((lh|=3)<<2)>>2]=1065353216,a=th+q[a+300>>2]|0,oh=u[a>>2],rh=u[(nh=mh+uh|0)>>2],u[(jh=mh+sh|0)>>2]=x(oh+rh)-x(oh*rh),oh=u[a+4>>2],rh=u[nh+4>>2],u[jh+4>>2]=x(oh+rh)-x(oh*rh),oh=u[a+8>>2],rh=u[nh+8>>2],u[jh+8>>2]=x(oh+rh)-x(oh*rh)),q[mh+(lh<<2)>>2]=1065353216),L=64+kh|0},n[5]=function(a,Tk){return a|=0,Tk|=0,x(0),x(0),0|((a=u[a>>2])<(Tk=u[Tk>>2])?-1:Tk>2])))for(Yj=q[a+12>>2],Xj=q[a+20>>2];u[(Uj=Tj<<2)+Yj>>2]=u[tj+Uj>>2]*u[Uj+Xj>>2],(0|(Tj=Tj+1|0))<(0|Wj););if(!((0|(Wj=q[a>>2]))<1))if(Yj=q[a+4>>2],wj)for(Uj=tj=0;;){if(q[wj>>2]){if((0|(Tj=q[(Xj=tj<<2)+q[a+16>>2]>>2]))<1)Vj=x(0);else for(Zj=Tj+Uj|0,_j=q[a+12>>2],Vj=x(0),Tj=Uj;Vj=x(Vj+u[_j+(Tj<<2)>>2]),(0|(Tj=Tj+1|0))<(0|Zj););u[vj+Xj>>2]=Vj}if(wj=wj+4|0,Uj=q[Yj+(tj<<2)>>2]+Uj|0,!((0|(tj=tj+1|0))<(0|Wj)))break}else for(Xj=q[a+16>>2],tj=wj=0;;){if((0|(Tj=q[(Uj=wj<<2)+Xj>>2]))<=0)Vj=x(0);else for(Zj=tj+Tj|0,_j=q[a+12>>2],Vj=x(0),Tj=tj;Vj=x(Vj+u[_j+(Tj<<2)>>2]),(0|(Tj=Tj+1|0))<(0|Zj););if(u[vj+Uj>>2]=Vj,tj=q[Uj+Yj>>2]+tj|0,!((0|(wj=wj+1|0))<(0|Wj)))break}},n[7]=function(a,tj,vj,wj){a|=0,tj|=0,vj|=0,wj|=0;var xj=0,yj=x(0),Oj=0,Pj=0,Qj=0,Rj=0,Sj=0;if(1<=(0|(Rj=q[a+8>>2])))for(Pj=q[a+12>>2],Qj=q[a+20>>2];u[(Oj=xj<<2)+Pj>>2]=u[tj+Oj>>2]*u[Oj+Qj>>2],(0|(xj=xj+1|0))<(0|Rj););if(!((0|(xj=q[a>>2]))<1))if(Rj=q[a+4>>2],wj)for(Oj=tj=0;;){if(q[wj>>2]){if((0|(xj=q[(Pj=tj<<2)+q[a+16>>2]>>2]))<1)yj=x(0);else for(Qj=xj+Oj|0,Sj=q[a+12>>2],yj=x(0),xj=Oj;yj=x(yj+u[Sj+(xj<<2)>>2]),(0|(xj=xj+1|0))<(0|Qj););xj=vj+Pj|0,yj=x(yj+x(.0010000000474974513)),Pj=x(y(yj))>2]=Pj,xj=q[a>>2]}if(wj=wj+4|0,Oj=q[Rj+(tj<<2)>>2]+Oj|0,!((0|(tj=tj+1|0))<(0|xj)))break}else for(Pj=q[a+16>>2],tj=wj=0;;){if((0|(xj=q[(Oj=wj<<2)+Pj>>2]))<=0)yj=x(0);else for(Qj=tj+xj|0,Sj=q[a+12>>2],yj=x(0),xj=tj;yj=x(yj+u[Sj+(xj<<2)>>2]),(0|(xj=xj+1|0))<(0|Qj););if(xj=vj+Oj|0,yj=x(yj+x(.0010000000474974513)),Qj=x(y(yj))>2]=Qj,tj=q[Oj+Rj>>2]+tj|0,!((0|(wj=wj+1|0))>2]))break}},n[8]=function(a,tj,vj,wj,xj,yj){a|=0,tj|=0,vj|=0,wj|=0,xj|=0,yj|=0;var Mj,Nj,zj=0,Aj=0,Bj=0,Cj=0,Dj=0,Ej=0,Fj=0,Gj=0,Ij=0,Jj=0,Kj=x(0),Lj=0,Hj=q[a>>2];if(!((0|Hj)<1))if(Mj=xj<<2,Nj=q[a+4>>2],yj)for(;;){if(q[yj>>2]&&(Bj=q[(zj=Cj<<2)+q[a+16>>2]>>2],Fj=q[vj+zj>>2],Aj=q[wj+zj>>2],(zj=(0|(Gj=w(Aj,xj)))<1)||ca(Fj,0,w(Aj,Mj)),!(zj|(0|Bj)<1)))for(Ij=Bj+Ej|0,Jj=q[a+20>>2],zj=Ej;;){for(Kj=u[(Aj=zj<<2)+Jj>>2],Lj=q[tj+Aj>>2],Dj=0;u[(Aj=(Bj=Dj<<2)+Fj|0)>>2]=u[Aj>>2]+x(Kj*u[Bj+Lj>>2]),(0|Gj)!=(0|(Dj=Dj+1|0)););if(!((0|(zj=zj+1|0))<(0|Ij)))break}if(yj=yj+4|0,Ej=q[(Cj<<2)+Nj>>2]+Ej|0,!((0|(Cj=Cj+1|0))<(0|Hj)))break}else for(yj=0;;){if(Bj=q[(Cj=yj<<2)+q[a+16>>2]>>2],Fj=q[vj+Cj>>2],Aj=q[wj+Cj>>2],(zj=(0|(Gj=w(Aj,xj)))<1)||ca(Fj,0,w(Aj,Mj)),!(zj|(0|Bj)<=0))for(Ij=Bj+Ej|0,Jj=q[a+20>>2],zj=Ej;;){for(Kj=u[(Aj=zj<<2)+Jj>>2],Lj=q[tj+Aj>>2],Dj=0;u[(Aj=(Bj=Dj<<2)+Fj|0)>>2]=u[Aj>>2]+x(Kj*u[Bj+Lj>>2]),(0|Gj)!=(0|(Dj=Dj+1|0)););if(!((0|(zj=zj+1|0))<(0|Ij)))break}if(Ej=q[Cj+Nj>>2]+Ej|0,!((0|(yj=yj+1|0))<(0|Hj)))break}},n[9]=function(a){var Je,Ke,Le,Fe=0,Ge=0,He=0,Ie=0;if(!(q[(a|=0)+648>>2]||(0|(Fe=q[a+332>>2]))<1))for(Ke=(Ge=q[a+336>>2])+w(Fe,20)|0,Fe=q[a+424>>2],Ie=q[a+444>>2];;){if(q[Fe>>2]&&!((0|(He=q[Ge+16>>2]))<(a=1)))for(He<<=1,Le=q[Ie>>2];u[(Je=(a<<2)+Le|0)>>2]=-u[Je>>2],(0|(a=a+2|0))<(0|He););if(Ie=Ie+4|0,Fe=Fe+4|0,!((Ge=Ge+20|0)>>>0>>0))break}},n[10]=function(a,rn,sn){var un;return $(un=q[20+(a|=0)>>2],rn|=0,rn=(sn|=0)>>>0<(rn=q[a+16>>2]-un|0)>>>0?sn:rn),q[a+20>>2]=rn+q[a+20>>2],0|sn},n[11]=function(a,Gl,Pm,Qm,Rm,Sm){a|=0,Gl=+Gl,Pm|=0,Qm|=0,Rm|=0,Sm|=0;var dn,on,Xm,hn,Tm=0,Um=0,Vm=0,Wm=0,Ym=0,Zm=0,_m=0,$m=0,an=0,bn=0,cn=0,en=0,fn=0,gn=0,kn=0;if(q[44+(L=Xm=L-560|0)>>2]=0,h(+Gl),Tm=0|b[1],on=4294967295>>0?0:1,hn=(0|Tm)<-1||(0|Tm)<=-1&&on?(h(Gl=-Gl),Tm=0|b[1],b[0],gn=1,3872):2048&Rm?(gn=1,3875):(gn=1&Rm)?3878:3873,2146435072==(2146435072&Tm))_(a,32,Pm,Zm=gn+3|0,-65537&Rm),Z(a,hn,gn),Qm=Sm>>>5&1,Z(a,Gl!=Gl?Qm?3899:3903:Qm?3891:3895,3);else if(Gl=function Ja(a,ic){var kc,lc,jc=0;if(h(+a),jc=0|b[1],kc=0|b[0],2047!=(0|(jc=(lc=jc)>>>20&2047))){if(!jc)return jc=ic,ic=0==a?0:(a=Ja(0x10000000000000000*a,ic),q[ic>>2]+-64|0),q[jc>>2]=ic,a;q[ic>>2]=jc+-1022,f(0,0|kc),f(1,-2146435073&lc|1071644672),a=+g()}return a}(Gl,44+Xm|0),0!=(Gl+=Gl)&&(q[44+Xm>>2]=q[44+Xm>>2]+-1),dn=16+Xm|0,97==(0|(on=32|Sm))){if(cn=(bn=32&Sm)?9+hn|0:hn,!(11>>0)&&(Tm=12-Qm|0)){for(en=8;en*=16,Tm=Tm+-1|0;);Gl=45==r[0|cn]?-(en+(-Gl-en)):Gl+en-en}for((0|dn)==(0|(Tm=ga((Vm=(Tm=q[44+Xm>>2])>>31)^Tm+Vm,0,dn)))&&(o[15+Xm|0]=48,Tm=15+Xm|0),Ym=2|gn,Vm=q[44+Xm>>2],o[0|(an=Tm+-2|0)]=Sm+15,o[Tm+-1|0]=(0|Vm)<0?45:43,Tm=8&Rm,Um=16+Xm|0;Sm=Um,$m=bn,Vm=y(Gl)<2147483648?~~Gl:-2147483648,o[0|Um]=$m|r[Vm+3856|0],1!=((Um=Sm+1|0)-(16+Xm|0)|0)|(0==(Gl=16*(Gl-(0|Vm)))?!(Tm|0<(0|Qm)):0)||(o[Sm+1|0]=46,Um=Sm+2|0),0!=Gl;);_(a,32,Pm,Zm=(Sm=!Qm|(0|Qm)<=((Um-Xm|0)-18|0)?((dn-(16+Xm|0)|0)-an|0)+Um|0:2+((Qm+dn|0)-an|0)|0)+Ym|0,Rm),Z(a,cn,Ym),_(a,48,Pm,Zm,65536^Rm),Z(a,16+Xm|0,Qm=Um-(16+Xm|0)|0),_(a,48,Sm-((Tm=Qm)+(Qm=dn-an|0)|0)|0,0,0),Z(a,an,Qm)}else{for(Tm=(0|Qm)<0,0==Gl?Wm=q[44+Xm>>2]:(Wm=q[44+Xm>>2]+-28|0,q[44+Xm>>2]=Wm,Gl*=268435456),_m=Tm?6:Qm,Vm=bn=(0|Wm)<0?48+Xm|0:336+Xm|0;Vm=(Qm=Vm)+4|0,0!=(Gl=1e9*(Gl-((q[Qm>>2]=Tm=Gl<4294967296&0<=Gl?~~Gl>>>0:0)>>>0))););if((0|Wm)<1)Tm=Vm,Um=bn;else for(Um=bn;;){if(an=(0|Wm)<29?Wm:29,!((Tm=Vm+-4|0)>>>0>>0)){for(Qm=an,$m=0;kn=$m,$m=q[(cn=Tm)>>2],Ym=31&Qm,Ym=32<=(63&Qm)>>>(Zm=0)?(Wm=$m<>>32-Ym,$m<>>0>>0?Zm+1|0:Zm,kn=cn,cn=cd($m=dd(Ym=$m,Zm,1e9),M,1e9),q[kn>>2]=Ym-cn,Um>>>0<=(Tm=Tm+-4|0)>>>0;);(Qm=$m)&&(q[(Um=Um+-4|0)>>2]=Qm)}for(;Um>>>0<(Tm=Vm)>>>0&&!q[(Vm=Tm+-4|0)>>2];);if(Wm=q[44+Xm>>2]-an|0,Vm=Tm,!(0<(0|(q[44+Xm>>2]=Wm))))break}if((0|Wm)<=-1)for(fn=1+((_m+25|0)/9|0)|0,an=102==(0|on);;){if($m=(0|Wm)<-9?9:0-Wm|0,Tm>>>0<=Um>>>0)Um=q[Um>>2]?Um:Um+4|0;else{for(cn=1e9>>>$m,Ym=-1<<$m^-1,Wm=0,Vm=Um;Qm=q[Vm>>2],q[Vm>>2]=(Qm>>>$m)+Wm,Wm=w(cn,Qm&Ym),(Vm=Vm+4|0)>>>0>>0;);Um=q[Um>>2]?Um:Um+4|0,Wm&&(q[Tm>>2]=Wm,Tm=Tm+4|0)}if(Wm=$m+q[44+Xm>>2]|0,Tm=(0|fn)>2?Qm+(fn<<2)|0:Tm,!((0|(q[44+Xm>>2]=Wm))<0))break}if(!(Tm>>>(Vm=0)<=Um>>>0||(Vm=w(bn-Um>>2,9),(Qm=q[Um>>2])>>>0<(Wm=10))))for(;Vm=Vm+1|0,(Wm=w(Wm,10))>>>0<=Qm>>>0;);if((0|(Qm=(_m-(102==(0|on)?0:Vm)|0)-(103==(0|on)&0!=(0|_m))|0))<(w(Tm-bn>>2,9)+-9|0)){if(Zm=(bn+((Qm=(0|(Ym=Qm+9216|0))/9|0)<<2)|0)-4092|0,Wm=10,(0|(Qm=1+(Ym-w(Qm,9)|0)|0))<=8)for(;Wm=w(Wm,10),9!=(0|(Qm=Qm+1|0)););if(fn=Zm+4|0,((an=(cn=q[Zm>>2])-w(Wm,Ym=(cn>>>0)/(Wm>>>0)|0)|0)||(0|fn)!=(0|Tm))&&(en=an>>>0<(Qm=Wm>>>1)>>>0?.5:(0|Tm)==(0|fn)&&(0|Qm)==(0|an)?1:1.5,Gl=1&Ym?9007199254740994:9007199254740992,!gn|45!=r[0|hn]||(en=-en,Gl=-Gl),q[Zm>>2]=Qm=cn-an|0,Gl+en!=Gl)){if(1e9<=(q[Zm>>2]=Qm=Qm+Wm|0)>>>0)for(;(Zm=Zm+-4|(q[Zm>>2]=0))>>>0>>0&&(q[(Um=Um+-4|0)>>2]=0),Qm=q[Zm>>2]+1|0,999999999<(q[Zm>>2]=Qm)>>>0;);if(Vm=w(bn-Um>>2,9),!((Qm=q[Um>>2])>>>0<(Wm=10)))for(;Vm=Vm+1|0,(Wm=w(Wm,10))>>>0<=Qm>>>0;);}Tm=(Qm=Zm+4|0)>>>0>>0?Qm:Tm}j:{for(;;){if((an=Tm)>>>(cn=0)<=Um>>>0)break j;if(q[(Tm=an+-4|0)>>2])break}cn=1}if(103!=(0|on))Ym=8&Rm;else if(_m=((Qm=(0|Vm)<(0|(Tm=_m||1))&-5<(0|Vm))?-1^Vm:-1)+Tm|0,Sm=(Qm?-1:-2)+Sm|0,!(Ym=8&Rm)){if(Tm=9,cn&&(Ym=q[an+-4>>2])&&!((Ym>>>(Tm=0))%(Qm=10)))for(;Tm=Tm+1|0,!((Ym>>>0)%((Qm=w(Qm,10))>>>0)););Qm=w(an-bn>>2,9)+-9|0,_m=102==(32|Sm)?((Ym=0)|_m)<(0|(Qm=0<(0|(Qm=Qm-Tm|0))?Qm:0))?_m:Qm:((Ym=0)|_m)<(0|(Qm=0<(0|(Qm=(Qm+Vm|0)-Tm|0))?Qm:0))?_m:Qm}if(Zm=0!=(0|(Wm=_m|Ym)),Qm=a,kn=Pm,Tm=0<(0|Vm)?Vm:0,102!=(0|($m=32|Sm))){if((dn-(Tm=ga((Tm=Vm>>31)+Vm^Tm,0,dn))|0)<=1)for(;o[0|(Tm=Tm+-1|0)]=48,(dn-Tm|0)<2;);o[0|(fn=Tm+-2|0)]=Sm,o[Tm+-1|0]=(0|Vm)<0?45:43,Tm=dn-fn|0}if(_(Qm,32,kn,Zm=1+(Tm+(Zm+(_m+gn|0)|0)|0)|0,Rm),Z(a,hn,gn),_(a,48,Pm,Zm,65536^Rm),102==(0|$m)){for(Qm=16+Xm|8,Vm=16+Xm|9,Um=Sm=bn>>>0>>0?bn:Um;;){if(Tm=ga(q[Um>>2],0,Vm),(0|Sm)!=(0|Um)){if(!(Tm>>>0<=16+Xm>>>0))for(;o[0|(Tm=Tm+-1|0)]=48,16+Xm>>>0>>0;);}else(0|Tm)==(0|Vm)&&(o[24+Xm|0]=48,Tm=Qm);if(Z(a,Tm,Vm-Tm|0),!((Um=Um+4|0)>>>0<=bn>>>0))break}Wm&&Z(a,3907,1);p:if(!((0|_m)<1|an>>>0<=Um>>>0))for(;;){if(16+Xm>>>0<(Tm=ga(q[Um>>2],0,Vm))>>>0)for(;o[0|(Tm=Tm+-1|0)]=48,16+Xm>>>0>>0;);if(Z(a,Tm,(0|_m)<9?_m:9),_m=_m+-9|0,an>>>0<=(Um=Um+4|0)>>>0)break p;if(!(0<(0|_m)))break}_(a,48,_m+9|0,9,0)}else{q:if(!((0|_m)<0))for(Sm=cn?an:Um+4|0,Qm=16+Xm|8,bn=16+Xm|9,Vm=Um;;){if((0|bn)==(0|(Tm=ga(q[Vm>>2],0,bn)))&&(o[24+Xm|0]=48,Tm=Qm),(0|Um)!=(0|Vm)){if(!(Tm>>>0<=16+Xm>>>0))for(;o[0|(Tm=Tm+-1|0)]=48,16+Xm>>>0>>0;);}else Z(a,Tm,1),Tm=Tm+1|0,(0|_m)<1&&!Ym||Z(a,3907,1);if(Z(a,$m=Tm,(0|(Tm=bn-Tm|0))<(0|_m)?Tm:_m),_m=_m-Tm|0,Sm>>>0<=(Vm=Vm+4|0)>>>0)break q;if(!(-1<(0|_m)))break}_(a,48,_m+18|0,18,0),Z(a,fn,dn-fn|0)}}return _(a,32,Pm,Zm,8192^Rm),L=560+Xm|0,0|((0|Zm)<(0|Pm)?Pm:Zm)},n[12]=function(a,Gl){a|=0;var Cm=Gl|=0;Gl=q[Gl>>2]+15&-16,q[Cm>>2]=Gl+16,Cm=a,a=function(a,Gl,Hl,Zl){var dm,am,_l=0,$l=0,bm=0,cm=0;return L=am=L-32|0,_l=(cm=_l=2147483647&Zl)-1006698496|0,$l=_l=(dm=$l=bm=Hl)>>>0<0?_l+1|0:_l,_l=cm-1140785152|0,(0|(_l=bm>>>0<0?_l+1|0:_l))==(0|$l)&dm>>>0>>0|$l>>>0<_l>>>0?(_l=Zl<<4|Hl>>>28,Hl=Hl<<4|Gl>>>28,134217728==(0|(bm=Gl&=268435455))&1<=a>>>0|134217728>>0?(_l=_l+1073741824|0,(a=Hl+1|0)>>>0<1&&(_l=_l+1|0),$l=a):(_l=_l-((($l=Hl)>>>0<0)+-1073741824|0)|0,a|134217728^bm||((a=$l+(1&$l)|0)>>>0<$l>>>0&&(_l=_l+1|0),$l=a))):(!bm&2147418112==(0|cm)?!(a|Gl):2147418112==(0|cm)&bm>>>0<0|cm>>>0<2147418112)?(_l=2146435072,1140785151==(($l=0)|cm)&4294967295>>0|1140785151>>0||(bm=cm>>>16)>>>(_l=0)<15249||(function(a,Gl,Hl,Cm,Dm,Em){var Hm,Im,Fm=0,Gm=0;64&Em?(Gl=31&(Hl=Em-64|0),Gl=32<=(63&Hl)>>>0?(Hl=0,Dm>>>Gl):(Hl=Dm>>>Gl,((1<>>Gl),Dm=Cm=0):Em&&(Gm=Dm,Fm=31&(Im=64-Em|0),Im=32<=(63&Im)>>>0?(Gm=Cm<>>32-Fm|Gm<>>0?(Fm=0,Hl>>>Gl):(Fm=Hl>>>Gl,((1<>>Gl),Gl|=Im,Hl=Fm|Gm,Fm=Cm,Cm=31&Em,Cm=32<=(63&Em)>>>0?(Gm=0,Dm>>>Cm):(Gm=Dm>>>Cm,((1<>>Cm),Dm=Gm),q[a>>2]=Gl,q[4+a>>2]=Hl,q[8+a>>2]=Cm,q[12+a>>2]=Dm}(am,a,Gl,Hl,_l=65535&Zl|65536,15361-bm|0),function(a,Gl,Hl,Zl,fm,gm){var jm,hm,im=0;64&gm?(Zl=Gl,Gl=31&(fm=gm+-64|0),32<=(63&fm)>>>0?(fm=Zl<>>32-Gl|Hl<>>0?(im=hm<>>32-Zl|fm<>>0?(gm=0,Zl>>>=fm):(gm=Zl>>>fm,Zl=((1<>>fm),Zl|=hm,fm=gm|im,gm=Gl,Gl=31&jm,Gl=32<=(63&jm)>>>0?(im=gm<>>32-Gl|Hl<>2]=Gl,q[4+a>>2]=Hl,q[8+a>>2]=Zl,q[12+a>>2]=fm}(16+am|0,a,Gl,Hl,_l,bm+-15233|0),Hl=q[4+am>>2],a=q[8+am>>2],_l=q[12+am>>2]<<4|a>>>28,$l=a<<4|Hl>>>28,134217728==(0|(Hl=a=268435455&Hl))&1<=(Gl=q[am>>2]|(0!=(q[16+am>>2]|q[24+am>>2])|0!=(q[20+am>>2]|q[28+am>>2])))>>>0|134217728>>0?((a=$l+1|0)>>>0<1&&(_l=_l+1|0),$l=a):Gl|134217728^Hl||((a=$l+(1&$l)|0)>>>0<$l>>>0&&(_l=_l+1|0),$l=a))):($l=Hl<<4|Gl>>>28,_l=524287&(_l=Zl<<4|Hl>>>28)|2146959360),L=32+am|0,f(0,0|$l),f(1,-2147483648&Zl|_l),+g()}(q[Gl>>2],q[Gl+4>>2],q[Gl+8>>2],q[Gl+12>>2]),v[Cm>>3]=a},n[13]=function(a){return 0},n[14]=function(a,Gl,Cm){Gl|=0,Cm|=0;var Mm,Em,Dm=0,Jm=0,Km=0,Lm=0;for(L=Em=L-32|0,Dm=q[28+(a|=0)>>2],q[16+Em>>2]=Dm,Km=q[a+20>>2],q[28+Em>>2]=Cm,q[24+Em>>2]=Gl,Km=(q[20+Em>>2]=Gl=Km-Dm|0)+Cm|0,Lm=2,Gl=16+Em|0;;){a:{if((Jm=(Dm=0)|K(q[a+60>>2],0|Gl,0|Lm,12+Em|0))&&(q[2094]=Jm,Dm=-1),(0|(Dm=Dm?q[12+Em>>2]=-1:q[12+Em>>2]))==(0|Km))Gl=q[a+44>>2],q[a+28>>2]=Gl,q[a+20>>2]=Gl,q[a+16>>2]=Gl+q[a+48>>2],a=Cm;else{if(-1<(0|Dm))break a;q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0,q[a>>2]=32|q[a>>2],2!=((a=0)|Lm)&&(a=Cm-q[Gl+4>>2]|0)}return L=32+Em|0,0|a}Jm=q[Gl+4>>2],q[(Gl=(Mm=Jm>>>0>>0)?Gl+8|0:Gl)>>2]=(Jm=Dm-(Mm?Jm:0)|0)+q[Gl>>2],q[Gl+4>>2]=q[Gl+4>>2]-Jm,Km=Km-Dm|0,Lm=Lm-Mm|0}},n[15]=function(a,Gl,Cm,Dm){return M=0},{d:function(){},e:function(){return q[1813]},f:function(){return 83951616},g:function(){return 5},h:function(a,tj){return tj|=0,L=tj=L-16|0,a=(a|=0)?sa(a)?(Y(4,2150,0),0):r[a+4|0]:(q[tj+4>>2]=1444,q[tj>>2]=2267,Y(4,1294,tj),0),L=tj+16|0,0|a},i:function(a,tj){var uj;return tj|=0,L=uj=L-48|0,a=(a|=0)?(a+63&-64)!=(0|a)?(q[36+uj>>2]=1522,q[32+uj>>2]=2284,Y(4,1294,32+uj|0),0):(tj+63&-64)==(0|tj)&&tj?function(a,Tk){var nl,Uk=0,Vk=0,Wk=0,Xk=0,Yk=0,Zk=0,_k=0,$k=0,al=0,bl=0,cl=0,dl=0,el=0,fl=0,gl=0,hl=0,il=0,jl=0,kl=0,ll=0,ml=0;L=Yk=(nl=Vk=L)-704&-64;a:if(Tk>>>0<=1343)Y(4,1235,0);else if(sa(a))Y(4,1469,0);else if(Vk=r[0|(ll=a+4|0)]){if(!(6<=Vk>>>0)){(hl=1==(0|!r[a+5|0]))||(da(ll,1),X(a- -64|0,4,160)),ca(Yk- -64|0,0,640),na(a,Yk- -64|0),Vk=a+Tk|0,Tk=q[Yk+64>>2];b:{c:{d:{if(5<=(gl=r[a+4|0])>>>0){if(Tk>>>0>>0|Vk>>>0>>0)break c;if((Xk=Tk+256|0)>>>0>>0)break c;if(Xk>>>0<=Vk>>>0)break d;break c}if(Tk>>>0>>0|Vk>>>0>>0)break c;if((Xk=Tk+128|0)>>>0>>0|Vk>>>0>>0)break c}if(!((Wk=q[Yk+68>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Wk=Wk- -64|0)>>>0>>0|Vk>>>0>>0||(0|(bl=q[Tk>>2]))<0||(Xk=q[Yk+72>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=(Uk=Xk)+(Xk=bl<<2)|0)>>>0>>0|Vk>>>0>>0||(_k=q[Yk+76>>2])>>>0>>0|Vk>>>0<_k>>>0|_k>>>0>>0||(Uk=(bl<<6)+_k|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+80>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+84>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+88>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+92>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+96>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+100>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(0|(Uk=q[Tk+4>>2]))<0||(Xk=q[Yk+104>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Zk=(Wk=Xk)+(Xk=Uk<<2)|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+108>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+(Uk<<6)|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+112>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+116>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+120>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+124>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+128>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+132>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+136>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(0|(Uk=q[Tk+8>>2]))<0||(Xk=q[Yk+140>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=(cl=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+144>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+cl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+148>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+cl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+156>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+cl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+160>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+cl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+164>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+cl|0)>>>0>>0|Vk>>>0>>0||(0|(Uk=q[Tk+12>>2]))<0||(Xk=q[Yk+172>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=(dl=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+176>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+dl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+180>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+dl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+188>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=Xk+dl|0)>>>0>>0|Vk>>>0>>0||(0|(Wk=q[Tk+16>>2]))<0||(Xk=q[Yk+192>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Zk=(Uk=Xk)+(Xk=Wk<<2)|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+196>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+200>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+204>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+208>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+(Wk<<6)|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+212>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+216>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+220>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+228>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+232>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+236>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+240>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+244>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+248>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Uk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+252>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+256>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+260>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+264>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+268>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Wk=q[Yk+272>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(0|(Zk=q[Tk+20>>2]))<0||(Wk=q[Yk+276>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0||(el=(Uk=Wk)+(Wk=Zk<<2)|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+280>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+(Zk<<6)|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+284>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+288>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+292>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+296>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+300>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+308>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+312>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+Wk|0)>>>0>>0|Vk>>>0>>0||(0|(el=q[Tk+24>>2]))<0||(Uk=q[Yk+336>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+(el<<2)|0)>>>0>>0|Vk>>>0>>0||(0|(el=q[Tk+28>>2]))<0||(Uk=q[Yk+340>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=(jl=el<<2)+Uk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+344>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(Zk=Uk+jl|0)>>>0>>0|Vk>>>0>>0||(0|(el=q[Tk+32>>2]))<0||(Uk=q[Yk+356>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=(Zk=el<<2)+Uk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+360>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=Uk+Zk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+364>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=Uk+Zk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+368>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=Uk+Zk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+372>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=Uk+Zk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+376>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=Uk+Zk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+380>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(el=Uk+Zk|0)>>>0>>0|Vk>>>0>>0||(0|($k=q[Tk+36>>2]))<0||(Uk=q[Yk+392>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||($k=(el=$k<<2)+Uk|0)>>>0>>0|Vk>>>0<$k>>>0||(Uk=q[Yk+396>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+el|0)>>>0>>0|Vk>>>0<$k>>>0||(Uk=q[Yk+400>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+el|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+40>>2]))<0||(Uk=q[Yk+412>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<2)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+44>>2]))<0||(Uk=q[Yk+424>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<2)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+48>>2]))<0||(Uk=q[Yk+428>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=(al<<=2)+Uk|0)>>>0>>0|Vk>>>0<$k>>>0||(Uk=q[Yk+432>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+al|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+52>>2]))<0||(Uk=q[Yk+416>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=(al<<=2)+Uk|0)>>>0>>0|Vk>>>0<$k>>>0||(Uk=q[Yk+420>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+al|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+56>>2]))<0||(Uk=q[Yk+552>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<2)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+60>>2]))<0||(Uk=q[Yk+556>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<2)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+64>>2]))<0||(Uk=q[Yk+560>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<1)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+68>>2]))<0||(Uk=q[Yk+564>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<2)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+72>>2]))<0||(Uk=q[Yk+568>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||(al=($k=Uk)+(Uk=al<<2)|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+572>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+576>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+580>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+584>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||($k=Uk+$k|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+76>>2]))<0||(Uk=q[Yk+588>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||(al=($k=al<<2)+Uk|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+592>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||(Uk=q[Yk+596>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0||($k=Uk+$k|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+80>>2]))<0||(Uk=q[Yk+600>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||(fl=($k=Uk)+(Uk=al<<2)|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+604>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=$k+(al<<6)|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+608>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+612>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+616>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+620>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+624>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+628>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||(al=Uk+$k|0)>>>0>>0|Vk>>>0>>0||($k=q[Yk+632>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0||($k=Uk+$k|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+84>>2]))<0||(Uk=q[Yk+636>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<2)|0)>>>0>>0|Vk>>>0<$k>>>0||(Uk=q[Yk+640>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||($k=Uk+(al<<1)|0)>>>0>>0|Vk>>>0<$k>>>0||(0|(al=q[Tk+88>>2]))<0||(Uk=q[Yk+644>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0||(Uk=Uk+(al<<2)|0)>>>0>>0|Vk>>>0>>0)){if(!(gl>>>0<2)){if(($k=q[Yk+168>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0)break c;if((Uk=$k+cl|0)>>>0>>0|Vk>>>0>>0)break c;if(!(gl>>>0<4)){if(($k=q[Yk+324>>2])>>>0>>0|Vk>>>0<$k>>>0|$k>>>0>>0)break c;if(($k=Wk+$k|0)>>>0>>0|Vk>>>0<$k>>>0)break c;if((Uk=q[Yk+328>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0)break c;if(($k=Uk+Wk|0)>>>0>>0|Vk>>>0<$k>>>0)break c;if((Uk=q[Yk+332>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0)break c;if(($k=Uk+Wk|0)>>>0>>0|Vk>>>0<$k>>>0)break c;if((Uk=q[Yk+152>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0<$k>>>0)break c;if((cl=Uk+cl|0)>>>0>>0|Vk>>>0>>0)break c;if((Uk=q[Yk+184>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0)break c;if((cl=Uk+dl|0)>>>0>>0|Vk>>>0>>0)break c;if((Uk=q[Yk+224>>2])>>>0>>0|Vk>>>0>>0|Uk>>>0>>0)break c;if((Uk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(cl=q[Tk+92>>2]))<0)break c;if((Xk=q[Yk+648>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((cl=(Uk=cl<<2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+652>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((cl=Uk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+656>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(cl=q[Tk+96>>2]))<0)break c;if((Xk=q[Yk+660>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((cl=(Uk=cl<<2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+664>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((cl=Uk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+668>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+304>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+316>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+320>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+100>>2]))<0)break c;if((Xk=q[Yk+436>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+440>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+444>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+104>>2]))<0)break c;if((Xk=q[Yk+448>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=(Wk=Xk)+(Xk=Uk<<2)|0)>>>0>>0|Vk>>>0>>0)break c;if((Wk=q[Yk+452>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Wk=q[Yk+456>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Wk=q[Yk+460>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Wk=q[Yk+464>>2])>>>0>>0|Vk>>>0>>0|Wk>>>0>>0)break c;if((Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+108>>2]))<0)break c;if((Xk=q[Yk+480>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+484>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+488>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+112>>2]))<0)break c;if((Xk=q[Yk+504>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+508>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+512>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+116>>2]))<0)break c;if((Xk=q[Yk+528>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=Xk+(Uk<<2)|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+120>>2]))<0)break c;if((Xk=q[Yk+532>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+536>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+540>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((0|(Uk=q[Tk+124>>2]))<0)break c;if((Xk=q[Yk+544>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Wk=(Uk<<=2)+Xk|0)>>>0>>0|Vk>>>0>>0)break c;if((Xk=q[Yk+548>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0)break c;if((Uk=Uk+Xk|0)>>>0>>0|Vk>>>0>>0)break c}}if(gl>>>0<5)break b;if(!((Xk=q[Yk+348>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+jl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+352>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+jl|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+384>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+Zk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+388>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+Zk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+404>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+el|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+408>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Xk+el|0)>>>0>>0|Vk>>>0>>0||(0|(Uk=q[Tk+128>>2]))<0||(Xk=q[Yk+468>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+472>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+476>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(0|(Uk=q[Tk+132>>2]))<0||(Xk=q[Yk+492>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+496>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+500>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Wk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(0|(Uk=q[Tk+136>>2]))<0||(Xk=q[Yk+516>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=(Wk=Uk<<2)+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+520>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Uk=Wk+Xk|0)>>>0>>0|Vk>>>0>>0||(Xk=q[Yk+524>>2])>>>0>>0|Vk>>>0>>0|Xk>>>0>>0||(Xk=Wk+Xk|0)>>>0>>0)&&Xk>>>0<=Vk>>>0)break b}}Y(4,1760,0),da(ll,1),X(a- -64|0,4,160);break a}hl||(ya(a),o[a+5|0]=0,Tk=q[Yk+64>>2],bl=q[Tk>>2],_k=q[Yk+76>>2],gl=r[a+4|0]);f:{if((a=0)<(0|bl)){for(;;){if(63>>0)break f;if((0|bl)==(0|(a=a+1|0)))break}if(Uk=Tk+48|0,(Vk=0)<(0|(a=q[Tk>>2]))){for(Xk=q[Tk+48>>2],Wk=q[Yk+80>>2];;){if((0|(_k=q[Wk+(Vk<<2)>>2]))<0|(0|Xk)<=(0|_k))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(el=Tk+24|0,Xk=q[Tk+24>>2],Zk=q[Yk+88>>2],bl=q[Yk+84>>2],Vk=0;;){if(Wk=q[(_k=Vk<<2)+Zk>>2]){if((0|Wk)<0|(0|Xk)<(0|Wk))break f;if((0|(_k=q[_k+bl>>2]))<0|(0|Xk)<=(0|_k))break f;if((Wk=Wk+_k|0)>>>31|(0|Xk)<(0|Wk))break f}if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+92>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+96>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+100>>2];;){if((0|(Wk=q[Xk+(Vk<<2)>>2]))<-1|(0|a)<=(0|Wk))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}}else el=Tk+24|0}else el=Tk+24|0,Uk=Tk+48|0;if((a=0)<(0|(Vk=q[Tk+4>>2]))){for(Xk=q[Yk+108>>2];;){if(63>>0)break f;if((0|Vk)==(0|(a=a+1|0)))break}if(Zk=(Xk=q[Tk+48>>2])+-1|0,!(((Vk=0)|(a=q[Tk+4>>2]))<=0)){for(Wk=q[Yk+112>>2];;){if((0|(_k=q[Wk+(Vk<<2)>>2]))<0|(0|Xk)<=(0|_k))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+116>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+120>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Xk=q[Tk>>2],Vk=0,Wk=q[Yk+124>>2];;){if((0|(_k=q[Wk+(Vk<<2)>>2]))<-1|(0|Xk)<=(0|_k))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+128>>2];;){if((0|(Wk=q[Xk+(Vk<<2)>>2]))<-1|(0|a)<=(0|Wk))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Xk=q[Yk+132>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Wk=Tk+8|0,_k=Tk+12|0,bl=q[Yk+136>>2],Vk=0;;){if(1<(dl=q[(cl=Vk<<2)+Xk>>2])>>>0)break f;if((0|(cl=q[bl+cl>>2]))<0|(0|cl)>=q[(dl-1|0?Wk:_k)>>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}}}else Zk=q[Uk>>2]+-1|0;if((a=0)<(0|(Vk=q[Tk+8>>2]))){for(Xk=q[Yk+140>>2];;){if((0|(Wk=q[Xk+(a<<2)>>2]))<0|(0|Zk)<(0|Wk))break f;if((0|Vk)==(0|(a=a+1|0)))break}for(jl=Tk+28|0,Xk=q[Tk+28>>2],bl=q[Yk+148>>2],cl=q[Yk+144>>2],a=0;;){if(Wk=q[(_k=a<<2)+bl>>2]){if((0|Wk)<0|(0|Xk)<(0|Wk))break f;if((0|(_k=q[_k+cl>>2]))<0|(0|Xk)<=(0|_k))break f;if((Wk=Wk+_k|0)>>>31|(0|Xk)<(0|Wk))break f}if((0|Vk)==(0|(a=a+1|0)))break}for(a=0,Wk=q[Yk+156>>2],_k=q[Yk+164>>2],bl=q[Yk+160>>2];;){if((0|(cl=q[(Xk=a<<2)+bl>>2]))<1)break f;if((0|(dl=q[Xk+_k>>2]))<1)break f;if((0|(Xk=q[Wk+Xk>>2]))<1|(0|Xk)!=(0|w(dl+1|0,cl+1|0)))break f;if((0|Vk)==(0|(a=a+1|0)))break}}else jl=Tk+28|0;if((a=0)<(0|(Wk=q[Tk+12>>2]))){for(Vk=q[Yk+172>>2];;){if((0|(Xk=q[Vk+(a<<2)>>2]))<0|(0|Zk)<(0|Xk))break f;if((0|Wk)==(0|(a=a+1|0)))break}for($k=Tk+32|0,Vk=q[Tk+32>>2],Zk=q[Yk+180>>2],bl=q[Yk+176>>2],a=0;;){if(Xk=q[(_k=a<<2)+Zk>>2]){if((0|Xk)<0|(0|Vk)<(0|Xk))break f;if((0|(_k=q[_k+bl>>2]))<0|(0|Vk)<=(0|_k))break f;if((Xk=Xk+_k|0)>>>31|(0|Vk)<(0|Xk))break f}if((0|Wk)==(0|(a=a+1|0)))break}}else $k=Tk+32|0;Xk=Tk+16|0;m:{n:{if(!(((a=0)|(Vk=q[Tk+16>>2]))<=0)){for(Wk=q[Yk+208>>2];;){if(63>>0)break f;if((0|Vk)==(0|(a=a+1|0)))break}if(!(((Vk=0)|(a=q[Xk>>2]))<=0)){for(Wk=q[Uk>>2],_k=q[Yk+212>>2];;){if((0|(Zk=q[_k+(Vk<<2)>>2]))<0|(0|Wk)<=(0|Zk))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(ll=Tk+36|0,Wk=q[Tk+36>>2],bl=q[Yk+220>>2],cl=q[Yk+216>>2],Vk=0;;){if(_k=q[(Zk=Vk<<2)+bl>>2]){if((0|_k)<0|(0|Wk)<(0|_k))break f;if((0|(Zk=q[Zk+cl>>2]))<0|(0|Wk)<=(0|Zk))break f;if((_k=_k+Zk|0)>>>31|(0|Wk)<(0|_k))break f}if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Wk=q[Yk+228>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Wk=q[Yk+232>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Wk=q[Tk>>2],Vk=0,_k=q[Yk+236>>2];;){if((0|(Zk=q[_k+(Vk<<2)>>2]))<-1|(0|Wk)<=(0|Zk))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Wk=q[Tk+4>>2],Vk=0,_k=q[Yk+240>>2];;){if((0|(Zk=q[_k+(Vk<<2)>>2]))<-1|(0|Wk)<=(0|Zk))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Wk=q[Yk+244>>2],Vk=0;;){if(q[Wk+(Vk<<2)>>2]<0)break f;if((0|a)==(0|(Vk=Vk+1|0)))break}break n}}_k=Tk+68|0,ll=Tk+36|0;break m}for(Wk=q[Yk+252>>2],Vk=0;;){if(q[Wk+(Vk<<2)>>2]<0)break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(_k=q[Tk+60>>2],Vk=0,Zk=q[Yk+256>>2];;){if((bl=q[(bl=Vk<<2)+Zk>>2]+(q[Wk+bl>>2]<<1)|0)>>>31|(0|_k)<(0|bl))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Wk=q[Tk+64>>2],bl=q[Yk+264>>2],cl=q[Yk+260>>2],Vk=0;;){if(_k=q[(Zk=Vk<<2)+bl>>2]){if((0|_k)<0|(0|Wk)<(0|_k))break f;if((0|(Zk=q[Zk+cl>>2]))<0|(0|Wk)<=(0|Zk))break f;if((_k=_k+Zk|0)>>>31|(0|Wk)<(0|_k))break f}if((0|a)==(0|(Vk=Vk+1|0)))break}for(_k=Tk+68|0,Wk=q[Tk+68>>2],cl=q[Yk+272>>2],dl=q[Yk+268>>2],Vk=0;;){if(Zk=q[(bl=Vk<<2)+cl>>2]){if((0|Zk)<0|(0|Wk)<(0|Zk))break f;if((0|(bl=q[bl+dl>>2]))<0|(0|Wk)<=(0|bl))break f;if((Zk=Zk+bl|0)>>>31|(0|Wk)<(0|Zk))break f}if((0|a)==(0|(Vk=Vk+1|0)))break}}p:{q:{if(!(((a=0)|(Vk=q[Tk+20>>2]))<=0)){for(Wk=q[Yk+280>>2];;){if(63>>0)break f;if((0|Vk)==(0|(a=a+1|0)))break}if(!(((a=0)|(Vk=q[Tk+20>>2]))<=0)){for(Wk=q[Yk+296>>2];;){if(1>2])break f;if((0|Vk)==(0|(a=a+1|0)))break}for(Wk=q[Yk+300>>2],a=0;;){if(q[Wk+(a<<2)>>2]<0)break f;if((0|Vk)==(0|(a=a+1|0)))break}break q}}a=q[Tk+52>>2];break p}for(a=q[Tk+52>>2],cl=q[Yk+312>>2],dl=q[Yk+308>>2],Zk=0;;){if(Wk=q[(bl=Zk<<2)+cl>>2]){if((0|Wk)<0|(0|a)<(0|Wk))break f;if((0|(bl=q[bl+dl>>2]))<0|(0|a)<=(0|bl))break f;if((Wk=Wk+bl|0)>>>31|(0|a)<(0|Wk))break f}if((0|Vk)==(0|(Zk=Zk+1|0)))break}}if(Wk=q[Tk+40>>2],(Vk=0)<(0|(Zk=q[Tk+8>>2])))for(bl=q[Yk+344>>2],cl=q[Yk+156>>2];;){if((dl=q[(dl=Vk<<2)+bl>>2]+(q[cl+dl>>2]<<1)|0)>>>31|(0|Wk)<(0|dl))break f;if((0|Zk)==(0|(Vk=Vk+1|0)))break}if((Vk=0)<(0|(Zk=q[$k>>2]))){for(bl=q[Yk+376>>2];;){if(1>2])break f;if((0|Zk)==(0|(Vk=Vk+1|0)))break}for(Vk=0,bl=q[Yk+380>>2];;){if(1>2])break f;if((0|Zk)==(0|(Vk=Vk+1|0)))break}}if((Vk=0)<(0|(Zk=q[Xk>>2])))for(bl=q[Yk+400>>2],cl=q[Yk+252>>2];;){if((dl=q[(dl=Vk<<2)+bl>>2]+(q[cl+dl>>2]<<1)|0)>>>31|(0|Wk)<(0|dl))break f;if((0|Zk)==(0|(Vk=Vk+1|0)))break}if((Vk=0)<(0|(Wk=q[Tk+44>>2])))for(bl=q[Yk+424>>2];;){if((0|(cl=q[bl+(Vk<<2)>>2]))<0|(0|a)<=(0|cl))break f;if((0|Wk)==(0|(Vk=Vk+1|0)))break}if(1<=(0|(cl=q[Uk>>2])))for(Vk=0,dl=q[Yk+432>>2],al=q[Yk+428>>2];;){if(Uk=q[(bl=Vk<<2)+dl>>2]){if((0|Uk)<0|(0|Wk)<(0|Uk))break f;if((0|(bl=q[al+bl>>2]))<0|(0|Wk)<=(0|bl))break f;if((Uk=Uk+bl|0)>>>31|(0|Wk)<(0|Uk))break f}if((0|cl)==(0|(Vk=Vk+1|0)))break}if(1<=(0|a))for(Wk=q[Tk+56>>2],Vk=0,cl=q[Yk+420>>2],dl=q[Yk+416>>2];;){if(Uk=q[(bl=Vk<<2)+cl>>2]){if((0|Uk)<0|(0|Wk)<(0|Uk))break f;if((0|(bl=q[bl+dl>>2]))<0|(0|Wk)<=(0|bl))break f;if((Uk=Uk+bl|0)>>>31|(0|Wk)<(0|Uk))break f}if((0|(Vk=Vk+1|0))==(0|a))break}if((a=0)<(0|(Vk=q[_k>>2])))for(Wk=q[Yk+564>>2];;){if((0|(_k=q[Wk+(a<<2)>>2]))<-1|(0|Zk)<=(0|_k))break f;if((0|Vk)==(0|(a=a+1|0)))break}if(a=q[Tk+76>>2],1<=(0|(_k=q[Tk+72>>2])))for(Vk=0,Zk=q[Yk+572>>2],bl=q[Yk+568>>2];;){if(Wk=q[(Uk=Vk<<2)+Zk>>2]){if((0|Wk)<0|(0|a)<(0|Wk))break f;if((0|(Uk=q[Uk+bl>>2]))<0|(0|a)<=(0|Uk))break f;if((Wk=Uk+Wk|0)>>>31|(0|a)<(0|Wk))break f}if((0|_k)==(0|(Vk=Vk+1|0)))break}if((Vk=0)<(0|a)){for(Wk=q[Yk+588>>2];;){if(1>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Uk=q[Yk+592>>2],Vk=0;;){if(1<(bl=q[(Zk=Vk<<2)+Wk>>2])>>>0)break f;if((0|(Zk=q[Uk+Zk>>2]))<0|(0|Zk)>=q[(bl-1|0?Xk:Tk)>>2])break f;if((0|a)==(0|(Vk=Vk+1|0)))break}for(Vk=0,Wk=q[Yk+596>>2];;){if((0|(Uk=q[Wk+(Vk<<2)>>2]))<-1|(0|_k)<=(0|Uk))break f;if((0|a)==(0|(Vk=Vk+1|0)))break}}s:{if(!(((a=0)|(Zk=q[Tk+80>>2]))<=0)){for(Vk=q[Yk+604>>2];;){if(63>>0)break f;if((0|Zk)==(0|(a=a+1|0)))break}if(!(((a=0)|(Zk=q[Tk+80>>2]))<=0)){for(Vk=q[Tk+48>>2],Wk=q[Yk+608>>2];;){if((0|(_k=q[Wk+(a<<2)>>2]))<0|(0|Vk)<=(0|_k))break f;if((0|Zk)==(0|(a=a+1|0)))break}for(cl=q[Tk+88>>2],_k=q[Yk+616>>2],Uk=q[Yk+612>>2],a=0;;){if(Vk=q[(Wk=a<<2)+_k>>2]){if((0|Vk)<0|(0|cl)<(0|Vk))break f;if((0|(Wk=q[Uk+Wk>>2]))<0|(0|cl)<=(0|Wk))break f;if((Vk=Vk+Wk|0)>>>31|(0|cl)<(0|Vk))break f}if((0|Zk)==(0|(a=a+1|0)))break}for(Xk=q[Xk>>2],_k=q[Yk+620>>2],a=0;;){if((0|(Vk=q[_k+(a<<2)>>2]))<0|(0|Xk)<=(0|Vk))break f;if((0|Zk)==(0|(a=a+1|0)))break}for(Uk=q[Yk+624>>2],a=0;;){if((0|(Vk=q[Uk+(a<<2)>>2]))<0|(0|Xk)<=(0|Vk))break f;if((0|Zk)==(0|(a=a+1|0)))break}for(Vk=q[Tk+84>>2],bl=q[Yk+632>>2],dl=q[Yk+628>>2],a=0;;){if(Wk=q[(al=a<<2)+bl>>2]){if((0|Wk)<0|(0|Vk)<(0|Wk))break f;if((0|(al=q[al+dl>>2]))<0|(0|Vk)<=(0|al))break f;if((Wk=Wk+al|0)>>>31|(0|Vk)<(0|Wk))break f}if((0|Zk)==(0|(a=a+1|0)))break}for(fl=q[Yk+640>>2],Vk=q[Yk+252>>2],Wk=0;;){if(0<(0|(hl=q[(a=Wk<<2)+bl>>2])))for(al=fl+(q[a+dl>>2]<<1)|0,ml=q[Vk+(q[a+Uk>>2]<<2)>>2],il=q[Vk+(q[a+_k>>2]<<2)>>2],a=0;;){if((0|ml)<=s[al+(2|(kl=a<<1))>>1]|(0|il)<=s[al+kl>>1])break f;if(!((0|(a=a+2|0))<(0|hl)))break}if((0|Zk)==(0|(Wk=Wk+1|0)))break}break s}}Xk=q[Tk+16>>2],cl=q[Tk+88>>2]}if(!((255&gl)>>>0<2)){if((a=0)<(0|(bl=q[Tk+8>>2])))for(Vk=q[Yk+168>>2];;){if(1>2])break f;if((0|bl)==(0|(a=a+1|0)))break}if(!((255&gl)>>>0<4)){if(_k=q[Tk+56>>2],1<=(0|(dl=q[Tk+20>>2])))for(Uk=q[Yk+332>>2],al=q[Yk+328>>2],a=0;;){if(Vk=q[(Wk=a<<2)+Uk>>2]){if((0|Vk)<0|(0|_k)<(0|Vk))break f;if((0|(Wk=q[Wk+al>>2]))<0|(0|_k)<=(0|Wk))break f;if((Vk=Vk+Wk|0)>>>31|(0|_k)<(0|Vk))break f}if((0|dl)==(0|(a=a+1|0)))break}if((0|(a=q[Tk+92>>2]))!=q[Tk+96>>2])break f;if(1<=(0|bl))for(al=q[Yk+152>>2],Vk=0,fl=q[Yk+148>>2];;){if(Wk=q[(Uk=Vk<<2)+fl>>2]){if((0|Wk)<0|(0|a)<(0|Wk))break f;if((0|(Uk=q[Uk+al>>2]))<0|(0|a)<=(0|Uk))break f;if((Wk=Uk+Wk|0)>>>31|(0|a)<(0|Wk))break f}if((0|bl)==(0|(Vk=Vk+1|0)))break}if(1<=(0|(ml=q[Tk+12>>2])))for(al=q[Yk+184>>2],Vk=0,fl=q[Yk+180>>2];;){if(Wk=q[(Uk=Vk<<2)+fl>>2]){if((0|Wk)<0|(0|a)<(0|Wk))break f;if((0|(Uk=q[Uk+al>>2]))<0|(0|a)<=(0|Uk))break f;if((Wk=Uk+Wk|0)>>>31|(0|a)<(0|Wk))break f}if((0|ml)==(0|(Vk=Vk+1|0)))break}if(1<=(0|Xk))for(al=q[Yk+224>>2],Vk=0,fl=q[Yk+220>>2];;){if(Wk=q[(Uk=Vk<<2)+fl>>2]){if((0|Wk)<0|(0|a)<(0|Wk))break f;if((0|(Uk=q[Uk+al>>2]))<0|(0|a)<=(0|Uk))break f;if((Wk=Uk+Wk|0)>>>31|(0|a)<(0|Wk))break f}if((0|Xk)==(0|(Vk=Vk+1|0)))break}if((Vk=0)<(0|dl)){for(Wk=q[Yk+304>>2];;){if(1>2])break f;if((0|dl)==(0|(Vk=Vk+1|0)))break}for(Wk=q[Tk+100>>2],fl=q[Yk+320>>2],hl=q[Yk+316>>2],Vk=0;;){if(Uk=q[(al=Vk<<2)+fl>>2]){if((0|Uk)<0|(0|Wk)<(0|Uk))break f;if((0|(al=q[al+hl>>2]))<0|(0|Wk)<=(0|al))break f;if((Uk=Uk+al|0)>>>31|(0|Wk)<(0|Uk))break f}if((0|dl)==(0|(Vk=Vk+1|0)))break}}else Wk=q[Tk+100>>2];if(1<=(0|Wk)){for(al=q[Yk+440>>2],Vk=0,hl=q[Yk+436>>2];;){if(Uk=q[(fl=Vk<<2)+al>>2]){if((0|Uk)<0|(0|_k)<(0|Uk))break f;if((0|(fl=q[fl+hl>>2]))<0|(0|_k)<=(0|fl))break f;if((Uk=Uk+fl|0)>>>31|(0|_k)<(0|Uk))break f}if((0|Wk)==(0|(Vk=Vk+1|0)))break}for(_k=q[Yk+444>>2],Vk=0;;){if((0|(fl=q[(Uk=Vk<<2)+_k>>2]))<0|(0|fl)>=q[Uk+al>>2])break f;if((0|Wk)==(0|(Vk=Vk+1|0)))break}}if((_k=0)<(0|(Vk=q[Tk+104>>2]))){for(Uk=q[Yk+448>>2];;){if((0|(al=q[Uk+(_k<<2)>>2]))<0|(0|Wk)<=(0|al))break f;if((0|Vk)==(0|(_k=_k+1|0)))break}for(Uk=q[Tk+116>>2],fl=q[Yk+464>>2],hl=q[Yk+460>>2],Wk=0;;){if(_k=q[(al=Wk<<2)+fl>>2]){if((0|_k)<0|(0|Uk)<(0|_k))break f;if((0|(al=q[al+hl>>2]))<0|(0|Uk)<=(0|al))break f;if((_k=_k+al|0)>>>31|(0|Uk)<(0|_k))break f}if((0|Vk)==(0|(Wk=Wk+1|0)))break}}else Uk=q[Tk+116>>2];if((Wk=0)<(0|(al=q[Tk+108>>2]))){for(_k=q[Yk+480>>2];;){if((0|(fl=q[_k+(Wk<<2)>>2]))<0|(0|bl)<=(0|fl))break f;if((0|al)==(0|(Wk=Wk+1|0)))break}for(fl=q[Yk+488>>2],il=q[Yk+484>>2],Wk=0;;){if(_k=q[(bl=Wk<<2)+fl>>2]){if((0|_k)<0|(0|Vk)<(0|_k))break f;if((0|(bl=q[bl+il>>2]))<0|(0|Vk)<=(0|bl))break f;if((_k=_k+bl|0)>>>31|(0|Vk)<(0|_k))break f}if((0|al)==(0|(Wk=Wk+1|0)))break}for(fl=q[jl>>2],Wk=q[Yk+456>>2],bl=q[Yk+452>>2],_k=0;;){if(kl=q[il+(_k<<2)>>2]<<2,hl=q[kl+Wk>>2]){if((0|hl)<0|(0|fl)<(0|hl))break f;if((0|(kl=q[bl+kl>>2]))<0|(0|fl)<=(0|kl))break f;if((0|(hl=hl+kl|0))<0|(0|fl)<(0|hl))break f}if((0|al)==(0|(_k=_k+1|0)))break}}else Wk=q[Yk+456>>2],bl=q[Yk+452>>2];if((_k=0)<(0|(al=q[Tk+112>>2]))){for(fl=q[Yk+504>>2];;){if((0|(hl=q[fl+(_k<<2)>>2]))<0|(0|Xk)<=(0|hl))break f;if((0|al)==(0|(_k=_k+1|0)))break}for(il=q[Yk+512>>2],hl=q[Yk+508>>2],Xk=0;;){if(_k=q[(fl=Xk<<2)+il>>2]){if((0|_k)<0|(0|Vk)<(0|_k))break f;if((0|(fl=q[fl+hl>>2]))<0|(0|Vk)<=(0|fl))break f;if((_k=_k+fl|0)>>>31|(0|Vk)<(0|_k))break f}if((0|al)==(0|(Xk=Xk+1|0)))break}for(_k=q[ll>>2],Xk=0;;){if(il=q[hl+(Xk<<2)>>2]<<2,fl=q[il+Wk>>2]){if((0|fl)<0|(0|_k)<(0|fl))break f;if((0|(il=q[bl+il>>2]))<0|(0|_k)<=(0|il))break f;if((0|(fl=fl+il|0))<0|(0|_k)<(0|fl))break f}if((0|al)==(0|(Xk=Xk+1|0)))break}}if(_k=q[Tk+120>>2],(Xk=0)<(0|Uk))for(al=q[Yk+528>>2];;){if((0|(fl=q[al+(Xk<<2)>>2]))<0|(0|_k)<=(0|fl))break f;if((0|(Xk=Xk+1|0))==(0|Uk))break}if((Xk=0)<(0|_k)){for(Uk=q[Yk+532>>2];;){if((0|(al=q[Uk+(Xk<<2)>>2]))<-1|(0|dl)<=(0|al))break f;if((0|_k)==(0|(Xk=Xk+1|0)))break}for(Uk=q[Tk+124>>2],fl=q[Yk+540>>2],hl=q[Yk+536>>2],Xk=0;;){if(dl=q[(al=Xk<<2)+fl>>2]){if((0|dl)<0|(0|Uk)<(0|dl))break f;if((0|(al=q[al+hl>>2]))<0|(0|Uk)<=(0|al))break f;if((dl=al+dl|0)>>>31|(0|Uk)<(0|dl))break f}if((0|_k)==(0|(Xk=Xk+1|0)))break}}if(!((255&gl)>>>0<5)){if((Xk=0)<(0|(gl=q[jl>>2]))){for(_k=q[Yk+348>>2];;){if((0|(Uk=q[_k+(Xk<<2)>>2]))<0|(0|a)<(0|Uk))break f;if((0|gl)==(0|(Xk=Xk+1|0)))break}for(_k=q[Yk+352>>2],Xk=0;;){if((0|(Uk=q[_k+(Xk<<2)>>2]))<0|(0|a)<(0|Uk))break f;if((0|gl)==(0|(Xk=Xk+1|0)))break}}if((gl=0)<(0|(Xk=q[$k>>2]))){for(_k=q[Yk+384>>2];;){if((0|(Uk=q[_k+(gl<<2)>>2]))<0|(0|a)<(0|Uk))break f;if((0|Xk)==(0|(gl=gl+1|0)))break}for(_k=q[Yk+388>>2],gl=0;;){if((0|(Uk=q[_k+(gl<<2)>>2]))<0|(0|a)<(0|Uk))break f;if((0|Xk)==(0|(gl=gl+1|0)))break}}if((gl=0)<(0|(_k=q[ll>>2]))){for(Uk=q[Yk+404>>2];;){if((0|(dl=q[Uk+(gl<<2)>>2]))<0|(0|a)<(0|dl))break f;if((0|_k)==(0|(gl=gl+1|0)))break}for(Uk=q[Yk+408>>2],gl=0;;){if((0|(dl=q[Uk+(gl<<2)>>2]))<0|(0|a)<(0|dl))break f;if((0|_k)==(0|(gl=gl+1|0)))break}}if((a=0)<(0|(gl=q[Tk+128>>2]))){for(_k=q[Tk>>2],Uk=q[Yk+468>>2];;){if((0|(dl=q[Uk+(a<<2)>>2]))<0|(0|_k)<=(0|dl))break f;if((0|gl)==(0|(a=a+1|0)))break}for(jl=q[Yk+476>>2],dl=q[Yk+472>>2],a=0;;){if(_k=q[(Uk=a<<2)+jl>>2]){if((0|_k)<0|(0|Vk)<(0|_k))break f;if((0|(Uk=q[Uk+dl>>2]))<0|(0|Vk)<=(0|Uk))break f;if((_k=Uk+_k|0)>>>31|(0|Vk)<(0|_k))break f}if((0|gl)==(0|(a=a+1|0)))break}for(_k=q[el>>2],a=0;;){if(el=q[dl+(a<<2)>>2]<<2,Uk=q[el+Wk>>2]){if((0|Uk)<0|(0|_k)<(0|Uk))break f;if((0|(el=q[bl+el>>2]))<0|(0|_k)<=(0|el))break f;if((0|(Uk=Uk+el|0))<0|(0|_k)<(0|Uk))break f}if((0|gl)==(0|(a=a+1|0)))break}}if((a=0)<(0|(gl=q[Tk+132>>2]))){for(_k=q[Yk+492>>2];;){if((0|(Uk=q[_k+(a<<2)>>2]))<0|(0|ml)<=(0|Uk))break f;if((0|gl)==(0|(a=a+1|0)))break}for(el=q[Yk+500>>2],Uk=q[Yk+496>>2],a=0;;){if(_k=q[(dl=a<<2)+el>>2]){if((0|_k)<0|(0|Vk)<(0|_k))break f;if((0|(dl=q[Uk+dl>>2]))<0|(0|Vk)<=(0|dl))break f;if((_k=_k+dl|0)>>>31|(0|Vk)<(0|_k))break f}if((0|gl)==(0|(a=a+1|0)))break}for(a=0;;){if(dl=q[Uk+(a<<2)>>2]<<2,_k=q[dl+Wk>>2]){if((0|_k)<0|(0|Xk)<(0|_k))break f;if((0|(dl=q[bl+dl>>2]))<0|(0|Xk)<=(0|dl))break f;if((0|(_k=_k+dl|0))<0|(0|Xk)<(0|_k))break f}if((0|gl)==(0|(a=a+1|0)))break}}if(!(((a=0)|(Tk=q[Tk+136>>2]))<=0)){for(Xk=q[Yk+516>>2];;){if((0|(gl=q[Xk+(a<<2)>>2]))<0|(0|Zk)<=(0|gl))break f;if((0|Tk)==(0|(a=a+1|0)))break}for(_k=q[Yk+524>>2],Xk=q[Yk+520>>2],a=0;;){if(Yk=q[(gl=a<<2)+_k>>2]){if((0|Yk)<0|(0|Vk)<(0|Yk))break f;if((0|(gl=q[Xk+gl>>2]))<0|(0|Vk)<=(0|gl))break f;if((Yk=Yk+gl|0)>>>31|(0|Vk)<(0|Yk))break f}if((0|Tk)==(0|(a=a+1|0)))break}for(a=0;;){if(Yk=q[Xk+(a<<2)>>2]<<2,Vk=q[Yk+Wk>>2]){if((0|Vk)<0|(0|cl)<(0|Vk))break f;if((0|(Yk=q[Yk+bl>>2]))<0|(0|cl)<=(0|Yk))break f;if((0|(Vk=Vk+Yk|0))<0|(0|cl)<(0|Vk))break f}if((0|Tk)==(0|(a=a+1|0)))break}}}}}return L=nl,1}return Y(4,1846,0),L=nl,0}q[Yk+52>>2]=Vk,q[Yk+48>>2]=5,Y(4,1640,Yk+48|0)}else q[Yk+32>>2]=Vk,Y(4,1554,Yk+32|0);return L=nl,0}(a,tj):(q[20+uj>>2]=1621,q[16+uj>>2]=2284,Y(4,1294,16+uj|0),0):(q[4+uj>>2]=1444,q[uj>>2]=2284,Y(4,1294,uj),0),L=48+uj|0,0|a},j:function(a){q[1813]=a|=0},k:function(a,cj){var dj;return cj|=0,L=dj=L-48|0,a=(a|=0)?(a+63&-64)!=(0|a)?(q[36+dj>>2]=1522,q[32+dj>>2]=2305,Y(4,1294,32+dj|0),0):(cj+63&-64)==(0|cj)&&cj?function(a){var Ok,Rk,Sk,Rh,Ik=0,Jk=0,Kk=0,Lk=0,Mk=0,Nk=0,Pk=0,Qk=0;q[24+(L=Ok=L-32|0)>>2]=0,q[16+Ok>>2]=5,q[20+Ok>>2]=1,Ka(16+(L=Rh=L-272|0)|0,2227,q[12+Rh>>2]=16+Ok|0),function(a){var Dc;q[(L=Dc=L-16|0)>>2]=a,function(a,Gl){var Hl;q[12+(L=Hl=L-16|0)>>2]=Gl,Ia(a,1432,Gl,0,0),L=16+Hl|0}(q[978],Dc),L=16+Dc|0}(16+Rh|0),L=272+Rh|0;a:{if(sa(a))Y(4,1932,0);else{if(!(6<=(Kk=r[a+4|0])>>>0)){if(1!=(0|!r[a+5|0])?(da(a+4|0,1),X(a- -64|0,4,160),na(a,a+704|(o[a+5|0]=0)),ya(a)):na(a,a+704|0),r[7256]||(q[1815]=6,o[7256]=1,q[1816]=7,q[1817]=8,q[1818]=9),Jk=q[a+704>>2],1<=(0|(Kk=q[Jk+16>>2]))){for(Qk=(Lk=q[a+912>>2])+(Kk<<2)|0,Mk=q[a+908>>2];;){Pk=q[a+1204>>2]+(q[Mk>>2]<<2)|0;d:if(!(((Jk=0)|(Ik=(Kk=q[Lk>>2])+-1|0))<1))e:for(;;){for(;;){if(q[(Nk=Pk+(Jk<<2)|0)>>2]<=-1){if(function(a,Tk,ol){var pl=0,ql=0;a:if((0|a)!=(0|Tk)){if(!(a>>>0>>0&&Tk>>>0<(ql=a+ol|0)>>>0))return $(a,Tk,ol);if(pl=3&(a^Tk),a>>>0>>0){if(!pl){if(3&a)for(;;){if(!ol)break a;if(o[0|a]=r[0|Tk],Tk=Tk+1|0,ol=ol+-1|0,!(3&(a=a+1|0)))break}if(!(ol>>>0<=3)){for(pl=ol;q[a>>2]=q[Tk>>2],Tk=Tk+4|0,a=a+4|0,3<(pl=pl+-4|0)>>>0;);ol&=3}}if(ol)for(;o[0|a]=r[0|Tk],a=a+1|0,Tk=Tk+1|0,ol=ol+-1|0;);}else{if(!pl){if(3&ql)for(;;){if(!ol)break a;if(o[0|(pl=(ol=ol+-1|0)+a|0)]=r[Tk+ol|0],!(3&pl))break}if(!(ol>>>0<=3))for(;q[(ol=ol+-4|0)+a>>2]=q[Tk+ol>>2],3
    >>0;);}if(ol)for(;o[(ol=ol+-1|0)+a|0]=r[Tk+ol|0],ol;);}}}(Nk,Nk+4|0,(-1^Jk)+Kk<<2),(0|Jk)<(0|(Ik=(Kk=Ik)+-1|0)))continue e;break d}if(!((0|(Jk=Jk+1|0))<(0|Ik)))break}break}if(Jk=Lk,0<(0|Kk)&&(Kk=q[Pk+(Ik<<2)>>2]<0?Ik:Kk),q[Jk>>2]=Kk,Mk=Mk+4|0,!((Lk=Lk+4|0)>>>0>>0))break}Jk=q[a+704>>2]}if(1<=q[Jk>>2])for(Ik=0;q[q[a+712>>2]+(Ik<<2)>>2]=q[a+716>>2]+(Ik<<6),Jk=q[a+704>>2],(0|(Ik=Ik+1|0))>2];);if(1<=q[Jk+4>>2])for(Ik=0;q[q[a+744>>2]+(Ik<<2)>>2]=q[a+748>>2]+(Ik<<6),Jk=q[a+704>>2],(0|(Ik=Ik+1|0))>2];);if(1<=q[Jk+16>>2])for(Ik=0;q[(Kk=Ik<<2)+q[a+832>>2]>>2]=q[a+848>>2]+(Ik<<6),q[Kk+q[a+836>>2]>>2]=q[a+1196>>2]+(q[Kk+q[a+896>>2]>>2]<<2),q[Kk+q[a+840>>2]>>2]=q[a+1200>>2]+(q[Kk+q[a+900>>2]>>2]<<1),q[Kk+q[a+844>>2]>>2]=q[a+1204>>2]+(q[Kk+q[a+908>>2]>>2]<<2),Jk=q[a+704>>2],(0|(Ik=Ik+1|0))>2];);if(1<=q[Jk+20>>2])for(Ik=0;q[q[a+916>>2]+(Ik<<2)>>2]=q[a+920>>2]+(Ik<<6),Jk=q[a+704>>2],(0|(Ik=Ik+1|0))>2];);if(1<=q[Jk+80>>2])for(Ik=0;q[q[a+1240>>2]+(Ik<<2)>>2]=q[a+1244>>2]+(Ik<<6),Jk=q[a+704>>2],(0|(Ik=Ik+1|0))>2];);if(1&o[q[a+708>>2]+20|0])break a;if((0|(Lk=q[Jk+16>>2]))<1)break a;for(Ik=q[a+904>>2],Pk=q[a+900>>2],Nk=q[a+1200>>2],Mk=0;;){if(0<(0|(Qk=q[(Kk=Mk<<2)+Ik>>2]+-1|0)))for(Rk=Nk+(q[Kk+Pk>>2]<<1)|0,Jk=0;Sk=s[(Kk=Rk+(Jk<<1)|0)>>1],p[Kk>>1]=s[Kk+4>>1],p[Kk+4>>1]=Sk,(0|(Jk=Jk+3|0))<(0|Qk););if((0|Lk)==(0|(Mk=Mk+1|0)))break}for(Kk=q[a+892>>2],Mk=q[a+896>>2],Pk=q[a+1196>>2],Ik=0;;){if(1<=(0|(Nk=q[(Jk=Ik<<2)+Kk>>2])))for(Nk=(Jk=Pk+(q[Jk+Mk>>2]<<2)|0)+(Nk<<3)|0,Jk=Jk+4|0;u[Jk>>2]=x(1)-u[Jk>>2],(Jk=Jk+8|0)>>>0>>0;);if((0|Lk)==(0|(Ik=Ik+1|0)))break}break a}q[4+Ok>>2]=Kk,q[Ok>>2]=5,Y(4,2023,Ok)}a=0}return L=32+Ok|0,a}(a):(q[20+dj>>2]=1621,q[16+dj>>2]=2305,Y(4,1294,16+dj|0),0):(q[4+dj>>2]=1444,q[dj>>2]=2305,Y(4,1294,dj),0),L=48+dj|0,0|a},l:function(a,cj,dj,ej){var fj;cj|=0,dj|=0,ej|=0,L=fj=L+-64|0,(a|=0)?cj?dj?ej?(a=q[q[a>>2]+708>>2],q[cj>>2]=q[a+12>>2],q[cj+4>>2]=q[a+16>>2],q[dj>>2]=q[a+4>>2],q[dj+4>>2]=q[a+8>>2],q[ej>>2]=q[a>>2]):(q[52+fj>>2]=1995,q[48+fj>>2]=2325,Y(4,1294,48+fj|0)):(q[36+fj>>2]=1903,q[32+fj>>2]=2325,Y(4,1294,32+fj|0)):(q[20+fj>>2]=1819,q[16+fj>>2]=2325,Y(4,1294,16+fj|0)):(q[4+fj>>2]=1740,q[fj>>2]=2325,Y(4,1294,fj)),L=64+fj|0},m:xa,n:wa,o:function(a){var bj;L=bj=L-16|0,(a|=0)?ua(a):(q[4+bj>>2]=1740,q[bj>>2]=2387,Y(4,1294,bj)),L=16+bj|0},p:function(a){var aj;return L=aj=L-16|0,a=(a|=0)?q[a+540>>2]:(q[4+aj>>2]=1740,q[aj>>2]=2402,Y(4,1294,aj),-1),L=16+aj|0,0|a},q:function(a){var $i;return L=$i=L-16|0,a=(a|=0)?q[q[a>>2]+916>>2]:(q[4+$i>>2]=1740,q[$i>>2]=2423,Y(4,1294,$i),0),L=16+$i|0,0|a},r:function(a){var _i;return L=_i=L-16|0,a=(a|=0)?q[a+548>>2]:(q[4+_i>>2]=1740,q[_i>>2]=2442,Y(4,1294,_i),0),L=16+_i|0,0|a},s:function(a){var Zi;return L=Zi=L-16|0,a=(a|=0)?q[q[a>>2]+928>>2]:(q[4+Zi>>2]=1740,q[Zi>>2]=2463,Y(4,1294,Zi),0),L=16+Zi|0,0|a},t:function(a){var Yi;return L=Yi=L-16|0,a=(a|=0)?q[q[a>>2]+924>>2]:(q[4+Yi>>2]=1740,q[Yi>>2]=2492,Y(4,1294,Yi),0),L=16+Yi|0,0|a},u:function(a){var Xi;return L=Xi=L-16|0,a=(a|=0)?q[q[a>>2]+932>>2]:(q[4+Xi>>2]=1740,q[Xi>>2]=2521,Y(4,1294,Xi),0),L=16+Xi|0,0|a},v:function(a){var Wi;return L=Wi=L-16|0,a=(a|=0)?q[a+552>>2]:(q[4+Wi>>2]=1740,q[Wi>>2]=2550,Y(4,1294,Wi),0),L=16+Wi|0,0|a},w:function(a){var Vi;return L=Vi=L-16|0,a=(a|=0)?q[q[a>>2]+936>>2]:(q[4+Vi>>2]=1740,q[Vi>>2]=2572,Y(4,1294,Vi),0),L=16+Vi|0,0|a},x:function(a){var Ui;return L=Ui=L-16|0,a=(a|=0)?q[a+4>>2]:(q[4+Ui>>2]=1740,q[Ui>>2]=2595,Y(4,1294,Ui),-1),L=16+Ui|0,0|a},y:function(a){var Ti;return L=Ti=L-16|0,a=(a|=0)?q[q[a>>2]+712>>2]:(q[4+Ti>>2]=1740,q[Ti>>2]=2611,Y(4,1294,Ti),0),L=16+Ti|0,0|a},z:function(a){var Si;return L=Si=L-16|0,a=(a|=0)?q[a+52>>2]:(q[4+Si>>2]=1740,q[Si>>2]=2625,Y(4,1294,Si),0),L=16+Si|0,0|a},A:function(a){var Ri;return L=Ri=L-16|0,a=(a|=0)?q[q[a>>2]+740>>2]:(q[4+Ri>>2]=1740,q[Ri>>2]=2645,Y(4,1294,Ri),0),L=16+Ri|0,0|a},B:function(a){var Qi;return L=Qi=L-16|0,a=(a|=0)?q[a+332>>2]:(q[4+Qi>>2]=1740,q[Qi>>2]=2673,Y(4,1294,Qi),-1),L=16+Qi|0,0|a},C:function(a){var Pi;return L=Pi=L-16|0,a=(a|=0)?q[q[a>>2]+832>>2]:(q[4+Pi>>2]=1740,q[Pi>>2]=2693,Y(4,1294,Pi),0),L=16+Pi|0,0|a},D:function(a){var Oi;return L=Oi=L-16|0,a=(a|=0)?q[q[a>>2]+888>>2]:(q[4+Oi>>2]=1740,q[Oi>>2]=2711,Y(4,1294,Oi),0),L=16+Oi|0,0|a},E:function(a){var Ni;return L=Ni=L-16|0,a=(a|=0)?q[a+432>>2]:(q[4+Ni>>2]=1740,q[Ni>>2]=2739,Y(4,1294,Ni),0),L=16+Ni|0,0|a},F:function(a){var Mi;return L=Mi=L-16|0,a=(a|=0)?q[q[a>>2]+884>>2]:(q[4+Mi>>2]=1740,q[Mi>>2]=2766,Y(4,1294,Mi),0),L=16+Mi|0,0|a},G:function(a){var Li;return L=Li=L-16|0,a=(a|=0)?q[a+440>>2]:(q[4+Li>>2]=1740,q[Li>>2]=2795,Y(4,1294,Li),0),L=16+Li|0,0|a},H:function(a){var Ki;return L=Ki=L-16|0,a=(a|=0)?q[a+436>>2]:(q[4+Ki>>2]=1740,q[Ki>>2]=2820,Y(4,1294,Ki),0),L=16+Ki|0,0|a},I:function(a){var Ji;return L=Ji=L-16|0,a=(a|=0)?q[a+448>>2]:(q[4+Ji>>2]=1740,q[Ji>>2]=2847,Y(4,1294,Ji),0),L=16+Ji|0,0|a},J:function(a){var Ii;return L=Ii=L-16|0,a=(a|=0)?q[q[a>>2]+912>>2]:(q[4+Ii>>2]=1740,q[Ii>>2]=2871,Y(4,1294,Ii),0),L=16+Ii|0,0|a},K:function(a){var Hi;return L=Hi=L-16|0,a=(a|=0)?q[q[a>>2]+844>>2]:(q[4+Hi>>2]=1740,q[Hi>>2]=2896,Y(4,1294,Hi),0),L=16+Hi|0,0|a},L:function(a){var Gi;return L=Gi=L-16|0,a=(a|=0)?q[q[a>>2]+892>>2]:(q[4+Gi>>2]=1740,q[Gi>>2]=2916,Y(4,1294,Gi),0),L=16+Gi|0,0|a},M:function(a){var qi;return L=qi=L-16|0,a=(a|=0)?q[a+444>>2]:(q[4+qi>>2]=1740,q[qi>>2]=2943,Y(4,1294,qi),0),L=16+qi|0,0|a},N:function(a){var pi;return L=pi=L-16|0,a=(a|=0)?q[q[a>>2]+836>>2]:(q[4+pi>>2]=1740,q[pi>>2]=2973,Y(4,1294,pi),0),L=16+pi|0,0|a},O:function(a){var oi;return L=oi=L-16|0,a=(a|=0)?q[q[a>>2]+904>>2]:(q[4+oi>>2]=1740,q[oi>>2]=2997,Y(4,1294,oi),0),L=16+oi|0,0|a},P:function(a){var ni;return L=ni=L-16|0,a=(a|=0)?q[q[a>>2]+840>>2]:(q[4+ni>>2]=1740,q[ni>>2]=3023,Y(4,1294,ni),0),L=16+ni|0,0|a},Q:function(a){var mi;return L=mi=L-16|0,a=(a|=0)?q[a+452>>2]:(q[4+mi>>2]=1740,q[mi>>2]=3045,Y(4,1294,mi),0),L=16+mi|0,0|a},R:function(a){var li;return L=li=L-16|0,a=(a|=0)?q[a+456>>2]:(q[4+li>>2]=1740,q[li>>2]=3074,Y(4,1294,li),0),L=16+li|0,0|a},S:function(a){var ki;return L=ki=L-16|0,a=(a|=0)?q[q[a>>2]+876>>2]:(q[4+ki>>2]=1740,q[ki>>2]=3101,Y(4,1294,ki),0),L=16+ki|0,0|a},T:function(a){var ji;L=ji=L-16|0,(a|=0)?q[a+428>>2]=1:(q[4+ji>>2]=1740,q[ji>>2]=3133,Y(4,1294,ji)),L=16+ji|0},U:function(a){var ii;return L=ii=L-16|0,a=(a|=0)?q[a+640>>2]:(q[4+ii>>2]=1740,q[ii>>2]=3162,Y(4,1294,ii),0),L=16+ii|0,0|a},V:function(a){var hi;return L=hi=L-16|0,a=(a|=0)?q[a+636>>2]:(q[4+hi>>2]=1740,q[hi>>2]=3187,Y(4,1294,hi),0),L=16+hi|0,0|a},W:function(a){var Cc;return oa(12+(L=Cc=L-16|0)|0,64,a|=0),L=16+Cc|0,q[12+Cc>>2]},X:function(a){var Ln,Jn,Kn=0;return L=Jn=L-16|0,!(a|=0)||oa(12+Jn|0,16,Ln=xa(a))||(Kn=wa(a,q[12+Jn>>2],Ln))||(pa(q[12+Jn>>2]),Kn=0),L=16+Jn|0,0|Kn},Y:function(a){return 0|qa(a|=0)},Z:function(a){pa(a|=0)},_:function(a){var rn;oa(12+(L=rn=L-16|0)|0,64,a|=0),pa(q[12+rn>>2]),L=16+rn|0},$:function(){return 0|L},aa:function(a){return 0|(L=L-(0|a)&-16)},ba:function(a){L=0|a},ca:function(a){return 0|(a=0|(a|=0),(P=0|N())<(a=P+(a|=0)|0)&&a<65536&&(a=new ArrayBuffer(w(a,65536)),(S=new global.Int8Array(a)).set(o),o=S,o=new global.Int8Array(a),p=new global.Int16Array(a),q=new global.Int32Array(a),r=new global.Uint8Array(a),s=new global.Uint16Array(a),t=new global.Uint32Array(a),u=new global.Float32Array(a),v=new global.Float64Array(a),buffer=a,m.buffer=a),P);var S,P},da:function(a,Tk){n[a|=0](Tk|=0)}};function X(a,b,c){var e,f,d=0;if(c)for(;;){if(c=c+-1|0,a>>>0<(d=(e=a+b|0)-1|0)>>>0)for(;f=r[0|a],o[0|a]=r[0|d],o[0|d]=f,(a=a+1|0)>>>0<(d=d+-1|0)>>>0;);if(a=e,!c)break}}function Y(a,b,c){var g;L=g=L-272|0,t[1812]>a>>>0||(a=q[1813])&&(Ka(16+g|0,b,q[12+g>>2]=c),n[a](16+g|0)),L=272+g|0}function Z(a,b,c){32&r[0|a]||!function(a,Gl,Pm){var Qm=0,Rm=0,Sm=0;a:{if(!(Qm=q[Pm+16>>2])){if(function(a){var Pm;return Pm=r[a+74|0],o[a+74|0]=Pm+-1|Pm,8&(Pm=q[a>>2])?(q[a>>2]=32|Pm,1):(q[a+4>>2]=0,q[a+8>>2]=0,Pm=q[a+44>>2],q[a+28>>2]=Pm,q[a+20>>2]=Pm,q[a+16>>2]=Pm+q[a+48>>2],0)}(Pm))break a;Qm=q[Pm+16>>2]}if(Qm-(Sm=q[Pm+20>>2])>>>0>>0)return n[q[Pm+36>>2]](Pm,a,Gl);b:if(!(o[Pm+75|0]<0)){for(Qm=Gl;;){if(!(Rm=Qm))break b;if(10==r[(Qm=Rm+-1|0)+a|0])break}if(n[q[Pm+36>>2]](Pm,a,Rm)>>>0>>0)break a;Gl=Gl-Rm|0,a=a+Rm|0,Sm=q[Pm+20>>2]}$(Sm,a,Gl),q[Pm+20>>2]=q[Pm+20>>2]+Gl}}(b,c,a)}function _(a,b,c,h,i){var k,l,j;if(L=j=L-256|0,!(73728&i|(0|c)<=(0|h))){if(ca(j,b,(k=(i=c-h|0)>>>0<256)?i:256),b=a,l=j,!k){for(c=c-h|0;Z(a,j,256),255<(i=i+-256|0)>>>0;);i=255&c}Z(b,l,i)}L=256+j|0}function $(a,b,c){var h,i=0;if(8192<=c>>>0)I(0|a,0|b,0|c);else{if(h=a+c|0,3&(a^b))if(h>>>0<4)c=a;else if((i=h-4|0)>>>0>>0)c=a;else for(c=a;o[0|c]=r[0|b],o[c+1|0]=r[b+1|0],o[c+2|0]=r[b+2|0],o[c+3|0]=r[b+3|0],b=b+4|0,(c=c+4|0)>>>0<=i>>>0;);else{b:if((0|c)<1)c=a;else if(3&a)for(c=a;;){if(o[0|c]=r[0|b],b=b+1|0,h>>>0<=(c=c+1|0)>>>0)break b;if(!(3&c))break}else c=a;if(!((a=-4&h)>>>0<64||(i=a+-64|0)>>>0>>0))for(;q[c>>2]=q[b>>2],q[c+4>>2]=q[b+4>>2],q[c+8>>2]=q[b+8>>2],q[c+12>>2]=q[b+12>>2],q[c+16>>2]=q[b+16>>2],q[c+20>>2]=q[b+20>>2],q[c+24>>2]=q[b+24>>2],q[c+28>>2]=q[b+28>>2],q[c+32>>2]=q[b+32>>2],q[c+36>>2]=q[b+36>>2],q[c+40>>2]=q[b+40>>2],q[c+44>>2]=q[b+44>>2],q[c+48>>2]=q[b+48>>2],q[c+52>>2]=q[b+52>>2],q[c+56>>2]=q[b+56>>2],q[c+60>>2]=q[b+60>>2],b=b- -64|0,(c=c- -64|0)>>>0<=i>>>0;);if(!(a>>>0<=c>>>0))for(;q[c>>2]=q[b>>2],b=b+4|0,(c=c+4|0)>>>0>>0;);}if(c>>>0>>0)for(;o[0|c]=r[0|b],b=b+1|0,(0|h)!=(0|(c=c+1|0)););}}function aa(a){var b,c;return x((b=a*a)*b*(c=b*a)*(2718311493989822e-21*b-.00019839334836096632)+(c*(.008333329385889463*b-.16666666641626524)+a))}function ba(a){var m;return x(-.499999997251031*(a*=a)+1+.04166662332373906*(m=a*a)+a*m*(2439044879627741e-20*a-.001388676377460993))}function ca(a,n,p){var r,s,t,u;if(p&&(o[(r=a+p|0)-1|0]=n,o[0|a]=n,!(p>>>0<3||(o[r-2|0]=n,o[a+1|0]=n,o[r-3|0]=n,o[a+2|0]=n,p>>>0<7)||(o[r-4|0]=n,o[a+3|0]=n,p>>>0<9)||(s=(r=0-a&3)+a|0,n=w(255&n,16843009),q[s>>2]=n,q[(r=(p=p-r&-4)+s|0)-4>>2]=n,p>>>0<9)||(q[8+s>>2]=n,q[4+s>>2]=n,q[r-8>>2]=n,q[r-12>>2]=n,p>>>0<25)||(q[24+s>>2]=n,q[20+s>>2]=n,q[16+s>>2]=n,q[12+s>>2]=n,q[r-16>>2]=n,q[r-20>>2]=n,q[r-24>>2]=n,q[r-28>>2]=n,(p=p-(u=4&s|24)|0)>>>0<32))))for(t=r=n,n=s+u|0;q[n+24>>2]=t,q[n+28>>2]=r,q[n+16>>2]=t,q[n+20>>2]=r,q[n+8>>2]=t,q[n+12>>2]=r,q[n>>2]=t,q[n+4>>2]=r,n=n+32|0,31<(p=p+-32|0)>>>0;);return a}function da(a,n){var p;if(a>>>0<(n=(a+n|0)-1|0)>>>0)for(;p=r[0|a],o[0|a]=r[0|n],o[0|n]=p,(a=a+1|0)>>>0<(n=n+-1|0)>>>0;);}function ea(a){var n,o=N();return(a=(n=q[2224])+a|0)>>>0<=o<<16>>>0||J(0|a)?(q[2224]=a,n):(q[2094]=48,-1)}function fa(a,v,y,z,B,C,D){var H,I,K,N,Q,R,S,O,P,J,E=0,F=x(0),G=x(0),M=x(0);if(x(0),x(0),x(0),x(0),L=J=L-16|0,1<=(0|a))for(R=w(a,12)+v|0;;){if(1<=(0|(I=q[v+4>>2])))for(S=(a=q[v+8>>2])+w(I,48)|0,I=(H=q[v>>2]<<4)+D|0,K=(8|H)+D|0,H=(4|H)+D|0;(E=q[a+8>>2])&&((O=E+-1|0)>>>0<=1?(P=(q[a+4>>2]<<2)+y|0,E=q[P+(q[a+12>>2]<<2)>>2]<<2,F=u[E+C>>2],Q=u[B+E>>2],G=u[z+E>>2],O-1?(M=G,G=u[a+20>>2],u[I>>2]=u[I>>2]+x(u[a+44>>2]*x(M*G)),u[H>>2]=u[H>>2]+x(x(Q*G)*u[a+44>>2]),u[K>>2]=u[K>>2]+x(x(F*G)*u[a+44>>2])):(E=q[(q[a+16>>2]<<2)+P>>2]<<2,O=u[E+C>>2],P=u[B+E>>2],M=G,G=u[a+20>>2],N=u[a+24>>2],u[I>>2]=u[I>>2]+x(u[a+44>>2]*x(x(M*G)+x(u[z+E>>2]*N))),u[H>>2]=u[H>>2]+x(x(x(Q*G)+x(P*N))*u[a+44>>2]),u[K>>2]=u[K>>2]+x(x(x(F*G)+x(O*N))*u[a+44>>2]))):(q[J>>2]=E,Y(4,1024,J))),(a=a+48|0)>>>0>>0;);if(a=(q[v>>2]<<4)+D|0,F=u[a>>2],u[a>>2]=F>2],u[a+4>>2]=F>2],u[a+8>>2]=F>>0>>0))break}L=16+J|0}function ga(a,q,v){var y,z,x=0;if(1==(0|q)&a>>>0<0|q>>>0<1)x=a;else for(;y=cd(x=dd(a,q,10),z=M,10),o[0|(v=v+-1|0)]=a-y|48,y=9==(0|q)&4294967295>>0|9>>0,a=x,q=z,y;);if(x)for(;o[0|(v=v+-1|0)]=x-w(a=(x>>>0)/10|0,10)|48,q=9>>0,x=a,q;);return v}function ha(a){return a+-48>>>0<10}function ia(a){var q;return(q=La(a,64))?q-a|0:64}function ja(a,v){var w=0;return 1024<=(0|v)?(a*=898846567431158e293,v=(0|(w=v+-1023|0))<1024?w:(a*=898846567431158e293,((0|v)<3069?v:3069)+-2046|0)):-1023<(0|v)||(a*=22250738585072014e-324,v=-1023<(0|(w=v+1022|0))?w:(a*=22250738585072014e-324,(-3066<(0|v)?v:-3066)+2044|0)),f(0,0),f(1,v+1023<<20),a*+g()}function ka(a,v){var A=0,C=a,B=v>>>0<=31?(A=q[a+4>>2],q[a>>2]):(A=q[a>>2],q[a+4>>2]=A,v=v+-32|(q[a>>2]=0),0);q[C>>2]=B<>2]=A<>>32-v}function la(a,v,D,V,W){var X,Y=0,Z=0,_=0;L=X=L-240|0,Y=q[v>>2],q[232+X>>2]=Y,v=q[v+4>>2],q[X>>2]=a,Z=1;a:{b:{c:{if(((q[236+X>>2]=v)||1!=(0|Y))&&(Y=a-q[(D<<2)+W>>2]|0,!((0|n[5](Y,a))<1))){for(_=!V;;){e:{if(v=Y,!(!_|(0|D)<2)){if(V=q[((D<<2)+W|0)-8>>2],-1<(0|n[5](Y=a+-4|0,v)))break e;if(-1<(0|n[5](Y-V|0,v)))break e}if(q[(Z<<2)+X>>2]=v,Z=Z+1|0,ma(232+X|0,a=Oa(232+X|0)),D=a+D|0,!q[236+X>>2]&&1==q[232+X>>2])break b;if(_=1,Y=(a=v)-q[(D<<2)+W>>2]|(V=0),0<(0|n[5](Y,q[X>>2])))continue;break c}break}v=a;break b}v=a}if(V)break a}Na(X,Z),ta(v,D,W)}L=240+X|0}function ma(a,v){var D=0,V=a,L=v>>>0<=31?(D=q[a>>2],q[a+4>>2]):(D=q[a+4>>2],q[a+4>>2]=0,q[a>>2]=D,v=v+-32|0,0);q[V+4>>2]=L>>>v,q[a>>2]=L<<32-v|D>>>v}function na(a,v){var W=r[a+4|0];q[v>>2]=q[a+64>>2]+a,q[v+4>>2]=q[a+68>>2]+a,q[v+8>>2]=q[a+72>>2]+a,q[v+12>>2]=q[a+76>>2]+a,q[v+16>>2]=q[a+80>>2]+a,q[v+20>>2]=q[a+84>>2]+a,q[v+24>>2]=q[a+88>>2]+a,q[v+28>>2]=q[a+92>>2]+a,q[v+32>>2]=q[a+96>>2]+a,q[v+36>>2]=q[a+100>>2]+a,q[v+40>>2]=q[a+104>>2]+a,q[v+44>>2]=q[a+108>>2]+a,q[v+48>>2]=q[a+112>>2]+a,q[v+52>>2]=q[a+116>>2]+a,q[v+56>>2]=q[a+120>>2]+a,q[v+60>>2]=q[a+124>>2]+a,q[v- -64>>2]=q[a+128>>2]+a,q[v+68>>2]=q[a+132>>2]+a,q[v+72>>2]=q[a+136>>2]+a,q[v+76>>2]=q[a+140>>2]+a,q[v+80>>2]=q[a+144>>2]+a,q[v+84>>2]=q[a+148>>2]+a,q[v+92>>2]=q[a+152>>2]+a,q[v+96>>2]=q[a+156>>2]+a,q[v+100>>2]=q[a+160>>2]+a,q[v+108>>2]=q[a+164>>2]+a,q[v+112>>2]=q[a+168>>2]+a,q[v+116>>2]=q[a+172>>2]+a,q[v+124>>2]=q[a+176>>2]+a,q[v+128>>2]=q[a+180>>2]+a,q[v+132>>2]=q[a+184>>2]+a,q[v+136>>2]=q[a+188>>2]+a,q[v+140>>2]=q[a+192>>2]+a,q[v+144>>2]=q[a+196>>2]+a,q[v+148>>2]=q[a+200>>2]+a,q[v+152>>2]=q[a+204>>2]+a,q[v+156>>2]=q[a+208>>2]+a,q[v+164>>2]=q[a+212>>2]+a,q[v+168>>2]=q[a+216>>2]+a,q[v+172>>2]=q[a+220>>2]+a,q[v+176>>2]=q[a+224>>2]+a,q[v+180>>2]=q[a+228>>2]+a,q[v+184>>2]=q[a+232>>2]+a,q[v+188>>2]=q[a+236>>2]+a,q[v+192>>2]=q[a+240>>2]+a,q[v+196>>2]=q[a+244>>2]+a,q[v+200>>2]=q[a+248>>2]+a,q[v+204>>2]=q[a+252>>2]+a,q[v+208>>2]=q[a+256>>2]+a,q[v+212>>2]=q[a+260>>2]+a,q[v+216>>2]=q[a+264>>2]+a,q[v+220>>2]=q[a+268>>2]+a,q[v+224>>2]=q[a+272>>2]+a,q[v+228>>2]=q[a+276>>2]+a,q[v+232>>2]=q[a+280>>2]+a,q[v+236>>2]=q[a+284>>2]+a,q[v+244>>2]=q[a+288>>2]+a,q[v+248>>2]=q[a+292>>2]+a,q[v+272>>2]=q[a+296>>2]+a,q[v+276>>2]=q[a+300>>2]+a,q[v+280>>2]=q[a+304>>2]+a,q[v+292>>2]=q[a+308>>2]+a,q[v+296>>2]=q[a+312>>2]+a,q[v+300>>2]=q[a+316>>2]+a,q[v+304>>2]=q[a+320>>2]+a,q[v+308>>2]=q[a+324>>2]+a,q[v+312>>2]=q[a+328>>2]+a,q[v+316>>2]=q[a+332>>2]+a,q[v+328>>2]=q[a+336>>2]+a,q[v+332>>2]=q[a+340>>2]+a,q[v+336>>2]=q[a+344>>2]+a,q[v+348>>2]=q[a+348>>2]+a,q[v+360>>2]=q[a+352>>2]+a,q[v+364>>2]=q[a+356>>2]+a,q[v+368>>2]=q[a+360>>2]+a,q[v+352>>2]=q[a+364>>2]+a,q[v+356>>2]=q[a+368>>2]+a,q[v+488>>2]=q[a+372>>2]+a,q[v+492>>2]=q[a+376>>2]+a,q[v+496>>2]=q[a+380>>2]+a,q[v+500>>2]=q[a+384>>2]+a,q[v+504>>2]=q[a+388>>2]+a,q[v+508>>2]=q[a+392>>2]+a,q[v+512>>2]=q[a+396>>2]+a,q[v+516>>2]=q[a+400>>2]+a,q[v+520>>2]=q[a+404>>2]+a,q[v+524>>2]=q[a+408>>2]+a,q[v+528>>2]=q[a+412>>2]+a,q[v+532>>2]=q[a+416>>2]+a,q[v+536>>2]=q[a+420>>2]+a,q[v+540>>2]=q[a+424>>2]+a,q[v+544>>2]=q[a+428>>2]+a,q[v+548>>2]=q[a+432>>2]+a,q[v+552>>2]=q[a+436>>2]+a,q[v+556>>2]=q[a+440>>2]+a,q[v+560>>2]=q[a+444>>2]+a,q[v+564>>2]=q[a+448>>2]+a,q[v+568>>2]=q[a+452>>2]+a,q[v+572>>2]=q[a+456>>2]+a,q[v+576>>2]=q[a+460>>2]+a,q[v+580>>2]=q[a+464>>2]+a,W>>>0<2||(q[v+104>>2]=q[a+468>>2]+a,W>>>0<4)||(q[v+260>>2]=q[a+472>>2]+a,q[v+264>>2]=q[a+476>>2]+a,q[v+268>>2]=q[a+480>>2]+a,q[v+88>>2]=q[a+484>>2]+a,q[v+120>>2]=q[a+488>>2]+a,q[v+160>>2]=q[a+492>>2]+a,q[v+584>>2]=q[a+496>>2]+a,q[v+588>>2]=q[a+500>>2]+a,q[v+592>>2]=q[a+504>>2]+a,q[v+596>>2]=q[a+508>>2]+a,q[v+600>>2]=q[a+512>>2]+a,q[v+604>>2]=q[a+516>>2]+a,q[v+240>>2]=q[a+520>>2]+a,q[v+252>>2]=q[a+524>>2]+a,q[v+256>>2]=q[a+528>>2]+a,q[v+372>>2]=q[a+532>>2]+a,q[v+376>>2]=q[a+536>>2]+a,q[v+380>>2]=q[a+540>>2]+a,q[v+384>>2]=q[a+544>>2]+a,q[v+388>>2]=q[a+548>>2]+a,q[v+392>>2]=q[a+552>>2]+a,q[v+396>>2]=q[a+556>>2]+a,q[v+400>>2]=q[a+560>>2]+a,q[v+416>>2]=q[a+564>>2]+a,q[v+420>>2]=q[a+568>>2]+a,q[v+424>>2]=q[a+572>>2]+a,q[v+440>>2]=q[a+576>>2]+a,q[v+444>>2]=q[a+580>>2]+a,q[v+448>>2]=q[a+584>>2]+a,q[v+464>>2]=q[a+588>>2]+a,q[v+468>>2]=q[a+592>>2]+a,q[v+472>>2]=q[a+596>>2]+a,q[v+476>>2]=q[a+600>>2]+a,q[v+480>>2]=q[a+604>>2]+a,q[v+484>>2]=q[a+608>>2]+a,4!=(0|W)&&(q[v+284>>2]=q[a+612>>2]+a,q[v+288>>2]=q[a+616>>2]+a,q[v+320>>2]=q[a+620>>2]+a,q[v+324>>2]=q[a+624>>2]+a,q[v+340>>2]=q[a+628>>2]+a,q[v+344>>2]=q[a+632>>2]+a,q[v+404>>2]=q[a+636>>2]+a,q[v+408>>2]=q[a+640>>2]+a,q[v+412>>2]=q[a+644>>2]+a,q[v+428>>2]=q[a+648>>2]+a,q[v+432>>2]=q[a+652>>2]+a,q[v+436>>2]=q[a+656>>2]+a,q[v+452>>2]=q[a+660>>2]+a,q[v+456>>2]=q[a+664>>2]+a,q[v+460>>2]=q[a+668>>2]+a))}function oa(a,v,$){var aa=0;a:{if(8==(0|v))v=qa($);else{if(aa=28,3&v|1!=(0|function(a){for(var ap=0,bp=0;bp=ap,a;)a&=a-1,ap=ap+1|0;return bp}(v>>>2)))break a;if(aa=48,-64-v>>>0<$>>>0)break a;v=function(a,Tk){var tl,ul,ol=0,rl=0,sl=0;if((rl=a>>>0>(ol=16)?a:16)+-1&rl)for(;ol=(a=ol)<<1,a>>>0>>0;);else a=rl;return-64-a>>>0<=Tk>>>0?(q[2094]=48,0):(ol=qa(12+((rl=Tk>>>0<11?16:Tk+11&-8)+a|0)|0))?(Tk=ol+-8|0,ol&a+-1?(sl=(-8&(ul=q[(tl=ol+-4|0)>>2]))-(ol=(a=15<(ol=((a+ol|0)-1&0-a)-8|0)-Tk>>>0?ol:a+ol|0)-Tk|0)|0,3&ul?(q[a+4>>2]=sl|1&q[a+4>>2]|2,q[4+(sl=a+sl|0)>>2]=1|q[4+sl>>2],q[tl>>2]=ol|1&q[tl>>2]|2,q[a+4>>2]=1|q[a+4>>2],za(Tk,ol)):(Tk=q[Tk>>2],q[a+4>>2]=sl,q[a>>2]=Tk+ol)):a=Tk,3&(Tk=q[a+4>>2])&&((ol=-8&Tk)>>>0<=rl+16>>>0||(q[a+4>>2]=rl|1&Tk|2,q[(Tk=a+rl|0)+4>>2]=3|(rl=ol-rl|0),q[4+(ol=a+ol|0)>>2]=1|q[ol+4>>2],za(Tk,rl))),a+8|0):0}(16>>0?v:16,$)}if(!v)return 1;q[a>>2]=v,aa=0}return aa}function pa(a){var da,v=0,$=0,ba=0,ca=0,ea=0,fa=0,ha=0;a:if(a){da=(ba=a+-8|0)+(a=-8&($=q[a+-4>>2]))|0;b:if(!(1&$)){if(!(3&$))break a;if((ba=ba-($=q[ba>>2])|0)>>>0>>0<=255)ca=q[ba+8>>2],$>>>=3,(0|(v=q[ba+12>>2]))==(0|ca)?(ha=q[2095]&fd($),q[2095]=ha):(q[ca+12>>2]=v,q[v+8>>2]=ca);else{if(fa=q[ba+24>>2],(0|ba)!=(0|($=q[ba+12>>2])))v=q[ba+8>>2],q[v+12>>2]=$,q[$+8>>2]=v;else if(v=(v=q[(ca=ba+20|0)>>2])||q[(ca=ba+16|0)>>2]){for(;ea=ca,(v=q[(ca=($=v)+20|0)>>2])||(ca=$+16|0,v=q[$+16>>2]););q[ea>>2]=0}else $=0;if(fa){ca=q[ba+28>>2];e:{if(q[(v=8684+(ca<<2)|0)>>2]==(0|ba)){if(q[v>>2]=$)break e;ha=q[2096]&fd(ca),q[2096]=ha;break b}if(!(q[fa+(q[fa+16>>2]==(0|ba)?16:20)>>2]=$))break b}q[$+24>>2]=fa,(v=q[ba+16>>2])&&(q[$+16>>2]=v,q[v+24>>2]=$),(v=q[ba+20>>2])&&(q[$+20>>2]=v,q[v+24>>2]=$)}}else if(3==(3&($=q[4+da>>2])))return q[2097]=a,q[4+da>>2]=-2&$,q[ba+4>>2]=1|a,q[a+ba>>2]=a}if(!(da>>>0<=ba>>>0)&&1&($=q[4+da>>2])){f:{if(!(2&$)){if(q[2101]==(0|da)){if(q[2101]=ba,a=q[2098]+a|0,q[2098]=a,q[ba+4>>2]=1|a,q[2100]!=(0|ba))break a;return q[2097]=0,q[2100]=0}if(q[2100]==(0|da))return q[2100]=ba,a=q[2097]+a|0,q[2097]=a,q[ba+4>>2]=1|a,q[a+ba>>2]=a;a=(-8&$)+a|0;g:if($>>>0<=255)$>>>=3,(0|(v=q[8+da>>2]))==(0|(ca=q[12+da>>2]))?(ha=q[2095]&fd($),q[2095]=ha):(q[v+12>>2]=ca,q[ca+8>>2]=v);else{if(fa=q[24+da>>2],(0|da)!=(0|($=q[12+da>>2])))v=q[8+da>>2],q[v+12>>2]=$,q[$+8>>2]=v;else if(v=(v=q[(ca=20+da|0)>>2])||q[(ca=16+da|0)>>2]){for(;ea=ca,(v=q[(ca=($=v)+20|0)>>2])||(ca=$+16|0,v=q[$+16>>2]););q[ea>>2]=0}else $=0;if(fa){ca=q[28+da>>2];j:{if(q[(v=8684+(ca<<2)|0)>>2]==(0|da)){if(q[v>>2]=$)break j;ha=q[2096]&fd(ca),q[2096]=ha;break g}if(!(q[fa+(q[fa+16>>2]==(0|da)?16:20)>>2]=$))break g}q[$+24>>2]=fa,(v=q[16+da>>2])&&(q[$+16>>2]=v,q[v+24>>2]=$),(v=q[20+da>>2])&&(q[$+20>>2]=v,q[v+24>>2]=$)}}if(q[ba+4>>2]=1|a,q[a+ba>>2]=a,q[2100]!=(0|ba))break f;return q[2097]=a}q[4+da>>2]=-2&$,q[ba+4>>2]=1|a,q[a+ba>>2]=a}if(a>>>0<=255)return $=8420+((a>>>=3)<<3)|0,a=(v=q[2095])&(a=1<>2]:(q[2095]=a|v,$),q[$+8>>2]=ba,q[a+12>>2]=ba,q[ba+12>>2]=$,q[ba+8>>2]=a;q[ba+16>>2]=0,v=q[ba+20>>2]=0,(ca=a>>>8)&&(v=31,16777215>>0||(v=ca,v=28+((v=((v=(v<<=ca=ca+1048320>>>16&8)<<(fa=v+520192>>>16&4))<<(ea=v+245760>>>16&2)>>>15)-(ea|ca|fa)|0)<<1|a>>>v+21&1)|0)),ea=8684+((q[($=ba)+28>>2]=v)<<2)|0;m:if((ca=q[2096])&($=1<>>1)|0),$=q[ea>>2];n:{for(;;){if((-8&q[(v=$)+4>>2])==(0|a))break n;if($=ca>>>29,ca<<=1,!($=q[16+(ea=v+(4&$)|0)>>2]))break}q[ea+16>>2]=ba,q[ba+12>>2]=ba,q[ba+24>>2]=v,q[ba+8>>2]=ba;break m}a=q[v+8>>2],q[a+12>>2]=ba,q[v+8>>2]=ba,q[ba+24>>2]=0,q[ba+12>>2]=v,q[ba+8>>2]=a}else q[2096]=$|ca,q[ea>>2]=ba,q[ba+12>>2]=ba,q[ba+24>>2]=ea,q[ba+8>>2]=ba;if(a=q[2103]+-1|0,!(q[2103]=a)){for(ba=8836;ba=(a=q[ba>>2])+8|0,a;);q[2103]=-1}}}}function qa(a){var sa,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,ua=0;L=sa=L-16|0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(a>>>0<=244){if(3&(ia=(ma=q[2095])>>>(a=(na=a>>>0<11?16:a+11&-8)>>>3))){a=(ia=q[8428+(la=(ja=a+(1&(-1^ia))|0)<<3)>>2])+8|0,(0|(ka=q[ia+8>>2]))==(0|(la=la+8420|0))?(ua=fd(ja)&ma,q[2095]=ua):(q[ka+12>>2]=la,q[la+8>>2]=ka),q[ia+4>>2]=3|(ja<<=3),q[4+(ia=ia+ja|0)>>2]=1|q[ia+4>>2];break a}if(na>>>0<=(pa=q[2097])>>>0)break k;if(ia){ja=ia=(a=(0-(a=(0-(ja=2<>>12&16,ia=q[8428+(ka=(ja=((ja=(ja|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)|0)<<3)>>2],(0|(a=q[ia+8>>2]))==(0|(ka=ka+8420|0))?(ma=fd(ja)&ma,q[2095]=ma):(q[a+12>>2]=ka,q[ka+8>>2]=a),a=ia+8|0,q[ia+4>>2]=3|na,q[4+(oa=ia+na|0)>>2]=1|(la=(ja<<=3)-na|0),q[ia+ja>>2]=la,pa&&(ia=8420+((ja=pa>>>3)<<3)|0,ka=q[2100],ja=(ja=1<>2]:(q[2095]=ja|ma,ia),q[ia+8>>2]=ka,q[ja+12>>2]=ka,q[ka+12>>2]=ia,q[ka+8>>2]=ja),q[2100]=oa,q[2097]=la;break a}if(!(ra=q[2096]))break k;for(ja=ia=(a=(ra&0-ra)-1|0)>>>12&16,ia=q[8684+(((ja=(ja|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)<<2)>>2],ka=(-8&q[ia+4>>2])-na|0,ja=ia;a=(a=q[ja+16>>2])||q[ja+20>>2];)ka=(ja=(la=(-8&q[a+4>>2])-na|0)>>>0>>0)?la:ka,ia=ja?a:ia,ja=a;if(qa=q[ia+24>>2],(0|(la=q[ia+12>>2]))!=(0|ia)){a=q[ia+8>>2],q[a+12>>2]=la,q[la+8>>2]=a;break b}if(!(a=q[(ja=ia+20|0)>>2])){if(!(a=q[ia+16>>2]))break j;ja=ia+16|0}for(;oa=ja,(a=q[(ja=(la=a)+20|0)>>2])||(ja=la+16|0,a=q[la+16>>2]););q[oa>>2]=0;break b}if(na=-1,!(4294967231>>0)&&(na=-8&(ia=a+11|0),pa=q[2096])){ja=0-na|0,ma=0,(ia>>>=8)&&(ma=31,16777215>>0||(ma=28+((a=((ma=(ia<<=ka=ia+1048320>>>16&8)<<(a=ia+520192>>>16&4))<<(ia=ma+245760>>>16&2)>>>15)-(ia|a|ka)|0)<<1|na>>>a+21&1)|0));q:{r:{if(ka=q[8684+(ma<<2)>>2])for(ia=na<<(31==(0|ma)?0:25-(ma>>>1)|0),a=0;;){if(!(ja>>>0<=(oa=(-8&q[ka+4>>2])-na|0)>>>0||(la=ka,ja=oa))){ja=0,a=ka;break r}if(oa=q[ka+20>>2],ka=q[16+((ia>>>29&4)+ka|0)>>2],a=oa&&(0|oa)!=(0|ka)?oa:a,ia<<=0!=(0|ka),!ka)break}else a=0;if(!(a|la)){if(!(a=(0-(a=2<>>12&16,a=q[8684+(((ka=(ka|=ia=(a>>>=ia)>>>5&8)|(ia=(a>>>=ia)>>>2&4)|(ia=(a>>>=ia)>>>1&2))|(ia=(a>>>=ia)>>>1&1))+(a>>>ia)<<2)>>2]}if(!a)break q}for(;ja=(ia=(ka=(-8&q[a+4>>2])-na|0)>>>0>>0)?ka:ja,la=ia?a:la,a=(ia=q[a+16>>2])||q[a+20>>2];);}if(!(!la|ja>>>0>=q[2097]-na>>>0)){if(oa=q[la+24>>2],(0|la)!=(0|(ia=q[la+12>>2]))){a=q[la+8>>2],q[a+12>>2]=ia,q[ia+8>>2]=a;break c}if(!(a=q[(ka=la+20|0)>>2])){if(!(a=q[la+16>>2]))break i;ka=la+16|0}for(;ma=ka,(a=q[(ka=(ia=a)+20|0)>>2])||(ka=ia+16|0,a=q[ia+16>>2]););q[ma>>2]=0;break c}}}if(na>>>0<=(ia=q[2097])>>>0){a=q[2100],16<=(ja=ia-na|0)>>>0?(q[2097]=ja,q[2100]=ka=a+na|0,q[ka+4>>2]=1|ja,q[a+ia>>2]=ja,q[a+4>>2]=3|na):(q[2100]=0,q[2097]=0,q[a+4>>2]=3|ia,q[4+(ia=a+ia|0)>>2]=1|q[ia+4>>2]),a=a+8|0;break a}if(na>>>0<(ka=q[2098])>>>0){q[2098]=ia=ka-na|0,a=q[2101],q[2101]=ja=a+na|0,q[ja+4>>2]=1|ia,q[a+4>>2]=3|na,a=a+8|0;break a}if((ja=(ma=(ja=la=na+47|(a=0))+(ia=q[2213]?q[2215]:(q[2216]=-1,q[2217]=-1,q[2214]=4096,q[2215]=4096,q[2213]=12+sa&-16^1431655768,q[2218]=0,q[2206]=0,4096))|0)&(oa=0-ia|0))>>>0<=na>>>0)break a;if((ia=q[2205])&&(qa=(pa=q[2203])+ja|0)>>>0<=pa>>>0|ia>>>0>>0)break a;if(4&r[8824])break f;v:{w:{if(ia=q[2101])for(a=8828;;){if((pa=q[a>>2])+q[a+4>>2]>>>0>ia>>>0&&pa>>>0<=ia>>>0)break w;if(!(a=q[a+8>>2]))break}if(-1==(0|(ia=ea(0))))break g;if(ma=ja,(ma=(ka=(a=q[2214])+-1|0)&ia?(ja-ia|0)+(ia+ka&0-a)|0:ma)>>>0<=na>>>0|2147483646>>0)break g;if((a=q[2205])&&(oa=(ka=q[2203])+ma|0)>>>0<=ka>>>0|a>>>0>>0)break g;if((0|ia)!=(0|(a=ea(ma))))break v;break e}if(2147483646<(ma=oa&ma-ka)>>>0)break g;if((0|(ia=ea(ma)))==(q[a>>2]+q[a+4>>2]|0))break h;a=ia}if(!(na+48>>>0<=ma>>>0|2147483646>>0|-1==(0|(ia=a)))){if(2147483646<(a=(a=q[2215])+(la-ma|0)&0-a)>>>0)break e;if(-1!=(0|ea(a))){ma=a+ma|0;break e}ea(0-ma|0);break g}if(-1!=(0|ia))break e;break g}la=0;break b}ia=0;break c}if(-1!=(0|ia))break e}q[2206]=4|q[2206]}if(2147483646>>0)break d;if(ia=ea(ja),(a=ea(0))>>>0<=ia>>>0|-1==(0|ia)|-1==(0|a))break d;if((ma=a-ia|0)>>>0<=na+40>>>0)break d}a=q[2203]+ma|0,(q[2203]=a)>>>0>t[2204]&&(q[2204]=a);x:{y:{z:{if(ja=q[2101]){for(a=8828;;){if(((ka=q[a>>2])+(la=q[a+4>>2])|0)==(0|ia))break z;if(!(a=q[a+8>>2]))break}break y}for((a=q[2099])>>>0<=ia>>>0&&a||(q[2099]=ia),a=0,q[2208]=ma,q[2207]=ia,q[2103]=-1,q[2104]=q[2213],q[2210]=0;q[8428+(ja=a<<3)>>2]=ka=ja+8420|0,q[ja+8432>>2]=ka,32!=(0|(a=a+1|0)););q[2098]=ka=(a=ma+-40|0)-(ja=ia+8&7?-8-ia&7:0)|0,q[2101]=ja=ia+ja|0,q[ja+4>>2]=1|ka,q[4+(a+ia|0)>>2]=40,q[2102]=q[2217];break x}if(!(8&r[a+12|0]|ia>>>0<=ja>>>0|ja>>>0>>0)){q[a+4>>2]=la+ma,q[2101]=ia=(a=ja+8&7?-8-ja&7:0)+ja|0,ka=q[2098]+ma|0,q[2098]=a=ka-a|0,q[ia+4>>2]=1|a,q[4+(ja+ka|0)>>2]=40,q[2102]=q[2217];break x}}ia>>>0<(la=q[2099])>>>0&&(q[2099]=ia,la=0),ka=ia+ma|0,a=8828;A:{B:{C:{D:{E:{F:{for(;(0|ka)!=q[a>>2];)if(!(a=q[a+8>>2]))break F;if(!(8&r[a+12|0]))break E}for(a=8828;;){if((ka=q[a>>2])>>>0<=ja>>>0&&ja>>>0<(la=ka+q[a+4>>2]|0)>>>0)break D;a=q[a+8>>2]}}if(q[a>>2]=ia,q[a+4>>2]=q[a+4>>2]+ma,q[4+(qa=(ia+8&7?-8-ia&7:0)+ia|0)>>2]=3|na,a=((ia=ka+(ka+8&7?-8-ka&7:0)|0)-qa|0)-na|0,oa=na+qa|0,(0|ia)==(0|ja)){q[2101]=oa,a=q[2098]+a|0,q[2098]=a,q[oa+4>>2]=1|a;break B}if(q[2100]==(0|ia)){q[2100]=oa,a=q[2097]+a|0,q[2097]=a,q[oa+4>>2]=1|a,q[a+oa>>2]=a;break B}if(1==(3&(ja=q[ia+4>>2]))){ra=-8&ja;G:if(ja>>>0<=255)la=ja>>>3,ja=q[ia+8>>2],(0|(ka=q[ia+12>>2]))==(0|ja)?(ua=q[2095]&fd(la),q[2095]=ua):(q[ja+12>>2]=ka,q[ka+8>>2]=ja);else{if(pa=q[ia+24>>2],(0|(ma=q[ia+12>>2]))!=(0|ia))ja=q[ia+8>>2],q[ja+12>>2]=ma,q[ma+8>>2]=ja;else if(na=(na=q[(ka=ia+20|0)>>2])||q[(ka=ia+16|0)>>2]){for(;ja=ka,(na=q[(ka=(ma=na)+20|0)>>2])||(ka=ma+16|0,na=q[ma+16>>2]););q[ja>>2]=0}else ma=0;if(pa){ja=q[ia+28>>2];J:{if(q[(ka=8684+(ja<<2)|0)>>2]==(0|ia)){if(q[ka>>2]=ma)break J;ua=q[2096]&fd(ja),q[2096]=ua;break G}if(!(q[pa+(q[pa+16>>2]==(0|ia)?16:20)>>2]=ma))break G}q[ma+24>>2]=pa,(ja=q[ia+16>>2])&&(q[ma+16>>2]=ja,q[ja+24>>2]=ma),(ja=q[ia+20>>2])&&(q[ma+20>>2]=ja,q[ja+24>>2]=ma)}}ia=ia+ra|0,a=a+ra|0}if(q[ia+4>>2]=-2&q[ia+4>>2],q[oa+4>>2]=1|a,(q[a+oa>>2]=a)>>>0<=255){a=8420+((ia=a>>>3)<<3)|0,ia=(ja=q[2095])&(ia=1<>2]:(q[2095]=ia|ja,a),q[a+8>>2]=oa,q[ia+12>>2]=oa,q[oa+12>>2]=a,q[oa+8>>2]=ia;break B}if(ia=0,(ka=a>>>8)&&(ia=31,16777215>>0||(ia=28+((ia=((na=(ka<<=la=ka+1048320>>>16&8)<<(ia=ka+520192>>>16&4))<<(ka=na+245760>>>16&2)>>>15)-(ka|ia|la)|0)<<1|a>>>ia+21&1)|0)),q[(ja=oa)+28>>2]=ia,q[oa+16>>2]=0,ja=8684+(ia<<2)|(q[oa+20>>2]=0),(ka=q[2096])&(la=1<>>1)|0),ia=q[ja>>2];;){if((-8&q[(ja=ia)+4>>2])==(0|a))break C;if(ia=ka>>>29,ka<<=1,!(ia=q[16+(la=(4&ia)+ja|0)>>2]))break}q[la+16>>2]=oa}else q[2096]=ka|la,q[ja>>2]=oa;q[oa+24>>2]=ja,q[oa+12>>2]=oa,q[oa+8>>2]=oa;break B}for(q[2098]=oa=(a=ma+-40|0)-(ka=ia+8&7?-8-ia&7:0)|0,q[2101]=ka=ia+ka|0,q[ka+4>>2]=1|oa,q[4+(a+ia|0)>>2]=40,q[2102]=q[2217],q[(ka=(a=(la+(la+-39&7?39-la&7:0)|0)-47|0)>>>0>>0?ja:a)+4>>2]=27,a=q[2210],q[ka+16>>2]=q[2209],q[ka+20>>2]=a,a=q[2208],q[ka+8>>2]=q[2207],q[ka+12>>2]=a,q[2209]=ka+8,q[2208]=ma,q[2207]=ia,a=ka+24|(q[2210]=0);q[a+4>>2]=7,ia=a+8|0,a=a+4|0,ia>>>0>>0;);if((0|ja)==(0|ka))break x;if(q[ka+4>>2]=-2&q[ka+4>>2],q[ja+4>>2]=1|(la=ka-ja|0),(q[ka>>2]=la)>>>0<=255){a=8420+((ia=la>>>3)<<3)|0,ia=(ka=q[2095])&(ia=1<>2]:(q[2095]=ia|ka,a),q[a+8>>2]=ja,q[ia+12>>2]=ja,q[ja+12>>2]=a,q[ja+8>>2]=ia;break x}if(q[ja+16>>2]=0,a=q[ja+20>>2]=0,(ka=la>>>8)&&(a=31,16777215>>0||(a=28+((a=((oa=(ka<<=ma=ka+1048320>>>16&8)<<(a=ka+520192>>>16&4))<<(ka=oa+245760>>>16&2)>>>15)-(ka|a|ma)|0)<<1|la>>>a+21&1)|0)),ia=8684+((q[(ia=ja)+28>>2]=a)<<2)|0,(ka=q[2096])&(ma=1<>>1)|0),ia=q[ia>>2];;){if((0|la)==(-8&q[(ka=ia)+4>>2]))break A;if(ia=a>>>29,a<<=1,!(ia=q[16+(ma=ka+(4&ia)|0)>>2]))break}q[ma+16>>2]=ja,q[ja+24>>2]=ka}else q[2096]=ka|ma,q[ia>>2]=ja,q[ja+24>>2]=ia;q[ja+12>>2]=ja,q[ja+8>>2]=ja;break x}a=q[ja+8>>2],q[a+12>>2]=oa,q[ja+8>>2]=oa,q[oa+24>>2]=0,q[oa+12>>2]=ja,q[oa+8>>2]=a}a=qa+8|0;break a}a=q[ka+8>>2],q[a+12>>2]=ja,q[ka+8>>2]=ja,q[ja+24>>2]=0,q[ja+12>>2]=ka,q[ja+8>>2]=a}if(!((a=q[2098])>>>0<=na>>>0)){q[2098]=ia=a-na|0,a=q[2101],q[2101]=ja=a+na|0,q[ja+4>>2]=1|ia,q[a+4>>2]=3|na,a=a+8|0;break a}}q[2094]=48,a=0;break a}Q:if(oa){a=q[la+28>>2];R:{if(q[(ka=8684+(a<<2)|0)>>2]==(0|la)){if(q[ka>>2]=ia)break R;pa=fd(a)&pa,q[2096]=pa;break Q}if(!(q[oa+(q[oa+16>>2]==(0|la)?16:20)>>2]=ia))break Q}q[ia+24>>2]=oa,(a=q[la+16>>2])&&(q[ia+16>>2]=a,q[a+24>>2]=ia),(a=q[la+20>>2])&&(q[ia+20>>2]=a,q[a+24>>2]=ia)}S:if(ja>>>0<=15)q[la+4>>2]=3|(a=ja+na|0),q[4+(a=a+la|0)>>2]=1|q[a+4>>2];else if(q[la+4>>2]=3|na,q[4+(ka=la+na|0)>>2]=1|ja,(q[ja+ka>>2]=ja)>>>0<=255)a=8420+((ia=ja>>>3)<<3)|0,ia=(ja=q[2095])&(ia=1<>2]:(q[2095]=ia|ja,a),q[a+8>>2]=ka,q[ia+12>>2]=ka,q[ka+12>>2]=a,q[ka+8>>2]=ia;else{a=0,(na=ja>>>8)&&(a=31,16777215>>0||(a=28+((a=((oa=(na<<=ma=na+1048320>>>16&8)<<(a=na+520192>>>16&4))<<(na=oa+245760>>>16&2)>>>15)-(na|a|ma)|0)<<1|ja>>>a+21&1)|0)),q[(ia=ka)+28>>2]=a,q[ka+16>>2]=0,ia=8684+(a<<2)|(q[ka+20>>2]=0);V:{if((na=1<>>1)|0),na=q[ia>>2];;){if((-8&q[(ia=na)+4>>2])==(0|ja))break V;if(na=a>>>29,a<<=1,!(na=q[16+(ma=(4&na)+ia|0)>>2]))break}q[ma+16>>2]=ka}else q[2096]=na|pa,q[ia>>2]=ka;q[ka+24>>2]=ia,q[ka+12>>2]=ka,q[ka+8>>2]=ka;break S}a=q[ia+8>>2],q[a+12>>2]=ka,q[ia+8>>2]=ka,q[ka+24>>2]=0,q[ka+12>>2]=ia,q[ka+8>>2]=a}a=la+8|0;break a}X:if(qa){a=q[ia+28>>2];Y:{if(q[(ja=8684+(a<<2)|0)>>2]==(0|ia)){if(q[ja>>2]=la)break Y;ua=fd(a)&ra,q[2096]=ua;break X}if(!(q[qa+(q[qa+16>>2]==(0|ia)?16:20)>>2]=la))break X}q[la+24>>2]=qa,(a=q[ia+16>>2])&&(q[la+16>>2]=a,q[a+24>>2]=la),(a=q[ia+20>>2])&&(q[la+20>>2]=a,q[a+24>>2]=la)}ka>>>0<=15?(q[ia+4>>2]=3|(a=ka+na|0),q[4+(a=a+ia|0)>>2]=1|q[a+4>>2]):(q[ia+4>>2]=3|na,q[4+(na=ia+na|0)>>2]=1|ka,q[ka+na>>2]=ka,pa&&(a=8420+((ja=pa>>>3)<<3)|0,la=q[2100],ja=(ja=1<>2]:(q[2095]=ja|ma,a),q[a+8>>2]=la,q[ja+12>>2]=la,q[la+12>>2]=a,q[la+8>>2]=ja),q[2100]=na,q[2097]=ka),a=ia+8|0}return L=16+sa|0,a}function ra(a,va,wa,xa,ya,za,Aa){var Qa,Ta,Ba,Ca=0,Da=0,Fa=0,Ia=0,Ja=0,Ka=0,Ma=0,Na=0,Oa=0,Pa=0,Ra=0,Sa=0;q[76+(L=Ba=L-80|0)>>2]=va,Ta=55+Ba|0,Qa=56+Ba|0,va=0;a:{b:{c:for(;;){(0|Oa)<0||(Oa=(2147483647-Oa|0)<(0|va)?(q[2094]=61,-1):va+Oa|0);e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{if(Ia=q[76+Ba>>2],Fa=r[0|(va=Ia)]){for(;;){r:{s:{t:if(Ca=255&Fa){if(37!=(0|Ca))break s;for(Fa=va;;){if(37!=r[va+1|0])break t;if(q[76+Ba>>2]=Ca=va+2|0,Fa=Fa+1|0,Da=r[va+2|0],va=Ca,37!=(0|Da))break}}else Fa=va;if(va=Fa-Ia|0,a&&Z(a,Ia,va),va)continue c;Pa=-1,Ja=!ha(o[q[76+(Ca=Ba)>>2]+(Fa=1)|0]),va=q[76+Ba>>2],Ja|36!=r[va+2|0]||(Pa=o[va+1|0]+-48|0,Ra=1,Fa=3),q[Ca+76>>2]=va=Fa+va|0;u:if(31<(Da=(Ma=o[(Fa=0)|va])+-32|0)>>>0)Ca=va;else if(Ca=va,75913&(Da=1<>2]=Ca=va+1|0,Fa|=Da,31<(Da=(Ma=o[va+1|0])+-32|0)>>>0)break u;if(va=Ca,!(75913&(Da=1<>2],36==r[va+2|0]))q[((o[va+1|0]<<2)+ya|0)-192>>2]=10,Na=q[((o[va+1|0]<<3)+xa|0)-384>>2],Ra=1,va=va+3|0;else{if(Ra)break b;Na=Ra=0,a&&(va=q[wa>>2],q[wa>>2]=va+4,Na=q[va>>2]),va=q[76+Ba>>2]+1|0}q[Ja+76>>2]=va,-1<(0|Na)||(Na=0-Na|0,Fa|=8192)}else{if((0|(Na=Ha(76+Ba|0)))<0)break b;va=q[76+Ba>>2]}if(Da=-1,46==r[0|va])if(42==r[va+1|0])if(ha(o[va+2|0])&&(va=q[76+Ba>>2],36==r[va+3|0]))q[((o[va+2|0]<<2)+ya|0)-192>>2]=10,Da=q[((o[va+2|0]<<3)+xa|0)-384>>2],q[76+Ba>>2]=va=va+4|0;else{if(Ra)break b;Da=a?(va=q[wa>>2],q[wa>>2]=va+4,q[va>>2]):0,va=q[76+Ba>>2]+2|0,q[76+Ba>>2]=va}else q[76+Ba>>2]=va+1,Da=Ha(76+Ba|0),va=q[76+Ba>>2];for(Ca=0;;){if(Sa=Ca,Ka=-1,57>>0)break a;if(q[76+Ba>>2]=Ma=va+1|0,Ca=o[0|va],va=Ma,!((Ca=r[3327+(Ca+w(Sa,58)|0)|0])+-1>>>0<8))break}if(!Ca)break a;A:{B:{C:{if(19==(0|Ca)){if((0|Pa)<=-1)break C;break a}if((0|Pa)<0)break B;q[(Pa<<2)+ya>>2]=Ca,Ca=q[4+(va=(Pa<<3)+xa|0)>>2],q[64+Ba>>2]=q[va>>2],q[68+Ba>>2]=Ca}if(va=0,a)break A;continue c}if(!a)break e;Ga(64+Ba|0,Ca,wa,Aa),Ma=q[76+Ba>>2]}if(Ja=-65537&Fa,Fa=8192&Fa?Ja:Fa,Pa=3360,Ca=Qa,va=o[Ma+-1|(Ka=0)],(Ma=(va=Sa&&3==(15&va)?-33&va:va)+-88|0)>>>0<=32)break r;D:{E:{F:{G:{if(6<(Ja=va+-65|0)>>>0){if(83!=(0|va))break f;if(!Da)break G;Ca=q[64+Ba>>2];break E}switch(Ja-1|0){case 1:break F;case 0:case 2:break f;default:break q}}_(a,32,Na,va=0,Fa);break D}q[12+Ba>>2]=0,q[8+Ba>>2]=q[64+Ba>>2],q[64+Ba>>2]=8+Ba,Da=-1,Ca=8+Ba|0}va=0;H:{for(;;){if(!(Ia=q[Ca>>2]))break H;if((Ja=(0|(Ia=Ea(4+Ba|0,Ia)))<0)|Da-va>>>0>>0)break;if(Ca=Ca+4|0,!((va=va+Ia|0)>>>0>>0))break H}if(Ka=-1,Ja)break a}if(_(a,32,Na,va,Fa),va)for(Da=0,Ca=q[64+Ba>>2];;){if(!(Ia=q[Ca>>2]))break D;if((0|va)<(0|(Da=(Ia=Ea(4+Ba|0,Ia))+Da|0)))break D;if(Z(a,4+Ba|0,Ia),Ca=Ca+4|0,!(Da>>>0>>0))break}else va=0}_(a,32,Na,va,8192^Fa),va=(0|va)<(0|Na)?Na:va;continue c}q[76+Ba>>2]=Ca=va+1|0,Fa=r[va+1|0],va=Ca;continue}break}switch(Ma-1|0){case 28:break i;case 21:break j;case 23:break l;case 22:break m;case 11:case 16:break n;case 10:break o;case 26:break p;case 8:case 12:case 13:case 14:break q;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 9:case 15:case 17:case 18:case 19:case 20:case 24:case 25:case 27:case 29:case 30:break f;default:break k}}if(Ka=Oa,a)break a;if(!Ra)break e;for(va=1;;){if(a=q[(va<<2)+ya>>2]){if(Ga((va<<3)+xa|0,a,wa,Aa),10!=(0|(va=va+(Ka=1)|0)))continue;break a}break}if(Ka=1,9>>0)break a;if(Ka=-1,q[(va<<2)+ya>>2])break a;for(;!q[((va=va+1|0)<<2)+ya>>2]&&10!=(0|va););Ka=va>>>0<10?-1:1;break a}va=0|n[za](a,v[64+Ba>>3],Na,Da,Fa,va);continue}Ca=(va=La(Ia=(va=q[64+Ba>>2])||3370,Da))||Da+Ia|0,Fa=Ja,Da=va?va-Ia|0:Da;break f}o[55+Ba|0]=q[64+Ba>>2],Da=1,Ia=Ta,Fa=Ja;break f}if(va=Ja=q[68+Ba>>2],Ia=q[64+Ba>>2],(0|va)<-1||(0|va)<=-1&&!(4294967295>>0)){va=0-(va+(0>>0)|0)|0,q[64+Ba>>2]=Ia=0-Ia|0,q[68+Ba>>2]=va,Ka=1,Pa=3360;break h}if(2048&Fa){Ka=1,Pa=3361;break h}Pa=(Ka=1&Fa)?3362:3360;break h}if(Ia=function(a,Gl,Pm){if(a|Gl)for(;o[0|(Pm=Pm+-1|0)]=7&a|48,(a=(7&Gl)<<29|a>>>3)|(Gl>>>=3););return Pm}(q[64+Ba>>2],q[68+Ba>>2],Qa),!(8&Fa))break g;Da=(0|(va=Qa-Ia|0))<(0|Da)?Da:va+1|0;break g}Da=8>>0?Da:8,Fa|=8,va=120}if(Ia=function(a,Gl,Pm,Qm){if(a|Gl)for(;o[0|(Pm=Pm+-1|0)]=r[3856+(15&a)|0]|Qm,(a=(15&Gl)<<28|a>>>4)|(Gl>>>=4););return Pm}(q[64+Ba>>2],q[68+Ba>>2],Qa,32&va),!(8&Fa)|!(q[64+Ba>>2]|q[68+Ba>>2]))break g;Pa=3360+(va>>>4)|0,Ka=2;break g}if(7<(Ca=255&Sa)>>>(va=0))continue;switch(Ca-1|0){default:case 0:q[q[64+Ba>>2]>>2]=Oa;continue;case 1:Ca=q[64+Ba>>2],q[Ca>>2]=Oa,q[Ca+4>>2]=Oa>>31;continue;case 2:p[q[64+Ba>>2]>>1]=Oa;continue;case 3:o[q[64+Ba>>2]]=Oa;continue;case 5:q[q[64+Ba>>2]>>2]=Oa;continue;case 4:continue;case 6:}Ca=q[64+Ba>>2],q[Ca>>2]=Oa,q[Ca+4>>2]=Oa>>31;continue}Ia=q[64+Ba>>2],va=q[68+Ba>>2],Pa=3360}Ia=ga(Ia,va,Qa)}Fa=-1<(0|Da)?-65537&Fa:Fa,Da=!!((Ja=va=q[68+Ba>>2])|(Ma=q[64+Ba>>2]))|Da?(0|(va=!(Ja|Ma)+(Qa-Ia|0)|0))<(0|Da)?Da:va:(Ia=Qa,0)}_(a,32,va=(0|Na)<(0|(Ca=(Da=(0|Da)<(0|(Ja=Ca-Ia|0))?Ja:Da)+Ka|0))?Ca:Na,Ca,Fa),Z(a,Pa,Ka),_(a,48,va,Ca,65536^Fa),_(a,48,Da,Ja,0),Z(a,Ia,Ja),_(a,32,va,Ca,8192^Fa);continue}break}Ka=0;break a}Ka=-1}return L=80+Ba|0,Ka}function sa(a){var ya,va=0,wa=0,xa=0,za=0,xa=4,wa=1439;a:if(va=r[0|a]){for(;!((0|(ya=r[0|wa]))!=(0|va)||!(xa=xa+-1|0)|!ya);)if(wa=wa+1|0,va=r[a+1|0],a=a+1|0,!va)break a;za=va}return(255&za)-r[0|wa]|0}function ta(a,Aa,Ea){var La,Ga,Ha=0,Ua=0,Va=0;q[(L=Ga=L-240|0)>>2]=a,Ua=1;a:if(!((0|Aa)<2))for(Ha=a;;){if(Ha=(La=Ha+-4|0)-q[((Va=Aa+-2|0)<<2)+Ea>>2]|0,0<=(0|n[5](a,Ha))&&-1<(0|n[5](a,La)))break a;if(a=(Ua<<2)+Ga|0,0<=(0|n[5](Ha,La))?(q[a>>2]=Ha,Va=Aa+-1|0):Ha=q[a>>2]=La,Ua=Ua+1|0,(0|Va)<2)break a;a=q[Ga>>2],Aa=Va}Na(Ga,Ua),L=240+Ga|0}function ua(a){var Ea,_a,Aa=0;if(x(0),function(a){var Hg,Ig;q[a+428>>2]&&(Ig=q[a+332>>2],$(q[a+460>>2],q[a+436>>2],Hg=Ig<<2),$(q[a+464>>2],q[a+440>>2],Hg),$(q[a+468>>2],q[a+448>>2],Hg),r[q[a>>2]+4|0]<4||($(q[a+472>>2],q[a+452>>2],Hg=Ig<<4),$(q[a+476>>2],q[a+456>>2],Hg)))}(a),function(a){var he,ie,je,ce=0,de=x(0),ee=x(0),fe=0,ge=x(0);x(0),x(0);if(1<=(0|(fe=q[a>>2])))for(je=(ce=q[a+4>>2])+w(fe,52)|0,a=q[a+12>>2];de=u[a>>2],u[ce+44>>2]!=(de=(he=q[ce+16>>2])?(ee=de,de=u[ce+4>>2],ge=u[ce+12>>2],ee=x(x(ee-de)/ge),ie=x(C(ee)),fe=x(y(ie))>2],ee=u[ce+8>>2],de>2]=de,q[ce+48>>2]=1):q[ce+48>>2]=0,he||(u[a>>2]=de),a=a+4|0,(ce=ce+52|0)>>>0>>0;);}(a+540|0),function(a){var Td,Ud,Zd,$d,ae,be,Od=0,Pd=0,Qd=x(0),Rd=0,Sd=x(0),Vd=(x(0),x(0),0),Wd=x(0),Xd=0,Yd=0,_d=0;x(0);if(1<=(0|(Rd=q[a+540>>2])))for(ae=(Vd=q[a+544>>2])+w(Rd,52)|0,be=q[a+644>>2];;){a:if(!(q[Vd>>2]||(0|(Rd=q[Vd+32>>2]))<1))if(Zd=(a=q[Vd+28>>2])+w(Rd,28)|0,$d=u[Vd+24>>2],Ud=u[Vd+20>>2],Td=u[Vd+44>>2],be)for(;;){Wd=x(Yd=0);h:{i:{j:{if((0|(Pd=q[a>>2]))<1)Od=Rd=0;else if(Xd=q[a+4>>2],Sd=u[Xd>>2],Qd=x(Sd-Ud),1==(0|Pd))Rd=Td>2],!(Td>2],Td>2])break h;break i}Od=Pd+-1|0,Rd=1}Xd=(Pd=(Sd=u[a+12>>2])!=Wd)&(Wd==x(0)|Sd==x(0))|q[a+8>>2]!=(0|Od),Yd=Rd}if(q[a+20>>2]=Xd,q[a+24>>2]=Pd,u[a+12>>2]=Wd,q[a+16>>2]=Yd,q[a+8>>2]=Od,!((a=a+28|0)>>>0>>0))break}else{if(!q[Vd+48>>2])for(;;)if(q[a+20>>2]=0,!((a=a+28|(q[a+24>>2]=0))>>>0>>0))break a;for(;;){Wd=x(Yd=0);b:{c:{d:{e:if(!(((Pd=0)|(Od=q[(Xd=a)>>2]))<1)){if(Rd=q[a+4>>2],Sd=u[Rd>>2],Qd=x(Sd-Ud),1!=(0|Od)){if(!(Td>2],!(Td>2],Td>2]))break b}Yd=Rd,_d=(Pd=(Sd=u[a+12>>2])!=Wd)&(Wd==x(0)|Sd==x(0))|q[a+8>>2]!=(0|Od)}if(q[Xd+20>>2]=_d,q[a+24>>2]=Pd,u[a+12>>2]=Wd,q[a+16>>2]=Yd,q[a+8>>2]=Od,!((a=a+28|0)>>>0>>0))break}}if(!((Vd=Vd+52|0)>>>0>>0))break}}(a),function(a){var od,pd,qd,rd,sd,hd=0,id=x(0),jd=0,kd=0,ld=x(0),md=0,nd=x(0);x(0);if(!(r[q[a>>2]+4|0]<4||(0|(hd=q[a+540>>2]))<1))for(rd=(md=q[a+544>>2])+w(hd,52)|0,sd=q[a+644>>2];;){b:if(1==q[md>>2]&&!((0|(hd=q[md+40>>2]))<1))if(pd=(a=q[md+36>>2])+w(hd,28)|0,od=u[md+44>>2],sd)for(;;){nd=x(hd=0);d:if(!((0|(kd=q[a>>2]))<2||(jd=q[a+4>>2],od<=(id=u[jd>>2])))){hd=1;e:if(!(od<(ld=u[jd+4>>2]))){for(;id=ld,(0|kd)!=(0|(hd=hd+1|0));)if(od<(ld=u[jd+(hd<<2)>>2]))break e;hd=kd+-1|0;break d}nd=x(x(od-id)/x(ld-id)),hd=hd+-1|0}if(id=u[a+16>>2],u[a+16>>2]=nd,kd=q[a+12>>2],q[a+12>>2]=hd,q[a+24>>2]=jd=id!=nd,q[a+20>>2]=jd&(nd==x(0)|id==x(0))|(0|hd)!=(0|kd),!((a=a+28|0)>>>0>>0))break}else{if(!q[md+48>>2])for(;;)if(q[a+20>>2]=0,!((a=a+28|(q[a+24>>2]=0))>>>0>>0))break b;for(;;){nd=x(kd=0);c:if(!((0|(qd=q[a>>2]))<2||(jd=q[a+4>>2],od<=(id=u[jd>>2])))){if(hd=1,!(od<(ld=u[jd+4>>2])))for(kd=qd+-1|0;;){if(id=ld,(0|hd)==(0|kd))break c;if(od<(ld=u[jd+((hd=hd+1|0)<<2)>>2]))break}nd=x(x(od-id)/x(ld-id)),kd=hd+-1|0}if(id=u[a+16>>2],u[a+16>>2]=nd,hd=q[a+12>>2],q[a+12>>2]=kd,q[a+24>>2]=jd=id!=nd,q[a+20>>2]=jd&(nd==x(0)|id==x(0))|(0|hd)!=(0|kd),!((a=a+28|0)>>>0>>0))break}}if(!((md=md+52|0)>>>0>>0))break}}(a),function(a){var Fd,Gd,Jd,Kd,Ld,Md,Nd,td=0,ud=0,vd=0,wd=0,xd=0,yd=0,zd=0,Ad=x(0),Bd=0,Dd=0,Ed=0,Hd=0,Id=0;if(1<=(0|(ud=q[a+564>>2])))for(Md=(xd=q[a+568>>2])+w(ud,36)|0,Kd=q[a+644>>2];;){a:{if(!(yd=((vd=wd=ud=0)|(Gd=q[xd+4>>2]))<1))for(Bd=q[xd>>2],a=Hd=0;;){if(td=q[Bd+(a<<2)>>2],q[td+16>>2]){td=1,Id=0;break a}if(vd=vd||q[td+24>>2],ud=ud||q[td+20>>2],wd=(u[td+12>>2]!=x(0))+wd|0,(0|Gd)==(0|(a=a+1|0)))break}if(td=0,(Hd=Kd?1:vd)|(Id=Kd?1:ud)&&(q[xd+12>>2]=Bd=1<>2],Ld=q[xd>>2],vd=(a=q[xd+16>>2])+(zd=Bd<<2)|0,vd=ca(a,0,4+((-1^a)+((a=a+4|0)>>>0>>0?vd:a)|0)&-4),zd=ud+zd|0,a=ud;q[a>>2]=1065353216,(a=a+4|0)>>>0>>0;);if(!yd){if(yd=0,zd=td=1,wd)for(;;){if(wd=q[(yd<<2)+Ld>>2],Dd=q[wd+8>>2],Ed=w(Dd,td),(Ad=u[wd+12>>2])!=x(a=0)){for(q[vd>>2]=Ed+q[vd>>2],u[ud>>2]=x(x(1)-Ad)*u[ud>>2],Dd=w(Dd+(a=1)|0,td);Ad=u[wd+12>>2],Nd=q[(Jd=(Fd=a<<2)+vd|0)>>2],q[Jd>>2]=Nd+((Jd=a&zd)?Dd:Ed),u[(Fd=ud+Fd|0)>>2]=(Jd?Ad:x(x(1)-Ad))*u[Fd>>2],(0|Bd)!=(0|(a=a+1|0)););zd<<=1}else for(;q[(Dd=vd+(a<<2)|0)>>2]=Ed+q[Dd>>2],(0|Bd)!=(0|(a=a+1|0)););if(td=w(q[wd>>2],td),(0|Gd)==(0|(yd=yd+1|0)))break}else for(;;){if(wd=q[(yd<<2)+Ld>>2],zd=w(q[wd+8>>2],td),(Ad=u[wd+12>>2])!=x(a=0))q[vd>>2]=zd+q[vd>>2],u[ud>>2]=x(x(1)-Ad)*u[ud>>2];else for(;q[(Ed=vd+(a<<2)|0)>>2]=zd+q[Ed>>2],(0|Bd)!=(0|(a=a+1|0)););if(td=w(q[wd>>2],td),(0|Gd)==(0|(yd=yd+1|0)))break}td=0}}}if(q[xd+32>>2]=td,q[xd+24>>2]=Id,q[xd+28>>2]=Hd,!((xd=xd+36|0)>>>0>>0))break}}(a),function(a){var dd,ed,fd,gd,Tc=x(0),Uc=0,Vc=0,Wc=0,Xc=0,Yc=0,Zc=x(0),_c=x(0),$c=x(0),ad=0,bd=0,cd=0;if(!(r[q[a>>2]+4|0]<4||(0|(Uc=q[a+588>>2]))<1))for(gd=(Wc=q[a+592>>2])+w(Uc,48)|0,dd=q[a+644>>2];;){if(a=q[Wc>>2],(bd=dd?1:q[a+20>>2])|(cd=dd?1:q[a+24>>2])){c:{d:{Yc=Wc,Xc=q[a+8>>2],Uc=q[a+12>>2],Tc=u[a+16>>2],a=(0|Xc)!=(0|Uc);e:{if(Tc!=x(0)){if(a=Uc+1|0,(0|Uc)==(0|Xc)){q[Wc+8>>2]=bd=1,Tc=x(x(1)-Tc),cd=1;break e}a=(0|a)==(0|Xc)?1:2}if(q[Yc+8>>2]=a,!cd)break d;a=Uc}u[Wc+24>>2]=Tc,u[Wc+20>>2]=x(1)-Tc;break c}cd=0,a=Uc}bd?(q[Wc+12>>2]=a,q[Wc+16>>2]=a+1):bd=0}else bd=cd=0;g:if((0|(ed=q[Wc+36>>2]))<1)$c=x(1);else{if(fd=q[Wc+40>>2],a=0,$c=x(1),!dd)for(;;){h:{i:{if(Uc=q[(a<<2)+fd>>2],Vc=q[Uc>>2]){if(!q[Vc+48>>2]){Tc=u[Uc+16>>2];break h}if((0|(Xc=q[Uc+12>>2]))<1){Tc=x(1),u[Uc+16>>2]=1;break h}if(ad=q[Uc+8>>2],1!=(0|Xc)&&(Zc=u[Vc+44>>2],Yc=q[Uc+4>>2],!(Zc<=(_c=u[Yc>>2]))))break i;Tc=u[ad>>2],u[Uc+16>>2]=Tc;break h}q[Uc+16>>2]=1065353216,Tc=x(1);break h}Vc=1;j:if(!(Zc<(Tc=u[Yc+4>>2]))){for(;_c=Tc,(0|Xc)!=(0|(Vc=Vc+1|0));)if(Zc<(Tc=u[Yc+(Vc<<2)>>2]))break j;Tc=u[(ad+(Xc<<2)|0)-4>>2],u[Uc+16>>2]=Tc;break h}Yc=Uc,Tc=x(x(Zc-_c)/x(Tc-_c)),Tc=x(x(Tc*u[(Uc=ad+(Vc<<2)|0)>>2])+x(u[Uc+-4>>2]*x(x(1)-Tc))),u[Yc+16>>2]=Tc}if($c=$c>2],Vc=q[Uc>>2],Tc=x(1);l:if(Vc&&(ad=q[Uc+12>>2],Tc=x(1),!((0|ad)<1))&&(Xc=q[Uc+8>>2],Tc=u[Xc>>2],1!=(0|ad))){m:{if(Zc=u[Vc+44>>2],Yc=q[Uc+4>>2],Zc<=(_c=u[Yc>>2])){Tc=u[Xc>>2];break l}if(Vc=1,!(Zc<(Tc=u[Yc+4>>2]))){for(;_c=Tc,(0|ad)!=(0|(Vc=Vc+1|0));)if(Zc<(Tc=u[Yc+(Vc<<2)>>2]))break m;Tc=u[(Xc+(ad<<2)|0)-4>>2];break l}}Tc=x(x(Zc-_c)/x(Tc-_c)),Tc=x(x(Tc*u[(Vc=Xc+(Vc<<2)|0)>>2])+x(u[Vc+-4>>2]*x(x(1)-Tc)))}if($c=$c<(u[Uc+16>>2]=Tc)?$c:Tc,(0|ed)==(0|(a=a+1|0)))break}}if(q[Wc+32>>2]=cd,q[Wc+28>>2]=bd,u[Wc+44>>2]=$c,!((Wc=Wc+48|0)>>>0>>0))break}}(a),1<=(0|(Ea=q[a+4>>2])))for(Ea=(Aa=q[a+52>>2])+(Ea<<2)|0;_a=u[Aa>>2],u[Aa>>2]=_a>>0>>0;);!function(a){var Ce,De,Ee,Ae=0,Be=0;if(1<=(0|(Be=q[a+4>>2])))for(Ee=(Ae=q[a+8>>2])+w(Be,12)|0,a=Ce=q[a+40>>2];Be=0,q[Ae+8>>2]&&(De=q[Ae+4>>2],!q[(De<<2)+Ce>>2]&&-1!=(0|De)||(Be=!q[q[Ae>>2]+32>>2])),q[a>>2]=Be,a=a+4|0,(Ae=Ae+12|0)>>>0>>0;);}(a),function(a){var og,sg,tg,ug,vg,wg,xg,mg=0,ng=0,pg=0,qg=0,rg=0;if(1<=(0|(sg=q[a+4>>2])))for(ug=q[a+8>>2],tg=q[a>>2],vg=q[tg+724>>2];;){if(og=q[w(qg,12)+ug>>2],(q[og+28>>2]||q[og+24>>2])&&(q[(mg=qg<<2)+q[a+28>>2]>>2]=q[og+12>>2],q[og+24>>2])&&!((0|(pg=q[og+12>>2]))<1))for(pg=(ng=q[og+16>>2])+(pg<<2)|0,wg=q[mg+vg>>2],mg=q[a+36>>2]+(rg<<2)|0,xg=q[tg+976>>2];q[mg>>2]=q[(q[ng>>2]+wg<<2)+xg>>2],mg=mg+4|0,(ng=ng+4|0)>>>0>>0;);if(q[og+28>>2]&&!((0|(mg=q[og+12>>2]))<1))for(pg=(ng=q[og+20>>2])+(mg<<2)|0,mg=q[a+32>>2]+(rg<<2)|0;q[mg>>2]=q[ng>>2],mg=mg+4|0,(ng=ng+4|0)>>>0>>0;);if(rg=q[og+8>>2]+rg|0,(0|sg)==(0|(qg=qg+1|0)))break}}(a),n[q[1816]](a+12|0,q[a+36>>2],q[a+44>>2],q[a+40>>2]),function(a){var ue,ve,we,xe,ye,ze,re=0,se=0,te=0;if(1<=(0|(te=q[a+304>>2])))for(we=(re=q[a+308>>2])+(te<<5)|0,xe=q[a+264>>2],ye=q[a+144>>2],ze=q[a+40>>2],te=ve=q[a+312>>2];ue=te,se=0,a=se=!q[re+28>>2]||-1!=(0|(a=q[re+4>>2]))&&(se=0,!q[(a<<2)+ze>>2])||-1!=(0|(a=q[re+8>>2]))&&(se=0,!q[(a<<2)+ve>>2])?se:!q[q[re>>2]+32>>2],q[ue>>2]=a,(ue=q[re+12>>2])>>>0<=1?ue-1?q[(q[re+16>>2]<<2)+ye>>2]=a:q[(q[re+16>>2]<<2)+xe>>2]=a:Y(4,1372,0),te=te+4|0,(re=re+32|0)>>>0>>0;);}(a),function(a){var dg,eg,fg,gg,hg,ig,jg,kg,lg,Rf=0,Sf=0,Tf=0,Uf=0,Vf=0,Wf=0,Xf=0,Yf=0,Zf=0,_f=0,$f=0,ag=0,bg=0,cg=0,Vf=q[a>>2];if(1<=(0|(Yf=q[a+56>>2]))){for(Zf=q[a+60>>2],_f=q[Vf+1052>>2],$f=q[Vf+784>>2];;){if(Rf=q[Zf+w(Wf,24)>>2],(q[Rf+28>>2]||q[Rf+24>>2])&&(q[(Sf=Wf<<2)+q[a+80>>2]>>2]=q[Rf+12>>2],q[Rf+24>>2])&&!((0|(Uf=q[Rf+12>>2]))<1))for(ag=(Tf=q[Rf+16>>2])+(Uf<<2)|0,bg=q[Sf+$f>>2],Sf=(Uf=Xf<<2)+q[a+92>>2]|0,Uf=Uf+q[a+88>>2]|0;cg=bg+q[Tf>>2]<<2,q[Sf>>2]=_f+(q[cg+q[Vf+984>>2]>>2]<<2),q[Uf>>2]=q[cg+q[Vf+980>>2]>>2],Uf=Uf+4|0,Sf=Sf+4|0,(Tf=Tf+4|0)>>>0>>0;);if(q[Rf+28>>2]&&!((0|(Sf=q[Rf+12>>2]))<1))for(Uf=(Tf=q[Rf+20>>2])+(Sf<<2)|0,Sf=q[a+84>>2]+(Xf<<2)|0;q[Sf>>2]=q[Tf>>2],Sf=Sf+4|0,(Tf=Tf+4|0)>>>0>>0;);if(Xf=q[Rf+8>>2]+Xf|0,(0|Yf)==(0|(Wf=Wf+1|0)))break}Vf=q[a>>2]}if(!(r[Vf+4|0]<4||(0|(bg=q[a+56>>2]))<1))for(cg=q[Vf+792>>2],dg=q[a+60>>2],Tf=Xf=0;;){if(Wf=q[w(Tf,24)+dg>>2],q[Wf+24>>2]&&!((0|(Rf=q[Wf+12>>2]))<1))for(eg=(Sf=q[Wf+16>>2])+(Rf<<2)|0,fg=q[cg+(Tf<<2)>>2],Uf=(Rf=Xf<<2)+q[a+96>>2]|0,Yf=Rf+q[a+100>>2]|0,Zf=Rf+q[a+104>>2]|0,_f=Rf+q[a+108>>2]|0,$f=Rf+q[a+112>>2]|0,ag=Rf+q[a+116>>2]|0,gg=q[Vf+1308>>2],hg=q[Vf+1304>>2],ig=q[Vf+1300>>2],jg=q[Vf+1296>>2],kg=q[Vf+1292>>2],lg=q[Vf+1288>>2];Rf=q[Sf>>2]+fg<<2,q[Uf>>2]=q[Rf+lg>>2],q[Yf>>2]=q[Rf+kg>>2],q[Zf>>2]=q[Rf+jg>>2],q[_f>>2]=q[Rf+ig>>2],q[$f>>2]=q[Rf+hg>>2],q[ag>>2]=q[Rf+gg>>2],ag=ag+4|0,$f=$f+4|0,_f=_f+4|0,Zf=Zf+4|0,Yf=Yf+4|0,Uf=Uf+4|0,(Sf=Sf+4|0)>>>0>>0;);if(Xf=q[Wf+8>>2]+Xf|0,(0|bg)==(0|(Tf=Tf+1|0)))break}}(a),function(a){var uf=0,vf=0,xf=0,yf=0,zf=0,Af=0,Bf=0,Cf=0,Df=0,Ef=0,Ff=0,Gf=0,Hf=0,If=0,Jf=0,Kf=0,Lf=0,Mf=0,Nf=0,Of=0,Pf=0,Qf=q[a+168>>2],wf=q[a>>2];if(1<=(0|(Hf=q[a+164>>2])))for(Jf=q[wf+816>>2];;){if(xf=q[w(Bf,12)+Qf>>2],(q[xf+28>>2]||q[xf+24>>2])&&(q[(Cf=Bf<<2)+q[a+188>>2]>>2]=q[xf+12>>2],q[xf+24>>2])){if(vf=q[xf+16>>2],If=q[Cf+Jf>>2],1<=(0|(uf=q[xf+12>>2])))for(Kf=vf+(uf<<2)|0,yf=(uf=Af<<2)+q[a+200>>2]|0,Df=uf+q[a+204>>2]|0,Ef=uf+q[a+208>>2]|0,Ff=uf+q[a+212>>2]|0,Gf=uf+q[a+196>>2]|0,Lf=q[wf+996>>2],Mf=q[wf+1012>>2],Nf=q[wf+1008>>2],Of=q[wf+1004>>2],Pf=q[wf+1e3>>2],uf=vf;zf=If+q[uf>>2]<<2,q[yf>>2]=q[zf+Pf>>2],q[Df>>2]=q[zf+Of>>2],q[Ef>>2]=q[zf+Nf>>2],q[Ff>>2]=q[zf+Mf>>2],q[Gf>>2]=q[zf+Lf>>2],Gf=Gf+4|0,Ff=Ff+4|0,Ef=Ef+4|0,Df=Df+4|0,yf=yf+4|0,(uf=uf+4|0)>>>0>>0;);uf=If+q[vf>>2]<<2,q[Cf+q[a+288>>2]>>2]=q[uf+q[wf+1016>>2]>>2],q[Cf+q[a+292>>2]>>2]=q[uf+q[wf+1020>>2]>>2]}if(q[xf+28>>2]&&!((0|(vf=q[xf+12>>2]))<1))for(vf=(uf=q[xf+20>>2])+(vf<<2)|0,yf=q[a+192>>2]+(Af<<2)|0;q[yf>>2]=q[uf>>2],yf=yf+4|0,(uf=uf+4|0)>>>0>>0;);if(Af=q[xf+8>>2]+Af|0,(0|Hf)==(0|(Bf=Bf+1|0)))break}if(!(r[wf+4|0]<4||(0|(Cf=q[a+164>>2]))<1))for(If=q[wf+824>>2],Af=xf=0;;){if(zf=q[w(Af,12)+Qf>>2],q[zf+24>>2]&&!((0|(uf=q[zf+12>>2]))<1))for(Hf=(yf=q[zf+16>>2])+(uf<<2)|0,Jf=q[If+(Af<<2)>>2],Df=(vf=xf<<2)+q[a+216>>2]|0,Ef=vf+q[a+220>>2]|0,Ff=vf+q[a+224>>2]|0,Gf=vf+q[a+228>>2]|0,uf=vf+q[a+232>>2]|0,Bf=vf+q[a+236>>2]|0,Kf=q[wf+1308>>2],Lf=q[wf+1304>>2],Mf=q[wf+1300>>2],Nf=q[wf+1296>>2],Of=q[wf+1292>>2],Pf=q[wf+1288>>2];vf=Jf+q[yf>>2]<<2,q[Df>>2]=q[vf+Pf>>2],q[Ef>>2]=q[vf+Of>>2],q[Ff>>2]=q[vf+Nf>>2],q[Gf>>2]=q[vf+Mf>>2],q[uf>>2]=q[vf+Lf>>2],q[Bf>>2]=q[vf+Kf>>2],Bf=Bf+4|0,uf=uf+4|0,Gf=Gf+4|0,Ff=Ff+4|0,Ef=Ef+4|0,Df=Df+4|0,(yf=yf+4|0)>>>0>>0;);if(xf=q[zf+8>>2]+xf|0,(0|Cf)==(0|(Af=Af+1|0)))break}}(a),function(a){var wk,ok=0,pk=0,qk=0,rk=0,sk=0,tk=0,uk=0,vk=0,ok=a- -64|0;if(n[q[1815]](ok,q[a+88>>2],q[a+148>>2],q[a+144>>2]),n[q[1817]](ok,q[a+92>>2],q[a+152>>2],q[q[a>>2]+796>>2],2,q[a+144>>2]),!(r[q[a>>2]+4|0]<4||(n[q[1815]](ok,q[a+96>>2],q[a+120>>2],q[a+144>>2]),n[q[1815]](ok,q[a+100>>2],q[a+124>>2],q[a+144>>2]),n[q[1815]](ok,q[a+104>>2],q[a+128>>2],q[a+144>>2]),n[q[1815]](ok,q[a+108>>2],q[a+132>>2],q[a+144>>2]),n[q[1815]](ok,q[a+112>>2],q[a+136>>2],q[a+144>>2]),n[q[1815]](ok,q[a+116>>2],q[a+140>>2],q[a+144>>2]),(0|(tk=q[a+56>>2]))<1))){for(uk=q[a+128>>2],vk=q[a+124>>2],wk=q[a+120>>2],pk=q[a+156>>2],ok=0;q[(qk=rk<<2)+pk>>2]=q[(sk=ok<<2)+wk>>2],q[pk+(4|qk)>>2]=q[sk+vk>>2],q[pk+(8|qk)>>2]=q[sk+uk>>2],rk=rk+4|0,(0|tk)!=(0|(ok=ok+1|0)););for(pk=q[a+160>>2],sk=q[a+140>>2],uk=q[a+136>>2],vk=q[a+132>>2],ok=a=0;q[(rk=a<<2)+pk>>2]=q[(qk=ok<<2)+vk>>2],q[pk+(4|rk)>>2]=q[qk+uk>>2],q[pk+(8|rk)>>2]=q[qk+sk>>2],a=a+4|0,(0|tk)!=(0|(ok=ok+1|0)););}}(a),function(a){var nk,fk=0,gk=0,hk=0,ik=0,jk=0,kk=0,lk=0,mk=0,fk=a+172|0;if(n[q[1815]](fk,q[a+196>>2],q[a+268>>2],q[a+264>>2]),n[q[1815]](fk,q[a+200>>2],q[a+284>>2],q[a+264>>2]),n[q[1815]](fk,q[a+204>>2],q[a+276>>2],q[a+264>>2]),n[q[1815]](fk,q[a+208>>2],q[a+280>>2],q[a+264>>2]),n[q[1815]](fk,q[a+212>>2],q[a+272>>2],q[a+264>>2]),!(r[q[a>>2]+4|0]<4||(n[q[1815]](fk,q[a+216>>2],q[a+240>>2],q[a+264>>2]),n[q[1815]](fk,q[a+220>>2],q[a+244>>2],q[a+264>>2]),n[q[1815]](fk,q[a+224>>2],q[a+248>>2],q[a+264>>2]),n[q[1815]](fk,q[a+228>>2],q[a+252>>2],q[a+264>>2]),n[q[1815]](fk,q[a+232>>2],q[a+256>>2],q[a+264>>2]),n[q[1815]](fk,q[a+236>>2],q[a+260>>2],q[a+264>>2]),(0|(kk=q[a+164>>2]))<1))){for(lk=q[a+248>>2],mk=q[a+244>>2],nk=q[a+240>>2],gk=q[a+296>>2],fk=0;q[(hk=ik<<2)+gk>>2]=q[(jk=fk<<2)+nk>>2],q[gk+(4|hk)>>2]=q[jk+mk>>2],q[gk+(8|hk)>>2]=q[jk+lk>>2],ik=ik+4|0,(0|kk)!=(0|(fk=fk+1|0)););for(gk=q[a+300>>2],jk=q[a+260>>2],lk=q[a+256>>2],mk=q[a+252>>2],fk=a=0;q[(ik=a<<2)+gk>>2]=q[(hk=fk<<2)+mk>>2],q[gk+(4|ik)>>2]=q[hk+lk>>2],q[gk+(8|ik)>>2]=q[hk+jk>>2],a=a+4|0,(0|kk)!=(0|(fk=fk+1|0)););}}(a),function(a){var oe,pe,qe,le=0,me=0,ne=0;if(1<=(0|(me=q[a+332>>2])))for(oe=(le=q[a+336>>2])+w(me,20)|0,pe=q[a+312>>2],qe=q[a+40>>2],a=q[a+424>>2];me=0,q[le+12>>2]&&(ne=q[le+4>>2],q[(ne<<2)+qe>>2]||-1==(0|ne))&&(ne=q[le+8>>2],q[(ne<<2)+pe>>2]||-1==(0|ne))&&(me=!q[q[le>>2]+32>>2]),q[a>>2]=me,a=a+4|0,(le=le+20|0)>>>0>>0;);}(a),function(a){var mf,nf,of,pf,qf,rf,sf,tf,Ye=0,Ze=0,_e=0,$e=0,af=0,bf=0,cf=0,df=0,ef=0,ff=0,gf=0,hf=0,jf=0,kf=0,lf=0,$e=q[a>>2];if(1<=(0|(ff=q[a+332>>2]))){for(gf=q[a+336>>2],hf=q[$e+1052>>2],jf=q[$e+856>>2];;){if(Ye=q[gf+w(cf,20)>>2],(q[Ye+28>>2]||q[Ye+24>>2])&&(q[(Ze=cf<<2)+q[a+356>>2]>>2]=q[Ye+12>>2],q[Ye+24>>2])&&!((0|(af=q[Ye+12>>2]))<1))for(kf=(_e=q[Ye+16>>2])+(af<<2)|0,lf=q[Ze+jf>>2],Ze=(bf=df<<2)+q[a+372>>2]|0,af=bf+q[a+364>>2]|0,bf=bf+q[a+368>>2]|0;ef=lf+q[_e>>2]<<2,q[Ze>>2]=hf+(q[ef+q[$e+1040>>2]>>2]<<2),q[af>>2]=q[ef+q[$e+1032>>2]>>2],q[bf>>2]=q[ef+q[$e+1036>>2]>>2],bf=bf+4|0,af=af+4|0,Ze=Ze+4|0,(_e=_e+4|0)>>>0>>0;);if(q[Ye+28>>2]&&!((0|(Ze=q[Ye+12>>2]))<1))for(af=(_e=q[Ye+20>>2])+(Ze<<2)|0,Ze=q[a+360>>2]+(df<<2)|0;q[Ze>>2]=q[_e>>2],Ze=Ze+4|0,(_e=_e+4|0)>>>0>>0;);if(df=q[Ye+8>>2]+df|0,(0|ff)==(0|(cf=cf+1|0)))break}$e=q[a>>2]}if(!(r[$e+4|0]<4||(0|(jf=q[a+332>>2]))<1))for(kf=q[$e+864>>2],lf=q[a+336>>2],_e=df=0;;){if(cf=q[lf+w(_e,20)>>2],q[cf+24>>2]&&!((0|(Ye=q[cf+12>>2]))<1))for(mf=(Ze=q[cf+16>>2])+(Ye<<2)|0,nf=q[kf+(_e<<2)>>2],af=(Ye=df<<2)+q[a+376>>2]|0,bf=Ye+q[a+380>>2]|0,ef=Ye+q[a+384>>2]|0,ff=Ye+q[a+388>>2]|0,gf=Ye+q[a+392>>2]|0,hf=Ye+q[a+396>>2]|0,of=q[$e+1308>>2],pf=q[$e+1304>>2],qf=q[$e+1300>>2],rf=q[$e+1296>>2],sf=q[$e+1292>>2],tf=q[$e+1288>>2];Ye=q[Ze>>2]+nf<<2,q[af>>2]=q[Ye+tf>>2],q[bf>>2]=q[Ye+sf>>2],q[ef>>2]=q[Ye+rf>>2],q[ff>>2]=q[Ye+qf>>2],q[gf>>2]=q[Ye+pf>>2],q[hf>>2]=q[Ye+of>>2],hf=hf+4|0,gf=gf+4|0,ff=ff+4|0,ef=ef+4|0,bf=bf+4|0,af=af+4|0,(Ze=Ze+4|0)>>>0>>0;);if(df=q[cf+8>>2]+df|0,(0|jf)==(0|(_e=_e+1|0)))break}}(a),function(a){var ek,tj=0,vj=0,wj=0,$j=0,ak=0,bk=0,ck=0,dk=0,tj=a+340|0;if(n[q[1815]](tj,q[a+364>>2],q[a+448>>2],q[a+424>>2]),n[q[1816]](tj,q[a+368>>2],q[a+440>>2],q[a+424>>2]),n[q[1817]](tj,q[a+372>>2],q[a+444>>2],q[q[a>>2]+892>>2],2,q[a+424>>2]),!(r[q[a>>2]+4|0]<4||(n[q[1815]](tj,q[a+376>>2],q[a+400>>2],q[a+424>>2]),n[q[1815]](tj,q[a+380>>2],q[a+404>>2],q[a+424>>2]),n[q[1815]](tj,q[a+384>>2],q[a+408>>2],q[a+424>>2]),n[q[1815]](tj,q[a+388>>2],q[a+412>>2],q[a+424>>2]),n[q[1815]](tj,q[a+392>>2],q[a+416>>2],q[a+424>>2]),n[q[1815]](tj,q[a+396>>2],q[a+420>>2],q[a+424>>2]),(0|(bk=q[a+332>>2]))<1))){for(ck=q[a+408>>2],dk=q[a+404>>2],ek=q[a+400>>2],vj=q[a+452>>2],tj=0;q[(wj=$j<<2)+vj>>2]=q[(ak=tj<<2)+ek>>2],q[vj+(4|wj)>>2]=q[ak+dk>>2],q[vj+(8|wj)>>2]=q[ak+ck>>2],$j=$j+4|0,(0|bk)!=(0|(tj=tj+1|0)););for(vj=q[a+456>>2],ak=q[a+420>>2],ck=q[a+416>>2],dk=q[a+412>>2],tj=a=0;q[($j=a<<2)+vj>>2]=q[(wj=tj<<2)+dk>>2],q[vj+(4|$j)>>2]=q[wj+ck>>2],q[vj+(8|$j)>>2]=q[wj+ak>>2],a=a+4|0,(0|bk)!=(0|(tj=tj+1|0)););}}(a),function(a){var Oe,Se,Te,Ue,Ve,We,Xe,Me=0,Ne=0,Pe=0,Qe=0,Re=0;if(1<=(0|(Se=q[a+500>>2])))for(Ue=q[a+504>>2],Te=q[a>>2],Ve=q[Te+1252>>2];;){if(Oe=q[w(Qe,24)+Ue>>2],(q[Oe+28>>2]||q[Oe+24>>2])&&(q[(Me=Qe<<2)+q[a+524>>2]>>2]=q[Oe+12>>2],q[Oe+24>>2])&&!((0|(Pe=q[Oe+12>>2]))<1))for(Pe=(Ne=q[Oe+16>>2])+(Pe<<2)|0,We=q[Me+Ve>>2],Me=q[a+532>>2]+(Re<<2)|0,Xe=q[Te+1284>>2];q[Me>>2]=q[(q[Ne>>2]+We<<2)+Xe>>2],Me=Me+4|0,(Ne=Ne+4|0)>>>0>>0;);if(q[Oe+28>>2]&&!((0|(Me=q[Oe+12>>2]))<1))for(Pe=(Ne=q[Oe+20>>2])+(Me<<2)|0,Me=q[a+528>>2]+(Re<<2)|0;q[Me>>2]=q[Ne>>2],Me=Me+4|0,(Ne=Ne+4|0)>>>0>>0;);if(Re=q[Oe+8>>2]+Re|0,(0|Se)==(0|(Qe=Qe+1|0)))break}}(a),n[q[1815]](a+508|0,q[a+532>>2],q[a+536>>2],0),function(a){var Ck,Dk,Ek,Fk,Gk,Hk,xk=x(0),yk=0,zk=0,Ak=0,Bk=0;x(0);if(L=Ck=L-16|0,Ak=q[a>>2],!(r[Ak+4|0]<5||(0|(Bk=q[a+596>>2]))<1))for(Fk=(zk=q[a+600>>2])+w(Bk,12)|0,Gk=q[a+44>>2],Bk=q[Ak+976>>2];;){if(Ak=(q[zk>>2]<<2)+Gk|0,xk=x(q[Ak>>2]),1<=(0|(yk=q[zk+4>>2])))for(Hk=(a=q[zk+8>>2])+w(yk,48)|0;(yk=q[a+8>>2])&&((Dk=yk+-1|0)>>>0<=1?(yk=q[a+4>>2],Ek=u[Bk+(yk+q[a+12>>2]<<2)>>2],xk=x(Dk-1?xk+x(u[a+44>>2]*x(Ek*u[a+20>>2])):xk+x(u[a+44>>2]*x(x(Ek*u[a+20>>2])+x(u[Bk+(yk+q[a+16>>2]<<2)>>2]*u[a+24>>2]))))):(q[Ck>>2]=yk,Y(4,1024,Ck))),(a=a+48|0)>>>0>>0;);if(xk=(xk=x(xk+x(.0010000000474974513)))>2]=a,!((zk=zk+12|0)>>>0>>0))break}L=16+Ck|0}(a),function(a){var kj,lj,mj,nj,oj,pj,qj,rj,sj,cj=0,ej=0,gj=0,hj=0,ij=0,jj=x(0);if(L=kj=L-16|0,cj=q[a>>2],!(r[cj+4|0]<4||(va(a,q[a+604>>2],q[a+608>>2],q[cj+984>>2],q[a+152>>2],q[cj+796>>2]),ej=q[a>>2],r[ej+4|0]<5))){if(gj=q[a+608>>2],oj=q[ej+992>>2],pj=q[ej+988>>2],1<=(0|(cj=q[a+604>>2]))){for(qj=w(cj,12)+gj|0,rj=q[a+148>>2],lj=q[ej+980>>2];;){if(mj=(q[gj>>2]<<2)+rj|0,ij=q[mj>>2],1<=(0|(hj=q[gj+4>>2])))for(sj=(cj=q[gj+8>>2])+w(hj,48)|0;(hj=q[cj+8>>2])&&((nj=hj+-1|0)>>>0<=1?(hj=q[cj+4>>2],jj=u[(hj+q[cj+12>>2]<<2)+lj>>2],j(x(nj-1?x(u[cj+44>>2]*x(jj*u[cj+20>>2]))+(f(0,ij),k()):x(u[cj+44>>2]*x(x(jj*u[cj+20>>2])+x(u[(hj+q[cj+16>>2]<<2)+lj>>2]*u[cj+24>>2])))+(f(0,ij),k()))),ij=b[0]):(q[kj>>2]=hj,Y(4,1024,kj))),(cj=cj+48|0)>>>0>>0;);if(f(0,ij),jj=k(),u[mj>>2]=jj>>0>>0))break}gj=q[a+608>>2],cj=q[a+604>>2]}fa(cj,gj,pj,q[ej+1288>>2],q[ej+1292>>2],q[ej+1296>>2],q[a+156>>2]),fa(q[a+604>>2],q[a+608>>2],oj,q[ej+1300>>2],q[ej+1304>>2],q[ej+1308>>2],q[a+160>>2])}L=16+kj|0}(a),function(a){var yi,ri=0,si=0,ti=0,ui=0,vi=0,wi=x(0),xi=0,zi=0,Ai=0,Bi=0,Ci=0,Di=0,Ei=0,Fi=0;if(L=yi=L-80|0,vi=q[a>>2],!(r[vi+4|0]<5)){if(Di=q[vi+1028>>2],Ei=q[vi+1024>>2],ti=si=q[a+616>>2],!((0|(ri=q[a+612>>2]))<1)){for(zi=w(ri,12)+si|0,Ai=q[a+276>>2],xi=q[vi+1004>>2];;){if(Bi=Ai+(q[si>>2]<<2)|0,ti=q[Bi>>2],1<=(0|(ui=q[si+4>>2])))for(Fi=(ri=q[si+8>>2])+w(ui,48)|0;(ui=q[ri+8>>2])&&((Ci=ui+-1|0)>>>0<=1?(ui=q[ri+4>>2],wi=u[xi+(ui+q[ri+12>>2]<<2)>>2],j(x(Ci-1?x(u[ri+44>>2]*x(wi*u[ri+20>>2]))+(f(0,ti),k()):x(u[ri+44>>2]*x(x(wi*u[ri+20>>2])+x(u[xi+(ui+q[ri+16>>2]<<2)>>2]*u[ri+24>>2])))+(f(0,ti),k()))),ti=b[0]):(q[64+yi>>2]=ui,Y(4,1024,64+yi|0))),(ri=ri+48|0)>>>0>>0;);if(q[Bi>>2]=ti,!((si=si+12|0)>>>0>>0))break}if(ti=si=q[a+616>>2],!((0|(ri=q[a+612>>2]))<1)){for(zi=w(ri,12)+si|0,Ai=q[a+280>>2],xi=q[q[a>>2]+1008>>2];;){if(Bi=Ai+(q[si>>2]<<2)|0,ti=q[Bi>>2],1<=(0|(ui=q[si+4>>2])))for(Fi=(ri=q[si+8>>2])+w(ui,48)|0;(ui=q[ri+8>>2])&&((Ci=ui+-1|0)>>>0<=1?(ui=q[ri+4>>2],wi=u[xi+(ui+q[ri+12>>2]<<2)>>2],j(x(Ci-1?x(u[ri+44>>2]*x(wi*u[ri+20>>2]))+(f(0,ti),k()):x(u[ri+44>>2]*x(x(wi*u[ri+20>>2])+x(u[xi+(ui+q[ri+16>>2]<<2)>>2]*u[ri+24>>2])))+(f(0,ti),k()))),ti=b[0]):(q[48+yi>>2]=ui,Y(4,1024,48+yi|0))),(ri=ri+48|0)>>>0>>0;);if(q[Bi>>2]=ti,!((si=si+12|0)>>>0>>0))break}if(ti=si=q[a+616>>2],!((0|(ri=q[a+612>>2]))<1)){for(zi=w(ri,12)+si|0,Ai=q[a+268>>2],xi=q[q[a>>2]+996>>2];;){if(Bi=Ai+(q[si>>2]<<2)|0,ti=q[Bi>>2],1<=(0|(ui=q[si+4>>2])))for(Fi=(ri=q[si+8>>2])+w(ui,48)|0;(ui=q[ri+8>>2])&&((Ci=ui+-1|0)>>>0<=1?(ui=q[ri+4>>2],wi=u[xi+(ui+q[ri+12>>2]<<2)>>2],j(x(Ci-1?x(u[ri+44>>2]*x(wi*u[ri+20>>2]))+(f(0,ti),k()):x(u[ri+44>>2]*x(x(wi*u[ri+20>>2])+x(u[xi+(ui+q[ri+16>>2]<<2)>>2]*u[ri+24>>2])))+(f(0,ti),k()))),ti=b[0]):(q[32+yi>>2]=ui,Y(4,1024,32+yi|0))),(ri=ri+48|0)>>>0>>0;);if(f(0,ti),wi=k(),u[Bi>>2]=wi>>0>>0))break}ri=q[a+612>>2],ti=q[a+616>>2]}}}if(fa(ri,ti,Ei,q[vi+1288>>2],q[vi+1292>>2],q[vi+1296>>2],q[a+296>>2]),fa(q[a+612>>2],q[a+616>>2],Di,q[vi+1300>>2],q[vi+1304>>2],q[vi+1308>>2],q[a+300>>2]),!((0|(ri=q[a+612>>2]))<1)){for(ui=(si=q[a+616>>2])+w(ri,12)|0,Di=q[a+284>>2],vi=q[q[a>>2]+1e3>>2];;){if(Ei=Di+(q[si>>2]<<2)|0,ti=q[Ei>>2],1<=(0|(xi=q[si+4>>2])))for(zi=(ri=q[si+8>>2])+w(xi,48)|0;(xi=q[ri+8>>2])&&((Ai=xi+-1|0)>>>0<=1?(xi=q[ri+4>>2],wi=u[vi+(xi+q[ri+12>>2]<<2)>>2],j(x(Ai-1?x(u[ri+44>>2]*x(wi*u[ri+20>>2]))+(f(0,ti),k()):x(u[ri+44>>2]*x(x(wi*u[ri+20>>2])+x(u[vi+(xi+q[ri+16>>2]<<2)>>2]*u[ri+24>>2])))+(f(0,ti),k()))),ti=b[0]):(q[16+yi>>2]=xi,Y(4,1024,16+yi|0))),(ri=ri+48|0)>>>0>>0;);if(f(0,ti),wi=k(),u[Ei>>2]=wi>>0>>0))break}if(!((0|(ri=q[a+612>>2]))<1))for(xi=(si=q[a+616>>2])+w(ri,12)|0,ui=q[a+272>>2],a=q[q[a>>2]+1012>>2];;){if(Di=ui+(q[si>>2]<<2)|0,ti=q[Di>>2],1<=(0|(vi=q[si+4>>2])))for(Ei=(ri=q[si+8>>2])+w(vi,48)|0;(vi=q[ri+8>>2])&&((zi=vi+-1|0)>>>0<=1?(vi=q[ri+4>>2],wi=u[a+(vi+q[ri+12>>2]<<2)>>2],j(x(zi-1?x(u[ri+44>>2]*x(wi*u[ri+20>>2]))+(f(0,ti),k()):x(u[ri+44>>2]*x(x(wi*u[ri+20>>2])+x(u[a+(vi+q[ri+16>>2]<<2)>>2]*u[ri+24>>2])))+(f(0,ti),k()))),ti=b[0]):(q[yi>>2]=vi,Y(4,1024,yi))),(ri=ri+48|0)>>>0>>0;);if(f(0,ti),wi=k(),u[Di>>2]=wi>>0>>0))break}}}L=80+yi|0}(a),function(a){var Zh,di,ei,fi,gi,Sh=0,Uh=0,Vh=0,Wh=0,Xh=x(0),Yh=0,_h=0,$h=0,ai=0,bi=0,ci=0;x(0);if(L=Zh=L-32|0,Vh=q[a>>2],!(r[Vh+4|0]<4||(va(a,q[a+620>>2],q[a+624>>2],q[Vh+1040>>2],q[a+444>>2],q[Vh+892>>2]),Yh=q[a>>2],r[Yh+4|0]<5))){if(fi=q[Yh+1048>>2],gi=q[Yh+1044>>2],Vh=Wh=q[a+624>>2],!((0|(Sh=q[a+620>>2]))<1)){for(bi=w(Sh,12)+Wh|0,ci=q[a+440>>2],_h=q[Yh+1036>>2];;){if(Vh=ci+(q[Wh>>2]<<2)|0,Xh=x(q[Vh>>2]),1<=(0|(Uh=q[Wh+4>>2])))for($h=(Sh=q[Wh+8>>2])+w(Uh,48)|0;(Uh=q[Sh+8>>2])&&((ai=Uh+-1|0)>>>0<=1?(Uh=q[Sh+4>>2],di=u[_h+(Uh+q[Sh+12>>2]<<2)>>2],Xh=x(ai-1?Xh+x(u[Sh+44>>2]*x(di*u[Sh+20>>2])):Xh+x(u[Sh+44>>2]*x(x(di*u[Sh+20>>2])+x(u[_h+(Uh+q[Sh+16>>2]<<2)>>2]*u[Sh+24>>2]))))):(q[16+Zh>>2]=Uh,Y(4,1024,16+Zh|0))),(Sh=Sh+48|0)>>>0<$h>>>0;);if(Xh=(Xh=x(Xh+x(.0010000000474974513)))>2]=Sh,!((Wh=Wh+12|0)>>>0>>0))break}if(Vh=Wh=q[a+624>>2],!((0|(Sh=q[a+620>>2]))<1)){for(bi=w(Sh,12)+Wh|0,ci=q[a+448>>2],_h=q[q[a>>2]+1032>>2];;){if($h=ci+(q[Wh>>2]<<2)|0,Vh=q[$h>>2],1<=(0|(Uh=q[Wh+4>>2])))for(ai=(Sh=q[Wh+8>>2])+w(Uh,48)|0;(Uh=q[Sh+8>>2])&&((ei=Uh+-1|0)>>>0<=1?(Uh=q[Sh+4>>2],Xh=u[_h+(Uh+q[Sh+12>>2]<<2)>>2],j(x(ei-1?x(u[Sh+44>>2]*x(Xh*u[Sh+20>>2]))+(f(0,Vh),k()):x(u[Sh+44>>2]*x(x(Xh*u[Sh+20>>2])+x(u[_h+(Uh+q[Sh+16>>2]<<2)>>2]*u[Sh+24>>2])))+(f(0,Vh),k()))),Vh=b[0]):(q[Zh>>2]=Uh,Y(4,1024,Zh))),(Sh=Sh+48|0)>>>0>>0;);if(f(0,Vh),Xh=k(),u[$h>>2]=Xh>>0>>0))break}Sh=q[a+620>>2],Vh=q[a+624>>2]}}fa(Sh,Vh,gi,q[Yh+1288>>2],q[Yh+1292>>2],q[Yh+1296>>2],q[a+452>>2]),fa(q[a+620>>2],q[a+624>>2],fi,q[Yh+1300>>2],q[Yh+1304>>2],q[Yh+1308>>2],q[a+456>>2])}L=32+Zh|0}(a),function(a){var Og,Pg,Qg,Rg,Sg,Tg,Jg=0,Kg=0,Lg=0,Mg=0,Ng=x(0);if(L=Og=L-16|0,Kg=q[a>>2],!(r[Kg+4|0]<5||(0|(Mg=q[a+628>>2]))<1))for(Rg=(Lg=q[a+632>>2])+w(Mg,12)|0,Sg=q[a+536>>2],Mg=q[Kg+1284>>2];;){if(Pg=(q[Lg>>2]<<2)+Sg|0,Kg=q[Pg>>2],1<=(0|(Jg=q[Lg+4>>2])))for(Tg=(a=q[Lg+8>>2])+w(Jg,48)|0;(Jg=q[a+8>>2])&&((Qg=Jg+-1|0)>>>0<=1?(Jg=q[a+4>>2],Ng=u[Mg+(Jg+q[a+12>>2]<<2)>>2],j(x(Qg-1?x(u[a+44>>2]*x(Ng*u[a+20>>2]))+(f(0,Kg),k()):x(u[a+44>>2]*x(x(Ng*u[a+20>>2])+x(u[Mg+(Jg+q[a+16>>2]<<2)>>2]*u[a+24>>2])))+(f(0,Kg),k()))),Kg=b[0]):(q[Og>>2]=Jg,Y(4,1024,Og))),(a=a+48|0)>>>0>>0;);if(f(0,Kg),Ng=k(),u[Pg>>2]=Ng>>0>>0))break}L=16+Og|0}(a),function(a){var Nh,Qh,jh=0,Lh=0,Mh=0,Oh=x(0),Ph=0;if(1<=(0|(jh=q[a+4>>2])))for(Qh=(Lh=q[a+8>>2])+w(jh,12)|0,jh=q[a+40>>2],Mh=q[a+52>>2],a=Nh=q[a+48>>2];q[jh>>2]&&(Oh=u[Mh>>2],u[a>>2]=Oh,-1!=(0|(Ph=q[Lh+4>>2])))&&(u[a>>2]=Oh*u[(Ph<<2)+Nh>>2]),a=a+4|0,Mh=Mh+4|0,jh=jh+4|0,(Lh=Lh+12|0)>>>0>>0;);}(a),function(a){var ih,fh=0,gh=0,hh=0;if(1<=(0|(ih=q[a+304>>2])))for(fh=q[a+308>>2],gh=q[a+312>>2];q[gh>>2]&&n[q[fh+20>>2]](a,hh),gh=gh+4|0,fh=fh+32|0,(0|ih)!=(0|(hh=hh+1|0)););}(a),function(a){var Wg,Xg,$g,dh,eh,Ug=0,Vg=0,Yg=(x(0),x(0),0),Zg=0,_g=0,ah=(x(0),0),bh=0,ch=0;if(1<=(0|(Ug=q[a+332>>2])))for(bh=(Vg=q[a+336>>2])+w(Ug,20)|0,ch=q[a+308>>2],ah=q[a+316>>2],eh=q[a+48>>2],Ug=q[a+448>>2],Yg=q[a+444>>2],_g=q[a+424>>2];q[_g>>2]&&(-1!=(0|(Zg=q[Vg+4>>2]))&&(u[Ug>>2]=u[(Zg<<2)+eh>>2]*u[Ug>>2]),-1!=(0|(Zg=q[Vg+8>>2])))&&(u[Ug>>2]=u[ah+(Zg<<2)>>2]*u[Ug>>2],dh=q[Yg>>2],n[q[24+(ch+(Zg<<5)|0)>>2]](a,Zg,dh,dh,q[Vg+16>>2])),Yg=Yg+4|0,Ug=Ug+4|0,_g=_g+4|0,(Vg=Vg+20|0)>>>0>>0;);if(!(r[q[a>>2]+4|0]<4||(0|(Ug=q[a+332>>2]))<1))for(Zg=(Yg=q[a+336>>2])+w(Ug,20)|0,bh=q[a+328>>2],ch=q[a+324>>2],Vg=q[a+452>>2],Ug=q[a+456>>2],_g=q[a+424>>2];q[_g>>2]&&-1!=(0|(a=q[Yg+8>>2]))&&(a=(ah=a<<4)+ch|0,Wg=x(u[Vg>>2]*u[a>>2]),u[Vg>>2]=Wg,Xg=x(u[Vg+4>>2]*u[a+4>>2]),u[Vg+4>>2]=Xg,$g=u[a+8>>2],q[Vg+12>>2]=1065353216,u[Vg+4>>2]=Xg>2]=Wg>2]),u[Vg+8>>2]=Wg>2],Xg=u[(a=bh+ah|0)>>2],Wg=x(x(Wg+Xg)-x(Wg*Xg)),u[Ug>>2]=Wg,Xg=u[Ug+4>>2],$g=u[a+4>>2],Xg=x(x(Xg+$g)-x(Xg*$g)),u[Ug+4>>2]=Xg,$g=u[a+8>>2],q[Ug+12>>2]=1065353216,u[Ug+4>>2]=Xg>2]=Wg>2],Wg=x(x($g+Wg)-x(Wg*$g)),u[Ug+8>>2]=Wg>>0>>0;);}(a),function(a){var Mn,Nn,Pn,Lo,Mo,No,Oo,Po,Qo,Ro,So,To,Uo,Vo,Wo,Xo,Yo,Zo,_o,$o,On=0;x(0),x(0),x(0),x(0),x(0),x(0),x(0);if(1<=(0|(Po=q[a+500>>2])))for(_o=q[a+536>>2],Qo=q[a+444>>2],$o=q[a+504>>2];;){if(a=w(On,24)+$o|0,0<(0|(Ro=q[a+12>>2])))for(Pn=u[(On<<2)+_o>>2],So=q[a+20>>2],To=q[a+16>>2],Uo=q[(q[a+4>>2]<<2)+Qo>>2],Vo=q[(q[a+8>>2]<<2)+Qo>>2],a=0;Wo=u[((Mn=1|a)<<2)+To>>2],Nn=s[(a<<1)+So>>1]<<3&262136,Lo=u[(Xo=(4|Nn)+Uo|0)>>2],Mn=s[(Mn<<1)+So>>1]<<3&262136,Mo=u[(Yo=(4|Mn)+Vo|0)>>2],No=u[(Nn=Nn+Uo|0)>>2],Zo=u[(a<<2)+To>>2],Oo=u[(Mn=Mn+Vo|0)>>2],u[Nn>>2]=No+x(Pn*x(Zo*x(Oo-No))),u[Xo>>2]=Lo+x(Pn*x(Zo*x(Mo-Lo))),u[Mn>>2]=Oo+x(Pn*x(Wo*x(No-Oo))),u[Yo>>2]=Mo+x(Pn*x(Wo*x(Lo-Mo))),(0|(a=a+2|0))<(0|Ro););if(!((0|(On=On+1|0))<(0|Po)))break}}(a),n[q[1818]](a),function(a){var Oc,Pc,Rc,Sc,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Qc=0;if(!((0|(Oc=q[a+480>>2]))<1)){for(Hc=(Pc=q[a+484>>2])+w(Oc,28)|0,Kc=q[a+424>>2],Lc=q[a+40>>2],Ic=q[a+44>>2],Qc=q[a+440>>2],Ec=Pc;;){if(1<=(0|(Jc=q[Ec+4>>2])))for(Nc=Ec+20|0,Mc=q[Ec+12>>2],Fc=0;Rc=q[4+(Gc=Mc+(Fc<<4)|0)>>2]<<2,Gc=1==q[(Sc=Gc)>>2],q[Sc+12>>2]=q[(q[(Gc?Lc:Kc)+Rc>>2]?(Gc?Ic:Qc)+Rc|0:Nc)>>2],(0|(Fc=Fc+1|0))<(0|Jc););if(!((Ec=Ec+28|0)>>>0>>0))break}if(!((0|Oc)<1))for(Qc=q[a+436>>2],Lc=0;;){if(Hc=w(Lc,28)+Pc|0,!(q[(Kc=Hc)+24>>2]<1)){for(Gc=q[a+488>>2],Fc=0;q[Gc+(Fc<<2)>>2]=-1,(0|(Fc=Fc+1|0))<(0|(Ec=q[Kc+24>>2])););if(!((0|Ec)<1))for(Ec=q[a+496>>2],Fc=0;q[Ec+(Fc<<2)>>2]=-1,(0|(Fc=Fc+1|0))>2];);}if(!(q[Hc+4>>2]<1)){for(Ic=q[a+492>>2],Fc=0;q[Ic+(Fc<<2)>>2]=-1,(0|(Fc=Fc+1|0))<(0|(Ec=q[Hc+4>>2])););if(!((0|Ec)<1))for(Jc=q[Hc+12>>2],Nc=q[a+496>>2],Fc=0;Mc=q[12+(Jc+(Fc<<4)|0)>>2]-q[Hc+20>>2]<<2,Ec=-1==(0|(Ec=q[(Gc=Mc+Nc|0)>>2]))?Mc+q[a+488>>2]|0:Ic+(Ec<<2)|0,q[Ec>>2]=Fc,(0|(Fc=(q[Gc>>2]=Fc)+1|0))>2];);}if(1<=(0|(Ec=q[Kc+24>>2])))for(Ic=q[Hc+8>>2],Nc=q[a+488>>2],Jc=0;;){if(-1!=(0|(Fc=q[Nc+(Jc<<2)>>2]))){for(Mc=q[a+492>>2],Gc=q[Hc+12>>2];Ic=(Ec=1==q[(Ec=Gc+(Fc<<4)|0)>>2]?(Ec=w(q[Ec+8>>2],28)+Pc|0,q[Ec+8>>2]=Ic,q[Ec>>2]):(q[Qc+(q[Ec+4>>2]<<2)>>2]=Ic,1))+Ic|0,(0|Fc)<(0|(Ec=q[Mc+(Fc<<2)>>2]))&&-1!=(0|(Fc=Ec)););Ec=q[Kc+24>>2]}if(!((0|(Jc=Jc+1|0))<(0|Ec)))break}if((0|Oc)==(0|(Lc=Lc+1|0)))break}}}(a),function(a){var yg=0,zg=0,Ag=0,Bg=0,Dg=0,Eg=x(0),Fg=0,Gg=0,Cg=q[a+332>>2];if(q[a+644>>2]){if(!(((q[a+428>>2]=0)|Cg)<1))for(;yg=126,Fg=q[a+432>>2]+Ag|0,!q[(zg=Ag<<2)+q[a+424>>2]>>2]|u[zg+q[a+448>>2]>>2]==x(0)||(yg=127),o[0|Fg]=yg,(0|Cg)!=(0|(Ag=Ag+1|0)););}else if(q[a+428>>2]){if(yg=r[q[a>>2]+4|0],!(((q[a+428>>2]=0)|Cg)<1))if(4<=yg>>>0)for(;Eg=u[(yg=Ag<<2)+q[a+448>>2]>>2],Bg=q[yg+q[a+424>>2]>>2],zg=Eg!=x(0)&0!=(0|Bg),Fg=q[a+432>>2]+Ag|0,zg=(0|zg)==(1&o[0|Fg])?zg:2|zg,zg=Eg!=u[yg+q[a+468>>2]>>2]?4|zg:zg,zg=q[yg+q[a+440>>2]>>2]==q[yg+q[a+464>>2]>>2]?zg:8|zg,yg=q[yg+q[a+436>>2]>>2]==q[yg+q[a+460>>2]>>2]?zg:16|zg,yg=Bg?32|yg:yg,Bg=(zg=Gg<<2)+q[a+452>>2]|0,Dg=zg+q[a+472>>2]|0,(u[Bg>>2]!=u[Dg>>2]|u[Bg+4>>2]!=u[Dg+4>>2]|(u[Bg+8>>2]!=u[Dg+8>>2]|u[Bg+12>>2]!=u[Dg+12>>2])||(Bg=zg+q[a+456>>2]|0,zg=zg+q[a+476>>2]|0,u[Bg>>2]!=u[zg>>2]|u[Bg+4>>2]!=u[zg+4>>2]|u[Bg+8>>2]!=u[zg+8>>2])||u[Bg+12>>2]!=u[zg+12>>2])&&(yg|=64),o[0|Fg]=yg,Gg=Gg+4|0,(0|Cg)!=(0|(Ag=Ag+1|0)););else for(;Eg=u[(yg=Ag<<2)+q[a+448>>2]>>2],Bg=q[yg+q[a+424>>2]>>2],zg=Eg!=x(0)&0!=(0|Bg),Dg=q[a+432>>2]+Ag|0,zg=(0|zg)==(1&o[0|Dg])?zg:2|zg,zg=Eg!=u[yg+q[a+468>>2]>>2]?4|zg:zg,zg=q[yg+q[a+440>>2]>>2]==q[yg+q[a+464>>2]>>2]?zg:8|zg,yg=q[yg+q[a+436>>2]>>2]==q[yg+q[a+460>>2]>>2]?zg:16|zg,o[0|Dg]=Bg?32|yg:yg,(0|Cg)!=(0|(Ag=Ag+1|0)););}else if(!((0|Cg)<1))for(;!q[(yg=Ag<<2)+q[a+424>>2]>>2]|u[yg+q[a+448>>2]>>2]==x(0)?(yg=q[a+432>>2]+Ag|0,o[0|yg]=254&r[0|yg]):(yg=q[a+432>>2]+Ag|0,o[0|yg]=1|r[0|yg]),(0|Cg)!=(0|(Ag=Ag+1|0)););}(a),q[a+644>>2]=0}function va(a,Wa,Xa,Ya,Za,$a){var fb,gb,hb,jb,kb,cb,db,ab=0,bb=0,eb=0,ib=0;if(L=cb=L-32|0,1<=(0|Wa))for(kb=w(Wa,12)+Xa|0;;){if(!((0|(ab=q[Xa+4>>2]))<1))if(fb=(Wa=q[Xa+8>>2])+w(ab,48)|0,ab=q[Xa>>2]<<2,1<=(0|(db=q[ab+$a>>2])))for(db<<=1,gb=q[q[a>>2]+1052>>2],hb=q[Za+ab>>2];;){b:if(ab=q[Wa+8>>2]){c:{if((bb=ab+-1|0)>>>0<=1){if(ab=(q[Wa+4>>2]<<2)+Ya|0,ib=(q[ab+(q[Wa+12>>2]<<2)>>2]<<2)+gb|0,bb-1)break c;for(eb=(q[ab+(q[Wa+16>>2]<<2)>>2]<<2)+gb|0,ab=0;u[(jb=(bb=ab<<2)+hb|0)>>2]=u[jb>>2]+x(u[Wa+44>>2]*x(x(u[bb+ib>>2]*u[Wa+20>>2])+x(u[bb+eb>>2]*u[Wa+24>>2]))),(0|db)!=(0|(ab=ab+1|0)););break b}q[cb>>2]=ab,Y(4,1024,cb);break b}for(ab=0;u[(eb=(bb=ab<<2)+hb|0)>>2]=u[eb>>2]+x(u[Wa+44>>2]*x(u[bb+ib>>2]*u[Wa+20>>2])),(0|db)!=(0|(ab=ab+1|0)););}if(!((Wa=Wa+48|0)>>>0>>0))break}else for(;3<=(ab=q[Wa+8>>2])>>>0&&(q[16+cb>>2]=ab,Y(4,1024,16+cb|0)),(Wa=Wa+48|0)>>>0>>0;);if(!((Xa=Xa+12|0)>>>0>>0))break}L=32+cb|0}function wa(a,Wa,Xa){var Ya;Wa|=0,Xa|=0,L=Ya=L+-64|0;a:{if(a|=0)if(Wa)if((Wa+15&-16)!=(0|Wa))q[52+Ya>>2]=1522,q[48+Ya>>2]=2361,Y(4,1294,48+Ya|0);else{if(Wa=function(a,Gl,Hl){var lm,Zl=0,fm=0,gm=0,mm=0,nm=0,om=0,pm=0,qm=0,rm=0,sm=0,tm=0,um=0,vm=0,wm=x(0),xm=0,ym=0,zm=0,Am=0,Bm=0;if(ca(16+(L=lm=L-576|0)|0,0,560),Fa(a,16+lm|0,12+lm|0),(mm=q[12+lm>>2])>>>0<=Hl>>>0){if(Zl=(fm=ca(Gl,0,mm))+q[16+lm>>2]|0,q[Zl+8>>2]=fm+q[20+lm>>2],q[Zl+40>>2]=fm+q[24+lm>>2],q[Zl+44>>2]=fm+q[28+lm>>2],q[Zl+48>>2]=fm+q[32+lm>>2],q[Zl+52>>2]=fm+q[36+lm>>2],q[Zl+16>>2]=fm+q[40+lm>>2],q[Zl+24>>2]=fm+q[44+lm>>2],q[Zl+28>>2]=fm+q[48+lm>>2],q[Zl+32>>2]=fm+q[52+lm>>2],q[Zl+36>>2]=fm+q[56+lm>>2],Gl=q[a+704>>2],q[Zl+308>>2]=fm+q[60+lm>>2],q[Zl+312>>2]=fm+q[64+lm>>2],q[Zl+316>>2]=fm+q[68+lm>>2],q[Zl+320>>2]=fm+q[72+lm>>2],q[Zl+324>>2]=fm+q[76+lm>>2],q[Zl+328>>2]=fm+q[80+lm>>2],q[Zl+60>>2]=fm+q[84+lm>>2],q[Zl+144>>2]=fm+q[88+lm>>2],q[Zl+148>>2]=fm+q[92+lm>>2],Hl=fm+q[96+lm>>2]|0,q[Zl+152>>2]=Hl,!((0|(mm=q[Gl+8>>2]))<1)&&(Gl=fm+q[100+lm>>2]|0,q[Hl>>2]=Gl,1!=(0|mm)))for(Hl=1;Gl=(15+(q[q[a+796>>2]+(gm<<2)>>2]<<3)&-16)+Gl|0,q[q[Zl+152>>2]+(Hl<<2)>>2]=Gl,(0|mm)!=(0|(Hl=(gm=Hl)+1|0)););if(q[Zl+156>>2]=fm+q[104+lm>>2],q[Zl+160>>2]=fm+q[108+lm>>2],q[Zl+68>>2]=fm+q[112+lm>>2],q[Zl+76>>2]=fm+q[116+lm>>2],q[Zl+80>>2]=fm+q[120+lm>>2],q[Zl+84>>2]=fm+q[124+lm>>2],q[Zl+88>>2]=fm+q[128+lm>>2],q[Zl+92>>2]=fm+q[132+lm>>2],q[Zl+96>>2]=fm+q[136+lm>>2],q[Zl+100>>2]=fm+q[140+lm>>2],q[Zl+104>>2]=fm+q[144+lm>>2],q[Zl+108>>2]=fm+q[148+lm>>2],q[Zl+112>>2]=fm+q[152+lm>>2],q[Zl+116>>2]=fm+q[156+lm>>2],q[Zl+120>>2]=fm+q[160+lm>>2],q[Zl+124>>2]=fm+q[164+lm>>2],q[Zl+128>>2]=fm+q[168+lm>>2],q[Zl+132>>2]=fm+q[172+lm>>2],q[Zl+136>>2]=fm+q[176+lm>>2],q[Zl+140>>2]=fm+q[180+lm>>2],q[Zl+168>>2]=fm+q[184+lm>>2],q[Zl+264>>2]=fm+q[188+lm>>2],q[Zl+268>>2]=fm+q[192+lm>>2],q[Zl+272>>2]=fm+q[196+lm>>2],q[Zl+276>>2]=fm+q[200+lm>>2],q[Zl+280>>2]=fm+q[204+lm>>2],q[Zl+284>>2]=fm+q[208+lm>>2],q[Zl+288>>2]=fm+q[212+lm>>2],q[Zl+292>>2]=fm+q[216+lm>>2],q[Zl+296>>2]=fm+q[220+lm>>2],q[Zl+300>>2]=fm+q[224+lm>>2],q[Zl+176>>2]=fm+q[228+lm>>2],q[Zl+184>>2]=fm+q[232+lm>>2],q[Zl+188>>2]=fm+q[236+lm>>2],q[Zl+192>>2]=fm+q[240+lm>>2],q[Zl+196>>2]=fm+q[244+lm>>2],q[Zl+200>>2]=fm+q[248+lm>>2],q[Zl+204>>2]=fm+q[252+lm>>2],q[Zl+208>>2]=fm+q[256+lm>>2],q[Zl+212>>2]=fm+q[260+lm>>2],q[Zl+216>>2]=fm+q[264+lm>>2],q[Zl+220>>2]=fm+q[268+lm>>2],q[Zl+224>>2]=fm+q[272+lm>>2],q[Zl+228>>2]=fm+q[276+lm>>2],q[Zl+232>>2]=fm+q[280+lm>>2],q[Zl+236>>2]=fm+q[284+lm>>2],q[Zl+240>>2]=fm+q[288+lm>>2],q[Zl+244>>2]=fm+q[292+lm>>2],q[Zl+248>>2]=fm+q[296+lm>>2],q[Zl+252>>2]=fm+q[300+lm>>2],q[Zl+256>>2]=fm+q[304+lm>>2],q[Zl+260>>2]=fm+q[308+lm>>2],Gl=q[a+704>>2],q[Zl+336>>2]=fm+q[312+lm>>2],q[Zl+424>>2]=fm+q[316+lm>>2],q[Zl+432>>2]=fm+q[320+lm>>2],q[Zl+436>>2]=fm+q[324+lm>>2],q[Zl+440>>2]=fm+q[328+lm>>2],Hl=fm+q[332+lm>>2]|0,q[Zl+444>>2]=Hl,!((0|(mm=q[Gl+16>>2]))<1)&&(gm=fm+q[336+lm>>2]|0,q[Hl>>2]=gm,(Hl=1)!=(0|mm)))for(Gl=0;gm=(15+(q[q[a+892>>2]+(Gl<<2)>>2]<<3)&-16)+gm|0,q[q[Zl+444>>2]+(Hl<<2)>>2]=gm,(0|mm)!=(0|(Hl=(Gl=Hl)+1|0)););if(q[Zl+448>>2]=fm+q[340+lm>>2],q[Zl+452>>2]=fm+q[344+lm>>2],q[Zl+456>>2]=fm+q[348+lm>>2],q[Zl+460>>2]=fm+q[352+lm>>2],q[Zl+464>>2]=fm+q[356+lm>>2],q[Zl+468>>2]=fm+q[360+lm>>2],q[Zl+472>>2]=fm+q[364+lm>>2],q[Zl+476>>2]=fm+q[368+lm>>2],q[Zl+344>>2]=fm+q[372+lm>>2],q[Zl+352>>2]=fm+q[376+lm>>2],q[Zl+356>>2]=fm+q[380+lm>>2],q[Zl+360>>2]=fm+q[384+lm>>2],q[Zl+364>>2]=fm+q[388+lm>>2],q[Zl+368>>2]=fm+q[392+lm>>2],q[Zl+372>>2]=fm+q[396+lm>>2],q[Zl+376>>2]=fm+q[400+lm>>2],q[Zl+380>>2]=fm+q[404+lm>>2],q[Zl+384>>2]=fm+q[408+lm>>2],q[Zl+388>>2]=fm+q[412+lm>>2],q[Zl+392>>2]=fm+q[416+lm>>2],q[Zl+396>>2]=fm+q[420+lm>>2],q[Zl+400>>2]=fm+q[424+lm>>2],q[Zl+404>>2]=fm+q[428+lm>>2],q[Zl+408>>2]=fm+q[432+lm>>2],q[Zl+412>>2]=fm+q[436+lm>>2],q[Zl+416>>2]=fm+q[440+lm>>2],q[Zl+420>>2]=fm+q[444+lm>>2],Gl=q[448+lm>>2],Hl=q[452+lm>>2],q[Zl+552>>2]=fm+q[456+lm>>2],q[Zl+548>>2]=Hl+fm,q[Zl+544>>2]=Gl+fm,q[Zl+560>>2]=fm+q[460+lm>>2],Gl=q[a+704>>2],pm=fm+q[464+lm>>2]|0,q[Zl+568>>2]=pm,1<=(0|(om=q[Gl+48>>2])))for(gm=fm+q[468+lm>>2]|0,Gl=fm+q[472+lm>>2]|0,nm=fm+q[476+lm>>2]|0,qm=q[a+1072>>2],Hl=0;mm=pm+w(Hl,36)|0,q[mm+20>>2]=nm,q[mm+16>>2]=Gl,q[mm>>2]=gm,gm=((mm=q[qm+(Hl<<2)>>2])<<2)+gm|0,nm=(mm=1<>2],mm=fm+q[516+lm>>2]|0,q[Zl+484>>2]=mm,1<=(0|(Gl=q[Gl+72>>2])))for(gm=fm+q[520+lm>>2]|0,nm=q[a+1212>>2],Hl=0;q[12+(mm+w(Hl,28)|0)>>2]=gm,gm=(q[nm+(Hl<<2)>>2]<<4)+gm|0,(0|Gl)!=(0|(Hl=Hl+1|0)););q[Zl+488>>2]=fm+q[524+lm>>2],q[Zl+492>>2]=fm+q[528+lm>>2],q[Zl+496>>2]=fm+q[532+lm>>2],q[Zl+504>>2]=fm+q[536+lm>>2],q[Zl+536>>2]=fm+q[540+lm>>2],q[Zl+512>>2]=fm+q[544+lm>>2],q[Zl+520>>2]=fm+q[548+lm>>2],q[Zl+524>>2]=fm+q[552+lm>>2],q[Zl+528>>2]=fm+q[556+lm>>2],q[Zl+532>>2]=fm+q[560+lm>>2];c:{if(4<=(om=r[a+4|0])>>>0){if(q[Zl+576>>2]=fm+q[480+lm>>2],q[Zl+584>>2]=fm+q[484+lm>>2],Gl=q[a+704>>2],Hl=q[492+lm>>2],mm=fm+q[488+lm>>2]|0,q[Zl+592>>2]=mm,1<=(0|(Gl=q[Gl+104>>2])))for(gm=Hl+fm|0,nm=q[a+1104>>2],Hl=0;q[40+(mm+w(Hl,48)|0)>>2]=gm,gm=(q[nm+(Hl<<2)>>2]<<2)+gm|0,(0|Gl)!=(0|(Hl=Hl+1|0)););q[Zl+608>>2]=fm+q[500+lm>>2],q[Zl+624>>2]=fm+q[508+lm>>2]}else{if(Gl=q[572+lm>>2],Hl=q[568+lm>>2],q[Zl+636>>2]=fm+q[564+lm>>2],q[Zl+640>>2]=Hl+fm,q[q[a+704>>2]+20>>2]<1)break c;for(mm=Gl+fm|0,pm=0;;){e:{if((0|(gm=q[(Gl=pm<<2)+q[a+952>>2]>>2]))<=0)Gl=Gl+q[Zl+636>>2]|0;else{for(nm=gm+(Hl=q[Gl+q[a+948>>2]>>2])|0,qm=q[a+1060>>2],gm=0;gm=q[qm+(Hl<<2)>>2]+gm|0,(0|(Hl=Hl+1|0))<(0|nm););if(Gl=Gl+q[Zl+636>>2]|0,Hl=mm,gm)break e}Hl=gm=0}if(q[Gl>>2]=Hl,mm=(gm<<2)+mm|0,!((0|(pm=pm+1|0))>2]+20>>2]))break}}om>>>0<5||(q[Zl+600>>2]=fm+q[496+lm>>2],q[Zl+616>>2]=fm+q[504+lm>>2],q[Zl+632>>2]=fm+q[512+lm>>2])}q[Zl+644>>2]=1,q[Zl>>2]=a,q[Zl+648>>2]=1&o[q[a+708>>2]+20|0],fm=q[a+704>>2],pm=q[fm+20>>2];g:if(!((0|(q[Zl+540>>2]=pm))<1)){if(Gl=pm+-1|0,qm=q[a+952>>2],rm=q[a+940>>2],sm=q[a+932>>2],tm=q[a+936>>2],um=q[a+924>>2],vm=q[a+928>>2],xm=q[Zl+552>>2],zm=q[Zl+544>>2],om>>>0<4)for(;;)if(Hl=zm+w(Gl,52)|0,gm=(mm=Gl<<2)+vm|(q[Hl>>2]=0),q[Hl+4>>2]=q[gm>>2],q[Hl+8>>2]=q[(nm=mm+um|0)>>2],u[Hl+12>>2]=u[nm>>2]-u[gm>>2],q[Hl+16>>2]=q[mm+tm>>2],q[Hl+44>>2]=q[(gm=mm+sm|0)>>2],wm=Aa(x(q[mm+rm>>2])),u[Hl+20>>2]=wm,u[Hl+24>>2]=wm*x(1.5),ym=q[mm+qm>>2],nm=0,nm=(q[Hl+32>>2]=ym)?q[Zl+560>>2]+w(q[mm+q[a+948>>2]>>2],28)|0:nm,q[Hl+48>>2]=1,q[Hl+28>>2]=nm,q[mm+xm>>2]=q[gm>>2],Hl=0<(0|Gl),Gl=Gl+-1|0,!Hl)break g;for(ym=q[a+960>>2],Bm=q[a+944>>2];Hl=zm+w(Gl,52)|0,q[Hl>>2]=q[(gm=Gl<<2)+Bm>>2],q[Hl+4>>2]=q[(mm=gm+vm|0)>>2],q[Hl+8>>2]=q[(nm=gm+um|0)>>2],u[Hl+12>>2]=u[nm>>2]-u[mm>>2],q[Hl+16>>2]=q[gm+tm>>2],q[Hl+44>>2]=q[(Am=gm+sm|0)>>2],wm=Aa(x(q[gm+rm>>2])),u[Hl+20>>2]=wm,u[Hl+24>>2]=wm*x(1.5),nm=q[gm+qm>>2],q[Hl+32>>2]=nm,q[Hl+28>>2]=nm?q[Zl+560>>2]+w(q[gm+q[a+948>>2]>>2],28)|0:0,mm=q[gm+ym>>2],mm=(q[Hl+40>>2]=mm)?q[Zl+584>>2]+w(q[gm+q[a+956>>2]>>2],28)|0:0,q[Hl+48>>2]=1,q[Hl+36>>2]=mm,q[gm+xm>>2]=q[Am>>2],Hl=0<(0|Gl),Gl=Gl+-1|0,Hl;);}if(4<=om>>>0?(q[Zl+548>>2]=q[a+944>>2],mm=a):(ca(q[Zl+548>>2],0,pm<<2),mm=q[Zl>>2],fm=q[mm+704>>2]),gm=q[fm+52>>2],1<=(0|(q[Zl+556>>2]=gm)))for(Hl=q[mm+1056>>2],nm=q[mm+1192>>2],pm=q[mm+1060>>2],om=q[Zl+560>>2];Gl=om+w(gm=gm+-1|0,28)|0,q[Gl>>2]=q[(qm=gm<<2)+pm>>2],qm=q[Hl+qm>>2],q[Gl+24>>2]=1,q[Gl+16>>2]=0,q[Gl+20>>2]=1,q[Gl+8>>2]=0,q[Gl+12>>2]=0,q[Gl+4>>2]=nm+(qm<<2),0<(0|gm););if(gm=q[fm+48>>2],1<=(0|(q[Zl+564>>2]=gm))){for(;;){if(Gl=q[Zl+568>>2]+w(gm=gm+-1|0,36)|0,nm=q[(fm=gm<<2)+q[mm+1072>>2]>>2],1<=(0|(q[Gl+4>>2]=nm)))for(Hl=0;q[q[Gl>>2]+(Hl<<2)>>2]=q[Zl+560>>2]+w(q[q[mm+1064>>2]+(q[fm+q[mm+1068>>2]>>2]+Hl<<2)>>2],28),(0|nm)!=(0|(Hl=Hl+1|0)););if(q[Gl+24>>2]=1,q[Gl+28>>2]=1,q[Gl+8>>2]=1<>2],fm=q[mm+704>>2]}if(Gl=q[fm>>2],(0|(q[Zl+4>>2]=Gl))<1)Hl=0;else{for(qm=q[mm+732>>2],rm=q[mm+736>>2],sm=q[mm+740>>2],nm=q[mm+720>>2],tm=q[Zl+52>>2],pm=q[Zl+568>>2],um=q[Zl+8>>2],gm=Gl;om=um+w(gm=gm+-1|0,12)|0,q[om>>2]=pm+w(q[(Hl=gm<<2)+nm>>2],36),q[om+4>>2]=q[Hl+sm>>2],q[om+8>>2]=q[Hl+rm>>2],u[Hl+tm>>2]=q[Hl+qm>>2]?x(1):x(0),0<(0|gm););for(om=q[Zl+16>>2],Hl=0;gm=q[8+(pm+w(q[(qm=(Gl=Gl+-1|0)<<2)+nm>>2],36)|0)>>2],Hl=Hl+(q[om+qm>>2]=gm)|0,0<(0|Gl););Gl=q[Zl+4>>2]}if(q[Zl+12>>2]=Gl,q[Zl+20>>2]=Hl,Gl=q[fm+4>>2],1<=(0|(q[Zl+304>>2]=Gl))){for(;Hl=q[Zl+308>>2]+((Gl=Gl+-1|0)<<5)|0,q[Hl>>2]=q[Zl+568>>2]+w(q[(gm=Gl<<2)+q[mm+752>>2]>>2],36),q[Hl+4>>2]=q[gm+q[mm+764>>2]>>2],q[Hl+8>>2]=q[gm+q[mm+768>>2]>>2],nm=q[gm+q[mm+772>>2]>>2],q[Hl+12>>2]=nm,fm=q[gm+q[mm+776>>2]>>2],q[Hl+16>>2]=fm,q[Hl+28>>2]=q[gm+q[mm+760>>2]>>2],nm>>>0<=1?nm-1?(q[20+(q[Zl+60>>2]+w(fm,24)|0)>>2]=Gl,q[Hl+24>>2]=1,q[Hl+20>>2]=2):(q[8+(q[Zl+168>>2]+w(fm,12)|0)>>2]=Gl,q[Hl+24>>2]=3,q[Hl+20>>2]=4):Y(4,1179,0),0<(0|Gl););mm=q[Zl>>2],fm=q[mm+704>>2]}gm=q[fm+8>>2];k:if(!((0|(q[Zl+56>>2]=gm))<1)){if(Hl=gm+-1|0,pm=q[mm+796>>2],om=q[mm+804>>2],qm=q[mm+800>>2],rm=q[mm+780>>2],sm=q[Zl+568>>2],tm=q[Zl+60>>2],r[mm+4|0]<2)for(;;)if(Gl=tm+w(Hl,24)|0,q[Gl>>2]=sm+w(q[(nm=Hl<<2)+rm>>2],36),q[Gl+4>>2]=q[nm+qm>>2],q[Gl+8>>2]=q[nm+om>>2],nm=q[nm+pm>>2],q[Gl+12>>2]=0,q[Gl+16>>2]=nm,Gl=0<(0|Hl),Hl=Hl+-1|0,!Gl)break k;for(um=q[mm+808>>2];Gl=tm+w(Hl,24)|0,q[Gl>>2]=sm+w(q[(nm=Hl<<2)+rm>>2],36),q[Gl+4>>2]=q[nm+qm>>2],q[Gl+8>>2]=q[nm+om>>2],q[Gl+16>>2]=q[nm+pm>>2],q[Gl+12>>2]=q[nm+um>>2],Gl=0<(0|Hl),Hl=Hl+-1|0,Gl;);}if(Hl=q[fm+12>>2],1<=(0|(q[Zl+164>>2]=Hl)))for(nm=q[mm+828>>2],pm=q[mm+812>>2],om=q[Zl+568>>2],qm=q[Zl+168>>2],Gl=Hl;rm=qm+w(Gl=Gl+-1|0,12)|0,q[rm>>2]=om+w(q[(sm=Gl<<2)+pm>>2],36),q[rm+4>>2]=q[nm+sm>>2],0<(0|Gl););if(((Gl=0)|gm)<1)nm=0;else{for(pm=q[Zl+68>>2],om=q[Zl+60>>2],nm=0;Hl=q[q[om+w(gm=gm+-1|0,24)>>2]+8>>2],nm=(q[pm+(gm<<2)>>2]=Hl)+nm|0,0<(0|gm););Hl=q[Zl+164>>2],gm=q[Zl+56>>2]}if(q[Zl+64>>2]=gm,q[Zl+72>>2]=nm,gm=Zl,1<=(0|Hl)){for(pm=q[Zl+176>>2],om=q[Zl+168>>2];nm=q[q[om+w(Hl=Hl+-1|0,12)>>2]+8>>2],Gl=Gl+(q[pm+(Hl<<2)>>2]=nm)|0,0<(0|Hl););Hl=q[Zl+164>>2]}if(q[gm+172>>2]=Hl,q[Zl+180>>2]=Gl,nm=q[fm+16>>2],1<=(0|(q[Zl+332>>2]=nm))){for(qm=q[mm+872>>2],rm=q[mm+892>>2],sm=q[mm+880>>2],tm=q[mm+876>>2],pm=q[mm+852>>2],om=q[Zl+568>>2],um=q[Zl+336>>2],Gl=nm;Hl=um+w(Gl=Gl+-1|0,20)|0,q[Hl>>2]=om+w(q[(gm=Gl<<2)+pm>>2],36),q[Hl+4>>2]=q[gm+tm>>2],q[Hl+8>>2]=q[gm+sm>>2],q[Hl+16>>2]=q[gm+rm>>2],q[Hl+12>>2]=q[gm+qm>>2],0<(0|Gl););for(gm=q[Zl+344>>2],Hl=0;Gl=q[8+(om+w(q[(qm=(nm=nm+-1|0)<<2)+pm>>2],36)|0)>>2],Hl=(q[gm+qm>>2]=Gl)+Hl|0,0<(0|nm););if(q[Zl+348>>2]=Hl,nm=q[Zl+332>>2],!((0|(q[Zl+340>>2]=nm))<1))for(Hl=nm<<2,gm=q[Zl+456>>2],pm=q[Zl+452>>2];q[(om=(Gl=Hl+-4|0)<<2)+pm>>2]=1065353216,q[(qm=(Hl<<=2)-4|0)+pm>>2]=1065353216,q[(rm=(Hl=Hl+-12|0)+pm|0)>>2]=1065353216,q[rm+4>>2]=1065353216,q[gm+om>>2]=0,q[gm+qm>>2]=1065353216,q[(Hl=Hl+gm|0)>>2]=0,q[Hl+4>>2]=0,Hl=Gl,0<(0|(nm=nm+-1|0)););}else q[Zl+340>>2]=nm,q[Zl+348>>2]=0;if(nm=q[fm+72>>2],1<=(0|(q[Zl+480>>2]=nm)))for(qm=q[mm+1208>>2],rm=q[mm+1224>>2],sm=q[mm+1220>>2],tm=q[mm+1216>>2],um=q[mm+1212>>2],vm=q[Zl+484>>2],gm=0;;){if(Gl=vm+w(gm,28)|0,pm=q[(Hl=gm<<2)+um>>2],q[Gl+4>>2]=pm,q[Gl>>2]=q[Hl+tm>>2],om=q[Hl+sm>>2],q[Gl+16>>2]=om,xm=q[Hl+rm>>2],q[Gl+20>>2]=xm,q[Gl+8>>2]=0,q[Gl+24>>2]=1+(om-xm|0),1<=(0|pm))for(xm=q[Hl+qm>>2],zm=q[Gl+12>>2],ym=q[mm+1236>>2],Bm=q[mm+1228>>2],Am=q[mm+1232>>2],Hl=0;q[4+(Gl=zm+(Hl<<4)|0)>>2]=q[(om=Hl+xm<<2)+Am>>2],q[Gl>>2]=q[om+Bm>>2],om=q[om+ym>>2],q[Gl+12>>2]=0,q[Gl+8>>2]=om,(0|pm)!=(0|(Hl=Hl+1|0)););if((0|nm)==(0|(gm=gm+1|0)))break}if(Hl=q[fm+80>>2],(0|(q[Zl+500>>2]=Hl))<1)gm=0;else{for(om=q[mm+1280>>2],qm=q[mm+1268>>2],rm=q[mm+1276>>2],sm=q[mm+1272>>2],tm=q[mm+1264>>2],um=q[mm+1260>>2],nm=q[mm+1248>>2],pm=q[Zl+568>>2],vm=q[Zl+504>>2];Gl=vm+w(Hl=Hl+-1|0,24)|0,q[Gl>>2]=pm+w(q[(gm=Hl<<2)+nm>>2],36),q[Gl+4>>2]=q[gm+um>>2],q[Gl+8>>2]=q[gm+tm>>2],q[Gl+12>>2]=q[gm+sm>>2],gm=q[gm+qm>>2],q[Gl+20>>2]=om+(gm<<1),q[Gl+16>>2]=rm+(gm<<2),0<(0|Hl););if((0|(Hl=q[Zl+500>>2]))<1)gm=0;else{for(om=q[Zl+512>>2],gm=0;Gl=q[8+(pm+w(q[(qm=(Hl=Hl+-1|0)<<2)+nm>>2],36)|0)>>2],gm=(q[om+qm>>2]=Gl)+gm|0,0<(0|Hl););Hl=q[Zl+500>>2]}}q[Zl+508>>2]=Hl,q[Zl+516>>2]=gm;o:if(4<=r[a+4|0]){if(!((nm=r[mm+4|0])>>>0<4)){if(Hl=q[fm+120>>2],1<=(0|(q[Zl+572>>2]=Hl))){for(om=q[mm+1172>>2],qm=q[Zl+576>>2];nm=(0|(fm=q[(Gl=(Hl=Hl+-1|0)<<2)+om>>2]))<0?fm=pm=gm=0:(gm=(nm=q[Gl+q[mm+1176>>2]>>2]<<2)+q[mm+1188>>2]|0,pm=q[Gl+q[mm+1180>>2]>>2],fm=q[Zl+544>>2]+w(fm,52)|0,nm+q[mm+1184>>2]|0),Gl=qm+w(Hl,20)|0,q[Gl+12>>2]=pm,q[Gl+8>>2]=gm,q[Gl+4>>2]=nm,q[Gl>>2]=fm,0<(0|Hl););if(mm=q[Zl>>2],(nm=r[mm+4|0])>>>0<4)break o}if(fm=q[mm+704>>2],gm=q[fm+100>>2],1<=(0|(q[Zl+580>>2]=gm)))for(pm=q[mm+1084>>2],om=q[mm+1076>>2],qm=q[mm+1192>>2],rm=q[mm+1080>>2],sm=q[Zl+584>>2];Gl=sm+w(gm=gm+-1|0,28)|0,q[Gl>>2]=q[(Hl=gm<<2)+rm>>2],q[Gl+4>>2]=qm+(q[Hl+om>>2]<<2),Hl=q[Hl+pm>>2],q[Gl+20>>2]=1,q[Gl+24>>2]=1,q[Gl+12>>2]=0,q[Gl+16>>2]=0,q[Gl+8>>2]=Hl,0<(0|gm););if(gm=q[fm+104>>2],1<=(0|(q[Zl+588>>2]=gm))){for(;;){if(Gl=q[Zl+592>>2]+w(gm=gm+-1|0,48)|0,q[Gl>>2]=q[Zl+584>>2]+w(q[(nm=gm<<2)+q[mm+1088>>2]>>2],28),Hl=q[nm+q[mm+1092>>2]>>2],q[Gl+28>>2]=1,q[Gl+32>>2]=1,q[Gl+8>>2]=0,q[Gl+4>>2]=Hl,fm=q[nm+q[mm+1104>>2]>>2],1<=(0|(q[Gl+36>>2]=fm)))for(Hl=0;q[q[Gl+40>>2]+(Hl<<2)>>2]=q[Zl+576>>2]+w(q[q[mm+1168>>2]+(q[nm+q[mm+1100>>2]>>2]+Hl<<2)>>2],20),(0|fm)!=(0|(Hl=Hl+1|0)););if(!(1<=(0|gm)))break}mm=q[Zl>>2],nm=r[mm+4|0]}if(!(nm>>>0<4)){if(nm=q[a+704>>2],Hl=q[nm+108>>2],1<=(0|(q[Zl+604>>2]=Hl)))for(fm=q[a+1124>>2],pm=q[a+1128>>2],om=q[a+1120>>2],qm=q[Zl+592>>2],rm=q[Zl+608>>2];Gl=rm+w(Hl=Hl+-1|0,12)|0,q[Gl>>2]=q[(gm=Hl<<2)+om>>2],q[Gl+4>>2]=q[gm+pm>>2],q[Gl+8>>2]=qm+w(q[fm+gm>>2],48),0<(0|Hl););if(Hl=q[nm+112>>2],1<=(0|(q[Zl+620>>2]=Hl)))for(nm=q[a+1148>>2],fm=q[a+1152>>2],pm=q[a+1144>>2],om=q[Zl+592>>2],qm=q[Zl+624>>2];Gl=qm+w(Hl=Hl+-1|0,12)|0,q[Gl>>2]=q[(gm=Hl<<2)+pm>>2],q[Gl+4>>2]=q[fm+gm>>2],q[Gl+8>>2]=om+w(q[gm+nm>>2],48),0<(0|Hl););if(gm=q[mm+1192>>2],Gl=q[q[mm+704>>2]+20>>2],q[Zl+640>>2]=q[mm+972>>2],nm=q[mm+964>>2],q[Zl+636>>2]=nm,!((0|Gl)<(Hl=1))&&(q[nm>>2]=gm+(q[q[mm+968>>2]>>2]<<2),1!=(0|Gl)))for(;q[(nm=Hl<<2)+q[Zl+636>>2]>>2]=gm+(q[nm+q[mm+968>>2]>>2]<<2),(0|Gl)!=(0|(Hl=Hl+1|0)););}}}else if(!(q[fm+20>>2]<1))for(fm=0;;){if(gm=q[(pm=fm<<2)+q[Zl+636>>2]>>2],1<=((Gl=0)|(Hl=q[pm+q[mm+952>>2]>>2])))for(rm=Hl+(om=q[pm+q[mm+948>>2]>>2])|0,sm=q[mm+1060>>2],tm=q[mm+1056>>2];;){if(1<=(0|(qm=q[(Hl=om<<2)+sm>>2])))for(um=qm+(nm=q[Hl+tm>>2])|0,vm=q[mm+1192>>2];;){qm=gm+(Gl<<2)|0,wm=u[vm+(nm<<2)>>2],Hl=gm;q:{if(0<(0|Gl))for(;;){if(u[Hl>>2]==wm)break q;if(!((Hl=Hl+4|0)>>>0>>0))break}u[qm>>2]=wm,Gl=Gl+1|0}if(!((0|(nm=nm+1|0))<(0|um)))break}if(!((0|(om=om+1|0))<(0|rm)))break}if(function(a,rn){var sn,In,vn=0,wn=0,Hn=0;q[8+(L=sn=L-208|0)>>2]=1,q[12+sn>>2]=0;a:if(In=rn<<2){for(q[16+sn>>2]=4,Hn=rn=q[20+sn>>2]=4,vn=2;rn=(Hn+4|0)+(wn=rn)|0,q[(16+sn|0)+(vn<<2)>>2]=rn,vn=vn+1|0,Hn=wn,rn>>>0>>0;);if((wn=(a+In|0)-4|0)>>>0<=a>>>0)rn=vn=1;else for(rn=vn=1;rn=3==(3&vn)?(ta(a,rn,16+sn|0),ma(8+sn|0,2),rn+2|0):(t[(16+sn|0)+((Hn=rn+-1|0)<<2)>>2]>=wn-a>>>0?la(a,8+sn|0,rn,0,16+sn|0):ta(a,rn,16+sn|0),1==(0|rn)?(ka(8+sn|0,1),0):(ka(8+sn|0,Hn),1)),vn=1|q[8+sn>>2],q[8+sn>>2]=vn,(a=a+4|0)>>>0>>0;);for(la(a,8+sn|0,rn,0,16+sn|0);;){e:{f:{g:{if(!(1!=(0|rn)|1!=(0|vn))){if(q[12+sn>>2])break g;break a}if(1<(0|rn))break f}ma(8+sn|0,wn=Oa(8+sn|0)),vn=q[8+sn>>2],rn=rn+wn|0;break e}ka(8+sn|0,2),q[8+sn>>2]=7^q[8+sn>>2],ma(8+sn|0,1),la((Hn=a+-4|0)-q[(16+sn|0)+((wn=rn+-2|0)<<2)>>2]|0,8+sn|0,rn+-1|0,1,16+sn|0),ka(8+sn|0,1),vn=1|q[8+sn>>2],q[8+sn>>2]=vn,la(Hn,8+sn|0,wn,1,16+sn|0),rn=wn}a=a+-4|0}}L=208+sn|0}(gm,Gl),q[pm+q[Zl+640>>2]>>2]=Gl,!((0|(fm=fm+1|0))>2]+20>>2]))break}if(!(r[a+4|0]<5|r[q[Zl>>2]+4|0]<4)){if(Gl=q[a+704>>2],Hl=q[Gl+128>>2],1<=(0|(q[Zl+596>>2]=Hl)))for(nm=q[a+1112>>2],fm=q[a+1116>>2],pm=q[a+1108>>2],om=q[Zl+592>>2],qm=q[Zl+600>>2];mm=qm+w(Hl=Hl+-1|0,12)|0,q[mm>>2]=q[(gm=Hl<<2)+pm>>2],q[mm+4>>2]=q[fm+gm>>2],q[mm+8>>2]=om+w(q[gm+nm>>2],48),0<(0|Hl););if(Hl=q[Gl+132>>2],1<=(0|(q[Zl+612>>2]=Hl)))for(nm=q[a+1136>>2],fm=q[a+1140>>2],pm=q[a+1132>>2],om=q[Zl+592>>2],qm=q[Zl+616>>2];mm=qm+w(Hl=Hl+-1|0,12)|0,q[mm>>2]=q[(gm=Hl<<2)+pm>>2],q[mm+4>>2]=q[fm+gm>>2],q[mm+8>>2]=om+w(q[gm+nm>>2],48),0<(0|Hl););if(Hl=q[Gl+136>>2],!((0|(q[Zl+628>>2]=Hl))<1))for(mm=q[a+1160>>2],gm=q[a+1164>>2],nm=q[a+1156>>2],fm=q[Zl+592>>2],pm=q[Zl+632>>2];a=pm+w(Hl=Hl+-1|0,12)|0,q[a>>2]=q[(Gl=Hl<<2)+nm>>2],q[a+4>>2]=q[Gl+gm>>2],q[a+8>>2]=fm+w(q[Gl+mm>>2],48),0<(0|Hl););}ua(Zl)}return L=576+lm|0,Zl}(a,Wa,Xa))break a;q[36+Ya>>2]=2209,q[32+Ya>>2]=2361,Y(4,1294,32+Ya|0)}else q[20+Ya>>2]=1444,q[16+Ya>>2]=2361,Y(4,1294,16+Ya|0);else q[4+Ya>>2]=2132,q[Ya>>2]=2361,Y(4,1294,Ya);Wa=0}return L=64+Ya|0,0|Wa}function xa(a){var Wa;return L=Wa=L-16|0,a=(a|=0)?function(a){var Gl;return ca(16+(L=Gl=L-576|0)|0,0,560),Fa(a,16+Gl|0,12+Gl|0),L=576+Gl|0,q[12+Gl>>2]}(a):(q[4+Wa>>2]=2132,q[Wa>>2]=2343,Y(4,1294,Wa),0),L=16+Wa|0,0|a}function ya(a){var Xa=r[a+4|0];X(q[a+704>>2],4,64),da(q[a+708>>2],4),da(q[a+708>>2]+4|0,4),da(q[a+708>>2]+8|0,4),da(q[a+708>>2]+12|0,4),da(q[a+708>>2]+16|0,4),da(q[a+708>>2]+20|0,1),X(q[a+720>>2],4,q[q[a+704>>2]>>2]),X(q[a+724>>2],4,q[q[a+704>>2]>>2]),X(q[a+728>>2],4,q[q[a+704>>2]>>2]),X(q[a+732>>2],4,q[q[a+704>>2]>>2]),X(q[a+736>>2],4,q[q[a+704>>2]>>2]),X(q[a+740>>2],4,q[q[a+704>>2]>>2]),X(q[a+752>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+756>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+760>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+764>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+768>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+772>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+776>>2],4,q[q[a+704>>2]+4>>2]),X(q[a+780>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+784>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+788>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+796>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+800>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+804>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+812>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+816>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+820>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+828>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+852>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+856>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+860>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+868>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+872>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+876>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+880>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+884>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+888>>2],1,q[q[a+704>>2]+16>>2]),X(q[a+892>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+896>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+900>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+904>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+908>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+912>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+924>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+928>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+932>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+936>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+940>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+948>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+952>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+976>>2],4,q[q[a+704>>2]+24>>2]),X(q[a+980>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+984>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+996>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1e3>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1004>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1008>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1012>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1016>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1020>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1032>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1036>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1040>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1052>>2],4,q[q[a+704>>2]+40>>2]),X(q[a+1064>>2],4,q[q[a+704>>2]+44>>2]),X(q[a+1068>>2],4,q[q[a+704>>2]+48>>2]),X(q[a+1072>>2],4,q[q[a+704>>2]+48>>2]),X(q[a+1056>>2],4,q[q[a+704>>2]+52>>2]),X(q[a+1060>>2],4,q[q[a+704>>2]+52>>2]),X(q[a+1192>>2],4,q[q[a+704>>2]+56>>2]),X(q[a+1196>>2],4,q[q[a+704>>2]+60>>2]),X(q[a+1200>>2],2,q[q[a+704>>2]+64>>2]),X(q[a+1204>>2],4,q[q[a+704>>2]+68>>2]),X(q[a+1208>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1212>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1216>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1220>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1224>>2],4,q[q[a+704>>2]+72>>2]),X(q[a+1228>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1232>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1236>>2],4,q[q[a+704>>2]+76>>2]),X(q[a+1248>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1252>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1256>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1260>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1264>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1268>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1272>>2],4,q[q[a+704>>2]+80>>2]),X(q[a+1276>>2],4,q[q[a+704>>2]+84>>2]),X(q[a+1280>>2],2,q[q[a+704>>2]+84>>2]),X(q[a+1284>>2],4,q[q[a+704>>2]+88>>2]),Xa>>>0<2||(X(q[a+808>>2],4,q[q[a+704>>2]+8>>2]),Xa>>>0<4)||(X(q[a+968>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+972>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+792>>2],4,q[q[a+704>>2]+8>>2]),X(q[a+824>>2],4,q[q[a+704>>2]+12>>2]),X(q[a+864>>2],4,q[q[a+704>>2]+16>>2]),X(q[a+1288>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1292>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1296>>2],4,q[q[a+704>>2]+92>>2]),X(q[a+1300>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+1304>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+1308>>2],4,q[q[a+704>>2]+96>>2]),X(q[a+944>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+956>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+960>>2],4,q[q[a+704>>2]+20>>2]),X(q[a+1076>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1080>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1084>>2],4,q[q[a+704>>2]+100>>2]),X(q[a+1088>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1092>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1096>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1100>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1104>>2],4,q[q[a+704>>2]+104>>2]),X(q[a+1120>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1124>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1128>>2],4,q[q[a+704>>2]+108>>2]),X(q[a+1144>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1148>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1152>>2],4,q[q[a+704>>2]+112>>2]),X(q[a+1168>>2],4,q[q[a+704>>2]+116>>2]),X(q[a+1172>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1176>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1180>>2],4,q[q[a+704>>2]+120>>2]),X(q[a+1184>>2],4,q[q[a+704>>2]+124>>2]),X(q[a+1188>>2],4,q[q[a+704>>2]+124>>2]),4!=(0|Xa)&&(X(q[a+988>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+992>>2],4,q[q[a+704>>2]+28>>2]),X(q[a+1024>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1028>>2],4,q[q[a+704>>2]+32>>2]),X(q[a+1044>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1048>>2],4,q[q[a+704>>2]+36>>2]),X(q[a+1108>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1112>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1116>>2],4,q[q[a+704>>2]+128>>2]),X(q[a+1132>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1136>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1140>>2],4,q[q[a+704>>2]+132>>2]),X(q[a+1156>>2],4,q[q[a+704>>2]+136>>2]),X(q[a+1160>>2],4,q[q[a+704>>2]+136>>2]),X(q[a+1164>>2],4,q[q[a+704>>2]+136>>2])))}function za(a,Za){var $a=0,lb=0,mb=0,ob=0,pb=0,rb=0,nb=a+Za|0;a:{b:if(!(1&($a=q[a+4>>2]))){if(!(3&$a))break a;if(Za=($a=q[a>>2])+Za|0,(0|(a=a-$a|0))!=q[2100])if($a>>>0<=255)mb=$a>>>3,$a=q[a+8>>2],(0|(lb=q[a+12>>2]))==(0|$a)?(rb=q[2095]&fd(mb),q[2095]=rb):(q[$a+12>>2]=lb,q[lb+8>>2]=$a);else{if(pb=q[a+24>>2],(0|($a=q[a+12>>2]))!=(0|a))lb=q[a+8>>2],q[lb+12>>2]=$a,q[$a+8>>2]=lb;else if(mb=(mb=q[(lb=a+20|0)>>2])||q[(lb=a+16|0)>>2]){for(;ob=lb,(mb=q[(lb=($a=mb)+20|0)>>2])||(lb=$a+16|0,mb=q[$a+16>>2]););q[ob>>2]=0}else $a=0;if(pb){lb=q[a+28>>2];e:{if(q[(mb=8684+(lb<<2)|0)>>2]==(0|a)){if(q[mb>>2]=$a)break e;rb=q[2096]&fd(lb),q[2096]=rb;break b}if(!(q[pb+(q[pb+16>>2]==(0|a)?16:20)>>2]=$a))break b}q[$a+24>>2]=pb,(lb=q[a+16>>2])&&(q[$a+16>>2]=lb,q[lb+24>>2]=$a),(lb=q[a+20>>2])&&(q[$a+20>>2]=lb,q[lb+24>>2]=$a)}}else if(3==(3&($a=q[4+nb>>2])))return q[2097]=Za,q[4+nb>>2]=-2&$a,q[a+4>>2]=1|Za,q[nb>>2]=Za}f:{if(!(2&($a=q[4+nb>>2]))){if(q[2101]==(0|nb)){if(q[2101]=a,Za=q[2098]+Za|0,q[2098]=Za,q[a+4>>2]=1|Za,q[2100]!=(0|a))break a;return q[2097]=0,q[2100]=0}if(q[2100]==(0|nb))return q[2100]=a,Za=q[2097]+Za|0,q[2097]=Za,q[a+4>>2]=1|Za,q[a+Za>>2]=Za;Za=(-8&$a)+Za|0;g:if($a>>>0<=255)mb=$a>>>3,$a=q[8+nb>>2],(0|(lb=q[12+nb>>2]))==(0|$a)?(rb=q[2095]&fd(mb),q[2095]=rb):(q[$a+12>>2]=lb,q[lb+8>>2]=$a);else{if(pb=q[24+nb>>2],(0|nb)!=(0|($a=q[12+nb>>2])))lb=q[8+nb>>2],q[lb+12>>2]=$a,q[$a+8>>2]=lb;else if(mb=(mb=q[(lb=20+nb|0)>>2])||q[(lb=16+nb|0)>>2]){for(;ob=lb,(mb=q[(lb=($a=mb)+20|0)>>2])||(lb=$a+16|0,mb=q[$a+16>>2]););q[ob>>2]=0}else $a=0;if(pb){lb=q[28+nb>>2];j:{if(q[(mb=8684+(lb<<2)|0)>>2]==(0|nb)){if(q[mb>>2]=$a)break j;rb=q[2096]&fd(lb),q[2096]=rb;break g}if(!(q[pb+(q[pb+16>>2]==(0|nb)?16:20)>>2]=$a))break g}q[$a+24>>2]=pb,(lb=q[16+nb>>2])&&(q[$a+16>>2]=lb,q[lb+24>>2]=$a),(lb=q[20+nb>>2])&&(q[$a+20>>2]=lb,q[lb+24>>2]=$a)}}if(q[a+4>>2]=1|Za,q[a+Za>>2]=Za,q[2100]!=(0|a))break f;return q[2097]=Za}q[4+nb>>2]=-2&$a,q[a+4>>2]=1|Za,q[a+Za>>2]=Za}if(Za>>>0<=255)return Za=8420+(($a=Za>>>3)<<3)|0,$a=(lb=q[2095])&($a=1<<$a)?q[Za+8>>2]:(q[2095]=$a|lb,Za),q[Za+8>>2]=a,q[$a+12>>2]=a,q[a+12>>2]=Za,q[a+8>>2]=$a;q[a+16>>2]=0,$a=q[a+20>>2]=0,(mb=Za>>>8)&&($a=31,16777215>>0||($a=28+(($a=((nb=(mb<<=ob=mb+1048320>>>16&8)<<($a=mb+520192>>>16&4))<<(mb=245760+nb>>>16&2)>>>15)-(mb|$a|ob)|0)<<1|Za>>>$a+21&1)|0)),mb=8684+((q[(lb=a)+28>>2]=$a)<<2)|0;m:{if((lb=q[2096])&(ob=1<<$a)){for(lb=Za<<(31==(0|$a)?0:25-($a>>>1)|0),$a=q[mb>>2];;){if((-8&q[(mb=$a)+4>>2])==(0|Za))break m;if($a=lb>>>29,lb<<=1,!($a=q[16+(ob=mb+(4&$a)|0)>>2]))break}q[ob+16>>2]=a}else q[2096]=lb|ob,q[mb>>2]=a;return q[a+24>>2]=mb,q[a+12>>2]=a,q[a+8>>2]=a}Za=q[mb+8>>2],q[Za+12>>2]=a,q[mb+8>>2]=a,q[a+24>>2]=0,q[a+12>>2]=mb,q[a+8>>2]=Za}}function Aa(a){var vb,xb,yb,Ab,Bb,Cb,sb,wb,Za=x(0),tb=(x(0),0),ub=0,zb=(x(0),x(0),x(0),x(0),0);x(0),x(0);a:{b:{if(j(a),ub=2147483647&(tb=b[0])){if(!(ub>>>0<2139095041))return x(x(.10000000149011612)+a);if(1065353216==(0|ub))return x(-1<(0|tb)?.10000000149011612:10);if(2139095040==(0|ub))return x(-1<(0|tb)?0:-a);if(1073741824==(0|tb))return x(.010000000707805157);if(1056964608==(0|tb))return x(.3162277638912201);if(1291845633<=ub>>>0)return x((0|tb)<0?H:0);if(vb=u[1709],wb=x(x(1.600000023841858)-vb),xb=x(x(1)/x(vb+x(1.600000023841858))),f(0,-4096&(j(sb=x(wb*xb)),b[0])),Za=k(),yb=x(Za*Za),Bb=u[1713],vb=x(xb*x(x(wb-x((Ab=Za)*x(3.099609375)))-x(Za*x(x(1.600000023841858)-x(x(3.099609375)-vb))))),xb=x(x(sb+Za)*vb),Za=x(sb*sb),wb=x(xb+x(x(Za*Za)*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(.20697501301765442))+x(.23066075146198273)))+x(.2727281153202057)))+x(.3333333432674408)))+x(.4285714328289032)))+x(.6000000238418579)))),f(0,-4096&(j(x(x(yb+x(3))+wb)),b[0])),Za=k(),xb=x(Ab*Za),sb=x(x(vb*Za)+x(sb*x(wb-x(x(Za+x(-3))-yb)))),f(0,-4096&(j(x(xb+sb)),b[0])),Za=k(),vb=x(Za*x(.9619140625)),yb=x(u[1711]+x(x(x(sb-x(Za-xb))*x(.9617967009544373))+x(Za*x(-.00011736857413779944)))),f(0,-4096&(j(x(x(Bb+x(vb+yb))+x(-4))),b[0])),sb=k(),f(0,-4096&tb),wb=k(),Za=x(sb*wb),a=x(x(x(yb-x(x(x(sb-x(-4))-Bb)-vb))*a)+x(x(a-wb)*sb)),j(sb=x(Za+a)),1124073473<=(0|(tb=b[0])))break b;d:{if((ub=1124073472)==(0|tb)){if(x(a+x(4.299566569443414e-8))>x(sb-Za))break b}else{if(ub=2147483647&tb,!(a<=x(sb-Za)^1|-1021968384!=(0|tb))|1125515265<=ub>>>0)break a;if(ub>>>0<1056964609)break d}zb=(8388607&(ub=(8388608>>>(ub>>>23)-126)+tb|0)|8388608)>>>150-(Cb=ub>>>23&255),zb=(0|tb)<0?0-zb|0:zb,Za=x(Za-(f(0,ub&-8388608>>Cb-127),k())),j(x(a+Za)),tb=b[0]}f(0,-32768&tb),sb=k(),vb=x(sb*x(.693145751953125)),sb=x(x(sb*x(14286065379565116e-22))+x(x(a-x(sb-Za))*x(.6931471824645996))),a=x(vb+sb),Za=x(a*a),Za=x(a-x(Za*x(x(Za*x(x(Za*x(x(Za*x(x(Za*x(4.138136944220605e-8))+x(-16533901998627698e-22)))+x(661375597701408e-19)))+x(-.0027777778450399637)))+x(.1666666716337204)))),Ab=x(x(a*Za)/x(Za+x(-2))),Za=x(sb-x(a-vb)),a=(0|(tb=0|(j(a=x(x(a-x(Ab-x(Za+x(a*Za))))+x(1))),b[0]+(zb<<23))))<=8388607?function(a,Tk){var vl=0;return 128<=(0|Tk)?(a=x(a*x(17014118346046923e22)),Tk=(0|(vl=Tk+-127|0))<128?vl:(a=x(a*x(17014118346046923e22)),((0|Tk)<381?Tk:381)+-254|0)):-127<(0|Tk)||(a=x(a*x(11754943508222875e-54)),Tk=-127<(0|(vl=Tk+126|0))?vl:(a=x(a*x(11754943508222875e-54)),(-378<(0|Tk)?Tk:-378)+252|0)),x(a*(f(0,1065353216+(Tk<<23)|0),k()))}(a,zb):(f(0,tb),k()),a=x(x(1)*a)}else a=x(1);return a}return x(H)}return x(0)}function Ba(a,Db){var Jb,Eb,Gb,Fb=0,Hb=0,Ib=x(0);if(j(Db),!((Gb=2147483647&(Eb=b[0]))>>>0<=2139095040&&(j(a),(Fb=2147483647&(Hb=b[0]))>>>0<2139095041)))return x(a+Db);if(1065353216==(0|Eb))return Ca(a);Eb=(Jb=Eb>>>30&2)|Hb>>>31;b:{c:{d:{e:{if(!Fb){switch(Eb-2|0){case 0:break e;case 1:break;default:break d}return x(-3.1415927410125732)}if(2139095040!=(0|Gb)){if(!Gb|!(Fb>>>0<=218103808+Gb>>>0&&2139095040!=(0|Fb)))break b;if(a=Ib=Fb+218103808>>>0>>0&&(Ib=x(0),Jb)?Ib:Ca(x(y(x(a/Db)))),Eb>>>0<=2){switch(Eb-1|0){case 0:return x(-a);case 1:break;default:break d}return x(x(3.1415927410125732)-x(a+x(8.742277657347586e-8)))}return x(x(a+x(8.742277657347586e-8))+x(-3.1415927410125732))}if(2139095040==(0|Fb))break c;return u[6816+(Eb<<2)>>2]}a=x(3.1415927410125732)}return a}return u[6800+(Eb<<2)>>2]}return x((0|Hb)<0?-1.5707963705062866:1.5707963705062866)}function Ca(a){x(0);var Kb,Nb,Ob,Db,Mb,Lb=0;x(0),x(0),j(a);a:{if(1283457024<=(Db=2147483647&(Mb=b[0]))>>>0){if(2139095040>>0)break a;return x((0|Mb)<0?-1.570796251296997:1.570796251296997)}b:{if(Db>>>0<=1054867455){if(Lb=-1,964689920<=Db>>>0)break b;break a}a=x(y(a)),Lb=Db>>>0<=1066926079?Db>>>0<=1060110335?(a=x(x(x(a+a)+x(-1))/x(a+x(2))),0):(a=x(x(a+x(-1))/x(a+x(1))),1):Db>>>0<=1075576831?(a=x(x(a+x(-1.5))/x(x(a*x(1.5))+x(1))),2):(a=x(x(-1)/a),3)}if(Db=Lb,Nb=x(a*a),Kb=x(Nb*Nb),Ob=x(Kb*x(x(Kb*x(-.106480173766613))+x(-.19999158382415771))),Kb=x(Nb*x(x(Kb*x(x(Kb*x(.06168760731816292))+x(.14253635704517365)))+x(.333333283662796))),(0|Db)<=-1)return x(a-x(a*x(Ob+Kb)));a=x(u[6768+(Db<<=2)>>2]-x(x(x(a*x(Ob+Kb))-u[6784+Db>>2])-a)),a=(0|Mb)<0?x(-a):a}return a}function Da(a,Pb){var Ub,Sb,Tb,Qb=0,Rb=0;return L=Sb=L-16|0,j(a),(Qb=2147483647&(Tb=b[0]))>>>0<=1305022426?(v[Pb>>3]=(Ub=+a)+-1.5707963109016418*(Rb=.6366197723675814*Ub+6755399441055744-6755399441055744)+-1.5893254773528196e-8*Rb,Qb=y(Rb)<2147483648?~~Rb:-2147483648):2139095040<=Qb>>>0?(v[Pb>>3]=x(a-a),Qb=0):(Ub=Qb,v[8+Sb>>3]=(f(0,Ub-((Qb=(Qb>>>23)-150|0)<<23)|0),k()),Qb=function(a,Gl,Hl){var Ll,Ql,Ul,Vl,Xl,Yl,Il=0,Jl=0,Kl=0,Ml=0,Nl=0,Ol=0,Pl=0,Rl=0,Sl=0,Tl=0,Wl=0;if(L=Ll=L-560|0,Pl=(Jl=Hl)+w(Ul=0<(0|(Hl=(Hl+-3|0)/24|0))?Hl:0,-24)|0,0<=(0|(Ql=q[980])))for(Jl=Ql+1|0,Hl=Ul;v[(320+Ll|0)+(Kl<<3)>>3]=(0|Hl)<0?0:+q[3936+(Hl<<2)>>2],Hl=Hl+1|0,(0|Jl)!=(0|(Kl=Kl+1|0)););for(Nl=Pl+-24|0,Jl=0;;){for(Il=Hl=0;Il+=v[(Hl<<3)+a>>3]*v[(320+Ll|0)+(Jl-Hl<<3)>>3],1!=(0|(Hl=Hl+1|0)););if(v[(Jl<<3)+Ll>>3]=Il,Hl=(0|Jl)<(0|Ql),Jl=Jl+1|0,!Hl)break}Yl=23-Nl|0,Vl=24-Nl|0,Jl=Ql;a:{for(;;){if(Il=v[(Jl<<3)+Ll>>3],!(Sl=((Hl=0)|(Kl=Jl))<1))for(;Ol=(480+Ll|0)+(Hl<<2)|0,Rl=Il,Ml=y(Il*=5.960464477539063e-8)<2147483648?~~Il:-2147483648,Ml=y(Rl+=-16777216*(Il=0|Ml))<2147483648?~~Rl:-2147483648,q[Ol>>2]=Ml,Il=v[((Kl=Kl+-1|0)<<3)+Ll>>3]+Il,(0|Jl)!=(0|(Hl=Hl+1|0)););Il=ja(Il,Nl),Il=(Il+=-8*C(.125*Il))-(0|(Ol=y(Il)<2147483648?~~Il:-2147483648));e:{f:{g:{if(Wl=(0|Nl)<1){if(Nl)break g;Ml=q[476+((Jl<<2)+Ll|0)>>2]>>23}else Ml=q[476+(Kl=(Jl<<2)+Ll|0)>>2],Tl=Kl,Kl=Ml-((Hl=Ml>>Vl)<>2]=Kl)>>Yl;if((0|Ml)<1)break e;break f}if(Ml=2,!(.5<=Il)){Ml=0;break e}}if(Kl=Hl=0,!Sl)for(;;){Sl=q[(Xl=(480+Ll|0)+(Hl<<2)|0)>>2],Tl=16777215;i:{j:{if(!Kl){if(!Sl)break j;Tl=16777216,Kl=1}q[Xl>>2]=Tl-Sl;break i}Kl=0}if((0|Jl)==(0|(Hl=Hl+1|0)))break}Wl||1<(Hl=Nl+-1|0)>>>0||(q[476+(Hl=(Jl<<2)+Ll|0)>>2]=Hl-1?8388607&q[Hl+476>>2]:4194303&q[Hl+476>>2]),Ol=Ol+1|0,2==(0|Ml)&&(Il=1-Il,Ml=2,Kl)&&(Il-=ja(1,Nl))}if(0!=Il)break;if(!(((Kl=0)|(Hl=Jl))<=(0|Ql))){for(;Kl=q[(480+Ll|0)+((Hl=Hl+-1|0)<<2)>>2]|Kl,(0|Ql)<(0|Hl););if(Kl){for(Pl=Nl;Pl=Pl+-24|0,!q[(480+Ll|0)+((Jl=Jl+-1|0)<<2)>>2];);break a}}for(Hl=1;Hl=(Kl=Hl)+1|0,!q[(480+Ll|0)+(Ql-Kl<<2)>>2];);for(Kl=Jl+Kl|0;;){for(Jl=Ol=Jl+1|0,v[(320+Ll|0)+(Ol<<3)>>3]=q[3936+(Ul+Jl<<2)>>2],Il=Hl=0;Il+=v[(Hl<<3)+a>>3]*v[(320+Ll|0)+(Ol-Hl<<3)>>3],1!=(0|(Hl=Hl+1|0)););if(v[(Jl<<3)+Ll>>3]=Il,!((0|Jl)<(0|Kl)))break}Jl=Kl}16777216<=(Il=ja(Il,0-Nl|0))?(a=(480+Ll|0)+(Jl<<2)|0,Rl=Il,Hl=y(Il*=5.960464477539063e-8)<2147483648?~~Il:-2147483648,Kl=y(Il=Rl+-16777216*(0|Hl))<2147483648?~~Il:-2147483648,q[a>>2]=Kl,Jl=Jl+1|0):(Hl=y(Il)<2147483648?~~Il:-2147483648,Pl=Nl),q[(480+Ll|0)+(Jl<<2)>>2]=Hl}if(Il=ja(1,Pl),!((0|Jl)<=-1)){for(Hl=Jl;v[(Hl<<3)+Ll>>3]=Il*+q[(480+Ll|0)+(Hl<<2)>>2],Il*=5.960464477539063e-8,a=0<(0|Hl),Hl=Hl+-1|0,a;);if(!((0|Jl)<=-1))for(Hl=Jl;;){for(Nl=Jl-(a=Hl)|0,Hl=Il=0;Il+=v[6704+(Hl<<3)>>3]*v[(a+Hl<<3)+Ll>>3],!((0|Ql)<=(0|Hl))&&(Pl=Hl>>>0>>0,Hl=Hl+1|0,Pl););if(v[(160+Ll|0)+(Nl<<3)>>3]=Il,Hl=a+-1|0,!(0<(0|a)))break}}if(0<=(Jl|(Il=0)))for(;Il+=v[(160+Ll|0)+(Jl<<3)>>3],a=0<(0|Jl),Jl=Jl+-1|0,a;);return v[Gl>>3]=Ml?-Il:Il,L=560+Ll|0,7&Ol}(8+Sb|0,Sb,Qb),Rb=v[Sb>>3],(0|Tb)<=-1?(v[Pb>>3]=-Rb,Qb=0-Qb|0):v[Pb>>3]=Rb),L=16+Sb|0,Qb}function Ea(a,Pb){return a?function(a,Gl){a:{if(a){if(Gl>>>0<=127)break a;if(q[q[1797]>>2]){if(Gl>>>0<=2047)return o[a+1|0]=63&Gl|128,o[0|a]=Gl>>>6|192,2;if(!(57344!=(-8192&Gl)&&55296<=Gl>>>0))return o[a+2|0]=63&Gl|128,o[0|a]=Gl>>>12|224,o[a+1|0]=Gl>>>6&63|128,3;if(Gl+-65536>>>0<=1048575)return o[a+3|0]=63&Gl|128,o[0|a]=Gl>>>18|240,o[a+2|0]=Gl>>>6&63|128,o[a+1|0]=Gl>>>12&63|128,4}else if(57216==(-128&Gl))break a;q[2094]=25,a=-1}else a=1;return a}return o[0|a]=Gl,1}(a,Pb):0}function Fa(a,Pb,Wb){var fc,gc,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=r[a+4|0];if(q[Pb>>2]=652,Yb=q[a+704>>2],1<=(0|(_b=q[Yb>>2]))){for($b=q[a+720>>2],bc=q[a+1072>>2];Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)!=(0|(Xb=Xb+1|0)););Xb=Zb<<2}if(q[Pb+4>>2]=w(_b,12),q[Pb+8>>2]=q[Yb>>2]<<2,q[Pb+12>>2]=q[Yb>>2]<<2,q[Pb+16>>2]=q[Yb>>2]<<2,q[Pb+20>>2]=q[Yb>>2]<<2,Zb=q[Yb>>2],q[Pb+28>>2]=Xb,q[Pb+24>>2]=Zb<<2,Zb=q[Yb>>2],q[Pb+40>>2]=Xb,q[Pb+36>>2]=Xb,q[Pb+32>>2]=Zb<<2,q[Pb+44>>2]=q[Yb+4>>2]<<5,q[Pb+48>>2]=q[Yb+4>>2]<<2,q[Pb+52>>2]=q[Yb+4>>2]<<2,q[Pb+56>>2]=q[Yb+4>>2]<<2,q[Pb+60>>2]=q[Yb+4>>2]<<4,q[Pb+64>>2]=q[Yb+4>>2]<<4,1<=((Xb=0)|(_b=q[Yb+8>>2]))){for($b=q[a+780>>2],bc=q[a+1072>>2],dc=q[a+796>>2],Zb=0;ac=(15+(q[(cc=Xb<<2)+dc>>2]<<3)&-16)+ac|0,Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)!=(0|(Xb=Xb+1|0)););Xb=Zb<<2}if(q[Pb+68>>2]=w(_b,24),q[Pb+72>>2]=q[Yb+8>>2]<<2,q[Pb+76>>2]=q[Yb+8>>2]<<2,Zb=q[Yb+8>>2],q[Pb+84>>2]=ac,q[Pb+80>>2]=Zb<<2,q[Pb+88>>2]=q[Yb+8>>2]<<4,q[Pb+92>>2]=q[Yb+8>>2]<<4,Zb=q[Yb+8>>2],q[Pb+100>>2]=Xb,q[Pb+96>>2]=Zb<<2,Zb=q[Yb+8>>2],q[Pb+140>>2]=Xb,q[Pb+136>>2]=Xb,q[Pb+132>>2]=Xb,q[Pb+128>>2]=Xb,q[Pb+124>>2]=Xb,q[Pb+120>>2]=Xb,q[Pb+116>>2]=Xb,q[Pb+112>>2]=Xb,q[Pb+108>>2]=Xb,q[Pb+104>>2]=Zb<<2,q[Pb+144>>2]=q[Yb+8>>2]<<2,q[Pb+148>>2]=q[Yb+8>>2]<<2,q[Pb+152>>2]=q[Yb+8>>2]<<2,q[Pb+156>>2]=q[Yb+8>>2]<<2,q[Pb+160>>2]=q[Yb+8>>2]<<2,q[Pb+164>>2]=q[Yb+8>>2]<<2,1<=((Xb=ac=0)|(_b=q[Yb+12>>2]))){for($b=q[a+812>>2],bc=q[a+1072>>2],Zb=0;Zb=(1<>2]<<2)>>2])+Zb|0,(0|_b)!=(0|(Xb=Xb+1|0)););Xb=Zb<<2}if(q[Pb+168>>2]=w(_b,12),q[Pb+172>>2]=q[Yb+12>>2]<<2,q[Pb+176>>2]=q[Yb+12>>2]<<2,q[Pb+180>>2]=q[Yb+12>>2]<<2,q[Pb+184>>2]=q[Yb+12>>2]<<2,q[Pb+188>>2]=q[Yb+12>>2]<<2,q[Pb+192>>2]=q[Yb+12>>2]<<2,q[Pb+196>>2]=q[Yb+12>>2]<<2,q[Pb+200>>2]=q[Yb+12>>2]<<2,q[Pb+204>>2]=q[Yb+12>>2]<<4,q[Pb+208>>2]=q[Yb+12>>2]<<4,Zb=q[Yb+12>>2],q[Pb+216>>2]=Xb,q[Pb+212>>2]=Zb<<2,Zb=q[Yb+12>>2],q[Pb+268>>2]=Xb,q[Pb+264>>2]=Xb,q[Pb+260>>2]=Xb,q[Pb+256>>2]=Xb,q[Pb+252>>2]=Xb,q[Pb+248>>2]=Xb,q[Pb+244>>2]=Xb,q[Pb+240>>2]=Xb,q[Pb+236>>2]=Xb,q[Pb+232>>2]=Xb,q[Pb+228>>2]=Xb,q[Pb+224>>2]=Xb,q[Pb+220>>2]=Zb<<2,q[Pb+272>>2]=q[Yb+12>>2]<<2,q[Pb+276>>2]=q[Yb+12>>2]<<2,q[Pb+280>>2]=q[Yb+12>>2]<<2,q[Pb+284>>2]=q[Yb+12>>2]<<2,q[Pb+288>>2]=q[Yb+12>>2]<<2,q[Pb+292>>2]=q[Yb+12>>2]<<2,1<=((Xb=0)|(Zb=q[Yb+16>>2]))){for($b=q[a+852>>2],bc=q[a+1072>>2],dc=q[a+892>>2],_b=0;ac=(15+(q[(cc=Xb<<2)+dc>>2]<<3)&-16)+ac|0,_b=(1<>2]<<2)>>2])+_b|0,(0|Zb)!=(0|(Xb=Xb+1|0)););Xb=_b<<2}if(q[Pb+296>>2]=w(Zb,20),q[Pb+300>>2]=q[Yb+16>>2]<<2,q[Pb+304>>2]=q[Yb+16>>2],q[Pb+308>>2]=q[Yb+16>>2]<<2,q[Pb+312>>2]=q[Yb+16>>2]<<2,Zb=q[Yb+16>>2],q[Pb+320>>2]=ac,q[Pb+316>>2]=Zb<<2,q[Pb+324>>2]=q[Yb+16>>2]<<2,q[Pb+328>>2]=q[Yb+16>>2]<<4,q[Pb+332>>2]=q[Yb+16>>2]<<4,q[Pb+336>>2]=q[Yb+16>>2]<<2,q[Pb+340>>2]=q[Yb+16>>2]<<2,q[Pb+344>>2]=q[Yb+16>>2]<<2,q[Pb+348>>2]=q[Yb+16>>2]<<4,q[Pb+352>>2]=q[Yb+16>>2]<<4,Zb=q[Yb+16>>2],q[Pb+360>>2]=Xb,q[Pb+356>>2]=Zb<<2,Zb=q[Yb+16>>2],q[Pb+404>>2]=Xb,q[Pb+400>>2]=Xb,q[Pb+396>>2]=Xb,q[Pb+392>>2]=Xb,q[Pb+388>>2]=Xb,q[Pb+384>>2]=Xb,q[Pb+380>>2]=Xb,q[Pb+376>>2]=Xb,q[Pb+372>>2]=Xb,q[Pb+368>>2]=Xb,q[Pb+364>>2]=Zb<<2,q[Pb+408>>2]=q[Yb+16>>2]<<2,q[Pb+412>>2]=q[Yb+16>>2]<<2,q[Pb+416>>2]=q[Yb+16>>2]<<2,q[Pb+420>>2]=q[Yb+16>>2]<<2,q[Pb+424>>2]=q[Yb+16>>2]<<2,q[Pb+428>>2]=q[Yb+16>>2]<<2,$b=q[a+704>>2],q[Pb+432>>2]=w(q[$b+20>>2],52),q[Pb+436>>2]=ec>>>(Xb=_b=0)<=3?q[$b+20>>2]<<2:0,q[Pb+440>>2]=q[$b+20>>2]<<2,q[Pb+444>>2]=w(q[$b+52>>2],28),1<=(0|(Yb=q[$b+48>>2]))){for(Zb=q[a+1072>>2],ac=0;ac=(bc=q[Zb+(Xb<<2)>>2])+ac|0,_b=(1<>2]=Xb,q[Pb+456>>2]=Xb,q[Pb+452>>2]=_b,q[Pb+448>>2]=w(Yb,36),q[Pb+500>>2]=w(q[$b+72>>2],28),1<=((ac=Xb=Zb=0)|(bc=q[$b+72>>2]))){for(dc=q[a+1224>>2],cc=q[a+1220>>2],gc=q[a+1212>>2],_b=0;_b=(0|(fc=q[(Yb=ac<<2)+cc>>2]-q[Yb+dc>>2]|0))<(0|_b)?_b:1+fc|0,Xb=(0|Xb)<(0|(Yb=q[Yb+gc>>2]))?Yb:Xb,(0|bc)!=(0|(ac=ac+1|0)););ac=Xb<<2,Xb=_b<<2}if(Yb=q[$b+76>>2],q[Pb+516>>2]=Xb,q[Pb+512>>2]=ac,q[Pb+508>>2]=Xb,q[Pb+504>>2]=Yb<<4,1<=(0|(Yb=q[$b+80>>2]))){for(Zb=q[a+1248>>2],ac=q[a+1072>>2],_b=Xb=0;_b=(1<>2]<<2)>>2])+_b|0,(0|Yb)!=(0|(Xb=Xb+1|0)););Zb=_b<<2}if(q[Pb+520>>2]=w(Yb,24),q[Pb+524>>2]=q[$b+80>>2]<<2,Yb=q[$b+80>>2],q[Pb+532>>2]=Zb,q[Pb+528>>2]=Yb<<2,Yb=q[$b+80>>2],q[Pb+544>>2]=Zb,q[Pb+540>>2]=Zb,q[Pb+536>>2]=Yb<<2,Yb=Pb,4<=ec>>>0){if(q[Pb+464>>2]=w(q[$b+120>>2],20),q[Pb+468>>2]=w(q[$b+100>>2],28),Zb=Pb,1<=((Xb=ac=0)|(bc=q[$b+104>>2]))){for(a=q[a+1104>>2],_b=0;_b=q[a+(Xb<<2)>>2]+_b|0,(0|bc)!=(0|(Xb=Xb+1|0)););a=_b<<2}else a=0;q[Zb+476>>2]=a,q[Pb+472>>2]=w(bc,48),q[Pb+484>>2]=w(q[$b+108>>2],12),a=q[$b+112>>2],q[Pb+552>>2]=0,q[Pb+492>>2]=w(a,12),a=0}else{if((0|(ac=q[$b+20>>2]))<1)_b=0;else for(bc=q[a+1060>>2],dc=q[a+952>>2],a=q[a+948>>2],Zb=_b=0;;){if(1<=(0|(cc=q[(Xb=Zb<<2)+dc>>2])))for(cc=(Xb=bc+(q[a+Xb>>2]<<2)|0)+(cc<<2)|0;_b=q[Xb>>2]+_b|0,(Xb=Xb+4|0)>>>0>>0;);if((0|ac)==(0|(Zb=Zb+1|0)))break}q[Pb+552>>2]=ac<<2,ac=q[$b+20>>2]<<2,a=_b<<2}for(q[Yb+556>>2]=a,q[Pb+548>>2]=ac,4>>0&&(q[Pb+480>>2]=w(q[$b+128>>2],12),q[Pb+488>>2]=w(q[$b+132>>2],12),q[Pb+496>>2]=w(q[$b+136>>2],12)),Xb=_b=0;Xb=((Yb=q[(a=(_b<<2)+Pb|0)>>2])+15&-16)+(q[a>>2]=Xb)|0,140!=(0|(_b=_b+1|0)););q[Wb>>2]=Xb}function Ga(a,Pb,Wb,hc){a:{if(!(20>>0||9<(Pb=Pb+-9|0)>>>0)){switch(Pb-1|0){default:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=q[Pb>>2];case 0:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=q[Pb>>2],q[a>>2]=Pb,q[a+4>>2]=Pb>>31;case 1:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=q[Pb>>2],q[a+4>>2]=0;case 3:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=p[Pb>>1],q[a>>2]=Pb,q[a+4>>2]=Pb>>31;case 4:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=s[Pb>>1],q[a+4>>2]=0;case 5:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,Pb=o[0|Pb],q[a>>2]=Pb,q[a+4>>2]=Pb>>31;case 6:return Pb=q[Wb>>2],q[Wb>>2]=Pb+4,q[a>>2]=r[0|Pb],q[a+4>>2]=0;case 2:case 7:break a;case 8:}n[hc](a,Wb)}return}Pb=q[Wb>>2]+7&-8,q[Wb>>2]=Pb+8,Wb=q[Pb+4>>2],q[a>>2]=q[Pb>>2],q[a+4>>2]=Wb}function Ha(a){var Pb,hc,Wb=0;if(ha(o[q[a>>2]]))for(;Pb=q[a>>2],hc=o[0|Pb],q[a>>2]=Pb+1,Wb=(w(Wb,10)+hc|0)-48|0,ha(o[Pb+1|0]););return Wb}function Ia(a,ic,jc,kc,lc){var oc,mc;q[204+(L=mc=L-208|0)>>2]=jc,ca(160+mc|(jc=0),0,40),q[200+mc>>2]=q[204+mc>>2],(0|ra(0,ic,200+mc|0,80+mc|0,160+mc|0,kc,lc))<0||(jc=0<=q[a+76>>2]?1:jc,jc=q[a>>2],o[a+74|0]<=0&&(q[a>>2]=-33&jc),oc=32&jc,q[a+48>>2]?ra(a,ic,200+mc|0,80+mc|0,160+mc|0,kc,lc):(q[a+48>>2]=80,q[a+16>>2]=80+mc,q[a+28>>2]=mc,q[a+20>>2]=mc,jc=q[a+44>>2],ra(a,ic,200+(q[a+44>>2]=mc)|0,80+mc|0,160+mc|0,kc,lc),jc&&(n[q[a+36>>2]](a,0,0),q[a+48>>2]=0,q[a+44>>2]=jc,q[a+28>>2]=0,q[a+16>>2]=0,q[a+20>>2]=0)),q[a>>2]=q[a>>2]|oc),L=208+mc|0}function Ka(a,ic,pc){var rc,qc;$(8+(L=qc=L-160|0)|0,3216,144),q[52+qc>>2]=a,q[28+qc>>2]=a,q[56+qc>>2]=rc=(rc=-2-a|0)>>>0<256?rc:256,q[36+qc>>2]=a=a+rc|0,q[24+qc>>2]=a,Ia(8+qc|0,ic,pc,11,12),rc&&(a=q[28+qc>>2],o[a-((0|a)==q[24+qc>>2])|0]=0),L=160+qc|0}function La(a,ic){var sc,tc,pc=0,pc=0!=(0|ic);a:{b:{c:{d:if(!(!ic|!(3&a)))for(;;){if(!r[0|a])break c;if(a=a+1|0,pc=0!=(0|(ic=ic+-1|0)),!ic)break d;if(!(3&a))break}if(!pc)break b}if(!r[0|a])break a;e:{if(4<=ic>>>0){for(pc=(pc=ic+-4|0)-(sc=-4&pc)|0,sc=4+(a+sc|0)|0;;){if((-1^(tc=q[a>>2]))&tc+-16843009&-2139062144)break e;if(a=a+4|0,!(3<(ic=ic+-4|0)>>>0))break}ic=pc,a=sc}if(!ic)break b}for(;;){if(!r[0|a])break a;if(a=a+1|0,!(ic=ic+-1|0))break}}return 0}return a}function Ma(a){var uc,ic=0;if(!a)return 32;if(!(1&a))for(;ic=ic+1|0,uc=2&a,a>>>=1,!uc;);return ic}function Na(a,vc){var zc,Ac,Bc,yc,wc=0,xc=0,xc=4;L=yc=L-256|0;a:if(!((0|vc)<2))for(wc=q[(Bc=(vc<<2)+a|0)>>2]=yc;;){for($(wc,q[a>>2],zc=xc>>>0<256?xc:256),wc=0;$(q[(Ac=(wc<<2)+a|0)>>2],q[((wc=wc+1|0)<<2)+a>>2],zc),q[Ac>>2]=q[Ac>>2]+zc,(0|vc)!=(0|wc););if(!(xc=xc-zc|0))break a;wc=q[Bc>>2]}L=256+yc|0}function Oa(a){return Ma(q[a>>2]+-1|0)||((a=Ma(q[a+4>>2]))?a+32|0:0)}function $c(a,ap){ap|=0,b[0]=a|=0,b[1]=ap}function cd(a,ap,bp){return function(a,ap,bp){var fp,dp,cp,ep,gp=w(dp=bp>>>16,cp=a>>>16);return a=(65535&(cp=((fp=w(ep=65535&bp,a&=65535))>>>16)+w(cp,ep)|0))+w(a,dp)|0,M=((gp+w(ap,bp)|0)+(cp>>>16)|0)+(a>>>16)|0,65535&fp|a<<16}(a,ap,bp)}function dd(a,ap,bp){return function(a,ap,bp){var op,np,hp=0,ip=0,jp=0,kp=0,lp=0,mp=0,pp=0;a:{b:{c:{d:{e:{if(!(ip=ap))return $c((ap=a)-w(a=(a>>>0)/(bp>>>0)|0,bp)|0,0),M=0,a;if(hp=bp){if(!((kp=hp+-1|0)&hp))break e;lp=0-(kp=(z(hp)+33|0)-z(ip)|0)|0;break c}if(!a)return $c(0,ip-w(a=(ip>>>0)/0|0,0)|0),M=0,a;if((hp=32-z(ip)|0)>>>0<31)break d;break b}if($c(a&kp,0),1==(0|hp))break a;return bp=31&(hp=hp?31-z(hp+-1^hp)|0:32),a=32<=(63&hp)>>>0?(ip=0,ap>>>bp):(ip=ap>>>bp,((1<>>bp),M=ip,a}kp=hp+1|0,lp=63-hp|0}if(hp=ap,jp=31&(ip=63&kp),jp=32<=ip>>>0?(ip=0,hp>>>jp):(ip=hp>>>jp,((1<>>jp),hp=31&(lp&=63),32<=lp>>>0?(ap=a<>>32-hp|ap<>>0<4294967295&&(hp=0);jp=(np=mp=jp<<1|ap>>>31)-(op=bp&(mp=hp-((ip=ip<<1|jp>>>31)+(lp>>>0>>0)|0)>>31))|0,ip=ip-(np>>>0>>0)|0,ap=ap<<1|a>>>31,a=pp|a<<1,pp=mp&=1,kp=kp+-1|0;);return $c(jp,ip),M=ap<<1|a>>>31,mp|a<<1}$c(a,ap),ap=a=0}return M=ap,a}(a,ap,bp)}function fd(a){var qp;return(-1>>>(qp=31&a)&-2)<>>a}function N(){return buffer.byteLength/65536|0}}(H,I,J)}}l=null,b.wasmBinary&&(F=b.wasmBinary);var WebAssembly={},F=[];"object"!=typeof WebAssembly&&E("no native wasm support detected");var I,J=new function(a){var c=Array(16);return c.grow=function(){17<=c.length&&B("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."),c.push(null)},c.set=function(a,e){c[a]=e},c.get=function(a){return c[a]},c},K=!1;function assert(a,c){a||B("Assertion failed: "+c)}var buffer,M,L,N,ha="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function ia(a,c,d){var e=c+d;for(d=c;a[d]&&!(e<=d);)++d;if(16>10,56320|1023&f)))):e+=String.fromCharCode(f)}return e}function ja(a,c){return a?ia(L,a,c):""}function ka(a){return 0>>16)*e+d*(c>>>16)<<16)|0}),Math.fround||(ra=new Float32Array(1),Math.fround=function(a){return ra[0]=a,ra[0]}),Math.clz32||(Math.clz32=function(a){var c=32,d=a>>16;return d&&(c-=16,a=d),(d=a>>8)&&(c-=8,a=d),(d=a>>4)&&(c-=4,a=d),(d=a>>2)&&(c-=2,a=d),a>>1?c-2:c-a}),Math.trunc||(Math.trunc=function(a){return a<0?Math.ceil(a):Math.floor(a)}),0),Q=null,U=null;function B(a){throw b.onAbort&&b.onAbort(a),D(a),E(a),K=!0,"abort("+a+"). Build with -s ASSERTIONS=1 for more info."}b.preloadedImages={},b.preloadedAudios={};var V="data:application/octet-stream;base64,";function W(a){return String.prototype.startsWith?a.startsWith(V):0===a.indexOf(V)}var X="_em_module.wasm";function ta(){try{if(F)return new Uint8Array(F);var a=z(X);if(a)return a;if(w)return w(X);throw"both async and sync fetching of the wasm failed"}catch(c){B(c)}}W(X)||(t=X,X=b.locateFile?b.locateFile(t,u):u+t),na.push({fa:function(){va()}});var wa=[null,[],[]],xa=!1;function C(a){for(var c=[],d=0;d>4,f=(15&f)<<4|g>>2,h=(3&g)<<6|m}while(c+=String.fromCharCode(e),64!==g&&(c+=String.fromCharCode(f)),64!==m&&(c+=String.fromCharCode(h)),d>16),la(I.buffer);var d=1;break a}catch(e){}d=void 0}return!!d},c:function(a,c,d,e){try{for(var f=0,g=0;g>2],h=N[c+(8*g+4)>>2],A=0;A>2]=f,0}catch(T){return"undefined"!=typeof FS&&T instanceof FS.ga||B(T),T.ha}},memory:I,table:J},u=function(){function a(a){b.asm=a.exports,P--,b.monitorRunDependencies&&b.monitorRunDependencies(P),0==P&&(null!==Q&&(clearInterval(Q),Q=null),U)&&(a=U,U=null,a())}function c(c){a(c.instance)}function d(a){(F||!p&&!q||"function"!=typeof fetch?new Promise(function(a){a(ta())}):fetch(X,{credentials:"same-origin"}).then(function(a){if(a.ok)return a.arrayBuffer();throw"failed to load wasm binary file at '"+X+"'"}).catch(ta)).then(function(){return{then:function(a){a({instance:new da})}}}).then(a,function(a){E("failed to asynchronously prepare wasm: "+a),B(a)})}var e={env:H,wasi_unstable:H};if(P++,b.monitorRunDependencies&&b.monitorRunDependencies(P),b.instantiateWasm)try{return b.instantiateWasm(e,a)}catch(f){return E("Module.instantiateWasm callback failed with error: "+f),!1}return F||"function"!=typeof WebAssembly.instantiateStreaming||W(X)||"function"!=typeof fetch?d(c):fetch(X,{credentials:"same-origin"}).then(function(a){return WebAssembly.instantiateStreaming(a,e).then(c,function(a){E("wasm streaming compile failed: "+a),E("falling back to ArrayBuffer instantiation"),d(c)})}),{}}(),va=(b.asm=u,b.___wasm_call_ctors=function(){return b.asm.d.apply(null,arguments)}),Aa=(b._csmGetLogFunction=function(){return b.asm.e.apply(null,arguments)},b._csmGetVersion=function(){return b.asm.f.apply(null,arguments)},b._csmGetLatestMocVersion=function(){return b.asm.g.apply(null,arguments)},b._csmGetMocVersion=function(){return b.asm.h.apply(null,arguments)},b._csmHasMocConsistency=function(){return b.asm.i.apply(null,arguments)},b._csmSetLogFunction=function(){return b.asm.j.apply(null,arguments)},b._csmReviveMocInPlace=function(){return b.asm.k.apply(null,arguments)},b._csmReadCanvasInfo=function(){return b.asm.l.apply(null,arguments)},b._csmGetSizeofModel=function(){return b.asm.m.apply(null,arguments)},b._csmInitializeModelInPlace=function(){return b.asm.n.apply(null,arguments)},b._csmUpdateModel=function(){return b.asm.o.apply(null,arguments)},b._csmGetParameterCount=function(){return b.asm.p.apply(null,arguments)},b._csmGetParameterIds=function(){return b.asm.q.apply(null,arguments)},b._csmGetParameterTypes=function(){return b.asm.r.apply(null,arguments)},b._csmGetParameterMinimumValues=function(){return b.asm.s.apply(null,arguments)},b._csmGetParameterMaximumValues=function(){return b.asm.t.apply(null,arguments)},b._csmGetParameterDefaultValues=function(){return b.asm.u.apply(null,arguments)},b._csmGetParameterValues=function(){return b.asm.v.apply(null,arguments)},b._csmGetParameterRepeats=function(){return b.asm.w.apply(null,arguments)},b._csmGetPartCount=function(){return b.asm.x.apply(null,arguments)},b._csmGetPartIds=function(){return b.asm.y.apply(null,arguments)},b._csmGetPartOpacities=function(){return b.asm.z.apply(null,arguments)},b._csmGetPartParentPartIndices=function(){return b.asm.A.apply(null,arguments)},b._csmGetDrawableCount=function(){return b.asm.B.apply(null,arguments)},b._csmGetDrawableIds=function(){return b.asm.C.apply(null,arguments)},b._csmGetDrawableConstantFlags=function(){return b.asm.D.apply(null,arguments)},b._csmGetDrawableDynamicFlags=function(){return b.asm.E.apply(null,arguments)},b._csmGetDrawableTextureIndices=function(){return b.asm.F.apply(null,arguments)},b._csmGetDrawableDrawOrders=function(){return b.asm.G.apply(null,arguments)},b._csmGetDrawableRenderOrders=function(){return b.asm.H.apply(null,arguments)},b._csmGetDrawableOpacities=function(){return b.asm.I.apply(null,arguments)},b._csmGetDrawableMaskCounts=function(){return b.asm.J.apply(null,arguments)},b._csmGetDrawableMasks=function(){return b.asm.K.apply(null,arguments)},b._csmGetDrawableVertexCounts=function(){return b.asm.L.apply(null,arguments)},b._csmGetDrawableVertexPositions=function(){return b.asm.M.apply(null,arguments)},b._csmGetDrawableVertexUvs=function(){return b.asm.N.apply(null,arguments)},b._csmGetDrawableIndexCounts=function(){return b.asm.O.apply(null,arguments)},b._csmGetDrawableIndices=function(){return b.asm.P.apply(null,arguments)},b._csmGetDrawableMultiplyColors=function(){return b.asm.Q.apply(null,arguments)},b._csmGetDrawableScreenColors=function(){return b.asm.R.apply(null,arguments)},b._csmGetDrawableParentPartIndices=function(){return b.asm.S.apply(null,arguments)},b._csmResetDrawableDynamicFlags=function(){return b.asm.T.apply(null,arguments)},b._csmGetParameterKeyCounts=function(){return b.asm.U.apply(null,arguments)},b._csmGetParameterKeyValues=function(){return b.asm.V.apply(null,arguments)},b._csmMallocMoc=function(){return b.asm.W.apply(null,arguments)},b._csmMallocModelAndInitialize=function(){return b.asm.X.apply(null,arguments)},b._csmMalloc=function(){return b.asm.Y.apply(null,arguments)},b._csmFree=function(){return b.asm.Z.apply(null,arguments)},b._csmInitializeAmountOfMemory=function(){return b.asm._.apply(null,arguments)},b.stackSave=function(){return b.asm.$.apply(null,arguments)}),Ba=b.stackAlloc=function(){return b.asm.aa.apply(null,arguments)},Ca=b.stackRestore=function(){return b.asm.ba.apply(null,arguments)},ca=b.__growWasmMemory=function(){return b.asm.ca.apply(null,arguments)};function Z(){function a(){if(!Y&&(Y=!0,!K)){if(O(na),O(oa),b.onRuntimeInitialized&&b.onRuntimeInitialized(),b.postRun)for("function"==typeof b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var a=b.postRun.shift();pa.unshift(a)}O(pa)}}if(!(0>6}else{if(k<=65535){if(d<=e+2)break;f[e++]=224|k>>12}else{if(d<=e+3)break;f[e++]=240|k>>18,f[e++]=128|k>>12&63}f[e++]=128|k>>6&63}f[e++]=128|63&k}}f[e]=0}}return c},array:function(a){var c=Ba(a.length);return M.set(a,c),c}},g=function(a){var c=b["_"+a];return assert(c,"Cannot call unknown function "+a+", make sure it is exported"),c}(a),m=[];if(a=0,e)for(var h=0;h }) { - let fallbackCanvasRef: HTMLCanvasElement | undefined; - const [faceData, setFaceData] = createSignal({ - headPitch: 0, - headYaw: 0, - headRoll: 0, - mouthOpen: 0, - leftEyeOpen: 1, - rightEyeOpen: 1, - confidence: 0, + let canvasRef: HTMLCanvasElement | undefined; + const [loaded, setLoaded] = createSignal(false); + let live2dModel: any = null; + + createTauriEventListener(events.faceTrackingUpdate, (payload) => { + if (!live2dModel || !loaded()) return; + + const coreModel = live2dModel.internalModel?.coreModel; + if (!coreModel) return; + + coreModel.setParameterValueById("ParamAngleX", payload.head_yaw * 30); + coreModel.setParameterValueById("ParamAngleY", payload.head_pitch * 30); + coreModel.setParameterValueById("ParamAngleZ", payload.head_roll * 30); + coreModel.setParameterValueById("ParamMouthOpenY", payload.mouth_open); + coreModel.setParameterValueById("ParamEyeLOpen", payload.left_eye_open); + coreModel.setParameterValueById("ParamEyeROpen", payload.right_eye_open); + coreModel.setParameterValueById("ParamBodyAngleX", payload.head_yaw * 10); }); - const [useRive, setUseRive] = createSignal(false); - console.log("[Camera] AvatarRivAsset value:", AvatarRivAsset, typeof AvatarRivAsset); + onMount(async () => { + getCurrentWindow().show(); + if (!canvasRef) return; + + try { + await new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = "/live2d/live2dcubismcore.min.js"; + script.onload = () => { + console.log("[Camera] Cubism Core loaded"); + resolve(); + }; + script.onerror = () => reject(new Error("Failed to load Cubism Core")); + document.head.appendChild(script); + }); - let riveInputs: Record = {}; + const PIXI = await import("pixi.js"); + const { Live2DModel } = await import("pixi-live2d-display/cubism4"); - const { rive, RiveComponent } = createRive(() => ({ - src: AvatarRivAsset, - autoplay: true, - stateMachines: "State Machine 1", - onLoadError: (e: unknown) => { - console.log("[Camera] Rive load failed:", e); - setUseRive(false); - }, - })); + Live2DModel.registerTicker(PIXI.Ticker); - createEffect(() => { - const r = rive(); - if (!r) return; - console.log("[Camera] Rive instance ready"); - - const smNames = ["State Machine 1", "state_machine", "StateMachine"]; - for (const smName of smNames) { - const inputs = r.stateMachineInputs(smName); - if (inputs && inputs.length > 0) { - console.log("[Camera] Found state machine:", smName, "with", inputs.length, "inputs"); - for (const input of inputs) { - riveInputs[input.name] = input; - console.log("[Camera] Rive input:", input.name, "type:", input.type); - } - break; - } - } + const app = new PIXI.Application({ + view: canvasRef, + width: 512, + height: 512, + backgroundAlpha: 0, + backgroundColor: 0x262629, + }); - if (Object.keys(riveInputs).length === 0) { - console.log("[Camera] No inputs found, listing contents:"); - const contents = r.contents; - if (contents) { - for (const ab of contents.artboards || []) { - console.log("[Camera] Artboard:", ab.name, "stateMachines:", ab.stateMachines); - } - } - } + const modelUrl = "https://cdn.jsdelivr.net/gh/Live2D/CubismWebSamples@develop/Samples/Resources/Hiyori/Hiyori.model3.json"; - setUseRive(true); - }); + console.log("[Camera] Loading Live2D model..."); + const model = await Live2DModel.from(modelUrl, { autoInteract: false }); - createTauriEventListener(events.faceTrackingUpdate, (payload) => { - const data = { - headPitch: payload.head_pitch, - headYaw: payload.head_yaw, - headRoll: payload.head_roll, - mouthOpen: payload.mouth_open, - leftEyeOpen: payload.left_eye_open, - rightEyeOpen: payload.right_eye_open, - confidence: payload.confidence, - }; - setFaceData(data); - - if (useRive()) { - const setInput = (names: string[], value: number) => { - for (const name of names) { - if (riveInputs[name]) { - riveInputs[name].value = value; - return; - } - } - }; - setInput(["mouth_open", "mouthOpen", "Mouth", "mouth", "jawOpen", "jaw_open"], data.mouthOpen); - setInput(["left_eye_open", "leftEyeOpen", "Left Eye", "leftEye", "eyeBlinkLeft"], data.leftEyeOpen); - setInput(["right_eye_open", "rightEyeOpen", "Right Eye", "rightEye", "eyeBlinkRight"], data.rightEyeOpen); - setInput(["head_yaw", "headYaw", "Head Yaw", "yaw", "Yaw", "numX", "x"], data.headYaw); - setInput(["head_pitch", "headPitch", "Head Pitch", "pitch", "Pitch", "numY", "y"], data.headPitch); - setInput(["head_roll", "headRoll", "Head Roll", "roll", "Roll"], data.headRoll); - - if (riveInputs.Neutral) riveInputs.Neutral.value = (1.0 - data.mouthOpen) * 100; - if (riveInputs.Smile) riveInputs.Smile.value = data.mouthOpen * 80; - if (riveInputs.Happy) riveInputs.Happy.value = data.mouthOpen > 0.3 ? (data.mouthOpen - 0.3) * 140 : 0; - if (riveInputs.Surprise) riveInputs.Surprise.value = data.mouthOpen > 0.5 ? (data.mouthOpen - 0.5) * 200 : 0; - if (riveInputs.Sad) riveInputs.Sad.value = data.confidence < 0.3 ? 50 : 0; - } - }); + model.anchor.set(0.5, 0.5); + model.position.set(256, 280); - onMount(() => { - getCurrentWindow().show(); + const scale = Math.min(512 / model.width, 512 / model.height) * 0.8; + model.scale.set(scale); - if (!useRive()) { - const canvas = fallbackCanvasRef; - if (!canvas) return; - const ctx = canvas.getContext("2d"); - if (!ctx) return; - - let animationId: number; - const draw = () => { - if (!canvas || useRive()) return; - const data = faceData(); - const w = canvas.width; - const h = canvas.height; - ctx.clearRect(0, 0, w, h); - - ctx.fillStyle = "#262629"; - ctx.fillRect(0, 0, w, h); - - ctx.save(); - ctx.translate(w / 2, h / 2); - ctx.rotate(data.headRoll * 0.25); - ctx.translate(data.headYaw * 15, data.headPitch * 10); - - const breath = 1 + Math.sin(Date.now() * 0.003) * 0.01; - ctx.scale(breath, breath); - - const s = Math.min(w, h) * 0.35; - - ctx.fillStyle = "#FFFFFF"; - drawClawdShape(ctx, s, 4); - ctx.fillStyle = "#D4845A"; - drawClawdShape(ctx, s, 0); - - const eyeY = -s * 0.2; - const eyeSpacing = s * 0.35; - const eyeSize = s * 0.14; - - ctx.fillStyle = "#111111"; - const leftEyeH = eyeSize * Math.max(data.leftEyeOpen, 0.08); - ctx.fillRect(-eyeSpacing - eyeSize / 2, eyeY - leftEyeH / 2, eyeSize, leftEyeH); - const rightEyeH = eyeSize * Math.max(data.rightEyeOpen, 0.08); - ctx.fillRect(eyeSpacing - eyeSize / 2, eyeY - rightEyeH / 2, eyeSize, rightEyeH); - - if (data.mouthOpen > 0.05) { - const mouthH = data.mouthOpen * s * 0.2; - const mouthW = s * 0.2; - const mouthY = s * 0.35; - ctx.fillStyle = "#2A1508"; - ctx.beginPath(); - ctx.roundRect(-mouthW / 2, mouthY - mouthH / 2, mouthW, mouthH, mouthH * 0.3); - ctx.fill(); - } + app.stage.addChild(model); + live2dModel = model; - ctx.restore(); - animationId = requestAnimationFrame(draw); - }; - animationId = requestAnimationFrame(draw); - onCleanup(() => cancelAnimationFrame(animationId)); + console.log("[Camera] Live2D model loaded successfully"); + console.log("[Camera] Model parameters:", model.internalModel?.coreModel?.getParameterCount?.() ?? "unknown"); + setLoaded(true); + } catch (e) { + console.error("[Camera] Live2D load failed:", e); } }); @@ -382,23 +294,18 @@ function AvatarCameraPreviewPage(props: { disconnected: Accessor }) { - - - + +
    + Loading avatar... +
    ); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea01370e7a..45afaf29c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,7 @@ importers: version: 0.14.10(solid-js@1.9.6) '@solidjs/start': specifier: ^1.1.3 - version: 1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1) + version: 1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1) '@tanstack/solid-query': specifier: ^5.51.21 version: 5.75.4(solid-js@1.9.6) @@ -176,6 +176,12 @@ importers: mp4box: specifier: ^0.5.2 version: 0.5.4 + pixi-live2d-display: + specifier: 0.4.0 + version: 0.4.0(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/loaders@6.5.10(@pixi/constants@7.3.3)(@pixi/core@7.3.3)(@pixi/utils@7.3.3))(@pixi/math@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))(@pixi/utils@7.3.3) + pixi.js: + specifier: 7.3.3 + version: 7.3.3 posthog-js: specifier: ^1.215.3 version: 1.240.0 @@ -205,7 +211,7 @@ importers: version: 9.0.1 vinxi: specifier: ^0.5.6 - version: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + version: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) webcodecs: specifier: ^0.1.0 version: 0.1.0 @@ -4737,8 +4743,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.120.0': - resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} '@oxc-project/types@0.94.0': resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} @@ -4854,6 +4860,213 @@ packages: resolution: {integrity: sha512-BRs5XUAwiyCDQMsVA9IDvDa7UBR9gAvPHgugOeGng3YN6vJ9JYonyDc0lNczErgtCWtucjR5N7VtaonboD/ezg==} engines: {node: '>=10.12.0'} + '@pixi/accessibility@7.3.3': + resolution: {integrity: sha512-cHiIEP54RNqvPKmi45HvvnTbiWU+/lzdTY0zK7OXx3TmcEQRn2A7GZ1I+uxx476NeXGJtGSvv3copyxFjPB6Ew==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/events': 7.3.3 + + '@pixi/app@7.3.3': + resolution: {integrity: sha512-MS5r/yU0CrWMPXXrgKAzgC2KC35Och8fT9z6J1XUCs7yHhdO8768rnSePJuzhj9Yaclv7PUpNQzh8rG9o/MzkQ==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + + '@pixi/assets@7.3.3': + resolution: {integrity: sha512-KcLXVehdJ2kc2bSnTfatLPLL6sLD7dwU+EZ5bWQ/PZDSsfML3kLFvq84VXd4k8LKNX4RCvfy4yeeIUW1o5tnMg==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/color@7.3.3': + resolution: {integrity: sha512-IiiFhNIqXt7yULe0Wkq5Hn38ymDoEen/6EvV2y2AQIOu6TyuET5PGswAdMfG7ZjfwBaCudK6yQEUjWaXbgRUmw==} + + '@pixi/colord@2.9.6': + resolution: {integrity: sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==} + + '@pixi/compressed-textures@7.3.3': + resolution: {integrity: sha512-4h1NKePF5blN7qux29yEnKiGdk4vZif59XtLviW7Y3r9MKgKSoizDl0RqU4SKo4eC1P0jpt1qOjiG4TE+AjXGQ==} + peerDependencies: + '@pixi/assets': 7.3.3 + '@pixi/core': 7.3.3 + + '@pixi/constants@7.3.3': + resolution: {integrity: sha512-ww1JdekmKBUqHyPq8A5L+86FkzpS4KidlBm9wkX1fcd+6QQzq/vbx1JOz6m3CmH5LnlmDZ+zysLezvpZlBcwwA==} + + '@pixi/core@7.3.3': + resolution: {integrity: sha512-064tuK6NoGIl/2Wf4EUlaLLlnRMZuDdLqnISsj2/A70towg2QUWgHhwZsCB4NvAssidWu/sIT+vk5IKDmh1LKA==} + + '@pixi/display@7.3.3': + resolution: {integrity: sha512-iULZ2E6Z4vhI0FypXpUbtA+CODnj/CuTt2pi9gsw00ILI12eEx76cAiazvhxnCNqcfmj1RRK2P6s9Vzr5WmEIg==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/events@7.3.3': + resolution: {integrity: sha512-1oDfdFtKsy0Z9ew09MrSYGIIeGnBXr/c7866A32Od3KXql0dhd7UpFFpaFKLCXydDHRgFkjOP7t0/Pp1luTvfg==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + + '@pixi/extensions@7.3.3': + resolution: {integrity: sha512-Of44Wde0ZHYCuMoDLFl/8SOSPV2NiDBUB6QKBvYvNdhVslbO3pxrn9oQH9Fmsd8iGcGJ/YtyI5H2T/ky4Bo6AQ==} + + '@pixi/extract@7.3.3': + resolution: {integrity: sha512-quD61mNtgq3w2USIPUBOuxD9kVWIPoh8offqJugT4ZZS2XlSnh2FvLjCEC66jVmMM0tmk6HGAfc5xRFNlyw8PQ==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-alpha@7.3.3': + resolution: {integrity: sha512-StLLxEkCyghK3dhzLZD9jMu4lZ/ir4Bah2XXXWGhwE+XCO+//rnXreZ8v74R52WbaLUNDHzwlbq7/+BABwMu5w==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-blur@7.3.3': + resolution: {integrity: sha512-AZzMbcFoL+uHxiVM2nQrQM0MQdLdd5mw7Fd4F60ROB96tmMK/M5W/FTqgdqXUQYld6wCFZKtJMulonVaPKLXDA==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-color-matrix@7.3.3': + resolution: {integrity: sha512-Ot9lQ24lff4DPok0qy+c3IekfEuGf0Y1mx/dB3iLceys2hJHF5wK8rrhKrA1vc5IgrirbZpmjK8it9cVFzEW2g==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-displacement@7.3.3': + resolution: {integrity: sha512-fBnZTUmt6wwazdk/ZDW3HJEkf9s5b8uDuOwHvUAPWTJ6oYqwAjFXnrTlhEwB/Fp+0v6hUVVlHWEYk07HVgjEIg==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-fxaa@7.3.3': + resolution: {integrity: sha512-xq5xcpu68axMrGsVOcpxqebLAa+B4yBSLQlI2rsn7s8YtWY+pC20lsaNnKDlrv9hwJ1Ah7BtBZy0EVVaeFNYqA==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-noise@7.3.3': + resolution: {integrity: sha512-Hwwk1xLvA+0wTqJtKTnIGzyZmLubm5ylgqsMRHQqujDtVSIqE2SY1iVUcGA5vv31C7rFFkxGT4yhtfnYBNCvKQ==} + peerDependencies: + '@pixi/core': 7.3.3 + + '@pixi/graphics@7.3.3': + resolution: {integrity: sha512-czX/SEQTSCI3kkH5DFAcchPaPYOAF7cz1P5K2hVvClE/bbbIWN0H2sBIF6pIY1ENkZ0aguQs36yDeXUDWXyoiQ==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/sprite': 7.3.3 + + '@pixi/loaders@6.5.10': + resolution: {integrity: sha512-AuK7mXBmyVsDFL9DDFPB8sqP8fwQ2NOktvu98bQuJl0/p/UeK/0OAQnF3wcf3FeBv5YGXfNHL21c2DCisjKfTg==} + peerDependencies: + '@pixi/constants': 6.5.10 + '@pixi/core': 6.5.10 + '@pixi/utils': 6.5.10 + + '@pixi/math@7.3.3': + resolution: {integrity: sha512-kaHN6iusINPS0wIbrhP82za+B2qNDWHPHip/QtmpQTp81ibOIfHlDMOlsnE6rSdelTFNhrNWoTWU8IvXUbvy8g==} + + '@pixi/mesh-extras@7.3.3': + resolution: {integrity: sha512-2TW1n97PpSZIZomfoEcKezGeGLPyd82ng2u8SXQoy9keCmB2yK361/RO88jvWbY4qpnJn/89LiLyYEBiJtSmWg==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/mesh': 7.3.3 + + '@pixi/mesh@7.3.3': + resolution: {integrity: sha512-8G3FO44wLDimNlCqXBKF+zQ3nBqJ4kMBbIjGxRaRkJmahcMYkY2zJpYsYh1YqKQztL9UmcP5V170VEIcPsmaJw==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + + '@pixi/mixin-cache-as-bitmap@7.3.3': + resolution: {integrity: sha512-Vv/H24CADY5w2DZaTYhXsfr8wAyKsg6gYn0DLgWDnAI3PWkRcB0fVDfowlHAEzltfxyH4tp9LVc2jtbEIKfSlQ==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/sprite': 7.3.3 + + '@pixi/mixin-get-child-by-name@7.3.3': + resolution: {integrity: sha512-75vlViVaynPyIYQIaoU08k1iP+8s9ct2YEnW91vyiHGxxE7BBimiYomWkAUYXtSnaSFoDkNPOh7iI91Icmkf+w==} + peerDependencies: + '@pixi/display': 7.3.3 + + '@pixi/mixin-get-global-position@7.3.3': + resolution: {integrity: sha512-ZEScRlx/KSr0z40+xqF9jl9N8j0aFZCNwSluoMLuFecvn4kpaCQx8i4F8j+GkkdrnCfanSYE9ySADlUCsKmzHA==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + + '@pixi/particle-container@7.3.3': + resolution: {integrity: sha512-OxigacwSbPjVogahmBYUiYMIH+NhNa+jvGAk5OYEF431gcVmjtravPbk7mmFdGKmOMICztSyVX8kOyhXxCv63A==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/sprite': 7.3.3 + + '@pixi/prepare@7.3.3': + resolution: {integrity: sha512-2SdTyHJSDZeaEMuxXqOX01FUDhIjfWUmVCufLXxzjd8gZ52RWBpohl2gDRszPJMyPox142xzUiCnb4RuNXGHDw==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/graphics': 7.3.3 + '@pixi/text': 7.3.3 + + '@pixi/runner@7.3.3': + resolution: {integrity: sha512-LUObHyxM3tK504ChbioYySZhFhyNs779uA71fuWSFV04Ry0WNlbqVvwTbKGkyR6er6blfxdqk7d51WmuQtfLCg==} + + '@pixi/settings@7.3.3': + resolution: {integrity: sha512-a1OePduDPOfnrCm1U1RL7JhuEAncA5/jNwF51urclXU6HNTHiJT41/S6KELPoV8NbLyJCKtnKwzbbPkzKwc0Yg==} + + '@pixi/sprite-animated@7.3.3': + resolution: {integrity: sha512-BYvehHk3PlNln9tRfZ/zGp2MzVwRjggFe+s4NCQd1EU/NPQewqJGCAiQFB4Gc3hFK2Y8wkW7SpGAzuk/E2WTxg==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/sprite': 7.3.3 + + '@pixi/sprite-tiling@7.3.3': + resolution: {integrity: sha512-T4ms0TcfKq7JNRaUBaQyZsaxWziPh2EY10vFQEG17J3uyCrjQmN4dDS9AMoaltL1K3vh+CTSUnWO8S8mE1dn4Q==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/sprite': 7.3.3 + + '@pixi/sprite@7.3.3': + resolution: {integrity: sha512-P/RxnvNV0PiuyaT9HA8F1aX9krp1BgjllBQcn6KHVxyAP8tJE0TD9pfHOU1+xRuoX37swXRQiDFTF6YvWzozUQ==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + + '@pixi/spritesheet@7.3.3': + resolution: {integrity: sha512-aAebizGNiKijWmJ39bnAb8FbuXbxRINuWZ2xt7ANzJQxhbo7dX+qlF4pz91yj3gHQaulzJM2oKz4a5q6cHa7dw==} + peerDependencies: + '@pixi/assets': 7.3.3 + '@pixi/core': 7.3.3 + + '@pixi/text-bitmap@7.3.3': + resolution: {integrity: sha512-2IOBoSHtb2e1aoxB/pfJPFW34XeY8HpDtGJKn3F9IUYpBo6nnnZ6DuJNZyFG2r/hiytjVvulqI66CzOH/eJJ4A==} + peerDependencies: + '@pixi/assets': 7.3.3 + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/mesh': 7.3.3 + '@pixi/text': 7.3.3 + + '@pixi/text-html@7.3.3': + resolution: {integrity: sha512-z8vsgsqVJuFEVX07wh0IYAwQ5DBiel8Lhxo2Ly8594O0mIdQ1IPvtAPv+WRyG35WT0i26J7GL2BZxURouDP2WA==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3 + '@pixi/sprite': 7.3.3 + '@pixi/text': 7.3.3 + + '@pixi/text@7.3.3': + resolution: {integrity: sha512-s9BLmiURYeJppPYB040jrGbtbsWM9PcXSRtr40xrbR0a+HPlxDEWCaHka9DiUFr/lIuOpA0y/YjmZskq5o5R7g==} + peerDependencies: + '@pixi/core': 7.3.3 + '@pixi/sprite': 7.3.3 + + '@pixi/ticker@7.3.3': + resolution: {integrity: sha512-AxeMKP9vTcla+yYXCABc0uKUODjIsJRXk3DCHVpoPeeqRYPaKH291RtDw92QFw7FFgGBbRgsptBjF9Q+uO5hDA==} + + '@pixi/utils@7.3.3': + resolution: {integrity: sha512-rgWD0YV6oDKOVuQJ9ra6g3VdoN8usC6Kj/t3Ba1t9P+k9qUKIM0gCr9/bxFf7CJ/EUS8A2WTVfEmJVN2TwZfxg==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -5688,8 +5901,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.10': - resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==} + '@rolldown/binding-android-arm64@1.0.0-rc.11': + resolution: {integrity: sha512-SJ+/g+xNnOh6NqYxD0V3uVN4W3VfnrGsC9/hoglicgTNfABFG9JjISvkkU0dNY84MNHLWyOgxP9v9Y9pX4S7+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -5700,8 +5913,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-rc.10': - resolution: {integrity: sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.11': + resolution: {integrity: sha512-7WQgR8SfOPwmDZGFkThUvsmd/nwAWv91oCO4I5LS7RKrssPZmOt7jONN0cW17ydGC1n/+puol1IpoieKqQidmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -5712,8 +5925,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.10': - resolution: {integrity: sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==} + '@rolldown/binding-darwin-x64@1.0.0-rc.11': + resolution: {integrity: sha512-39Ks6UvIHq4rEogIfQBoBRusj0Q0nPVWIvqmwBLaT6aqQGIakHdESBVOPRRLacy4WwUPIx4ZKzfZ9PMW+IeyUQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -5724,8 +5937,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-rc.10': - resolution: {integrity: sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.11': + resolution: {integrity: sha512-jfsm0ZHfhiqrvWjJAmzsqiIFPz5e7mAoCOPBNTcNgkiid/LaFKiq92+0ojH+nmJmKYkre4t71BWXUZDNp7vsag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -5736,8 +5949,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': - resolution: {integrity: sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11': + resolution: {integrity: sha512-zjQaUtSyq1nVe3nxmlSCuR96T1LPlpvmJ0SZy0WJFEsV4kFbXcq2u68L4E6O0XeFj4aex9bEauqjW8UQBeAvfQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -5748,8 +5961,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-WMW1yE6IOnehTcFE9eipFkm3XN63zypWlrJQ2iF7NrQ9b2LDRjumFoOGJE8RJJTJCTBAdmLMnJ8uVitACUUo1Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -5760,20 +5973,20 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': - resolution: {integrity: sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.11': + resolution: {integrity: sha512-jfndI9tsfm4APzjNt6QdBkYwre5lRPUgHeDHoI7ydKUuJvz3lZeCfMsI56BZj+7BYqiKsJm7cfd/6KYV7ubrBg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-ZlFgw46NOAGMgcdvdYwAGu2Q+SLFA9LzbJLW+iyMOJyhj5wk6P3KEE9Gct4xWwSzFoPI7JCdYmYMzVtlgQ+zfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-hIOYmuT6ofM4K04XAZd3OzMySEO4K0/nc9+jmNcxNAxRi6c5UWpqfw3KMFV4MVFWL+jQsSh+bGw2VqmaPMTLyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -5784,8 +5997,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': - resolution: {integrity: sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.11': + resolution: {integrity: sha512-qXBQQO9OvkjjQPLdUVr7Nr2t3QTZI7s4KZtfw7HzBgjbmAPSFwSv4rmET9lLSgq3rH/ndA3ngv3Qb8l2njoPNA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -5796,8 +6009,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': - resolution: {integrity: sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.11': + resolution: {integrity: sha512-/tpFfoSTzUkH9LPY+cYbqZBDyyX62w5fICq9qzsHLL8uTI6BHip3Q9Uzft0wylk/i8OOwKik8OxW+QAhDmzwmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -5808,8 +6021,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': - resolution: {integrity: sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.11': + resolution: {integrity: sha512-mcp3Rio2w72IvdZG0oQ4bM2c2oumtwHfUfKncUM6zGgz0KgPz4YmDPQfnXEiY5t3+KD/i8HG2rOB/LxdmieK2g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -5819,8 +6032,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': - resolution: {integrity: sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.11': + resolution: {integrity: sha512-LXk5Hii1Ph9asuGRjBuz8TUxdc1lWzB7nyfdoRgI0WGPZKmCxvlKk8KfYysqtr4MfGElu/f/pEQRh8fcEgkrWw==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -5830,8 +6043,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': - resolution: {integrity: sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11': + resolution: {integrity: sha512-dDwf5otnx0XgRY1yqxOC4ITizcdzS/8cQ3goOWv3jFAo4F+xQYni+hnMuO6+LssHHdJW7+OCVL3CoU4ycnh35Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -5848,8 +6061,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': - resolution: {integrity: sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.11': + resolution: {integrity: sha512-LN4/skhSggybX71ews7dAj6r2geaMJfm3kMbK2KhFMg9B10AZXnKoLCVVgzhMHL0S+aKtr4p8QbAW8k+w95bAA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5857,8 +6070,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.42': resolution: {integrity: sha512-N7pQzk9CyE7q0bBN/q0J8s6Db279r5kUZc6d7/wWRe9/zXqC52HQovVyu6iXPIDY4BEzzgbVLhVFXrOuGJ22ZQ==} - '@rolldown/pluginutils@1.0.0-rc.10': - resolution: {integrity: sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==} + '@rolldown/pluginutils@1.0.0-rc.11': + resolution: {integrity: sha512-xQO9vbwBecJRv9EUcQ/y0dzSTJgA7Q6UVN7xp6B81+tBGSLVAK03yJ9NkJaUA7JFD91kbjxRSC/mDnmvXzbHoQ==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -6893,10 +7106,10 @@ packages: react-dom: optional: true - '@storybook/builder-vite@10.4.0-alpha.2': - resolution: {integrity: sha512-1SObow4y5H8RPsUPF8NjLY8c28eN49EUWLWKOb1ENBxueDApJeaONpqdILaNT3f7Sl8tnJlhKdF/Ttl0XKev0g==} + '@storybook/builder-vite@10.4.0-alpha.3': + resolution: {integrity: sha512-lyJ8fqGtS1An4ri0ORLSXWciFDvRwUP5kHf0asGfikqcRYPymFMQcief/Iqf9bzq6A5hzcCxctwTECW1T0tSDQ==} peerDependencies: - storybook: ^10.4.0-alpha.2 + storybook: ^10.4.0-alpha.3 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@storybook/core@8.6.12': @@ -6907,12 +7120,12 @@ packages: prettier: optional: true - '@storybook/csf-plugin@10.4.0-alpha.2': - resolution: {integrity: sha512-m1jPKHF12Sb9zNY0ZwcJgj/d1EtEkUs1a+tiyUdr4JJcWS5Fg4njhb0U3gGYZ2Aib72xZT1pSJ/6QjDXW18oSw==} + '@storybook/csf-plugin@10.4.0-alpha.3': + resolution: {integrity: sha512-sZdlppt5CgjsukwartiqyZdiR9y1vA52Gmpj9PszzE/80HwjeDsJ6eK5A8XBkOcakPvHapk9OdpsNY06snE4cw==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.4.0-alpha.2 + storybook: ^10.4.0-alpha.3 vite: '*' webpack: '*' peerDependenciesMeta: @@ -7572,6 +7785,9 @@ packages: '@types/cors@2.8.19': resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} + '@types/css-font-loading-module@0.0.12': + resolution: {integrity: sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==} + '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -7620,6 +7836,9 @@ packages: '@types/dom-webcodecs@0.1.14': resolution: {integrity: sha512-ba9aF0qARLLQpLihONIRbj8VvAdUxO+5jIxlscVcDAQTcJmq5qVr781+ino5qbQUJUmO21cLP2eLeXYWzao5Vg==} + '@types/earcut@2.1.4': + resolution: {integrity: sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==} + '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -7728,6 +7947,9 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/offscreencanvas@2019.7.3': + resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} + '@types/prop-types@15.7.14': resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} @@ -8528,10 +8750,18 @@ packages: array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -8603,6 +8833,9 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -9832,6 +10065,9 @@ packages: duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -9855,6 +10091,9 @@ packages: electron-to-chromium@1.5.234: resolution: {integrity: sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==} + email-addresses@3.1.0: + resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -10494,6 +10733,14 @@ packages: filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filename-reserved-regex@2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + + filenamify@4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + filesize@10.1.6: resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} engines: {node: '>= 10.4.0'} @@ -10510,6 +10757,10 @@ packages: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + find-my-way-ts@0.1.6: resolution: {integrity: sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==} @@ -10517,6 +10768,10 @@ packages: resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -10632,6 +10887,10 @@ packages: resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} engines: {node: '>=14.14'} + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -10734,6 +10993,11 @@ packages: get-tsconfig@4.11.0: resolution: {integrity: sha512-sNsqf7XKQ38IawiVGPOoAlqZo1DMrO7TU+ZcZwi7yLl7/7S0JwmoBMKz/IkUPhSoXM0Ng3vT0yB1iCe5XavDeQ==} + gh-pages@4.0.0: + resolution: {integrity: sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==} + engines: {node: '>=10'} + hasBin: true + gif.js@0.2.0: resolution: {integrity: sha512-bYxCoT8OZKmbxY8RN4qDiYuj4nrQDTzgLRcFVovyona1PTWNePzI4nzOmotnlOFIzTk/ZxAHtv+TfVLiBWj/hw==} @@ -10804,6 +11068,10 @@ packages: resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} engines: {node: '>=18'} + globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -11404,6 +11672,9 @@ packages: resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} + ismobilejs@1.1.1: + resolution: {integrity: sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -11545,6 +11816,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -11657,6 +11931,10 @@ packages: resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==} engines: {node: '>=14'} + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -12721,6 +12999,10 @@ packages: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -12729,6 +13011,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -12753,6 +13039,10 @@ packages: resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} engines: {node: '>=14.16'} + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + p-wait-for@5.0.2: resolution: {integrity: sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==} engines: {node: '>=12'} @@ -12910,14 +13200,39 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + pixi-live2d-display@0.4.0: + resolution: {integrity: sha512-xeYC6y4Y0Bxe9ksWNlGFZC1rII/MPrzPQK7t1c3ubA8RhkOISIqHJl38fNumXqhGEs+yItmgDOkFT+9dsyGDjA==} + peerDependencies: + '@pixi/core': ^6 + '@pixi/display': ^6 + '@pixi/loaders': ^6 + '@pixi/math': ^6 + '@pixi/sprite': ^6 + '@pixi/utils': ^6 + + pixi.js@7.3.3: + resolution: {integrity: sha512-EuAyWZBL5lKViCgYkB6dbwkiI/MNht8O8F8956up9vwGEGf659QRHxfVQoRj8zdNGOBbe51XAxQMfLaW/l0Ekg==} + pkce-challenge@4.1.0: resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} engines: {node: '>=16.20.0'} + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} @@ -13151,6 +13466,9 @@ packages: punycode@1.3.2: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -13635,8 +13953,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-rc.10: - resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==} + rolldown@1.0.0-rc.11: + resolution: {integrity: sha512-NRjoKMusSjfRbSYiH3VSumlkgFe7kYAa3pzVOsVYVFY3zb5d7nS+a3KGQ7hJKXuYWbzJKPVQ9Wxq2UvyK+ENpw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -14232,6 +14550,10 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + strip-outer@1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + stripe@14.25.0: resolution: {integrity: sha512-wQS3GNMofCXwH8TSje8E1SE8zr6ODiGtHQgPtO95p9Mb4FhKC9jvXR2NUTpZ9ZINlckJcFidCmaTFV4P6vsb9g==} engines: {node: '>=12.*'} @@ -14545,6 +14867,10 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trim-repeated@1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + triple-beam@1.4.1: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} @@ -14878,6 +15204,10 @@ packages: universal-user-agent@7.0.2: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -15046,6 +15376,10 @@ packages: url@0.10.3: resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + urlpattern-polyfill@10.1.0: resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} @@ -19888,7 +20222,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.120.0': {} + '@oxc-project/types@0.122.0': {} '@oxc-project/types@0.94.0': {} @@ -19986,6 +20320,203 @@ snapshots: tslib: 2.8.1 webcrypto-core: 1.8.1 + '@pixi/accessibility@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/events@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/events': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/app@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + + '@pixi/assets@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + '@types/css-font-loading-module': 0.0.12 + + '@pixi/color@7.3.3': + dependencies: + '@pixi/colord': 2.9.6 + + '@pixi/colord@2.9.6': {} + + '@pixi/compressed-textures@7.3.3(@pixi/assets@7.3.3(@pixi/core@7.3.3))(@pixi/core@7.3.3)': + dependencies: + '@pixi/assets': 7.3.3(@pixi/core@7.3.3) + '@pixi/core': 7.3.3 + + '@pixi/constants@7.3.3': {} + + '@pixi/core@7.3.3': + dependencies: + '@pixi/color': 7.3.3 + '@pixi/constants': 7.3.3 + '@pixi/extensions': 7.3.3 + '@pixi/math': 7.3.3 + '@pixi/runner': 7.3.3 + '@pixi/settings': 7.3.3 + '@pixi/ticker': 7.3.3 + '@pixi/utils': 7.3.3 + '@types/offscreencanvas': 2019.7.3 + + '@pixi/display@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/events@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + + '@pixi/extensions@7.3.3': {} + + '@pixi/extract@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-alpha@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-blur@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-color-matrix@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-displacement@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-fxaa@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/filter-noise@7.3.3(@pixi/core@7.3.3)': + dependencies: + '@pixi/core': 7.3.3 + + '@pixi/graphics@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/loaders@6.5.10(@pixi/constants@7.3.3)(@pixi/core@7.3.3)(@pixi/utils@7.3.3)': + dependencies: + '@pixi/constants': 7.3.3 + '@pixi/core': 7.3.3 + '@pixi/utils': 7.3.3 + + '@pixi/math@7.3.3': {} + + '@pixi/mesh-extras@7.3.3(@pixi/core@7.3.3)(@pixi/mesh@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/mesh': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/mesh@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + + '@pixi/mixin-cache-as-bitmap@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/mixin-get-child-by-name@7.3.3(@pixi/display@7.3.3(@pixi/core@7.3.3))': + dependencies: + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + + '@pixi/mixin-get-global-position@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + + '@pixi/particle-container@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/prepare@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/graphics@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))))(@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/graphics': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/text': 7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + + '@pixi/runner@7.3.3': {} + + '@pixi/settings@7.3.3': + dependencies: + '@pixi/constants': 7.3.3 + '@types/css-font-loading-module': 0.0.12 + ismobilejs: 1.1.1 + + '@pixi/sprite-animated@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/sprite-tiling@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + + '@pixi/spritesheet@7.3.3(@pixi/assets@7.3.3(@pixi/core@7.3.3))(@pixi/core@7.3.3)': + dependencies: + '@pixi/assets': 7.3.3(@pixi/core@7.3.3) + '@pixi/core': 7.3.3 + + '@pixi/text-bitmap@7.3.3(@pixi/assets@7.3.3(@pixi/core@7.3.3))(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/mesh@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))(@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))))': + dependencies: + '@pixi/assets': 7.3.3(@pixi/core@7.3.3) + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/mesh': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/text': 7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + + '@pixi/text-html@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))(@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/text': 7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + + '@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))': + dependencies: + '@pixi/core': 7.3.3 + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + + '@pixi/ticker@7.3.3': + dependencies: + '@pixi/extensions': 7.3.3 + '@pixi/settings': 7.3.3 + '@pixi/utils': 7.3.3 + + '@pixi/utils@7.3.3': + dependencies: + '@pixi/color': 7.3.3 + '@pixi/constants': 7.3.3 + '@pixi/settings': 7.3.3 + '@types/earcut': 2.1.4 + earcut: 2.2.4 + eventemitter3: 4.0.7 + url: 0.11.4 + '@pkgjs/parseargs@0.11.0': optional: true @@ -20867,67 +21398,67 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.10': + '@rolldown/binding-android-arm64@1.0.0-rc.11': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.10': + '@rolldown/binding-darwin-arm64@1.0.0-rc.11': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.10': + '@rolldown/binding-darwin-x64@1.0.0-rc.11': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.10': + '@rolldown/binding-freebsd-x64@1.0.0-rc.11': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.10': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.11': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.11': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.10': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.11': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.11': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.10': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.11': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.10': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.11': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.10': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.11': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': @@ -20935,7 +21466,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.0.6 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.10': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.11': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true @@ -20943,7 +21474,7 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.10': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.11': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': @@ -20952,12 +21483,12 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.10': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.11': optional: true '@rolldown/pluginutils@1.0.0-beta.42': {} - '@rolldown/pluginutils@1.0.0-rc.10': {} + '@rolldown/pluginutils@1.0.0-rc.11': {} '@rollup/plugin-alias@5.1.1(rollup@4.40.2)': optionalDependencies: @@ -22196,11 +22727,11 @@ snapshots: dependencies: solid-js: 1.9.6 - '@solidjs/start@1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)': + '@solidjs/start@1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@tanstack/server-functions-plugin': 1.119.2(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) - '@vinxi/server-components': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/server-components': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) defu: 6.1.4 error-stack-parser: 2.1.4 html-to-image: 1.11.13 @@ -22211,7 +22742,7 @@ snapshots: source-map-js: 1.2.1 terracotta: 1.0.6(solid-js@1.9.6) tinyglobby: 0.2.13 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1)) transitivePeerDependencies: - '@testing-library/jest-dom' @@ -22341,9 +22872,9 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/builder-vite@10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/builder-vite@10.4.0-alpha.3(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': dependencies: - '@storybook/csf-plugin': 10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/csf-plugin': 10.4.0-alpha.3(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) storybook: 8.6.12(prettier@3.7.4) ts-dedent: 2.2.0 vite: 6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1) @@ -22373,7 +22904,7 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/csf-plugin@10.4.0-alpha.3(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': dependencies: storybook: 8.6.12(prettier@3.7.4) unplugin: 2.3.10 @@ -23044,6 +23575,8 @@ snapshots: dependencies: '@types/node': 20.19.21 + '@types/css-font-loading-module@0.0.12': {} + '@types/d3-array@3.2.2': {} '@types/d3-color@3.1.3': {} @@ -23091,6 +23624,8 @@ snapshots: '@types/dom-webcodecs@0.1.14': {} + '@types/earcut@2.1.4': {} + '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -23218,6 +23753,8 @@ snapshots: '@types/normalize-package-data@2.4.4': {} + '@types/offscreencanvas@2019.7.3': {} + '@types/prop-types@15.7.14': {} '@types/qs@6.9.18': {} @@ -23599,7 +24136,7 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vinxi/plugin-directives@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': + '@vinxi/plugin-directives@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: '@babel/parser': 7.27.2 acorn: 8.14.1 @@ -23610,18 +24147,18 @@ snapshots: magicast: 0.2.11 recast: 0.23.11 tslib: 2.8.1 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) - '@vinxi/server-components@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': + '@vinxi/server-components@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) acorn: 8.14.1 acorn-loose: 8.5.0 acorn-typescript: 1.4.13(acorn@8.14.1) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) '@virtual-grid/core@2.0.1': {} @@ -24416,8 +24953,14 @@ snapshots: array-timsort@1.0.3: {} + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + array-union@2.1.0: {} + array-uniq@1.0.3: {} + array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.8 @@ -24512,6 +25055,10 @@ snapshots: async-sema@3.1.1: {} + async@2.6.4: + dependencies: + lodash: 4.17.21 + async@3.2.6: {} asynckit@0.4.0: {} @@ -25623,6 +26170,8 @@ snapshots: duplexer@0.1.2: {} + earcut@2.2.4: {} + eastasianwidth@0.2.0: {} easy-table@1.2.0: @@ -25646,6 +26195,8 @@ snapshots: electron-to-chromium@1.5.234: {} + email-addresses@3.1.0: {} + emoji-regex-xs@1.0.0: {} emoji-regex@10.4.0: {} @@ -26104,7 +26655,7 @@ snapshots: '@typescript-eslint/parser': 5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3) eslint: 9.30.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.30.1(jiti@2.6.1)) @@ -26133,33 +26684,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 9.30.1(jiti@2.6.1) + eslint: 8.57.1 get-tsconfig: 4.11.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.30.1(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) - eslint: 8.57.1 + eslint: 9.30.1(jiti@2.6.1) get-tsconfig: 4.11.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -26174,14 +26725,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3) eslint: 9.30.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.30.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -26225,7 +26776,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.30.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -26817,6 +27368,14 @@ snapshots: dependencies: minimatch: 5.1.6 + filename-reserved-regex@2.0.0: {} + + filenamify@4.3.0: + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + filesize@10.1.6: {} fill-range@7.1.1: @@ -26836,10 +27395,21 @@ snapshots: transitivePeerDependencies: - supports-color + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + find-my-way-ts@0.1.6: {} find-up-simple@1.0.1: {} + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -26942,6 +27512,12 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -27052,6 +27628,16 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + gh-pages@4.0.0: + dependencies: + async: 2.6.4 + commander: 2.20.3 + email-addresses: 3.1.0 + filenamify: 4.3.0 + find-cache-dir: 3.3.2 + fs-extra: 8.1.0 + globby: 6.1.0 + gif.js@0.2.0: {} giget@2.0.0: @@ -27150,6 +27736,14 @@ snapshots: slash: 5.1.0 unicorn-magic: 0.3.0 + globby@6.1.0: + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + globrex@0.1.2: {} gonzales-pe@4.3.0: @@ -27790,6 +28384,8 @@ snapshots: isexe@3.1.1: {} + ismobilejs@1.1.1: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -27930,6 +28526,10 @@ snapshots: json5@2.2.3: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + jsonfile@6.1.0: dependencies: universalify: 2.0.1 @@ -28047,6 +28647,10 @@ snapshots: pkg-types: 2.1.0 quansync: 0.2.10 + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -29084,7 +29688,7 @@ snapshots: cors: 2.8.5 next: 15.5.9(@babel/core@7.27.1)(@opentelemetry/api@1.9.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - nitropack@2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(xml2js@0.6.2): + nitropack@2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(xml2js@0.6.2): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.1.5(encoding@0.1.13)(rollup@4.40.2) @@ -29138,7 +29742,7 @@ snapshots: pretty-bytes: 6.1.1 radix3: 1.1.2 rollup: 4.40.2 - rollup-plugin-visualizer: 5.14.0(rolldown@1.0.0-rc.10)(rollup@4.40.2) + rollup-plugin-visualizer: 5.14.0(rolldown@1.0.0-rc.11)(rollup@4.40.2) scule: 1.3.0 semver: 7.7.2 serve-placeholder: 2.0.2 @@ -29544,6 +30148,10 @@ snapshots: dependencies: p-timeout: 5.1.0 + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -29552,6 +30160,10 @@ snapshots: dependencies: yocto-queue: 1.2.1 + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -29570,6 +30182,8 @@ snapshots: p-timeout@6.1.4: {} + p-try@2.2.0: {} + p-wait-for@5.0.2: dependencies: p-timeout: 6.1.4 @@ -29722,10 +30336,63 @@ snapshots: pify@2.3.0: {} + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + pirates@4.0.7: {} + pixi-live2d-display@0.4.0(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/loaders@6.5.10(@pixi/constants@7.3.3)(@pixi/core@7.3.3)(@pixi/utils@7.3.3))(@pixi/math@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))(@pixi/utils@7.3.3): + dependencies: + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/loaders': 6.5.10(@pixi/constants@7.3.3)(@pixi/core@7.3.3)(@pixi/utils@7.3.3) + '@pixi/math': 7.3.3 + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/utils': 7.3.3 + gh-pages: 4.0.0 + + pixi.js@7.3.3: + dependencies: + '@pixi/accessibility': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/events@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/app': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/assets': 7.3.3(@pixi/core@7.3.3) + '@pixi/compressed-textures': 7.3.3(@pixi/assets@7.3.3(@pixi/core@7.3.3))(@pixi/core@7.3.3) + '@pixi/core': 7.3.3 + '@pixi/display': 7.3.3(@pixi/core@7.3.3) + '@pixi/events': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/extensions': 7.3.3 + '@pixi/extract': 7.3.3(@pixi/core@7.3.3) + '@pixi/filter-alpha': 7.3.3(@pixi/core@7.3.3) + '@pixi/filter-blur': 7.3.3(@pixi/core@7.3.3) + '@pixi/filter-color-matrix': 7.3.3(@pixi/core@7.3.3) + '@pixi/filter-displacement': 7.3.3(@pixi/core@7.3.3) + '@pixi/filter-fxaa': 7.3.3(@pixi/core@7.3.3) + '@pixi/filter-noise': 7.3.3(@pixi/core@7.3.3) + '@pixi/graphics': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/mesh': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/mesh-extras': 7.3.3(@pixi/core@7.3.3)(@pixi/mesh@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/mixin-cache-as-bitmap': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/mixin-get-child-by-name': 7.3.3(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/mixin-get-global-position': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/particle-container': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/prepare': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/graphics@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))))(@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))) + '@pixi/sprite': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)) + '@pixi/sprite-animated': 7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/sprite-tiling': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/spritesheet': 7.3.3(@pixi/assets@7.3.3(@pixi/core@7.3.3))(@pixi/core@7.3.3) + '@pixi/text': 7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))) + '@pixi/text-bitmap': 7.3.3(@pixi/assets@7.3.3(@pixi/core@7.3.3))(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/mesh@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))(@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))) + '@pixi/text-html': 7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3))(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))(@pixi/text@7.3.3(@pixi/core@7.3.3)(@pixi/sprite@7.3.3(@pixi/core@7.3.3)(@pixi/display@7.3.3(@pixi/core@7.3.3)))) + pkce-challenge@4.1.0: {} + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 @@ -29970,6 +30637,8 @@ snapshots: punycode@1.3.2: {} + punycode@1.4.1: {} + punycode@2.3.1: {} pure-rand@6.1.0: {} @@ -30563,7 +31232,7 @@ snapshots: dependencies: glob: 7.2.3 - rolldown-plugin-dts@0.16.11(rolldown@1.0.0-rc.10)(typescript@5.8.3): + rolldown-plugin-dts@0.16.11(rolldown@1.0.0-rc.11)(typescript@5.8.3): dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.4 @@ -30574,7 +31243,7 @@ snapshots: dts-resolver: 2.1.2 get-tsconfig: 4.11.0 magic-string: 0.30.19 - rolldown: 1.0.0-rc.10 + rolldown: 1.0.0-rc.11 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30602,26 +31271,26 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 - rolldown@1.0.0-rc.10: + rolldown@1.0.0-rc.11: dependencies: - '@oxc-project/types': 0.120.0 - '@rolldown/pluginutils': 1.0.0-rc.10 + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.11 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.10 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.10 - '@rolldown/binding-darwin-x64': 1.0.0-rc.10 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.10 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.10 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.10 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.10 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.10 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.10 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.10 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.10 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.10 + '@rolldown/binding-android-arm64': 1.0.0-rc.11 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.11 + '@rolldown/binding-darwin-x64': 1.0.0-rc.11 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.11 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.11 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.11 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.11 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.11 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.11 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.11 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.11 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.11 rollup-plugin-inject@3.0.2: dependencies: @@ -30633,14 +31302,14 @@ snapshots: dependencies: rollup-plugin-inject: 3.0.2 - rollup-plugin-visualizer@5.14.0(rolldown@1.0.0-rc.10)(rollup@4.40.2): + rollup-plugin-visualizer@5.14.0(rolldown@1.0.0-rc.11)(rollup@4.40.2): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rolldown: 1.0.0-rc.10 + rolldown: 1.0.0-rc.11 rollup: 4.40.2 rollup-pluginutils@2.8.2: @@ -31246,7 +31915,7 @@ snapshots: storybook-solidjs-vite@1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(esbuild@0.25.5)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)): dependencies: - '@storybook/builder-vite': 10.4.0-alpha.2(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/builder-vite': 10.4.0-alpha.3(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) '@storybook/types': 9.0.0-alpha.1(storybook@8.6.12(prettier@3.7.4)) magic-string: 0.30.17 solid-js: 1.9.6 @@ -31402,6 +32071,10 @@ snapshots: dependencies: js-tokens: 9.0.1 + strip-outer@1.0.1: + dependencies: + escape-string-regexp: 1.0.5 + stripe@14.25.0: dependencies: '@types/node': 20.17.43 @@ -31789,6 +32462,10 @@ snapshots: trim-lines@3.0.1: {} + trim-repeated@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + triple-beam@1.4.1: {} trough@2.2.0: {} @@ -31893,8 +32570,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-rc.10 - rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-rc.10)(typescript@5.8.3) + rolldown: 1.0.0-rc.11 + rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-rc.11)(typescript@5.8.3) semver: 7.7.2 tinyexec: 1.0.1 tinyglobby: 0.2.15 @@ -32244,6 +32921,8 @@ snapshots: universal-user-agent@7.0.2: {} + universalify@0.1.2: {} + universalify@2.0.1: {} unixify@1.0.0: @@ -32398,6 +33077,11 @@ snapshots: punycode: 1.3.2 querystring: 0.2.0 + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.14.0 + urlpattern-polyfill@10.1.0: {} urlpattern-polyfill@8.0.2: {} @@ -32509,7 +33193,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1): + vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1): dependencies: '@babel/core': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) @@ -32531,7 +33215,7 @@ snapshots: hookable: 5.5.3 http-proxy: 1.18.1 micromatch: 4.0.8 - nitropack: 2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.0-rc.10)(xml2js@0.6.2) + nitropack: 2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.11)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.0-rc.11)(xml2js@0.6.2) node-fetch-native: 1.6.6 path-to-regexp: 6.3.0 pathe: 1.1.2