diff --git a/.Agent Context/Bibels/Project Velocity Master Bibel.md b/.Agent Context/Bibels/Project Velocity Master Bibel.md
new file mode 100644
index 00000000..8964aba7
--- /dev/null
+++ b/.Agent Context/Bibels/Project Velocity Master Bibel.md
@@ -0,0 +1,875 @@
+# Project Velocity Master Bibel
+
+**Status:** Master source of truth
+**Prepared:** 2026-04-12
+**Scope:** Unified synthesis of Project Velocity markdown documentation across product, architecture, infrastructure, operations, iOS, web, AI workflows, and GTM context
+**Exclusions:** Anything under `Sourik` was intentionally excluded from this synthesis
+**Method:** This document normalizes and reconciles the current documentation corpus. It is not a raw concatenation. Where source docs disagree, this bibel favors the latest operational truth and the more concrete implementation artifact.
+
+---
+
+## Chapter Index
+
+1. Charter and Scope
+2. Source Corpus
+3. Product Thesis
+4. Commercial Model
+5. Customer and User Model
+6. Suite Architecture
+7. Core Product Surfaces
+8. Oracle
+9. Sentinel
+10. Dream Weaver and Catalyst
+11. Web Application
+12. iOS Application
+13. Backend and AI Runtime
+14. Data Model and Core Entities
+15. Infrastructure and Deployment Model
+16. Stable Ingress Layer
+17. Linux AWS Control Surface
+18. Operating Flows
+19. Security, Privacy, and Sovereignty
+20. Current Live Truth
+21. Build Priorities and Open Gaps
+22. Runbooks and Team Usage
+23. Source Lineage Map
+
+---
+
+## 1. Charter and Scope
+
+Project Velocity is not one app. It is a private, on-prem or client-controlled real-estate operating system composed of:
+
+- a premium web interface
+- a native iPad surface
+- an AI CRM and analytics layer
+- a biometric perception and scoring layer
+- a visual generation layer
+- a durable infrastructure and operator layer
+
+Velocity is designed around an anti-SaaS principle:
+
+- client data stays with the client
+- deployments can run on-prem or in client-controlled cloud
+- the product is sold as strategic capability, not seat-based software
+
+This master bibel exists to collapse scattered markdown artifacts into one normalized document the team can use as the primary reference.
+
+---
+
+## 2. Source Corpus
+
+This bibel synthesizes the key Project Velocity markdown sources, including:
+
+- core bibles:
+ - `velocity_technical_bible.md`
+ - `velocity_ios_bible.md`
+ - `Project Velocity - The Oracle.md`
+ - `The Sentinel Bibel.md`
+ - `Desineuron Ops Control Plane Bibel.md`
+- infrastructure:
+ - `TEAM_HANDOFF_2026-04-08.md`
+ - ingress and ops control plane READMEs
+- Comfy and Dream Weaver:
+ - `DREAMWEAVER_TECHNICAL_SPEC.md`
+ - `A100_DEPLOYMENT_VALIDATION.md`
+ - `comfy_engine/scripts/README.md`
+- operational truth docs:
+ - `nemoclaw_setup_truth.md`
+ - `velocity_status_report.md`
+ - `oracle_development_status.md`
+- strategic and customer docs:
+ - Kolkata builder intel
+ - Customer 0 strategy
+ - customer persona notes
+ - sprint and user story docs
+
+Excluded from synthesis:
+
+- any path containing `Sourik`
+- vendor or dependency markdown such as `node_modules`
+- non-authoritative third-party readmes unless they directly influenced repo behavior
+
+---
+
+## 3. Product Thesis
+
+Velocity is a real-estate sales acceleration platform for high-value property selling environments.
+
+Its core promise is:
+
+- compress sales cycles
+- increase intelligence during sales interactions
+- reduce lead leakage
+- preserve data sovereignty
+- give each property or portfolio a private, premium operating stack
+
+The product is built around a first-principles model:
+
+- property-specific intelligence matters
+- portfolio intelligence unlocks when multiple properties are active
+- AI should operate the workflow surface, not just answer questions
+- product delivery must be standardized enough to avoid bespoke installation chaos
+
+Velocity is therefore best understood as a modular operating system, not a single dashboard.
+
+---
+
+## 4. Commercial Model
+
+The business model reflected in the documentation is:
+
+- initial setup fee
+- monthly maintenance / bleeding-edge upgrade fee
+- inventory-linked or performance-linked downstream value capture
+
+The product is not sold primarily by seats. The most important commercial unit is the property, with portfolio behavior unlocking when multiple properties are onboarded.
+
+Working internal segmentation:
+
+- **Tier 3 / city-channel model**
+ - CP or channel-heavy deployment
+ - one city per install
+ - can cover many builders in that city
+ - user count can still be high
+- **Tier 2 / project-builder model**
+ - per-project deployment for a builder
+ - narrower operational scope
+ - property-specific generation and sales workflows
+- **Tier 1 / enterprise portfolio model**
+ - multi-property or multi-portfolio controls
+ - monitoring and interaction layers across properties
+ - governance and deeper integrations
+
+Commercially, the strongest internal framing is:
+
+- first property gets full setup
+- second property unlocks portfolio features
+- enterprise control grows with property count and operational complexity
+
+---
+
+## 5. Customer and User Model
+
+### Customer Types
+
+- developers / builders
+- brokerages and CPs
+- city-channel sales operators
+- enterprise portfolio operators
+
+### Internal User Types
+
+- junior broker
+- senior broker
+- sales director
+- marketing operator
+- data steward
+- compliance reviewer
+- platform admin
+- operator / infra admin
+
+### Team Reality
+
+The current docs imply two simultaneous realities:
+
+- product reality for future customers
+- internal Desineuron operating reality used to build, demo, and run the system
+
+This bibel captures both, but prefers the operational truth when implementation details matter.
+
+---
+
+## 6. Suite Architecture
+
+```mermaid
+flowchart TD
+ A[Velocity User Surface] --> B[Web App]
+ A --> C[iPad App]
+ B --> D[FastAPI Neural Core]
+ C --> D
+ D --> E[Oracle]
+ D --> F[Sentinel]
+ D --> G[Inventory]
+ D --> H[Dream Weaver / Catalyst]
+ E --> I[PostgreSQL]
+ F --> I
+ G --> I
+ D --> J[NemoClaw / Reasoning Layer]
+ H --> K[ComfyUI / GPU Workloads]
+ L[Linux Control Surface] --> M[AWS GPU Nodes]
+ L --> N[S3 Canonical Asset Store]
+ O[t4g Stable Ingress] --> B
+ O --> C
+ O --> L
+ O --> M
+```
+
+Velocity has four major planes:
+
+- **experience plane**
+ - web app
+ - iPad app
+- **intelligence plane**
+ - Oracle
+ - Sentinel
+ - NemoClaw
+ - Dream Weaver / Catalyst
+- **data plane**
+ - PostgreSQL
+ - asset storage
+ - S3 model store
+- **operations plane**
+ - Linux control surface
+ - stable ingress
+ - AWS GPU workers
+
+---
+
+## 7. Core Product Surfaces
+
+The currently documented product surfaces are:
+
+- **Dashboard**
+ - KPIs, health, activity, sentiment, velocity
+- **Oracle**
+ - AI CRM and analytical canvas
+- **Sentinel**
+ - biometric and attention-scoring engine
+- **Inventory**
+ - unit and property availability tracking
+- **Dream Weaver / Catalyst**
+ - visual generation and asset transformation
+- **Settings / operator surfaces**
+ - system configuration, connectivity, route control, infra control
+
+---
+
+## 8. Oracle
+
+Oracle is the AI operating surface of Velocity. It is not a simple chatbot.
+
+### What Oracle Is
+
+- a prompt-driven CRM intelligence surface
+- a persistent vertical canvas
+- a branchable and mergeable analytical workspace
+- a controlled data access gateway mediated by Nemoclaw and policy
+
+### Core Oracle Principles
+
+- natural-language intent becomes typed execution
+- durable page revisions replace ephemeral AI replies
+- collaboration uses forks and merge requests
+- provenance and auditability are mandatory
+- AI planning must remain policy-constrained
+
+### Oracle Architecture
+
+```mermaid
+flowchart LR
+ A[User Prompt] --> B[Prompt Execution]
+ B --> C[NemoClaw Planning]
+ C --> D[Policy Validation]
+ D --> E[Data Access Gateway]
+ E --> F[PostgreSQL / Tenant Data]
+ F --> G[Visualization Resolver]
+ G --> H[Canvas Component]
+ H --> I[Revisioned Oracle Canvas]
+ I --> J[Fork / Merge Workflow]
+```
+
+### Core Oracle Behaviors
+
+- prompt authoring with context
+- retrieval planning through semantic mapping
+- policy-validated data access
+- component synthesis or template selection
+- append/insert/replace on a vertically scrolling canvas
+- fork and merge semantics for shared work
+
+### Oracle Truth in Repo
+
+The repo has:
+
+- a styled Oracle shell
+- temporary mock-oriented UI behavior
+- placeholder backend Oracle route files
+
+The repo does not yet have:
+
+- the full production Oracle runtime mounted and wired end to end
+
+So Oracle is conceptually mature, but partially implemented.
+
+---
+
+## 9. Sentinel
+
+Sentinel is the biometric, session-intelligence, and attention-scoring engine.
+
+### Core Principles
+
+- local-first perception
+- no raw webcam stream to remote backend
+- PostgreSQL as source of truth
+- real-time broker-facing intelligence
+- infrastructure truth over nostalgic planning
+
+### Sentinel Inputs
+
+- browser-side facial blendshape data
+- scene timing
+- CRM context
+- asset opens
+- CCTV enrichment
+- auto-mode session evidence
+
+### Sentinel Outputs
+
+- QD score
+- lead tags
+- live notifications
+- session intelligence
+- vault-open intelligence
+- auto-mode lead linkage
+
+### Sentinel Modes
+
+- **Assigned Mode**
+ - tied to existing lead
+- **Auto Mode**
+ - no pre-bound lead
+ - CCTV and session evidence reconcile later
+
+### Sentinel Flow
+
+```mermaid
+flowchart TD
+ A[Browser Webcam + MediaPipe] --> B[Biometric Packets]
+ B --> C[/api/sentinel/ws/perception]
+ C --> D[Scene Lookup]
+ D --> E[NemoClaw Scoring]
+ E --> F[perception_sessions]
+ E --> G[omnichannel_logs]
+ E --> H[Live QD Broadcast]
+ I[CCTV OCR/Event] --> J[/api/cctv/event]
+ J --> K[Auto Mode Matcher]
+ K --> L[Lead Link or Lead Create]
+```
+
+### Active Truth
+
+The docs are explicit that:
+
+- NVIDIA-hosted completions are the active primary path
+- Ollama/OpenShell exist but are not the production-first scoring path
+
+That distinction should remain explicit in team communication.
+
+---
+
+## 10. Dream Weaver and Catalyst
+
+Dream Weaver is the structural-preservation visual restyling system. Catalyst is the broader generation and asset automation layer.
+
+### Dream Weaver Objective
+
+Restyle interiors while preserving:
+
+- geometry
+- window placement
+- vanishing points
+- architectural truth
+
+### Technical Strategy
+
+- RealVisXL V5.0 Lightning as core model family in the historical design docs
+- stacked ControlNet approach
+- depth + line preservation
+- SAM-based masking
+- workflow portability through ComfyUI API JSON
+
+### Operational Direction
+
+The later infra work also shows Qwen-based image edit/generation workflows entering the stack. So the project now contains two overlapping visual-generation realities:
+
+- Dream Weaver spec centered on SDXL / RealVisXL / ControlNet / SAM
+- operational AWS generation work centered on Qwen image models and ComfyUI / GPU orchestration
+
+These should be treated as parallel capabilities, not contradictions.
+
+### Dream Weaver Pipeline
+
+```mermaid
+flowchart LR
+ A[Reference / Room Image] --> B[Preprocess]
+ B --> C[M-LSD]
+ B --> D[Depth]
+ B --> E[SAM / Masking]
+ C --> F[Control Stack]
+ D --> F
+ E --> F
+ F --> G[Sampler / Restyler]
+ G --> H[Styled Output]
+ H --> I[API / iPad / Batch Workflow]
+```
+
+### Operational Purpose
+
+- interior restyling
+- marketing posters
+- cinematic video
+- mobile-triggered asset generation
+- broker-facing wow factor
+
+---
+
+## 11. Web Application
+
+The web app is a React + TypeScript + Vite application.
+
+### Frontend Stack
+
+- React 19
+- TypeScript
+- Vite
+- Zustand
+- Tailwind CSS
+- shadcn/ui
+- Radix UI
+- Framer Motion
+- Recharts
+- React Hook Form
+- Zod
+
+### Core Web Modules
+
+- Dashboard
+- Oracle
+- Sentinel
+- Inventory
+- Settings
+
+### State Model
+
+The docs describe Zustand-backed state slices for:
+
+- auth
+- navigation
+- Oracle
+- Sentinel
+- Dashboard
+- Inventory
+- system state
+
+### Current Truth
+
+The web app appears stronger as a polished shell than as a fully integrated production data surface. It carries much of the premium experience language and component structure the rest of the system is meant to converge toward.
+
+---
+
+## 12. iOS Application
+
+Velocity iOS is the native mobile counterpart for Apple devices, especially the showroom iPad surface.
+
+### iOS Stack
+
+- Swift
+- SwiftUI
+- Combine / Observation
+- Alamofire for networking
+- native animation and glassmorphism
+
+### iOS Modules
+
+- Dashboard
+- Oracle
+- Sentinel
+- Inventory
+- Settings
+
+### Strategic Role
+
+The iPad app is not just a companion. It is central to the product’s premium physical-sales-gallery positioning.
+
+Important documented capabilities:
+
+- portable sales intelligence
+- native presentation surface
+- AI generation triggering
+- AR sun-path overlay
+- inventory and lead interaction on the floor
+
+### Design Direction
+
+- native fluidity
+- battery efficiency
+- premium dark/glass aesthetic
+- parity with web where needed, but not web-in-a-wrapper
+
+---
+
+## 13. Backend and AI Runtime
+
+The backend is a FastAPI neural core with PostgreSQL, auth, websockets, and AI orchestration.
+
+### Key Responsibilities
+
+- API routing
+- auth and RBAC
+- CRM and lead operations
+- Sentinel perception processing
+- Oracle execution path
+- websockets and notifications
+- video and scene catalog access
+- NemoClaw integration
+
+### NemoClaw Role
+
+NemoClaw is the reasoning layer used across:
+
+- lead tagging
+- CCTV profiling
+- QD scoring
+- future Oracle planning and data access interpretation
+
+### Prompt Truth in Repo
+
+The repo contains explicit prompt artifacts for:
+
+- `cctv_profiler`
+- `lead_tagger`
+- `qd_calculator`
+
+These are concrete prompt contracts, not vague intentions. They should be treated as product logic.
+
+### Runtime Reality
+
+The system documentation repeatedly shows a hybrid runtime model:
+
+- hosted NVIDIA-compatible reasoning path as primary
+- private / local alternatives possible
+- runtime abstraction should outlive vendor choice
+
+---
+
+## 14. Data Model and Core Entities
+
+The major persistent entities reflected across the docs are:
+
+- users and roles
+- leads and lead intelligence
+- inventory and project data
+- perception sessions
+- CCTV events
+- vault assets and opens
+- omnichannel logs
+- page revisions and canvas components
+- model catalog and hydration state
+- machine sessions and cost records
+
+### Persistent Truth
+
+PostgreSQL is the primary source of truth for operational data.
+S3 is becoming the canonical store for large model and asset artifacts.
+AWS GPU NVMe is treated as fast ephemeral runtime cache, not authoritative storage.
+
+---
+
+## 15. Infrastructure and Deployment Model
+
+Project Velocity now has a clear split between:
+
+- **stable control surfaces**
+- **ephemeral compute workers**
+- **canonical storage**
+
+### Current Deployment Pattern
+
+- Linux box:
+ - long-lived control surface
+ - private origin services
+ - operator tooling
+- AWS t4g ingress:
+ - stable public edge
+ - route manager
+- AWS GPU instances:
+ - disposable compute nodes
+ - ComfyUI and model workloads
+- S3:
+ - canonical model / workflow / asset store
+
+### Architectural Principle
+
+This is not “one giant computer.”
+It is:
+
+- one control plane
+- one ingress plane
+- one durable asset plane
+- many disposable compute workers
+
+That is the correct model.
+
+---
+
+## 16. Stable Ingress Layer
+
+The stable ingress layer is the permanent public front door.
+
+### Purpose
+
+- stable public IP
+- DNS target for public routes
+- TLS termination
+- hostname-based routing
+- forwarding to Linux or AWS backends
+
+### Current Public Surfaces
+
+The handoff documents establish these public hostnames as part of the route model:
+
+- `office.desineuron.in`
+- `git.desineuron.in`
+- `cloud.desineuron.in`
+- `projects.desineuron.in`
+- `talk.desineuron.in`
+- `vpn.desineuron.in`
+- `comfy.desineuron.in`
+- `ops.desineuron.in`
+
+### Key Design Principle
+
+Backends may change. Public identity should not.
+
+That is why:
+
+- GPU workers should not own the stable Elastic IP
+- the ingress box should stay alive and route based on managed config
+
+---
+
+## 17. Linux AWS Control Surface
+
+The Linux box is now the operational control surface for AWS.
+
+### Responsibilities
+
+- machine lifecycle management
+- preferred instance selection
+- spot/on-demand visibility
+- session and cost tracking
+- route management through ingress
+- model ingest and hydration orchestration
+- operator UI and CLI
+
+### Canonical Asset Strategy
+
+The documentation evolution shows a strong convergence:
+
+- Linux can store local copies
+- but S3 should be the canonical large-model source for ephemeral AWS hydration
+
+That is the right direction because S3 is:
+
+- durable
+- AWS-native
+- fast to hydrate with `s5cmd`
+- not dependent on home network conditions
+
+### Control Plane Flow
+
+```mermaid
+flowchart TD
+ A[Operator UI / CLI on Linux] --> B[Launch AWS Worker]
+ B --> C[Worker Bootstrap]
+ C --> D[Hydrate from S3]
+ D --> E[Verify Manifest]
+ E --> F[Start Workload]
+ F --> G[Map Route Through Ingress]
+ G --> H[Track Runtime / Cost / Logs]
+```
+
+---
+
+## 18. Operating Flows
+
+### Lead Intelligence Flow
+
+- lead enters through channel
+- Oracle / backend receives it
+- tagging and enrichment happen
+- lead lands in CRM operating surface
+
+### Sentinel Session Flow
+
+- broker runs session
+- MediaPipe emits perception packets
+- backend computes QD and updates lead/session state
+- notifications stream back in real time
+
+### Dream Weaver / Comfy Flow
+
+- operator or app triggers generation
+- GPU worker receives workflow
+- model hydrates if missing
+- ComfyUI or pipeline runs
+- output is returned or archived
+
+### Infra Control Flow
+
+- operator selects profile
+- Linux control surface launches worker
+- route gets mapped through ingress
+- workload is exposed without changing public identity
+
+---
+
+## 19. Security, Privacy, and Sovereignty
+
+Project Velocity’s strongest recurring architectural doctrine is data sovereignty.
+
+### Security Principles
+
+- client data belongs to client
+- on-prem or client-controlled cloud must be supported
+- zero-trust between services
+- least privilege for machine roles
+- no hidden production dependencies on developer laptops
+- auditability matters for both operations and business decisions
+
+### Privacy Positioning
+
+Velocity is explicitly positioned as anti-SaaS in the strategic docs.
+
+That means product delivery should support:
+
+- on-prem deployment
+- client-owned cloud
+- local or sovereign runtime options
+- explicit consent and audit around biometric flows
+
+This is not just a compliance detail. It is a core selling argument.
+
+---
+
+## 20. Current Live Truth
+
+Based on the most recent infrastructure handoff and operational truth docs, the current live picture is:
+
+- stable ingress is running on AWS `t4g.micro`
+- Linux box is the long-lived origin and control surface
+- ComfyUI is exposed through managed ingress routing
+- auto-heal exists for:
+ - home IP sync
+ - Comfy route sync
+- ops control plane is live on Linux
+- S3 is in place as the canonical control-plane bucket
+
+Important operational truths that should not be lost:
+
+- GPU nodes are ephemeral and should be treated that way
+- route management should be dynamic, not hardcoded
+- NVMe is for speed, not truth
+- Linux and S3 together are the operational backbone
+
+---
+
+## 21. Build Priorities and Open Gaps
+
+The documentation implies this priority order:
+
+1. stabilize control plane and ingress
+2. stabilize model hydration and GPU orchestration
+3. finish Oracle backend/runtime implementation
+4. continue iOS and web convergence
+5. standardize packaging for on-prem delivery
+
+### Open Gaps
+
+- Oracle production runtime is not fully wired yet
+- several frontend surfaces still rely on mock or transitional behavior
+- deployment packaging for customer installs is not yet standardized enough
+- multi-property / portfolio product packaging needs formalization in product artifacts
+- some business docs are strong on thesis but still need conversion into installable product contracts
+
+---
+
+## 22. Runbooks and Team Usage
+
+### What the team should point to for truth
+
+- **this master bibel** for unified product and architecture truth
+- **ingress handoff** for current infra routing truth
+- **ops control plane bibel** for operator workflows
+
+### When a new service is added
+
+The team should define:
+
+- what plane it belongs to
+- whether it is stable or ephemeral
+- where its truth is stored
+- how it is routed publicly
+- which system owns its startup, health, and recovery
+
+### Operational Rule
+
+If a workflow depends on a developer’s Windows laptop staying alive, it is not production-ready.
+
+---
+
+## 23. Source Lineage Map
+
+This master bibel draws primarily from these source families:
+
+### Product and architecture
+
+- `Project Velocity - The Oracle.md`
+- `The Sentinel Bibel.md`
+- `velocity_technical_bible.md`
+- `velocity_ios_bible.md`
+- `oracle_development_status.md`
+
+### Visual generation
+
+- `DREAMWEAVER_TECHNICAL_SPEC.md`
+- `A100_DEPLOYMENT_VALIDATION.md`
+- `comfy_engine/scripts/README.md`
+- `Project Velocity_ Dream Weaver.md`
+
+### Infra and operations
+
+- `TEAM_HANDOFF_2026-04-08.md`
+- `Desineuron Ops Control Plane Bibel.md`
+- `nemoclaw_setup_truth.md`
+- `infrastructure_deployment_manifest.md`
+- ingress and ops READMEs
+
+### Business and GTM context
+
+- `Velocity Kolkata Customer 0 Strategy - Get My Ghar.md`
+- `Kolkata Builder Intel and Meeting Map - April 2026.md`
+- `Customer Personas for Abu Dhabi and Dubai...md`
+- sprint user story docs
+
+### Prompt and AI behavior contracts
+
+- `backend/nemoclaw_prompts/*.md`
+
+---
+
+## Final Position
+
+Project Velocity is best understood as a sovereign, modular real-estate operating system with:
+
+- premium user surfaces
+- AI-driven CRM and perception intelligence
+- property-linked generation workflows
+- a private operational backbone
+- a route-stable ingress layer
+- a Linux-hosted control plane
+- S3-backed canonical model and asset strategy
+
+That is the coherent architecture the scattered docs were already converging toward.
diff --git a/.Agent Context/Bibels/Sourik Code Intake and Compatibility Report.md b/.Agent Context/Bibels/Sourik Code Intake and Compatibility Report.md
new file mode 100644
index 00000000..e70a1d4f
--- /dev/null
+++ b/.Agent Context/Bibels/Sourik Code Intake and Compatibility Report.md
@@ -0,0 +1,355 @@
+# Sourik Code Intake and Compatibility Report
+
+**Prepared:** 2026-04-12
+**Scope:** `Project_Velocity/Sourik` only, evaluated against the current non-`Sourik` Project Velocity codebase, built features, and live operating model
+**Purpose:** Decide what from `Sourik` is worth merging, what is redundant, what is bloat, and where the conflicts will be
+
+---
+
+## Scoring Model
+
+| Score | Meaning |
+| --- | --- |
+| 1 | Banish. Do not merge into main. |
+| 2 | Archive only. Historical value, no production merge value. |
+| 3 | Very weak merge candidate. Requires heavy rewrite or extraction. |
+| 4 | Risky or partial. Import only if a specific owner adopts it. |
+| 5 | Mixed value. Keep for reference, not direct merge. |
+| 6 | Useful implementation ideas, but not merge-ready. |
+| 7 | Good candidate for selective integration. |
+| 8 | Strong subsystem candidate. |
+| 9 | High-value, near-merge-ready if wiring assumptions are corrected. |
+| 10 | Critical import candidate. No direct equivalent or materially better than current mainline. |
+
+---
+
+## Executive Summary
+
+The `Sourik` tree is not one clean feature branch. It is a mixed bundle of:
+
+- real backend/API work
+- a separate Go agent runtime
+- frontend additions for marketing and analytics
+- a partial iOS spike
+- strong test evidence in some areas
+- large amounts of residue:
+ - local env files
+ - coverage outputs
+ - compiled binaries
+ - sqlite prototypes
+ - pycache
+ - logs
+ - duplicate docs
+
+The correct merge posture is:
+
+- **do not merge the tree wholesale**
+- **extract selected subsystems**
+- **banish operational residue**
+- **treat the Go runtime as an alternate architecture, not as an automatic addition**
+
+Highest-value areas in `Sourik`:
+
+- Python API modules around leads, persona, analytics, websocket, kanban, and Sentinel consent/GDPR patterns
+- test coverage and test cases
+- some Catalyst service abstractions
+- some iOS camera/time-light experiment code
+
+Highest-risk areas:
+
+- duplicate backend entrypoint and alternate runtime model
+- alternate Nemoclaw + MCP + Go server stack
+- hardcoded stale infrastructure assumptions
+- local SQLite-first assumptions that conflict with current PostgreSQL truth
+- Comfy service hardcoded to stale IPs
+
+---
+
+## What Sourik Actually Contains
+
+### Implementation Shape
+
+`Sourik/velocity` contains:
+
+- Python FastAPI app:
+ - `main.py`
+ - `api/*.py`
+ - `services/*.py`
+ - `db/connection.py`
+- Go runtime:
+ - `main.go`
+ - `internal/nemoclaw/*`
+ - `internal/oracle/*`
+ - `internal/mcp/*`
+ - `internal/sentinel/*`
+ - `integrations/*.go`
+- frontend additions:
+ - `frontend/src/app/marketing/page.tsx`
+ - `frontend/src/lib/api.ts`
+ - dashboard/marketing components
+- iOS spike:
+ - `VelocityApp/*`
+- docs and summaries:
+ - `README.md`
+ - `SPRINT_SUMMARY_FOR_SAGNIK.md`
+ - `SPEC.md`
+ - `docs/*`
+- residue:
+ - `.env`
+ - `prototype.db`
+ - coverage outputs
+ - binaries
+ - logs
+ - pycache
+
+### Sourik Architecture According to Sourik
+
+The root `README.md` describes an “Agentic Operations Layer” with:
+
+- WhatsApp webhook
+- Go OpenClaw/NemoClaw layer
+- MCP server
+- ComfyUI / CRM / visual hub integrations
+
+That is a materially different center-of-gravity from the current mainline, where:
+
+- FastAPI backend is the operational center
+- Linux control surface and ingress are already live
+- Comfy routing and AWS orchestration are already established
+
+This matters. `Sourik` is not just “new features.” It contains an alternate operating model.
+
+---
+
+## Compatibility with Current Mainline
+
+### Current Mainline Truth
+
+The non-`Sourik` codebase already has:
+
+- a live FastAPI backend in `backend/main.py`
+- active routers for Sentinel, CCTV, videos, scenes, vault
+- a real Nemoclaw client abstraction in Python
+- an Oracle implementation path in `backend/oracle/*`
+- a premium React app in `app/src/*`
+- a live ingress plane in `infrastructure/desineuron_ingress/*`
+- a live Linux AWS control surface in `infrastructure/ops_control_plane/*`
+- a real iOS app tree in `iOS/velocity/velocity/*`
+
+So the comparison baseline is not theoretical. It is a partially working system with live infrastructure.
+
+### Main Compatibility Findings
+
+| Sourik Area | Mainline Equivalent | Compatibility |
+| --- | --- | --- |
+| `velocity/api/leads.py` | no equally complete current leads CRUD module in mainline backend | Good candidate |
+| `velocity/api/sentinel.py` | overlaps with `backend/routers/sentinel.py` but focuses on consent/GDPR/biometric storage | Selective candidate |
+| `velocity/api/catalyst.py` | overlaps with `backend/api/routes_catalyst.py` | Merge conflict likely |
+| `velocity/api/ws.py` | overlaps conceptually with current websocket/event logic | Selective candidate |
+| `velocity/api/analytics.py` | weak/no exact current equivalent | Good candidate |
+| `velocity/api/persona.py` | likely additive | Good candidate |
+| `velocity/api/kanban.py` | no clear current equivalent in mainline | Good candidate |
+| `velocity/services/comfyui_service.py` | conflicts with current ingress + Comfy routing + live GPU architecture | Poor direct candidate |
+| `velocity/main.py` | conflicts with `backend/main.py` | Do not merge directly |
+| `velocity/main.go` + `internal/*` | alternate runtime architecture | Do not merge directly |
+| `VelocityApp/*` | overlaps with current iOS app | Selective candidate only |
+
+---
+
+## Scored Intake Table
+
+| Sourik Path / Scope | Score | Merge Recommendation | Reason |
+| --- | ---: | --- | --- |
+| `Sourik/velocity/api/leads.py` | 8 | Selective merge candidate | Real CRUD, qualification, demographics endpoints. Mainline has product need here and no equally complete direct equivalent. Needs DB contract alignment. |
+| `Sourik/velocity/api/kanban.py` | 8 | Selective merge candidate | Kanban behavior is useful and currently underrepresented in mainline implementation. |
+| `Sourik/velocity/api/analytics.py` | 8 | Selective merge candidate | Adds reporting/analytics surface that appears useful for Marketing and Oracle support. |
+| `Sourik/velocity/api/persona.py` | 7 | Selective merge candidate | Likely additive business logic and API value. |
+| `Sourik/velocity/api/chat_logs.py` | 7 | Selective merge candidate | Useful if mapped into Oracle / CRM flows; needs contract alignment with current auth and DB. |
+| `Sourik/velocity/api/ws.py` | 7 | Selective merge candidate | Useful patterns and tests likely exist, but websocket ownership already exists in current backend. |
+| `Sourik/velocity/api/sentinel.py` | 7 | Extract specific features only | Valuable for biometric consent, GDPR, and export patterns. But it is SQLite-centered and overlaps with current Sentinel runtime. |
+| `Sourik/velocity/tests/api/*` | 9 | Strong import candidate | Test suites are high-value, especially for a fragile future merge. Adapt tests even if code is not merged verbatim. |
+| `Sourik/velocity/tests/internal/nemoclaw/*` | 7 | Import selectively | Good coverage and behavioral protection if Go/Nemo concepts are retained anywhere. |
+| `Sourik/velocity/services/ad_network_skills.py` | 7 | Selective merge candidate | Likely useful for Catalyst ad automation and may complement current Meta-focused path. |
+| `Sourik/velocity/services/social_posting.py` | 7 | Selective merge candidate | Useful capability if social publishing remains in scope. |
+| `Sourik/velocity/services/catalyst_content.py` | 7 | Selective merge candidate | Useful Catalyst logic, but must be aligned with current Comfy and asset pipeline. |
+| `Sourik/velocity/services/comfyui_service.py` | 4 | Reference only, do not merge directly | Hardcodes stale host/IP and assumes a different Comfy deployment pattern from the current live ingress-managed GPU model. |
+| `Sourik/velocity/frontend/src/app/marketing/page.tsx` | 7 | Selective UI import candidate | Useful product surface not currently dominant in mainline app. Needs design-system integration and router alignment. |
+| `Sourik/velocity/frontend/src/components/marketing/*` | 7 | Selective UI import candidate | Likely useful for Catalyst/marketing module. |
+| `Sourik/velocity/frontend/src/components/dashboard/*` | 6 | Compare component by component | Useful ideas, but mainline already has strong dashboard surfaces. Merge only where functionality is genuinely additive. |
+| `Sourik/velocity/frontend/src/lib/api.ts` | 5 | Reference only; do not merge as-is | Useful contract hints, but current mainline already has API client layers. This should inform consolidation, not become a second truth. |
+| `Sourik/VelocityApp/Features/CameraView.swift` | 7 | Selective import candidate | Good feature spike: camera capture + send-to-Comfy flow + time/light controls. Worth comparing to current iOS inventory/AR path. |
+| `Sourik/VelocityApp/Features/TimeControlSlider.swift` | 7 | Selective import candidate | Likely useful to augment Sun/lighting feature work. |
+| `Sourik/VelocityApp/Features/TimeLightEngine.swift` | 7 | Selective import candidate | Strong fit with current Velocity iOS sun-path direction. |
+| `Sourik/VelocityApp/Core/Router.swift` | 5 | Review only | Could help, but current iOS structure already has navigation patterns. |
+| `Sourik/velocity/main.py` | 3 | Do not merge directly | It creates a second FastAPI root with a different DB model, routing shape, and operational assumptions. Extract modules only. |
+| `Sourik/velocity/main.go` | 3 | Do not merge directly | Alternate runtime center. Valuable as concept or archived subsystem, but not compatible with current mainline architecture without a deliberate platform decision. |
+| `Sourik/velocity/internal/nemoclaw/*` | 4 | Review as architecture experiments only | Significant conceptual overlap with current Python Nemoclaw path. A direct merge would create two control centers. |
+| `Sourik/velocity/internal/mcp/*` | 5 | Review selectively | Interesting if you want future MCP work, but not aligned with current operational center yet. |
+| `Sourik/velocity/internal/oracle/*` | 4 | Reference only for now | Current mainline already has an Oracle implementation direction in Python. Direct merge would fork the architecture. |
+| `Sourik/velocity/internal/sentinel/sentinel_api.go` | 4 | Reference only | Sentinel is already active in Python backend. |
+| `Sourik/velocity/integrations/*.go` | 5 | Review case-by-case | Potentially useful adapters, but only if the Go runtime is retained. |
+| `Sourik/velocity/docs/COMFYUI_HANDOFF.md` | 6 | Keep as reference | Useful context for intended wire-up, but assumes VPN/headscale-era setup that no longer matches current ingress truth. |
+| `Sourik/SPRINT_SUMMARY_FOR_SAGNIK.md` | 7 | Keep as reference artifact | Useful for intent, coverage claims, and blocked wire list. Not production code. |
+| `Sourik/SPEC.md` | 5 | Archive as historical spec | Useful context, but contains stale node IPs, port assumptions, and stage-only instructions that no longer match live infrastructure. |
+| `Sourik/PRD.md` | 2 | Archive only | Too thin to be operationally meaningful. |
+| `Sourik/velocity/README.md` | 6 | Keep as architecture snapshot | Good summary of Sourik’s intended architecture. |
+| `Sourik/velocity/.env` | 1 | Banish | Local secrets/config residue. Must not merge. |
+| `Sourik/desineuron-l4-node.pem` | 1 | Banish | Private key material in source tree. Never merge. |
+| `Sourik/velocity/db/prototype.db` | 1 | Banish | Local prototype database, not source. |
+| `Sourik/velocity/prototype.db` | 1 | Banish | Same issue. |
+| `Sourik/velocity/.coverage` | 1 | Banish | Coverage artifact. |
+| `Sourik/velocity/coverage*` | 1 | Banish | Coverage outputs, not source. |
+| `Sourik/velocity/.agent/*coverage*`, `*test_output*` | 1 | Banish | CI/test residue. |
+| `Sourik/velocity/antigravity_server` | 1 | Banish | Compiled binary, not source. |
+| `Sourik/velocity/antigravity_test_build.exe` | 1 | Banish | Compiled Windows artifact, not source. |
+| `Sourik/velocity/__pycache__`, `.pytest_cache` | 1 | Banish | Generated caches. |
+| `Sourik/velocity/logs/VALIDATION_FINAL.log` | 2 | Archive only | Useful as evidence, not source. |
+| `Sourik/velocity/test_out.txt`, `guide_extracted.txt`, `guide_utf8.txt` | 2 | Archive only | Scratch outputs. |
+| `Sourik/velocity/stubs/*` | 3 | Archive or keep in a clearly marked scratch area | Potentially useful examples, but not merge targets. |
+| `Sourik/velocity/archive/*` | 2 | Archive only | Historical material. |
+
+---
+
+## Bloat and Residue in Sourik
+
+These are immediate no-merge items:
+
+- private keys
+- `.env`
+- `.coverage`
+- `coverage*`
+- `.pytest_cache`
+- `__pycache__`
+- compiled binaries
+- local sqlite databases
+- raw logs
+- scratch text files
+
+These do not need debate. They are not source code.
+
+---
+
+## Redundant vs Additive Features
+
+### Redundant or Architecturally Conflicting
+
+1. **FastAPI root app**
+ - `Sourik/velocity/main.py`
+ - conflicts with current `backend/main.py`
+ - creates a second root service with different routing and DB assumptions
+
+2. **Go agent runtime**
+ - `Sourik/velocity/main.go`
+ - `internal/nemoclaw/*`
+ - `internal/mcp/*`
+ - this is an alternate operational center, not a drop-in feature set
+
+3. **ComfyUI service**
+ - assumes stale IP-based deployment
+ - current system already has:
+ - stable ingress
+ - GPU worker tagging
+ - auto-healing route sync
+ - Linux AWS control plane
+
+### Additive and Potentially Valuable
+
+1. **Lead / Kanban / Persona / Analytics Python APIs**
+ - mainline can benefit directly from these
+
+2. **Sentinel consent and GDPR patterns**
+ - these are useful as selective feature imports into current Sentinel
+
+3. **Marketing frontend**
+ - a real additive surface for the Catalyst/marketing module
+
+4. **iOS camera and time/light features**
+ - fit directly with current iPad vision and sun/AR direction
+
+5. **Test suites**
+ - very high value regardless of whether code merges directly
+
+---
+
+## Compatibility with Built Features
+
+### Works with Current Mainline Direction
+
+- property and lead workflows
+- marketing/campaign intelligence
+- camera-driven iOS interactions
+- GDPR/consent handling
+- Kanban CRM motions
+
+### Conflicts with Current Mainline Truth
+
+- SQLite/prototype-first database assumptions
+- hardcoded or stale infrastructure endpoints
+- alternate Go-first NemoClaw/MCP control center
+- separate backend root service
+- stale VPN/headscale-era deployment assumptions
+
+---
+
+## Recommended Intake Strategy
+
+### Merge Now Candidates
+
+- `velocity/api/leads.py`
+- `velocity/api/kanban.py`
+- `velocity/api/analytics.py`
+- `velocity/api/persona.py`
+- tests supporting the above
+- selected marketing frontend components
+- selected iOS camera/time-light feature files
+
+### Extract, Rewrite, Then Merge
+
+- `velocity/api/sentinel.py`
+- `velocity/api/chat_logs.py`
+- `velocity/services/*`
+- `frontend/src/lib/api.ts`
+
+### Do Not Merge Directly
+
+- `velocity/main.py`
+- `velocity/main.go`
+- `velocity/internal/nemoclaw/*`
+- `velocity/internal/oracle/*`
+- `velocity/internal/mcp/*`
+- `velocity/services/comfyui_service.py`
+
+### Banish Immediately from Merge Candidate Set
+
+- `.env`
+- `.pem`
+- `.db`
+- `coverage*`
+- `.coverage`
+- `.pytest_cache`
+- `__pycache__`
+- binaries
+- logs
+- scratch outputs
+
+---
+
+## Final Recommendation
+
+Sourik’s code should be treated as:
+
+- **30% importable feature work**
+- **30% useful reference and test material**
+- **40% architectural conflict or residue**
+
+The best path is:
+
+1. strip all residue first
+2. import Python feature modules selectively
+3. import tests aggressively
+4. compare marketing frontend additions against current app
+5. compare iOS camera/time-light features against current iOS app
+6. keep the Go/Nemo/MCP stack out of the first merge unless you deliberately choose to adopt that architecture
+
+That will give you the value in Sourik’s work without poisoning the current mainline with a second operating model.
+
diff --git a/.Agent Context/Sprint 1/Project Velocity Pre-Sourik Purge Report.md b/.Agent Context/Sprint 1/Project Velocity Pre-Sourik Purge Report.md
new file mode 100644
index 00000000..19c90486
--- /dev/null
+++ b/.Agent Context/Sprint 1/Project Velocity Pre-Sourik Purge Report.md
@@ -0,0 +1,402 @@
+# Project Velocity Pre-Sourik Purge Report
+
+**Prepared:** 2026-04-12
+**Scope:** Current `Project_Velocity` codebase excluding `Sourik` for scoring, with a separate compatibility pass against the incoming `Sourik` tree
+**Purpose:** Identify what should be kept, archived, consolidated, or purged before merging `Sourik` into the main codebase
+**Action in this report:** No deletion. Assessment only.
+
+---
+
+## Scoring Model
+
+| Score | Meaning |
+| --- | --- |
+| 1 | Banish. Strong candidate for removal from repo or immediate quarantine. |
+| 2 | Very low value. Likely generated, stale, insecure, or misleading. |
+| 3 | Archive out of main repo. Has historical value but should not live in the main working tree. |
+| 4 | Review aggressively. Possible duplicate, stale path, or unclear ownership. |
+| 5 | Transitional. Keep only if a near-term owner confirms it. |
+| 6 | Useful but not core. Keep if it supports current delivery or migration. |
+| 7 | Important support artifact. |
+| 8 | Core implementation path. |
+| 9 | Highly important operational or product-critical code. |
+| 10 | Do not purge. Source-of-truth, live runtime, or critical integration surface. |
+
+---
+
+## Executive Summary
+
+The current codebase has five major purge or merge-hardening problems before `Sourik` is brought in:
+
+1. **Repo bloat is severe**
+ - `models/` alone is about `13237.61 MB`
+ - `db assets/` is about `3689.78 MB`
+ - `app/` is about `2588.26 MB`
+ - `Payload/` is about `523.81 MB`
+ - `comfy_engine/` is about `524.58 MB`
+
+2. **The repo contains generated and duplicated artifacts**
+ - `app/dist/` is about `442.56 MB`
+ - `app/public/models/` is about `437.58 MB`
+ - `app/assets/House Floor Plans/` is about `958.41 MB`
+ - the iOS tree has duplicated source files under both:
+ - `iOS/App`, `iOS/Core`, `iOS/Features`
+ - `iOS/velocity/velocity/...`
+
+3. **There are many zero-byte placeholder files**
+ - especially under `agents/`, `backend/api/`, `backend/database/`, `backend/sentinel/`, `comfy_engine/scripts/`, `infrastructure/aws_scale/`, and `infrastructure/blackbox_local/`
+ - these create false surface area and false merge confidence
+
+4. **The repo contains security-sensitive or machine-local artifacts**
+ - `desineuron-l4-node.pem` in repo root is unacceptable long-term
+ - historical bootstrap scripts contain stale IPs, stale assumptions, and one-off deployment logic
+
+5. **The incoming Sourik tree overlaps the most dangerous places**
+ - backend API surface
+ - frontend API client and dashboard/marketing modules
+ - Oracle/Catalyst/Sentinel concepts
+ - alternative runtime stacks in Go/Python
+
+The highest-priority pre-merge action is not deleting business logic. It is removing ambiguity.
+
+---
+
+## Quantitative Findings
+
+### Largest top-level paths
+
+| Path | Size |
+| --- | ---: |
+| `models/` | `13237.61 MB` |
+| `db assets/` | `3689.78 MB` |
+| `app/` | `2588.26 MB` |
+| `comfy_engine/` | `524.58 MB` |
+| `Payload/` | `523.81 MB` |
+| `.Agent Context/` | `8.92 MB` |
+| `backend/` | `0.40 MB` |
+| `iOS/` | `0.33 MB` |
+| `infrastructure/` | `0.27 MB` |
+
+### Generated or duplicated asset-heavy paths
+
+| Path | Size | Assessment |
+| --- | ---: | --- |
+| `app/dist/` | `442.56 MB` | Generated build output. Should not live in source control as working source. |
+| `app/public/models/` | `437.58 MB` | Runtime-facing duplicates of model assets. |
+| `app/assets/House Floor Plans/` | `958.41 MB` | Source asset tree with duplicate downstream copies. |
+| `db assets/` | `3689.78 MB` | Valuable business/demo data, but too heavy for a clean app repo. |
+| `models/` | `13237.61 MB` | Runtime model binaries. Belongs in artifact storage, not Git. |
+| `Payload/` | `523.81 MB` | Packaged payload/archive staging. Likely not source-of-truth. |
+
+### Zero-byte files found
+
+Representative zero-byte paths include:
+
+- `agents/docker-compose.agents.yml`
+- `agents/openclaw_gateway/openclaw.json`
+- `agents/openclaw_gateway/workspace/AGENTS.md`
+- `agents/openclaw_gateway/workspace/HEARTBEAT.md`
+- `agents/skills/meta_ads_manager.py`
+- `agents/skills/social_publisher.py`
+- `agents/skills/whatsapp_connector.ts`
+- `backend/api/routes_crm.py`
+- `backend/api/routes_oracle.py`
+- `backend/api/routes_weaver.py`
+- `backend/database/pinecone_client.py`
+- `backend/database/schemas.py`
+- `backend/database/supabase_client.py`
+- `backend/sentinel/face_tracker.py`
+- `backend/sentinel/sentiment_engine.py`
+- `comfy_engine/scripts/auto_term_sheet.py`
+- `comfy_engine/scripts/queue_manager.py`
+- `comfy_engine/workflows/cinematic_wan22_14b.json`
+- `comfy_engine/workflows/dream_weaver_restyle.json`
+- `infrastructure/aws_scale/node1_agents.tf`
+- `infrastructure/aws_scale/node2_rendering.tf`
+- `infrastructure/aws_scale/tailscale_config.sh`
+- `infrastructure/blackbox_local/docker-compose.local.yml`
+- `infrastructure/blackbox_local/setup_gpu_env.sh`
+
+These files are more dangerous than absent files because they imply functionality that does not exist.
+
+---
+
+## Duplicate Code and Structural Redundancy
+
+### iOS duplicate source trees
+
+The following file sets are byte-identical duplicates:
+
+- `iOS/App/ContentView.swift`
+- `iOS/velocity/velocity/App/ContentView.swift`
+
+- `iOS/App/VelocityApp.swift`
+- `iOS/velocity/velocity/App/VelocityApp.swift`
+
+- `iOS/Core/State/AppStore.swift`
+- `iOS/velocity/velocity/Core/State/AppStore.swift`
+
+- `iOS/Core/UI/GlassBlurView.swift`
+- `iOS/velocity/velocity/Core/UI/GlassBlurView.swift`
+
+- `iOS/Core/UI/VelocityTheme.swift`
+- `iOS/velocity/velocity/Core/UI/VelocityTheme.swift`
+
+- `iOS/Features/Dashboard/DashboardView.swift`
+- `iOS/velocity/velocity/Features/Dashboard/DashboardView.swift`
+
+- `iOS/Features/Oracle/OracleView.swift`
+- `iOS/velocity/velocity/Features/Oracle/OracleView.swift`
+
+- `iOS/Features/Sentinel/SentinelView.swift`
+- `iOS/velocity/velocity/Features/Sentinel/SentinelView.swift`
+
+- `iOS/Features/Settings/SettingsView.swift`
+- `iOS/velocity/velocity/Features/Settings/SettingsView.swift`
+
+Interpretation:
+
+- one tree is acting like a clean source mirror
+- the other is the real Xcode project path
+- keeping both guarantees confusion and future merge drift
+
+### Frontend demo/runtime split
+
+There is a real split between:
+
+- polished app shell modules in `app/src/components/modules/*`
+- newer Oracle-specific implementation under `app/src/oracle/*`
+- demo fallback content in `app/src/oracle/lib/oracleDemoData.ts`
+
+This is not purge-worthy by itself, but it is a clear merge-risk zone because multiple “truths” exist:
+
+- product shell truth
+- demo truth
+- intended production truth
+
+---
+
+## Scored Purge Table
+
+| Path / Scope | Type | Score | Recommendation | Reason |
+| --- | --- | ---: | --- | --- |
+| `desineuron-l4-node.pem` | file | 1 | Banish from repo immediately | Private key material does not belong in source control. This is a security risk, not just clutter. |
+| `3.0.0` | file | 1 | Banish | Zero-value stray file with no semantic role. |
+| `app/dist/` | dir | 1 | Banish from repo, generate in CI/local only | Build output. Large, derived, and guaranteed merge noise. |
+| `agents/docker-compose.agents.yml` | file | 1 | Banish unless populated immediately | Zero-byte placeholder that implies a deployable agents stack that does not exist. |
+| `agents/openclaw_gateway/openclaw.json` | file | 1 | Banish or implement | Zero-byte config placeholder. |
+| `agents/openclaw_gateway/workspace/AGENTS.md` | file | 1 | Banish | Zero-byte placeholder. |
+| `agents/openclaw_gateway/workspace/HEARTBEAT.md` | file | 1 | Banish | Zero-byte placeholder. |
+| `agents/skills/meta_ads_manager.py` | file | 1 | Banish or implement elsewhere | Empty skill file creates false feature surface. |
+| `agents/skills/social_publisher.py` | file | 1 | Banish or implement elsewhere | Same issue. |
+| `agents/skills/whatsapp_connector.ts` | file | 1 | Banish or implement elsewhere | Same issue. |
+| `backend/api/routes_crm.py` | file | 1 | Banish or fill before merge | Empty route file conflicts conceptually with live backend ownership. |
+| `backend/api/routes_oracle.py` | file | 1 | Banish or redirect to real Oracle router | Empty file directly conflicts with actual Oracle implementation path in `backend/oracle/router_v1.py`. |
+| `backend/api/routes_weaver.py` | file | 1 | Banish or implement | Empty route file. |
+| `backend/database/pinecone_client.py` | file | 1 | Banish | Empty placeholder, no runtime value. |
+| `backend/database/schemas.py` | file | 1 | Banish | Empty placeholder; current schema truth lives elsewhere. |
+| `backend/database/supabase_client.py` | file | 1 | Banish | Empty placeholder and architecturally confusing because current truth favors PostgreSQL-first. |
+| `backend/sentinel/face_tracker.py` | file | 1 | Banish | Empty placeholder. |
+| `backend/sentinel/sentiment_engine.py` | file | 1 | Banish | Empty placeholder. |
+| `comfy_engine/scripts/auto_term_sheet.py` | file | 1 | Banish | Empty placeholder. |
+| `comfy_engine/scripts/queue_manager.py` | file | 1 | Banish | Empty placeholder. |
+| `comfy_engine/workflows/cinematic_wan22_14b.json` | file | 1 | Banish or replace with real workflow export | Empty workflow file is actively misleading. |
+| `comfy_engine/workflows/dream_weaver_restyle.json` | file | 1 | Banish or replace with real workflow export | Same issue. |
+| `infrastructure/aws_scale/node1_agents.tf` | file | 1 | Banish or implement in a real infra module | Empty Terraform file is dead weight. |
+| `infrastructure/aws_scale/node2_rendering.tf` | file | 1 | Banish or implement in a real infra module | Same issue. |
+| `infrastructure/aws_scale/tailscale_config.sh` | file | 1 | Banish | Empty and also contradicts current non-Tailscale operating direction. |
+| `infrastructure/blackbox_local/docker-compose.local.yml` | file | 1 | Banish or define properly | Empty infra stub. |
+| `infrastructure/blackbox_local/setup_gpu_env.sh` | file | 1 | Banish or define properly | Empty infra stub. |
+| `backend_deploy_20260401.tgz` | file | 2 | Archive outside repo | Historical deploy artifact, not source. |
+| `Payload/comfy_engine.zip` | file | 2 | Archive outside repo | Packaged artifact. Valuable for history, not for source control. |
+| `remote_bootstrap_20260401.sh` | file | 3 | Archive under runbooks or infra-history | Historical one-off bootstrap with time-bound assumptions. |
+| `patch_nemoclaw_service_20260401.sh` | file | 3 | Archive | One-off patch script, not durable runtime code. |
+| `user_data_bootstrap.sh` | file | 4 | Keep only if still current; otherwise archive to infra-history | Contains useful S3/bootstrap logic, but also bakes old assumptions. |
+| `dw_gateway_v2_min.py` | file | 4 | Review for consolidation into backend or comfy service layer | Functional, but sits as a root-level one-off service, not in an owned module. |
+| `monitor_nvme.py` | file | 4 | Archive to ops scripts if still useful | Ad hoc operational helper, not core product code. |
+| `monitor_qwen.py` | file | 4 | Archive to ops scripts if still useful | Same issue. |
+| `test_scp.txt` | file | 1 | Banish | Stray scratch file. |
+| `app/public/models/` | dir | 3 | Review for consolidation | Likely runtime-facing duplicates of source model assets. |
+| `app/assets/House Floor Plans/` | dir | 5 | Keep as design/source assets, but deduplicate outputs | Real source value exists, but there are duplicate exports in `public/` and `dist/`. |
+| `db assets/` | dir | 5 | Move to data repository or artifact store | Valuable for demo and product data, but too heavy and merge-hostile for application repo. |
+| `models/` | dir | 2 | Move to S3/artifact store, keep manifest only in repo | Runtime models should not live in Git. Canonical storage should be S3 or controlled local store. |
+| `iOS/App`, `iOS/Core`, `iOS/Features` | dir tree | 4 | Consolidate with actual Xcode tree | Duplicates the active app tree and guarantees drift. |
+| `iOS/velocity/velocity/...` | dir tree | 8 | Keep as likely real app source-of-truth | This appears to be the actual project-backed path tied to Xcode. |
+| `app/src/oracle/lib/oracleDemoData.ts` | file | 5 | Keep short-term, mark explicitly as demo-only | Useful for UI continuity, but dangerous if mistaken for live data path. |
+| `app/src/lib/oracleQueryClient.ts` | file | 6 | Review against `app/src/oracle/lib/oracleApiClient.ts` | Potential overlap between legacy Oracle client and new Oracle path. |
+| `app/src/oracle/lib/oracleApiClient.ts` | file | 8 | Keep | Newer Oracle contract path. |
+| `backend/main.py` | file | 10 | Keep | Current backend integration root. |
+| `backend/routers/sentinel.py` | file | 10 | Keep | Live Sentinel backbone. |
+| `backend/routers/cctv.py` | file | 9 | Keep | Active auto-mode/CCTV path. |
+| `backend/routers/videos.py` | file | 9 | Keep | Active video catalog runtime path. |
+| `backend/routers/vault.py` | file | 9 | Keep | Live vault and trackable-link logic. |
+| `backend/services/nemoclaw_client.py` | file | 10 | Keep | Current AI runtime integration truth. |
+| `backend/services/auto_mode_matcher.py` | file | 9 | Keep | Core Sentinel automation logic. |
+| `backend/oracle/router_v1.py` | file | 9 | Keep | Real Oracle implementation path, even if not fully mounted in the main runtime. |
+| `backend/oracle/*` | dir tree | 8 | Keep | Important product direction with tests and contracts. |
+| `backend/tests/oracle/*` | dir tree | 8 | Keep | High-value protection for a fragile future merge area. |
+| `app/src/components/modules/Sentinel.tsx` and `sentinel/*` | module area | 9 | Keep | Core UI for a real implemented subsystem. |
+| `app/src/components/modules/Catalyst.tsx` | file | 7 | Keep, but compare against Sourik marketing/catalyst ideas | Active surface with likely future overlap. |
+| `app/src/components/modules/Oracle.tsx` + `app/src/app/oracle/page.tsx` | module area | 9 | Keep | Core UI architecture for Oracle. |
+| `infrastructure/desineuron_ingress/*` | dir tree | 10 | Keep | Live infrastructure truth and runbooks. |
+| `infrastructure/ops_control_plane/*` | dir tree | 10 | Keep | Live operational control surface. |
+| `.Agent Context/Bibels/*` | docs | 8 | Keep and consolidate | High-value product/infra truth. |
+
+---
+
+## Strong Retain Set
+
+These are the areas that should be treated as current core code, not purge targets:
+
+- `backend/main.py`
+- `backend/routers/*` except empty placeholder files in `backend/api/`
+- `backend/services/*`
+- `backend/oracle/*`
+- `backend/db/*`
+- `backend/tests/*`
+- `app/src/*` excluding clearly demo-only or overlapping legacy Oracle client paths that need review
+- `infrastructure/desineuron_ingress/*`
+- `infrastructure/ops_control_plane/*`
+- `iOS/velocity/velocity/*` as the likely canonical iOS app path
+- `.Agent Context/Bibels/*`
+
+---
+
+## Redundant or Misleading Areas
+
+### 1. The agents subtree
+
+Current assessment:
+
+- almost entirely placeholder surface
+- no runtime truth
+- no concrete ownership
+- high probability of direct collision with Sourik’s actual agents and MCP work
+
+Recommendation:
+
+- do **not** merge any existing non-Sourik `agents/` placeholders forward as if they are real
+- either delete them later or move them to a scratch/archive area
+
+### 2. Duplicate iOS trees
+
+Current assessment:
+
+- exact duplicate code across two trees
+- one likely mirrors source
+- the nested Xcode-backed tree is the practical source of truth
+
+Recommendation:
+
+- pick one tree before large merges
+- otherwise every iOS merge becomes a double-merge
+
+### 3. Root-level ops scripts
+
+Current assessment:
+
+- some are useful operational history
+- none should remain ambiguous root-level “maybe runtime” assets
+
+Recommendation:
+
+- either move to `infrastructure/archive/` or formalize them under owned infra modules
+
+---
+
+## Compatibility Assessment for Incoming Sourik Merge
+
+This section is based on the **shape** of the incoming `Sourik` tree and how it overlaps with the current codebase.
+
+### High-Conflict Zones
+
+| Incoming Sourik Area | Current Main Area | Risk | Why |
+| --- | --- | --- | --- |
+| `Sourik/velocity/api/*.py` | `backend/main.py`, `backend/routers/*`, `backend/api/*` | High | Both define backend API surfaces for Catalyst, Sentinel, leads, websockets, and chat/log flows. |
+| `Sourik/velocity/frontend/src/lib/api.ts` | `app/src/lib/api.ts`, `app/src/oracle/lib/oracleApiClient.ts` | High | Conflicting client-side contract layers are likely. |
+| `Sourik/velocity/frontend/src/components/...` | `app/src/components/modules/*` | High | Dashboard, marketing, and visual modules are likely to overlap semantically. |
+| `Sourik/velocity/internal/oracle/*` | `backend/oracle/*` | High | Two different Oracle implementations or mental models may coexist. |
+| `Sourik/velocity/internal/nemoclaw/*` | `backend/services/nemoclaw_client.py`, prompt files | High | Strong conceptual overlap around reasoning/runtime responsibilities. |
+| `Sourik/velocity/services/comfyui_service.py` | `infrastructure/desineuron_ingress/*`, ops control plane, current Comfy deployment path | High | Comfy runtime ownership is already established elsewhere. |
+| `Sourik/VelocityApp/*` | `iOS/velocity/velocity/*` | Medium-High | iOS naming and feature overlap likely. |
+
+### Medium-Conflict Zones
+
+| Incoming Sourik Area | Current Main Area | Risk | Why |
+| --- | --- | --- | --- |
+| `Sourik/velocity/marketing/*` | `backend/api/routes_catalyst.py`, `app/src/components/modules/Catalyst.tsx` | Medium | Similar domain, different implementation lineage. |
+| `Sourik/velocity/mcp/*` | current repo has almost no real MCP implementation outside ops/docs | Medium | Less direct code collision, but conceptual ownership must be assigned. |
+| `Sourik/velocity/integrations/*` | current backend service boundaries | Medium | Could be useful if treated as adapter candidates instead of merged blindly. |
+
+### Low-Compatibility / High-Archive Areas in Sourik
+
+These should not be merged into main as-is later:
+
+- `.pytest_cache`
+- compiled `.pyc`
+- `.env`
+- local `prototype.db`
+- `coverage*`
+- test output logs
+- bundled `.exe`
+- scratch guides and extracted intermediates
+- duplicate keys such as `desineuron-l4-node.pem`
+
+---
+
+## Pre-Merge Filter Recommendations
+
+Before merging `Sourik`, do this sequence:
+
+1. **Purge or quarantine score 1-2 paths from the current main tree**
+ - especially secrets, zero-byte placeholders, build output, and archived binaries
+
+2. **Resolve canonical owners**
+ - iOS canonical tree
+ - Oracle backend owner path
+ - Comfy/infra owner path
+ - AI runtime owner path
+
+3. **Mark demo-only code explicitly**
+ - especially Oracle demo fallback and any mock client layers
+
+4. **Move heavy artifacts out of repo**
+ - models
+ - generated builds
+ - payload zips
+ - bulky demo assets if they are not required in the core app repo
+
+5. **Merge Sourik by subsystem, not by tree**
+ - backend API
+ - frontend marketing/dashboard
+ - Oracle logic
+ - MCP/integrations
+ - iOS
+
+6. **Do not allow two runtimes for the same responsibility**
+ - one Oracle backend
+ - one Comfy orchestration path
+ - one Nemoclaw integration contract
+ - one frontend API client contract per domain
+
+---
+
+## Final Recommendation
+
+The current codebase is not yet ready for a blind merge with `Sourik`.
+
+The biggest blockers are:
+
+- fake surface area from empty files
+- duplicated iOS source roots
+- heavy runtime assets in Git
+- root-level operational drift
+- overlapping conceptual ownership around Oracle, Nemoclaw, Catalyst, and API contracts
+
+The right move is:
+
+- purge ambiguity first
+- then merge subsystem by subsystem
+
+That will save far more time than trying to reconcile two partially overlapping stacks after the fact.
+
diff --git a/.Agent Context/Sprint 1/Sprint 1 Fact Table - 2026-04-12.md b/.Agent Context/Sprint 1/Sprint 1 Fact Table - 2026-04-12.md
new file mode 100644
index 00000000..4bba7558
--- /dev/null
+++ b/.Agent Context/Sprint 1/Sprint 1 Fact Table - 2026-04-12.md
@@ -0,0 +1,338 @@
+# Sprint 1 Fact Table
+
+**Date:** 2026-04-12
+**Scope:** Reconciliation of `userstories.csv` and `tasks.csv` against the current Project Velocity repo, live infrastructure, and evolved product direction
+**Purpose:** Show what is done, partial, changed, deferred to v2, or still missing
+
+**Important Note:** `tasks.csv` and `userstories.csv` contain many items marked `Closed`. That is treated here as historical planning metadata, not source-of-truth delivery status. This fact table is based on the current repo, live infrastructure, and the product direction clarified after Sprint 1.
+
+---
+
+## Status Key
+
+| Status | Meaning |
+| --- | --- |
+| `Done` | Implemented in current mainline or achieved through an evolved equivalent |
+| `Partial` | Significant work exists, but the original intent is not fully complete |
+| `Changed` | Original task was superseded or split into a better/different architecture |
+| `V2` | Intentionally better treated as v2 or later, not a Sprint 1 blocker now |
+| `Missing` | Not materially implemented in mainline yet |
+
+---
+
+## Executive Summary
+
+### User Story Rollup
+
+| User Story | Status | Reality |
+| --- | --- | --- |
+| `1.1 Local/Cloud Hardware Config` | `Changed` | The current AWS/Linux stack is simulation hardware for product proving. The client-facing recommendation is now minimum `1x NVIDIA RTX PRO 6000 Blackwell 96GB`, recommended `2x`, with horizontal scaling and DGX/H100-class builds for HNI clients. |
+| `1.2 ComfyUI Visual Workflows` | `Partial` | Dream Weaver, Qwen poster, and Wan 2.2 workflow assets all exist locally as real code and workflow JSONs. The remaining gap is production-grade orchestration, async automation, and canonical packaging. |
+| `1.3 System Prompts & UI Logic` | `Partial` | Prompt assets and UI direction exist, but there is no single canonical prompt inventory mapping persona -> function -> file -> model -> API surface. |
+| `2.1 Swift/iPad App` | `Partial` | The iOS app is materially implemented and was proven once in simulated form. The blocker is stable endpoint contract and environment passthrough, not absence of implementation. |
+| `2.2 FastAPI Neural Core` | `Done` | FastAPI backend, PostgreSQL, auth, Sentinel stack, vault, scenes, videos, and live infra are in place. This is the real operating backend, not a placeholder. |
+| `2.3 CRM/WebOS React Wiring` | `Partial` | WebOS shell is strong, but the canonical CRM backend contract is incomplete. Leads/chat/kanban wiring is still not fully landed in mainline. |
+| `3.1 Claw Bot Ecosystem` | `Changed` | The original OpenClaw framing is obsolete. The intended truth is NemoClaw as the operating agent inside on-prem or client-cloud deployments, with stronger local-model autonomy planned later. |
+| `3.2 MCP Server/Tools` | `V2` | MCP work is deliberate in Sourik's tree, but it is not part of the current mainline operating center yet. |
+| `3.3 Marketing Automation` | `Partial` | Meta/Catalyst foundations exist and visual generation is wired conceptually, but Google Ads, autonomous posting, and a unified production-grade campaign loop remain open. |
+| `4.1 Future Life and Time & Light Engine` | `Changed` | This story has effectively split: `Future Life` is now v2, while `Time & Light` remains a v1 item with significant implementation already present in iOS. |
+| `4.2 Engagement Intelligence and Social Proof layer` | `Partial` | Sentinel intelligence exists, and there is a real browser-webcam perception path using Google MediaPipe on the frontend. The sales-facing social proof, room-peak, and wealth/legacy payoff layers are not fully delivered yet. |
+
+### Summary Counts
+
+| Status | Count |
+| --- | ---: |
+| `Done` | 1 |
+| `Partial` | 6 |
+| `Changed` | 3 |
+| `V2` | 1 |
+| `Missing` | 0 |
+
+Interpretation:
+
+- Sprint 1 was not a failure
+- the repo contains more real implementation than the old fact table gave credit for
+- the biggest drift is not infra anymore
+- the biggest drift is CRM completion, stable app/backend contracts, prompt inventory, and productized execution paths
+
+---
+
+## User Story Fact Table
+
+| User Story | Original Intent | Current Status | Evidence / Current Truth | What Remains |
+| --- | --- | --- | --- | --- |
+| `1.1 Local/Cloud Hardware Config` | Define Black Box + provision 8xA100 + split nodes + tunnels | `Changed` | Current infra is a proving ground: Linux control surface, AWS GPU workers, S3 strategy, stable `t4g.micro` ingress. For clients, the target recommendation is minimum `1x RTX PRO 6000 Blackwell 96GB`, recommended `2x`, and horizontal scaling if workload grows. HNI builders can justify DGX/H100-class systems. | Formalize the customer hardware matrix, scaling tiers, and on-prem packaging playbook. |
+| `1.2 ComfyUI Visual Workflows` | Dream Weaver, poster gen, Wan 2.2, async queue API | `Partial` | The repo contains real workflow assets and code: `comfy_engine/workflows/dreamweaver_phase1_depth.json`, `dreamweaver_phase2_multicontrol.json`, `dreamweaver_phase3_batch.json`, `dreamweaver_a100_human_preservation.json`, `catalyst_poster_qwen.json`, `cinematic_wan22_14b.json`, plus `dw_gateway_v2.py`, `queue_manager.py`, and batch/test scripts. | Standardize canonical workflow packaging, unify gateway/runtime assumptions, and finish end-to-end async automation across all workflows. |
+| `1.3 System Prompts & UI Logic` | Oracle persona prompts, Catalyst prompts, lock frontend/API design | `Partial` | Oracle architecture is deeply specified, and prompt assets already exist in `backend/nemoclaw_prompts/*.md` plus Dream Weaver prompt files. UI language exists. | Build a first-principles prompt inventory: which personas/functions exist, which prompt files are canonical, where Oracle prompts live, where Catalyst prompts live, and what API contracts they expect. |
+| `2.1 Swift/iPad App` | Native shell + camera + sun path | `Partial` | The app is materially implemented: `ComfyClient.swift`, `InventoryView.swift`, `ARSunOverlayView.swift`, `SunMath.swift`, `SimulatorSunOverlayView.swift`, and slider/camera flow are present in the canonical iOS tree. It has been demonstrated once in simulated form from Sayan's MacBook. | Stabilize environment passthrough and endpoint mapping so the existing app can reliably talk to the current backend/Comfy gateways after code merge. |
+| `2.2 FastAPI Neural Core` | FastAPI + PostgreSQL + endpoints + websockets | `Done` | `backend/main.py` is a real unified backend with DB pool lifecycle, auth, Catalyst, Sentinel, CCTV, scenes, videos, vault, static assets, and websocket support. This is already a live operating backend rather than a stub. | Expand feature breadth, not existence: CRM routes, Oracle mounting/contract cleanup, and stricter API/schema discipline. |
+| `2.3 CRM/WebOS React Wiring` | Connect WebOS to backend, Kanban, dashboard sentiment | `Partial` | The WebOS/UI layer is real, but the backend contract is incomplete. `backend/api/routes_crm.py` is zero bytes, `backend/api/routes_oracle.py` is zero bytes, and the frontend still uses `app/src/components/oracle/mockLeads.ts`. `PipelineView.tsx` and CRM types exist, but they are not backed by canonical live endpoints yet. | Finish the real lead/chat/kanban/oracle endpoints, replace mock lead data, wire CRM websocket updates, define DB structure, and generate synthetic client data for verification. |
+| `3.1 Claw Bot Ecosystem` | Deploy OpenClaw as primary communication agent | `Changed` | The product direction is now NemoClaw as the operating agent for client on-prem or client-cloud deployments. Current reality still uses the Python backend as the main runtime center, with future agent hardening planned. | Define the v1 NemoClaw boundary cleanly: what it owns now, how it integrates with CRM and Catalyst, and what shifts to local `30B/70B` models in v2. |
+| `3.2 MCP Server/Tools` | Local files, DB, internet via MCP | `V2` | MCP work exists deliberately in Sourik's code and should be treated as an explicit future subsystem, not accidental residue. | Revisit only after Sayan approval and after the core CRM/product surfaces stabilize enough to absorb it cleanly. |
+| `3.3 Marketing Automation` | Meta/Google, bids, content generation, posting | `Partial` | Mainline has a substantial Catalyst UI in `app/src/components/modules/Catalyst.tsx` and live Meta-oriented backend routes in `backend/api/routes_catalyst.py` for campaign creation, creative sync, insights, lookalike audiences, and auth. Qwen/Wan workflow references are already reflected in the UI. | Missing pieces are Google Ads parity, autonomous posting, unified audience/budget/bid loop, production-grade marketing DB/state, and a non-fragmented front-to-back execution path. |
+| `4.1 Future Life and Time & Light Engine` | Future Life videos + iPad time/light engine | `Changed` | The story is now two scopes. `Future Life` is pushed to v2. `Time & Light` is materially implemented in iOS via AR sun overlay, sun math, SceneKit dollhouse, sliders, and simulator fallback. | For v1, finish endpoint stability, validation on real devices, and tighten the product surface around Time & Light. For v2, Future Life needs a defined cinematic workflow and asset/runtime contract. |
+| `4.2 Engagement Intelligence and Social Proof layer` | Social proof, emotional anchoring, wealth projection | `Partial` | Sentinel/QD logic exists, and the repo already contains a live-session browser path for webcam perception: `PerceptionPlayer.tsx` captures webcam, `useMediapipeFaceLandmarker.ts` runs Google MediaPipe in-browser, `landmarkPacketEncoder.ts` emits compact blendshape packets, and `backend/routers/sentinel.py` ingests them over WebSocket and returns QD updates. Your intended broader testing path can also use browser automation and public/free CCTV feeds. | Validate the live MacBook browser path end-to-end with Sayan, then decide how much additional CCTV/browser testing is needed before productizing the sales-facing social proof and room-peak layers. |
+
+---
+
+## Task Fact Table
+
+| Ref | Task | Status | Fact | Notes |
+| --- | --- | --- | --- | --- |
+| `W1-2` | Define local Black Box edge server requirements | `Partial` | The architectural direction is now clear, but the customer-facing hardware matrix is still not formalized in one deployment standard. | Document minimum `1x RTX PRO 6000 Blackwell 96GB`, recommended `2x`, horizontal scaling, and DGX/H100 escalation path. |
+| `W2-3` | Provision AWS 8xA100 instance | `Changed` | Current AWS GPU use is validation hardware, not the final customer recommendation. | The live L4/G6 path served testing; product packaging should now reference Blackwell-class on-prem targets. |
+| `W2-4` | Virtualize AWS into Node 1 and Node 2 | `Changed` | Not how the system evolved. | Replaced by Linux control plane + ephemeral AWS workers. |
+| `W2-5` | Secure SSH tunnel access | `Changed` | Stable ingress, SSM, LAN access, and route sync superseded this. | Current system is better than the original tunnel-only idea. |
+| `W1-7` | Dream Weaver interior restyling workflow | `Partial` | Real workflow JSONs, gateway code, prompt expansion, mask preprocessing, A100 executor, and batch processor exist locally. | Convert the local workflow stack into a canonical production package with stable endpoints and validation. |
+| `W1-8` | Marketing poster workflow using Qwen-Image 2512 | `Partial` | `comfy_engine/workflows/catalyst_poster_qwen.json` exists and the Catalyst surface references Qwen poster generation directly. | Make the poster flow an operator-safe product path instead of a local workflow asset plus operational runs. |
+| `W2-9` | Wan 2.2 video generation workflow | `Partial` | `comfy_engine/workflows/cinematic_wan22_14b.json` exists and the Catalyst UI explicitly models Wan 2.2 generation states. | Productionize and validate the actual operator/runtime path; keep broader Future Life cinematic orchestration in v2. |
+| `W2-10` | Expose all ComfyUI workflows via Async Queue API | `Partial` | `dw_gateway_v2.py`, `dw_gateway_v2_min.py`, `queue_manager.py`, and iOS `ComfyClient.swift` show a real queue/poll/result model exists. | Unify this into one canonical async API across Dream Weaver, Qwen poster, and Wan video workflows. |
+| `W1-12` | Draft Oracle persona prompts | `Partial` | Prompt assets exist across current and parallel work. | Final product-grade persona contract still needs consolidation. |
+| `W1-13` | Create Catalyst marketing prompts | `Partial` | Partial logic exists in Catalyst and service layers. | Build a canonical prompt map and separate strategy prompts from execution prompts. |
+| `W1-14` | Lock frontend UI design and API schemas | `Partial` | Premium UI direction exists strongly. | API schemas are still evolving, especially for Oracle and CRM. |
+| `W1-16` | Build native SwiftUI app shell | `Done` | Mainline iOS shell and modules exist. | Feature stabilization is separate. |
+| `W1-17` | Camera capture feature to ComfyUI | `Partial` | Mainline iOS includes `CameraPicker` and a real `ComfyClient` talking to a Dream Weaver gateway. | Stabilize live endpoints and prove the flow again after code consolidation. |
+| `W1-18` | Sun Path overlay in iPad app | `Partial` | ARKit, CoreLocation, CoreMotion, SceneKit, `SunMath`, and simulator fallback are implemented in the canonical iOS tree. | Real-device acceptance, UX tightening, and full passthrough validation remain. |
+| `W1-20` | Marketing page frontend for Sourik | `Partial` | Mainline has a substantial Catalyst module already, even though Sourik also built a separate marketing page. | Decide whether to port selective Sourik marketing widgets or keep mainline Catalyst as the only truth. |
+| `W1-21` | Python FastAPI server with PostgreSQL | `Done` | Implemented and live. | Closed for Sprint 1 baseline. |
+| `W1-22` | `/api/leads`, `/api/chat-logs` for Oracle | `Missing` | Mainline still lacks real mounted implementations here, and `routes_crm.py` / `routes_oracle.py` are zero-byte placeholders. | Strong candidate to import selectively from Sourik and adapt to the mainline DB contract. |
+| `W1-23` | `/api/biometrics`, `/api/sentiment` endpoints for Sentinel | `Changed` | Current mainline uses Sentinel websocket/session architecture instead of this exact REST shape, but there is a real working browser-webcam perception path using MediaPipe and WebSocket packet streaming. | Functional equivalent exists; the next step is live validation from Sayan's MacBook rather than re-arguing endpoint names. |
+| `W1-24` | WebSockets to stream real-time updates to WebOS | `Partial` | Sentinel and notification live flows exist, including QD update broadcasts back into the perception player. | Broader CRM websocket sync is not fully closed. |
+| `W2-26` | Connect React frontend components to FastAPI | `Partial` | Mainline has live backend wiring in some modules, but the CRM surface still depends on mocks and incomplete contracts. | Replace mock data, land CRM/oracle routes, and verify contract parity end-to-end. |
+| `W2-27` | Simplified Kanban CRM pipeline | `Missing` | The polished implementation exists in Sourik, not in current mainline. | Important gap and likely one of the first selective imports. |
+| `W2-28` | Dashboard visualizes AI sentiment output | `Partial` | Sentinel/dashboard UI work exists. | Needs a stricter acceptance pass tied to real CRM data and post-tour actions. |
+| `W1-30` | Deploy OpenClaw as primary communication agent | `Changed` | The target concept has shifted to NemoClaw as the future operating agent, not OpenClaw as originally phrased. | Define the actual v1 NemoClaw contract and keep the model-local migration in v2. |
+| `W1-31` | Connect bot to WhatsApp/Email APIs | `V2` | Not current mainline truth. | Can return when communication agent architecture is stabilized. |
+| `W1-32` | Configure DM pairing and security allowlists | `V2` | More agent-stack specific than current core product need. | Defer. |
+| `W1-33` | Route parsed transcripts/call durations into CRM DB | `Partial` | Architectural direction exists. | Concrete integrated mainline path is still incomplete. |
+| `W1-35` | Set up MCP server | `V2` | Not part of current mainline critical path. | Defer. |
+| `W1-36` | Configure HEARTBEAT or Cron background tasks | `Partial` | Infra timers/services now exist for ops sync and auto-heal. | Agent heartbeat specifically is not mainline yet. |
+| `W1-37` | Configure Brave Search API for autonomous research | `V2` | Exists only in parallel/agent-oriented direction. | Defer. |
+| `W2-39` | Integrate Meta Business API and Google Ads API as skills | `Partial` | Meta exists in `routes_catalyst.py`; Google Ads is not landed in mainline. | Keep Google as open and treat the current state as Meta-first. |
+| `W2-40` | Read insights, manage budgets, execute bidding | `Partial` | Mainline covers campaign creation, creative sync, realtime insights, and lookalikes. | Budget governance, automated bidding, and unified marketing state are still incomplete. |
+| `W2-41` | Bridge agent to Sagnik ComfyUI API for posters/videos | `Partial` | The gateway/queue model exists, but the agent-operable bridge is not yet a polished first-class mainline subsystem. | Candidate for consolidation once NemoClaw/Catalyst boundaries are clarified. |
+| `W2-42` | Autonomous content posting via headless browser or APIs | `V2` | Not done in mainline. | Defer. |
+| `44` | Future Life Simulation workflow | `V2` | The story is intentionally pushed to v2 now. Wan workflow assets exist, but not the full Future Life product layer. | Keep out of Sprint 1 closure. |
+| `45` | Time & Light Engine in Swift iPad app | `Partial` | The underlying implementation is materially there: AR sun overlay, sun math, SceneKit lighting, simulator path. | Finish product hardening and real-device verification. |
+| `46` | Touch sliders for month/time/obstruction | `Partial` | Slider-driven control exists in the iOS inventory/time-light surface. | Tighten UX and confirm the final obstruction/massing behavior you want. |
+| `48` | Legacy Mode wealth projection UI | `V2` | Not in current mainline. | Good v2 candidate. |
+| `49` | Social Proof live map | `V2` | Not closed in mainline. | Good v2 candidate. |
+| `50` | Sentinel backend for eye-tracking and micro-expression from iPad camera | `Partial` | This capability exists more clearly in Sourik's parallel Sentinel work than in current mainline. Mainline has the Sentinel backbone, but not the final iPad-first ingestion path you want to test. | Decide the testing source path: iPad camera, browser instrumentation, or public/free CCTV footage for development. |
+| `51` | Dashboard visualize emotional spike by room | `Partial` | The data concept exists, but the sales-facing room-peak UI payoff is not clearly delivered in mainline. | Build the actual post-tour anchor surface, not just the data plumbing. |
+
+---
+
+## What Is Actually Closed in Sprint 1 Terms
+
+These items are reasonably closed if judged by evolved product reality rather than literal wording:
+
+- native app shell exists
+- Dream Weaver local workflow stack exists
+- Wan 2.2 and Qwen workflow assets exist locally
+- FastAPI + PostgreSQL neural core exists
+- Sentinel backbone exists
+- browser-webcam Sentinel perception path exists
+- vault/notifications exist
+- scenes/video/session pipeline exists
+- live AWS/Linux/ingress infrastructure exists
+
+---
+
+## What Is Escaping Attention
+
+These are the most likely to be forgotten because adjacent systems exist:
+
+1. `leads` and `chat-logs` APIs
+ - easy to assume done because backend exists
+ - they are not landed in current mainline routes yet
+
+2. Kanban CRM logic
+ - same issue
+
+3. camera-to-Comfy flow in the iPad app
+ - implementation exists, but endpoint stability and integration need proving after merge
+
+4. marketing execution path
+ - there is a substantial Catalyst module, but the backend and execution loop are not fully unified
+
+5. room-level emotional spike visualization
+ - scene-aware data exists
+ - explicit sales UI payoff may still be missing
+
+6. prompt inventory
+ - prompt files exist in multiple places
+ - there is no single canonical map of persona/function -> prompt -> model -> API surface
+
+7. live MacBook webcam validation
+ - the path exists in code
+ - it still needs a real end-to-end run from Sayan's machine against the current deployed environment
+
+---
+
+## Recommended Interpretation for Planning
+
+### Keep in active near-term scope
+
+- leads API
+- chat logs API
+- kanban pipeline
+- frontend/backend CRM wiring
+- CRM database structure
+- synthetic `100`-client dataset for system verification
+- endpoint stabilization for the iPad app
+- room-level emotional spike sales surface
+- marketing execution path consolidation
+- prompt inventory and persona contract mapping
+
+### Treat as explicitly v2
+
+- MCP server and Brave search
+- autonomous content posting
+- Future Life cinematic product layer
+- Legacy Mode wealth projection
+- Social Proof live clustering layer
+
+### Treat as changed, not failed
+
+- 8xA100 provisioning and node virtualization
+- SSH-tunnel-based access model
+- OpenClaw-primary communication architecture
+- combined Future Life + Time & Light story packaging
+
+---
+
+## CRM Remaining Pieces
+
+These are the concrete mainline CRM gaps visible in the repo today:
+
+1. Backend lead and chat routes are not landed.
+ - `backend/api/routes_crm.py` is zero bytes
+ - `backend/api/routes_oracle.py` is zero bytes
+
+2. Frontend CRM still depends on mock data.
+ - `app/src/components/oracle/mockLeads.ts` is still the effective lead source for parts of the UI
+
+3. Kanban is not implemented in mainline.
+ - The cleanest working version currently lives in Sourik's tree
+
+4. Chat transcript and interaction ingestion are not unified into one canonical CRM schema yet.
+
+5. Oracle action surfaces and CRM writebacks are not yet a stable contract.
+
+6. Websocket semantics are not yet closed for CRM pipeline movement, lead updates, and interaction feeds.
+
+7. Synthetic verification data does not exist yet.
+ - You should generate at least `100` realistic synthetic client/lead records and run the full pipeline against them before treating CRM as stable.
+
+## CRM Database Brainstorming Starter
+
+Minimum canonical entities for the next pass:
+
+- `projects`
+- `properties`
+- `units`
+- `leads`
+- `lead_contact_methods`
+- `lead_interactions`
+- `lead_messages`
+- `lead_stage_events`
+- `site_visits`
+- `sentinel_sessions`
+- `sentiment_events`
+- `room_interest_events`
+- `tasks`
+- `owners/users`
+- `campaign_attributions`
+- `documents`
+- `oracle_actions`
+
+High-value relationships:
+
+- one `project` has many `properties`
+- one `property` has many `units`
+- one `lead` can have many `interactions`, `messages`, `site_visits`, and `stage_events`
+- one `sentinel_session` can produce many `sentiment_events` and `room_interest_events`
+- one `oracle_action` should map back to one canonical CRM write event
+
+---
+
+## Prompt Inventory Gap
+
+Prompt work exists, but the system does not yet have one canonical inventory. At minimum the next prompt pass should answer:
+
+1. Which personas exist now:
+ - Oracle
+ - NemoClaw
+ - Catalyst
+ - Sentinel/QD evaluator
+ - CCTV profiler
+ - lead tagger
+
+2. Which files are canonical:
+ - `backend/nemoclaw_prompts/qd_calculator.md`
+ - `backend/nemoclaw_prompts/lead_tagger.md`
+ - `backend/nemoclaw_prompts/cctv_profiler.md`
+ - Dream Weaver prompt files under `comfy_engine/prompts/`
+ - any Oracle/Catalyst prompt files that still only exist in docs or parallel code
+
+3. Which model each prompt targets
+
+4. Which runtime/API surface calls each prompt
+
+5. Which prompts are system prompts, tool prompts, UI copy, or generation prompts
+
+---
+
+## Updated Active Task List
+
+### Must finish for Sprint 1 truth to feel real
+
+- land canonical `leads`, `chat_logs`, and `kanban` backend routes
+- replace frontend CRM mock data with live API-backed state
+- define and implement the canonical CRM database schema
+- generate `100` synthetic client/lead records and verify the end-to-end CRM flow
+- validate the Sentinel live-session webcam path from Sayan's MacBook
+- stabilize iOS endpoint passthrough and prove camera-to-Dream-Weaver again
+- finish the room-level emotional spike sales surface
+- create the prompt inventory and persona/function map
+
+### Important, but after the CRM spine is stable
+
+- unify Dream Weaver/Qwen/Wan async automation into one canonical queue API
+- harden Catalyst execution flow from UI -> backend -> generation -> asset sync
+- define the v1 NemoClaw contract inside the product
+- decide which Sourik CRM/marketing modules are selectively imported
+
+### Explicitly v2
+
+- Future Life cinematic product layer
+- MCP server integration
+- Brave Search autonomous research
+- autonomous content posting
+- Legacy Mode wealth projection
+- Social Proof live clustering layer
+
+---
+
+## Bottom Line
+
+Sprint 1 is best described as:
+
+- **infrastructure and core runtime: substantially achieved**
+- **Dream Weaver / Qwen / Wan local workflow assets: materially present**
+- **Sentinel backbone: substantially achieved**
+- **web and iOS implementation surface: materially present**
+- **full CRM operationalization: still incomplete**
+- **agent, marketing, and prompt unification: incomplete and needs explicit ownership**
+
+The biggest remaining work is not more infra.
+
+It is:
+
+- completing the CRM layer
+- deciding the canonical CRM schema
+- stabilizing app/backend passthrough
+- unifying frontend/backend contracts
+- building a prompt inventory from first principles
+- deciding which Sourik subsystems to port into mainline
+- explicitly labeling v2 items so they stop pretending to be Sprint 1 leftovers
diff --git a/.Agent Context/Sprint 1/tasks.csv b/.Agent Context/Sprint 1/tasks.csv
new file mode 100644
index 00000000..7bfc27e8
--- /dev/null
+++ b/.Agent Context/Sprint 1/tasks.csv
@@ -0,0 +1,41 @@
+id,ref,subject,description,user_story,sprint_id,sprint,sprint_estimated_start,sprint_estimated_finish,owner,owner_full_name,assigned_to,assigned_to_full_name,status,is_iocaine,is_closed,us_order,taskboard_order,attachments,external_reference,tags,watchers,voters,created_date,modified_date,finished_date,due_date,due_date_reason
+1,2,"W1: Define the local ""Black Box"" edge server requirements for the offline-first experience center setup.",,1,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221706761,0,0,,,[],0,2026-02-27 19:48:26.771342+00:00,2026-02-28 18:47:00.119354+00:00,2026-02-28 18:47:00.120611+00:00,,
+2,3,W2: Provision the AWS 8xA100 instance.,,1,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221725889,1,0,,,[],0,2026-02-27 19:48:45.899103+00:00,2026-03-09 18:10:45.526266+00:00,2026-03-09 18:10:45.527568+00:00,,
+3,4,W2: Configure virtualization to split the AWS instance into two compute nodes: Node 1 (Sourik's Agent/Bot Operations) and Node 2 (Sagnik & Sayan's Model/Render Operations).,,1,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221741690,2,0,,,[],0,2026-02-27 19:49:01.700573+00:00,2026-03-09 18:10:16.322481+00:00,2026-03-09 18:10:16.323670+00:00,,
+4,5,W2: Set up secure SSH tunnels networks to allow remote access to the AWS nodes.,,1,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221755869,3,0,,,[],0,2026-02-27 19:49:15.879374+00:00,2026-03-09 18:10:51.657474+00:00,2026-03-09 18:10:51.658742+00:00,,
+5,7,"W1: Build the ""Dream Weaver"" interior restyling workflow using ControlNet + segment masking to preserve room geometry while changing aesthetics.",,6,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,True,True,1772221838514,0,0,,,[5],0,2026-02-27 19:50:38.524388+00:00,2026-03-09 18:08:05.779876+00:00,2026-03-09 18:08:05.781212+00:00,,
+6,8,W1: Build a marketing poster generation workflow using Qwen-Image 2512 to leverage its advanced multilingual text rendering capabilities for precise real estate typography.,,6,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221850050,1,0,,,[],0,2026-02-27 19:50:50.060934+00:00,2026-03-24 07:52:12.691412+00:00,2026-03-24 07:52:12.695999+00:00,,
+7,9,W2: Implement the Wan 2.2 (14B or 1.3B) video generation workflow for cinematic promotional videos.,,6,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221863123,2,0,,,[],0,2026-02-27 19:51:03.133310+00:00,2026-04-12 09:44:11.404656+00:00,2026-04-12 09:44:11.406137+00:00,,
+8,10,W2: Expose all ComfyUI workflows via the Asynchronous Queue API so Sourik's agents can trigger them automatically.,,6,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221874697,3,0,,,[],0,2026-02-27 19:51:14.706589+00:00,2026-04-12 09:44:17.813778+00:00,2026-04-12 09:44:17.815079+00:00,,
+9,12,"W1: Draft ""The Oracle"" persona prompts (adapting the tone of top-tier Dubai brokers) for the WhatsApp CRM agent.",,11,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,0,1,0,,,[],0,2026-02-27 19:52:17.829687+00:00,2026-04-12 09:44:34.497116+00:00,2026-04-12 09:44:34.498417+00:00,,
+10,13,"W1: Create marketing strategy prompts for ""The Catalyst"" to generate Meta/Google ad copy based on demographic inputs.",,11,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221937822,2,0,,,[],0,2026-02-27 19:52:32.110749+00:00,2026-04-12 09:44:32.953327+00:00,2026-04-12 09:44:32.954497+00:00,,
+11,14,"W1: Lock the frontend UI design (the ""Apple/Steve Jobs"" aesthetic) and officially hand over the React components and required API schemas to Sayan for backend wiring.",,11,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,1772221937821,0,0,,,[],0,2026-02-27 19:52:45.221808+00:00,2026-03-24 07:52:58.958801+00:00,2026-03-24 07:52:58.960593+00:00,,
+12,16,"W1: Build the native SwiftUI app shell mirroring the WebOS interface (Dashboard, Inventory, Oracle tabs).",,15,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222024957,0,6,,,[6],0,2026-02-27 19:53:44.966875+00:00,2026-03-07 12:36:31.475097+00:00,2026-03-07 12:36:31.476262+00:00,,
+13,17,W1: Implement the camera capture feature to take photos of empty walls/rooms and push them to Sagnik's ComfyUI API endpoint.,,15,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222036382,1,0,,,[],0,2026-02-27 19:53:56.392802+00:00,2026-03-24 07:55:47.038974+00:00,2026-03-24 07:55:47.040142+00:00,,
+14,18,W1: Integrate ARKit/CoreLocation/CoreMotion to overlay the mathematical Sun Path over the live camera feed or 3D model view.,,15,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222050984,2,0,,,[],0,2026-02-27 19:54:10.993883+00:00,2026-03-24 07:55:49.152302+00:00,2026-03-24 07:55:49.153709+00:00,,
+15,20,W1: Set up the Marketing page frontend for Sourik.,,19,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222108515,0,0,,,[],0,2026-02-27 19:55:08.524248+00:00,2026-03-24 07:53:40.935245+00:00,2026-03-24 07:53:40.936625+00:00,,
+16,21,W1: Set up the Python FastAPI server with a PostgreSQL database.,,19,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222119363,1,0,,,[],0,2026-02-27 19:55:19.373616+00:00,2026-04-12 09:44:42.960490+00:00,2026-04-12 09:44:42.961685+00:00,,
+17,22,"W1: Create API endpoints for ""The Oracle"" (/api/leads, /api/chat-logs) to receive data from Sourik's WhatsApp bots.",,19,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222129398,2,0,,,[],0,2026-02-27 19:55:29.408246+00:00,2026-04-12 09:44:47.034107+00:00,2026-04-12 09:44:47.035298+00:00,,
+18,23,"W1: Create API endpoints for ""The Sentinel"" (/api/biometrics, /api/sentiment) to ingest video player facial/voice data points.",,19,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222140319,3,0,,,[],0,2026-02-27 19:55:40.327197+00:00,2026-04-12 09:44:53.214983+00:00,2026-04-12 09:44:53.216156+00:00,,
+19,24,W1: Set up WebSockets to stream real-time updates directly to the WebOS React frontend.,,19,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222152434,4,0,,,[],0,2026-02-27 19:55:52.443171+00:00,2026-04-12 09:45:01.241831+00:00,2026-04-12 09:45:01.243037+00:00,,
+20,26,W2: Connect the frontend React components to the FastAPI endpoints.,,25,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222216251,0,0,,,[],0,2026-02-27 19:56:56.261160+00:00,2026-04-12 09:45:04.249760+00:00,2026-04-12 09:45:04.251615+00:00,,
+21,27,"W2: Develop the logic for the simplified ""Kanban"" CRM pipeline, ensuring lead stages automatically update based on triggers from ""The Oracle"".",,25,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222226063,1,0,,,[],0,2026-02-27 19:57:06.074849+00:00,2026-04-12 09:45:06.556812+00:00,2026-04-12 09:45:06.557988+00:00,,
+22,28,W2: Ensure the WebOS dashboard accurately visualizes the parsed AI sentiment data’s output.,,25,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772222236473,2,0,,,[],0,2026-02-27 19:57:16.484481+00:00,2026-04-12 09:45:08.647867+00:00,2026-04-12 09:45:08.649243+00:00,,
+23,30,W1: Deploy OpenClaw to act as the primary communication agent.,,29,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222353354,0,0,,,[],0,2026-02-27 19:59:13.363801+00:00,2026-03-24 07:56:23.466079+00:00,2026-03-24 07:56:23.467239+00:00,,
+24,31,W1: Connect the bot to WhatsApp/Email APIs to ingest client messages.,,29,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222364232,1,0,,,[],0,2026-02-27 19:59:24.241508+00:00,2026-03-24 07:56:25.188356+00:00,2026-03-24 07:56:25.189555+00:00,,
+25,32,W1: Configure DM pairing and security allowlists.,,29,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222376473,2,0,,,[],0,2026-02-27 19:59:36.483694+00:00,2026-03-24 07:56:27.169875+00:00,2026-03-24 07:56:27.171056+00:00,,
+26,33,"W1: Route all parsed chat transcripts, call durations, and interaction logs directly into Sayan's CRM database via FastAPI webhooks.",,29,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222387241,3,0,,,"[5, 6]",0,2026-02-27 19:59:47.252349+00:00,2026-03-24 07:56:30.206587+00:00,2026-03-24 07:56:30.207755+00:00,,
+27,35,"W1: Set up the Model Context Protocol (MCP) server for secure access to local files, the property database, and the internet.",,34,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222448792,0,0,,,[],0,2026-02-27 20:00:48.802138+00:00,2026-03-24 07:56:37.925832+00:00,2026-03-24 07:56:37.927003+00:00,,
+28,36,W1: Configure HEARTBEAT.md or Cron tools for periodic background tasks.,,34,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222458999,1,0,,,[],0,2026-02-27 20:00:59.008938+00:00,2026-03-24 07:56:40.173506+00:00,2026-03-24 07:56:40.174676+00:00,,
+29,37,W1: Configure Brave Search API to allow the agent to autonomously research target audiences.,"Task #37 is complete! We built the Brave Search tool into the central MCP server. It's fully functional with exponential backoff for rate limits, context-aware timeouts, and a graceful fallback in the event of missing keys (automatically reverts back to DuckDuckGo, so we never stall). All tests pass. Will just need to grab the standard free API Key when we move to cloud.",34,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222469781,2,0,,,[],0,2026-02-27 20:01:09.790996+00:00,2026-03-24 07:56:42.200997+00:00,2026-03-24 07:56:42.202158+00:00,,
+30,39,"W2: Integrate Meta Business API and Google AdWords API as agent ""Skills"".",,38,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222528624,1,0,,,[],0,2026-02-27 20:02:08.634609+00:00,2026-04-12 09:45:13.092812+00:00,2026-04-12 09:45:13.094098+00:00,,
+31,40,"W2: Give the agent the ability to read ad insights, manage marketing budgets, and execute automated bidding strategies.",,38,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222537734,2,0,,,[],0,2026-02-27 20:02:17.744121+00:00,2026-04-12 09:45:19.901845+00:00,2026-03-24 07:57:18.950521+00:00,,
+32,41,W2: Write the bridging script allowing the agent to autonomously prompt Sagnik's ComfyUI API to generate custom posters and promotional videos.,,38,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222546643,3,0,,,[],0,2026-02-27 20:02:26.650336+00:00,2026-04-12 09:45:15.334261+00:00,2026-04-12 09:45:15.335454+00:00,,
+33,42,W2: Configure the headless browser tool or social APIs for autonomous content posting.,,38,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772222537735,4,0,,,[],0,2026-02-27 20:02:40.625582+00:00,2026-03-24 07:57:23.338020+00:00,2026-03-24 07:57:21.742863+00:00,,
+34,44,"Build a ComfyUI/Wan 2.2 workflow for ""Future Life Simulation"" that generates cinematic videos of specific lifestyle prompts (morning sunlight, kids playing, dinner parties) mapped to the unit's floorplan.",,43,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,Closed,False,True,0,0,0,,,[],0,2026-02-28 12:39:21.287833+00:00,2026-04-12 09:45:41.029569+00:00,2026-04-12 09:45:41.030850+00:00,,
+35,45,"Integrate a ""Time & Light Engine"" into the Swift iPad app using ARKit/SceneKit to simulate real-time sun paths, seasonal shadows, and weather changes (rain, festive lighting) over the 3D model.",,43,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772282361281,1,0,,,[],0,2026-02-28 12:39:39.275027+00:00,2026-04-12 09:45:43.695076+00:00,2026-04-12 09:45:43.696260+00:00,,
+36,46,"Add interactive touchscreen sliders to the iPad app to control month, time of day, and view obstruction massing.",,43,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772282437251,2,0,,,[],0,2026-02-28 12:40:37.257926+00:00,2026-04-12 09:45:48.208124+00:00,2026-04-12 09:45:48.209326+00:00,,
+37,48,"Build the ""Legacy Mode"" wealth projection UI in the iPad app and WebOS, visualizing 10-20 year compounding appreciation and rental yields against gold/stock benchmarks.",,47,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772282707104,0,0,,,[],0,2026-02-28 12:45:07.113994+00:00,2026-04-12 09:45:56.516622+00:00,2026-04-12 09:45:56.517875+00:00,,
+38,49,"Create the ""Social Proof"" live map in the frontend, dynamically clustering anonymized buyer demographics (NRI vs local, professions) to build tribe psychology.",,47,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772282719217,1,0,,,[],0,2026-02-28 12:45:19.226139+00:00,2026-04-12 09:45:59.591950+00:00,2026-04-12 09:45:59.593490+00:00,,
+39,50,"Configure ""The Sentinel"" backend API to ingest and process eye-tracking and micro-expression data from the iPad's front-facing camera (with consent) during the tour.",Task #50 is complete! [sentinel.py](cci:7://file:///c:/MY%20VEL%20FILE/velocity/api/sentinel.py:0:0-0:0) is now extended. We set up 6 dedicated API endpoints ready to cleanly digest your real-time Eye-Tracking data alongside the Micro-Expression FACS streams. Everything is guarded strictly by an active-consent barrier and will automatically GDPR-purge dynamically on consent withdrawal. We can get together later this week and hit the endpoints to lock up iPad validation natively! Let me know when ready.,47,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,Closed,False,True,1772282731186,2,0,,,[],0,2026-02-28 12:45:31.195687+00:00,2026-04-12 09:45:54.625387+00:00,2026-04-12 09:45:54.627021+00:00,,
+40,51,"Update the WebOS CRM dashboard to visualize the emotional spike data, highlighting exactly which rooms peaked the buyer's interest for post-tour sales anchoring.",,47,2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,Closed,False,True,1772282741695,3,0,,,[],0,2026-02-28 12:45:41.704928+00:00,2026-04-12 09:46:06.085593+00:00,2026-04-12 09:46:06.086765+00:00,,
diff --git a/.Agent Context/Sprint 1/userstories.csv b/.Agent Context/Sprint 1/userstories.csv
new file mode 100644
index 00000000..84c712a7
--- /dev/null
+++ b/.Agent Context/Sprint 1/userstories.csv
@@ -0,0 +1,12 @@
+id,ref,subject,description,sprint_id,sprint,sprint_estimated_start,sprint_estimated_finish,owner,owner_full_name,assigned_to,assigned_to_full_name,assigned_users,assigned_users_full_name,status,is_closed,swimlane,back-points,design-points,front-points,ux-points,total-points,backlog_order,sprint_order,kanban_order,created_date,modified_date,finish_date,client_requirement,team_requirement,attachments,generated_from_issue,generated_from_task,from_task_ref,external_reference,tasks,tags,watchers,voters,due_date,due_date_reason,epics
+17,1,1.1: Local/Cloud Hardware Config,"As an Architect, I need to configure the local and cloud hardware environments so the team can build without bottlenecks.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,sagnik,Sagnik,New,True,,8.0,,,,8.0,1772221676403176,1,1772221676413004,2026-02-27 19:47:56.413009+00:00,2026-02-27 20:03:07.048568+00:00,2026-03-09 18:10:51.665179+00:00,False,False,0,,,,,"2,3,4,5",,[],0,,,
+18,6,1.2: ComfyUI Visual Workflows,"As an AI Visual Artist, I need to create API-ready ComfyUI workflows for ""The Catalyst"" and the ""Immersive Sales Companion"".",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,sagnik,Sagnik,New,True,,3.0,3.0,2.0,,8.0,1772221817549925,2,1772221817561352,2026-02-27 19:50:17.561358+00:00,2026-02-27 20:03:19.741415+00:00,2026-04-12 09:44:17.822335+00:00,False,False,0,,,,,"7,8,9,10",,[],0,,,
+19,11,1.3: System Prompts & UI Logic,"As an AI Engineer, I need to generate system prompts and fine-tune models so ""The Oracle"" and ""The Catalyst"" behave like elite real estate professionals.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,sagnik,Sagnik,New,True,,,3.0,3.0,2.0,8.0,1772221917508059,3,1772221917519214,2026-02-27 19:51:57.519220+00:00,2026-02-27 20:03:30.481650+00:00,2026-04-12 09:44:34.504511+00:00,False,False,0,,,,,"12,13,14",,[],0,,,
+20,15,2.1: Swift/iPad App,"As an iOS Developer, I need to build the ""Immersive Sales Companion"" iPad App using Swift.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,sayan,Sayan,New,True,,,2.0,3.0,3.0,8.0,1772222005626031,4,1772222005637374,2026-02-27 19:53:25.637380+00:00,2026-02-27 20:03:46.311976+00:00,2026-03-24 07:55:49.192166+00:00,False,False,0,,,,,"16,17,18",,[],0,,,
+21,19,2.2: FastAPI Neural Core,"As a Backend Engineer, I need to build the FastAPI neural core to connect all 4 software components.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,sayan,Sayan,New,True,,8.0,,,,8.0,1772222093978956,5,1772222093990417,2026-02-27 19:54:53.990424+00:00,2026-02-27 20:03:54.338526+00:00,2026-04-12 09:45:01.249998+00:00,False,False,0,,,,,"20,21,22,23,24",,[],0,,,
+22,25,2.3: CRM/WebOS React Wiring,"As a Full-Stack Engineer, I need to build the ""Walled Garden"" CRM and wire the React WebOS.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,sayan,Sayan,New,True,,3.0,,3.0,2.0,8.0,2,6,1772222201088772,2026-02-27 19:56:41.088779+00:00,2026-02-27 20:04:03.943036+00:00,2026-04-12 09:45:08.655385+00:00,False,False,0,,,,,"26,27,28",,[],0,,,
+23,29,3.1: Claw Bot Ecosystem,"As an Automation Engineer, I need to deploy and manage the Claw bot ecosystem for ""The Oracle"".",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,sourik,Sourik,New,True,,5.0,,,,5.0,1772222326327364,7,1772222326336825,2026-02-27 19:58:46.336830+00:00,2026-02-27 20:04:13.817190+00:00,2026-03-24 07:56:30.213938+00:00,False,False,0,,,,,"30,31,32,33",,[],0,,,
+24,34,3.2: MCP Server/Tools,"As an AI Operator, I need to set up the MCP Server and Agent System Tools.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,sourik,Sourik,New,True,,5.0,,,,5.0,1,8,1772222428317194,2026-02-27 20:00:28.317200+00:00,2026-02-27 20:04:22.989314+00:00,2026-03-24 07:56:42.208437+00:00,False,False,0,,,,,"35,36,37",,[],0,,,
+25,38,3.3: Marketing Automation,"As a Marketing Automation Lead, I need to build ""The Catalyst"" integration.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sourik,Sourik,sourik,Sourik,New,True,,3.0,1.0,2.0,2.0,8.0,1772222512196395,9,1772222512207080,2026-02-27 20:01:52.207086+00:00,2026-02-27 20:04:31.646325+00:00,2026-04-12 09:45:15.341636+00:00,False,False,0,,,,,"39,40,41,42",,[],0,,,
+26,43,4.1: Future Life and Time & Light Engine,"As an AI Visual Artist and iOS Developer, we need to build the ""Future Life"" and ""Time & Light"" engines to emotionally anchor the buyer to the property.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sagnik,Sagnik,"sagnik,sayan","Sagnik,Sayan",New,True,,8.0,5.0,5.0,5.0,23.0,1772282330939916,10,1772282330950456,2026-02-28 12:38:50.950461+00:00,2026-02-28 12:38:50.955347+00:00,2026-04-12 09:45:48.215061+00:00,False,False,0,,,,,"44,45,46",,[],0,,,
+27,47,4.2: Engagement Intelligence and Social Proof layer,"As a Full-Stack Engineer and Automation Lead, we need to build the Engagement Intelligence and Social Proof layer to give the sales team data-driven closing tools.",2,Prototype Features Sprint,2026-02-28,2026-03-14,sagnik,Sagnik,sayan,Sayan,"sayan,sourik","Sayan,Sourik",New,True,,8.0,3.0,5.0,3.0,19.0,1772282692419979,11,1772282692429575,2026-02-28 12:44:52.429580+00:00,2026-02-28 12:44:52.435018+00:00,2026-04-12 09:46:06.092864+00:00,False,False,0,,,,,"48,49,50,51",,[],0,,,
diff --git a/Payload/Screenshots/01. Dashboard.png b/Payload/Screenshots/01. Dashboard.png
new file mode 100644
index 00000000..6f9f80ed
Binary files /dev/null and b/Payload/Screenshots/01. Dashboard.png differ
diff --git a/Payload/Screenshots/02. The Oracle.png b/Payload/Screenshots/02. The Oracle.png
new file mode 100644
index 00000000..583afd2c
Binary files /dev/null and b/Payload/Screenshots/02. The Oracle.png differ
diff --git a/Payload/Screenshots/03-A. The Sentinel - Overview.png b/Payload/Screenshots/03-A. The Sentinel - Overview.png
new file mode 100644
index 00000000..2cdcd56b
Binary files /dev/null and b/Payload/Screenshots/03-A. The Sentinel - Overview.png differ
diff --git a/Payload/Screenshots/03-B. The Sentinel - Live Session.png b/Payload/Screenshots/03-B. The Sentinel - Live Session.png
new file mode 100644
index 00000000..74cc8db4
Binary files /dev/null and b/Payload/Screenshots/03-B. The Sentinel - Live Session.png differ
diff --git a/Payload/Screenshots/04. Inventory.png b/Payload/Screenshots/04. Inventory.png
new file mode 100644
index 00000000..14999ed5
Binary files /dev/null and b/Payload/Screenshots/04. Inventory.png differ
diff --git a/Payload/Screenshots/05. The Catalyst.png b/Payload/Screenshots/05. The Catalyst.png
new file mode 100644
index 00000000..2bcb34d3
Binary files /dev/null and b/Payload/Screenshots/05. The Catalyst.png differ
diff --git a/Payload/Screenshots/06. Settings.png b/Payload/Screenshots/06. Settings.png
new file mode 100644
index 00000000..68a861a2
Binary files /dev/null and b/Payload/Screenshots/06. Settings.png differ
diff --git a/app/.codex-readme-shots.mjs b/app/.codex-readme-shots.mjs
new file mode 100644
index 00000000..9c9114d6
--- /dev/null
+++ b/app/.codex-readme-shots.mjs
@@ -0,0 +1,35 @@
+import { chromium } from "@playwright/test";
+import fs from "fs";
+import path from "path";
+
+const outDir = path.resolve("../docs/images/readme");
+fs.mkdirSync(outDir, { recursive: true });
+
+const browser = await chromium.launch({ headless: true });
+const context = await browser.newContext({ viewport: { width: 1600, height: 1000 }, deviceScaleFactor: 1 });
+const page = await context.newPage();
+
+async function shot(name, url, wait = 2000) {
+ await page.goto(url, { waitUntil: "networkidle" });
+ await page.waitForTimeout(wait);
+ await page.screenshot({ path: path.join(outDir, name), fullPage: true });
+}
+
+await shot("login.png", "http://127.0.0.1:5173/login", 1500);
+
+await page.goto("http://127.0.0.1:5173/login", { waitUntil: "networkidle" });
+await page.waitForTimeout(1000);
+await page.locator('button').first().click();
+await page.waitForTimeout(3200);
+await page.goto("http://127.0.0.1:5173/dashboard", { waitUntil: "networkidle" });
+await page.waitForTimeout(2500);
+await page.screenshot({ path: path.join(outDir, "dashboard.png"), fullPage: true });
+
+for (const route of ["oracle", "sentinel", "inventory", "catalyst", "settings"]) {
+ await page.goto(`http://127.0.0.1:5173/${route}`, { waitUntil: "networkidle" });
+ await page.waitForTimeout(route === "sentinel" ? 3000 : 2200);
+ await page.screenshot({ path: path.join(outDir, `${route}.png`), fullPage: true });
+}
+
+await browser.close();
+console.log(outDir);
diff --git a/app/dist/index.html b/app/dist/index.html
index 3e662a8f..08eed3df 100644
--- a/app/dist/index.html
+++ b/app/dist/index.html
@@ -1,17 +1,13 @@
-
-
-
-
-
-
- Velocity WebOS
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+ Velocity WebOS
+
+
+
+
+
+
+
diff --git a/app/node_modules/.tmp/tsconfig.app.tsbuildinfo b/app/node_modules/.tmp/tsconfig.app.tsbuildinfo
index 16223af4..6e41acca 100644
--- a/app/node_modules/.tmp/tsconfig.app.tsbuildinfo
+++ b/app/node_modules/.tmp/tsconfig.app.tsbuildinfo
@@ -1,201 +1 @@
-<<<<<<< HEAD
-{
- "root": [
- "../../src/app.tsx",
- "../../src/main.tsx",
- "../../src/app/oracle/page.tsx",
- "../../src/components/layout/loginscreen.tsx",
- "../../src/components/layout/sidebar.tsx",
- "../../src/components/modules/catalyst.tsx",
- "../../src/components/modules/dashboard.tsx",
- "../../src/components/modules/groundtruthpicker.tsx",
- "../../src/components/modules/inventory.tsx",
- "../../src/components/modules/oracle.tsx",
- "../../src/components/modules/sentinel.tsx",
- "../../src/components/modules/settings.tsx",
- "../../src/components/oracle/leadinspector.tsx",
- "../../src/components/oracle/pipelineview.tsx",
- "../../src/components/oracle/mockleads.ts",
- "../../src/components/sentinel/journeyriver/inspectorpanel.tsx",
- "../../src/components/sentinel/journeyriver/riverpath.tsx",
- "../../src/components/sentinel/journeyriver/index.tsx",
- "../../src/components/ui/accordion.tsx",
- "../../src/components/ui/alert-dialog.tsx",
- "../../src/components/ui/alert.tsx",
- "../../src/components/ui/aspect-ratio.tsx",
- "../../src/components/ui/avatar.tsx",
- "../../src/components/ui/badge.tsx",
- "../../src/components/ui/breadcrumb.tsx",
- "../../src/components/ui/button-group.tsx",
- "../../src/components/ui/button.tsx",
- "../../src/components/ui/calendar.tsx",
- "../../src/components/ui/card.tsx",
- "../../src/components/ui/carousel.tsx",
- "../../src/components/ui/chart.tsx",
- "../../src/components/ui/checkbox.tsx",
- "../../src/components/ui/collapsible.tsx",
- "../../src/components/ui/command.tsx",
- "../../src/components/ui/context-menu.tsx",
- "../../src/components/ui/dialog.tsx",
- "../../src/components/ui/drawer.tsx",
- "../../src/components/ui/dropdown-menu.tsx",
- "../../src/components/ui/empty.tsx",
- "../../src/components/ui/field.tsx",
- "../../src/components/ui/form.tsx",
- "../../src/components/ui/hover-card.tsx",
- "../../src/components/ui/input-group.tsx",
- "../../src/components/ui/input-otp.tsx",
- "../../src/components/ui/input.tsx",
- "../../src/components/ui/item.tsx",
- "../../src/components/ui/kbd.tsx",
- "../../src/components/ui/label.tsx",
- "../../src/components/ui/menubar.tsx",
- "../../src/components/ui/navigation-menu.tsx",
- "../../src/components/ui/pagination.tsx",
- "../../src/components/ui/popover.tsx",
- "../../src/components/ui/progress.tsx",
- "../../src/components/ui/radio-group.tsx",
- "../../src/components/ui/resizable.tsx",
- "../../src/components/ui/scroll-area.tsx",
- "../../src/components/ui/select.tsx",
- "../../src/components/ui/separator.tsx",
- "../../src/components/ui/sheet.tsx",
- "../../src/components/ui/sidebar.tsx",
- "../../src/components/ui/skeleton.tsx",
- "../../src/components/ui/slider.tsx",
- "../../src/components/ui/sonner.tsx",
- "../../src/components/ui/spinner.tsx",
- "../../src/components/ui/switch.tsx",
- "../../src/components/ui/table.tsx",
- "../../src/components/ui/tabs.tsx",
- "../../src/components/ui/textarea.tsx",
- "../../src/components/ui/toggle-group.tsx",
- "../../src/components/ui/toggle.tsx",
- "../../src/components/ui/tooltip.tsx",
- "../../src/hooks/use-mobile.ts",
- "../../src/lib/oraclequeryclient.ts",
- "../../src/lib/utils.ts",
- "../../src/oracle/components/branchbar.tsx",
- "../../src/oracle/components/canvasviewport.tsx",
- "../../src/oracle/components/componentregistry.tsx",
- "../../src/oracle/components/promptrail.tsx",
- "../../src/oracle/components/rollbackconfirmmodal.tsx",
- "../../src/oracle/components/sharemodal.tsx",
- "../../src/oracle/components/renderers/activitystreamrenderer.tsx",
- "../../src/oracle/components/renderers/barchartrenderer.tsx",
- "../../src/oracle/components/renderers/errornoticerenderer.tsx",
- "../../src/oracle/components/renderers/geomaprenderer.tsx",
- "../../src/oracle/components/renderers/kpitilerenderer.tsx",
- "../../src/oracle/components/renderers/linechartrenderer.tsx",
- "../../src/oracle/components/renderers/pipelineboardrenderer.tsx",
- "../../src/oracle/components/renderers/rendererwrapper.tsx",
- "../../src/oracle/components/renderers/tablerenderer.tsx",
- "../../src/oracle/components/renderers/timelinerenderer.tsx",
- "../../src/oracle/components/review/mergereviewdrawer.tsx",
- "../../src/oracle/hooks/useoracleexecution.ts",
- "../../src/oracle/hooks/useoraclepage.ts",
- "../../src/oracle/lib/oracleapiclient.ts",
- "../../src/oracle/lib/oracledemodata.ts",
- "../../src/oracle/types/canvas.ts",
- "../../src/store/usecurrencystore.ts",
- "../../src/store/usemarketingstore.ts",
- "../../src/store/usestore.ts",
- "../../src/types/crm.ts",
- "../../src/types/index.ts",
- "../../src/utils/curvegenerator.ts"
- ],
- "version": "5.9.3"
-}
-=======
-{
- "root": [
- "../../src/app.tsx",
- "../../src/global.d.ts",
- "../../src/main.tsx",
- "../../src/app/oracle/page.tsx",
- "../../src/components/layout/loginscreen.tsx",
- "../../src/components/layout/notificationcenter.tsx",
- "../../src/components/layout/sidebar.tsx",
- "../../src/components/modules/catalyst.tsx",
- "../../src/components/modules/dashboard.tsx",
- "../../src/components/modules/inventory.tsx",
- "../../src/components/modules/oracle.tsx",
- "../../src/components/modules/sentinel.tsx",
- "../../src/components/modules/settings.tsx",
- "../../src/components/modules/sentinel/perceptionplayer.tsx",
- "../../src/components/modules/sentinel/sentinellivesession.tsx",
- "../../src/components/oracle/leadinspector.tsx",
- "../../src/components/oracle/pipelineview.tsx",
- "../../src/components/oracle/mockleads.ts",
- "../../src/components/sentinel/journeyriver/inspectorpanel.tsx",
- "../../src/components/sentinel/journeyriver/riverpath.tsx",
- "../../src/components/sentinel/journeyriver/index.tsx",
- "../../src/components/ui/accordion.tsx",
- "../../src/components/ui/alert-dialog.tsx",
- "../../src/components/ui/alert.tsx",
- "../../src/components/ui/aspect-ratio.tsx",
- "../../src/components/ui/avatar.tsx",
- "../../src/components/ui/badge.tsx",
- "../../src/components/ui/breadcrumb.tsx",
- "../../src/components/ui/button-group.tsx",
- "../../src/components/ui/button.tsx",
- "../../src/components/ui/calendar.tsx",
- "../../src/components/ui/card.tsx",
- "../../src/components/ui/carousel.tsx",
- "../../src/components/ui/chart.tsx",
- "../../src/components/ui/checkbox.tsx",
- "../../src/components/ui/collapsible.tsx",
- "../../src/components/ui/command.tsx",
- "../../src/components/ui/context-menu.tsx",
- "../../src/components/ui/dialog.tsx",
- "../../src/components/ui/drawer.tsx",
- "../../src/components/ui/dropdown-menu.tsx",
- "../../src/components/ui/empty.tsx",
- "../../src/components/ui/field.tsx",
- "../../src/components/ui/form.tsx",
- "../../src/components/ui/hover-card.tsx",
- "../../src/components/ui/input-group.tsx",
- "../../src/components/ui/input-otp.tsx",
- "../../src/components/ui/input.tsx",
- "../../src/components/ui/item.tsx",
- "../../src/components/ui/kbd.tsx",
- "../../src/components/ui/label.tsx",
- "../../src/components/ui/menubar.tsx",
- "../../src/components/ui/navigation-menu.tsx",
- "../../src/components/ui/pagination.tsx",
- "../../src/components/ui/popover.tsx",
- "../../src/components/ui/progress.tsx",
- "../../src/components/ui/radio-group.tsx",
- "../../src/components/ui/resizable.tsx",
- "../../src/components/ui/scroll-area.tsx",
- "../../src/components/ui/select.tsx",
- "../../src/components/ui/separator.tsx",
- "../../src/components/ui/sheet.tsx",
- "../../src/components/ui/sidebar.tsx",
- "../../src/components/ui/skeleton.tsx",
- "../../src/components/ui/slider.tsx",
- "../../src/components/ui/sonner.tsx",
- "../../src/components/ui/spinner.tsx",
- "../../src/components/ui/switch.tsx",
- "../../src/components/ui/table.tsx",
- "../../src/components/ui/tabs.tsx",
- "../../src/components/ui/textarea.tsx",
- "../../src/components/ui/toggle-group.tsx",
- "../../src/components/ui/toggle.tsx",
- "../../src/components/ui/tooltip.tsx",
- "../../src/hooks/use-mobile.ts",
- "../../src/hooks/usemediapipefacelandmarker.ts",
- "../../src/hooks/usevelocitysocket.ts",
- "../../src/lib/api.ts",
- "../../src/lib/oraclequeryclient.ts",
- "../../src/lib/utils.ts",
- "../../src/store/usemarketingstore.ts",
- "../../src/store/usestore.ts",
- "../../src/types/crm.ts",
- "../../src/types/index.ts",
- "../../src/utils/curvegenerator.ts",
- "../../src/utils/landmarkpacketencoder.ts"
- ],
- "version": "5.9.3"
-}
->>>>>>> feat/#15
+{"root":["../../src/app.tsx","../../src/global.d.ts","../../src/main.tsx","../../src/app/oracle/page.tsx","../../src/components/layout/loginscreen.tsx","../../src/components/layout/notificationcenter.tsx","../../src/components/layout/sidebar.tsx","../../src/components/modules/catalyst.tsx","../../src/components/modules/catalystmarketingtab.tsx","../../src/components/modules/dashboard.tsx","../../src/components/modules/groundtruthpicker.tsx","../../src/components/modules/inventory.tsx","../../src/components/modules/oracle.tsx","../../src/components/modules/sentinel.tsx","../../src/components/modules/settings.tsx","../../src/components/modules/sentinel/perceptionplayer.tsx","../../src/components/modules/sentinel/sentinellivesession.tsx","../../src/components/oracle/leadinspector.tsx","../../src/components/oracle/pipelineview.tsx","../../src/components/oracle/mockleads.ts","../../src/components/sentinel/journeyriver/inspectorpanel.tsx","../../src/components/sentinel/journeyriver/riverpath.tsx","../../src/components/sentinel/journeyriver/index.tsx","../../src/components/ui/accordion.tsx","../../src/components/ui/alert-dialog.tsx","../../src/components/ui/alert.tsx","../../src/components/ui/aspect-ratio.tsx","../../src/components/ui/avatar.tsx","../../src/components/ui/badge.tsx","../../src/components/ui/breadcrumb.tsx","../../src/components/ui/button-group.tsx","../../src/components/ui/button.tsx","../../src/components/ui/calendar.tsx","../../src/components/ui/card.tsx","../../src/components/ui/carousel.tsx","../../src/components/ui/chart.tsx","../../src/components/ui/checkbox.tsx","../../src/components/ui/collapsible.tsx","../../src/components/ui/command.tsx","../../src/components/ui/context-menu.tsx","../../src/components/ui/dialog.tsx","../../src/components/ui/drawer.tsx","../../src/components/ui/dropdown-menu.tsx","../../src/components/ui/empty.tsx","../../src/components/ui/field.tsx","../../src/components/ui/form.tsx","../../src/components/ui/hover-card.tsx","../../src/components/ui/input-group.tsx","../../src/components/ui/input-otp.tsx","../../src/components/ui/input.tsx","../../src/components/ui/item.tsx","../../src/components/ui/kbd.tsx","../../src/components/ui/label.tsx","../../src/components/ui/menubar.tsx","../../src/components/ui/navigation-menu.tsx","../../src/components/ui/pagination.tsx","../../src/components/ui/popover.tsx","../../src/components/ui/progress.tsx","../../src/components/ui/radio-group.tsx","../../src/components/ui/resizable.tsx","../../src/components/ui/scroll-area.tsx","../../src/components/ui/select.tsx","../../src/components/ui/separator.tsx","../../src/components/ui/sheet.tsx","../../src/components/ui/sidebar.tsx","../../src/components/ui/skeleton.tsx","../../src/components/ui/slider.tsx","../../src/components/ui/sonner.tsx","../../src/components/ui/spinner.tsx","../../src/components/ui/switch.tsx","../../src/components/ui/table.tsx","../../src/components/ui/tabs.tsx","../../src/components/ui/textarea.tsx","../../src/components/ui/toggle-group.tsx","../../src/components/ui/toggle.tsx","../../src/components/ui/tooltip.tsx","../../src/hooks/use-mobile.ts","../../src/hooks/usecrmbootstrap.ts","../../src/hooks/usemediapipefacelandmarker.ts","../../src/hooks/usevelocitysocket.ts","../../src/lib/api.ts","../../src/lib/crmmappers.ts","../../src/lib/oraclequeryclient.ts","../../src/lib/utils.ts","../../src/oracle/components/branchbar.tsx","../../src/oracle/components/canvasviewport.tsx","../../src/oracle/components/componentregistry.tsx","../../src/oracle/components/promptrail.tsx","../../src/oracle/components/rollbackconfirmmodal.tsx","../../src/oracle/components/sharemodal.tsx","../../src/oracle/components/renderers/activitystreamrenderer.tsx","../../src/oracle/components/renderers/barchartrenderer.tsx","../../src/oracle/components/renderers/errornoticerenderer.tsx","../../src/oracle/components/renderers/geomaprenderer.tsx","../../src/oracle/components/renderers/kpitilerenderer.tsx","../../src/oracle/components/renderers/linechartrenderer.tsx","../../src/oracle/components/renderers/pipelineboardrenderer.tsx","../../src/oracle/components/renderers/rendererwrapper.tsx","../../src/oracle/components/renderers/tablerenderer.tsx","../../src/oracle/components/renderers/timelinerenderer.tsx","../../src/oracle/components/review/mergereviewdrawer.tsx","../../src/oracle/hooks/useoracleexecution.ts","../../src/oracle/hooks/useoraclepage.ts","../../src/oracle/lib/oracleapiclient.ts","../../src/oracle/lib/oracledemodata.ts","../../src/oracle/types/canvas.ts","../../src/store/usecurrencystore.ts","../../src/store/usemarketingstore.ts","../../src/store/usestore.ts","../../src/types/crm.ts","../../src/types/index.ts","../../src/utils/curvegenerator.ts","../../src/utils/landmarkpacketencoder.ts"],"version":"5.9.3"}
\ No newline at end of file
diff --git a/app/node_modules/.vite/deps/@radix-ui_react-avatar.js b/app/node_modules/.vite/deps/@radix-ui_react-avatar.js
index 44bf9534..d336df25 100644
--- a/app/node_modules/.vite/deps/@radix-ui_react-avatar.js
+++ b/app/node_modules/.vite/deps/@radix-ui_react-avatar.js
@@ -1,26 +1,14 @@
"use client";
import {
-<<<<<<< HEAD
- createSlot
-} from "./chunk-YWBEB5PG.js";
-import {
- require_shim
-} from "./chunk-TXHHHGR3.js";
-import {
-=======
->>>>>>> feat/#15
useCallbackRef,
useLayoutEffect2
} from "./chunk-GRXJTWBV.js";
import {
-<<<<<<< HEAD
-=======
- require_shim
-} from "./chunk-642Z5WD3.js";
-import {
->>>>>>> feat/#15
require_react_dom
} from "./chunk-YLZ34CCM.js";
+import {
+ require_shim
+} from "./chunk-642Z5WD3.js";
import {
createSlot
} from "./chunk-5HUACAZ7.js";
diff --git a/app/node_modules/.vite/deps/@react-three_drei.js b/app/node_modules/.vite/deps/@react-three_drei.js
index 04ddb228..17b014da 100644
--- a/app/node_modules/.vite/deps/@react-three_drei.js
+++ b/app/node_modules/.vite/deps/@react-three_drei.js
@@ -1,21 +1,18 @@
-import {
-<<<<<<< HEAD
-=======
- create
-} from "./chunk-QJTQF54Q.js";
-import {
->>>>>>> feat/#15
- subscribeWithSelector
-} from "./chunk-XGWIEMTH.js";
import {
_extends
} from "./chunk-H4GSM2WL.js";
import {
- create
-} from "./chunk-7GZ4CI6Q.js";
+ subscribeWithSelector
+} from "./chunk-XGWIEMTH.js";
import {
Events
} from "./chunk-OAEA5FZL.js";
+import {
+ require_client
+} from "./chunk-AFNBKP7P.js";
+import {
+ create
+} from "./chunk-QJTQF54Q.js";
import {
addAfterEffect,
addEffect,
@@ -31,13 +28,7 @@ import {
useInstanceHandle,
useLoader,
useThree
-<<<<<<< HEAD
-} from "./chunk-5ESDTKMP.js";
-import "./chunk-NJ4V5H3P.js";
-=======
-} from "./chunk-CSHY5MMV.js";
-import "./chunk-LTNRPUSL.js";
->>>>>>> feat/#15
+} from "./chunk-JRJA23OI.js";
import {
AddEquation,
AdditiveBlending,
@@ -232,24 +223,11 @@ import {
WireframeGeometry,
ZeroFactor
} from "./chunk-INS7YHTD.js";
-import {
- require_client
-<<<<<<< HEAD
-} from "./chunk-6MXH2QM6.js";
-import "./chunk-GUQHL3N7.js";
-import {
- _extends
-} from "./chunk-EQCCHGRT.js";
-import "./chunk-TXHHHGR3.js";
-import "./chunk-YF4B4G2L.js";
-import "./chunk-2YVA4HRZ.js";
-=======
-} from "./chunk-AFNBKP7P.js";
import "./chunk-QURGMCZB.js";
-import "./chunk-642Z5WD3.js";
+import "./chunk-LTNRPUSL.js";
import "./chunk-YLZ34CCM.js";
+import "./chunk-642Z5WD3.js";
import "./chunk-USXRE7Q2.js";
->>>>>>> feat/#15
import {
require_react
} from "./chunk-ZNKPWGXJ.js";
@@ -261,10 +239,10 @@ import {
// node_modules/stats.js/build/stats.min.js
var require_stats_min = __commonJS({
"node_modules/stats.js/build/stats.min.js"(exports2, module2) {
- (function (f2, e2) {
+ (function(f2, e2) {
"object" === typeof exports2 && "undefined" !== typeof module2 ? module2.exports = e2() : "function" === typeof define && define.amd ? define(e2) : f2.Stats = e2();
- })(exports2, function () {
- var f2 = function () {
+ })(exports2, function() {
+ var f2 = function() {
function e2(a7) {
c2.appendChild(a7.dom);
return a7;
@@ -275,31 +253,29 @@ var require_stats_min = __commonJS({
}
var l2 = 0, c2 = document.createElement("div");
c2.style.cssText = "position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";
- c2.addEventListener("click", function (a7) {
+ c2.addEventListener("click", function(a7) {
a7.preventDefault();
u(++l2 % c2.children.length);
}, false);
var k = (performance || Date).now(), g = k, a6 = 0, r2 = e2(new f2.Panel("FPS", "#0ff", "#002")), h = e2(new f2.Panel("MS", "#0f0", "#020"));
if (self.performance && self.performance.memory) var t3 = e2(new f2.Panel("MB", "#f08", "#201"));
u(0);
- return {
- REVISION: 16, dom: c2, addPanel: e2, showPanel: u, begin: function () {
- k = (performance || Date).now();
- }, end: function () {
- a6++;
- var c5 = (performance || Date).now();
- h.update(c5 - k, 200);
- if (c5 > g + 1e3 && (r2.update(1e3 * a6 / (c5 - g), 100), g = c5, a6 = 0, t3)) {
- var d2 = performance.memory;
- t3.update(d2.usedJSHeapSize / 1048576, d2.jsHeapSizeLimit / 1048576);
- }
- return c5;
- }, update: function () {
- k = this.end();
- }, domElement: c2, setMode: u
- };
+ return { REVISION: 16, dom: c2, addPanel: e2, showPanel: u, begin: function() {
+ k = (performance || Date).now();
+ }, end: function() {
+ a6++;
+ var c5 = (performance || Date).now();
+ h.update(c5 - k, 200);
+ if (c5 > g + 1e3 && (r2.update(1e3 * a6 / (c5 - g), 100), g = c5, a6 = 0, t3)) {
+ var d2 = performance.memory;
+ t3.update(d2.usedJSHeapSize / 1048576, d2.jsHeapSizeLimit / 1048576);
+ }
+ return c5;
+ }, update: function() {
+ k = this.end();
+ }, domElement: c2, setMode: u };
};
- f2.Panel = function (e2, f3, l2) {
+ f2.Panel = function(e2, f3, l2) {
var c2 = Infinity, k = 0, g = Math.round, a6 = g(window.devicePixelRatio || 1), r2 = 80 * a6, h = 48 * a6, t3 = 3 * a6, v5 = 2 * a6, d2 = 3 * a6, m = 15 * a6, n2 = 74 * a6, p2 = 30 * a6, q = document.createElement("canvas");
q.width = r2;
q.height = h;
@@ -315,22 +291,20 @@ var require_stats_min = __commonJS({
b5.fillStyle = l2;
b5.globalAlpha = 0.9;
b5.fillRect(d2, m, n2, p2);
- return {
- dom: q, update: function (h2, w) {
- c2 = Math.min(c2, h2);
- k = Math.max(k, h2);
- b5.fillStyle = l2;
- b5.globalAlpha = 1;
- b5.fillRect(0, 0, r2, m);
- b5.fillStyle = f3;
- b5.fillText(g(h2) + " " + e2 + " (" + g(c2) + "-" + g(k) + ")", t3, v5);
- b5.drawImage(q, d2 + a6, m, n2 - a6, p2, d2, m, n2 - a6, p2);
- b5.fillRect(d2 + n2 - a6, m, a6, p2);
- b5.fillStyle = l2;
- b5.globalAlpha = 0.9;
- b5.fillRect(d2 + n2 - a6, m, a6, g((1 - h2 / w) * p2));
- }
- };
+ return { dom: q, update: function(h2, w) {
+ c2 = Math.min(c2, h2);
+ k = Math.max(k, h2);
+ b5.fillStyle = l2;
+ b5.globalAlpha = 1;
+ b5.fillRect(0, 0, r2, m);
+ b5.fillStyle = f3;
+ b5.fillText(g(h2) + " " + e2 + " (" + g(c2) + "-" + g(k) + ")", t3, v5);
+ b5.drawImage(q, d2 + a6, m, n2 - a6, p2, d2, m, n2 - a6, p2);
+ b5.fillRect(d2 + n2 - a6, m, a6, p2);
+ b5.fillStyle = l2;
+ b5.globalAlpha = 0.9;
+ b5.fillRect(d2 + n2 - a6, m, a6, g((1 - h2 / w) * p2));
+ } };
};
return f2;
});
@@ -1025,7 +999,7 @@ function ownKeys(e2, r2) {
var t3 = Object.keys(e2);
if (Object.getOwnPropertySymbols) {
var o2 = Object.getOwnPropertySymbols(e2);
- r2 && (o2 = o2.filter(function (r3) {
+ r2 && (o2 = o2.filter(function(r3) {
return Object.getOwnPropertyDescriptor(e2, r3).enumerable;
})), t3.push.apply(t3, o2);
}
@@ -1034,9 +1008,9 @@ function ownKeys(e2, r2) {
function _objectSpread2(e2) {
for (var r2 = 1; r2 < arguments.length; r2++) {
var t3 = null != arguments[r2] ? arguments[r2] : {};
- r2 % 2 ? ownKeys(Object(t3), true).forEach(function (r3) {
+ r2 % 2 ? ownKeys(Object(t3), true).forEach(function(r3) {
_defineProperty(e2, r3, t3[r3]);
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t3)) : ownKeys(Object(t3)).forEach(function (r3) {
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t3)) : ownKeys(Object(t3)).forEach(function(r3) {
Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t3, r3));
});
}
@@ -1207,7 +1181,7 @@ function noop() {
function chain(...fns) {
if (fns.length === 0) return noop;
if (fns.length === 1) return fns[0];
- return function () {
+ return function() {
let result;
for (const fn of fns) {
result = fn.apply(this, arguments) || result;
@@ -2951,7 +2925,7 @@ function ownKeys2(object, enumerableOnly) {
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
- symbols = symbols.filter(function (sym) {
+ symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
@@ -2963,13 +2937,13 @@ function _objectSpread22(target2) {
for (var i4 = 1; i4 < arguments.length; i4++) {
var source = arguments[i4] != null ? arguments[i4] : {};
if (i4 % 2) {
- ownKeys2(Object(source), true).forEach(function (key) {
+ ownKeys2(Object(source), true).forEach(function(key) {
_defineProperty2(target2, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target2, Object.getOwnPropertyDescriptors(source));
} else {
- ownKeys2(Object(source)).forEach(function (key) {
+ ownKeys2(Object(source)).forEach(function(key) {
Object.defineProperty(target2, key, Object.getOwnPropertyDescriptor(source, key));
});
}
@@ -2990,7 +2964,7 @@ function _isNativeReflectConstruct() {
if (Reflect.construct.sham) return false;
if (typeof Proxy === "function") return true;
try {
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
return true;
} catch (e2) {
@@ -3202,7 +3176,7 @@ function isPointInCircumcircle(point, triangle4) {
var mv1 = new Vector2();
var mv2 = new Vector2();
function doThreePointsMakeARight(points) {
- var _points$map = points.map(function (p4) {
+ var _points$map = points.map(function(p4) {
if (Array.isArray(p4)) {
return _construct(Vector2, _toConsumableArray(p4));
}
@@ -3531,7 +3505,7 @@ function swizzle(buffer2) {
return buffer2;
}
function addAxis(buffer2, size2) {
- var valueGenerator = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function () {
+ var valueGenerator = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : function() {
return Math.random();
};
var newSize = size2 + 1;
@@ -3616,7 +3590,7 @@ function expand(b5, stride, opts) {
return b5;
}
function center(myBuffer, stride) {
- return reduce(myBuffer, stride, function (acc, point) {
+ return reduce(myBuffer, stride, function(acc, point) {
if (stride === 3) {
acc = add2(acc, point);
} else {
@@ -3628,10 +3602,10 @@ function center(myBuffer, stride) {
function sort(myBuffer, stride, callback) {
var indices = Int16Array.from({
length: myBuffer.length / stride
- }, function (_, i4) {
+ }, function(_, i4) {
return i4;
});
- indices.sort(function (a6, b5) {
+ indices.sort(function(a6, b5) {
var pa = myBuffer.slice(a6 * stride, a6 * stride + stride);
var pb = myBuffer.slice(b5 * stride, b5 * stride + stride);
return callback(pa, pb);
@@ -3682,10 +3656,10 @@ function _createClass(Constructor, protoProps, staticProps) {
var Grad = function Grad2(x, y, z) {
var _this = this;
_classCallCheck(this, Grad2);
- _defineProperty2(this, "dot2", function (x2, y2) {
+ _defineProperty2(this, "dot2", function(x2, y2) {
return _this.x * x2 + _this.y * y2;
});
- _defineProperty2(this, "dot3", function (x2, y2, z2) {
+ _defineProperty2(this, "dot3", function(x2, y2, z2) {
return _this.x * x2 + _this.y * y2 + _this.z * z2;
});
this.x = x;
@@ -3916,7 +3890,7 @@ var noise = Object.freeze({
perlin3
});
var TAU = Math.PI * 2;
-var FlashGen = (function () {
+var FlashGen = (function() {
function FlashGen2(props) {
_classCallCheck(this, FlashGen2);
_defineProperty2(this, "nextBurstTime", 0);
@@ -4002,7 +3976,7 @@ function normalizeSeed(seed3) {
}
function lcgRandom(seed3) {
var state = normalizeSeed(seed3);
- return function () {
+ return function() {
var result = state * 48271 % 2147483647;
state = result;
return result / 2147483647;
@@ -4012,7 +3986,7 @@ var Generator = function Generator2(_seed) {
var _this = this;
_classCallCheck(this, Generator2);
_defineProperty2(this, "seed", 0);
- _defineProperty2(this, "init", function (seed3) {
+ _defineProperty2(this, "init", function(seed3) {
_this.seed = seed3;
_this.value = lcgRandom(seed3);
});
@@ -4488,7 +4462,7 @@ function _createSuper(Derived) {
return _possibleConstructorReturn(this, result);
};
}
-var RoundedPlaneGeometry = (function (_THREE$BufferGeometry) {
+var RoundedPlaneGeometry = (function(_THREE$BufferGeometry) {
_inherits(RoundedPlaneGeometry2, _THREE$BufferGeometry);
var _super = _createSuper(RoundedPlaneGeometry2);
function RoundedPlaneGeometry2() {
@@ -5664,37 +5638,37 @@ var GLTFExporter = (() => {
class GLTFExporter2 {
constructor() {
this.pluginCallbacks = [];
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFLightExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsUnlitExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsTransmissionExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsVolumeExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsIorExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsSpecularExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsClearcoatExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsIridescenceExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsSheenExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsAnisotropyExtension(writer);
});
- this.register(function (writer) {
+ this.register(function(writer) {
return new GLTFMaterialsEmissiveStrengthExtension(writer);
});
}
@@ -5728,13 +5702,13 @@ var GLTFExporter = (() => {
}
parseAsync(input, options) {
const scope = this;
- return new Promise(function (resolve, reject) {
+ return new Promise(function(resolve, reject) {
scope.parse(input, resolve, reject, options);
});
}
}
__publicField2(GLTFExporter2, "Utils", {
- insertKeyframe: function (track, time) {
+ insertKeyframe: function(track, time) {
const tolerance = 1e-3;
const valueSize = track.getValueSize();
const times = new track.TimeBufferType(track.times.length + 1);
@@ -5784,7 +5758,7 @@ var GLTFExporter = (() => {
track.values = values;
return index2;
},
- mergeMorphTargetTracks: function (clip, root) {
+ mergeMorphTargetTracks: function(clip, root) {
const tracks = [];
const mergedTracks = {};
const sourceTracks = clip.tracks;
@@ -5890,7 +5864,7 @@ var GLB_CHUNK_PREFIX_BYTES = 8;
var GLB_CHUNK_TYPE_JSON = 1313821514;
var GLB_CHUNK_TYPE_BIN = 5130562;
function equalArray(array1, array2) {
- return array1.length === array2.length && array1.every(function (element, index2) {
+ return array1.length === array2.length && array1.every(function(element, index2) {
return element === array2[index2];
});
}
@@ -6552,7 +6526,7 @@ var GLTFWriter = class {
};
if (map2.name)
textureDef.name = map2.name;
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
ext.writeTexture && ext.writeTexture(map2, textureDef);
});
const index2 = json.textures.push(textureDef) - 1;
@@ -6657,7 +6631,7 @@ var GLTFWriter = class {
if (material.name !== "")
materialDef.name = material.name;
this.serializeUserData(material, materialDef);
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
ext.writeMaterial && ext.writeMaterial(material, materialDef);
});
const index2 = json.materials.push(materialDef) - 1;
@@ -6842,7 +6816,7 @@ var GLTFWriter = class {
meshDef.primitives = primitives;
if (!json.meshes)
json.meshes = [];
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
ext.writeMesh && ext.writeMesh(mesh, meshDef);
});
const index2 = json.meshes.push(meshDef) - 1;
@@ -7079,7 +7053,7 @@ var GLTFWriter = class {
if (children.length > 0)
nodeDef.children = children;
}
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
ext.writeNode && ext.writeNode(object, nodeDef);
});
const nodeIndex = json.nodes.push(nodeDef) - 1;
@@ -7132,7 +7106,7 @@ var GLTFWriter = class {
processInput(input) {
const options = this.options;
input = input instanceof Array ? input : [input];
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
ext.beforeParse && ext.beforeParse(input);
});
const objectsWithoutScene = [];
@@ -7151,7 +7125,7 @@ var GLTFWriter = class {
for (let i4 = 0; i4 < options.animations.length; ++i4) {
this.processAnimation(options.animations[i4], input[0]);
}
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
ext.afterParse && ext.afterParse(input);
});
}
@@ -7491,12 +7465,12 @@ var GLTFMaterialsEmissiveStrengthExtension = class {
// node_modules/three-stdlib/node_modules/fflate/esm/browser.js
var ch2 = {};
-var wk = (function (c2, id, msg, transfer, cb2) {
+var wk = (function(c2, id, msg, transfer, cb2) {
var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([c2], { type: "text/javascript" }))));
- w.onerror = function (e2) {
+ w.onerror = function(e2) {
return cb2(e2.error, null);
};
- w.onmessage = function (e2) {
+ w.onmessage = function(e2) {
return cb2(null, e2.data);
};
w.postMessage(msg, transfer);
@@ -7577,7 +7551,7 @@ var fdeb = new u8([
0
]);
var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
-var freb = function (eb, start) {
+var freb = function(eb, start) {
var b5 = new u16(31);
for (var i4 = 0; i4 < 31; ++i4) {
b5[i4] = start += 1 << eb[i4 - 1];
@@ -7606,7 +7580,7 @@ for (i4 = 0; i4 < 32768; ++i4) {
}
var x;
var i4;
-var hMap = (function (cd, mb, r2) {
+var hMap = (function(cd, mb, r2) {
var s2 = cd.length;
var i4 = 0;
var l2 = new u16(mb);
@@ -7661,7 +7635,7 @@ var flm = hMap(flt, 9, 0);
var flrm = hMap(flt, 9, 1);
var fdm = hMap(fdt, 5, 0);
var fdrm = hMap(fdt, 5, 1);
-var max = function (a6) {
+var max = function(a6) {
var m = a6[0];
for (var i4 = 1; i4 < a6.length; ++i4) {
if (a6[i4] > m)
@@ -7669,18 +7643,18 @@ var max = function (a6) {
}
return m;
};
-var bits = function (d2, p2, m) {
+var bits = function(d2, p2, m) {
var o2 = p2 / 8 | 0;
return (d2[o2] | d2[o2 + 1] << 8) >> (p2 & 7) & m;
};
-var bits16 = function (d2, p2) {
+var bits16 = function(d2, p2) {
var o2 = p2 / 8 | 0;
return (d2[o2] | d2[o2 + 1] << 8 | d2[o2 + 2] << 16) >> (p2 & 7);
};
-var shft = function (p2) {
+var shft = function(p2) {
return (p2 / 8 | 0) + (p2 & 7 && 1);
};
-var slc = function (v5, s2, e2) {
+var slc = function(v5, s2, e2) {
if (s2 == null || s2 < 0)
s2 = 0;
if (e2 == null || e2 > v5.length)
@@ -7689,7 +7663,7 @@ var slc = function (v5, s2, e2) {
n2.set(v5.subarray(s2, e2));
return n2;
};
-var inflt = function (dat, buf, st) {
+var inflt = function(dat, buf, st) {
var sl = dat.length;
if (!sl || st && !st.l && sl < 5)
return buf || new u8(0);
@@ -7699,7 +7673,7 @@ var inflt = function (dat, buf, st) {
st = {};
if (!buf)
buf = new u8(sl * 3);
- var cbuf = function (l3) {
+ var cbuf = function(l3) {
var bl = buf.length;
if (l3 > bl) {
var nbuf = new u8(Math.max(bl * 2, l3));
@@ -7740,7 +7714,7 @@ var inflt = function (dat, buf, st) {
pos += hcLen * 3;
var clb = max(clt), clbmsk = (1 << clb) - 1;
var clm = hMap(clt, clb, 1);
- for (var i4 = 0; i4 < tl;) {
+ for (var i4 = 0; i4 < tl; ) {
var r2 = clm[bits(dat, pos, clbmsk)];
pos += r2 & 15;
var s2 = r2 >>> 4;
@@ -7829,20 +7803,20 @@ var inflt = function (dat, buf, st) {
} while (!final);
return bt == buf.length ? buf : slc(buf, 0, bt);
};
-var wbits = function (d2, p2, v5) {
+var wbits = function(d2, p2, v5) {
v5 <<= p2 & 7;
var o2 = p2 / 8 | 0;
d2[o2] |= v5;
d2[o2 + 1] |= v5 >>> 8;
};
-var wbits16 = function (d2, p2, v5) {
+var wbits16 = function(d2, p2, v5) {
v5 <<= p2 & 7;
var o2 = p2 / 8 | 0;
d2[o2] |= v5;
d2[o2 + 1] |= v5 >>> 8;
d2[o2 + 2] |= v5 >>> 16;
};
-var hTree = function (d2, mb) {
+var hTree = function(d2, mb) {
var t3 = [];
for (var i4 = 0; i4 < d2.length; ++i4) {
if (d2[i4])
@@ -7857,7 +7831,7 @@ var hTree = function (d2, mb) {
v5[t3[0].s] = 1;
return [v5, 1];
}
- t3.sort(function (a6, b5) {
+ t3.sort(function(a6, b5) {
return a6.f - b5.f;
});
t3.push({ s: -1, f: 25001 });
@@ -7878,7 +7852,7 @@ var hTree = function (d2, mb) {
if (mbt > mb) {
var i4 = 0, dt = 0;
var lft = mbt - mb, cst = 1 << lft;
- t22.sort(function (a6, b5) {
+ t22.sort(function(a6, b5) {
return tr[b5.s] - tr[a6.s] || a6.f - b5.f;
});
for (; i4 < s2; ++i4) {
@@ -7908,16 +7882,16 @@ var hTree = function (d2, mb) {
}
return [new u8(tr), mbt];
};
-var ln = function (n2, l2, d2) {
+var ln = function(n2, l2, d2) {
return n2.s == -1 ? Math.max(ln(n2.l, l2, d2 + 1), ln(n2.r, l2, d2 + 1)) : l2[n2.s] = d2;
};
-var lc = function (c2) {
+var lc = function(c2) {
var s2 = c2.length;
while (s2 && !c2[--s2])
;
var cl = new u16(++s2);
var cli = 0, cln = c2[0], cls = 1;
- var w = function (v5) {
+ var w = function(v5) {
cl[cli++] = v5;
};
for (var i4 = 1; i4 <= s2; ++i4) {
@@ -7946,13 +7920,13 @@ var lc = function (c2) {
}
return [cl.subarray(0, cli), s2];
};
-var clen = function (cf, cl) {
+var clen = function(cf, cl) {
var l2 = 0;
for (var i4 = 0; i4 < cl.length; ++i4)
l2 += cf[i4] * cl[i4];
return l2;
};
-var wfblk = function (out7, pos, dat) {
+var wfblk = function(out7, pos, dat) {
var s2 = dat.length;
var o2 = shft(pos + 2);
out7[o2] = s2 & 255;
@@ -7963,7 +7937,7 @@ var wfblk = function (out7, pos, dat) {
out7[o2 + i4 + 4] = dat[i4];
return (o2 + 4 + s2) * 8;
};
-var wblk = function (dat, out7, final, syms, lf, df, eb, li, bs, bl, p2) {
+var wblk = function(dat, out7, final, syms, lf, df, eb, li, bs, bl, p2) {
wbits(out7, p2++, final);
++lf[256];
var _a3 = hTree(lf, 15), dlt = _a3[0], mlb = _a3[1];
@@ -8028,7 +8002,7 @@ var wblk = function (dat, out7, final, syms, lf, df, eb, li, bs, bl, p2) {
};
var deo = new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
var et = new u8(0);
-var dflt = function (dat, lvl, plvl, pre, post, lst) {
+var dflt = function(dat, lvl, plvl, pre, post, lst) {
var s2 = dat.length;
var o2 = new u8(pre + s2 + 5 * (1 + Math.ceil(s2 / 7e3)) + post);
var w = o2.subarray(pre, o2.length - post);
@@ -8049,7 +8023,7 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
var msk_1 = (1 << plvl) - 1;
var prev = new u16(32768), head = new u16(msk_1 + 1);
var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
- var hsh = function (i5) {
+ var hsh = function(i5) {
return (dat[i5] ^ dat[i5 + 1] << bs1_1 ^ dat[i5 + 2] << bs2_1) & msk_1;
};
var syms = new u32(25e3);
@@ -8119,7 +8093,7 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
}
return slc(o2, 0, pre + shft(pos) + post);
};
-var crct = (function () {
+var crct = (function() {
var t3 = new Int32Array(256);
for (var i4 = 0; i4 < 256; ++i4) {
var c2 = i4, k = 9;
@@ -8129,27 +8103,27 @@ var crct = (function () {
}
return t3;
})();
-var crc = function () {
+var crc = function() {
var c2 = -1;
return {
- p: function (d2) {
+ p: function(d2) {
var cr = c2;
for (var i4 = 0; i4 < d2.length; ++i4)
cr = crct[cr & 255 ^ d2[i4]] ^ cr >>> 8;
c2 = cr;
},
- d: function () {
+ d: function() {
return ~c2;
}
};
};
-var adler = function () {
+var adler = function() {
var a6 = 1, b5 = 0;
return {
- p: function (d2) {
+ p: function(d2) {
var n2 = a6, m = b5;
var l2 = d2.length;
- for (var i4 = 0; i4 != l2;) {
+ for (var i4 = 0; i4 != l2; ) {
var e2 = Math.min(i4 + 2655, l2);
for (; i4 < e2; ++i4)
m += n2 += d2[i4];
@@ -8157,16 +8131,16 @@ var adler = function () {
}
a6 = n2, b5 = m;
},
- d: function () {
+ d: function() {
a6 %= 65521, b5 %= 65521;
return (a6 & 255) << 24 | a6 >>> 8 << 16 | (b5 & 255) << 8 | b5 >>> 8;
}
};
};
-var dopt = function (dat, opt, pre, post, st) {
+var dopt = function(dat, opt, pre, post, st) {
return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 12 + opt.mem, pre, post, !st);
};
-var mrg = function (a6, b5) {
+var mrg = function(a6, b5) {
var o2 = {};
for (var k in a6)
o2[k] = a6[k];
@@ -8174,7 +8148,7 @@ var mrg = function (a6, b5) {
o2[k] = b5[k];
return o2;
};
-var wcln = function (fn, fnStr, td2) {
+var wcln = function(fn, fnStr, td2) {
var dt = fn();
var st = fn.toString();
var ks = st.slice(st.indexOf("[") + 1, st.lastIndexOf("]")).replace(/ /g, "").split(",");
@@ -8200,7 +8174,7 @@ var wcln = function (fn, fnStr, td2) {
return [fnStr, td2];
};
var ch = [];
-var cbfs = function (v5) {
+var cbfs = function(v5) {
var tl = [];
for (var k in v5) {
if (v5[k] instanceof u8 || v5[k] instanceof u16 || v5[k] instanceof u32)
@@ -8208,7 +8182,7 @@ var cbfs = function (v5) {
}
return tl;
};
-var wrkr = function (fns, init3, id, cb2) {
+var wrkr = function(fns, init3, id, cb2) {
var _a3;
if (!ch[id]) {
var fnStr = "", td_1 = {}, m = fns.length - 1;
@@ -8219,35 +8193,35 @@ var wrkr = function (fns, init3, id, cb2) {
var td2 = mrg({}, ch[id][1]);
return wk(ch[id][0] + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + init3.toString() + "}", id, td2, cbfs(td2), cb2);
};
-var bInflt = function () {
+var bInflt = function() {
return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8];
};
-var bDflt = function () {
+var bDflt = function() {
return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf];
};
-var guze = function () {
+var guze = function() {
return [gzs, gzl];
};
-var zule = function () {
+var zule = function() {
return [zlv];
};
-var pbf = function (msg) {
+var pbf = function(msg) {
return postMessage(msg, [msg.buffer]);
};
-var gu8 = function (o2) {
+var gu8 = function(o2) {
return o2 && o2.size && new u8(o2.size);
};
-var astrm = function (strm) {
- strm.ondata = function (dat, final) {
+var astrm = function(strm) {
+ strm.ondata = function(dat, final) {
return postMessage([dat, final], [dat.buffer]);
};
- return function (ev) {
+ return function(ev) {
return strm.push(ev.data[0], ev.data[1]);
};
};
-var astrmify = function (fns, strm, opts, init3, id) {
+var astrmify = function(fns, strm, opts, init3, id) {
var t3;
- var w = wrkr(fns, init3, id, function (err, dat) {
+ var w = wrkr(fns, init3, id, function(err, dat) {
if (err)
w.terminate(), strm.ondata.call(strm, err);
else {
@@ -8257,31 +8231,31 @@ var astrmify = function (fns, strm, opts, init3, id) {
}
});
w.postMessage(opts);
- strm.push = function (d2, f2) {
+ strm.push = function(d2, f2) {
if (t3)
throw "stream finished";
if (!strm.ondata)
throw "no stream handler";
w.postMessage([d2, t3 = f2], [d2.buffer]);
};
- strm.terminate = function () {
+ strm.terminate = function() {
w.terminate();
};
};
-var b22 = function (d2, b5) {
+var b22 = function(d2, b5) {
return d2[b5] | d2[b5 + 1] << 8;
};
-var b42 = function (d2, b5) {
+var b42 = function(d2, b5) {
return (d2[b5] | d2[b5 + 1] << 8 | d2[b5 + 2] << 16 | d2[b5 + 3] << 24) >>> 0;
};
-var b8 = function (d2, b5) {
+var b8 = function(d2, b5) {
return b42(d2, b5) + b42(d2, b5 + 4) * 4294967296;
};
-var wbytes = function (d2, b5, v5) {
+var wbytes = function(d2, b5, v5) {
for (; v5; ++b5)
d2[b5] = v5, v5 >>>= 8;
};
-var gzh = function (c2, o2) {
+var gzh = function(c2, o2) {
var fn = o2.filename;
c2[0] = 31, c2[1] = 139, c2[2] = 8, c2[8] = o2.level < 2 ? 4 : o2.level == 9 ? 2 : 0, c2[9] = 3;
if (o2.mtime != 0)
@@ -8292,7 +8266,7 @@ var gzh = function (c2, o2) {
c2[i4 + 10] = fn.charCodeAt(i4);
}
};
-var gzs = function (d2) {
+var gzs = function(d2) {
if (d2[0] != 31 || d2[1] != 139 || d2[2] != 8)
throw "invalid gzip data";
var flg = d2[3];
@@ -8303,18 +8277,18 @@ var gzs = function (d2) {
;
return st + (flg & 2);
};
-var gzl = function (d2) {
+var gzl = function(d2) {
var l2 = d2.length;
return (d2[l2 - 4] | d2[l2 - 3] << 8 | d2[l2 - 2] << 16 | d2[l2 - 1] << 24) >>> 0;
};
-var gzhl = function (o2) {
+var gzhl = function(o2) {
return 10 + (o2.filename && o2.filename.length + 1 || 0);
};
-var zlh = function (c2, o2) {
+var zlh = function(c2, o2) {
var lv = o2.level, fl2 = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
c2[0] = 120, c2[1] = fl2 << 6 | (fl2 ? 32 - 2 * fl2 : 1);
};
-var zlv = function (d2) {
+var zlv = function(d2) {
if ((d2[0] & 15) != 8 || d2[0] >>> 4 > 7 || (d2[0] << 8 | d2[1]) % 31)
throw "invalid zlib data";
if (d2[1] & 32)
@@ -8326,17 +8300,17 @@ function AsyncCmpStrm(opts, cb2) {
this.ondata = cb2;
return opts;
}
-var Deflate = (function () {
+var Deflate = (function() {
function Deflate2(opts, cb2) {
if (!cb2 && typeof opts == "function")
cb2 = opts, opts = {};
this.ondata = cb2;
this.o = opts || {};
}
- Deflate2.prototype.p = function (c2, f2) {
+ Deflate2.prototype.p = function(c2, f2) {
this.ondata(dopt(c2, this.o, 0, 0, !f2), f2);
};
- Deflate2.prototype.push = function (chunk, final) {
+ Deflate2.prototype.push = function(chunk, final) {
if (this.d)
throw "stream finished";
if (!this.ondata)
@@ -8346,14 +8320,14 @@ var Deflate = (function () {
};
return Deflate2;
})();
-var AsyncDeflate = /* @__PURE__ */ (function () {
+var AsyncDeflate = /* @__PURE__ */ (function() {
function AsyncDeflate2(opts, cb2) {
astrmify([
bDflt,
- function () {
+ function() {
return [astrm, Deflate];
}
- ], this, AsyncCmpStrm.call(this, opts, cb2), function (ev) {
+ ], this, AsyncCmpStrm.call(this, opts, cb2), function(ev) {
var strm = new Deflate(ev.data);
onmessage = astrm(strm);
}, 6);
@@ -8363,13 +8337,13 @@ var AsyncDeflate = /* @__PURE__ */ (function () {
function deflateSync(data, opts) {
return dopt(data, opts || {}, 0, 0);
}
-var Inflate = (function () {
+var Inflate = (function() {
function Inflate2(cb2) {
this.s = {};
this.p = new u8(0);
this.ondata = cb2;
}
- Inflate2.prototype.e = function (c2) {
+ Inflate2.prototype.e = function(c2) {
if (this.d)
throw "stream finished";
if (!this.ondata)
@@ -8378,7 +8352,7 @@ var Inflate = (function () {
var n2 = new u8(l2 + c2.length);
n2.set(this.p), n2.set(c2, l2), this.p = n2;
};
- Inflate2.prototype.c = function (final) {
+ Inflate2.prototype.c = function(final) {
this.d = this.s.i = final || false;
var bts = this.s.b;
var dt = inflt(this.p, this.o, this.s);
@@ -8386,20 +8360,20 @@ var Inflate = (function () {
this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
this.p = slc(this.p, this.s.p / 8 | 0), this.s.p &= 7;
};
- Inflate2.prototype.push = function (chunk, final) {
+ Inflate2.prototype.push = function(chunk, final) {
this.e(chunk), this.c(final);
};
return Inflate2;
})();
-var AsyncInflate = /* @__PURE__ */ (function () {
+var AsyncInflate = /* @__PURE__ */ (function() {
function AsyncInflate2(cb2) {
this.ondata = cb2;
astrmify([
bInflt,
- function () {
+ function() {
return [astrm, Inflate];
}
- ], this, 0, function () {
+ ], this, 0, function() {
var strm = new Inflate();
onmessage = astrm(strm);
}, 7);
@@ -8409,17 +8383,17 @@ var AsyncInflate = /* @__PURE__ */ (function () {
function inflateSync(data, out7) {
return inflt(data, out7);
}
-var Gzip = (function () {
+var Gzip = (function() {
function Gzip2(opts, cb2) {
this.c = crc();
this.l = 0;
this.v = 1;
Deflate.call(this, opts, cb2);
}
- Gzip2.prototype.push = function (chunk, final) {
+ Gzip2.prototype.push = function(chunk, final) {
Deflate.prototype.push.call(this, chunk, final);
};
- Gzip2.prototype.p = function (c2, f2) {
+ Gzip2.prototype.p = function(c2, f2) {
this.c.p(c2);
this.l += c2.length;
var raw = dopt(c2, this.o, this.v && gzhl(this.o), f2 && 8, !f2);
@@ -8431,12 +8405,12 @@ var Gzip = (function () {
};
return Gzip2;
})();
-var Gunzip = (function () {
+var Gunzip = (function() {
function Gunzip2(cb2) {
this.v = 1;
Inflate.call(this, cb2);
}
- Gunzip2.prototype.push = function (chunk, final) {
+ Gunzip2.prototype.push = function(chunk, final) {
Inflate.prototype.e.call(this, chunk);
if (this.v) {
var s2 = this.p.length > 3 ? gzs(this.p) : 4;
@@ -8453,32 +8427,32 @@ var Gunzip = (function () {
};
return Gunzip2;
})();
-var AsyncGunzip = /* @__PURE__ */ (function () {
+var AsyncGunzip = /* @__PURE__ */ (function() {
function AsyncGunzip2(cb2) {
this.ondata = cb2;
astrmify([
bInflt,
guze,
- function () {
+ function() {
return [astrm, Inflate, Gunzip];
}
- ], this, 0, function () {
+ ], this, 0, function() {
var strm = new Gunzip();
onmessage = astrm(strm);
}, 9);
}
return AsyncGunzip2;
})();
-var Zlib = (function () {
+var Zlib = (function() {
function Zlib2(opts, cb2) {
this.c = adler();
this.v = 1;
Deflate.call(this, opts, cb2);
}
- Zlib2.prototype.push = function (chunk, final) {
+ Zlib2.prototype.push = function(chunk, final) {
Deflate.prototype.push.call(this, chunk, final);
};
- Zlib2.prototype.p = function (c2, f2) {
+ Zlib2.prototype.p = function(c2, f2) {
this.c.p(c2);
var raw = dopt(c2, this.o, this.v && 2, f2 && 4, !f2);
if (this.v)
@@ -8489,12 +8463,12 @@ var Zlib = (function () {
};
return Zlib2;
})();
-var Unzlib = (function () {
+var Unzlib = (function() {
function Unzlib2(cb2) {
this.v = 1;
Inflate.call(this, cb2);
}
- Unzlib2.prototype.push = function (chunk, final) {
+ Unzlib2.prototype.push = function(chunk, final) {
Inflate.prototype.e.call(this, chunk);
if (this.v) {
if (this.p.length < 2 && !final)
@@ -8510,16 +8484,16 @@ var Unzlib = (function () {
};
return Unzlib2;
})();
-var AsyncUnzlib = /* @__PURE__ */ (function () {
+var AsyncUnzlib = /* @__PURE__ */ (function() {
function AsyncUnzlib2(cb2) {
this.ondata = cb2;
astrmify([
bInflt,
zule,
- function () {
+ function() {
return [astrm, Inflate, Unzlib];
}
- ], this, 0, function () {
+ ], this, 0, function() {
var strm = new Unzlib();
onmessage = astrm(strm);
}, 11);
@@ -8529,14 +8503,14 @@ var AsyncUnzlib = /* @__PURE__ */ (function () {
function unzlibSync(data, out7) {
return inflt((zlv(data), data.subarray(2, -4)), out7);
}
-var Decompress = (function () {
+var Decompress = (function() {
function Decompress2(cb2) {
this.G = Gunzip;
this.I = Inflate;
this.Z = Unzlib;
this.ondata = cb2;
}
- Decompress2.prototype.push = function (chunk, final) {
+ Decompress2.prototype.push = function(chunk, final) {
if (!this.ondata)
throw "no stream handler";
if (!this.s) {
@@ -8547,7 +8521,7 @@ var Decompress = (function () {
this.p = chunk;
if (this.p.length > 2) {
var _this_1 = this;
- var cb2 = function () {
+ var cb2 = function() {
_this_1.ondata.apply(_this_1, arguments);
};
this.s = this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8 ? new this.G(cb2) : (this.p[0] & 15) != 8 || this.p[0] >> 4 > 7 || (this.p[0] << 8 | this.p[1]) % 31 ? new this.I(cb2) : new this.Z(cb2);
@@ -8559,14 +8533,14 @@ var Decompress = (function () {
};
return Decompress2;
})();
-var AsyncDecompress = (function () {
+var AsyncDecompress = (function() {
function AsyncDecompress2(cb2) {
this.G = AsyncGunzip;
this.I = AsyncInflate;
this.Z = AsyncUnzlib;
this.ondata = cb2;
}
- AsyncDecompress2.prototype.push = function (chunk, final) {
+ AsyncDecompress2.prototype.push = function(chunk, final) {
Decompress.prototype.push.call(this, chunk, final);
};
return AsyncDecompress2;
@@ -8579,8 +8553,8 @@ try {
tds = 1;
} catch (e2) {
}
-var dutf8 = function (d2) {
- for (var r2 = "", i4 = 0; ;) {
+var dutf8 = function(d2) {
+ for (var r2 = "", i4 = 0; ; ) {
var c2 = d2[i4++];
var eb = (c2 > 127) + (c2 > 223) + (c2 > 239);
if (i4 + eb > d2.length)
@@ -8595,7 +8569,7 @@ var dutf8 = function (d2) {
r2 += String.fromCharCode((c2 & 15) << 12 | (d2[i4++] & 63) << 6 | d2[i4++] & 63);
}
};
-var DecodeUTF8 = (function () {
+var DecodeUTF8 = (function() {
function DecodeUTF82(cb2) {
this.ondata = cb2;
if (tds)
@@ -8603,7 +8577,7 @@ var DecodeUTF8 = (function () {
else
this.p = et;
}
- DecodeUTF82.prototype.push = function (chunk, final) {
+ DecodeUTF82.prototype.push = function(chunk, final) {
if (!this.ondata)
throw "no callback";
final = !!final;
@@ -8632,11 +8606,11 @@ var DecodeUTF8 = (function () {
};
return DecodeUTF82;
})();
-var EncodeUTF8 = (function () {
+var EncodeUTF8 = (function() {
function EncodeUTF82(cb2) {
this.ondata = cb2;
}
- EncodeUTF82.prototype.push = function (chunk, final) {
+ EncodeUTF82.prototype.push = function(chunk, final) {
if (!this.ondata)
throw "no callback";
if (this.d)
@@ -8657,7 +8631,7 @@ function strToU8(str, latin1) {
var l2 = str.length;
var ar = new u8(str.length + (str.length >> 1));
var ai = 0;
- var w = function (v5) {
+ var w = function(v5) {
ar[ai++] = v5;
};
for (var i4 = 0; i4 < l2; ++i4) {
@@ -8693,15 +8667,15 @@ function strFromU8(dat, latin1) {
return out7;
}
}
-var dbf = function (l2) {
+var dbf = function(l2) {
return l2 == 1 ? 3 : l2 < 6 ? 2 : l2 == 9 ? 1 : 0;
};
-var z64e = function (d2, b5) {
+var z64e = function(d2, b5) {
for (; b22(d2, b5) != 1; b5 += 4 + b22(d2, b5 + 2))
;
return [b8(d2, b5 + 12), b8(d2, b5 + 4), b8(d2, b5 + 20)];
};
-var exfl = function (ex) {
+var exfl = function(ex) {
var le = 0;
if (ex) {
for (var k in ex) {
@@ -8713,7 +8687,7 @@ var exfl = function (ex) {
}
return le;
};
-var wzh = function (d2, b5, f2, fn, u, c2, ce, co) {
+var wzh = function(d2, b5, f2, fn, u, c2, ce, co) {
var fl2 = fn.length, ex = f2.extra, col3 = co && co.length;
var exl = exfl(ex);
wbytes(d2, b5, ce != null ? 33639248 : 67324752), b5 += 4;
@@ -8752,24 +8726,24 @@ var wzh = function (d2, b5, f2, fn, u, c2, ce, co) {
d2.set(co, b5), b5 += col3;
return b5;
};
-var wzf = function (o2, b5, c2, d2, e2) {
+var wzf = function(o2, b5, c2, d2, e2) {
wbytes(o2, b5, 101010256);
wbytes(o2, b5 + 8, c2);
wbytes(o2, b5 + 10, c2);
wbytes(o2, b5 + 12, d2);
wbytes(o2, b5 + 16, e2);
};
-var ZipPassThrough = (function () {
+var ZipPassThrough = (function() {
function ZipPassThrough2(filename) {
this.filename = filename;
this.c = crc();
this.size = 0;
this.compression = 0;
}
- ZipPassThrough2.prototype.process = function (chunk, final) {
+ ZipPassThrough2.prototype.process = function(chunk, final) {
this.ondata(null, chunk, final);
};
- ZipPassThrough2.prototype.push = function (chunk, final) {
+ ZipPassThrough2.prototype.push = function(chunk, final) {
if (!this.ondata)
throw "no callback - add to ZIP archive before pushing";
this.c.p(chunk);
@@ -8780,58 +8754,58 @@ var ZipPassThrough = (function () {
};
return ZipPassThrough2;
})();
-var ZipDeflate = (function () {
+var ZipDeflate = (function() {
function ZipDeflate2(filename, opts) {
var _this_1 = this;
if (!opts)
opts = {};
ZipPassThrough.call(this, filename);
- this.d = new Deflate(opts, function (dat, final) {
+ this.d = new Deflate(opts, function(dat, final) {
_this_1.ondata(null, dat, final);
});
this.compression = 8;
this.flag = dbf(opts.level);
}
- ZipDeflate2.prototype.process = function (chunk, final) {
+ ZipDeflate2.prototype.process = function(chunk, final) {
try {
this.d.push(chunk, final);
} catch (e2) {
this.ondata(e2, null, final);
}
};
- ZipDeflate2.prototype.push = function (chunk, final) {
+ ZipDeflate2.prototype.push = function(chunk, final) {
ZipPassThrough.prototype.push.call(this, chunk, final);
};
return ZipDeflate2;
})();
-var AsyncZipDeflate = (function () {
+var AsyncZipDeflate = (function() {
function AsyncZipDeflate2(filename, opts) {
var _this_1 = this;
if (!opts)
opts = {};
ZipPassThrough.call(this, filename);
- this.d = new AsyncDeflate(opts, function (err, dat, final) {
+ this.d = new AsyncDeflate(opts, function(err, dat, final) {
_this_1.ondata(err, dat, final);
});
this.compression = 8;
this.flag = dbf(opts.level);
this.terminate = this.d.terminate;
}
- AsyncZipDeflate2.prototype.process = function (chunk, final) {
+ AsyncZipDeflate2.prototype.process = function(chunk, final) {
this.d.push(chunk, final);
};
- AsyncZipDeflate2.prototype.push = function (chunk, final) {
+ AsyncZipDeflate2.prototype.push = function(chunk, final) {
ZipPassThrough.prototype.push.call(this, chunk, final);
};
return AsyncZipDeflate2;
})();
-var Zip = (function () {
+var Zip = (function() {
function Zip2(cb2) {
this.ondata = cb2;
this.u = [];
this.d = 1;
}
- Zip2.prototype.add = function (file) {
+ Zip2.prototype.add = function(file) {
var _this_1 = this;
if (this.d & 2)
throw "stream finished";
@@ -8844,7 +8818,7 @@ var Zip = (function () {
var header = new u8(hl);
wzh(header, 0, file, f2, u);
var chks = [header];
- var pAll = function () {
+ var pAll = function() {
for (var _i = 0, chks_1 = chks; _i < chks_1.length; _i++) {
var chk = chks_1[_i];
_this_1.ondata(null, chk, false);
@@ -8858,11 +8832,11 @@ var Zip = (function () {
f: f2,
u,
o: o2,
- t: function () {
+ t: function() {
if (file.terminate)
file.terminate();
},
- r: function () {
+ r: function() {
pAll();
if (tr) {
var nxt = _this_1.u[ind + 1];
@@ -8875,7 +8849,7 @@ var Zip = (function () {
}
});
var cl = 0;
- file.ondata = function (err, dat, final) {
+ file.ondata = function(err, dat, final) {
if (err) {
_this_1.ondata(err, dat, final);
_this_1.terminate();
@@ -8899,7 +8873,7 @@ var Zip = (function () {
};
this.u.push(uf);
};
- Zip2.prototype.end = function () {
+ Zip2.prototype.end = function() {
var _this_1 = this;
if (this.d & 2) {
if (this.d & 1)
@@ -8910,18 +8884,18 @@ var Zip = (function () {
this.e();
else
this.u.push({
- r: function () {
+ r: function() {
if (!(_this_1.d & 1))
return;
_this_1.u.splice(-1, 1);
_this_1.e();
},
- t: function () {
+ t: function() {
}
});
this.d = 3;
};
- Zip2.prototype.e = function () {
+ Zip2.prototype.e = function() {
var bt = 0, l2 = 0, tl = 0;
for (var _i = 0, _a3 = this.u; _i < _a3.length; _i++) {
var f2 = _a3[_i];
@@ -8937,7 +8911,7 @@ var Zip = (function () {
this.ondata(null, out7, true);
this.d = 2;
};
- Zip2.prototype.terminate = function () {
+ Zip2.prototype.terminate = function() {
for (var _i = 0, _a3 = this.u; _i < _a3.length; _i++) {
var f2 = _a3[_i];
f2.t();
@@ -8946,23 +8920,23 @@ var Zip = (function () {
};
return Zip2;
})();
-var UnzipPassThrough = (function () {
+var UnzipPassThrough = (function() {
function UnzipPassThrough2() {
}
- UnzipPassThrough2.prototype.push = function (data, final) {
+ UnzipPassThrough2.prototype.push = function(data, final) {
this.ondata(null, data, final);
};
UnzipPassThrough2.compression = 0;
return UnzipPassThrough2;
})();
-var UnzipInflate = (function () {
+var UnzipInflate = (function() {
function UnzipInflate2() {
var _this_1 = this;
- this.i = new Inflate(function (dat, final) {
+ this.i = new Inflate(function(dat, final) {
_this_1.ondata(null, dat, final);
});
}
- UnzipInflate2.prototype.push = function (data, final) {
+ UnzipInflate2.prototype.push = function(data, final) {
try {
this.i.push(data, final);
} catch (e2) {
@@ -8972,21 +8946,21 @@ var UnzipInflate = (function () {
UnzipInflate2.compression = 8;
return UnzipInflate2;
})();
-var AsyncUnzipInflate = (function () {
+var AsyncUnzipInflate = (function() {
function AsyncUnzipInflate2(_, sz) {
var _this_1 = this;
if (sz < 32e4) {
- this.i = new Inflate(function (dat, final) {
+ this.i = new Inflate(function(dat, final) {
_this_1.ondata(null, dat, final);
});
} else {
- this.i = new AsyncInflate(function (err, dat, final) {
+ this.i = new AsyncInflate(function(err, dat, final) {
_this_1.ondata(err, dat, final);
});
this.terminate = this.i.terminate;
}
}
- AsyncUnzipInflate2.prototype.push = function (data, final) {
+ AsyncUnzipInflate2.prototype.push = function(data, final) {
if (this.i.terminate)
data = slc(data, 0);
this.i.push(data, final);
@@ -8994,7 +8968,7 @@ var AsyncUnzipInflate = (function () {
AsyncUnzipInflate2.compression = 8;
return AsyncUnzipInflate2;
})();
-var Unzip = (function () {
+var Unzip = (function() {
function Unzip2(cb2) {
this.onfile = cb2;
this.k = [];
@@ -9003,7 +8977,7 @@ var Unzip = (function () {
};
this.p = et;
}
- Unzip2.prototype.push = function (chunk, final) {
+ Unzip2.prototype.push = function(chunk, final) {
var _this_1 = this;
if (!this.onfile)
throw "no callback";
@@ -9031,7 +9005,7 @@ var Unzip = (function () {
buf.set(this.p), buf.set(chunk, this.p.length);
}
var l2 = buf.length, oc = this.c, add3 = oc && this.d;
- var _loop_2 = function () {
+ var _loop_2 = function() {
var _a3;
var sig = b42(buf, i4);
if (sig == 67324752) {
@@ -9055,7 +9029,7 @@ var Unzip = (function () {
var file_1 = {
name: fn_1,
compression: cmp_1,
- start: function () {
+ start: function() {
if (!file_1.ondata)
throw "no callback";
if (!sc_1)
@@ -9065,7 +9039,7 @@ var Unzip = (function () {
if (!ctr)
throw "unknown compression type " + cmp_1;
d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
- d_1.ondata = function (err, dat3, final2) {
+ d_1.ondata = function(err, dat3, final2) {
file_1.ondata(err, dat3, final2);
};
for (var _i = 0, chks_3 = chks_2; _i < chks_3.length; _i++) {
@@ -9078,7 +9052,7 @@ var Unzip = (function () {
d_1.push(et, true);
}
},
- terminate: function () {
+ terminate: function() {
if (d_1 && d_1.terminate)
d_1.terminate();
}
@@ -9122,7 +9096,7 @@ var Unzip = (function () {
this.p = null;
}
};
- Unzip2.prototype.register = function (decoder) {
+ Unzip2.prototype.register = function(decoder) {
this.o[decoder.compression] = decoder;
};
return Unzip2;
@@ -9378,7 +9352,7 @@ var Reflector = (() => {
material.uniforms["color"].value = color;
material.uniforms["textureMatrix"].value = textureMatrix;
this.material = material;
- this.onBeforeRender = function (renderer, scene, camera) {
+ this.onBeforeRender = function(renderer, scene, camera) {
reflectorWorldPosition.setFromMatrixPosition(scope.matrixWorld);
cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);
rotationMatrix2.extractRotation(scope.matrixWorld);
@@ -9462,10 +9436,10 @@ var Reflector = (() => {
}
scope.visible = true;
};
- this.getRenderTarget = function () {
+ this.getRenderTarget = function() {
return renderTarget;
};
- this.dispose = function () {
+ this.dispose = function() {
renderTarget.dispose();
scope.material.dispose();
};
@@ -9580,7 +9554,7 @@ var Refractor = (() => {
this.material.uniforms["color"].value = color;
this.material.uniforms["tDiffuse"].value = renderTarget.texture;
this.material.uniforms["textureMatrix"].value = textureMatrix;
- const visible = (function () {
+ const visible = (function() {
const refractorWorldPosition = new Vector3();
const cameraWorldPosition = new Vector3();
const rotationMatrix2 = new Matrix4();
@@ -9596,7 +9570,7 @@ var Refractor = (() => {
return view.dot(normal2) < 0;
};
})();
- const updateRefractorPlane = (function () {
+ const updateRefractorPlane = (function() {
const normal2 = new Vector3();
const position2 = new Vector3();
const quaternion = new Quaternion();
@@ -9608,7 +9582,7 @@ var Refractor = (() => {
refractorPlane.setFromNormalAndCoplanarPoint(normal2, position2);
};
})();
- const updateVirtualCamera = (function () {
+ const updateVirtualCamera = (function() {
const clipPlane = new Plane();
const clipVector = new Vector4();
const q = new Vector4();
@@ -9674,7 +9648,7 @@ var Refractor = (() => {
}
scope.visible = true;
}
- this.onBeforeRender = function (renderer, scene, camera) {
+ this.onBeforeRender = function(renderer, scene, camera) {
if (camera.userData.refractor === true)
return;
if (!visible(camera) === true)
@@ -9684,10 +9658,10 @@ var Refractor = (() => {
updateVirtualCamera(camera);
render(renderer, scene, camera);
};
- this.getRenderTarget = function () {
+ this.getRenderTarget = function() {
return renderTarget;
};
- this.dispose = function () {
+ this.dispose = function() {
renderTarget.dispose();
scope.material.dispose();
};
@@ -9887,14 +9861,14 @@ var Lensflare = (() => {
depthWrite: false
});
const mesh2 = new Mesh(geometry3, material2);
- this.addElement = function (element) {
+ this.addElement = function(element) {
elements.push(element);
};
const scale5 = new Vector2();
const screenPositionPixels = new Vector2();
const validArea = new Box2();
const viewport = new Vector4();
- this.onBeforeRender = function (renderer, scene, camera) {
+ this.onBeforeRender = function(renderer, scene, camera) {
renderer.getCurrentViewport(viewport);
const invAspect = viewport.w / viewport.z;
const halfViewportWidth = viewport.z / 2;
@@ -9938,7 +9912,7 @@ var Lensflare = (() => {
}
}
};
- this.dispose = function () {
+ this.dispose = function() {
material1a.dispose();
material1b.dispose();
material2.dispose();
@@ -10058,7 +10032,7 @@ var MarchingCubes = class extends Mesh {
const clist = new Float32Array(12 * 3);
this.enableUvs = enableUvs;
this.enableColors = enableColors;
- this.init = function (resolution2) {
+ this.init = function(resolution2) {
this.resolution = resolution2;
this.isolation = 80;
this.size = resolution2;
@@ -10297,7 +10271,7 @@ var MarchingCubes = class extends Mesh {
}
scope.count += 3;
}
- this.addBall = function (ballx, bally, ballz, strength, subtract, colors2) {
+ this.addBall = function(ballx, bally, ballz, strength, subtract, colors2) {
const sign = Math.sign(strength);
strength = Math.abs(strength);
const userDefineColor = !(colors2 === void 0 || colors2 === null);
@@ -10356,7 +10330,7 @@ var MarchingCubes = class extends Mesh {
}
}
};
- this.addPlaneX = function (strength, subtract) {
+ this.addPlaneX = function(strength, subtract) {
const size2 = this.size, yd = this.yd, zd = this.zd, field = this.field;
let x, y, z, xx, val, xdiv, cxy, dist = size2 * Math.sqrt(strength / subtract);
if (dist > size2)
@@ -10375,7 +10349,7 @@ var MarchingCubes = class extends Mesh {
}
}
};
- this.addPlaneY = function (strength, subtract) {
+ this.addPlaneY = function(strength, subtract) {
const size2 = this.size, yd = this.yd, zd = this.zd, field = this.field;
let x, y, z, yy, val, ydiv, cy, cxy, dist = size2 * Math.sqrt(strength / subtract);
if (dist > size2)
@@ -10394,7 +10368,7 @@ var MarchingCubes = class extends Mesh {
}
}
};
- this.addPlaneZ = function (strength, subtract) {
+ this.addPlaneZ = function(strength, subtract) {
const size2 = this.size, yd = this.yd, zd = this.zd, field = this.field;
let x, y, z, zz, val, zdiv, cz, cyz, dist = size2 * Math.sqrt(strength / subtract);
if (dist > size2)
@@ -10413,15 +10387,15 @@ var MarchingCubes = class extends Mesh {
}
}
};
- this.setCell = function (x, y, z, value) {
+ this.setCell = function(x, y, z, value) {
const index2 = this.size2 * z + this.size * y + x;
this.field[index2] = value;
};
- this.getCell = function (x, y, z) {
+ this.getCell = function(x, y, z) {
const index2 = this.size2 * z + this.size * y + x;
return this.field[index2];
};
- this.blur = function (intensity = 1) {
+ this.blur = function(intensity = 1) {
const field = this.field;
const fieldCopy = field.slice();
const size2 = this.size;
@@ -10456,14 +10430,14 @@ var MarchingCubes = class extends Mesh {
}
}
};
- this.reset = function () {
+ this.reset = function() {
for (let i4 = 0; i4 < this.size3; i4++) {
this.normal_cache[i4 * 3] = 0;
this.field[i4] = 0;
this.palette[i4 * 3] = this.palette[i4 * 3 + 1] = this.palette[i4 * 3 + 2] = 0;
}
};
- this.update = function () {
+ this.update = function() {
this.count = 0;
const smin2 = this.size - 2;
for (let z = 1; z < smin2; z++) {
@@ -15309,22 +15283,22 @@ var LightningStrike = (() => {
}
const generator = {
currentSeed: 0,
- random: function () {
+ random: function() {
const value = seeds[generator.currentSeed];
generator.currentSeed = (generator.currentSeed + 1) % numSeeds;
return value;
},
- getSeed: function () {
+ getSeed: function() {
return generator.currentSeed / numSeeds;
},
- setSeed: function (seed3) {
+ setSeed: function(seed3) {
generator.currentSeed = Math.floor(seed3 * numSeeds) % numSeeds;
}
};
return generator;
}
static copyParameters(dest = {}, source = {}) {
- const vecCopy = function (v5) {
+ const vecCopy = function(v5) {
if (source === dest) {
return v5;
} else {
@@ -15333,7 +15307,7 @@ var LightningStrike = (() => {
};
dest.sourceOffset = source.sourceOffset !== void 0 ? vecCopy(source.sourceOffset) : new Vector3(0, 100, 0), dest.destOffset = source.destOffset !== void 0 ? vecCopy(source.destOffset) : new Vector3(0, 0, 0), dest.timeScale = source.timeScale !== void 0 ? source.timeScale : 1, dest.roughness = source.roughness !== void 0 ? source.roughness : 0.9, dest.straightness = source.straightness !== void 0 ? source.straightness : 0.7, dest.up0 = source.up0 !== void 0 ? vecCopy(source.up0) : new Vector3(0, 0, 1);
dest.up1 = source.up1 !== void 0 ? vecCopy(source.up1) : new Vector3(0, 0, 1), dest.radius0 = source.radius0 !== void 0 ? source.radius0 : 1, dest.radius1 = source.radius1 !== void 0 ? source.radius1 : 1, dest.radius0Factor = source.radius0Factor !== void 0 ? source.radius0Factor : 0.5, dest.radius1Factor = source.radius1Factor !== void 0 ? source.radius1Factor : 0.2, dest.minRadius = source.minRadius !== void 0 ? source.minRadius : 0.2, // These parameters should not be changed after lightning creation. They can be changed but the ray will change its form abruptly:
- dest.isEternal = source.isEternal !== void 0 ? source.isEternal : source.birthTime === void 0 || source.deathTime === void 0, dest.birthTime = source.birthTime, dest.deathTime = source.deathTime, dest.propagationTimeFactor = source.propagationTimeFactor !== void 0 ? source.propagationTimeFactor : 0.1, dest.vanishingTimeFactor = source.vanishingTimeFactor !== void 0 ? source.vanishingTimeFactor : 0.9, dest.subrayPeriod = source.subrayPeriod !== void 0 ? source.subrayPeriod : 4, dest.subrayDutyCycle = source.subrayDutyCycle !== void 0 ? source.subrayDutyCycle : 0.6;
+ dest.isEternal = source.isEternal !== void 0 ? source.isEternal : source.birthTime === void 0 || source.deathTime === void 0, dest.birthTime = source.birthTime, dest.deathTime = source.deathTime, dest.propagationTimeFactor = source.propagationTimeFactor !== void 0 ? source.propagationTimeFactor : 0.1, dest.vanishingTimeFactor = source.vanishingTimeFactor !== void 0 ? source.vanishingTimeFactor : 0.9, dest.subrayPeriod = source.subrayPeriod !== void 0 ? source.subrayPeriod : 4, dest.subrayDutyCycle = source.subrayDutyCycle !== void 0 ? source.subrayDutyCycle : 0.6;
dest.maxIterations = source.maxIterations !== void 0 ? source.maxIterations : 9;
dest.isStatic = source.isStatic !== void 0 ? source.isStatic : false;
dest.ramification = source.ramification !== void 0 ? source.ramification : 5;
@@ -15703,7 +15677,7 @@ var LightningStrike = (() => {
}
createDefaultSubrayCreationCallbacks() {
const random1 = this.randomGenerator.random;
- this.onDecideSubrayCreation = function (segment, lightningStrike) {
+ this.onDecideSubrayCreation = function(segment, lightningStrike) {
const subray = lightningStrike.currentSubray;
const period = lightningStrike.rayParameters.subrayPeriod;
const dutyCycle = lightningStrike.rayParameters.subrayDutyCycle;
@@ -15751,10 +15725,10 @@ var LightningStrike = (() => {
const vec2Forward = new Vector3();
const vec3Side = new Vector3();
const vec4Up = new Vector3();
- this.onSubrayCreation = function (segment, parentSubray, childSubray, lightningStrike) {
+ this.onSubrayCreation = function(segment, parentSubray, childSubray, lightningStrike) {
lightningStrike.subrayCylinderPosition(segment, parentSubray, childSubray, 0.5, 0.6, 0.2);
};
- this.subrayConePosition = function (segment, parentSubray, childSubray, heightFactor, sideWidthFactor, minSideWidthFactor) {
+ this.subrayConePosition = function(segment, parentSubray, childSubray, heightFactor, sideWidthFactor, minSideWidthFactor) {
childSubray.pos0.copy(segment.pos0);
vec1Pos.subVectors(parentSubray.pos1, parentSubray.pos0);
vec2Forward.copy(vec1Pos).normalize();
@@ -15766,7 +15740,7 @@ var LightningStrike = (() => {
vec4Up.copy(parentSubray.up0).multiplyScalar(Math.sin(angle));
childSubray.pos1.copy(vec3Side).add(vec4Up).multiplyScalar(length3 * sideWidthFactor * (minSideWidthFactor + random1() * (1 - minSideWidthFactor))).add(vec1Pos).add(parentSubray.pos0);
};
- this.subrayCylinderPosition = function (segment, parentSubray, childSubray, heightFactor, sideWidthFactor, minSideWidthFactor) {
+ this.subrayCylinderPosition = function(segment, parentSubray, childSubray, heightFactor, sideWidthFactor, minSideWidthFactor) {
childSubray.pos0.copy(segment.pos0);
vec1Pos.subVectors(parentSubray.pos1, parentSubray.pos0);
vec2Forward.copy(vec1Pos).normalize();
@@ -15936,7 +15910,7 @@ var ReflectorForSSRPass = (() => {
this.material = material;
const globalPlane = new Plane(new Vector3(0, 1, 0), clipBias);
const globalPlanes = [globalPlane];
- this.doRender = function (renderer, scene, camera) {
+ this.doRender = function(renderer, scene, camera) {
material.uniforms["maxDistance"].value = scope.maxDistance;
material.uniforms["color"].value = scope.color;
material.uniforms["opacity"].value = scope.opacity;
@@ -15999,7 +15973,7 @@ var ReflectorForSSRPass = (() => {
renderer.state.viewport(viewport);
}
};
- this.getRenderTarget = function () {
+ this.getRenderTarget = function() {
return renderTarget;
};
}
@@ -16408,7 +16382,7 @@ var Water2 = (() => {
config.value.y = config.value.y - cycle;
}
}
- this.onBeforeRender = function (renderer, scene, camera) {
+ this.onBeforeRender = function(renderer, scene, camera) {
updateTextureMatrix(camera);
updateFlow();
scope.visible = false;
@@ -16592,7 +16566,7 @@ var GroundProjectedEnv = class extends Mesh {
`
);
const fragmentShader3 = defines.join("\n") + /* glsl */
- `
+ `
#define ENVMAP_TYPE_CUBE_UV
varying vec3 vWorldPosition;
uniform float radius;
@@ -17002,11 +16976,11 @@ function clone(source) {
const sourceLookup = /* @__PURE__ */ new Map();
const cloneLookup = /* @__PURE__ */ new Map();
const clone2 = source.clone();
- parallelTraverse(source, clone2, function (sourceNode, clonedNode) {
+ parallelTraverse(source, clone2, function(sourceNode, clonedNode) {
sourceLookup.set(clonedNode, sourceNode);
cloneLookup.set(sourceNode, clonedNode);
});
- clone2.traverse(function (node) {
+ clone2.traverse(function(node) {
if (!node.isSkinnedMesh)
return;
const clonedMesh = node;
@@ -17014,7 +16988,7 @@ function clone(source) {
const sourceBones = sourceMesh.skeleton.bones;
clonedMesh.skeleton = sourceMesh.skeleton.clone();
clonedMesh.bindMatrix.copy(sourceMesh.bindMatrix);
- clonedMesh.skeleton.bones = sourceBones.map(function (bone) {
+ clonedMesh.skeleton.bones = sourceBones.map(function(bone) {
return cloneLookup.get(bone);
});
clonedMesh.bind(clonedMesh.skeleton, clonedMesh.bindMatrix);
@@ -18847,10 +18821,10 @@ var TransformControls = class extends Object3D {
const defineProperty = (propName, defaultValue) => {
let propValue = defaultValue;
Object.defineProperty(this, propName, {
- get: function () {
+ get: function() {
return propValue !== void 0 ? propValue : defaultValue;
},
- set: function (value) {
+ set: function(value) {
if (propValue !== value) {
propValue = value;
this.plane[propName] = value;
@@ -19132,7 +19106,7 @@ var TransformControlsGizmo = class extends Object3D {
if (handle.name === this.axis) {
handle.material.opacity = 1;
handle.material.color.lerp(new Color(1, 1, 1), 0.5);
- } else if (this.axis.split("").some(function (a6) {
+ } else if (this.axis.split("").some(function(a6) {
return handle.name === a6;
})) {
handle.material.opacity = 1;
@@ -19372,7 +19346,7 @@ var TransformControlsGizmo = class extends Object3D {
const setupGizmo = (gizmoMap) => {
const gizmo = new Object3D();
for (let name in gizmoMap) {
- for (let i4 = gizmoMap[name].length; i4--;) {
+ for (let i4 = gizmoMap[name].length; i4--; ) {
const object = gizmoMap[name][i4][0].clone();
const position2 = gizmoMap[name][i4][1];
const rotation3 = gizmoMap[name][i4][2];
@@ -19642,7 +19616,7 @@ var DeviceOrientationControls = class extends EventDispatcher2 {
__publicField15(this, "connect", () => {
this.onScreenOrientationChangeEvent();
if (window.DeviceOrientationEvent !== void 0 && // @ts-ignore
- typeof window.DeviceOrientationEvent.requestPermission === "function") {
+ typeof window.DeviceOrientationEvent.requestPermission === "function") {
window.DeviceOrientationEvent.requestPermission().then((response) => {
if (response == "granted") {
window.addEventListener("orientationchange", this.onScreenOrientationChangeEvent);
@@ -21687,7 +21661,7 @@ var ArcballControls = class extends EventDispatcher2 {
if (deltaTime < 120) {
const w = Math.abs((this._wPrev + this._wCurr) / 2);
const self2 = this;
- this._animationId = window.requestAnimationFrame(function (t3) {
+ this._animationId = window.requestAnimationFrame(function(t3) {
self2.updateTbState(STATE.ANIMATION_ROTATE, true);
const rotationAxis = self2.calculateRotationAxis(self2._cursorPosPrev, self2._cursorPosCurr);
self2.onRotationAnim(t3, rotationAxis, Math.min(w, self2.wMax));
@@ -21723,7 +21697,7 @@ var ArcballControls = class extends EventDispatcher2 {
window.cancelAnimationFrame(this._animationId);
}
this._timeStart = -1;
- this._animationId = window.requestAnimationFrame(function (t3) {
+ this._animationId = window.requestAnimationFrame(function(t3) {
self2.updateTbState(STATE.ANIMATION_FOCUS, true);
self2.onFocusAnim(t3, hitP, self2._cameraMatrixState, self2._gizmoMatrixState);
});
@@ -22235,7 +22209,7 @@ var ArcballControls = class extends EventDispatcher2 {
this.focus(point, size2, amount);
this.dispatchEvent(_changeEvent2);
const self2 = this;
- this._animationId = window.requestAnimationFrame(function (t3) {
+ this._animationId = window.requestAnimationFrame(function(t3) {
self2.onFocusAnim(t3, point, cameraMatrix, gizmoMatrix.clone());
});
}
@@ -22258,7 +22232,7 @@ var ArcballControls = class extends EventDispatcher2 {
this.applyTransformMatrix(this.rotate(rotationAxis, this._angleCurrent));
this.dispatchEvent(_changeEvent2);
const self2 = this;
- this._animationId = window.requestAnimationFrame(function (t3) {
+ this._animationId = window.requestAnimationFrame(function(t3) {
self2.onRotationAnim(t3, rotationAxis, w0);
});
} else {
@@ -24492,7 +24466,7 @@ var SSAOPass = (() => {
overrideVisibility() {
const scene = this.scene;
const cache = this._visibilityCache;
- scene.traverse(function (object) {
+ scene.traverse(function(object) {
cache.set(object, object.visible);
if (object.isPoints || object.isLine)
object.visible = false;
@@ -24501,7 +24475,7 @@ var SSAOPass = (() => {
restoreVisibility() {
const scene = this.scene;
const cache = this._visibilityCache;
- scene.traverse(function (object) {
+ scene.traverse(function(object) {
const visible = cache.get(object);
object.visible = visible;
});
@@ -26589,7 +26563,7 @@ var ConvolutionShader = {
}
`
),
- buildKernel: function (sigma) {
+ buildKernel: function(sigma) {
function gauss(x, sigma2) {
return Math.exp(-(x * x) / (2 * sigma2 * sigma2));
}
@@ -26636,55 +26610,55 @@ var GLTFLoader = class extends Loader {
this.ktx2Loader = null;
this.meshoptDecoder = null;
this.pluginCallbacks = [];
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsClearcoatExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsDispersionExtension(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFTextureBasisUExtension(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFTextureWebPExtension(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFTextureAVIFExtension(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsSheenExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsTransmissionExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsVolumeExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsIorExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsEmissiveStrengthExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsSpecularExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsIridescenceExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsAnisotropyExtension2(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMaterialsBumpExtension(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFLightsExtension(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMeshoptCompression(parser);
});
- this.register(function (parser) {
+ this.register(function(parser) {
return new GLTFMeshGpuInstancing(parser);
});
}
@@ -26700,7 +26674,7 @@ var GLTFLoader = class extends Loader {
resourcePath = LoaderUtils.extractUrlBase(url);
}
this.manager.itemStart(url);
- const _onError = function (e2) {
+ const _onError = function(e2) {
if (onError) {
onError(e2);
} else {
@@ -26716,12 +26690,12 @@ var GLTFLoader = class extends Loader {
loader2.setWithCredentials(this.withCredentials);
loader2.load(
url,
- function (data) {
+ function(data) {
try {
scope.parse(
data,
resourcePath,
- function (gltf) {
+ function(gltf) {
onLoad(gltf);
scope.manager.itemEnd(url);
},
@@ -26836,7 +26810,7 @@ var GLTFLoader = class extends Loader {
}
parseAsync(data, path) {
const scope = this;
- return new Promise(function (resolve, reject) {
+ return new Promise(function(resolve, reject) {
scope.parse(data, path, resolve, reject);
});
}
@@ -26844,16 +26818,16 @@ var GLTFLoader = class extends Loader {
function GLTFRegistry() {
let objects = {};
return {
- get: function (key) {
+ get: function(key) {
return objects[key];
},
- add: function (key, object) {
+ add: function(key, object) {
objects[key] = object;
},
- remove: function (key) {
+ remove: function(key) {
delete objects[key];
},
- removeAll: function () {
+ removeAll: function() {
objects = {};
}
};
@@ -26961,7 +26935,7 @@ var GLTFLightsExtension = class {
const lightIndex = lightDef.light;
if (lightIndex === void 0)
return null;
- return this._loadLight(lightIndex).then(function (light) {
+ return this._loadLight(lightIndex).then(function(light) {
return parser._getNodeRef(self2.cache, lightIndex, light);
});
}
@@ -27385,7 +27359,7 @@ var GLTFTextureWebPExtension = class {
if (handler !== null)
loader2 = handler;
}
- return this.detectSupport().then(function (isSupported) {
+ return this.detectSupport().then(function(isSupported) {
if (isSupported)
return parser.loadTextureImage(textureIndex, extension.source, loader2);
if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {
@@ -27396,10 +27370,10 @@ var GLTFTextureWebPExtension = class {
}
detectSupport() {
if (!this.isSupported) {
- this.isSupported = new Promise(function (resolve) {
+ this.isSupported = new Promise(function(resolve) {
const image = new Image();
image.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA";
- image.onload = image.onerror = function () {
+ image.onload = image.onerror = function() {
resolve(image.height === 1);
};
});
@@ -27429,7 +27403,7 @@ var GLTFTextureAVIFExtension = class {
if (handler !== null)
loader2 = handler;
}
- return this.detectSupport().then(function (isSupported) {
+ return this.detectSupport().then(function(isSupported) {
if (isSupported)
return parser.loadTextureImage(textureIndex, extension.source, loader2);
if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {
@@ -27440,10 +27414,10 @@ var GLTFTextureAVIFExtension = class {
}
detectSupport() {
if (!this.isSupported) {
- this.isSupported = new Promise(function (resolve) {
+ this.isSupported = new Promise(function(resolve) {
const image = new Image();
image.src = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=";
- image.onload = image.onerror = function () {
+ image.onload = image.onerror = function() {
resolve(image.height === 1);
};
});
@@ -27470,18 +27444,18 @@ var GLTFMeshoptCompression = class {
return null;
}
}
- return buffer2.then(function (res) {
+ return buffer2.then(function(res) {
const byteOffset = extensionDef.byteOffset || 0;
const byteLength = extensionDef.byteLength || 0;
const count = extensionDef.count;
const stride = extensionDef.byteStride;
const source = new Uint8Array(res, byteOffset, byteLength);
if (decoder.decodeGltfBufferAsync) {
- return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function (res2) {
+ return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function(res2) {
return res2.buffer;
});
} else {
- return decoder.ready.then(function () {
+ return decoder.ready.then(function() {
const result = new ArrayBuffer(count * stride);
decoder.decodeGltfBuffer(
new Uint8Array(result),
@@ -27649,11 +27623,11 @@ var GLTFDracoMeshCompressionExtension = class {
attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;
}
}
- return parser.getDependency("bufferView", bufferViewIndex).then(function (bufferView) {
- return new Promise(function (resolve, reject) {
+ return parser.getDependency("bufferView", bufferViewIndex).then(function(bufferView) {
+ return new Promise(function(resolve, reject) {
dracoLoader2.decodeDracoFile(
bufferView,
- function (geometry3) {
+ function(geometry3) {
for (const attributeName in geometry3.attributes) {
const attribute = geometry3.attributes[attributeName];
const normalized = attributeNormalizedMap[attributeName];
@@ -27905,7 +27879,7 @@ function addMorphTargets(geometry3, targets, parser) {
Promise.all(pendingPositionAccessors),
Promise.all(pendingNormalAccessors),
Promise.all(pendingColorAccessors)
- ]).then(function (accessors) {
+ ]).then(function(accessors) {
const morphPositions = accessors[0];
const morphNormals = accessors[1];
const morphColors = accessors[2];
@@ -28032,20 +28006,20 @@ var GLTFParser = class {
const extensions2 = this.extensions;
this.cache.removeAll();
this.nodeCache = {};
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
return ext._markDefs && ext._markDefs();
});
Promise.all(
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
return ext.beforeRoot && ext.beforeRoot();
})
- ).then(function () {
+ ).then(function() {
return Promise.all([
parser.getDependencies("scene"),
parser.getDependencies("animation"),
parser.getDependencies("camera")
]);
- }).then(function (dependencies) {
+ }).then(function(dependencies) {
const result = {
scene: dependencies[0][json.scene || 0],
scenes: dependencies[0],
@@ -28058,10 +28032,10 @@ var GLTFParser = class {
addUnknownExtensionsToUserData(extensions2, result, json);
assignExtrasToUserData(result, json);
return Promise.all(
- parser._invokeAll(function (ext) {
+ parser._invokeAll(function(ext) {
return ext.afterRoot && ext.afterRoot(result);
})
- ).then(function () {
+ ).then(function() {
for (const scene of result.scenes) {
scene.updateMatrixWorld();
}
@@ -28166,12 +28140,12 @@ var GLTFParser = class {
dependency = this.loadScene(index2);
break;
case "node":
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext.loadNode && ext.loadNode(index2);
});
break;
case "mesh":
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext.loadMesh && ext.loadMesh(index2);
});
break;
@@ -28179,7 +28153,7 @@ var GLTFParser = class {
dependency = this.loadAccessor(index2);
break;
case "bufferView":
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext.loadBufferView && ext.loadBufferView(index2);
});
break;
@@ -28187,12 +28161,12 @@ var GLTFParser = class {
dependency = this.loadBuffer(index2);
break;
case "material":
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext.loadMaterial && ext.loadMaterial(index2);
});
break;
case "texture":
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext.loadTexture && ext.loadTexture(index2);
});
break;
@@ -28200,7 +28174,7 @@ var GLTFParser = class {
dependency = this.loadSkin(index2);
break;
case "animation":
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext.loadAnimation && ext.loadAnimation(index2);
});
break;
@@ -28208,7 +28182,7 @@ var GLTFParser = class {
dependency = this.loadCamera(index2);
break;
default:
- dependency = this._invokeOne(function (ext) {
+ dependency = this._invokeOne(function(ext) {
return ext != this && ext.getDependency && ext.getDependency(type, index2);
});
if (!dependency) {
@@ -28231,7 +28205,7 @@ var GLTFParser = class {
const parser = this;
const defs = this.json[type + (type === "mesh" ? "es" : "s")] || [];
dependencies = Promise.all(
- defs.map(function (def, index2) {
+ defs.map(function(def, index2) {
return parser.getDependency(type, index2);
})
);
@@ -28254,8 +28228,8 @@ var GLTFParser = class {
return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);
}
const options = this.options;
- return new Promise(function (resolve, reject) {
- loader2.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function () {
+ return new Promise(function(resolve, reject) {
+ loader2.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve, void 0, function() {
reject(new Error('THREE.GLTFLoader: Failed to load buffer "' + bufferDef.uri + '".'));
});
});
@@ -28267,7 +28241,7 @@ var GLTFParser = class {
*/
loadBufferView(bufferViewIndex) {
const bufferViewDef = this.json.bufferViews[bufferViewIndex];
- return this.getDependency("buffer", bufferViewDef.buffer).then(function (buffer2) {
+ return this.getDependency("buffer", bufferViewDef.buffer).then(function(buffer2) {
const byteLength = bufferViewDef.byteLength || 0;
const byteOffset = bufferViewDef.byteOffset || 0;
return buffer2.slice(byteOffset, byteOffset + byteLength);
@@ -28299,7 +28273,7 @@ var GLTFParser = class {
pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.indices.bufferView));
pendingBufferViews.push(this.getDependency("bufferView", accessorDef.sparse.values.bufferView));
}
- return Promise.all(pendingBufferViews).then(function (bufferViews) {
+ return Promise.all(pendingBufferViews).then(function(bufferViews) {
const bufferView = bufferViews[0];
const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];
const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];
@@ -28394,7 +28368,7 @@ var GLTFParser = class {
if (this.textureCache[cacheKey]) {
return this.textureCache[cacheKey];
}
- const promise = this.loadImageSource(sourceIndex, loader2).then(function (texture) {
+ const promise = this.loadImageSource(sourceIndex, loader2).then(function(texture) {
texture.flipY = false;
texture.name = textureDef.name || sourceDef.name || "";
if (texture.name === "" && typeof sourceDef.uri === "string" && sourceDef.uri.startsWith("data:image/") === false) {
@@ -28408,7 +28382,7 @@ var GLTFParser = class {
texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;
parser.associations.set(texture, { textures: textureIndex });
return texture;
- }).catch(function () {
+ }).catch(function() {
return null;
});
this.textureCache[cacheKey] = promise;
@@ -28426,7 +28400,7 @@ var GLTFParser = class {
let sourceURI = sourceDef.uri || "";
let isObjectURL = false;
if (sourceDef.bufferView !== void 0) {
- sourceURI = parser.getDependency("bufferView", sourceDef.bufferView).then(function (bufferView) {
+ sourceURI = parser.getDependency("bufferView", sourceDef.bufferView).then(function(bufferView) {
isObjectURL = true;
const blob = new Blob([bufferView], { type: sourceDef.mimeType });
sourceURI = URL2.createObjectURL(blob);
@@ -28435,11 +28409,11 @@ var GLTFParser = class {
} else if (sourceDef.uri === void 0) {
throw new Error("THREE.GLTFLoader: Image " + sourceIndex + " is missing URI and bufferView");
}
- const promise = Promise.resolve(sourceURI).then(function (sourceURI2) {
- return new Promise(function (resolve, reject) {
+ const promise = Promise.resolve(sourceURI).then(function(sourceURI2) {
+ return new Promise(function(resolve, reject) {
let onLoad = resolve;
if (loader2.isImageBitmapLoader === true) {
- onLoad = function (imageBitmap) {
+ onLoad = function(imageBitmap) {
const texture = new Texture(imageBitmap);
texture.needsUpdate = true;
resolve(texture);
@@ -28447,14 +28421,14 @@ var GLTFParser = class {
}
loader2.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject);
});
- }).then(function (texture) {
+ }).then(function(texture) {
if (isObjectURL === true) {
URL2.revokeObjectURL(sourceURI);
}
assignExtrasToUserData(texture, sourceDef);
texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri);
return texture;
- }).catch(function (error) {
+ }).catch(function(error) {
console.error("THREE.GLTFLoader: Couldn't load texture", sourceURI);
throw error;
});
@@ -28470,7 +28444,7 @@ var GLTFParser = class {
*/
assignTexture(materialParams, mapName, mapDef, colorSpace) {
const parser = this;
- return this.getDependency("texture", mapDef.index).then(function (texture) {
+ return this.getDependency("texture", mapDef.index).then(function(texture) {
if (!texture)
return null;
if (mapDef.texCoord !== void 0 && mapDef.texCoord > 0) {
@@ -28602,12 +28576,12 @@ var GLTFParser = class {
pending.push(parser.assignTexture(materialParams, "metalnessMap", metallicRoughness.metallicRoughnessTexture));
pending.push(parser.assignTexture(materialParams, "roughnessMap", metallicRoughness.metallicRoughnessTexture));
}
- materialType = this._invokeOne(function (ext) {
+ materialType = this._invokeOne(function(ext) {
return ext.getMaterialType && ext.getMaterialType(materialIndex);
});
pending.push(
Promise.all(
- this._invokeAll(function (ext) {
+ this._invokeAll(function(ext) {
return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);
})
)
@@ -28652,7 +28626,7 @@ var GLTFParser = class {
if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) {
pending.push(parser.assignTexture(materialParams, "emissiveMap", materialDef.emissiveTexture, SRGBColorSpace2));
}
- return Promise.all(pending).then(function () {
+ return Promise.all(pending).then(function() {
const material = new materialType(materialParams);
if (materialDef.name)
material.name = materialDef.name;
@@ -28686,7 +28660,7 @@ var GLTFParser = class {
const extensions2 = this.extensions;
const cache = this.primitiveCache;
function createDracoPrimitive(primitive) {
- return extensions2[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function (geometry3) {
+ return extensions2[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function(geometry3) {
return addPrimitiveAttributes(geometry3, primitive, parser);
});
}
@@ -28727,7 +28701,7 @@ var GLTFParser = class {
pending.push(material);
}
pending.push(parser.loadGeometries(primitives));
- return Promise.all(pending).then(function (results) {
+ return Promise.all(pending).then(function(results) {
const materials = results.slice(0, results.length - 1);
const geometries = results[results.length - 1];
const meshes = [];
@@ -28832,7 +28806,7 @@ var GLTFParser = class {
} else {
pending.push(null);
}
- return Promise.all(pending).then(function (results) {
+ return Promise.all(pending).then(function(results) {
const inverseBindMatrices = results.pop();
const jointNodes = results;
const bones = [];
@@ -28889,7 +28863,7 @@ var GLTFParser = class {
Promise.all(pendingOutputAccessors),
Promise.all(pendingSamplers),
Promise.all(pendingTargets)
- ]).then(function (dependencies) {
+ ]).then(function(dependencies) {
const nodes = dependencies[0];
const inputAccessors = dependencies[1];
const outputAccessors = dependencies[2];
@@ -28923,10 +28897,10 @@ var GLTFParser = class {
const nodeDef = json.nodes[nodeIndex];
if (nodeDef.mesh === void 0)
return null;
- return parser.getDependency("mesh", nodeDef.mesh).then(function (mesh) {
+ return parser.getDependency("mesh", nodeDef.mesh).then(function(mesh) {
const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);
if (nodeDef.weights !== void 0) {
- node.traverse(function (o2) {
+ node.traverse(function(o2) {
if (!o2.isMesh)
return;
for (let i4 = 0, il = nodeDef.weights.length; i4 < il; i4++) {
@@ -28953,12 +28927,12 @@ var GLTFParser = class {
childPending.push(parser.getDependency("node", childrenDef[i4]));
}
const skeletonPending = nodeDef.skin === void 0 ? Promise.resolve(null) : parser.getDependency("skin", nodeDef.skin);
- return Promise.all([nodePending, Promise.all(childPending), skeletonPending]).then(function (results) {
+ return Promise.all([nodePending, Promise.all(childPending), skeletonPending]).then(function(results) {
const node = results[0];
const children = results[1];
const skeleton = results[2];
if (skeleton !== null) {
- node.traverse(function (mesh) {
+ node.traverse(function(mesh) {
if (!mesh.isSkinnedMesh)
return;
mesh.bind(skeleton, _identityMatrix2);
@@ -28982,7 +28956,7 @@ var GLTFParser = class {
const nodeDef = json.nodes[nodeIndex];
const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : "";
const pending = [];
- const meshPromise = parser._invokeOne(function (ext) {
+ const meshPromise = parser._invokeOne(function(ext) {
return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);
});
if (meshPromise) {
@@ -28990,17 +28964,17 @@ var GLTFParser = class {
}
if (nodeDef.camera !== void 0) {
pending.push(
- parser.getDependency("camera", nodeDef.camera).then(function (camera) {
+ parser.getDependency("camera", nodeDef.camera).then(function(camera) {
return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);
})
);
}
- parser._invokeAll(function (ext) {
+ parser._invokeAll(function(ext) {
return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);
- }).forEach(function (promise) {
+ }).forEach(function(promise) {
pending.push(promise);
});
- this.nodeCache[nodeIndex] = Promise.all(pending).then(function (objects) {
+ this.nodeCache[nodeIndex] = Promise.all(pending).then(function(objects) {
let node;
if (nodeDef.isBone === true) {
node = new Bone();
@@ -29066,7 +29040,7 @@ var GLTFParser = class {
for (let i4 = 0, il = nodeIds.length; i4 < il; i4++) {
pending.push(parser.getDependency("node", nodeIds[i4]));
}
- return Promise.all(pending).then(function (nodes) {
+ return Promise.all(pending).then(function(nodes) {
for (let i4 = 0, il = nodes.length; i4 < il; i4++) {
scene.add(nodes[i4]);
}
@@ -29094,7 +29068,7 @@ var GLTFParser = class {
const targetName = node.name ? node.name : node.uuid;
const targetNames = [];
if (PATH_PROPERTIES2[target2.path] === PATH_PROPERTIES2.weights) {
- node.traverse(function (object) {
+ node.traverse(function(object) {
if (object.morphTargetInfluences) {
targetNames.push(object.name ? object.name : object.uuid);
}
@@ -29220,7 +29194,7 @@ function addPrimitiveAttributes(geometry3, primitiveDef, parser) {
const attributes = primitiveDef.attributes;
const pending = [];
function assignAttributeAccessor(accessorIndex, attributeName) {
- return parser.getDependency("accessor", accessorIndex).then(function (accessor) {
+ return parser.getDependency("accessor", accessorIndex).then(function(accessor) {
geometry3.setAttribute(attributeName, accessor);
});
}
@@ -29231,14 +29205,14 @@ function addPrimitiveAttributes(geometry3, primitiveDef, parser) {
pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));
}
if (primitiveDef.indices !== void 0 && !geometry3.index) {
- const accessor = parser.getDependency("accessor", primitiveDef.indices).then(function (accessor2) {
+ const accessor = parser.getDependency("accessor", primitiveDef.indices).then(function(accessor2) {
geometry3.setIndex(accessor2);
});
pending.push(accessor);
}
assignExtrasToUserData(geometry3, primitiveDef);
computeBounds(geometry3, primitiveDef, parser);
- return Promise.all(pending).then(function () {
+ return Promise.all(pending).then(function() {
return primitiveDef.targets !== void 0 ? addMorphTargets(geometry3, primitiveDef.targets, parser) : geometry3;
});
}
@@ -29628,14 +29602,14 @@ var CSMFrustum = class _CSMFrustum {
this.vertices.near[1].set(1, -1, -1);
this.vertices.near[2].set(-1, -1, -1);
this.vertices.near[3].set(-1, 1, -1);
- this.vertices.near.forEach(function (v5) {
+ this.vertices.near.forEach(function(v5) {
v5.applyMatrix4(inverseProjectionMatrix);
});
this.vertices.far[0].set(1, 1, 1);
this.vertices.far[1].set(1, -1, 1);
this.vertices.far[2].set(-1, -1, 1);
this.vertices.far[3].set(-1, 1, 1);
- this.vertices.far.forEach(function (v5) {
+ this.vertices.far.forEach(function(v5) {
v5.applyMatrix4(inverseProjectionMatrix);
const absZ = Math.abs(v5.z);
if (isOrthographic2) {
@@ -32272,13 +32246,13 @@ var AsciiEffect = class {
domElement.appendChild(oAscii);
let iWidth, iHeight;
let oImg;
- this.setSize = function (w, h) {
+ this.setSize = function(w, h) {
width = w;
height = h;
renderer.setSize(w, h);
initAsciiSize();
};
- this.render = function (scene, camera) {
+ this.render = function(scene, camera) {
renderer.render(scene, camera);
asciifyImage(oAscii);
};
@@ -32651,7 +32625,7 @@ var FBXLoader = class extends Loader {
loader2.setWithCredentials(scope.withCredentials);
loader2.load(
url,
- function (buffer2) {
+ function(buffer2) {
try {
onLoad(scope.parse(buffer2, path));
} catch (e2) {
@@ -32705,7 +32679,7 @@ var FBXTreeParser = class {
const connectionMap = /* @__PURE__ */ new Map();
if ("Connections" in fbxTree) {
const rawConnections = fbxTree.Connections.connections;
- rawConnections.forEach(function (rawConnection) {
+ rawConnections.forEach(function(rawConnection) {
const fromID = rawConnection[0];
const toID = rawConnection[1];
const relationship = rawConnection[2];
@@ -32947,7 +32921,7 @@ var FBXTreeParser = class {
parameters.specular = new Color().fromArray(materialNode.SpecularColor.value);
}
const scope = this;
- connections.get(ID).children.forEach(function (child) {
+ connections.get(ID).children.forEach(function(child) {
const type = child.relationship;
switch (type) {
case "Bump":
@@ -33067,7 +33041,7 @@ var FBXTreeParser = class {
// Each skin node represents a skeleton and each cluster node represents a bone
parseSkeleton(relationships, deformerNodes) {
const rawBones = [];
- relationships.children.forEach(function (child) {
+ relationships.children.forEach(function(child) {
const boneNode = deformerNodes[child.ID];
if (boneNode.attrType !== "Cluster")
return;
@@ -33104,7 +33078,7 @@ var FBXTreeParser = class {
};
if (morphTargetNode.attrType !== "BlendShapeChannel")
return;
- rawMorphTarget.geoID = connections.get(parseInt(child.ID)).children.filter(function (child2) {
+ rawMorphTarget.geoID = connections.get(parseInt(child.ID)).children.filter(function(child2) {
return child2.relationship === void 0;
})[0].ID;
rawMorphTargets.push(rawMorphTarget);
@@ -33117,11 +33091,11 @@ var FBXTreeParser = class {
const modelMap = this.parseModels(deformers.skeletons, geometryMap, materialMap);
const modelNodes = fbxTree.Objects.Model;
const scope = this;
- modelMap.forEach(function (model) {
+ modelMap.forEach(function(model) {
const modelNode = modelNodes[model.ID];
scope.setLookAtProperties(model, modelNode);
const parentConnections = connections.get(model.ID).parents;
- parentConnections.forEach(function (connection) {
+ parentConnections.forEach(function(connection) {
const parent = modelMap.get(connection.ID);
if (parent !== void 0)
parent.add(model);
@@ -33132,7 +33106,7 @@ var FBXTreeParser = class {
});
this.bindSkeleton(deformers.skeletons, geometryMap, modelMap);
this.createAmbientLight();
- sceneGraph.traverse(function (node) {
+ sceneGraph.traverse(function(node) {
if (node.userData.transformData) {
if (node.parent) {
node.userData.transformData.parentMatrix = node.parent.matrix;
@@ -33192,10 +33166,10 @@ var FBXTreeParser = class {
}
buildSkeleton(relationships, skeletons, id, name) {
let bone = null;
- relationships.parents.forEach(function (parent) {
+ relationships.parents.forEach(function(parent) {
for (const ID in skeletons) {
const skeleton = skeletons[ID];
- skeleton.rawBones.forEach(function (rawBone, i4) {
+ skeleton.rawBones.forEach(function(rawBone, i4) {
if (rawBone.ID === parent.ID) {
const subBone = bone;
bone = new Bone();
@@ -33216,7 +33190,7 @@ var FBXTreeParser = class {
createCamera(relationships) {
let model;
let cameraAttribute;
- relationships.children.forEach(function (child) {
+ relationships.children.forEach(function(child) {
const attr = fbxTree.Objects.NodeAttribute[child.ID];
if (attr !== void 0) {
cameraAttribute = attr;
@@ -33277,7 +33251,7 @@ var FBXTreeParser = class {
createLight(relationships) {
let model;
let lightAttribute;
- relationships.children.forEach(function (child) {
+ relationships.children.forEach(function(child) {
const attr = fbxTree.Objects.NodeAttribute[child.ID];
if (attr !== void 0) {
lightAttribute = attr;
@@ -33346,7 +33320,7 @@ var FBXTreeParser = class {
let geometry3 = null;
let material = null;
const materials = [];
- relationships.children.forEach(function (child) {
+ relationships.children.forEach(function(child) {
if (geometryMap.has(child.ID)) {
geometry3 = geometryMap.get(child.ID);
}
@@ -33363,7 +33337,7 @@ var FBXTreeParser = class {
materials.push(material);
}
if ("color" in geometry3.attributes) {
- materials.forEach(function (material2) {
+ materials.forEach(function(material2) {
material2.vertexColors = true;
});
}
@@ -33376,7 +33350,7 @@ var FBXTreeParser = class {
return model;
}
createCurve(relationships, geometryMap) {
- const geometry3 = relationships.children.reduce(function (geo, child) {
+ const geometry3 = relationships.children.reduce(function(geo, child) {
if (geometryMap.has(child.ID))
geo = geometryMap.get(child.ID);
return geo;
@@ -33416,7 +33390,7 @@ var FBXTreeParser = class {
setLookAtProperties(model, modelNode) {
if ("LookAtProperty" in modelNode) {
const children = connections.get(model.ID).children;
- children.forEach(function (child) {
+ children.forEach(function(child) {
if (child.relationship === "LookAtProperty") {
const lookAtTarget = fbxTree.Objects.Model[child.ID];
if ("Lcl_Translation" in lookAtTarget) {
@@ -33437,11 +33411,11 @@ var FBXTreeParser = class {
for (const ID in skeletons) {
const skeleton = skeletons[ID];
const parents = connections.get(parseInt(skeleton.ID)).parents;
- parents.forEach(function (parent) {
+ parents.forEach(function(parent) {
if (geometryMap.has(parent.ID)) {
const geoID = parent.ID;
const geoRelationships = connections.get(geoID);
- geoRelationships.parents.forEach(function (geoConnParent) {
+ geoRelationships.parents.forEach(function(geoConnParent) {
if (modelMap.has(geoConnParent.ID)) {
const model = modelMap.get(geoConnParent.ID);
model.bind(new Skeleton(skeleton.bones), bindMatrices[geoConnParent.ID]);
@@ -33459,7 +33433,7 @@ var FBXTreeParser = class {
if (BindPoseNode[nodeID].attrType === "BindPose" && BindPoseNode[nodeID].NbPoseNodes > 0) {
const poseNodes = BindPoseNode[nodeID].PoseNode;
if (Array.isArray(poseNodes)) {
- poseNodes.forEach(function (poseNode) {
+ poseNodes.forEach(function(poseNode) {
bindMatrices[poseNode.Node] = new Matrix4().fromArray(poseNode.Matrix.a);
});
} else {
@@ -33511,17 +33485,17 @@ var GeometryParser = class {
parseMeshGeometry(relationships, geoNode, deformers) {
const skeletons = deformers.skeletons;
const morphTargets = [];
- const modelNodes = relationships.parents.map(function (parent) {
+ const modelNodes = relationships.parents.map(function(parent) {
return fbxTree.Objects.Model[parent.ID];
});
if (modelNodes.length === 0)
return;
- const skeleton = relationships.children.reduce(function (skeleton2, child) {
+ const skeleton = relationships.children.reduce(function(skeleton2, child) {
if (skeletons[child.ID] !== void 0)
skeleton2 = skeletons[child.ID];
return skeleton2;
}, null);
- relationships.children.forEach(function (child) {
+ relationships.children.forEach(function(child) {
if (deformers.morphTargets[child.ID] !== void 0) {
morphTargets.push(deformers.morphTargets[child.ID]);
}
@@ -33565,7 +33539,7 @@ var GeometryParser = class {
normalAttribute.applyNormalMatrix(normalMatrix);
geo.setAttribute("normal", normalAttribute);
}
- buffers.uvs.forEach(function (uvBuffer, i4) {
+ buffers.uvs.forEach(function(uvBuffer, i4) {
if (UV1 === "uv2")
i4++;
const name = i4 === 0 ? "uv" : `uv${i4}`;
@@ -33574,7 +33548,7 @@ var GeometryParser = class {
if (geoInfo.material && geoInfo.material.mappingType !== "AllSame") {
let prevMaterialIndex = buffers.materialIndex[0];
let startIndex = 0;
- buffers.materialIndex.forEach(function (currentIndex, i4) {
+ buffers.materialIndex.forEach(function(currentIndex, i4) {
if (currentIndex !== prevMaterialIndex) {
geo.addGroup(startIndex, i4 - startIndex, prevMaterialIndex);
prevMaterialIndex = currentIndex;
@@ -33621,8 +33595,8 @@ var GeometryParser = class {
geoInfo.weightTable = {};
if (skeleton !== null) {
geoInfo.skeleton = skeleton;
- skeleton.rawBones.forEach(function (rawBone, i4) {
- rawBone.indices.forEach(function (index2, j) {
+ skeleton.rawBones.forEach(function(rawBone, i4) {
+ rawBone.indices.forEach(function(index2, j) {
if (geoInfo.weightTable[index2] === void 0)
geoInfo.weightTable[index2] = [];
geoInfo.weightTable[index2].push({
@@ -33654,7 +33628,7 @@ var GeometryParser = class {
let faceWeights = [];
let faceWeightIndices = [];
const scope = this;
- geoInfo.vertexIndices.forEach(function (vertexIndex, polygonVertexIndex) {
+ geoInfo.vertexIndices.forEach(function(vertexIndex, polygonVertexIndex) {
let materialIndex;
let endOfFace = false;
if (vertexIndex < 0) {
@@ -33670,7 +33644,7 @@ var GeometryParser = class {
}
if (geoInfo.skeleton) {
if (geoInfo.weightTable[vertexIndex] !== void 0) {
- geoInfo.weightTable[vertexIndex].forEach(function (wt) {
+ geoInfo.weightTable[vertexIndex].forEach(function(wt) {
weights.push(wt.weight);
weightIndices.push(wt.id);
});
@@ -33684,10 +33658,10 @@ var GeometryParser = class {
}
const wIndex = [0, 0, 0, 0];
const Weight = [0, 0, 0, 0];
- weights.forEach(function (weight, weightIndex) {
+ weights.forEach(function(weight, weightIndex) {
let currentWeight = weight;
let currentIndex = weightIndices[weightIndex];
- Weight.forEach(function (comparedWeight, comparedWeightIndex, comparedWeightArray) {
+ Weight.forEach(function(comparedWeight, comparedWeightIndex, comparedWeightArray) {
if (currentWeight > comparedWeight) {
comparedWeightArray[comparedWeightIndex] = currentWeight;
currentWeight = comparedWeight;
@@ -33717,7 +33691,7 @@ var GeometryParser = class {
materialIndex = getData(polygonVertexIndex, polygonIndex, vertexIndex, geoInfo.material)[0];
}
if (geoInfo.uv) {
- geoInfo.uv.forEach(function (uv, i4) {
+ geoInfo.uv.forEach(function(uv, i4) {
const data = getData(polygonVertexIndex, polygonIndex, vertexIndex, uv);
if (faceUVs[i4] === void 0) {
faceUVs[i4] = [];
@@ -33818,7 +33792,7 @@ var GeometryParser = class {
buffers.normal.push(faceNormals[i4 * 3 + 2]);
}
if (geoInfo.uv) {
- geoInfo.uv.forEach(function (uv, j) {
+ geoInfo.uv.forEach(function(uv, j) {
if (buffers.uvs[j] === void 0)
buffers.uvs[j] = [];
buffers.uvs[j].push(faceUVs[j][0]);
@@ -33837,8 +33811,8 @@ var GeometryParser = class {
parentGeo.morphTargetsRelative = true;
parentGeo.morphAttributes.position = [];
const scope = this;
- morphTargets.forEach(function (morphTarget) {
- morphTarget.rawTargets.forEach(function (rawTarget) {
+ morphTargets.forEach(function(morphTarget) {
+ morphTarget.rawTargets.forEach(function(rawTarget) {
const morphGeoNode = fbxTree.Objects.Geometry[rawTarget.geoID];
if (morphGeoNode !== void 0) {
scope.genMorphGeometry(parentGeo, parentGeoNode, morphGeoNode, preTransform, rawTarget.name);
@@ -34068,12 +34042,12 @@ var AnimationParser = class {
const connection = connections.get(parseInt(nodeID));
if (connection !== void 0) {
const children = connection.children;
- children.forEach(function (child, i4) {
+ children.forEach(function(child, i4) {
if (curveNodesMap.has(child.ID)) {
const curveNode = curveNodesMap.get(child.ID);
if (curveNode.curves.x !== void 0 || curveNode.curves.y !== void 0 || curveNode.curves.z !== void 0) {
if (layerCurveNodes[i4] === void 0) {
- const modelID = connections.get(child.ID).parents.filter(function (parent) {
+ const modelID = connections.get(child.ID).parents.filter(function(parent) {
return parent.relationship !== void 0;
})[0].ID;
if (modelID !== void 0) {
@@ -34089,7 +34063,7 @@ var AnimationParser = class {
initialRotation: [0, 0, 0],
initialScale: [1, 1, 1]
};
- sceneGraph.traverse(function (child2) {
+ sceneGraph.traverse(function(child2) {
if (child2.ID === rawModel.id) {
node.transform = child2.matrix;
if (child2.userData.transformData)
@@ -34109,7 +34083,7 @@ var AnimationParser = class {
layerCurveNodes[i4][curveNode.attr] = curveNode;
} else if (curveNode.curves.morph !== void 0) {
if (layerCurveNodes[i4] === void 0) {
- const deformerID = connections.get(child.ID).parents.filter(function (parent) {
+ const deformerID = connections.get(child.ID).parents.filter(function(parent) {
return parent.relationship !== void 0;
})[0].ID;
const morpherID = connections.get(deformerID).parents[0].ID;
@@ -34154,7 +34128,7 @@ var AnimationParser = class {
addClip(rawClip) {
let tracks = [];
const scope = this;
- rawClip.layer.forEach(function (rawTracks) {
+ rawClip.layer.forEach(function(rawTracks) {
tracks = tracks.concat(scope.generateTracks(rawTracks));
});
return new AnimationClip(rawClip.name, -1, tracks);
@@ -34251,7 +34225,7 @@ var AnimationParser = class {
}
generateMorphTrack(rawTracks) {
const curves = rawTracks.DeformPercent.curves.morph;
- const values = curves.values.map(function (val) {
+ const values = curves.values.map(function(val) {
return val / 100;
});
const morphNum = sceneGraph.getObjectByName(rawTracks.modelName).morphTargetDictionary[rawTracks.morphName];
@@ -34271,7 +34245,7 @@ var AnimationParser = class {
times = times.concat(curves.y.times);
if (curves.z !== void 0)
times = times.concat(curves.z.times);
- times = times.sort(function (a6, b5) {
+ times = times.sort(function(a6, b5) {
return a6 - b5;
});
if (times.length > 1) {
@@ -34295,7 +34269,7 @@ var AnimationParser = class {
let xIndex = -1;
let yIndex = -1;
let zIndex = -1;
- times.forEach(function (time) {
+ times.forEach(function(time) {
if (curves.x)
xIndex = curves.x.times.indexOf(time);
if (curves.y)
@@ -34386,7 +34360,7 @@ var TextParser = class {
this.currentPropName = "";
const scope = this;
const split = text.split(/[\r\n]+/);
- split.forEach(function (line, i4) {
+ split.forEach(function(line, i4) {
const matchComment = line.match(/^[\s\t]*;/);
const matchEmpty = line.match(/^[\s\t]*$/);
if (matchComment || matchEmpty)
@@ -34408,7 +34382,7 @@ var TextParser = class {
}
parseNodeBegin(line, property) {
const nodeName = property[1].trim().replace(/^"/, "").replace(/"$/, "");
- const nodeAttrs = property[2].split(",").map(function (attr) {
+ const nodeAttrs = property[2].split(",").map(function(attr) {
return attr.trim().replace(/^"/, "").replace(/"$/, "");
});
const node = { name: nodeName };
@@ -34476,7 +34450,7 @@ var TextParser = class {
const from = parseInt(connProps[0]);
const to = parseInt(connProps[1]);
let rest = propValue.split(",").slice(3);
- rest = rest.map(function (elem) {
+ rest = rest.map(function(elem) {
return elem.trim().replace(/^"/, "");
});
propName = "connections";
@@ -34510,7 +34484,7 @@ var TextParser = class {
}
// parse "Property70"
parseNodeSpecialProperty(line, propName, propValue) {
- const props = propValue.split('",').map(function (prop) {
+ const props = propValue.split('",').map(function(prop) {
return prop.trim().replace(/^\"/, "").replace(/\s/, "_");
});
const innerPropName = props[0];
@@ -34615,7 +34589,7 @@ var BinaryParser = class {
}
} else if (name === "Connections" && subNode.name === "C") {
const array = [];
- subNode.propertyList.forEach(function (property, i4) {
+ subNode.propertyList.forEach(function(property, i4) {
if (i4 !== 0)
array.push(property);
});
@@ -34625,7 +34599,7 @@ var BinaryParser = class {
node.connections.push(array);
} else if (subNode.name === "Properties70") {
const keys = Object.keys(subNode);
- keys.forEach(function (key) {
+ keys.forEach(function(key) {
node[key] = subNode[key];
});
} else if (name === "Properties70" && subNode.name === "P") {
@@ -35056,7 +35030,7 @@ function getEulerOrder(order) {
return enums[order];
}
function parseNumberArray(value) {
- const array = value.split(",").map(function (val) {
+ const array = value.split(",").map(function(val) {
return parseFloat(val);
});
return array;
@@ -35168,7 +35142,7 @@ function createPath(char, scale5, offsetX, offsetY, data) {
let x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;
if (glyph.o) {
const outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(" "));
- for (let i4 = 0, l2 = outline.length; i4 < l2;) {
+ for (let i4 = 0, l2 = outline.length; i4 < l2; ) {
const action = outline[i4++];
switch (action) {
case "m":
@@ -35219,13 +35193,13 @@ var Data3DTexture = class extends Texture {
};
// node_modules/three-stdlib/loaders/XLoader.js
-var XLoader = (function () {
- var classCallCheck = function (instance2, Constructor) {
+var XLoader = (function() {
+ var classCallCheck = function(instance2, Constructor) {
if (!(instance2 instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
};
- var createClass = /* @__PURE__ */ (function () {
+ var createClass = /* @__PURE__ */ (function() {
function defineProperties(target2, props) {
for (let i22 = 0; i22 < props.length; i22++) {
var descriptor = props[i22];
@@ -35236,7 +35210,7 @@ var XLoader = (function () {
Object.defineProperty(target2, descriptor.key, descriptor);
}
}
- return function (Constructor, protoProps, staticProps) {
+ return function(Constructor, protoProps, staticProps) {
if (protoProps)
defineProperties(Constructor.prototype, protoProps);
if (staticProps)
@@ -35263,7 +35237,7 @@ var XLoader = (function () {
this.keyFrames = [];
this.InverseMx = null;
};
- var XAnimationObj = (function () {
+ var XAnimationObj = (function() {
function XAnimationObj2(_flags) {
classCallCheck(this, XAnimationObj2);
this.fps = 30;
@@ -35304,7 +35278,7 @@ var XLoader = (function () {
refObj.name = XAnimationInfo2.boneName;
refObj.parent = "";
refObj.keys = this.keyFrameRefactor(XAnimationInfo2);
- refObj.copy = function () {
+ refObj.copy = function() {
return Object.assign({}, this);
};
return refObj;
@@ -35353,7 +35327,7 @@ var XLoader = (function () {
this.time = 0;
this.matrix = null;
};
- var XLoader2 = (function () {
+ var XLoader2 = (function() {
function XLoader3(manager) {
Loader.call(this, manager);
classCallCheck(this, XLoader3);
@@ -35413,7 +35387,7 @@ var XLoader = (function () {
loader2.setWithCredentials(this.withCredentials);
loader2.load(
this.url,
- function (response) {
+ function(response) {
try {
_this.parse(response, onLoad);
} catch (e2) {
@@ -35630,11 +35604,11 @@ var XLoader = (function () {
var _this2 = this;
this._mainProc();
if (this._currentObject.parent || this._currentObject.children.length > 0 || !this._currentObject.worked) {
- setTimeout(function () {
+ setTimeout(function() {
_this2._mainloop();
}, 1);
} else {
- setTimeout(function () {
+ setTimeout(function() {
_this2.onLoad({
models: _this2.Meshes,
animations: _this2.animations
@@ -36615,7 +36589,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
var coreJsData = root$1["__core-js_shared__"];
const coreJsData$1 = coreJsData;
- var maskSrcKey = (function () {
+ var maskSrcKey = (function() {
var uid = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || "");
return uid ? "Symbol(src)_1." + uid : "";
})();
@@ -36662,10 +36636,10 @@ var { CstParser, Lexer, createToken } = (() => {
var WeakMap2 = getNative(root$1, "WeakMap");
const WeakMap$1 = WeakMap2;
var objectCreate = Object.create;
- var baseCreate = /* @__PURE__ */ (function () {
+ var baseCreate = /* @__PURE__ */ (function() {
function object() {
}
- return function (proto) {
+ return function(proto) {
if (!isObject(proto)) {
return {};
}
@@ -36706,7 +36680,7 @@ var { CstParser, Lexer, createToken } = (() => {
var nativeNow = Date.now;
function shortOut(func) {
var count = 0, lastCalled = 0;
- return function () {
+ return function() {
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
@@ -36720,11 +36694,11 @@ var { CstParser, Lexer, createToken } = (() => {
};
}
function constant(value) {
- return function () {
+ return function() {
return value;
};
}
- var defineProperty = (function () {
+ var defineProperty = (function() {
try {
var func = getNative(Object, "defineProperty");
func({}, "", {});
@@ -36733,7 +36707,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
})();
const defineProperty$1 = defineProperty;
- var baseSetToString = !defineProperty$1 ? identity3 : function (func, string) {
+ var baseSetToString = !defineProperty$1 ? identity3 : function(func, string) {
return defineProperty$1(func, "toString", {
configurable: true,
enumerable: false,
@@ -36832,7 +36806,7 @@ var { CstParser, Lexer, createToken } = (() => {
var nativeMax$3 = Math.max;
function overRest(func, start, transform) {
start = nativeMax$3(start === void 0 ? func.length - 1 : start, 0);
- return function () {
+ return function() {
var args = arguments, index2 = -1, length3 = nativeMax$3(args.length - start, 0), array = Array(length3);
while (++index2 < length3) {
array[index2] = args[start + index2];
@@ -36867,7 +36841,7 @@ var { CstParser, Lexer, createToken } = (() => {
return false;
}
function createAssigner(assigner) {
- return baseRest(function (object, sources) {
+ return baseRest(function(object, sources) {
var index2 = -1, length3 = sources.length, customizer = length3 > 1 ? sources[length3 - 1] : void 0, guard = length3 > 2 ? sources[2] : void 0;
customizer = assigner.length > 3 && typeof customizer == "function" ? (length3--, customizer) : void 0;
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
@@ -36904,10 +36878,10 @@ var { CstParser, Lexer, createToken } = (() => {
var hasOwnProperty$d = objectProto$e.hasOwnProperty;
var propertyIsEnumerable$1 = objectProto$e.propertyIsEnumerable;
var isArguments = baseIsArguments(
- /* @__PURE__ */(function () {
+ /* @__PURE__ */ (function() {
return arguments;
})()
- ) ? baseIsArguments : function (value) {
+ ) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty$d.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
};
const isArguments$1 = isArguments;
@@ -36930,7 +36904,7 @@ var { CstParser, Lexer, createToken } = (() => {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseUnary(func) {
- return function (value) {
+ return function(value) {
return func(value);
};
}
@@ -36938,7 +36912,7 @@ var { CstParser, Lexer, createToken } = (() => {
var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module;
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
var freeProcess = moduleExports$1 && freeGlobal$1.process;
- var nodeUtil = (function () {
+ var nodeUtil = (function() {
try {
var types2 = freeModule$1 && freeModule$1.require && freeModule$1.require("util").types;
if (types2) {
@@ -36958,17 +36932,17 @@ var { CstParser, Lexer, createToken } = (() => {
var isArr = isArray$1(value), isArg = !isArr && isArguments$1(value), isBuff = !isArr && !isArg && isBuffer$1(value), isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length3 = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty$c.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
- (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
- isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
- isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
- isIndex(key, length3)))) {
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
+ isIndex(key, length3)))) {
result.push(key);
}
}
return result;
}
function overArg(func, transform) {
- return function (arg) {
+ return function(arg) {
return func(transform(arg));
};
}
@@ -36993,7 +36967,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
var objectProto$b = Object.prototype;
var hasOwnProperty$a = objectProto$b.hasOwnProperty;
- var assign3 = createAssigner(function (object, source) {
+ var assign3 = createAssigner(function(object, source) {
if (isPrototype(source) || isArrayLike(source)) {
copyObject(source, keys(source), object);
return;
@@ -37202,7 +37176,7 @@ var { CstParser, Lexer, createToken } = (() => {
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
throw new TypeError(FUNC_ERROR_TEXT$1);
}
- var memoized = function () {
+ var memoized = function() {
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
@@ -37217,7 +37191,7 @@ var { CstParser, Lexer, createToken } = (() => {
memoize.Cache = MapCache;
var MAX_MEMOIZE_SIZE = 500;
function memoizeCapped(func) {
- var result = memoize(func, function (key) {
+ var result = memoize(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
@@ -37228,12 +37202,12 @@ var { CstParser, Lexer, createToken } = (() => {
}
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reEscapeChar = /\\(\\)?/g;
- var stringToPath = memoizeCapped(function (string) {
+ var stringToPath = memoizeCapped(function(string) {
var result = [];
if (string.charCodeAt(0) === 46) {
result.push("");
}
- string.replace(rePropName, function (match, number, quote, subString) {
+ string.replace(rePropName, function(match, number, quote, subString) {
result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
});
return result;
@@ -37404,12 +37378,12 @@ var { CstParser, Lexer, createToken } = (() => {
var objectProto$7 = Object.prototype;
var propertyIsEnumerable = objectProto$7.propertyIsEnumerable;
var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
- var getSymbols = !nativeGetSymbols$1 ? stubArray : function (object) {
+ var getSymbols = !nativeGetSymbols$1 ? stubArray : function(object) {
if (object == null) {
return [];
}
object = Object(object);
- return arrayFilter(nativeGetSymbols$1(object), function (symbol) {
+ return arrayFilter(nativeGetSymbols$1(object), function(symbol) {
return propertyIsEnumerable.call(object, symbol);
});
};
@@ -37418,7 +37392,7 @@ var { CstParser, Lexer, createToken } = (() => {
return copyObject(source, getSymbols$1(source), object);
}
var nativeGetSymbols = Object.getOwnPropertySymbols;
- var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {
+ var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
var result = [];
while (object) {
arrayPush(result, getSymbols$1(object));
@@ -37451,7 +37425,7 @@ var { CstParser, Lexer, createToken } = (() => {
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$2), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap$1);
var getTag = baseGetTag;
if (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$3 || Map$2 && getTag(new Map$2()) != mapTag$5 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$5 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {
- getTag = function (value) {
+ getTag = function(value) {
var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
if (ctorString) {
switch (ctorString) {
@@ -37605,17 +37579,17 @@ var { CstParser, Lexer, createToken } = (() => {
}
stack.set(value, result);
if (isSet$1(value)) {
- value.forEach(function (subValue3) {
+ value.forEach(function(subValue3) {
result.add(baseClone(subValue3, bitmask, customizer, subValue3, value, stack));
});
} else if (isMap$1(value)) {
- value.forEach(function (subValue3, key2) {
+ value.forEach(function(subValue3, key2) {
result.set(key2, baseClone(subValue3, bitmask, customizer, key2, value, stack));
});
}
var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
var props = isArr ? void 0 : keysFunc(value);
- arrayEach(props || value, function (subValue3, key2) {
+ arrayEach(props || value, function(subValue3, key2) {
if (props) {
key2 = subValue3;
subValue3 = value[key2];
@@ -37694,7 +37668,7 @@ var { CstParser, Lexer, createToken } = (() => {
break;
}
if (seen) {
- if (!arraySome(other, function (othValue2, othIndex) {
+ if (!arraySome(other, function(othValue2, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
@@ -37713,14 +37687,14 @@ var { CstParser, Lexer, createToken } = (() => {
}
function mapToArray(map22) {
var index2 = -1, result = Array(map22.size);
- map22.forEach(function (value, key) {
+ map22.forEach(function(value, key) {
result[++index2] = [key, value];
});
return result;
}
function setToArray(set) {
var index2 = -1, result = Array(set.size);
- set.forEach(function (value) {
+ set.forEach(function(value) {
result[++index2] = value;
});
return result;
@@ -37908,7 +37882,7 @@ var { CstParser, Lexer, createToken } = (() => {
return result;
}
function matchesStrictComparable(key, srcValue) {
- return function (object) {
+ return function(object) {
if (object == null) {
return false;
}
@@ -37920,7 +37894,7 @@ var { CstParser, Lexer, createToken } = (() => {
if (matchData.length == 1 && matchData[0][2]) {
return matchesStrictComparable(matchData[0][0], matchData[0][1]);
}
- return function (object) {
+ return function(object) {
return object === source || baseIsMatch(object, source, matchData);
};
}
@@ -37951,18 +37925,18 @@ var { CstParser, Lexer, createToken } = (() => {
if (isKey(path) && isStrictComparable(srcValue)) {
return matchesStrictComparable(toKey(path), srcValue);
}
- return function (object) {
+ return function(object) {
var objValue = get(object, path);
return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
};
}
function baseProperty(key) {
- return function (object) {
+ return function(object) {
return object == null ? void 0 : object[key];
};
}
function basePropertyDeep(path) {
- return function (object) {
+ return function(object) {
return baseGet(object, path);
};
}
@@ -37990,7 +37964,7 @@ var { CstParser, Lexer, createToken } = (() => {
return accumulator;
}
function createBaseFor(fromRight) {
- return function (object, iteratee, keysFunc) {
+ return function(object, iteratee, keysFunc) {
var index2 = -1, iterable = Object(object), props = keysFunc(object), length3 = props.length;
while (length3--) {
var key = props[fromRight ? length3 : ++index2];
@@ -38007,7 +37981,7 @@ var { CstParser, Lexer, createToken } = (() => {
return object && baseFor$1(object, iteratee, keys);
}
function createBaseEach(eachFunc, fromRight) {
- return function (collection, iteratee) {
+ return function(collection, iteratee) {
if (collection == null) {
return collection;
}
@@ -38026,20 +38000,20 @@ var { CstParser, Lexer, createToken } = (() => {
var baseEach = createBaseEach(baseForOwn);
const baseEach$1 = baseEach;
function baseAggregator(collection, setter, iteratee, accumulator) {
- baseEach$1(collection, function (value, key, collection2) {
+ baseEach$1(collection, function(value, key, collection2) {
setter(accumulator, value, iteratee(value), collection2);
});
return accumulator;
}
function createAggregator(setter, initializer) {
- return function (collection, iteratee) {
+ return function(collection, iteratee) {
var func = isArray$1(collection) ? arrayAggregator : baseAggregator, accumulator = initializer ? initializer() : {};
return func(collection, setter, baseIteratee(iteratee), accumulator);
};
}
var objectProto$3 = Object.prototype;
var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
- var defaults2 = baseRest(function (object, sources) {
+ var defaults2 = baseRest(function(object, sources) {
object = Object(object);
var index2 = -1;
var length3 = sources.length;
@@ -38093,24 +38067,24 @@ var { CstParser, Lexer, createToken } = (() => {
values2 = new SetCache(values2);
}
outer:
- while (++index2 < length3) {
- var value = array[index2], computed = iteratee == null ? value : iteratee(value);
- value = comparator || value !== 0 ? value : 0;
- if (isCommon && computed === computed) {
- var valuesIndex = valuesLength;
- while (valuesIndex--) {
- if (values2[valuesIndex] === computed) {
- continue outer;
+ while (++index2 < length3) {
+ var value = array[index2], computed = iteratee == null ? value : iteratee(value);
+ value = comparator || value !== 0 ? value : 0;
+ if (isCommon && computed === computed) {
+ var valuesIndex = valuesLength;
+ while (valuesIndex--) {
+ if (values2[valuesIndex] === computed) {
+ continue outer;
+ }
}
+ result.push(value);
+ } else if (!includes2(values2, computed, comparator)) {
+ result.push(value);
}
- result.push(value);
- } else if (!includes2(values2, computed, comparator)) {
- result.push(value);
}
- }
return result;
}
- var difference = baseRest(function (array, values2) {
+ var difference = baseRest(function(array, values2) {
return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values2, 1, isArrayLikeObject, true)) : [];
});
const difference$1 = difference;
@@ -38153,7 +38127,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
function baseEvery(collection, predicate) {
var result = true;
- baseEach$1(collection, function (value, index2, collection2) {
+ baseEach$1(collection, function(value, index2, collection2) {
result = !!predicate(value, index2, collection2);
return result;
});
@@ -38168,7 +38142,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
function baseFilter(collection, predicate) {
var result = [];
- baseEach$1(collection, function (value, index2, collection2) {
+ baseEach$1(collection, function(value, index2, collection2) {
if (predicate(value, index2, collection2)) {
result.push(value);
}
@@ -38180,12 +38154,12 @@ var { CstParser, Lexer, createToken } = (() => {
return func(collection, baseIteratee(predicate));
}
function createFind(findIndexFunc) {
- return function (collection, predicate, fromIndex) {
+ return function(collection, predicate, fromIndex) {
var iterable = Object(collection);
if (!isArrayLike(collection)) {
var iteratee = baseIteratee(predicate);
collection = keys(collection);
- predicate = function (key) {
+ predicate = function(key) {
return iteratee(iterable[key], key, iterable);
};
}
@@ -38212,7 +38186,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
function baseMap(collection, iteratee) {
var index2 = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
- baseEach$1(collection, function (value, key, collection2) {
+ baseEach$1(collection, function(value, key, collection2) {
result[++index2] = iteratee(value, key, collection2);
});
return result;
@@ -38226,7 +38200,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
var objectProto$2 = Object.prototype;
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
- var groupBy = createAggregator(function (result, value, key) {
+ var groupBy = createAggregator(function(result, value, key) {
if (hasOwnProperty$2.call(result, key)) {
result[key].push(value);
} else {
@@ -38247,7 +38221,7 @@ var { CstParser, Lexer, createToken } = (() => {
return typeof value == "string" || !isArray$1(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
}
function baseValues(object, props) {
- return arrayMap(props, function (key) {
+ return arrayMap(props, function(key) {
return object[key];
});
}
@@ -38315,7 +38289,7 @@ var { CstParser, Lexer, createToken } = (() => {
if (typeof predicate != "function") {
throw new TypeError(FUNC_ERROR_TEXT);
}
- return function () {
+ return function() {
var args = arguments;
switch (args.length) {
case 0:
@@ -38367,16 +38341,16 @@ var { CstParser, Lexer, createToken } = (() => {
if (object == null) {
return {};
}
- var props = arrayMap(getAllKeysIn(object), function (prop) {
+ var props = arrayMap(getAllKeysIn(object), function(prop) {
return [prop];
});
predicate = baseIteratee(predicate);
- return basePickBy(object, props, function (value, path) {
+ return basePickBy(object, props, function(value, path) {
return predicate(value, path[0]);
});
}
function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
- eachFunc(collection, function (value, index2, collection2) {
+ eachFunc(collection, function(value, index2, collection2) {
accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index2, collection2);
});
return accumulator;
@@ -38391,7 +38365,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
function baseSome(collection, predicate) {
var result;
- baseEach$1(collection, function (value, index2, collection2) {
+ baseEach$1(collection, function(value, index2, collection2) {
result = predicate(value, index2, collection2);
return !result;
});
@@ -38405,7 +38379,7 @@ var { CstParser, Lexer, createToken } = (() => {
return func(collection, baseIteratee(predicate));
}
var INFINITY = 1 / 0;
- var createSet = !(Set$1 && 1 / setToArray(new Set$1([, -0]))[1] == INFINITY) ? noop2 : function (values2) {
+ var createSet = !(Set$1 && 1 / setToArray(new Set$1([, -0]))[1] == INFINITY) ? noop2 : function(values2) {
return new Set$1(values2);
};
const createSet$1 = createSet;
@@ -38427,27 +38401,27 @@ var { CstParser, Lexer, createToken } = (() => {
seen = iteratee ? [] : result;
}
outer:
- while (++index2 < length3) {
- var value = array[index2], computed = iteratee ? iteratee(value) : value;
- value = comparator || value !== 0 ? value : 0;
- if (isCommon && computed === computed) {
- var seenIndex = seen.length;
- while (seenIndex--) {
- if (seen[seenIndex] === computed) {
- continue outer;
+ while (++index2 < length3) {
+ var value = array[index2], computed = iteratee ? iteratee(value) : value;
+ value = comparator || value !== 0 ? value : 0;
+ if (isCommon && computed === computed) {
+ var seenIndex = seen.length;
+ while (seenIndex--) {
+ if (seen[seenIndex] === computed) {
+ continue outer;
+ }
}
+ if (iteratee) {
+ seen.push(computed);
+ }
+ result.push(value);
+ } else if (!includes2(seen, computed, comparator)) {
+ if (seen !== result) {
+ seen.push(computed);
+ }
+ result.push(value);
}
- if (iteratee) {
- seen.push(computed);
- }
- result.push(value);
- } else if (!includes2(seen, computed, comparator)) {
- if (seen !== result) {
- seen.push(computed);
- }
- result.push(value);
}
- }
return result;
}
function uniq(array) {
@@ -38971,7 +38945,7 @@ var { CstParser, Lexer, createToken } = (() => {
}
function insertToSet(item, set) {
if (Array.isArray(item)) {
- item.forEach(function (subItem) {
+ item.forEach(function(subItem) {
set.push(subItem);
});
} else {
@@ -40034,10 +40008,10 @@ var { CstParser, Lexer, createToken } = (() => {
if (isRegExp$1(currPattern)) {
const regExpSource = currPattern.source;
if (regExpSource.length === 1 && // only these regExp meta characters which can appear in a length one regExp
- regExpSource !== "^" && regExpSource !== "$" && regExpSource !== "." && !currPattern.ignoreCase) {
+ regExpSource !== "^" && regExpSource !== "$" && regExpSource !== "." && !currPattern.ignoreCase) {
return regExpSource;
} else if (regExpSource.length === 2 && regExpSource[0] === "\\" && // not a meta character
- !includes(["d", "D", "s", "S", "t", "r", "n", "t", "0", "c", "b", "B", "f", "v", "w", "W"], regExpSource[1])) {
+ !includes(["d", "D", "s", "S", "t", "r", "n", "t", "0", "c", "b", "B", "f", "v", "w", "W"], regExpSource[1])) {
return regExpSource[1];
} else {
return options.useSticky ? addStickyFlag(currPattern) : addStartOfInput(currPattern);
@@ -40589,7 +40563,7 @@ See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;
}
const LineTerminatorOptimizedTester = {
// implements /\n|\r\n?/g.test
- test: function (text) {
+ test: function(text) {
const len = text.length;
for (let i4 = this.lastIndex; i4 < len; i4++) {
const c2 = text.charCodeAt(i4);
@@ -40782,7 +40756,7 @@ See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;
}
};
var LexerDefinitionErrorType;
- (function (LexerDefinitionErrorType2) {
+ (function(LexerDefinitionErrorType2) {
LexerDefinitionErrorType2[LexerDefinitionErrorType2["MISSING_PATTERN"] = 0] = "MISSING_PATTERN";
LexerDefinitionErrorType2[LexerDefinitionErrorType2["INVALID_PATTERN"] = 1] = "INVALID_PATTERN";
LexerDefinitionErrorType2[LexerDefinitionErrorType2["EOI_ANCHOR_FOUND"] = 2] = "EOI_ANCHOR_FOUND";
@@ -41057,8 +41031,8 @@ See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;
}
const pop_mode = (popToken) => {
if (modeStack.length === 1 && // if we have both a POP_MODE and a PUSH_MODE this is in-fact a "transition"
- // So no error should occur.
- popToken.tokenType.PUSH_MODE === void 0) {
+ // So no error should occur.
+ popToken.tokenType.PUSH_MODE === void 0) {
const msg2 = this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken);
errors.push({
offset: popToken.startOffset,
@@ -42037,7 +42011,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
};
}
var PROD_TYPE;
- (function (PROD_TYPE2) {
+ (function(PROD_TYPE2) {
PROD_TYPE2[PROD_TYPE2["OPTION"] = 0] = "OPTION";
PROD_TYPE2[PROD_TYPE2["REPETITION"] = 1] = "REPETITION";
PROD_TYPE2[PROD_TYPE2["REPETITION_MANDATORY"] = 2] = "REPETITION_MANDATORY";
@@ -42080,7 +42054,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
});
});
if (hasPredicates) {
- return function (orAlts) {
+ return function(orAlts) {
const predicates = map2(orAlts, (currAlt) => currAlt.GATE);
for (let t3 = 0; t3 < numOfAlts; t3++) {
const currAlt = alts[t3];
@@ -42090,17 +42064,17 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
continue;
}
nextPath:
- for (let j = 0; j < currNumOfPaths; j++) {
- const currPath = currAlt[j];
- const currPathLength = currPath.length;
- for (let i4 = 0; i4 < currPathLength; i4++) {
- const nextToken = this.LA(i4 + 1);
- if (tokenMatcher2(nextToken, currPath[i4]) === false) {
- continue nextPath;
+ for (let j = 0; j < currNumOfPaths; j++) {
+ const currPath = currAlt[j];
+ const currPathLength = currPath.length;
+ for (let i4 = 0; i4 < currPathLength; i4++) {
+ const nextToken = this.LA(i4 + 1);
+ if (tokenMatcher2(nextToken, currPath[i4]) === false) {
+ continue nextPath;
+ }
}
+ return t3;
}
- return t3;
- }
}
return void 0;
};
@@ -42125,27 +42099,27 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
},
{}
);
- return function () {
+ return function() {
const nextToken = this.LA(1);
return choiceToAlt[nextToken.tokenTypeIdx];
};
} else {
- return function () {
+ return function() {
for (let t3 = 0; t3 < numOfAlts; t3++) {
const currAlt = alts[t3];
const currNumOfPaths = currAlt.length;
nextPath:
- for (let j = 0; j < currNumOfPaths; j++) {
- const currPath = currAlt[j];
- const currPathLength = currPath.length;
- for (let i4 = 0; i4 < currPathLength; i4++) {
- const nextToken = this.LA(i4 + 1);
- if (tokenMatcher2(nextToken, currPath[i4]) === false) {
- continue nextPath;
+ for (let j = 0; j < currNumOfPaths; j++) {
+ const currPath = currAlt[j];
+ const currPathLength = currPath.length;
+ for (let i4 = 0; i4 < currPathLength; i4++) {
+ const nextToken = this.LA(i4 + 1);
+ if (tokenMatcher2(nextToken, currPath[i4]) === false) {
+ continue nextPath;
+ }
}
+ return t3;
}
- return t3;
- }
}
return void 0;
};
@@ -42161,7 +42135,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
if (singleTokensTypes.length === 1 && isEmpty(singleTokensTypes[0].categoryMatches)) {
const expectedTokenType = singleTokensTypes[0];
const expectedTokenUniqueKey = expectedTokenType.tokenTypeIdx;
- return function () {
+ return function() {
return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey;
};
} else {
@@ -42176,25 +42150,25 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
},
[]
);
- return function () {
+ return function() {
const nextToken = this.LA(1);
return choiceToAlt[nextToken.tokenTypeIdx] === true;
};
}
} else {
- return function () {
+ return function() {
nextPath:
- for (let j = 0; j < numOfPaths; j++) {
- const currPath = alt[j];
- const currPathLength = currPath.length;
- for (let i4 = 0; i4 < currPathLength; i4++) {
- const nextToken = this.LA(i4 + 1);
- if (tokenMatcher2(nextToken, currPath[i4]) === false) {
- continue nextPath;
+ for (let j = 0; j < numOfPaths; j++) {
+ const currPath = alt[j];
+ const currPathLength = currPath.length;
+ for (let i4 = 0; i4 < currPathLength; i4++) {
+ const nextToken = this.LA(i4 + 1);
+ if (tokenMatcher2(nextToken, currPath[i4]) === false) {
+ continue nextPath;
+ }
}
+ return true;
}
- return true;
- }
return false;
};
}
@@ -42379,21 +42353,21 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
}
function containsPath(alternative, searchPath) {
compareOtherPath:
- for (let i4 = 0; i4 < alternative.length; i4++) {
- const otherPath = alternative[i4];
- if (otherPath.length !== searchPath.length) {
- continue;
- }
- for (let j = 0; j < otherPath.length; j++) {
- const searchTok = searchPath[j];
- const otherTok = otherPath[j];
- const matchingTokens = searchTok === otherTok || otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== void 0;
- if (matchingTokens === false) {
- continue compareOtherPath;
+ for (let i4 = 0; i4 < alternative.length; i4++) {
+ const otherPath = alternative[i4];
+ if (otherPath.length !== searchPath.length) {
+ continue;
}
+ for (let j = 0; j < otherPath.length; j++) {
+ const searchTok = searchPath[j];
+ const otherTok = otherPath[j];
+ const matchingTokens = searchTok === otherTok || otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== void 0;
+ if (matchingTokens === false) {
+ continue compareOtherPath;
+ }
+ }
+ return true;
}
- return true;
- }
return false;
}
function isStrictPrefixOfPath(prefix, other) {
@@ -42730,7 +42704,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
const altsCurrPathAppearsIn = [currAltIdx];
forEach(alternatives, (currOtherAlt, currOtherAltIdx) => {
if (currAltIdx !== currOtherAltIdx && containsPath(currOtherAlt, currPath) && // ignore (skip) ambiguities with this "other" alternative
- alternation.definition[currOtherAltIdx].ignoreAmbiguities !== true) {
+ alternation.definition[currOtherAltIdx].ignoreAmbiguities !== true) {
altsCurrPathAppearsIn.push(currOtherAltIdx);
}
});
@@ -43429,11 +43403,11 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
}
}
function createBaseSemanticVisitorConstructor(grammarName, ruleNames) {
- const derivedConstructor = function () {
+ const derivedConstructor = function() {
};
defineNameProp(derivedConstructor, grammarName + "BaseSemantics");
const semanticProto = {
- visit: function (cstNode, param) {
+ visit: function(cstNode, param) {
if (isArray$1(cstNode)) {
cstNode = cstNode[0];
}
@@ -43442,7 +43416,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
}
return this[cstNode.name](cstNode.children, param);
},
- validateVisitor: function () {
+ validateVisitor: function() {
const semanticDefinitionErrors = validateVisitor(this, ruleNames);
if (!isEmpty(semanticDefinitionErrors)) {
const errorMessages = map2(semanticDefinitionErrors, (currDefError) => currDefError.msg);
@@ -43459,7 +43433,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
return derivedConstructor;
}
function createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) {
- const derivedConstructor = function () {
+ const derivedConstructor = function() {
};
defineNameProp(derivedConstructor, grammarName + "BaseSemanticsWithDefaults");
const withDefaultsProto = Object.create(baseConstructor.prototype);
@@ -43471,7 +43445,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
return derivedConstructor;
}
var CstVisitorDefinitionError;
- (function (CstVisitorDefinitionError2) {
+ (function(CstVisitorDefinitionError2) {
CstVisitorDefinitionError2[CstVisitorDefinitionError2["REDUNDANT_METHOD"] = 0] = "REDUNDANT_METHOD";
CstVisitorDefinitionError2[CstVisitorDefinitionError2["MISSING_METHOD"] = 1] = "MISSING_METHOD";
})(CstVisitorDefinitionError || (CstVisitorDefinitionError = {}));
@@ -44002,7 +43976,7 @@ see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`;
return ruleImplementation;
}
BACKTRACK(grammarRule, args) {
- return function () {
+ return function() {
this.isBackTrackingStack.push(1);
const orgState = this.saveRecogState();
try {
@@ -44436,7 +44410,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
}
consumeInternalRecovery(tokType, idx, eFromConsumption) {
if (this.recoveryEnabled && // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?
- eFromConsumption.name === "MismatchedTokenException" && !this.isBackTracking()) {
+ eFromConsumption.name === "MismatchedTokenException" && !this.isBackTracking()) {
const follows = this.getFollowsForInRuleRecovery(tokType, idx);
try {
return this.tryInRuleRecovery(tokType, follows);
@@ -44616,47 +44590,47 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
this.TRACE_INIT("Enable Recording", () => {
for (let i4 = 0; i4 < 10; i4++) {
const idx = i4 > 0 ? i4 : "";
- this[`CONSUME${idx}`] = function (arg1, arg2) {
+ this[`CONSUME${idx}`] = function(arg1, arg2) {
return this.consumeInternalRecord(arg1, i4, arg2);
};
- this[`SUBRULE${idx}`] = function (arg1, arg2) {
+ this[`SUBRULE${idx}`] = function(arg1, arg2) {
return this.subruleInternalRecord(arg1, i4, arg2);
};
- this[`OPTION${idx}`] = function (arg1) {
+ this[`OPTION${idx}`] = function(arg1) {
return this.optionInternalRecord(arg1, i4);
};
- this[`OR${idx}`] = function (arg1) {
+ this[`OR${idx}`] = function(arg1) {
return this.orInternalRecord(arg1, i4);
};
- this[`MANY${idx}`] = function (arg1) {
+ this[`MANY${idx}`] = function(arg1) {
this.manyInternalRecord(i4, arg1);
};
- this[`MANY_SEP${idx}`] = function (arg1) {
+ this[`MANY_SEP${idx}`] = function(arg1) {
this.manySepFirstInternalRecord(i4, arg1);
};
- this[`AT_LEAST_ONE${idx}`] = function (arg1) {
+ this[`AT_LEAST_ONE${idx}`] = function(arg1) {
this.atLeastOneInternalRecord(i4, arg1);
};
- this[`AT_LEAST_ONE_SEP${idx}`] = function (arg1) {
+ this[`AT_LEAST_ONE_SEP${idx}`] = function(arg1) {
this.atLeastOneSepFirstInternalRecord(i4, arg1);
};
}
- this[`consume`] = function (idx, arg1, arg2) {
+ this[`consume`] = function(idx, arg1, arg2) {
return this.consumeInternalRecord(arg1, idx, arg2);
};
- this[`subrule`] = function (idx, arg1, arg2) {
+ this[`subrule`] = function(idx, arg1, arg2) {
return this.subruleInternalRecord(arg1, idx, arg2);
};
- this[`option`] = function (idx, arg1) {
+ this[`option`] = function(idx, arg1) {
return this.optionInternalRecord(arg1, idx);
};
- this[`or`] = function (idx, arg1) {
+ this[`or`] = function(idx, arg1) {
return this.orInternalRecord(arg1, idx);
};
- this[`many`] = function (idx, arg1) {
+ this[`many`] = function(idx, arg1) {
this.manyInternalRecord(idx, arg1);
};
- this[`atLeastOne`] = function (idx, arg1) {
+ this[`atLeastOne`] = function(idx, arg1) {
this.atLeastOneInternalRecord(idx, arg1);
};
this.ACTION = this.ACTION_RECORD;
@@ -44910,7 +44884,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
resyncEnabled: true
});
var ParserDefinitionErrorType;
- (function (ParserDefinitionErrorType2) {
+ (function(ParserDefinitionErrorType2) {
ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_RULE_NAME"] = 0] = "INVALID_RULE_NAME";
ParserDefinitionErrorType2[ParserDefinitionErrorType2["DUPLICATE_RULE_NAME"] = 1] = "DUPLICATE_RULE_NAME";
ParserDefinitionErrorType2[ParserDefinitionErrorType2["INVALID_RULE_OVERRIDE"] = 2] = "INVALID_RULE_OVERRIDE";
@@ -45255,17 +45229,17 @@ function decodeText2(buffer2) {
function read(data) {
const id = new Uint8Array(data.buffer, data.byteOffset, KTX2_ID.length);
if (id[0] !== KTX2_ID[0] || // '´'
- id[1] !== KTX2_ID[1] || // 'K'
- id[2] !== KTX2_ID[2] || // 'T'
- id[3] !== KTX2_ID[3] || // 'X'
- id[4] !== KTX2_ID[4] || // ' '
- id[5] !== KTX2_ID[5] || // '2'
- id[6] !== KTX2_ID[6] || // '0'
- id[7] !== KTX2_ID[7] || // 'ª'
- id[8] !== KTX2_ID[8] || // '\r'
- id[9] !== KTX2_ID[9] || // '\n'
- id[10] !== KTX2_ID[10] || // '\x1A'
- id[11] !== KTX2_ID[11]) {
+ id[1] !== KTX2_ID[1] || // 'K'
+ id[2] !== KTX2_ID[2] || // 'T'
+ id[3] !== KTX2_ID[3] || // 'X'
+ id[4] !== KTX2_ID[4] || // ' '
+ id[5] !== KTX2_ID[5] || // '2'
+ id[6] !== KTX2_ID[6] || // '0'
+ id[7] !== KTX2_ID[7] || // 'ª'
+ id[8] !== KTX2_ID[8] || // '\r'
+ id[9] !== KTX2_ID[9] || // '\n'
+ id[10] !== KTX2_ID[10] || // '\x1A'
+ id[11] !== KTX2_ID[11]) {
throw new Error("Missing KTX 2.0 identifier.");
}
const container = new KTX2Container();
@@ -45406,7 +45380,7 @@ var instance;
var heap;
var IMPORT_OBJECT = {
env: {
- emscripten_notify_memory_growth: function (index2) {
+ emscripten_notify_memory_growth: function(index2) {
heap = new Uint8Array(instance.exports.memory.buffer);
}
}
@@ -45668,14 +45642,14 @@ var KTX2Loader = (() => {
RGB_PVRTC_4BPPV1_Format,
RGB_S3TC_DXT1_Format
});
- __publicField31(KTX2Loader2, "BasisWorker", function () {
+ __publicField31(KTX2Loader2, "BasisWorker", function() {
let config;
let transcoderPending;
let BasisModule;
const EngineFormat = _EngineFormat;
const TranscoderFormat = _TranscoderFormat;
const BasisFormat = _BasisFormat;
- self.addEventListener("message", function (e2) {
+ self.addEventListener("message", function(e2) {
const message = e2.data;
switch (message.type) {
case "init":
@@ -45828,10 +45802,10 @@ var KTX2Loader = (() => {
needsPowerOfTwo: true
}
];
- const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function (a6, b5) {
+ const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function(a6, b5) {
return a6.priorityETC1S - b5.priorityETC1S;
});
- const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function (a6, b5) {
+ const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function(a6, b5) {
return a6.priorityUASTC - b5.priorityUASTC;
});
function getTranscoderFormat(basisFormat, width, height, hasAlpha) {
@@ -46041,7 +46015,7 @@ var lottie = (() => {
ProxyFunction.prototype = prototype;
return ProxyFunction;
}
- const audioControllerFactory = (function () {
+ const audioControllerFactory = (function() {
function AudioController(audioFactory) {
this.audios = [];
this.audioFactory = audioFactory;
@@ -46049,31 +46023,31 @@ var lottie = (() => {
this._isMuted = false;
}
AudioController.prototype = {
- addAudio: function (audio) {
+ addAudio: function(audio) {
this.audios.push(audio);
},
- pause: function () {
+ pause: function() {
var i4;
var len = this.audios.length;
for (i4 = 0; i4 < len; i4 += 1) {
this.audios[i4].pause();
}
},
- resume: function () {
+ resume: function() {
var i4;
var len = this.audios.length;
for (i4 = 0; i4 < len; i4 += 1) {
this.audios[i4].resume();
}
},
- setRate: function (rateValue) {
+ setRate: function(rateValue) {
var i4;
var len = this.audios.length;
for (i4 = 0; i4 < len; i4 += 1) {
this.audios[i4].setRate(rateValue);
}
},
- createAudio: function (assetPath) {
+ createAudio: function(assetPath) {
if (this.audioFactory) {
return this.audioFactory(assetPath);
}
@@ -46084,39 +46058,39 @@ var lottie = (() => {
}
return {
isPlaying: false,
- play: function () {
+ play: function() {
this.isPlaying = true;
},
- seek: function () {
+ seek: function() {
this.isPlaying = false;
},
- playing: function () {
+ playing: function() {
},
- rate: function () {
+ rate: function() {
},
- setVolume: function () {
+ setVolume: function() {
}
};
},
- setAudioFactory: function (audioFactory) {
+ setAudioFactory: function(audioFactory) {
this.audioFactory = audioFactory;
},
- setVolume: function (value) {
+ setVolume: function(value) {
this._volume = value;
this._updateVolume();
},
- mute: function () {
+ mute: function() {
this._isMuted = true;
this._updateVolume();
},
- unmute: function () {
+ unmute: function() {
this._isMuted = false;
this._updateVolume();
},
- getVolume: function () {
+ getVolume: function() {
return this._volume;
},
- _updateVolume: function () {
+ _updateVolume: function() {
var i4;
var len = this.audios.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -46124,11 +46098,11 @@ var lottie = (() => {
}
}
};
- return function () {
+ return function() {
return new AudioController();
};
})();
- const createTypedArray = (function () {
+ const createTypedArray = (function() {
function createRegularArray(type, len) {
var i4 = 0;
var arr = [];
@@ -46176,7 +46150,7 @@ var lottie = (() => {
const bmFloor = Math.floor;
const bmMin = Math.min;
const BMMath = {};
- (function () {
+ (function() {
var propertyNames = [
"abs",
"acos",
@@ -46229,7 +46203,7 @@ var lottie = (() => {
}
})();
BMMath.random = Math.random;
- BMMath.abs = function (val) {
+ BMMath.abs = function(val) {
var tOfVal = typeof val;
if (tOfVal === "object" && val.length) {
var absArr = createSizedArray(val.length);
@@ -46279,7 +46253,7 @@ var lottie = (() => {
this.type = "configError";
this.nativeError = nativeError;
}
- const createElementID = /* @__PURE__ */ (function () {
+ const createElementID = /* @__PURE__ */ (function() {
var _count = 0;
return function createID() {
_count += 1;
@@ -46390,7 +46364,7 @@ var lottie = (() => {
}
return HSVtoRGB(hsv[0], hsv[1], hsv[2]);
}
- (function () {
+ (function() {
var colorMap = [];
var i4;
var hex;
@@ -46398,7 +46372,7 @@ var lottie = (() => {
hex = i4.toString(16);
colorMap[i4] = hex.length === 1 ? "0" + hex : hex;
}
- return function (r2, g, b5) {
+ return function(r2, g, b5) {
if (r2 < 0) {
r2 = 0;
}
@@ -46429,22 +46403,22 @@ var lottie = (() => {
function createNS(type) {
return document.createElementNS(svgNS, type);
}
- const dataManager = /* @__PURE__ */ (function () {
+ const dataManager = /* @__PURE__ */ (function() {
var _counterId = 1;
var processes = [];
var workerFn;
var workerInstance;
var workerProxy = {
- onmessage: function () {
+ onmessage: function() {
},
- postMessage: function (path) {
+ postMessage: function(path) {
workerFn({
data: path
});
}
};
var _workerSelf = {
- postMessage: function (data) {
+ postMessage: function(data) {
workerProxy.onmessage({
data
});
@@ -46599,7 +46573,7 @@ var lottie = (() => {
}
return null;
}
- var checkText = /* @__PURE__ */ (function () {
+ var checkText = /* @__PURE__ */ (function() {
var minimumVersion = [4, 4, 14];
function updateTextLayer(textLayer) {
var documentData = textLayer.t.d;
@@ -46621,7 +46595,7 @@ var lottie = (() => {
}
}
}
- return function (animationData) {
+ return function(animationData) {
if (checkVersion(minimumVersion, animationData.v)) {
iterateLayers(animationData.layers);
if (animationData.assets) {
@@ -46636,9 +46610,9 @@ var lottie = (() => {
}
};
})();
- var checkChars = /* @__PURE__ */ (function () {
+ var checkChars = /* @__PURE__ */ (function() {
var minimumVersion = [4, 7, 99];
- return function (animationData) {
+ return function(animationData) {
if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {
var i4;
var len = animationData.chars.length;
@@ -46677,7 +46651,7 @@ var lottie = (() => {
}
};
})();
- var checkPathProperties = /* @__PURE__ */ (function () {
+ var checkPathProperties = /* @__PURE__ */ (function() {
var minimumVersion = [5, 7, 15];
function updateTextLayer(textLayer) {
var pathData = textLayer.t.p;
@@ -46709,7 +46683,7 @@ var lottie = (() => {
}
}
}
- return function (animationData) {
+ return function(animationData) {
if (checkVersion(minimumVersion, animationData.v)) {
iterateLayers(animationData.layers);
if (animationData.assets) {
@@ -46724,7 +46698,7 @@ var lottie = (() => {
}
};
})();
- var checkColors = /* @__PURE__ */ (function () {
+ var checkColors = /* @__PURE__ */ (function() {
var minimumVersion = [4, 1, 9];
function iterateShapes(shapes) {
var i4;
@@ -46769,7 +46743,7 @@ var lottie = (() => {
}
}
}
- return function (animationData) {
+ return function(animationData) {
if (checkVersion(minimumVersion, animationData.v)) {
iterateLayers(animationData.layers);
if (animationData.assets) {
@@ -46784,7 +46758,7 @@ var lottie = (() => {
}
};
})();
- var checkShapes = /* @__PURE__ */ (function () {
+ var checkShapes = /* @__PURE__ */ (function() {
var minimumVersion = [4, 4, 18];
function completeClosingShapes(arr) {
var i4;
@@ -46845,7 +46819,7 @@ var lottie = (() => {
}
}
}
- return function (animationData) {
+ return function(animationData) {
if (checkVersion(minimumVersion, animationData.v)) {
iterateLayers(animationData.layers);
if (animationData.assets) {
@@ -46890,7 +46864,7 @@ var lottie = (() => {
_workerSelf.dataManager = dataFunctionManager();
}
if (!_workerSelf.assetLoader) {
- _workerSelf.assetLoader = /* @__PURE__ */ (function () {
+ _workerSelf.assetLoader = /* @__PURE__ */ (function() {
function formatResponse(xhr) {
var contentTypeHeader = xhr.getResponseHeader("content-type");
if (contentTypeHeader && xhr.responseType === "json" && contentTypeHeader.indexOf("json") !== -1) {
@@ -46914,7 +46888,7 @@ var lottie = (() => {
xhr.responseType = "json";
} catch (err) {
}
- xhr.onreadystatechange = function () {
+ xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
response = formatResponse(xhr);
@@ -46947,7 +46921,7 @@ var lottie = (() => {
_workerSelf.assetLoader.load(
e2.data.path,
e2.data.fullPath,
- function (data) {
+ function(data) {
_workerSelf.dataManager.completeData(data);
_workerSelf.postMessage({
id: e2.data.id,
@@ -46955,7 +46929,7 @@ var lottie = (() => {
status: "success"
});
},
- function () {
+ function() {
_workerSelf.postMessage({
id: e2.data.id,
status: "error"
@@ -46974,14 +46948,14 @@ var lottie = (() => {
_workerSelf.assetLoader.load(
e2.data.path,
e2.data.fullPath,
- function (data) {
+ function(data) {
_workerSelf.postMessage({
id: e2.data.id,
payload: data,
status: "success"
});
},
- function () {
+ function() {
_workerSelf.postMessage({
id: e2.data.id,
status: "error"
@@ -46990,7 +46964,7 @@ var lottie = (() => {
);
}
});
- workerInstance.onmessage = function (event) {
+ workerInstance.onmessage = function(event) {
var data = event.data;
var id = data.id;
var process2 = processes[id];
@@ -47047,8 +47021,8 @@ var lottie = (() => {
completeAnimation
};
})();
- const ImagePreloader = (function () {
- var proxyImage = (function () {
+ const ImagePreloader = (function() {
+ var proxyImage = (function() {
var canvas = createTag("canvas");
canvas.width = 1;
canvas.height = 1;
@@ -47093,7 +47067,7 @@ var lottie = (() => {
function testImageLoaded(img) {
var _count = 0;
var intervalId = setInterval(
- (function () {
+ (function() {
var box = img.getBBox();
if (box.width || _count > 500) {
this._imageLoaded();
@@ -47114,7 +47088,7 @@ var lottie = (() => {
}
img.addEventListener(
"error",
- (function () {
+ (function() {
ob.img = proxyImage;
this._imageLoaded();
}).bind(this),
@@ -47139,7 +47113,7 @@ var lottie = (() => {
img.addEventListener("load", this._imageLoaded, false);
img.addEventListener(
"error",
- (function () {
+ (function() {
ob.img = proxyImage;
this._imageLoaded();
}).bind(this),
@@ -47159,11 +47133,11 @@ var lottie = (() => {
var path = getAssetsPath(data, this.assetsPath, this.path);
dataManager.loadData(
path,
- (function (footageData) {
+ (function(footageData) {
ob.img = footageData;
this._footageLoaded();
}).bind(this),
- (function () {
+ (function() {
ob.img = {};
this._footageLoaded();
}).bind(this)
@@ -47254,7 +47228,7 @@ var lottie = (() => {
function BaseEvent() {
}
BaseEvent.prototype = {
- triggerEvent: function (eventName, args) {
+ triggerEvent: function(eventName, args) {
if (this._cbs[eventName]) {
var callbacks = this._cbs[eventName];
for (var i4 = 0; i4 < callbacks.length; i4 += 1) {
@@ -47262,16 +47236,16 @@ var lottie = (() => {
}
}
},
- addEventListener: function (eventName, callback) {
+ addEventListener: function(eventName, callback) {
if (!this._cbs[eventName]) {
this._cbs[eventName] = [];
}
this._cbs[eventName].push(callback);
- return (function () {
+ return (function() {
this.removeEventListener(eventName, callback);
}).bind(this);
},
- removeEventListener: function (eventName, callback) {
+ removeEventListener: function(eventName, callback) {
if (!callback) {
this._cbs[eventName] = null;
} else if (this._cbs[eventName]) {
@@ -47291,7 +47265,7 @@ var lottie = (() => {
}
}
};
- const markerParser = /* @__PURE__ */ (function () {
+ const markerParser = /* @__PURE__ */ (function() {
function parsePayloadLines(payload) {
var lines = payload.split("\r\n");
var keys = {};
@@ -47309,7 +47283,7 @@ var lottie = (() => {
}
return keys;
}
- return function (_markers) {
+ return function(_markers) {
var markers = [];
for (var i4 = 0; i4 < _markers.length; i4 += 1) {
var _marker = _markers[i4];
@@ -47333,11 +47307,11 @@ var lottie = (() => {
return markers;
};
})();
- const ProjectInterface = /* @__PURE__ */ (function () {
+ const ProjectInterface = /* @__PURE__ */ (function() {
function registerComposition(comp) {
this.compositions.push(comp);
}
- return function () {
+ return function() {
function _thisProjectFunction(name) {
var i4 = 0;
var len = this.compositions.length;
@@ -47365,7 +47339,7 @@ var lottie = (() => {
function getRenderer(key) {
return renderers[key];
}
- const AnimationItem = function () {
+ const AnimationItem = function() {
this._cbs = [];
this.name = "";
this.path = "";
@@ -47403,7 +47377,7 @@ var lottie = (() => {
this.drawnFrameEvent = new BMEnterFrameEvent("drawnFrame", 0, 0, 0);
};
extendPrototype([BaseEvent], AnimationItem);
- AnimationItem.prototype.setParams = function (params) {
+ AnimationItem.prototype.setParams = function(params) {
if (params.wrapper || params.container) {
this.wrapper = params.wrapper || params.container;
}
@@ -47446,13 +47420,13 @@ var lottie = (() => {
dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);
}
};
- AnimationItem.prototype.onSetupError = function () {
+ AnimationItem.prototype.onSetupError = function() {
this.trigger("data_failed");
};
- AnimationItem.prototype.setupAnimation = function (data) {
+ AnimationItem.prototype.setupAnimation = function(data) {
dataManager.completeAnimation(data, this.configAnimation);
};
- AnimationItem.prototype.setData = function (wrapper, animationData) {
+ AnimationItem.prototype.setData = function(wrapper, animationData) {
if (animationData) {
if (typeof animationData !== "object") {
animationData = JSON.parse(animationData);
@@ -47482,7 +47456,7 @@ var lottie = (() => {
}
this.setParams(params);
};
- AnimationItem.prototype.includeLayers = function (data) {
+ AnimationItem.prototype.includeLayers = function(data) {
if (data.op > this.animationData.op) {
this.animationData.op = data.op;
this.totalFrames = Math.floor(data.op - this.animationData.ip);
@@ -47516,7 +47490,7 @@ var lottie = (() => {
this.animationData.__complete = false;
dataManager.completeAnimation(this.animationData, this.onSegmentComplete);
};
- AnimationItem.prototype.onSegmentComplete = function (data) {
+ AnimationItem.prototype.onSegmentComplete = function(data) {
this.animationData = data;
var expressionsPlugin2 = getExpressionsPlugin();
if (expressionsPlugin2) {
@@ -47524,7 +47498,7 @@ var lottie = (() => {
}
this.loadNextSegment();
};
- AnimationItem.prototype.loadNextSegment = function () {
+ AnimationItem.prototype.loadNextSegment = function() {
var segments = this.animationData.segments;
if (!segments || segments.length === 0 || !this.autoloadSegments) {
this.trigger("data_ready");
@@ -47538,28 +47512,28 @@ var lottie = (() => {
dataManager.loadData(
segmentPath,
this.includeLayers.bind(this),
- (function () {
+ (function() {
this.trigger("data_failed");
}).bind(this)
);
};
- AnimationItem.prototype.loadSegments = function () {
+ AnimationItem.prototype.loadSegments = function() {
var segments = this.animationData.segments;
if (!segments) {
this.timeCompleted = this.totalFrames;
}
this.loadNextSegment();
};
- AnimationItem.prototype.imagesLoaded = function () {
+ AnimationItem.prototype.imagesLoaded = function() {
this.trigger("loaded_images");
this.checkLoaded();
};
- AnimationItem.prototype.preloadImages = function () {
+ AnimationItem.prototype.preloadImages = function() {
this.imagePreloader.setAssetsPath(this.assetsPath);
this.imagePreloader.setPath(this.path);
this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));
};
- AnimationItem.prototype.configAnimation = function (animData) {
+ AnimationItem.prototype.configAnimation = function(animData) {
if (!this.renderer) {
return;
}
@@ -47593,7 +47567,7 @@ var lottie = (() => {
this.triggerConfigError(error);
}
};
- AnimationItem.prototype.waitForFontsLoaded = function () {
+ AnimationItem.prototype.waitForFontsLoaded = function() {
if (!this.renderer) {
return;
}
@@ -47603,7 +47577,7 @@ var lottie = (() => {
setTimeout(this.waitForFontsLoaded.bind(this), 20);
}
};
- AnimationItem.prototype.checkLoaded = function () {
+ AnimationItem.prototype.checkLoaded = function() {
if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== "canvas") && this.imagePreloader.loadedFootages()) {
this.isLoaded = true;
var expressionsPlugin2 = getExpressionsPlugin();
@@ -47612,7 +47586,7 @@ var lottie = (() => {
}
this.renderer.initItems();
setTimeout(
- (function () {
+ (function() {
this.trigger("DOMLoaded");
}).bind(this),
0
@@ -47623,13 +47597,13 @@ var lottie = (() => {
}
}
};
- AnimationItem.prototype.resize = function () {
+ AnimationItem.prototype.resize = function() {
this.renderer.updateContainerSize();
};
- AnimationItem.prototype.setSubframe = function (flag) {
+ AnimationItem.prototype.setSubframe = function(flag) {
this.isSubframeEnabled = !!flag;
};
- AnimationItem.prototype.gotoFrame = function () {
+ AnimationItem.prototype.gotoFrame = function() {
this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame;
if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {
this.currentFrame = this.timeCompleted;
@@ -47638,7 +47612,7 @@ var lottie = (() => {
this.renderFrame();
this.trigger("drawnFrame");
};
- AnimationItem.prototype.renderFrame = function () {
+ AnimationItem.prototype.renderFrame = function() {
if (this.isLoaded === false || !this.renderer) {
return;
}
@@ -47648,7 +47622,7 @@ var lottie = (() => {
this.triggerRenderFrameError(error);
}
};
- AnimationItem.prototype.play = function (name) {
+ AnimationItem.prototype.play = function(name) {
if (name && this.name !== name) {
return;
}
@@ -47662,7 +47636,7 @@ var lottie = (() => {
}
}
};
- AnimationItem.prototype.pause = function (name) {
+ AnimationItem.prototype.pause = function(name) {
if (name && this.name !== name) {
return;
}
@@ -47674,7 +47648,7 @@ var lottie = (() => {
this.audioController.pause();
}
};
- AnimationItem.prototype.togglePause = function (name) {
+ AnimationItem.prototype.togglePause = function(name) {
if (name && this.name !== name) {
return;
}
@@ -47684,7 +47658,7 @@ var lottie = (() => {
this.pause();
}
};
- AnimationItem.prototype.stop = function (name) {
+ AnimationItem.prototype.stop = function(name) {
if (name && this.name !== name) {
return;
}
@@ -47693,7 +47667,7 @@ var lottie = (() => {
this._completedLoop = false;
this.setCurrentRawFrameValue(0);
};
- AnimationItem.prototype.getMarkerData = function (markerName) {
+ AnimationItem.prototype.getMarkerData = function(markerName) {
var marker;
for (var i4 = 0; i4 < this.markers.length; i4 += 1) {
marker = this.markers[i4];
@@ -47703,7 +47677,7 @@ var lottie = (() => {
}
return null;
};
- AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {
+ AnimationItem.prototype.goToAndStop = function(value, isFrame, name) {
if (name && this.name !== name) {
return;
}
@@ -47720,7 +47694,7 @@ var lottie = (() => {
}
this.pause();
};
- AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {
+ AnimationItem.prototype.goToAndPlay = function(value, isFrame, name) {
if (name && this.name !== name) {
return;
}
@@ -47739,7 +47713,7 @@ var lottie = (() => {
}
this.play();
};
- AnimationItem.prototype.advanceTime = function (value) {
+ AnimationItem.prototype.advanceTime = function(value) {
if (this.isPaused === true || this.isLoaded === false) {
return;
}
@@ -47784,7 +47758,7 @@ var lottie = (() => {
this.trigger("complete");
}
};
- AnimationItem.prototype.adjustSegment = function (arr, offset) {
+ AnimationItem.prototype.adjustSegment = function(arr, offset) {
this.playCount = 0;
if (arr[1] < arr[0]) {
if (this.frameModifier > 0) {
@@ -47813,7 +47787,7 @@ var lottie = (() => {
}
this.trigger("segmentStart");
};
- AnimationItem.prototype.setSegment = function (init3, end) {
+ AnimationItem.prototype.setSegment = function(init3, end) {
var pendingFrame = -1;
if (this.isPaused) {
if (this.currentRawFrame + this.firstFrame < init3) {
@@ -47829,7 +47803,7 @@ var lottie = (() => {
this.goToAndStop(pendingFrame, true);
}
};
- AnimationItem.prototype.playSegments = function (arr, forceFlag) {
+ AnimationItem.prototype.playSegments = function(arr, forceFlag) {
if (forceFlag) {
this.segments.length = 0;
}
@@ -47849,21 +47823,21 @@ var lottie = (() => {
this.play();
}
};
- AnimationItem.prototype.resetSegments = function (forceFlag) {
+ AnimationItem.prototype.resetSegments = function(forceFlag) {
this.segments.length = 0;
this.segments.push([this.animationData.ip, this.animationData.op]);
if (forceFlag) {
this.checkSegments(0);
}
};
- AnimationItem.prototype.checkSegments = function (offset) {
+ AnimationItem.prototype.checkSegments = function(offset) {
if (this.segments.length) {
this.adjustSegment(this.segments.shift(), offset);
return true;
}
return false;
};
- AnimationItem.prototype.destroy = function (name) {
+ AnimationItem.prototype.destroy = function(name) {
if (name && this.name !== name || !this.renderer) {
return;
}
@@ -47881,47 +47855,47 @@ var lottie = (() => {
this.imagePreloader = null;
this.projectInterface = null;
};
- AnimationItem.prototype.setCurrentRawFrameValue = function (value) {
+ AnimationItem.prototype.setCurrentRawFrameValue = function(value) {
this.currentRawFrame = value;
this.gotoFrame();
};
- AnimationItem.prototype.setSpeed = function (val) {
+ AnimationItem.prototype.setSpeed = function(val) {
this.playSpeed = val;
this.updaFrameModifier();
};
- AnimationItem.prototype.setDirection = function (val) {
+ AnimationItem.prototype.setDirection = function(val) {
this.playDirection = val < 0 ? -1 : 1;
this.updaFrameModifier();
};
- AnimationItem.prototype.setVolume = function (val, name) {
+ AnimationItem.prototype.setVolume = function(val, name) {
if (name && this.name !== name) {
return;
}
this.audioController.setVolume(val);
};
- AnimationItem.prototype.getVolume = function () {
+ AnimationItem.prototype.getVolume = function() {
return this.audioController.getVolume();
};
- AnimationItem.prototype.mute = function (name) {
+ AnimationItem.prototype.mute = function(name) {
if (name && this.name !== name) {
return;
}
this.audioController.mute();
};
- AnimationItem.prototype.unmute = function (name) {
+ AnimationItem.prototype.unmute = function(name) {
if (name && this.name !== name) {
return;
}
this.audioController.unmute();
};
- AnimationItem.prototype.updaFrameModifier = function () {
+ AnimationItem.prototype.updaFrameModifier = function() {
this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;
this.audioController.setRate(this.playSpeed * this.playDirection);
};
- AnimationItem.prototype.getPath = function () {
+ AnimationItem.prototype.getPath = function() {
return this.path;
};
- AnimationItem.prototype.getAssetsPath = function (assetData) {
+ AnimationItem.prototype.getAssetsPath = function(assetData) {
var path = "";
if (assetData.e) {
path = assetData.p;
@@ -47938,7 +47912,7 @@ var lottie = (() => {
}
return path;
};
- AnimationItem.prototype.getAssetData = function (id) {
+ AnimationItem.prototype.getAssetData = function(id) {
var i4 = 0;
var len = this.assets.length;
while (i4 < len) {
@@ -47949,23 +47923,23 @@ var lottie = (() => {
}
return null;
};
- AnimationItem.prototype.hide = function () {
+ AnimationItem.prototype.hide = function() {
this.renderer.hide();
};
- AnimationItem.prototype.show = function () {
+ AnimationItem.prototype.show = function() {
this.renderer.show();
};
- AnimationItem.prototype.getDuration = function (isFrame) {
+ AnimationItem.prototype.getDuration = function(isFrame) {
return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;
};
- AnimationItem.prototype.updateDocumentData = function (path, documentData, index22) {
+ AnimationItem.prototype.updateDocumentData = function(path, documentData, index22) {
try {
var element = this.renderer.getElementByPath(path);
element.updateDocumentData(documentData, index22);
} catch (error) {
}
};
- AnimationItem.prototype.trigger = function (name) {
+ AnimationItem.prototype.trigger = function(name) {
if (this._cbs && this._cbs[name]) {
switch (name) {
case "enterFrame":
@@ -48009,21 +47983,21 @@ var lottie = (() => {
this.onDestroy.call(this, new BMDestroyEvent(name, this));
}
};
- AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {
+ AnimationItem.prototype.triggerRenderFrameError = function(nativeError) {
var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);
this.triggerEvent("error", error);
if (this.onError) {
this.onError.call(this, error);
}
};
- AnimationItem.prototype.triggerConfigError = function (nativeError) {
+ AnimationItem.prototype.triggerConfigError = function(nativeError) {
var error = new BMConfigErrorEvent(nativeError, this.currentFrame);
this.triggerEvent("error", error);
if (this.onError) {
this.onError.call(this, error);
}
};
- const animationManager = (function () {
+ const animationManager = (function() {
var moduleOb = {};
var registeredAnimations = [];
var initTime = 0;
@@ -48242,7 +48216,7 @@ var lottie = (() => {
moduleOb.getRegisteredAnimations = getRegisteredAnimations;
return moduleOb;
})();
- const BezierFactory = (function () {
+ const BezierFactory = (function() {
var ob = {};
ob.getBezierEasing = getBezierEasing;
var beziers = {};
@@ -48307,7 +48281,7 @@ var lottie = (() => {
this.get = this.get.bind(this);
}
BezierEasing.prototype = {
- get: function (x) {
+ get: function(x) {
var mX1 = this._p[0], mY1 = this._p[1], mX2 = this._p[2], mY2 = this._p[3];
if (!this._precomputed)
this._precompute();
@@ -48320,14 +48294,14 @@ var lottie = (() => {
return calcBezier(this._getTForX(x), mY1, mY2);
},
// Private part
- _precompute: function () {
+ _precompute: function() {
var mX1 = this._p[0], mY1 = this._p[1], mX2 = this._p[2], mY2 = this._p[3];
this._precomputed = true;
if (mX1 !== mY1 || mX2 !== mY2) {
this._calcSampleValues();
}
},
- _calcSampleValues: function () {
+ _calcSampleValues: function() {
var mX1 = this._p[0], mX2 = this._p[2];
for (var i4 = 0; i4 < kSplineTableSize; ++i4) {
this._mSampleValues[i4] = calcBezier(i4 * kSampleStepSize, mX1, mX2);
@@ -48336,7 +48310,7 @@ var lottie = (() => {
/**
* getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.
*/
- _getTForX: function (aX) {
+ _getTForX: function(aX) {
var mX1 = this._p[0], mX2 = this._p[2], mSampleValues = this._mSampleValues;
var intervalStart = 0;
var currentSample = 1;
@@ -48359,7 +48333,7 @@ var lottie = (() => {
};
return ob;
})();
- const pooling = /* @__PURE__ */ (function () {
+ const pooling = /* @__PURE__ */ (function() {
function double(arr) {
return arr.concat(createSizedArray(arr.length));
}
@@ -48367,8 +48341,8 @@ var lottie = (() => {
double
};
})();
- const poolFactory = /* @__PURE__ */ (function () {
- return function (initialLength, _create, _release) {
+ const poolFactory = /* @__PURE__ */ (function() {
+ return function(initialLength, _create, _release) {
var _length = 0;
var _maxLength = initialLength;
var pool = createSizedArray(_maxLength);
@@ -48400,7 +48374,7 @@ var lottie = (() => {
return ob;
};
})();
- const bezierLengthPool = (function () {
+ const bezierLengthPool = (function() {
function create4() {
return {
addedLength: 0,
@@ -48410,7 +48384,7 @@ var lottie = (() => {
}
return poolFactory(8, create4);
})();
- const segmentsLengthPool = (function () {
+ const segmentsLengthPool = (function() {
function create4() {
return {
lengths: [],
@@ -48454,8 +48428,8 @@ var lottie = (() => {
}
return diffDist > -1e-4 && diffDist < 1e-4;
}
- var getBezierLength = /* @__PURE__ */ (function () {
- return function (pt1, pt2, pt3, pt4) {
+ var getBezierLength = /* @__PURE__ */ (function() {
+ return function(pt1, pt2, pt3, pt4) {
var curveSegments = getDefaultCurveSegments();
var k;
var i4;
@@ -48519,9 +48493,9 @@ var lottie = (() => {
this.partialLength = partial;
this.point = point;
}
- var buildBezierData = /* @__PURE__ */ (function () {
+ var buildBezierData = /* @__PURE__ */ (function() {
var storedData = {};
- return function (pt1, pt2, pt3, pt4) {
+ return function(pt1, pt2, pt3, pt4) {
var bezierName = (pt1[0] + "_" + pt1[1] + "_" + pt2[0] + "_" + pt2[1] + "_" + pt3[0] + "_" + pt3[1] + "_" + pt4[0] + "_" + pt4[1]).replace(/\./g, "p");
if (!storedData[bezierName]) {
var curveSegments = getDefaultCurveSegments();
@@ -48648,7 +48622,7 @@ var lottie = (() => {
};
}
const bez = bezFunction();
- const PropertyFactory = /* @__PURE__ */ (function () {
+ const PropertyFactory = /* @__PURE__ */ (function() {
var initFrame = initialDefaultFrame;
var mathAbs = Math.abs;
function interpolateValue(frameNum, caching) {
@@ -49103,14 +49077,14 @@ var lottie = (() => {
function DynamicPropertyContainer() {
}
DynamicPropertyContainer.prototype = {
- addDynamicProperty: function (prop) {
+ addDynamicProperty: function(prop) {
if (this.dynamicProperties.indexOf(prop) === -1) {
this.dynamicProperties.push(prop);
this.container.addDynamicProperty(this);
this._isAnimated = true;
}
},
- iterateDynamicProperties: function () {
+ iterateDynamicProperties: function() {
this._mdf = false;
var i4;
var len = this.dynamicProperties.length;
@@ -49121,14 +49095,14 @@ var lottie = (() => {
}
}
},
- initDynamicPropertyContainer: function (container) {
+ initDynamicPropertyContainer: function(container) {
this.container = container;
this.dynamicProperties = [];
this._mdf = false;
this._isAnimated = false;
}
};
- const pointPool = (function () {
+ const pointPool = (function() {
function create4() {
return createTypedArray("float32", 2);
}
@@ -49142,7 +49116,7 @@ var lottie = (() => {
this.o = createSizedArray(this._maxLength);
this.i = createSizedArray(this._maxLength);
}
- ShapePath2.prototype.setPathData = function (closed, len) {
+ ShapePath2.prototype.setPathData = function(closed, len) {
this.c = closed;
this.setLength(len);
var i4 = 0;
@@ -49153,19 +49127,19 @@ var lottie = (() => {
i4 += 1;
}
};
- ShapePath2.prototype.setLength = function (len) {
+ ShapePath2.prototype.setLength = function(len) {
while (this._maxLength < len) {
this.doubleArrayLength();
}
this._length = len;
};
- ShapePath2.prototype.doubleArrayLength = function () {
+ ShapePath2.prototype.doubleArrayLength = function() {
this.v = this.v.concat(createSizedArray(this._maxLength));
this.i = this.i.concat(createSizedArray(this._maxLength));
this.o = this.o.concat(createSizedArray(this._maxLength));
this._maxLength *= 2;
};
- ShapePath2.prototype.setXYAt = function (x, y, type, pos, replace) {
+ ShapePath2.prototype.setXYAt = function(x, y, type, pos, replace) {
var arr;
this._length = Math.max(this._length, pos + 1);
if (this._length >= this._maxLength) {
@@ -49191,12 +49165,12 @@ var lottie = (() => {
arr[pos][0] = x;
arr[pos][1] = y;
};
- ShapePath2.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {
+ ShapePath2.prototype.setTripleAt = function(vX, vY, oX, oY, iX, iY, pos, replace) {
this.setXYAt(vX, vY, "v", pos, replace);
this.setXYAt(oX, oY, "o", pos, replace);
this.setXYAt(iX, iY, "i", pos, replace);
};
- ShapePath2.prototype.reverse = function () {
+ ShapePath2.prototype.reverse = function() {
var newPath = new ShapePath2();
newPath.setPathData(this.c, this._length);
var vertices = this.v;
@@ -49234,7 +49208,7 @@ var lottie = (() => {
}
return newPath;
};
- const shapePool = (function () {
+ const shapePool = (function() {
function create4() {
return new ShapePath2();
}
@@ -49272,7 +49246,7 @@ var lottie = (() => {
this._maxLength = 4;
this.shapes = createSizedArray(this._maxLength);
}
- ShapeCollection.prototype.addShape = function (shapeData) {
+ ShapeCollection.prototype.addShape = function(shapeData) {
if (this._length === this._maxLength) {
this.shapes = this.shapes.concat(createSizedArray(this._maxLength));
this._maxLength *= 2;
@@ -49280,14 +49254,14 @@ var lottie = (() => {
this.shapes[this._length] = shapeData;
this._length += 1;
};
- ShapeCollection.prototype.releaseShapes = function () {
+ ShapeCollection.prototype.releaseShapes = function() {
var i4;
for (i4 = 0; i4 < this._length; i4 += 1) {
shapePool.release(this.shapes[i4]);
}
this._length = 0;
};
- const shapeCollectionPool = (function () {
+ const shapeCollectionPool = (function() {
var ob = {
newShapeCollection,
release
@@ -49321,7 +49295,7 @@ var lottie = (() => {
}
return ob;
})();
- const ShapePropertyFactory = (function () {
+ const ShapePropertyFactory = (function() {
var initFrame = -999999;
function interpolateShape(frameNum, previousValue, caching) {
var iterationIndex = caching.lastIndex;
@@ -49519,7 +49493,7 @@ var lottie = (() => {
KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;
KeyframedShapeProperty.prototype.setVValue = setVValue;
KeyframedShapeProperty.prototype.addEffect = addEffect2;
- var EllShapeProperty = (function () {
+ var EllShapeProperty = (function() {
var cPoint = roundCorner;
function EllShapePropertyFactory(elem, data) {
this.v = shapePool.newElement();
@@ -49543,7 +49517,7 @@ var lottie = (() => {
}
EllShapePropertyFactory.prototype = {
reset: resetShape,
- getValue: function () {
+ getValue: function() {
if (this.elem.globalData.frameId === this.frameId) {
return;
}
@@ -49553,7 +49527,7 @@ var lottie = (() => {
this.convertEllToPath();
}
},
- convertEllToPath: function () {
+ convertEllToPath: function() {
var p0 = this.p.v[0];
var p1 = this.p.v[1];
var s0 = this.s.v[0] / 2;
@@ -49589,7 +49563,7 @@ var lottie = (() => {
extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);
return EllShapePropertyFactory;
})();
- var StarShapeProperty = (function () {
+ var StarShapeProperty = (function() {
function StarShapePropertyFactory(elem, data) {
this.v = shapePool.newElement();
this.v.setPathData(true, 0);
@@ -49623,7 +49597,7 @@ var lottie = (() => {
}
StarShapePropertyFactory.prototype = {
reset: resetShape,
- getValue: function () {
+ getValue: function() {
if (this.elem.globalData.frameId === this.frameId) {
return;
}
@@ -49633,7 +49607,7 @@ var lottie = (() => {
this.convertToPath();
}
},
- convertStarToPath: function () {
+ convertStarToPath: function() {
var numPts = Math.floor(this.pt.v) * 2;
var angle = Math.PI * 2 / numPts;
var longFlag = true;
@@ -49675,7 +49649,7 @@ var lottie = (() => {
currentAng += angle * dir;
}
},
- convertPolygonToPath: function () {
+ convertPolygonToPath: function() {
var numPts = Math.floor(this.pt.v);
var angle = Math.PI * 2 / numPts;
var rad = this.or.v;
@@ -49712,7 +49686,7 @@ var lottie = (() => {
extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);
return StarShapePropertyFactory;
})();
- var RectShapeProperty = (function () {
+ var RectShapeProperty = (function() {
function RectShapePropertyFactory(elem, data) {
this.v = shapePool.newElement();
this.v.c = true;
@@ -49735,7 +49709,7 @@ var lottie = (() => {
}
}
RectShapePropertyFactory.prototype = {
- convertRectToPath: function () {
+ convertRectToPath: function() {
var p0 = this.p.v[0];
var p1 = this.p.v[1];
var v0 = this.s.v[0] / 2;
@@ -49774,7 +49748,7 @@ var lottie = (() => {
}
}
},
- getValue: function () {
+ getValue: function() {
if (this.elem.globalData.frameId === this.frameId) {
return;
}
@@ -49823,7 +49797,7 @@ var lottie = (() => {
ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;
return ob;
})();
- const Matrix = /* @__PURE__ */ (function () {
+ const Matrix = /* @__PURE__ */ (function() {
var _cos = Math.cos;
var _sin = Math.sin;
var _tan = Math.tan;
@@ -50120,7 +50094,7 @@ var lottie = (() => {
var _f = roundMatrixProperty(props[13]);
return "matrix(" + _a3 + "," + _b3 + "," + _c + "," + _d + "," + _e + "," + _f + ")";
}
- return function () {
+ return function() {
this.reset = reset2;
this.rotate = rotate2;
this.rotateX = rotateX;
@@ -50272,7 +50246,7 @@ var lottie = (() => {
}
} catch (err) {
}
- const ShapeModifiers = (function () {
+ const ShapeModifiers = (function() {
var ob = {};
var modifiers = {};
ob.registerModifier = registerModifier;
@@ -50289,11 +50263,11 @@ var lottie = (() => {
})();
function ShapeModifier() {
}
- ShapeModifier.prototype.initModifierProperties = function () {
+ ShapeModifier.prototype.initModifierProperties = function() {
};
- ShapeModifier.prototype.addShapeToModifier = function () {
+ ShapeModifier.prototype.addShapeToModifier = function() {
};
- ShapeModifier.prototype.addShape = function (data) {
+ ShapeModifier.prototype.addShape = function(data) {
if (!this.closed) {
data.sh.container.addDynamicProperty(data.sh);
var shapeData = { shape: data.sh, data, localShapeCollection: shapeCollectionPool.newShapeCollection() };
@@ -50304,7 +50278,7 @@ var lottie = (() => {
}
}
};
- ShapeModifier.prototype.init = function (elem, data) {
+ ShapeModifier.prototype.init = function(elem, data) {
this.shapes = [];
this.elem = elem;
this.initDynamicPropertyContainer(elem);
@@ -50318,7 +50292,7 @@ var lottie = (() => {
this.getValue(true);
}
};
- ShapeModifier.prototype.processKeys = function () {
+ ShapeModifier.prototype.processKeys = function() {
if (this.elem.globalData.frameId === this.frameId) {
return;
}
@@ -50329,7 +50303,7 @@ var lottie = (() => {
function TrimModifier() {
}
extendPrototype([ShapeModifier], TrimModifier);
- TrimModifier.prototype.initModifierProperties = function (elem, data) {
+ TrimModifier.prototype.initModifierProperties = function(elem, data) {
this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);
this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);
this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);
@@ -50339,10 +50313,10 @@ var lottie = (() => {
this.m = data.m;
this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;
};
- TrimModifier.prototype.addShapeToModifier = function (shapeData) {
+ TrimModifier.prototype.addShapeToModifier = function(shapeData) {
shapeData.pathsData = [];
};
- TrimModifier.prototype.calculateShapeEdges = function (s2, e2, shapeLength, addedLength, totalModifierLength) {
+ TrimModifier.prototype.calculateShapeEdges = function(s2, e2, shapeLength, addedLength, totalModifierLength) {
var segments = [];
if (e2 <= 1) {
segments.push({
@@ -50391,7 +50365,7 @@ var lottie = (() => {
}
return shapeSegments;
};
- TrimModifier.prototype.releasePathsData = function (pathsData) {
+ TrimModifier.prototype.releasePathsData = function(pathsData) {
var i4;
var len = pathsData.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -50400,7 +50374,7 @@ var lottie = (() => {
pathsData.length = 0;
return pathsData;
};
- TrimModifier.prototype.processShapes = function (_isFirstFrame) {
+ TrimModifier.prototype.processShapes = function(_isFirstFrame) {
var s2;
var e2;
if (this._mdf || _isFirstFrame) {
@@ -50547,14 +50521,14 @@ var lottie = (() => {
}
}
};
- TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {
+ TrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {
var i4;
var len = newPaths.length;
for (i4 = 0; i4 < len; i4 += 1) {
localShapeCollection.addShape(newPaths[i4]);
}
};
- TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {
+ TrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) {
shapePath.setXYAt(pt2[0], pt2[1], "o", pos);
shapePath.setXYAt(pt3[0], pt3[1], "i", pos + 1);
if (newShape) {
@@ -50562,7 +50536,7 @@ var lottie = (() => {
}
shapePath.setXYAt(pt4[0], pt4[1], "v", pos + 1);
};
- TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {
+ TrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) {
shapePath.setXYAt(points[1], points[5], "o", pos);
shapePath.setXYAt(points[2], points[6], "i", pos + 1);
if (newShape) {
@@ -50570,7 +50544,7 @@ var lottie = (() => {
}
shapePath.setXYAt(points[3], points[7], "v", pos + 1);
};
- TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {
+ TrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {
var pathsData = shapeData.pathsData;
var shapePaths = shapeData.shape.paths.shapes;
var i4;
@@ -50695,12 +50669,12 @@ var lottie = (() => {
function PuckerAndBloatModifier() {
}
extendPrototype([ShapeModifier], PuckerAndBloatModifier);
- PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {
+ PuckerAndBloatModifier.prototype.initModifierProperties = function(elem, data) {
this.getValue = this.processKeys;
this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);
this._isAnimated = !!this.amount.effectsSequence.length;
};
- PuckerAndBloatModifier.prototype.processPath = function (path, amount) {
+ PuckerAndBloatModifier.prototype.processPath = function(path, amount) {
var percent = amount / 100;
var centerPoint = [0, 0];
var pathLength = path._length;
@@ -50730,7 +50704,7 @@ var lottie = (() => {
}
return clonedPath;
};
- PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {
+ PuckerAndBloatModifier.prototype.processShapes = function(_isFirstFrame) {
var shapePaths;
var i4;
var len = this.shapes.length;
@@ -50759,7 +50733,7 @@ var lottie = (() => {
this._mdf = false;
}
};
- const TransformPropertyFactory = (function () {
+ const TransformPropertyFactory = (function() {
var defaultVector = [0, 0];
function applyToMatrix(mat2) {
var _mdf = this._mdf;
@@ -50979,7 +50953,7 @@ var lottie = (() => {
function RepeaterModifier() {
}
extendPrototype([ShapeModifier], RepeaterModifier);
- RepeaterModifier.prototype.initModifierProperties = function (elem, data) {
+ RepeaterModifier.prototype.initModifierProperties = function(elem, data) {
this.getValue = this.processKeys;
this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);
this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);
@@ -50997,7 +50971,7 @@ var lottie = (() => {
this.tMatrix = new Matrix();
this.matrix = new Matrix();
};
- RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {
+ RepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform, perc, inv) {
var dir = inv ? -1 : 1;
var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);
var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);
@@ -51009,7 +50983,7 @@ var lottie = (() => {
sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);
sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
};
- RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {
+ RepeaterModifier.prototype.init = function(elem, arr, pos, elemsData) {
this.elem = elem;
this.arr = arr;
this.pos = pos;
@@ -51030,7 +51004,7 @@ var lottie = (() => {
this.getValue(true);
}
};
- RepeaterModifier.prototype.resetElements = function (elements) {
+ RepeaterModifier.prototype.resetElements = function(elements) {
var i4;
var len = elements.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -51040,12 +51014,12 @@ var lottie = (() => {
}
}
};
- RepeaterModifier.prototype.cloneElements = function (elements) {
+ RepeaterModifier.prototype.cloneElements = function(elements) {
var newElements = JSON.parse(JSON.stringify(elements));
this.resetElements(newElements);
return newElements;
};
- RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {
+ RepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {
var i4;
var len = elements.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -51055,7 +51029,7 @@ var lottie = (() => {
}
}
};
- RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {
+ RepeaterModifier.prototype.processShapes = function(_isFirstFrame) {
var items;
var itemsTransform;
var i4;
@@ -51244,17 +51218,17 @@ var lottie = (() => {
}
return hasReloaded;
};
- RepeaterModifier.prototype.addShape = function () {
+ RepeaterModifier.prototype.addShape = function() {
};
function RoundCornersModifier() {
}
extendPrototype([ShapeModifier], RoundCornersModifier);
- RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {
+ RoundCornersModifier.prototype.initModifierProperties = function(elem, data) {
this.getValue = this.processKeys;
this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);
this._isAnimated = !!this.rd.effectsSequence.length;
};
- RoundCornersModifier.prototype.processPath = function (path, round) {
+ RoundCornersModifier.prototype.processPath = function(path, round) {
var clonedPath = shapePool.newElement();
clonedPath.c = path.c;
var i4;
@@ -51327,7 +51301,7 @@ var lottie = (() => {
}
return clonedPath;
};
- RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {
+ RoundCornersModifier.prototype.processShapes = function(_isFirstFrame) {
var shapePaths;
var i4;
var len = this.shapes.length;
@@ -51392,7 +51366,7 @@ var lottie = (() => {
weight: fontData.fWeight || fWeight
};
}
- const FontManager = (function () {
+ const FontManager = (function() {
var maxWaitingTime = 5e3;
var emptyChar = {
w: 0,
@@ -51672,7 +51646,7 @@ var lottie = (() => {
i4 += 1;
}
if ((typeof char === "string" && char.charCodeAt(0) !== 13 || !char) && console && console.warn && // eslint-disable-line no-console
- !this._warned) {
+ !this._warned) {
this._warned = true;
console.warn("Missing character from exported characters list: ", char, style, font);
}
@@ -51720,7 +51694,7 @@ var lottie = (() => {
function setIsLoaded() {
this.isLoaded = true;
}
- var Font2 = function () {
+ var Font2 = function() {
this.fonts = [];
this.chars = null;
this.typekitLoaded = 0;
@@ -51748,26 +51722,26 @@ var lottie = (() => {
function RenderableElement() {
}
RenderableElement.prototype = {
- initRenderable: function () {
+ initRenderable: function() {
this.isInRange = false;
this.hidden = false;
this.isTransparent = false;
this.renderableComponents = [];
},
- addRenderableComponent: function (component) {
+ addRenderableComponent: function(component) {
if (this.renderableComponents.indexOf(component) === -1) {
this.renderableComponents.push(component);
}
},
- removeRenderableComponent: function (component) {
+ removeRenderableComponent: function(component) {
if (this.renderableComponents.indexOf(component) !== -1) {
this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);
}
},
- prepareRenderableFrame: function (num) {
+ prepareRenderableFrame: function(num) {
this.checkLayerLimits(num);
},
- checkTransparency: function () {
+ checkTransparency: function() {
if (this.finalTransform.mProp.o.v <= 0) {
if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {
this.isTransparent = true;
@@ -51786,7 +51760,7 @@ var lottie = (() => {
* current frame number in Layer's time
*
*/
- checkLayerLimits: function (num) {
+ checkLayerLimits: function(num) {
if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {
if (this.isInRange !== true) {
this.globalData._mdf = true;
@@ -51800,14 +51774,14 @@ var lottie = (() => {
this.hide();
}
},
- renderRenderable: function () {
+ renderRenderable: function() {
var i4;
var len = this.renderableComponents.length;
for (i4 = 0; i4 < len; i4 += 1) {
this.renderableComponents[i4].renderFrame(this._isFirstFrame);
}
},
- sourceRectAtTime: function () {
+ sourceRectAtTime: function() {
return {
top: 0,
left: 0,
@@ -51815,20 +51789,20 @@ var lottie = (() => {
height: 100
};
},
- getLayerSize: function () {
+ getLayerSize: function() {
if (this.data.ty === 5) {
return { w: this.data.textData.width, h: this.data.textData.height };
}
return { w: this.data.width, h: this.data.height };
}
};
- const MaskManagerInterface = (function () {
+ const MaskManagerInterface = (function() {
function MaskInterface(mask, data) {
this._mask = mask;
this._data = data;
}
Object.defineProperty(MaskInterface.prototype, "maskPath", {
- get: function () {
+ get: function() {
if (this._mask.prop.k) {
this._mask.prop.getValue();
}
@@ -51836,21 +51810,21 @@ var lottie = (() => {
}
});
Object.defineProperty(MaskInterface.prototype, "maskOpacity", {
- get: function () {
+ get: function() {
if (this._mask.op.k) {
this._mask.op.getValue();
}
return this._mask.op.v * 100;
}
});
- var MaskManager = function (maskManager) {
+ var MaskManager = function(maskManager) {
var _masksInterfaces = createSizedArray(maskManager.viewData.length);
var i4;
var len = maskManager.viewData.length;
for (i4 = 0; i4 < len; i4 += 1) {
_masksInterfaces[i4] = new MaskInterface(maskManager.viewData[i4], maskManager.masksProperties[i4]);
}
- var maskFunction = function (name) {
+ var maskFunction = function(name) {
i4 = 0;
while (i4 < len) {
if (maskManager.masksProperties[i4].nm === name) {
@@ -51864,17 +51838,17 @@ var lottie = (() => {
};
return MaskManager;
})();
- const ExpressionPropertyInterface = /* @__PURE__ */ (function () {
+ const ExpressionPropertyInterface = /* @__PURE__ */ (function() {
var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };
var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };
function completeProperty(expressionValue, property, type) {
Object.defineProperty(expressionValue, "velocity", {
- get: function () {
+ get: function() {
return property.getVelocityAtTime(property.comp.currentFrame);
}
});
expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;
- expressionValue.key = function (pos) {
+ expressionValue.key = function(pos) {
if (!expressionValue.numKeys) {
return 0;
}
@@ -51905,7 +51879,7 @@ var lottie = (() => {
var expressionValue = new Number(val);
expressionValue.value = val;
completeProperty(expressionValue, property, "unidimensional");
- return function () {
+ return function() {
if (property.k) {
property.getValue();
}
@@ -51928,7 +51902,7 @@ var lottie = (() => {
var arrValue = createTypedArray("float32", len);
expressionValue.value = arrValue;
completeProperty(expressionValue, property, "multidimensional");
- return function () {
+ return function() {
if (property.k) {
property.getValue();
}
@@ -51942,7 +51916,7 @@ var lottie = (() => {
function defaultGetter() {
return defaultUnidimensionalValue;
}
- return function (property) {
+ return function(property) {
if (!property) {
return defaultGetter;
}
@@ -51952,8 +51926,8 @@ var lottie = (() => {
return MultidimensionalPropertyInterface(property);
};
})();
- const TransformExpressionInterface = /* @__PURE__ */ (function () {
- return function (transform) {
+ const TransformExpressionInterface = /* @__PURE__ */ (function() {
+ return function(transform) {
function _thisFunction(name) {
switch (name) {
case "scale":
@@ -52025,7 +51999,7 @@ var lottie = (() => {
}
}
Object.defineProperty(_thisFunction, "position", {
- get: function () {
+ get: function() {
if (transform.p) {
return _transformFactory();
}
@@ -52059,7 +52033,7 @@ var lottie = (() => {
return _thisFunction;
};
})();
- const LayerExpressionInterface = /* @__PURE__ */ (function () {
+ const LayerExpressionInterface = /* @__PURE__ */ (function() {
function getMatrix(time) {
var toWorldMat = new Matrix();
if (time !== void 0) {
@@ -52130,7 +52104,7 @@ var lottie = (() => {
function sampleImage() {
return [1, 1, 1, 1];
}
- return function (elem) {
+ return function(elem) {
var transformInterface;
function _registerMaskInterface(maskManager) {
_thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);
@@ -52177,12 +52151,12 @@ var lottie = (() => {
var anchorPointDescriptor = getDescriptor(transformInterface, "anchorPoint");
Object.defineProperties(_thisLayerFunction, {
hasParent: {
- get: function () {
+ get: function() {
return elem.hierarchy.length;
}
},
parent: {
- get: function () {
+ get: function() {
return elem.hierarchy[0].layerInterface;
}
},
@@ -52193,12 +52167,12 @@ var lottie = (() => {
anchorPoint: anchorPointDescriptor,
anchor_point: anchorPointDescriptor,
transform: {
- get: function () {
+ get: function() {
return transformInterface;
}
},
active: {
- get: function () {
+ get: function() {
return elem.isInRange;
}
}
@@ -52216,9 +52190,9 @@ var lottie = (() => {
return _thisLayerFunction;
};
})();
- const propertyGroupFactory = /* @__PURE__ */ (function () {
- return function (interfaceFunction, parentPropertyGroup) {
- return function (val) {
+ const propertyGroupFactory = /* @__PURE__ */ (function() {
+ return function(interfaceFunction, parentPropertyGroup) {
+ return function(val) {
val = val === void 0 ? 1 : val;
if (val <= 0) {
return interfaceFunction;
@@ -52227,8 +52201,8 @@ var lottie = (() => {
};
};
})();
- const PropertyInterface = /* @__PURE__ */ (function () {
- return function (propertyName, propertyGroup) {
+ const PropertyInterface = /* @__PURE__ */ (function() {
+ return function(propertyName, propertyGroup) {
var interfaceFunction = {
_name: propertyName
};
@@ -52242,7 +52216,7 @@ var lottie = (() => {
return _propertyGroup;
};
})();
- const EffectsExpressionInterface = /* @__PURE__ */ (function () {
+ const EffectsExpressionInterface = /* @__PURE__ */ (function() {
var ob = {
createEffectsInterface
};
@@ -52258,7 +52232,7 @@ var lottie = (() => {
);
}
var effects = elem.data.ef || [];
- var groupInterface = function (name) {
+ var groupInterface = function(name) {
i4 = 0;
len = effects.length;
while (i4 < len) {
@@ -52270,7 +52244,7 @@ var lottie = (() => {
return null;
};
Object.defineProperty(groupInterface, "numProperties", {
- get: function () {
+ get: function() {
return effects.length;
}
});
@@ -52314,14 +52288,14 @@ var lottie = (() => {
}
if (data.mn === "ADBE Color Control") {
Object.defineProperty(groupInterface, "color", {
- get: function () {
+ get: function() {
return effectElements[0]();
}
});
}
Object.defineProperties(groupInterface, {
numProperties: {
- get: function () {
+ get: function() {
return data.np;
}
},
@@ -52347,8 +52321,8 @@ var lottie = (() => {
}
return ob;
})();
- const CompExpressionInterface = /* @__PURE__ */ (function () {
- return function (comp) {
+ const CompExpressionInterface = /* @__PURE__ */ (function() {
+ return function(comp) {
function _thisLayerFunction(name) {
var i4 = 0;
var len = comp.layers.length;
@@ -52372,7 +52346,7 @@ var lottie = (() => {
return _thisLayerFunction;
};
})();
- const ShapePathInterface = /* @__PURE__ */ (function () {
+ const ShapePathInterface = /* @__PURE__ */ (function() {
return function pathInterfaceFactory(shape, view, propertyGroup) {
var prop = view.sh;
function interfaceFunction(val) {
@@ -52385,7 +52359,7 @@ var lottie = (() => {
prop.setGroupProperty(PropertyInterface("Path", _propertyGroup));
Object.defineProperties(interfaceFunction, {
path: {
- get: function () {
+ get: function() {
if (prop.k) {
prop.getValue();
}
@@ -52393,7 +52367,7 @@ var lottie = (() => {
}
},
shape: {
- get: function () {
+ get: function() {
if (prop.k) {
prop.getValue();
}
@@ -52409,7 +52383,7 @@ var lottie = (() => {
return interfaceFunction;
};
})();
- const ShapeExpressionInterface = /* @__PURE__ */ (function () {
+ const ShapeExpressionInterface = /* @__PURE__ */ (function() {
function iterateElements(shapes, view, propertyGroup) {
var arr = [];
var i4;
@@ -52495,7 +52469,7 @@ var lottie = (() => {
interfaceFunction.content = content;
interfaceFunction.transform = transformInterface;
Object.defineProperty(interfaceFunction, "_name", {
- get: function () {
+ get: function() {
return shape.nm;
}
});
@@ -52553,7 +52527,7 @@ var lottie = (() => {
get: ExpressionPropertyInterface(view.o)
},
type: {
- get: function () {
+ get: function() {
return "a";
}
},
@@ -52609,7 +52583,7 @@ var lottie = (() => {
get: ExpressionPropertyInterface(view.w)
},
dash: {
- get: function () {
+ get: function() {
return dashOb;
}
},
@@ -52893,7 +52867,7 @@ var lottie = (() => {
interfaceFunction.mn = shape.mn;
return interfaceFunction;
}
- return function (shapes, view, propertyGroup) {
+ return function(shapes, view, propertyGroup) {
var interfaces;
function _interfaceFunction(value) {
if (typeof value === "number") {
@@ -52923,8 +52897,8 @@ var lottie = (() => {
return _interfaceFunction;
};
})();
- const TextExpressionInterface = /* @__PURE__ */ (function () {
- return function (elem) {
+ const TextExpressionInterface = /* @__PURE__ */ (function() {
+ return function(elem) {
var _prevValue;
var _sourceText;
function _thisLayerFunction(name) {
@@ -52936,7 +52910,7 @@ var lottie = (() => {
}
}
Object.defineProperty(_thisLayerFunction, "sourceText", {
- get: function () {
+ get: function() {
elem.textProperty.getValue();
var stringValue = elem.textProperty.currentData.t;
if (stringValue !== _prevValue) {
@@ -52950,7 +52924,7 @@ var lottie = (() => {
return _thisLayerFunction;
};
})();
- const getBlendMode = /* @__PURE__ */ (function () {
+ const getBlendMode = /* @__PURE__ */ (function() {
var blendModeEnums = {
0: "source-over",
1: "multiply",
@@ -52969,7 +52943,7 @@ var lottie = (() => {
14: "color",
15: "luminosity"
};
- return function (mode) {
+ return function(mode) {
return blendModeEnums[mode] || "";
};
})();
@@ -53013,7 +52987,7 @@ var lottie = (() => {
}
extendPrototype([DynamicPropertyContainer], GroupEffect);
GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;
- GroupEffect.prototype.init = function (data, element) {
+ GroupEffect.prototype.init = function(data, element) {
this.data = data;
this.effectElements = [];
this.initDynamicPropertyContainer(element);
@@ -53061,7 +53035,7 @@ var lottie = (() => {
function BaseElement() {
}
BaseElement.prototype = {
- checkMasks: function () {
+ checkMasks: function() {
if (!this.data.hasMask) {
return false;
}
@@ -53075,7 +53049,7 @@ var lottie = (() => {
}
return false;
},
- initExpressions: function () {
+ initExpressions: function() {
this.layerInterface = LayerExpressionInterface(this);
if (this.data.hasMask && this.maskManager) {
this.layerInterface.registerMaskInterface(this.maskManager);
@@ -53096,12 +53070,12 @@ var lottie = (() => {
this.layerInterface.text = this.layerInterface.textInterface;
}
},
- setBlendMode: function () {
+ setBlendMode: function() {
var blendModeValue = getBlendMode(this.data.bm);
var elem = this.baseElement || this.layerElement;
elem.style["mix-blend-mode"] = blendModeValue;
},
- initBaseData: function (data, globalData, comp) {
+ initBaseData: function(data, globalData, comp) {
this.globalData = globalData;
this.comp = comp;
this.data = data;
@@ -53111,10 +53085,10 @@ var lottie = (() => {
}
this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);
},
- getType: function () {
+ getType: function() {
return this.type;
},
- sourceRectAtTime: function () {
+ sourceRectAtTime: function() {
}
};
function FrameElement() {
@@ -53125,7 +53099,7 @@ var lottie = (() => {
* Initializes frame related properties.
*
*/
- initFrame: function () {
+ initFrame: function() {
this._isFirstFrame = false;
this.dynamicProperties = [];
this._mdf = false;
@@ -53140,7 +53114,7 @@ var lottie = (() => {
* if layers is currently in range
*
*/
- prepareProperties: function (num, isVisible) {
+ prepareProperties: function(num, isVisible) {
var i4;
var len = this.dynamicProperties.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -53153,14 +53127,14 @@ var lottie = (() => {
}
}
},
- addDynamicProperty: function (prop) {
+ addDynamicProperty: function(prop) {
if (this.dynamicProperties.indexOf(prop) === -1) {
this.dynamicProperties.push(prop);
}
}
};
- const FootageInterface = /* @__PURE__ */ (function () {
- var outlineInterfaceFactory = function (elem) {
+ const FootageInterface = /* @__PURE__ */ (function() {
+ var outlineInterfaceFactory = function(elem) {
var currentPropertyName = "";
var currentProperty = elem.getFootageData();
function init3() {
@@ -53190,7 +53164,7 @@ var lottie = (() => {
}
return init3;
};
- var dataInterfaceFactory = function (elem) {
+ var dataInterfaceFactory = function(elem) {
function interfaceFunction(value) {
if (value === "Outline") {
return interfaceFunction.outlineInterface();
@@ -53201,7 +53175,7 @@ var lottie = (() => {
interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);
return interfaceFunction;
};
- return function (elem) {
+ return function(elem) {
function _interfaceFunction(value) {
if (value === "Data") {
return _interfaceFunction.dataInterface;
@@ -53220,20 +53194,20 @@ var lottie = (() => {
this.footageData = globalData.imageLoader.getAsset(this.assetData);
this.initBaseData(data, globalData, comp);
}
- FootageElement.prototype.prepareFrame = function () {
+ FootageElement.prototype.prepareFrame = function() {
};
extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);
- FootageElement.prototype.getBaseElement = function () {
+ FootageElement.prototype.getBaseElement = function() {
return null;
};
- FootageElement.prototype.renderFrame = function () {
+ FootageElement.prototype.renderFrame = function() {
};
- FootageElement.prototype.destroy = function () {
+ FootageElement.prototype.destroy = function() {
};
- FootageElement.prototype.initExpressions = function () {
+ FootageElement.prototype.initExpressions = function() {
this.layerInterface = FootageInterface(this);
};
- FootageElement.prototype.getFootageData = function () {
+ FootageElement.prototype.getFootageData = function() {
return this.footageData;
};
function AudioElement(data, globalData, comp) {
@@ -53253,7 +53227,7 @@ var lottie = (() => {
this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : { k: [100] }, 1, 0.01, this);
}
- AudioElement.prototype.prepareFrame = function (num) {
+ AudioElement.prototype.prepareFrame = function(num) {
this.prepareRenderableFrame(num, true);
this.prepareProperties(num, true);
if (!this.tm._placeholder) {
@@ -53270,7 +53244,7 @@ var lottie = (() => {
}
};
extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);
- AudioElement.prototype.renderFrame = function () {
+ AudioElement.prototype.renderFrame = function() {
if (this.isInRange && this._canPlay) {
if (!this._isPlaying) {
this.audio.play();
@@ -53281,40 +53255,40 @@ var lottie = (() => {
}
}
};
- AudioElement.prototype.show = function () {
+ AudioElement.prototype.show = function() {
};
- AudioElement.prototype.hide = function () {
+ AudioElement.prototype.hide = function() {
this.audio.pause();
this._isPlaying = false;
};
- AudioElement.prototype.pause = function () {
+ AudioElement.prototype.pause = function() {
this.audio.pause();
this._isPlaying = false;
this._canPlay = false;
};
- AudioElement.prototype.resume = function () {
+ AudioElement.prototype.resume = function() {
this._canPlay = true;
};
- AudioElement.prototype.setRate = function (rateValue) {
+ AudioElement.prototype.setRate = function(rateValue) {
this.audio.rate(rateValue);
};
- AudioElement.prototype.volume = function (volumeValue) {
+ AudioElement.prototype.volume = function(volumeValue) {
this._volumeMultiplier = volumeValue;
this._previousVolume = volumeValue * this._volume;
this.audio.volume(this._previousVolume);
};
- AudioElement.prototype.getBaseElement = function () {
+ AudioElement.prototype.getBaseElement = function() {
return null;
};
- AudioElement.prototype.destroy = function () {
+ AudioElement.prototype.destroy = function() {
};
- AudioElement.prototype.sourceRectAtTime = function () {
+ AudioElement.prototype.sourceRectAtTime = function() {
};
- AudioElement.prototype.initExpressions = function () {
+ AudioElement.prototype.initExpressions = function() {
};
function BaseRenderer() {
}
- BaseRenderer.prototype.checkLayers = function (num) {
+ BaseRenderer.prototype.checkLayers = function(num) {
var i4;
var len = this.layers.length;
var data;
@@ -53330,7 +53304,7 @@ var lottie = (() => {
}
this.checkPendingElements();
};
- BaseRenderer.prototype.createItem = function (layer) {
+ BaseRenderer.prototype.createItem = function(layer) {
switch (layer.ty) {
case 2:
return this.createImage(layer);
@@ -53354,16 +53328,16 @@ var lottie = (() => {
return this.createNull(layer);
}
};
- BaseRenderer.prototype.createCamera = function () {
+ BaseRenderer.prototype.createCamera = function() {
throw new Error("You're using a 3d camera. Try the html renderer.");
};
- BaseRenderer.prototype.createAudio = function (data) {
+ BaseRenderer.prototype.createAudio = function(data) {
return new AudioElement(data, this.globalData, this);
};
- BaseRenderer.prototype.createFootage = function (data) {
+ BaseRenderer.prototype.createFootage = function(data) {
return new FootageElement(data, this.globalData, this);
};
- BaseRenderer.prototype.buildAllItems = function () {
+ BaseRenderer.prototype.buildAllItems = function() {
var i4;
var len = this.layers.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -53371,7 +53345,7 @@ var lottie = (() => {
}
this.checkPendingElements();
};
- BaseRenderer.prototype.includeLayers = function (newLayers) {
+ BaseRenderer.prototype.includeLayers = function(newLayers) {
this.completeLayers = false;
var i4;
var len = newLayers.length;
@@ -53388,15 +53362,15 @@ var lottie = (() => {
}
}
};
- BaseRenderer.prototype.setProjectInterface = function (pInterface) {
+ BaseRenderer.prototype.setProjectInterface = function(pInterface) {
this.globalData.projectInterface = pInterface;
};
- BaseRenderer.prototype.initItems = function () {
+ BaseRenderer.prototype.initItems = function() {
if (!this.globalData.progressiveLoad) {
this.buildAllItems();
}
};
- BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {
+ BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) {
var elements = this.elements;
var layers = this.layers;
var i4 = 0;
@@ -53419,10 +53393,10 @@ var lottie = (() => {
i4 += 1;
}
};
- BaseRenderer.prototype.addPendingElement = function (element) {
+ BaseRenderer.prototype.addPendingElement = function(element) {
this.pendingElements.push(element);
};
- BaseRenderer.prototype.searchExtraCompositions = function (assets) {
+ BaseRenderer.prototype.searchExtraCompositions = function(assets) {
var i4;
var len = assets.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -53433,7 +53407,7 @@ var lottie = (() => {
}
}
};
- BaseRenderer.prototype.getElementByPath = function (path) {
+ BaseRenderer.prototype.getElementByPath = function(path) {
var pathValue = path.shift();
var element;
if (typeof pathValue === "number") {
@@ -53453,7 +53427,7 @@ var lottie = (() => {
}
return element.getElementByPath(path);
};
- BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {
+ BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) {
this.globalData.fontManager = new FontManager();
this.globalData.fontManager.addChars(animData.chars);
this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);
@@ -53472,7 +53446,7 @@ var lottie = (() => {
function TransformElement() {
}
TransformElement.prototype = {
- initTransform: function () {
+ initTransform: function() {
this.finalTransform = {
mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },
_matMdf: false,
@@ -53485,7 +53459,7 @@ var lottie = (() => {
if (this.data.ty !== 11)
;
},
- renderTransform: function () {
+ renderTransform: function() {
this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;
this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;
if (this.hierarchy) {
@@ -53529,7 +53503,7 @@ var lottie = (() => {
}
}
},
- globalToLocal: function (pt) {
+ globalToLocal: function(pt) {
var transforms = [];
transforms.push(this.finalTransform);
var flag = true;
@@ -53681,10 +53655,10 @@ var lottie = (() => {
this.element.addRenderableComponent(this);
}
}
- MaskElement.prototype.getMaskProperty = function (pos) {
+ MaskElement.prototype.getMaskProperty = function(pos) {
return this.viewData[pos].prop;
};
- MaskElement.prototype.renderFrame = function (isFirstFrame) {
+ MaskElement.prototype.renderFrame = function(isFirstFrame) {
var finalMat = this.element.finalTransform.mat;
var i4;
var len = this.masksProperties.length;
@@ -53721,10 +53695,10 @@ var lottie = (() => {
}
}
};
- MaskElement.prototype.getMaskelement = function () {
+ MaskElement.prototype.getMaskelement = function() {
return this.maskElement;
};
- MaskElement.prototype.createLayerSolidPath = function () {
+ MaskElement.prototype.createLayerSolidPath = function() {
var path = "M0,0 ";
path += " h" + this.globalData.compSize.w;
path += " v" + this.globalData.compSize.h;
@@ -53732,7 +53706,7 @@ var lottie = (() => {
path += " v-" + this.globalData.compSize.h + " ";
return path;
};
- MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {
+ MaskElement.prototype.drawPath = function(pathData, pathNodes, viewData) {
var pathString = " M" + pathNodes.v[0][0] + "," + pathNodes.v[0][1];
var i4;
var len;
@@ -53754,14 +53728,14 @@ var lottie = (() => {
viewData.lastPath = pathString;
}
};
- MaskElement.prototype.destroy = function () {
+ MaskElement.prototype.destroy = function() {
this.element = null;
this.globalData = null;
this.maskElement = null;
this.data = null;
this.masksProperties = null;
};
- const filtersFactory = (function () {
+ const filtersFactory = (function() {
var ob = {};
ob.createFilter = createFilter;
ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;
@@ -53786,7 +53760,7 @@ var lottie = (() => {
}
return ob;
})();
- const featureSupport = (function () {
+ const featureSupport = (function() {
var ob = {
maskType: true
};
@@ -53829,7 +53803,7 @@ var lottie = (() => {
elem.addRenderableComponent(this);
}
}
- SVGEffects.prototype.renderFrame = function (_isFirstFrame) {
+ SVGEffects.prototype.renderFrame = function(_isFirstFrame) {
var i4;
var len = this.filters.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -53839,10 +53813,10 @@ var lottie = (() => {
function SVGBaseElement() {
}
SVGBaseElement.prototype = {
- initRendererElement: function () {
+ initRendererElement: function() {
this.layerElement = createNS("g");
},
- createContainerElements: function () {
+ createContainerElements: function() {
this.matteElement = createNS("g");
this.transformedElement = this.layerElement;
this.maskedElement = this.layerElement;
@@ -53951,7 +53925,7 @@ var lottie = (() => {
this.setBlendMode();
}
},
- renderElement: function () {
+ renderElement: function() {
if (this.finalTransform._matMdf) {
this.transformedElement.setAttribute("transform", this.finalTransform.mat.to2dCSS());
}
@@ -53959,22 +53933,22 @@ var lottie = (() => {
this.transformedElement.setAttribute("opacity", this.finalTransform.mProp.o.v);
}
},
- destroyBaseElement: function () {
+ destroyBaseElement: function() {
this.layerElement = null;
this.matteElement = null;
this.maskManager.destroy();
},
- getBaseElement: function () {
+ getBaseElement: function() {
if (this.data.hd) {
return null;
}
return this.baseElement;
},
- createRenderableComponents: function () {
+ createRenderableComponents: function() {
this.maskManager = new MaskElement(this.data, this, this.globalData);
this.renderableEffectsManager = new SVGEffects(this);
},
- setMatte: function (id) {
+ setMatte: function(id) {
if (!this.matteElement) {
return;
}
@@ -53989,7 +53963,7 @@ var lottie = (() => {
* Initializes hierarchy properties
*
*/
- initHierarchy: function () {
+ initHierarchy: function() {
this.hierarchy = [];
this._isParent = false;
this.checkParenting();
@@ -54001,7 +53975,7 @@ var lottie = (() => {
* layer's parent list
*
*/
- setHierarchy: function (hierarchy) {
+ setHierarchy: function(hierarchy) {
this.hierarchy = hierarchy;
},
/**
@@ -54009,7 +53983,7 @@ var lottie = (() => {
* Sets layer as parent.
*
*/
- setAsParent: function () {
+ setAsParent: function() {
this._isParent = true;
},
/**
@@ -54017,7 +53991,7 @@ var lottie = (() => {
* Searches layer's parenting chain
*
*/
- checkParenting: function () {
+ checkParenting: function() {
if (this.data.parent !== void 0) {
this.comp.buildElementParenting(this, this.data.parent, []);
}
@@ -54025,9 +53999,9 @@ var lottie = (() => {
};
function RenderableDOMElement() {
}
- (function () {
+ (function() {
var _prototype = {
- initElement: function (data, globalData, comp) {
+ initElement: function(data, globalData, comp) {
this.initFrame();
this.initBaseData(data, globalData, comp);
this.initTransform(data, globalData, comp);
@@ -54039,14 +54013,14 @@ var lottie = (() => {
this.createContent();
this.hide();
},
- hide: function () {
+ hide: function() {
if (!this.hidden && (!this.isInRange || this.isTransparent)) {
var elem = this.baseElement || this.layerElement;
elem.style.display = "none";
this.hidden = true;
}
},
- show: function () {
+ show: function() {
if (this.isInRange && !this.isTransparent) {
if (!this.data.hd) {
var elem = this.baseElement || this.layerElement;
@@ -54056,7 +54030,7 @@ var lottie = (() => {
this._isFirstFrame = true;
}
},
- renderFrame: function () {
+ renderFrame: function() {
if (this.data.hd || this.hidden) {
return;
}
@@ -54068,15 +54042,15 @@ var lottie = (() => {
this._isFirstFrame = false;
}
},
- renderInnerContent: function () {
+ renderInnerContent: function() {
},
- prepareFrame: function (num) {
+ prepareFrame: function(num) {
this._mdf = false;
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
this.checkTransparency();
},
- destroy: function () {
+ destroy: function() {
this.innerElem = null;
this.destroyBaseElement();
}
@@ -54097,7 +54071,7 @@ var lottie = (() => {
[BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement],
IImageElement
);
- IImageElement.prototype.createContent = function () {
+ IImageElement.prototype.createContent = function() {
var assetPath = this.globalData.getAssetsPath(this.assetData);
this.innerElem = createNS("image");
this.innerElem.setAttribute("width", this.assetData.w + "px");
@@ -54109,7 +54083,7 @@ var lottie = (() => {
this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink", "href", assetPath);
this.layerElement.appendChild(this.innerElem);
};
- IImageElement.prototype.sourceRectAtTime = function () {
+ IImageElement.prototype.sourceRectAtTime = function() {
return this.sourceRect;
};
function ProcessedElement(element, position2) {
@@ -54119,14 +54093,14 @@ var lottie = (() => {
function IShapeElement() {
}
IShapeElement.prototype = {
- addShapeToModifiers: function (data) {
+ addShapeToModifiers: function(data) {
var i4;
var len = this.shapeModifiers.length;
for (i4 = 0; i4 < len; i4 += 1) {
this.shapeModifiers[i4].addShape(data);
}
},
- isShapeInAnimatedModifiers: function (data) {
+ isShapeInAnimatedModifiers: function(data) {
var i4 = 0;
var len = this.shapeModifiers.length;
while (i4 < len) {
@@ -54136,7 +54110,7 @@ var lottie = (() => {
}
return false;
},
- renderModifiers: function () {
+ renderModifiers: function() {
if (!this.shapeModifiers.length) {
return;
}
@@ -54154,7 +54128,7 @@ var lottie = (() => {
}
}
},
- searchProcessedElement: function (elem) {
+ searchProcessedElement: function(elem) {
var elements = this.processedElements;
var i4 = 0;
var len = elements.length;
@@ -54166,7 +54140,7 @@ var lottie = (() => {
}
return 0;
},
- addProcessedElement: function (elem, pos) {
+ addProcessedElement: function(elem, pos) {
var elements = this.processedElements;
var i4 = elements.length;
while (i4) {
@@ -54178,7 +54152,7 @@ var lottie = (() => {
}
elements.push(new ProcessedElement(elem, pos));
},
- prepareFrame: function (num) {
+ prepareFrame: function(num) {
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
}
@@ -54211,7 +54185,7 @@ var lottie = (() => {
i4 += 1;
}
}
- SVGShapeData.prototype.setAsAnimated = function () {
+ SVGShapeData.prototype.setAsAnimated = function() {
this._isAnimated = true;
};
function SVGStyleData(data, level) {
@@ -54224,7 +54198,7 @@ var lottie = (() => {
this.pElem = createNS("path");
this.msElem = null;
}
- SVGStyleData.prototype.reset = function () {
+ SVGStyleData.prototype.reset = function() {
this.d = "";
this._mdf = false;
};
@@ -54251,7 +54225,7 @@ var lottie = (() => {
}
this._isAnimated = this.k;
}
- DashProperty.prototype.getValue = function (forceRender) {
+ DashProperty.prototype.getValue = function(forceRender) {
if (this.elem.globalData.frameId === this.frameId && !forceRender) {
return;
}
@@ -54317,7 +54291,7 @@ var lottie = (() => {
this.k = this.prop.k;
this.getValue(true);
}
- GradientProperty.prototype.comparePoints = function (values, points) {
+ GradientProperty.prototype.comparePoints = function(values, points) {
var i4 = 0;
var len = this.o.length / 2;
var diff;
@@ -54330,7 +54304,7 @@ var lottie = (() => {
}
return true;
};
- GradientProperty.prototype.checkCollapsable = function () {
+ GradientProperty.prototype.checkCollapsable = function() {
if (this.o.length / 2 !== this.c.length / 4) {
return false;
}
@@ -54348,7 +54322,7 @@ var lottie = (() => {
}
return true;
};
- GradientProperty.prototype.getValue = function (forceRender) {
+ GradientProperty.prototype.getValue = function(forceRender) {
this.prop.getValue();
this._mdf = false;
this._cmdf = false;
@@ -54386,7 +54360,7 @@ var lottie = (() => {
this.getValue = this.iterateDynamicProperties;
this.initGradientData(elem, data, styleOb);
}
- SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {
+ SVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb) {
this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);
this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);
this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);
@@ -54399,7 +54373,7 @@ var lottie = (() => {
this.setGradientOpacity(data, styleOb);
this._isAnimated = !!this._isAnimated;
};
- SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {
+ SVGGradientFillStyleData.prototype.setGradientData = function(pathElement, data) {
var gradientId = createElementID();
var gfill = createNS(data.t === 1 ? "linearGradient" : "radialGradient");
gfill.setAttribute("id", gradientId);
@@ -54419,7 +54393,7 @@ var lottie = (() => {
this.gf = gfill;
this.cst = stops;
};
- SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {
+ SVGGradientFillStyleData.prototype.setGradientOpacity = function(data, styleOb) {
if (this.g._hasOpacity && !this.g._collapsable) {
var stop;
var j;
@@ -54481,7 +54455,7 @@ var lottie = (() => {
this.elements = [];
this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;
}
- const buildShapeString = function (pathNodes, length3, closed, mat2) {
+ const buildShapeString = function(pathNodes, length3, closed, mat2) {
if (length3 === 0) {
return "";
}
@@ -54499,7 +54473,7 @@ var lottie = (() => {
}
return shapeString;
};
- const SVGElementsRenderer = (function () {
+ const SVGElementsRenderer = (function() {
var _identityMatrix3 = new Matrix();
var _matrixHelper = new Matrix();
var ob = {
@@ -54768,16 +54742,16 @@ var lottie = (() => {
],
SVGShapeElement
);
- SVGShapeElement.prototype.initSecondaryElement = function () {
+ SVGShapeElement.prototype.initSecondaryElement = function() {
};
SVGShapeElement.prototype.identityMatrix = new Matrix();
- SVGShapeElement.prototype.buildExpressionInterface = function () {
+ SVGShapeElement.prototype.buildExpressionInterface = function() {
};
- SVGShapeElement.prototype.createContent = function () {
+ SVGShapeElement.prototype.createContent = function() {
this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);
this.filterUniqueShapes();
};
- SVGShapeElement.prototype.filterUniqueShapes = function () {
+ SVGShapeElement.prototype.filterUniqueShapes = function() {
var i4;
var len = this.shapes.length;
var shape;
@@ -54802,14 +54776,14 @@ var lottie = (() => {
}
}
};
- SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {
+ SVGShapeElement.prototype.setShapesAsAnimated = function(shapes) {
var i4;
var len = shapes.length;
for (i4 = 0; i4 < len; i4 += 1) {
shapes[i4].setAsAnimated();
}
};
- SVGShapeElement.prototype.createStyleElement = function (data, level) {
+ SVGShapeElement.prototype.createStyleElement = function(data, level) {
var elementData;
var styleOb = new SVGStyleData(data, level);
var pathElement = styleOb.pElem;
@@ -54853,7 +54827,7 @@ var lottie = (() => {
this.addToAnimatedContents(data, elementData);
return elementData;
};
- SVGShapeElement.prototype.createGroupElement = function (data) {
+ SVGShapeElement.prototype.createGroupElement = function(data) {
var elementData = new ShapeGroupData();
if (data.ln) {
elementData.gr.setAttribute("id", data.ln);
@@ -54866,13 +54840,13 @@ var lottie = (() => {
}
return elementData;
};
- SVGShapeElement.prototype.createTransformElement = function (data, container) {
+ SVGShapeElement.prototype.createTransformElement = function(data, container) {
var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);
var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);
this.addToAnimatedContents(data, elementData);
return elementData;
};
- SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {
+ SVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {
var ty = 4;
if (data.ty === "rc") {
ty = 5;
@@ -54888,7 +54862,7 @@ var lottie = (() => {
this.addToAnimatedContents(data, elementData);
return elementData;
};
- SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {
+ SVGShapeElement.prototype.addToAnimatedContents = function(data, element) {
var i4 = 0;
var len = this.animatedContents.length;
while (i4 < len) {
@@ -54903,7 +54877,7 @@ var lottie = (() => {
data
});
};
- SVGShapeElement.prototype.setElementStyles = function (elementData) {
+ SVGShapeElement.prototype.setElementStyles = function(elementData) {
var arr = elementData.styles;
var j;
var jLen = this.stylesList.length;
@@ -54913,7 +54887,7 @@ var lottie = (() => {
}
}
};
- SVGShapeElement.prototype.reloadShapes = function () {
+ SVGShapeElement.prototype.reloadShapes = function() {
this._isFirstFrame = true;
var i4;
var len = this.itemsData.length;
@@ -54928,7 +54902,7 @@ var lottie = (() => {
}
this.renderModifiers();
};
- SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {
+ SVGShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, container, level, transformers, render) {
var ownTransformers = [].concat(transformers);
var i4;
var len = arr.length - 1;
@@ -55027,7 +55001,7 @@ var lottie = (() => {
ownModifiers[i4].closed = true;
}
};
- SVGShapeElement.prototype.renderInnerContent = function () {
+ SVGShapeElement.prototype.renderInnerContent = function() {
this.renderModifiers();
var i4;
var len = this.stylesList.length;
@@ -55045,7 +55019,7 @@ var lottie = (() => {
}
}
};
- SVGShapeElement.prototype.renderShape = function () {
+ SVGShapeElement.prototype.renderShape = function() {
var i4;
var len = this.animatedContents.length;
var animatedContent;
@@ -55056,7 +55030,7 @@ var lottie = (() => {
}
}
};
- SVGShapeElement.prototype.destroy = function () {
+ SVGShapeElement.prototype.destroy = function() {
this.destroyBaseElement();
this.shapesData = null;
this.itemsData = null;
@@ -55077,7 +55051,7 @@ var lottie = (() => {
p: true
};
}
- LetterProps.prototype.update = function (o2, sw, sc, fc, m, p2) {
+ LetterProps.prototype.update = function(o2, sw, sc, fc, m, p2) {
this._mdf.o = false;
this._mdf.sw = false;
this._mdf.sc = false;
@@ -55167,7 +55141,7 @@ var lottie = (() => {
}
}
TextProperty.prototype.defaultBoxWidth = [0, 0];
- TextProperty.prototype.copyData = function (obj, data) {
+ TextProperty.prototype.copyData = function(obj, data) {
for (var s2 in data) {
if (Object.prototype.hasOwnProperty.call(data, s2)) {
obj[s2] = data[s2];
@@ -55175,7 +55149,7 @@ var lottie = (() => {
}
return obj;
};
- TextProperty.prototype.setCurrentData = function (data) {
+ TextProperty.prototype.setCurrentData = function(data) {
if (!data.__complete) {
this.completeTextData(data);
}
@@ -55183,21 +55157,21 @@ var lottie = (() => {
this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;
this._mdf = true;
};
- TextProperty.prototype.searchProperty = function () {
+ TextProperty.prototype.searchProperty = function() {
return this.searchKeyframes();
};
- TextProperty.prototype.searchKeyframes = function () {
+ TextProperty.prototype.searchKeyframes = function() {
this.kf = this.data.d.k.length > 1;
if (this.kf) {
this.addEffect(this.getKeyframeValue.bind(this));
}
return this.kf;
};
- TextProperty.prototype.addEffect = function (effectFunction) {
+ TextProperty.prototype.addEffect = function(effectFunction) {
this.effectsSequence.push(effectFunction);
this.elem.addDynamicProperty(this);
};
- TextProperty.prototype.getValue = function (_finalValue) {
+ TextProperty.prototype.getValue = function(_finalValue) {
if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {
return;
}
@@ -55228,7 +55202,7 @@ var lottie = (() => {
this.lock = false;
this.frameId = this.elem.globalData.frameId;
};
- TextProperty.prototype.getKeyframeValue = function () {
+ TextProperty.prototype.getKeyframeValue = function() {
var textKeys = this.data.d.k;
var frameNum = this.elem.comp.renderedFrame;
var i4 = 0;
@@ -55244,7 +55218,7 @@ var lottie = (() => {
}
return this.data.d.k[this.keysIndex].s;
};
- TextProperty.prototype.buildFinalText = function (text) {
+ TextProperty.prototype.buildFinalText = function(text) {
var charactersArray = [];
var i4 = 0;
var len = text.length;
@@ -55287,7 +55261,7 @@ var lottie = (() => {
}
return charactersArray;
};
- TextProperty.prototype.completeTextData = function (documentData) {
+ TextProperty.prototype.completeTextData = function(documentData) {
documentData.__complete = true;
var fontManager = this.elem.globalData.fontManager;
var data = this.data;
@@ -55522,7 +55496,7 @@ var lottie = (() => {
documentData.ls = documentData.ls || 0;
documentData.ascent = fontData.ascent * documentData.finalSize / 100;
};
- TextProperty.prototype.updateDocumentData = function (newData, index22) {
+ TextProperty.prototype.updateDocumentData = function(newData, index22) {
index22 = index22 === void 0 ? this.keysIndex : index22;
var dData = this.copyData({}, this.data.d.k[index22].s);
dData = this.copyData(dData, newData);
@@ -55530,24 +55504,24 @@ var lottie = (() => {
this.recalculate(index22);
this.elem.addDynamicProperty(this);
};
- TextProperty.prototype.recalculate = function (index22) {
+ TextProperty.prototype.recalculate = function(index22) {
var dData = this.data.d.k[index22].s;
dData.__complete = false;
this.keysIndex = 0;
this._isFirstFrame = true;
this.getValue(dData);
};
- TextProperty.prototype.canResizeFont = function (_canResize) {
+ TextProperty.prototype.canResizeFont = function(_canResize) {
this.canResize = _canResize;
this.recalculate(this.keysIndex);
this.elem.addDynamicProperty(this);
};
- TextProperty.prototype.setMinimumFontSize = function (_fontValue) {
+ TextProperty.prototype.setMinimumFontSize = function(_fontValue) {
this.minimumFontSize = Math.floor(_fontValue) || 1;
this.recalculate(this.keysIndex);
this.elem.addDynamicProperty(this);
};
- const TextSelectorProp = (function () {
+ const TextSelectorProp = (function() {
var max2 = Math.max;
var min = Math.min;
var floor = Math.floor;
@@ -55576,7 +55550,7 @@ var lottie = (() => {
}
}
TextSelectorPropFactory.prototype = {
- getMult: function (ind) {
+ getMult: function(ind) {
if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {
this.getValue();
}
@@ -55671,7 +55645,7 @@ var lottie = (() => {
}
return mult * this.a.v;
},
- getValue: function (newCharsFlag) {
+ getValue: function(newCharsFlag) {
this.iterateDynamicProperties();
this._mdf = newCharsFlag || this._mdf;
this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;
@@ -55740,7 +55714,7 @@ var lottie = (() => {
this.lettersChangedFlag = false;
this.initDynamicPropertyContainer(elem);
}
- TextAnimatorProperty.prototype.searchProperties = function () {
+ TextAnimatorProperty.prototype.searchProperties = function() {
var i4;
var len = this._textData.a.length;
var animatorProps;
@@ -55764,7 +55738,7 @@ var lottie = (() => {
}
this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);
};
- TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {
+ TextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag) {
this.lettersChangedFlag = lettersChangedFlag;
if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {
return;
@@ -56318,7 +56292,7 @@ var lottie = (() => {
}
}
};
- TextAnimatorProperty.prototype.getValue = function () {
+ TextAnimatorProperty.prototype.getValue = function() {
if (this._elem.globalData.frameId === this._frameId) {
return;
}
@@ -56330,7 +56304,7 @@ var lottie = (() => {
extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);
function ITextElement() {
}
- ITextElement.prototype.initElement = function (data, globalData, comp) {
+ ITextElement.prototype.initElement = function(data, globalData, comp) {
this.lettersChangedFlag = true;
this.initFrame();
this.initBaseData(data, globalData, comp);
@@ -56346,7 +56320,7 @@ var lottie = (() => {
this.hide();
this.textAnimator.searchProperties(this.dynamicProperties);
};
- ITextElement.prototype.prepareFrame = function (num) {
+ ITextElement.prototype.prepareFrame = function(num) {
this._mdf = false;
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
@@ -56356,7 +56330,7 @@ var lottie = (() => {
this.textProperty._mdf = false;
}
};
- ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {
+ ITextElement.prototype.createPathShape = function(matrixHelper, shapes) {
var j;
var jLen = shapes.length;
var pathNodes;
@@ -56369,16 +56343,16 @@ var lottie = (() => {
}
return shapeStr;
};
- ITextElement.prototype.updateDocumentData = function (newData, index22) {
+ ITextElement.prototype.updateDocumentData = function(newData, index22) {
this.textProperty.updateDocumentData(newData, index22);
};
- ITextElement.prototype.canResizeFont = function (_canResize) {
+ ITextElement.prototype.canResizeFont = function(_canResize) {
this.textProperty.canResizeFont(_canResize);
};
- ITextElement.prototype.setMinimumFontSize = function (_fontSize) {
+ ITextElement.prototype.setMinimumFontSize = function(_fontSize) {
this.textProperty.setMinimumFontSize(_fontSize);
};
- ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {
+ ITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) {
if (documentData.ps) {
matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);
}
@@ -56401,11 +56375,11 @@ var lottie = (() => {
}
matrixHelper.translate(xPos, yPos, 0);
};
- ITextElement.prototype.buildColor = function (colorData) {
+ ITextElement.prototype.buildColor = function(colorData) {
return "rgb(" + Math.round(colorData[0] * 255) + "," + Math.round(colorData[1] * 255) + "," + Math.round(colorData[2] * 255) + ")";
};
ITextElement.prototype.emptyProp = new LetterProps();
- ITextElement.prototype.destroy = function () {
+ ITextElement.prototype.destroy = function() {
};
var emptyShapeData = {
shapes: []
@@ -56419,12 +56393,12 @@ var lottie = (() => {
[BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement],
SVGTextLottieElement
);
- SVGTextLottieElement.prototype.createContent = function () {
+ SVGTextLottieElement.prototype.createContent = function() {
if (this.data.singleShape && !this.globalData.fontManager.chars) {
this.textContainer = createNS("text");
}
};
- SVGTextLottieElement.prototype.buildTextContents = function (textArray) {
+ SVGTextLottieElement.prototype.buildTextContents = function(textArray) {
var i4 = 0;
var len = textArray.length;
var textContents = [];
@@ -56441,7 +56415,7 @@ var lottie = (() => {
textContents.push(currentTextContent);
return textContents;
};
- SVGTextLottieElement.prototype.buildShapeData = function (data, scale5) {
+ SVGTextLottieElement.prototype.buildShapeData = function(data, scale5) {
if (data.shapes && data.shapes.length) {
var shape = data.shapes[0];
if (shape.it) {
@@ -56454,7 +56428,7 @@ var lottie = (() => {
}
return data;
};
- SVGTextLottieElement.prototype.buildNewText = function () {
+ SVGTextLottieElement.prototype.buildNewText = function() {
this.addDynamicProperty(this);
var i4;
var len;
@@ -56618,7 +56592,7 @@ var lottie = (() => {
}
this._sizeChanged = true;
};
- SVGTextLottieElement.prototype.sourceRectAtTime = function () {
+ SVGTextLottieElement.prototype.sourceRectAtTime = function() {
this.prepareFrame(this.comp.renderedFrame - this.data.st);
this.renderInnerContent();
if (this._sizeChanged) {
@@ -56633,7 +56607,7 @@ var lottie = (() => {
}
return this.bbox;
};
- SVGTextLottieElement.prototype.getValue = function () {
+ SVGTextLottieElement.prototype.getValue = function() {
var i4;
var len = this.textSpans.length;
var glyphElement;
@@ -56648,7 +56622,7 @@ var lottie = (() => {
}
}
};
- SVGTextLottieElement.prototype.renderInnerContent = function () {
+ SVGTextLottieElement.prototype.renderInnerContent = function() {
if (!this.data.singleShape || this._mdf) {
this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {
@@ -56693,7 +56667,7 @@ var lottie = (() => {
this.initElement(data, globalData, comp);
}
extendPrototype([IImageElement], ISolidElement);
- ISolidElement.prototype.createContent = function () {
+ ISolidElement.prototype.createContent = function() {
var rect = createNS("rect");
rect.setAttribute("width", this.data.sw);
rect.setAttribute("height", this.data.sh);
@@ -56707,40 +56681,40 @@ var lottie = (() => {
this.initTransform(data, globalData, comp);
this.initHierarchy();
}
- NullElement.prototype.prepareFrame = function (num) {
+ NullElement.prototype.prepareFrame = function(num) {
this.prepareProperties(num, true);
};
- NullElement.prototype.renderFrame = function () {
+ NullElement.prototype.renderFrame = function() {
};
- NullElement.prototype.getBaseElement = function () {
+ NullElement.prototype.getBaseElement = function() {
return null;
};
- NullElement.prototype.destroy = function () {
+ NullElement.prototype.destroy = function() {
};
- NullElement.prototype.sourceRectAtTime = function () {
+ NullElement.prototype.sourceRectAtTime = function() {
};
- NullElement.prototype.hide = function () {
+ NullElement.prototype.hide = function() {
};
extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);
function SVGRendererBase() {
}
extendPrototype([BaseRenderer], SVGRendererBase);
- SVGRendererBase.prototype.createNull = function (data) {
+ SVGRendererBase.prototype.createNull = function(data) {
return new NullElement(data, this.globalData, this);
};
- SVGRendererBase.prototype.createShape = function (data) {
+ SVGRendererBase.prototype.createShape = function(data) {
return new SVGShapeElement(data, this.globalData, this);
};
- SVGRendererBase.prototype.createText = function (data) {
+ SVGRendererBase.prototype.createText = function(data) {
return new SVGTextLottieElement(data, this.globalData, this);
};
- SVGRendererBase.prototype.createImage = function (data) {
+ SVGRendererBase.prototype.createImage = function(data) {
return new IImageElement(data, this.globalData, this);
};
- SVGRendererBase.prototype.createSolid = function (data) {
+ SVGRendererBase.prototype.createSolid = function(data) {
return new ISolidElement(data, this.globalData, this);
};
- SVGRendererBase.prototype.configAnimation = function (animData) {
+ SVGRendererBase.prototype.configAnimation = function(animData) {
this.svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg");
if (this.renderConfig.viewBoxSize) {
this.svgElement.setAttribute("viewBox", this.renderConfig.viewBoxSize);
@@ -56790,7 +56764,7 @@ var lottie = (() => {
this.layers = animData.layers;
this.elements = createSizedArray(animData.layers.length);
};
- SVGRendererBase.prototype.destroy = function () {
+ SVGRendererBase.prototype.destroy = function() {
if (this.animationItem.wrapper) {
this.animationItem.wrapper.innerText = "";
}
@@ -56807,9 +56781,9 @@ var lottie = (() => {
this.destroyed = true;
this.animationItem = null;
};
- SVGRendererBase.prototype.updateContainerSize = function () {
+ SVGRendererBase.prototype.updateContainerSize = function() {
};
- SVGRendererBase.prototype.buildItem = function (pos) {
+ SVGRendererBase.prototype.buildItem = function(pos) {
var elements = this.elements;
if (elements[pos] || this.layers[pos].ty === 99) {
return;
@@ -56833,7 +56807,7 @@ var lottie = (() => {
}
}
};
- SVGRendererBase.prototype.checkPendingElements = function () {
+ SVGRendererBase.prototype.checkPendingElements = function() {
while (this.pendingElements.length) {
var element = this.pendingElements.pop();
element.checkParenting();
@@ -56850,7 +56824,7 @@ var lottie = (() => {
}
}
};
- SVGRendererBase.prototype.renderFrame = function (num) {
+ SVGRendererBase.prototype.renderFrame = function(num) {
if (this.renderedFrame === num || this.destroyed) {
return;
}
@@ -56881,7 +56855,7 @@ var lottie = (() => {
}
}
};
- SVGRendererBase.prototype.appendElementInPos = function (element, pos) {
+ SVGRendererBase.prototype.appendElementInPos = function(element, pos) {
var newElement = element.getBaseElement();
if (!newElement) {
return;
@@ -56900,16 +56874,16 @@ var lottie = (() => {
this.layerElement.appendChild(newElement);
}
};
- SVGRendererBase.prototype.hide = function () {
+ SVGRendererBase.prototype.hide = function() {
this.layerElement.style.display = "none";
};
- SVGRendererBase.prototype.show = function () {
+ SVGRendererBase.prototype.show = function() {
this.layerElement.style.display = "block";
};
function ICompElement() {
}
extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);
- ICompElement.prototype.initElement = function (data, globalData, comp) {
+ ICompElement.prototype.initElement = function(data, globalData, comp) {
this.initFrame();
this.initBaseData(data, globalData, comp);
this.initTransform(data, globalData, comp);
@@ -56923,7 +56897,7 @@ var lottie = (() => {
}
this.hide();
};
- ICompElement.prototype.prepareFrame = function (num) {
+ ICompElement.prototype.prepareFrame = function(num) {
this._mdf = false;
this.prepareRenderableFrame(num);
this.prepareProperties(num, this.isInRange);
@@ -56953,7 +56927,7 @@ var lottie = (() => {
}
}
};
- ICompElement.prototype.renderInnerContent = function () {
+ ICompElement.prototype.renderInnerContent = function() {
var i4;
var len = this.layers.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -56962,13 +56936,13 @@ var lottie = (() => {
}
}
};
- ICompElement.prototype.setElements = function (elems) {
+ ICompElement.prototype.setElements = function(elems) {
this.elements = elems;
};
- ICompElement.prototype.getElements = function () {
+ ICompElement.prototype.getElements = function() {
return this.elements;
};
- ICompElement.prototype.destroyElements = function () {
+ ICompElement.prototype.destroyElements = function() {
var i4;
var len = this.layers.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -56977,7 +56951,7 @@ var lottie = (() => {
}
}
};
- ICompElement.prototype.destroy = function () {
+ ICompElement.prototype.destroy = function() {
this.destroyElements();
this.destroyBaseElement();
};
@@ -56991,7 +56965,7 @@ var lottie = (() => {
this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
}
extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);
- SVGCompElement.prototype.createComp = function (data) {
+ SVGCompElement.prototype.createComp = function(data) {
return new SVGCompElement(data, this.globalData, this);
};
function SVGRenderer2(animationItem, config) {
@@ -57056,7 +57030,7 @@ var lottie = (() => {
this.rendererType = "svg";
}
extendPrototype([SVGRendererBase], SVGRenderer2);
- SVGRenderer2.prototype.createComp = function (data) {
+ SVGRenderer2.prototype.createComp = function(data) {
return new SVGCompElement(data, this.globalData, this);
};
function CVContextData() {
@@ -57072,7 +57046,7 @@ var lottie = (() => {
}
this._length = len;
}
- CVContextData.prototype.duplicate = function () {
+ CVContextData.prototype.duplicate = function() {
var newLength = this._length * 2;
var currentSavedOp = this.savedOp;
this.savedOp = createTypedArray("float32", newLength);
@@ -57083,7 +57057,7 @@ var lottie = (() => {
}
this._length = newLength;
};
- CVContextData.prototype.reset = function () {
+ CVContextData.prototype.reset = function() {
this.cArrPos = 0;
this.cTr.reset();
this.cO = 1;
@@ -57094,7 +57068,7 @@ var lottie = (() => {
this.transform_key_count = 0;
}
ShapeTransformManager.prototype = {
- addTransformSequence: function (transforms) {
+ addTransformSequence: function(transforms) {
var i4;
var len = transforms.length;
var key = "_";
@@ -57113,7 +57087,7 @@ var lottie = (() => {
}
return sequence;
},
- processSequence: function (sequence, isFirstFrame) {
+ processSequence: function(sequence, isFirstFrame) {
var i4 = 0;
var len = sequence.transforms.length;
var _mdf = isFirstFrame;
@@ -57151,21 +57125,21 @@ var lottie = (() => {
}
sequence._mdf = _mdf;
},
- processSequences: function (isFirstFrame) {
+ processSequences: function(isFirstFrame) {
var i4;
var len = this.sequenceList.length;
for (i4 = 0; i4 < len; i4 += 1) {
this.processSequence(this.sequenceList[i4], isFirstFrame);
}
},
- getNewKey: function () {
+ getNewKey: function() {
this.transform_key_count += 1;
return "_" + this.transform_key_count;
}
};
function CVEffects() {
}
- CVEffects.prototype.renderFrame = function () {
+ CVEffects.prototype.renderFrame = function() {
};
function CVMaskElement(data, element) {
this.data = data;
@@ -57186,7 +57160,7 @@ var lottie = (() => {
this.element.addRenderableComponent(this);
}
}
- CVMaskElement.prototype.renderFrame = function () {
+ CVMaskElement.prototype.renderFrame = function() {
if (!this.hasMasks) {
return;
}
@@ -57224,23 +57198,23 @@ var lottie = (() => {
ctx.clip();
};
CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;
- CVMaskElement.prototype.destroy = function () {
+ CVMaskElement.prototype.destroy = function() {
this.element = null;
};
function CVBaseElement() {
}
CVBaseElement.prototype = {
- createElements: function () {
+ createElements: function() {
},
- initRendererElement: function () {
+ initRendererElement: function() {
},
- createContainerElements: function () {
+ createContainerElements: function() {
this.canvasContext = this.globalData.canvasContext;
this.renderableEffectsManager = new CVEffects();
},
- createContent: function () {
+ createContent: function() {
},
- setBlendMode: function () {
+ setBlendMode: function() {
var globalData = this.globalData;
if (globalData.blendMode !== this.data.bm) {
globalData.blendMode = this.data.bm;
@@ -57248,22 +57222,22 @@ var lottie = (() => {
globalData.canvasContext.globalCompositeOperation = blendModeValue;
}
},
- createRenderableComponents: function () {
+ createRenderableComponents: function() {
this.maskManager = new CVMaskElement(this.data, this);
},
- hideElement: function () {
+ hideElement: function() {
if (!this.hidden && (!this.isInRange || this.isTransparent)) {
this.hidden = true;
}
},
- showElement: function () {
+ showElement: function() {
if (this.isInRange && !this.isTransparent) {
this.hidden = false;
this._isFirstFrame = true;
this.maskManager._isFirstFrame = true;
}
},
- renderFrame: function () {
+ renderFrame: function() {
if (this.hidden || this.data.hd) {
return;
}
@@ -57283,7 +57257,7 @@ var lottie = (() => {
this._isFirstFrame = false;
}
},
- destroy: function () {
+ destroy: function() {
this.canvasContext = null;
this.data = null;
this.globalData = null;
@@ -57338,10 +57312,10 @@ var lottie = (() => {
CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;
CVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };
CVShapeElement.prototype.dashResetter = [];
- CVShapeElement.prototype.createContent = function () {
+ CVShapeElement.prototype.createContent = function() {
this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);
};
- CVShapeElement.prototype.createStyleElement = function (data, transforms) {
+ CVShapeElement.prototype.createStyleElement = function(data, transforms) {
var styleElem = {
data,
type: data.ty,
@@ -57389,14 +57363,14 @@ var lottie = (() => {
elementData.style = styleElem;
return elementData;
};
- CVShapeElement.prototype.createGroupElement = function () {
+ CVShapeElement.prototype.createGroupElement = function() {
var elementData = {
it: [],
prevViewData: []
};
return elementData;
};
- CVShapeElement.prototype.createTransformElement = function (data) {
+ CVShapeElement.prototype.createTransformElement = function(data) {
var elementData = {
transform: {
opacity: 1,
@@ -57408,13 +57382,13 @@ var lottie = (() => {
};
return elementData;
};
- CVShapeElement.prototype.createShapeElement = function (data) {
+ CVShapeElement.prototype.createShapeElement = function(data) {
var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);
this.shapes.push(elementData);
this.addShapeToModifiers(elementData);
return elementData;
};
- CVShapeElement.prototype.reloadShapes = function () {
+ CVShapeElement.prototype.reloadShapes = function() {
this._isFirstFrame = true;
var i4;
var len = this.itemsData.length;
@@ -57429,7 +57403,7 @@ var lottie = (() => {
this.renderModifiers();
this.transformsManager.processSequences(this._isFirstFrame);
};
- CVShapeElement.prototype.addTransformToStyleList = function (transform) {
+ CVShapeElement.prototype.addTransformToStyleList = function(transform) {
var i4;
var len = this.stylesList.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -57438,7 +57412,7 @@ var lottie = (() => {
}
}
};
- CVShapeElement.prototype.removeTransformFromStyleList = function () {
+ CVShapeElement.prototype.removeTransformFromStyleList = function() {
var i4;
var len = this.stylesList.length;
for (i4 = 0; i4 < len; i4 += 1) {
@@ -57447,14 +57421,14 @@ var lottie = (() => {
}
}
};
- CVShapeElement.prototype.closeStyles = function (styles2) {
+ CVShapeElement.prototype.closeStyles = function(styles2) {
var i4;
var len = styles2.length;
for (i4 = 0; i4 < len; i4 += 1) {
styles2[i4].closed = true;
}
};
- CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {
+ CVShapeElement.prototype.searchShapes = function(arr, itemsData, prevViewData, shouldRender, transforms) {
var i4;
var len = arr.length - 1;
var j;
@@ -57533,21 +57507,21 @@ var lottie = (() => {
ownModifiers[i4].closed = true;
}
};
- CVShapeElement.prototype.renderInnerContent = function () {
+ CVShapeElement.prototype.renderInnerContent = function() {
this.transformHelper.opacity = 1;
this.transformHelper._opMdf = false;
this.renderModifiers();
this.transformsManager.processSequences(this._isFirstFrame);
this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);
};
- CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {
+ CVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) {
if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {
groupTransform.opacity = parentTransform.opacity;
groupTransform.opacity *= groupTransform.op.v;
groupTransform._opMdf = true;
}
};
- CVShapeElement.prototype.drawLayer = function () {
+ CVShapeElement.prototype.drawLayer = function() {
var i4;
var len = this.stylesList.length;
var j;
@@ -57621,7 +57595,7 @@ var lottie = (() => {
}
}
};
- CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {
+ CVShapeElement.prototype.renderShape = function(parentTransform, items, data, isMain) {
var i4;
var len = items.length - 1;
var groupTransform;
@@ -57647,7 +57621,7 @@ var lottie = (() => {
this.drawLayer();
}
};
- CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {
+ CVShapeElement.prototype.renderStyledShape = function(styledShape, shape) {
if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {
var shapeNodes = styledShape.trNodes;
var paths = shape.paths;
@@ -57693,7 +57667,7 @@ var lottie = (() => {
styledShape.trNodes = shapeNodes;
}
};
- CVShapeElement.prototype.renderPath = function (pathData, itemData) {
+ CVShapeElement.prototype.renderPath = function(pathData, itemData) {
if (pathData.hd !== true && pathData._shouldRender) {
var i4;
var len = itemData.styledShapes.length;
@@ -57702,7 +57676,7 @@ var lottie = (() => {
}
}
};
- CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {
+ CVShapeElement.prototype.renderFill = function(styleData, itemData, groupTransform) {
var styleElem = itemData.style;
if (itemData.c._mdf || this._isFirstFrame) {
styleElem.co = "rgb(" + bmFloor(itemData.c.v[0]) + "," + bmFloor(itemData.c.v[1]) + "," + bmFloor(itemData.c.v[2]) + ")";
@@ -57711,7 +57685,7 @@ var lottie = (() => {
styleElem.coOp = itemData.o.v * groupTransform.opacity;
}
};
- CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {
+ CVShapeElement.prototype.renderGradientFill = function(styleData, itemData, groupTransform) {
var styleElem = itemData.style;
var grd;
if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {
@@ -57751,7 +57725,7 @@ var lottie = (() => {
}
styleElem.coOp = itemData.o.v * groupTransform.opacity;
};
- CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {
+ CVShapeElement.prototype.renderStroke = function(styleData, itemData, groupTransform) {
var styleElem = itemData.style;
var d2 = itemData.d;
if (d2 && (d2._mdf || this._isFirstFrame)) {
@@ -57768,7 +57742,7 @@ var lottie = (() => {
styleElem.wi = itemData.w.v;
}
};
- CVShapeElement.prototype.destroy = function () {
+ CVShapeElement.prototype.destroy = function() {
this.shapesData = null;
this.globalData = null;
this.canvasContext = null;
@@ -57799,7 +57773,7 @@ var lottie = (() => {
CVTextElement
);
CVTextElement.prototype.tHelper = createTag("canvas").getContext("2d");
- CVTextElement.prototype.buildNewText = function () {
+ CVTextElement.prototype.buildNewText = function() {
var documentData = this.textProperty.currentData;
this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);
var hasFill = false;
@@ -57907,7 +57881,7 @@ var lottie = (() => {
cnt += 1;
}
};
- CVTextElement.prototype.renderInnerContent = function () {
+ CVTextElement.prototype.renderInnerContent = function() {
var ctx = this.canvasContext;
ctx.font = this.values.fValue;
ctx.lineCap = "butt";
@@ -58027,7 +58001,7 @@ var lottie = (() => {
);
CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;
CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
- CVImageElement.prototype.createContent = function () {
+ CVImageElement.prototype.createContent = function() {
if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {
var canvas = createTag("canvas");
canvas.width = this.assetData.w;
@@ -58061,10 +58035,10 @@ var lottie = (() => {
this.img = canvas;
}
};
- CVImageElement.prototype.renderInnerContent = function () {
+ CVImageElement.prototype.renderInnerContent = function() {
this.canvasContext.drawImage(this.img, 0, 0);
};
- CVImageElement.prototype.destroy = function () {
+ CVImageElement.prototype.destroy = function() {
this.img = null;
};
function CVSolidElement(data, globalData, comp) {
@@ -58076,7 +58050,7 @@ var lottie = (() => {
);
CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;
CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
- CVSolidElement.prototype.renderInnerContent = function () {
+ CVSolidElement.prototype.renderInnerContent = function() {
var ctx = this.canvasContext;
ctx.fillStyle = this.data.sc;
ctx.fillRect(0, 0, this.data.sw, this.data.sh);
@@ -58112,20 +58086,20 @@ var lottie = (() => {
this.rendererType = "canvas";
}
extendPrototype([BaseRenderer], CanvasRendererBase);
- CanvasRendererBase.prototype.createShape = function (data) {
+ CanvasRendererBase.prototype.createShape = function(data) {
return new CVShapeElement(data, this.globalData, this);
};
- CanvasRendererBase.prototype.createText = function (data) {
+ CanvasRendererBase.prototype.createText = function(data) {
return new CVTextElement(data, this.globalData, this);
};
- CanvasRendererBase.prototype.createImage = function (data) {
+ CanvasRendererBase.prototype.createImage = function(data) {
return new CVImageElement(data, this.globalData, this);
};
- CanvasRendererBase.prototype.createSolid = function (data) {
+ CanvasRendererBase.prototype.createSolid = function(data) {
return new CVSolidElement(data, this.globalData, this);
};
CanvasRendererBase.prototype.createNull = SVGRenderer2.prototype.createNull;
- CanvasRendererBase.prototype.ctxTransform = function (props) {
+ CanvasRendererBase.prototype.ctxTransform = function(props) {
if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {
return;
}
@@ -58157,7 +58131,7 @@ var lottie = (() => {
var trProps = this.contextData.cTr.props;
this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);
};
- CanvasRendererBase.prototype.ctxOpacity = function (op) {
+ CanvasRendererBase.prototype.ctxOpacity = function(op) {
if (!this.renderConfig.clearCanvas) {
this.canvasContext.globalAlpha *= op < 0 ? 0 : op;
this.globalData.currentGlobalAlpha = this.contextData.cO;
@@ -58169,14 +58143,14 @@ var lottie = (() => {
this.globalData.currentGlobalAlpha = this.contextData.cO;
}
};
- CanvasRendererBase.prototype.reset = function () {
+ CanvasRendererBase.prototype.reset = function() {
if (!this.renderConfig.clearCanvas) {
this.canvasContext.restore();
return;
}
this.contextData.reset();
};
- CanvasRendererBase.prototype.save = function (actionFlag) {
+ CanvasRendererBase.prototype.save = function(actionFlag) {
if (!this.renderConfig.clearCanvas) {
this.canvasContext.save();
return;
@@ -58196,7 +58170,7 @@ var lottie = (() => {
this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;
this.contextData.cArrPos += 1;
};
- CanvasRendererBase.prototype.restore = function (actionFlag) {
+ CanvasRendererBase.prototype.restore = function(actionFlag) {
if (!this.renderConfig.clearCanvas) {
this.canvasContext.restore();
return;
@@ -58220,7 +58194,7 @@ var lottie = (() => {
this.globalData.currentGlobalAlpha = popped;
}
};
- CanvasRendererBase.prototype.configAnimation = function (animData) {
+ CanvasRendererBase.prototype.configAnimation = function(animData) {
if (this.animationItem.wrapper) {
this.animationItem.container = createTag("canvas");
var containerStyle = this.animationItem.container.style;
@@ -58262,7 +58236,7 @@ var lottie = (() => {
this.elements = createSizedArray(animData.layers.length);
this.updateContainerSize();
};
- CanvasRendererBase.prototype.updateContainerSize = function () {
+ CanvasRendererBase.prototype.updateContainerSize = function() {
this.reset();
var elementWidth;
var elementHeight;
@@ -58342,7 +58316,7 @@ var lottie = (() => {
this.canvasContext.clip();
this.renderFrame(this.renderedFrame, true);
};
- CanvasRendererBase.prototype.destroy = function () {
+ CanvasRendererBase.prototype.destroy = function() {
if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {
this.animationItem.wrapper.innerText = "";
}
@@ -58358,7 +58332,7 @@ var lottie = (() => {
this.animationItem.container = null;
this.destroyed = true;
};
- CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {
+ CanvasRendererBase.prototype.renderFrame = function(num, forceRender) {
if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {
return;
}
@@ -58393,7 +58367,7 @@ var lottie = (() => {
}
}
};
- CanvasRendererBase.prototype.buildItem = function (pos) {
+ CanvasRendererBase.prototype.buildItem = function(pos) {
var elements = this.elements;
if (elements[pos] || this.layers[pos].ty === 99) {
return;
@@ -58402,16 +58376,16 @@ var lottie = (() => {
elements[pos] = element;
element.initExpressions();
};
- CanvasRendererBase.prototype.checkPendingElements = function () {
+ CanvasRendererBase.prototype.checkPendingElements = function() {
while (this.pendingElements.length) {
var element = this.pendingElements.pop();
element.checkParenting();
}
};
- CanvasRendererBase.prototype.hide = function () {
+ CanvasRendererBase.prototype.hide = function() {
this.animationItem.container.style.display = "none";
};
- CanvasRendererBase.prototype.show = function () {
+ CanvasRendererBase.prototype.show = function() {
this.animationItem.container.style.display = "block";
};
function CVCompElement(data, globalData, comp) {
@@ -58423,7 +58397,7 @@ var lottie = (() => {
this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };
}
extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);
- CVCompElement.prototype.renderInnerContent = function () {
+ CVCompElement.prototype.renderInnerContent = function() {
var ctx = this.canvasContext;
ctx.beginPath();
ctx.moveTo(0, 0);
@@ -58440,7 +58414,7 @@ var lottie = (() => {
}
}
};
- CVCompElement.prototype.destroy = function () {
+ CVCompElement.prototype.destroy = function() {
var i4;
var len = this.layers.length;
for (i4 = len - 1; i4 >= 0; i4 -= 1) {
@@ -58451,7 +58425,7 @@ var lottie = (() => {
this.layers = null;
this.elements = null;
};
- CVCompElement.prototype.createComp = function (data) {
+ CVCompElement.prototype.createComp = function(data) {
return new CVCompElement(data, this.globalData, this);
};
function CanvasRenderer(animationItem, config) {
@@ -58485,7 +58459,7 @@ var lottie = (() => {
this.rendererType = "canvas";
}
extendPrototype([CanvasRendererBase], CanvasRenderer);
- CanvasRenderer.prototype.createComp = function (data) {
+ CanvasRenderer.prototype.createComp = function(data) {
return new CVCompElement(data, this.globalData, this);
};
registerRenderer("canvas", CanvasRenderer);
@@ -58493,7 +58467,7 @@ var lottie = (() => {
ShapeModifiers.registerModifier("pb", PuckerAndBloatModifier);
ShapeModifiers.registerModifier("rp", RepeaterModifier);
ShapeModifiers.registerModifier("rd", RoundCornersModifier);
- const Expressions = (function () {
+ const Expressions = (function() {
var ob = {};
ob.initExpressions = initExpressions;
function initExpressions(animation) {
@@ -58539,7 +58513,7 @@ var lottie = (() => {
key
);
var arc4 = new ARC4(key);
- var prng = function () {
+ var prng = function() {
var n2 = arc4.g(chunks), d2 = startdenom, x = 0;
while (n2 < significance) {
n2 = (n2 + x) * width;
@@ -58553,20 +58527,20 @@ var lottie = (() => {
}
return (n2 + x) / d2;
};
- prng.int32 = function () {
+ prng.int32 = function() {
return arc4.g(4) | 0;
};
- prng.quick = function () {
+ prng.quick = function() {
return arc4.g(4) / 4294967296;
};
prng.double = prng;
mixkey(tostring(arc4.S), pool);
- return (options.pass || callback || function (prng2, seed22, is_math_call, state) {
+ return (options.pass || callback || function(prng2, seed22, is_math_call, state) {
if (state) {
if (state.S) {
copy(state, arc4);
}
- prng2.state = function () {
+ prng2.state = function() {
return copy(arc4, {});
};
}
@@ -58590,7 +58564,7 @@ var lottie = (() => {
s2[i4] = s2[j = mask & j + key[i4 % keylen] + (t3 = s2[i4])];
s2[j] = t3;
}
- me.g = function (count) {
+ me.g = function(count) {
var t22, r2 = 0, i22 = me.i, j2 = me.j, s22 = me.S;
while (count--) {
t22 = s22[i22 = mask & i22 + 1];
@@ -58646,7 +58620,7 @@ var lottie = (() => {
function initialize$2(BMMath2) {
seedRandom([], BMMath2);
}
- const ExpressionManager = (function () {
+ const ExpressionManager = (function() {
var ob = {};
var Math2 = BMMath;
var window2 = null;
@@ -59042,7 +59016,7 @@ var lottie = (() => {
];
return ob;
})();
- const expressionHelpers = /* @__PURE__ */ (function () {
+ const expressionHelpers = /* @__PURE__ */ (function() {
function searchExpressions(elem, data, prop) {
if (data.x) {
prop.k = true;
@@ -59350,7 +59324,7 @@ var lottie = (() => {
return this.v.clone(new Matrix());
}
var getTransformProperty = TransformPropertyFactory.getTransformProperty;
- TransformPropertyFactory.getTransformProperty = function (elem, data, container) {
+ TransformPropertyFactory.getTransformProperty = function(elem, data, container) {
var prop = getTransformProperty(elem, data, container);
if (prop.dynamicProperties.length) {
prop.getValueAtTime = getTransformValueAtTime.bind(prop);
@@ -59361,7 +59335,7 @@ var lottie = (() => {
return prop;
};
var propertyGetProp = PropertyFactory.getProp;
- PropertyFactory.getProp = function (elem, data, type, mult, container) {
+ PropertyFactory.getProp = function(elem, data, type, mult, container) {
var prop = propertyGetProp(elem, data, type, mult, container);
if (prop.kf) {
prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);
@@ -59413,7 +59387,7 @@ var lottie = (() => {
function ShapeExpressions() {
}
ShapeExpressions.prototype = {
- vertices: function (prop, time) {
+ vertices: function(prop, time) {
if (this.k) {
this.getValue();
}
@@ -59435,19 +59409,19 @@ var lottie = (() => {
}
return arr;
},
- points: function (time) {
+ points: function(time) {
return this.vertices("v", time);
},
- inTangents: function (time) {
+ inTangents: function(time) {
return this.vertices("i", time);
},
- outTangents: function (time) {
+ outTangents: function(time) {
return this.vertices("o", time);
},
- isClosed: function () {
+ isClosed: function() {
return this.v.c;
},
- pointOnPath: function (perc, time) {
+ pointOnPath: function(perc, time) {
var shapePath = this.v;
if (time !== void 0) {
shapePath = this.getValueAtTime(time, 0);
@@ -59486,7 +59460,7 @@ var lottie = (() => {
}
return pt;
},
- vectorOnPath: function (perc, time, vectorType) {
+ vectorOnPath: function(perc, time, vectorType) {
if (perc == 1) {
perc = this.v.c;
} else if (perc == 0) {
@@ -59503,10 +59477,10 @@ var lottie = (() => {
var unitVector = vectorType === "tangent" ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];
return unitVector;
},
- tangentOnPath: function (perc, time) {
+ tangentOnPath: function(perc, time) {
return this.vectorOnPath(perc, time, "tangent");
},
- normalOnPath: function (perc, time) {
+ normalOnPath: function(perc, time) {
return this.vectorOnPath(perc, time, "normal");
},
setGroupProperty: expressionHelpers.setGroupProperty,
@@ -59517,7 +59491,7 @@ var lottie = (() => {
KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;
KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;
var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;
- ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {
+ ShapePropertyFactory.getShapeProp = function(elem, data, type, arr, trims) {
var prop = propertyGetShapeProp(elem, data, type, arr, trims);
prop.propertyIndex = data.ix;
prop.lock = false;
@@ -59544,7 +59518,7 @@ var lottie = (() => {
}
return null;
}
- TextProperty.prototype.getExpressionValue = function (currentValue, text) {
+ TextProperty.prototype.getExpressionValue = function(currentValue, text) {
var newValue = this.calculateExpression(text);
if (currentValue.t !== newValue) {
var newData = {};
@@ -59555,7 +59529,7 @@ var lottie = (() => {
}
return currentValue;
};
- TextProperty.prototype.searchProperty = function () {
+ TextProperty.prototype.searchProperty = function() {
var isKeyframed = this.searchKeyframes();
var hasExpressions = this.searchExpressions();
this.kf = isKeyframed || hasExpressions;
@@ -59714,7 +59688,7 @@ var { parseBuffer } = (() => {
lengths[clcidx[i4]] = clen2;
}
tinf_build_tree(code_tree, lengths, 0, 19);
- for (num = 0; num < hlit + hdist;) {
+ for (num = 0; num < hlit + hdist; ) {
var sym = tinf_decode_symbol(d2, code_tree);
switch (sym) {
case 16:
@@ -59831,10 +59805,10 @@ var { parseBuffer } = (() => {
this.x2 = Number.NaN;
this.y2 = Number.NaN;
}
- BoundingBox.prototype.isEmpty = function () {
+ BoundingBox.prototype.isEmpty = function() {
return isNaN(this.x1) || isNaN(this.y1) || isNaN(this.x2) || isNaN(this.y2);
};
- BoundingBox.prototype.addPoint = function (x, y) {
+ BoundingBox.prototype.addPoint = function(x, y) {
if (typeof x === "number") {
if (isNaN(this.x1) || isNaN(this.x2)) {
this.x1 = x;
@@ -59860,13 +59834,13 @@ var { parseBuffer } = (() => {
}
}
};
- BoundingBox.prototype.addX = function (x) {
+ BoundingBox.prototype.addX = function(x) {
this.addPoint(x, null);
};
- BoundingBox.prototype.addY = function (y) {
+ BoundingBox.prototype.addY = function(y) {
this.addPoint(null, y);
};
- BoundingBox.prototype.addBezier = function (x0, y0, x1, y1, x2, y2, x, y) {
+ BoundingBox.prototype.addBezier = function(x0, y0, x1, y1, x2, y2, x, y) {
var p0 = [x0, y0];
var p1 = [x1, y1];
var p2 = [x2, y2];
@@ -59916,7 +59890,7 @@ var { parseBuffer } = (() => {
}
}
};
- BoundingBox.prototype.addQuad = function (x0, y0, x1, y1, x, y) {
+ BoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) {
var cp1x = x0 + 2 / 3 * (x1 - x0);
var cp1y = y0 + 2 / 3 * (y1 - y0);
var cp2x = cp1x + 1 / 3 * (x - x0);
@@ -59929,21 +59903,21 @@ var { parseBuffer } = (() => {
this.stroke = null;
this.strokeWidth = 1;
}
- Path2.prototype.moveTo = function (x, y) {
+ Path2.prototype.moveTo = function(x, y) {
this.commands.push({
type: "M",
x,
y
});
};
- Path2.prototype.lineTo = function (x, y) {
+ Path2.prototype.lineTo = function(x, y) {
this.commands.push({
type: "L",
x,
y
});
};
- Path2.prototype.curveTo = Path2.prototype.bezierCurveTo = function (x1, y1, x2, y2, x, y) {
+ Path2.prototype.curveTo = Path2.prototype.bezierCurveTo = function(x1, y1, x2, y2, x, y) {
this.commands.push({
type: "C",
x1,
@@ -59954,7 +59928,7 @@ var { parseBuffer } = (() => {
y
});
};
- Path2.prototype.quadTo = Path2.prototype.quadraticCurveTo = function (x1, y1, x, y) {
+ Path2.prototype.quadTo = Path2.prototype.quadraticCurveTo = function(x1, y1, x, y) {
this.commands.push({
type: "Q",
x1,
@@ -59963,12 +59937,12 @@ var { parseBuffer } = (() => {
y
});
};
- Path2.prototype.close = Path2.prototype.closePath = function () {
+ Path2.prototype.close = Path2.prototype.closePath = function() {
this.commands.push({
type: "Z"
});
};
- Path2.prototype.extend = function (pathOrCommands) {
+ Path2.prototype.extend = function(pathOrCommands) {
if (pathOrCommands.commands) {
pathOrCommands = pathOrCommands.commands;
} else if (pathOrCommands instanceof BoundingBox) {
@@ -59982,7 +59956,7 @@ var { parseBuffer } = (() => {
}
Array.prototype.push.apply(this.commands, pathOrCommands);
};
- Path2.prototype.getBoundingBox = function () {
+ Path2.prototype.getBoundingBox = function() {
var box = new BoundingBox();
var startX = 0;
var startY = 0;
@@ -60024,7 +59998,7 @@ var { parseBuffer } = (() => {
}
return box;
};
- Path2.prototype.draw = function (ctx) {
+ Path2.prototype.draw = function(ctx) {
ctx.beginPath();
for (var i4 = 0; i4 < this.commands.length; i4 += 1) {
var cmd = this.commands[i4];
@@ -60050,7 +60024,7 @@ var { parseBuffer } = (() => {
ctx.stroke();
}
};
- Path2.prototype.toPathData = function (decimalPlaces) {
+ Path2.prototype.toPathData = function(decimalPlaces) {
decimalPlaces = decimalPlaces !== void 0 ? decimalPlaces : 2;
function floatToString(v5) {
if (Math.round(v5) === v5) {
@@ -60088,7 +60062,7 @@ var { parseBuffer } = (() => {
}
return d2;
};
- Path2.prototype.toSVG = function (decimalPlaces) {
+ Path2.prototype.toSVG = function(decimalPlaces) {
var svg = ' {
svg += "/>";
return svg;
};
- Path2.prototype.toDOMElement = function (decimalPlaces) {
+ Path2.prototype.toDOMElement = function(decimalPlaces) {
var temporaryPath = this.toPathData(decimalPlaces);
var newPath = document.createElementNS("http://www.w3.org/2000/svg", "path");
newPath.setAttribute("d", temporaryPath);
@@ -60126,20 +60100,20 @@ var { parseBuffer } = (() => {
var encode = {};
var sizeOf = {};
function constant(v5) {
- return function () {
+ return function() {
return v5;
};
}
- encode.BYTE = function (v5) {
+ encode.BYTE = function(v5) {
check.argument(v5 >= 0 && v5 <= 255, "Byte value should be between 0 and 255.");
return [v5];
};
sizeOf.BYTE = constant(1);
- encode.CHAR = function (v5) {
+ encode.CHAR = function(v5) {
return [v5.charCodeAt(0)];
};
sizeOf.CHAR = constant(1);
- encode.CHARARRAY = function (v5) {
+ encode.CHARARRAY = function(v5) {
if (typeof v5 === "undefined") {
v5 = "";
console.warn(
@@ -60152,32 +60126,32 @@ var { parseBuffer } = (() => {
}
return b5;
};
- sizeOf.CHARARRAY = function (v5) {
+ sizeOf.CHARARRAY = function(v5) {
if (typeof v5 === "undefined") {
return 0;
}
return v5.length;
};
- encode.USHORT = function (v5) {
+ encode.USHORT = function(v5) {
return [v5 >> 8 & 255, v5 & 255];
};
sizeOf.USHORT = constant(2);
- encode.SHORT = function (v5) {
+ encode.SHORT = function(v5) {
if (v5 >= LIMIT16) {
v5 = -(2 * LIMIT16 - v5);
}
return [v5 >> 8 & 255, v5 & 255];
};
sizeOf.SHORT = constant(2);
- encode.UINT24 = function (v5) {
+ encode.UINT24 = function(v5) {
return [v5 >> 16 & 255, v5 >> 8 & 255, v5 & 255];
};
sizeOf.UINT24 = constant(3);
- encode.ULONG = function (v5) {
+ encode.ULONG = function(v5) {
return [v5 >> 24 & 255, v5 >> 16 & 255, v5 >> 8 & 255, v5 & 255];
};
sizeOf.ULONG = constant(4);
- encode.LONG = function (v5) {
+ encode.LONG = function(v5) {
if (v5 >= LIMIT32) {
v5 = -(2 * LIMIT32 - v5);
}
@@ -60190,11 +60164,11 @@ var { parseBuffer } = (() => {
sizeOf.FWORD = sizeOf.SHORT;
encode.UFWORD = encode.USHORT;
sizeOf.UFWORD = sizeOf.USHORT;
- encode.LONGDATETIME = function (v5) {
+ encode.LONGDATETIME = function(v5) {
return [0, 0, 0, 0, v5 >> 24 & 255, v5 >> 16 & 255, v5 >> 8 & 255, v5 & 255];
};
sizeOf.LONGDATETIME = constant(8);
- encode.TAG = function (v5) {
+ encode.TAG = function(v5) {
check.argument(v5.length === 4, "Tag should be exactly 4 ASCII characters.");
return [v5.charCodeAt(0), v5.charCodeAt(1), v5.charCodeAt(2), v5.charCodeAt(3)];
};
@@ -60207,7 +60181,7 @@ var { parseBuffer } = (() => {
sizeOf.OffSize = sizeOf.BYTE;
encode.SID = encode.USHORT;
sizeOf.SID = sizeOf.USHORT;
- encode.NUMBER = function (v5) {
+ encode.NUMBER = function(v5) {
if (v5 >= -107 && v5 <= 107) {
return [v5 + 139];
} else if (v5 >= 108 && v5 <= 1131) {
@@ -60222,18 +60196,18 @@ var { parseBuffer } = (() => {
return encode.NUMBER32(v5);
}
};
- sizeOf.NUMBER = function (v5) {
+ sizeOf.NUMBER = function(v5) {
return encode.NUMBER(v5).length;
};
- encode.NUMBER16 = function (v5) {
+ encode.NUMBER16 = function(v5) {
return [28, v5 >> 8 & 255, v5 & 255];
};
sizeOf.NUMBER16 = constant(3);
- encode.NUMBER32 = function (v5) {
+ encode.NUMBER32 = function(v5) {
return [29, v5 >> 24 & 255, v5 >> 16 & 255, v5 >> 8 & 255, v5 & 255];
};
sizeOf.NUMBER32 = constant(5);
- encode.REAL = function (v5) {
+ encode.REAL = function(v5) {
var value = v5.toString();
var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value);
if (m) {
@@ -60260,14 +60234,14 @@ var { parseBuffer } = (() => {
}
return out7;
};
- sizeOf.REAL = function (v5) {
+ sizeOf.REAL = function(v5) {
return encode.REAL(v5).length;
};
encode.NAME = encode.CHARARRAY;
sizeOf.NAME = sizeOf.CHARARRAY;
encode.STRING = encode.CHARARRAY;
sizeOf.STRING = sizeOf.CHARARRAY;
- decode.UTF8 = function (data, offset, numBytes) {
+ decode.UTF8 = function(data, offset, numBytes) {
var codePoints = [];
var numChars = numBytes;
for (var j = 0; j < numChars; j++, offset += 1) {
@@ -60275,7 +60249,7 @@ var { parseBuffer } = (() => {
}
return String.fromCharCode.apply(null, codePoints);
};
- decode.UTF16 = function (data, offset, numBytes) {
+ decode.UTF16 = function(data, offset, numBytes) {
var codePoints = [];
var numChars = numBytes / 2;
for (var j = 0; j < numChars; j++, offset += 2) {
@@ -60283,7 +60257,7 @@ var { parseBuffer } = (() => {
}
return String.fromCharCode.apply(null, codePoints);
};
- encode.UTF16 = function (v5) {
+ encode.UTF16 = function(v5) {
var b5 = [];
for (var i4 = 0; i4 < v5.length; i4 += 1) {
var codepoint = v5.charCodeAt(i4);
@@ -60292,7 +60266,7 @@ var { parseBuffer } = (() => {
}
return b5;
};
- sizeOf.UTF16 = function (v5) {
+ sizeOf.UTF16 = function(v5) {
return v5.length * 2;
};
var eightBitMacEncodings = {
@@ -60317,7 +60291,7 @@ var { parseBuffer } = (() => {
// Python: 'mac_turkish'
"x-mac-turkish": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ"
};
- decode.MACSTRING = function (dataView, offset, dataLength, encoding) {
+ decode.MACSTRING = function(dataView, offset, dataLength, encoding) {
var table2 = eightBitMacEncodings[encoding];
if (table2 === void 0) {
return void 0;
@@ -60335,7 +60309,7 @@ var { parseBuffer } = (() => {
};
var macEncodingTableCache = typeof WeakMap === "function" && /* @__PURE__ */ new WeakMap();
var macEncodingCacheKeys;
- var getMacEncodingTable = function (encoding) {
+ var getMacEncodingTable = function(encoding) {
if (!macEncodingCacheKeys) {
macEncodingCacheKeys = {};
for (var e2 in eightBitMacEncodings) {
@@ -60365,7 +60339,7 @@ var { parseBuffer } = (() => {
}
return encodingTable;
};
- encode.MACSTRING = function (str, encoding) {
+ encode.MACSTRING = function(str, encoding) {
var table2 = getMacEncodingTable(encoding);
if (table2 === void 0) {
return void 0;
@@ -60383,7 +60357,7 @@ var { parseBuffer } = (() => {
}
return result;
};
- sizeOf.MACSTRING = function (str, encoding) {
+ sizeOf.MACSTRING = function(str, encoding) {
var b5 = encode.MACSTRING(str, encoding);
if (b5 !== void 0) {
return b5.length;
@@ -60447,7 +60421,7 @@ var { parseBuffer } = (() => {
}
return pos;
}
- encode.VARDELTAS = function (deltas) {
+ encode.VARDELTAS = function(deltas) {
var pos = 0;
var result = [];
while (pos < deltas.length) {
@@ -60462,7 +60436,7 @@ var { parseBuffer } = (() => {
}
return result;
};
- encode.INDEX = function (l2) {
+ encode.INDEX = function(l2) {
var offset = 1;
var offsets = [offset];
var data = [];
@@ -60484,10 +60458,10 @@ var { parseBuffer } = (() => {
}
return Array.prototype.concat(encode.Card16(l2.length), encode.OffSize(offSize), encodedOffsets, data);
};
- sizeOf.INDEX = function (v5) {
+ sizeOf.INDEX = function(v5) {
return encode.INDEX(v5).length;
};
- encode.DICT = function (m) {
+ encode.DICT = function(m) {
var d2 = [];
var keys = Object.keys(m);
var length3 = keys.length;
@@ -60499,17 +60473,17 @@ var { parseBuffer } = (() => {
}
return d2;
};
- sizeOf.DICT = function (m) {
+ sizeOf.DICT = function(m) {
return encode.DICT(m).length;
};
- encode.OPERATOR = function (v5) {
+ encode.OPERATOR = function(v5) {
if (v5 < 1200) {
return [v5];
} else {
return [12, v5 - 1200];
}
};
- encode.OPERAND = function (v5, type) {
+ encode.OPERAND = function(v5, type) {
var d2 = [];
if (Array.isArray(type)) {
for (var i4 = 0; i4 < type.length; i4 += 1) {
@@ -60534,7 +60508,7 @@ var { parseBuffer } = (() => {
encode.OP = encode.BYTE;
sizeOf.OP = sizeOf.BYTE;
var wmm = typeof WeakMap === "function" && /* @__PURE__ */ new WeakMap();
- encode.CHARSTRING = function (ops) {
+ encode.CHARSTRING = function(ops) {
if (wmm) {
var cachedValue = wmm.get(ops);
if (cachedValue !== void 0) {
@@ -60552,20 +60526,20 @@ var { parseBuffer } = (() => {
}
return d2;
};
- sizeOf.CHARSTRING = function (ops) {
+ sizeOf.CHARSTRING = function(ops) {
return encode.CHARSTRING(ops).length;
};
- encode.OBJECT = function (v5) {
+ encode.OBJECT = function(v5) {
var encodingFunction = encode[v5.type];
check.argument(encodingFunction !== void 0, "No encoding function for type " + v5.type);
return encodingFunction(v5.value);
};
- sizeOf.OBJECT = function (v5) {
+ sizeOf.OBJECT = function(v5) {
var sizeOfFunction = sizeOf[v5.type];
check.argument(sizeOfFunction !== void 0, "No sizeOf function for type " + v5.type);
return sizeOfFunction(v5.value);
};
- encode.TABLE = function (table2) {
+ encode.TABLE = function(table2) {
var d2 = [];
var length3 = table2.fields.length;
var subtables = [];
@@ -60600,7 +60574,7 @@ var { parseBuffer } = (() => {
}
return d2;
};
- sizeOf.TABLE = function (table2) {
+ sizeOf.TABLE = function(table2) {
var numBytes = 0;
var length3 = table2.fields.length;
for (var i4 = 0; i4 < length3; i4 += 1) {
@@ -60623,10 +60597,10 @@ var { parseBuffer } = (() => {
};
encode.RECORD = encode.TABLE;
sizeOf.RECORD = sizeOf.TABLE;
- encode.LITERAL = function (v5) {
+ encode.LITERAL = function(v5) {
return v5;
};
- sizeOf.LITERAL = function (v5) {
+ sizeOf.LITERAL = function(v5) {
return v5.length;
};
function Table(tableName, fields, options) {
@@ -60649,10 +60623,10 @@ var { parseBuffer } = (() => {
}
}
}
- Table.prototype.encode = function () {
+ Table.prototype.encode = function() {
return encode.TABLE(this);
};
- Table.prototype.sizeOf = function () {
+ Table.prototype.sizeOf = function() {
return sizeOf.TABLE(this);
};
function ushortList(itemName, list, count) {
@@ -60696,7 +60670,7 @@ var { parseBuffer } = (() => {
this,
"coverageTable",
[{ name: "coverageFormat", type: "USHORT", value: 2 }].concat(
- recordList("rangeRecord", coverageTable.ranges, function (RangeRecord) {
+ recordList("rangeRecord", coverageTable.ranges, function(RangeRecord) {
return [
{ name: "startGlyphID", type: "USHORT", value: RangeRecord.start },
{ name: "endGlyphID", type: "USHORT", value: RangeRecord.end },
@@ -60715,7 +60689,7 @@ var { parseBuffer } = (() => {
Table.call(
this,
"scriptListTable",
- recordList("scriptRecord", scriptListTable, function (scriptRecord, i4) {
+ recordList("scriptRecord", scriptListTable, function(scriptRecord, i4) {
var script = scriptRecord.script;
var defaultLangSys = script.defaultLangSys;
check.assert(
@@ -60742,7 +60716,7 @@ var { parseBuffer } = (() => {
)
}
].concat(
- recordList("langSys", script.langSysRecords, function (langSysRecord, i22) {
+ recordList("langSys", script.langSysRecords, function(langSysRecord, i22) {
var langSys = langSysRecord.langSys;
return [
{ name: "langSysTag" + i22, type: "TAG", value: langSysRecord.tag },
@@ -60772,7 +60746,7 @@ var { parseBuffer } = (() => {
Table.call(
this,
"featureListTable",
- recordList("featureRecord", featureListTable, function (featureRecord, i4) {
+ recordList("featureRecord", featureListTable, function(featureRecord, i4) {
var feature = featureRecord.feature;
return [
{ name: "featureTag" + i4, type: "TAG", value: featureRecord.tag },
@@ -60796,7 +60770,7 @@ var { parseBuffer } = (() => {
Table.call(
this,
"lookupListTable",
- tableList("lookup", lookupListTable, function (lookupTable) {
+ tableList("lookup", lookupListTable, function(lookupTable) {
var subtableCallback = subtableMakers2[lookupTable.lookupType];
check.assert(!!subtableCallback, "Unable to write GSUB lookup type " + lookupTable.lookupType + " tables.");
return new Table(
@@ -60882,18 +60856,18 @@ var { parseBuffer } = (() => {
this.offset = offset;
this.relativeOffset = 0;
}
- Parser2.prototype.parseByte = function () {
+ Parser2.prototype.parseByte = function() {
var v5 = this.data.getUint8(this.offset + this.relativeOffset);
this.relativeOffset += 1;
return v5;
};
- Parser2.prototype.parseChar = function () {
+ Parser2.prototype.parseChar = function() {
var v5 = this.data.getInt8(this.offset + this.relativeOffset);
this.relativeOffset += 1;
return v5;
};
Parser2.prototype.parseCard8 = Parser2.prototype.parseByte;
- Parser2.prototype.parseUShort = function () {
+ Parser2.prototype.parseUShort = function() {
var v5 = this.data.getUint16(this.offset + this.relativeOffset);
this.relativeOffset += 2;
return v5;
@@ -60901,28 +60875,28 @@ var { parseBuffer } = (() => {
Parser2.prototype.parseCard16 = Parser2.prototype.parseUShort;
Parser2.prototype.parseSID = Parser2.prototype.parseUShort;
Parser2.prototype.parseOffset16 = Parser2.prototype.parseUShort;
- Parser2.prototype.parseShort = function () {
+ Parser2.prototype.parseShort = function() {
var v5 = this.data.getInt16(this.offset + this.relativeOffset);
this.relativeOffset += 2;
return v5;
};
- Parser2.prototype.parseF2Dot14 = function () {
+ Parser2.prototype.parseF2Dot14 = function() {
var v5 = this.data.getInt16(this.offset + this.relativeOffset) / 16384;
this.relativeOffset += 2;
return v5;
};
- Parser2.prototype.parseULong = function () {
+ Parser2.prototype.parseULong = function() {
var v5 = getULong(this.data, this.offset + this.relativeOffset);
this.relativeOffset += 4;
return v5;
};
Parser2.prototype.parseOffset32 = Parser2.prototype.parseULong;
- Parser2.prototype.parseFixed = function () {
+ Parser2.prototype.parseFixed = function() {
var v5 = getFixed(this.data, this.offset + this.relativeOffset);
this.relativeOffset += 4;
return v5;
};
- Parser2.prototype.parseString = function (length3) {
+ Parser2.prototype.parseString = function(length3) {
var dataView = this.data;
var offset = this.offset + this.relativeOffset;
var string = "";
@@ -60932,16 +60906,16 @@ var { parseBuffer } = (() => {
}
return string;
};
- Parser2.prototype.parseTag = function () {
+ Parser2.prototype.parseTag = function() {
return this.parseString(4);
};
- Parser2.prototype.parseLongDateTime = function () {
+ Parser2.prototype.parseLongDateTime = function() {
var v5 = getULong(this.data, this.offset + this.relativeOffset + 4);
v5 -= 2082844800;
this.relativeOffset += 8;
return v5;
};
- Parser2.prototype.parseVersion = function (minorBase) {
+ Parser2.prototype.parseVersion = function(minorBase) {
var major = getUShort(this.data, this.offset + this.relativeOffset);
var minor = getUShort(this.data, this.offset + this.relativeOffset + 2);
this.relativeOffset += 4;
@@ -60950,13 +60924,13 @@ var { parseBuffer } = (() => {
}
return major + minor / minorBase / 10;
};
- Parser2.prototype.skip = function (type, amount) {
+ Parser2.prototype.skip = function(type, amount) {
if (amount === void 0) {
amount = 1;
}
this.relativeOffset += typeOffsets[type] * amount;
};
- Parser2.prototype.parseULongList = function (count) {
+ Parser2.prototype.parseULongList = function(count) {
if (count === void 0) {
count = this.parseULong();
}
@@ -60970,7 +60944,7 @@ var { parseBuffer } = (() => {
this.relativeOffset += count * 4;
return offsets;
};
- Parser2.prototype.parseOffset16List = Parser2.prototype.parseUShortList = function (count) {
+ Parser2.prototype.parseOffset16List = Parser2.prototype.parseUShortList = function(count) {
if (count === void 0) {
count = this.parseUShort();
}
@@ -60984,7 +60958,7 @@ var { parseBuffer } = (() => {
this.relativeOffset += count * 2;
return offsets;
};
- Parser2.prototype.parseShortList = function (count) {
+ Parser2.prototype.parseShortList = function(count) {
var list = new Array(count);
var dataView = this.data;
var offset = this.offset + this.relativeOffset;
@@ -60995,7 +60969,7 @@ var { parseBuffer } = (() => {
this.relativeOffset += count * 2;
return list;
};
- Parser2.prototype.parseByteList = function (count) {
+ Parser2.prototype.parseByteList = function(count) {
var list = new Array(count);
var dataView = this.data;
var offset = this.offset + this.relativeOffset;
@@ -61005,7 +60979,7 @@ var { parseBuffer } = (() => {
this.relativeOffset += count;
return list;
};
- Parser2.prototype.parseList = function (count, itemCallback) {
+ Parser2.prototype.parseList = function(count, itemCallback) {
if (!itemCallback) {
itemCallback = count;
count = this.parseUShort();
@@ -61016,7 +60990,7 @@ var { parseBuffer } = (() => {
}
return list;
};
- Parser2.prototype.parseList32 = function (count, itemCallback) {
+ Parser2.prototype.parseList32 = function(count, itemCallback) {
if (!itemCallback) {
itemCallback = count;
count = this.parseULong();
@@ -61027,7 +61001,7 @@ var { parseBuffer } = (() => {
}
return list;
};
- Parser2.prototype.parseRecordList = function (count, recordDescription) {
+ Parser2.prototype.parseRecordList = function(count, recordDescription) {
if (!recordDescription) {
recordDescription = count;
count = this.parseUShort();
@@ -61045,7 +61019,7 @@ var { parseBuffer } = (() => {
}
return records;
};
- Parser2.prototype.parseRecordList32 = function (count, recordDescription) {
+ Parser2.prototype.parseRecordList32 = function(count, recordDescription) {
if (!recordDescription) {
recordDescription = count;
count = this.parseULong();
@@ -61063,7 +61037,7 @@ var { parseBuffer } = (() => {
}
return records;
};
- Parser2.prototype.parseStruct = function (description) {
+ Parser2.prototype.parseStruct = function(description) {
if (typeof description === "function") {
return description.call(this);
} else {
@@ -61077,7 +61051,7 @@ var { parseBuffer } = (() => {
return struct;
}
};
- Parser2.prototype.parseValueRecord = function (valueFormat) {
+ Parser2.prototype.parseValueRecord = function(valueFormat) {
if (valueFormat === void 0) {
valueFormat = this.parseUShort();
}
@@ -61115,7 +61089,7 @@ var { parseBuffer } = (() => {
}
return valueRecord;
};
- Parser2.prototype.parseValueRecordList = function () {
+ Parser2.prototype.parseValueRecordList = function() {
var valueFormat = this.parseUShort();
var valueCount = this.parseUShort();
var values = new Array(valueCount);
@@ -61124,21 +61098,21 @@ var { parseBuffer } = (() => {
}
return values;
};
- Parser2.prototype.parsePointer = function (description) {
+ Parser2.prototype.parsePointer = function(description) {
var structOffset = this.parseOffset16();
if (structOffset > 0) {
return new Parser2(this.data, this.offset + structOffset).parseStruct(description);
}
return void 0;
};
- Parser2.prototype.parsePointer32 = function (description) {
+ Parser2.prototype.parsePointer32 = function(description) {
var structOffset = this.parseOffset32();
if (structOffset > 0) {
return new Parser2(this.data, this.offset + structOffset).parseStruct(description);
}
return void 0;
};
- Parser2.prototype.parseListOfLists = function (itemCallback) {
+ Parser2.prototype.parseListOfLists = function(itemCallback) {
var offsets = this.parseOffset16List();
var count = offsets.length;
var relativeOffset = this.relativeOffset;
@@ -61165,7 +61139,7 @@ var { parseBuffer } = (() => {
this.relativeOffset = relativeOffset;
return list;
};
- Parser2.prototype.parseCoverage = function () {
+ Parser2.prototype.parseCoverage = function() {
var startOffset = this.offset + this.relativeOffset;
var format = this.parseUShort();
var count = this.parseUShort();
@@ -61190,7 +61164,7 @@ var { parseBuffer } = (() => {
}
throw new Error("0x" + startOffset.toString(16) + ": Coverage format must be 1 or 2.");
};
- Parser2.prototype.parseClassDef = function () {
+ Parser2.prototype.parseClassDef = function() {
var startOffset = this.offset + this.relativeOffset;
var format = this.parseUShort();
if (format === 1) {
@@ -61211,33 +61185,33 @@ var { parseBuffer } = (() => {
}
throw new Error("0x" + startOffset.toString(16) + ": ClassDef format must be 1 or 2.");
};
- Parser2.list = function (count, itemCallback) {
- return function () {
+ Parser2.list = function(count, itemCallback) {
+ return function() {
return this.parseList(count, itemCallback);
};
};
- Parser2.list32 = function (count, itemCallback) {
- return function () {
+ Parser2.list32 = function(count, itemCallback) {
+ return function() {
return this.parseList32(count, itemCallback);
};
};
- Parser2.recordList = function (count, recordDescription) {
- return function () {
+ Parser2.recordList = function(count, recordDescription) {
+ return function() {
return this.parseRecordList(count, recordDescription);
};
};
- Parser2.recordList32 = function (count, recordDescription) {
- return function () {
+ Parser2.recordList32 = function(count, recordDescription) {
+ return function() {
return this.parseRecordList32(count, recordDescription);
};
};
- Parser2.pointer = function (description) {
- return function () {
+ Parser2.pointer = function(description) {
+ return function() {
return this.parsePointer(description);
};
};
- Parser2.pointer32 = function (description) {
- return function () {
+ Parser2.pointer32 = function(description) {
+ return function() {
return this.parsePointer32(description);
};
};
@@ -61255,7 +61229,7 @@ var { parseBuffer } = (() => {
reqFeatureIndex: Parser2.uShort,
featureIndexes: Parser2.uShortList
};
- Parser2.prototype.parseScriptList = function () {
+ Parser2.prototype.parseScriptList = function() {
return this.parsePointer(
Parser2.recordList({
tag: Parser2.tag,
@@ -61269,7 +61243,7 @@ var { parseBuffer } = (() => {
})
) || [];
};
- Parser2.prototype.parseFeatureList = function () {
+ Parser2.prototype.parseFeatureList = function() {
return this.parsePointer(
Parser2.recordList({
tag: Parser2.tag,
@@ -61280,10 +61254,10 @@ var { parseBuffer } = (() => {
})
) || [];
};
- Parser2.prototype.parseLookupList = function (lookupTableParsers) {
+ Parser2.prototype.parseLookupList = function(lookupTableParsers) {
return this.parsePointer(
Parser2.list(
- Parser2.pointer(function () {
+ Parser2.pointer(function() {
var lookupType = this.parseUShort();
check.argument(1 <= lookupType && lookupType <= 9, "GPOS/GSUB lookup type " + lookupType + " unknown.");
var lookupFlag = this.parseUShort();
@@ -61298,8 +61272,8 @@ var { parseBuffer } = (() => {
)
) || [];
};
- Parser2.prototype.parseFeatureVariationsList = function () {
- return this.parsePointer32(function () {
+ Parser2.prototype.parseFeatureVariationsList = function() {
+ return this.parsePointer32(function() {
var majorVersion = this.parseUShort();
var minorVersion = this.parseUShort();
check.argument(majorVersion === 1 && minorVersion < 1, "GPOS/GSUB feature variations table unknown.");
@@ -61465,7 +61439,7 @@ var { parseBuffer } = (() => {
for (var j = 0; j < glyph.unicodes.length; j += 1) {
addSegment(t3, glyph.unicodes[j], i4);
}
- t3.segments = t3.segments.sort(function (a6, b5) {
+ t3.segments = t3.segments.sort(function(a6, b5) {
return a6.start - b5.start;
});
}
@@ -61508,11 +61482,11 @@ var { parseBuffer } = (() => {
t3.fields = t3.fields.concat(idRangeOffsets);
t3.fields = t3.fields.concat(glyphIds);
t3.cmap4Length = 14 + // Subtable header
- endCounts.length * 2 + 2 + // reservedPad
- startCounts.length * 2 + idDeltas.length * 2 + idRangeOffsets.length * 2 + glyphIds.length * 2;
+ endCounts.length * 2 + 2 + // reservedPad
+ startCounts.length * 2 + idDeltas.length * 2 + idRangeOffsets.length * 2 + glyphIds.length * 2;
if (!isPlan0Only) {
var cmap12Length = 16 + // Subtable header
- cmap12Groups.length * 4;
+ cmap12Groups.length * 4;
t3.cmap12Offset = 12 + 2 * 2 + 4 + t3.cmap4Length;
t3.fields = t3.fields.concat([
{ name: "cmap12Format", type: "USHORT", value: 12 },
@@ -62693,7 +62667,7 @@ var { parseBuffer } = (() => {
function DefaultEncoding(font) {
this.font = font;
}
- DefaultEncoding.prototype.charToGlyphIndex = function (c2) {
+ DefaultEncoding.prototype.charToGlyphIndex = function(c2) {
var code = c2.codePointAt(0);
var glyphs = this.font.glyphs;
if (glyphs) {
@@ -62711,14 +62685,14 @@ var { parseBuffer } = (() => {
function CmapEncoding(cmap2) {
this.cmap = cmap2;
}
- CmapEncoding.prototype.charToGlyphIndex = function (c2) {
+ CmapEncoding.prototype.charToGlyphIndex = function(c2) {
return this.cmap.glyphIndexMap[c2.codePointAt(0)] || 0;
};
function CffEncoding(encoding, charset) {
this.encoding = encoding;
this.charset = charset;
}
- CffEncoding.prototype.charToGlyphIndex = function (s2) {
+ CffEncoding.prototype.charToGlyphIndex = function(s2) {
var code = s2.codePointAt(0);
var charName = this.encoding[code];
return this.charset.indexOf(charName);
@@ -62752,10 +62726,10 @@ var { parseBuffer } = (() => {
break;
}
}
- GlyphNames.prototype.nameToGlyphIndex = function (name) {
+ GlyphNames.prototype.nameToGlyphIndex = function(name) {
return this.names.indexOf(name);
};
- GlyphNames.prototype.glyphIndexToName = function (gid) {
+ GlyphNames.prototype.glyphIndexToName = function(gid) {
return this.names[gid];
};
function addGlyphNamesAll(font) {
@@ -62815,13 +62789,13 @@ var { parseBuffer } = (() => {
var _path = path || new Path2();
return {
configurable: true,
- get: function () {
+ get: function() {
if (typeof _path === "function") {
_path = _path();
}
return _path;
},
- set: function (p2) {
+ set: function(p2) {
_path = p2;
}
};
@@ -62829,7 +62803,7 @@ var { parseBuffer } = (() => {
function Glyph(options) {
this.bindConstructorValues(options);
}
- Glyph.prototype.bindConstructorValues = function (options) {
+ Glyph.prototype.bindConstructorValues = function(options) {
this.index = options.index || 0;
this.name = options.name || null;
this.unicode = options.unicode || void 0;
@@ -62851,16 +62825,16 @@ var { parseBuffer } = (() => {
}
Object.defineProperty(this, "path", getPathDefinition(this, options.path));
};
- Glyph.prototype.addUnicode = function (unicode) {
+ Glyph.prototype.addUnicode = function(unicode) {
if (this.unicodes.length === 0) {
this.unicode = unicode;
}
this.unicodes.push(unicode);
};
- Glyph.prototype.getBoundingBox = function () {
+ Glyph.prototype.getBoundingBox = function() {
return this.path.getBoundingBox();
};
- Glyph.prototype.getPath = function (x, y, fontSize, options, font) {
+ Glyph.prototype.getPath = function(x, y, fontSize, options, font) {
x = x !== void 0 ? x : 0;
y = y !== void 0 ? y : 0;
fontSize = fontSize !== void 0 ? fontSize : 72;
@@ -62913,7 +62887,7 @@ var { parseBuffer } = (() => {
}
return p2;
};
- Glyph.prototype.getContours = function () {
+ Glyph.prototype.getContours = function() {
if (this.points === void 0) {
return [];
}
@@ -62930,7 +62904,7 @@ var { parseBuffer } = (() => {
check.argument(currentContour.length === 0, "There are still points left in the current contour.");
return contours;
};
- Glyph.prototype.getMetrics = function () {
+ Glyph.prototype.getMetrics = function() {
var commands = this.path.commands;
var xCoords = [];
var yCoords = [];
@@ -62971,10 +62945,10 @@ var { parseBuffer } = (() => {
metrics.rightSideBearing = this.advanceWidth - metrics.leftSideBearing - (metrics.xMax - metrics.xMin);
return metrics;
};
- Glyph.prototype.draw = function (ctx, x, y, fontSize, options) {
+ Glyph.prototype.draw = function(ctx, x, y, fontSize, options) {
this.getPath(x, y, fontSize, options).draw(ctx);
};
- Glyph.prototype.drawPoints = function (ctx, x, y, fontSize) {
+ Glyph.prototype.drawPoints = function(ctx, x, y, fontSize) {
function drawCircles(l2, x2, y2, scale22) {
ctx.beginPath();
for (var j = 0; j < l2.length; j += 1) {
@@ -63008,7 +62982,7 @@ var { parseBuffer } = (() => {
ctx.fillStyle = "red";
drawCircles(redCircles, x, y, scale5);
};
- Glyph.prototype.drawMetrics = function (ctx, x, y, fontSize) {
+ Glyph.prototype.drawMetrics = function(ctx, x, y, fontSize) {
var scale5;
x = x !== void 0 ? x : 0;
y = y !== void 0 ? y : 0;
@@ -63033,11 +63007,11 @@ var { parseBuffer } = (() => {
};
function defineDependentProperty(glyph, externalName, internalName) {
Object.defineProperty(glyph, externalName, {
- get: function () {
+ get: function() {
glyph.path;
return glyph[internalName];
},
- set: function (newValue) {
+ set: function(newValue) {
glyph[internalName] = newValue;
},
enumerable: true,
@@ -63056,7 +63030,7 @@ var { parseBuffer } = (() => {
}
this.length = glyphs && glyphs.length || 0;
}
- GlyphSet.prototype.get = function (index2) {
+ GlyphSet.prototype.get = function(index2) {
if (this.glyphs[index2] === void 0) {
this.font._push(index2);
if (typeof this.glyphs[index2] === "function") {
@@ -63087,7 +63061,7 @@ var { parseBuffer } = (() => {
}
return this.glyphs[index2];
};
- GlyphSet.prototype.push = function (index2, loader2) {
+ GlyphSet.prototype.push = function(index2, loader2) {
this.glyphs[index2] = loader2;
this.length++;
};
@@ -63095,9 +63069,9 @@ var { parseBuffer } = (() => {
return new Glyph({ index: index2, font });
}
function ttfGlyphLoader(font, index2, parseGlyph2, data, position2, buildPath2) {
- return function () {
+ return function() {
var glyph = new Glyph({ index: index2, font });
- glyph.path = function () {
+ glyph.path = function() {
parseGlyph2(glyph, data, position2);
var path = buildPath2(font.glyphs, glyph);
path.unitsPerEm = font.unitsPerEm;
@@ -63111,9 +63085,9 @@ var { parseBuffer } = (() => {
};
}
function cffGlyphLoader(font, index2, parseCFFCharstring2, charstring) {
- return function () {
+ return function() {
var glyph = new Glyph({ index: index2, font });
- glyph.path = function () {
+ glyph.path = function() {
var path = parseCFFCharstring2(font, glyph, charstring);
path.unitsPerEm = font.unitsPerEm;
return path;
@@ -63988,7 +63962,7 @@ var { parseBuffer } = (() => {
font.encoding = font.encoding || font.cffEncoding;
font.glyphs = new glyphset.GlyphSet(font);
if (opt.lowMemory) {
- font._push = function (i22) {
+ font._push = function(i22) {
var charString2 = getCffIndexObject(i22, charStringsIndex.offsets, data, start + topDict.charStrings);
font.glyphs.push(i22, glyphset.cffGlyphLoader(font, i22, parseCFFCharstring, charString2));
};
@@ -65219,16 +65193,16 @@ var { parseBuffer } = (() => {
var needleLength = needle.length;
var limit = haystack.length - needleLength + 1;
loop:
- for (var pos = 0; pos < limit; pos++) {
- for (; pos < limit; pos++) {
- for (var k = 0; k < needleLength; k++) {
- if (haystack[pos + k] !== needle[k]) {
- continue loop;
+ for (var pos = 0; pos < limit; pos++) {
+ for (; pos < limit; pos++) {
+ for (var k = 0; k < needleLength; k++) {
+ if (haystack[pos + k] !== needle[k]) {
+ continue loop;
+ }
}
+ return pos;
}
- return pos;
}
- }
return -1;
}
function addStringToPool(s2, pool) {
@@ -65294,7 +65268,7 @@ var { parseBuffer } = (() => {
}
}
}
- nameRecords.sort(function (a6, b5) {
+ nameRecords.sort(function(a6, b5) {
return a6.platformID - b5.platformID || a6.encodingID - b5.encodingID || a6.languageID - b5.languageID || a6.nameID - b5.nameID;
});
var t3 = new table.Table("name", [
@@ -65767,7 +65741,7 @@ var { parseBuffer } = (() => {
return {
substFormat,
coverage: this.parsePointer(Parser2.coverage),
- ligatureSets: this.parseListOfLists(function () {
+ ligatureSets: this.parseListOfLists(function() {
return {
ligGlyph: this.parseUShort(),
components: this.parseUShortList(this.parseUShort() - 1)
@@ -65786,7 +65760,7 @@ var { parseBuffer } = (() => {
return {
substFormat,
coverage: this.parsePointer(Parser2.coverage),
- ruleSets: this.parseListOfLists(function () {
+ ruleSets: this.parseListOfLists(function() {
var glyphCount2 = this.parseUShort();
var substCount2 = this.parseUShort();
return {
@@ -65800,7 +65774,7 @@ var { parseBuffer } = (() => {
substFormat,
coverage: this.parsePointer(Parser2.coverage),
classDef: this.parsePointer(Parser2.classDef),
- classSets: this.parseListOfLists(function () {
+ classSets: this.parseListOfLists(function() {
var glyphCount2 = this.parseUShort();
var substCount2 = this.parseUShort();
return {
@@ -65827,7 +65801,7 @@ var { parseBuffer } = (() => {
return {
substFormat: 1,
coverage: this.parsePointer(Parser2.coverage),
- chainRuleSets: this.parseListOfLists(function () {
+ chainRuleSets: this.parseListOfLists(function() {
return {
backtrack: this.parseUShortList(),
input: this.parseUShortList(this.parseShort() - 1),
@@ -65843,7 +65817,7 @@ var { parseBuffer } = (() => {
backtrackClassDef: this.parsePointer(Parser2.classDef),
inputClassDef: this.parsePointer(Parser2.classDef),
lookaheadClassDef: this.parsePointer(Parser2.classDef),
- chainClassSet: this.parseListOfLists(function () {
+ chainClassSet: this.parseListOfLists(function() {
return {
backtrack: this.parseUShortList(),
input: this.parseUShortList(this.parseShort() - 1),
@@ -65936,7 +65910,7 @@ var { parseBuffer } = (() => {
{ name: "substFormat", type: "USHORT", value: 1 },
{ name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) }
].concat(
- table.tableList("seqSet", subtable.sequences, function (sequenceSet) {
+ table.tableList("seqSet", subtable.sequences, function(sequenceSet) {
return new table.Table("sequenceSetTable", table.ushortList("sequence", sequenceSet));
})
)
@@ -65950,7 +65924,7 @@ var { parseBuffer } = (() => {
{ name: "substFormat", type: "USHORT", value: 1 },
{ name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) }
].concat(
- table.tableList("altSet", subtable.alternateSets, function (alternateSet) {
+ table.tableList("altSet", subtable.alternateSets, function(alternateSet) {
return new table.Table("alternateSetTable", table.ushortList("alternate", alternateSet));
})
)
@@ -65964,10 +65938,10 @@ var { parseBuffer } = (() => {
{ name: "substFormat", type: "USHORT", value: 1 },
{ name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) }
].concat(
- table.tableList("ligSet", subtable.ligatureSets, function (ligatureSet) {
+ table.tableList("ligSet", subtable.ligatureSets, function(ligatureSet) {
return new table.Table(
"ligatureSetTable",
- table.tableList("ligature", ligatureSet, function (ligature) {
+ table.tableList("ligature", ligatureSet, function(ligature) {
return new table.Table(
"ligatureTable",
[{ name: "ligGlyph", type: "USHORT", value: ligature.ligGlyph }].concat(
@@ -65988,12 +65962,12 @@ var { parseBuffer } = (() => {
{ name: "substFormat", type: "USHORT", value: subtable.substFormat },
{ name: "coverage", type: "TABLE", value: new table.Coverage(subtable.coverage) }
].concat(
- table.tableList("chainRuleSet", subtable.chainRuleSets, function (chainRuleSet) {
+ table.tableList("chainRuleSet", subtable.chainRuleSets, function(chainRuleSet) {
return new table.Table(
"chainRuleSetTable",
- table.tableList("chainRule", chainRuleSet, function (chainRule) {
+ table.tableList("chainRule", chainRuleSet, function(chainRule) {
var tableData2 = table.ushortList("backtrackGlyph", chainRule.backtrack, chainRule.backtrack.length).concat(table.ushortList("inputGlyph", chainRule.input, chainRule.input.length + 1)).concat(table.ushortList("lookaheadGlyph", chainRule.lookahead, chainRule.lookahead.length)).concat(table.ushortList("substitution", [], chainRule.lookupRecords.length));
- chainRule.lookupRecords.forEach(function (record, i4) {
+ chainRule.lookupRecords.forEach(function(record, i4) {
tableData2 = tableData2.concat({ name: "sequenceIndex" + i4, type: "USHORT", value: record.sequenceIndex }).concat({ name: "lookupListIndex" + i4, type: "USHORT", value: record.lookupListIndex });
});
return new table.Table("chainRuleTable", tableData2);
@@ -66008,19 +65982,19 @@ var { parseBuffer } = (() => {
} else if (subtable.substFormat === 3) {
var tableData = [{ name: "substFormat", type: "USHORT", value: subtable.substFormat }];
tableData.push({ name: "backtrackGlyphCount", type: "USHORT", value: subtable.backtrackCoverage.length });
- subtable.backtrackCoverage.forEach(function (coverage, i4) {
+ subtable.backtrackCoverage.forEach(function(coverage, i4) {
tableData.push({ name: "backtrackCoverage" + i4, type: "TABLE", value: new table.Coverage(coverage) });
});
tableData.push({ name: "inputGlyphCount", type: "USHORT", value: subtable.inputCoverage.length });
- subtable.inputCoverage.forEach(function (coverage, i4) {
+ subtable.inputCoverage.forEach(function(coverage, i4) {
tableData.push({ name: "inputCoverage" + i4, type: "TABLE", value: new table.Coverage(coverage) });
});
tableData.push({ name: "lookaheadGlyphCount", type: "USHORT", value: subtable.lookaheadCoverage.length });
- subtable.lookaheadCoverage.forEach(function (coverage, i4) {
+ subtable.lookaheadCoverage.forEach(function(coverage, i4) {
tableData.push({ name: "lookaheadCoverage" + i4, type: "TABLE", value: new table.Coverage(coverage) });
});
tableData.push({ name: "substitutionCount", type: "USHORT", value: subtable.lookupRecords.length });
- subtable.lookupRecords.forEach(function (record, i4) {
+ subtable.lookupRecords.forEach(function(record, i4) {
tableData = tableData.concat({ name: "sequenceIndex" + i4, type: "USHORT", value: record.sequenceIndex }).concat({ name: "lookupListIndex" + i4, type: "USHORT", value: record.lookupListIndex });
});
var returnTable$1 = new table.Table("chainContextTable", tableData);
@@ -66132,7 +66106,7 @@ var { parseBuffer } = (() => {
tableFields.push({ name: "padding", type: "BYTE", value: 0 });
}
}
- recordFields.sort(function (r1, r2) {
+ recordFields.sort(function(r1, r2) {
if (r1.value.tag > r2.value.tag) {
return 1;
} else {
@@ -66430,7 +66404,7 @@ var { parseBuffer } = (() => {
* @param {boolean} create - Whether to create a new one.
* @return {Object} The GSUB or GPOS table.
*/
- getTable: function (create4) {
+ getTable: function(create4) {
var layout = this.font.tables[this.tableName];
if (!layout && create4) {
layout = this.font.tables[this.tableName] = this.createDefaultTable();
@@ -66442,12 +66416,12 @@ var { parseBuffer } = (() => {
* @instance
* @return {Array}
*/
- getScriptNames: function () {
+ getScriptNames: function() {
var layout = this.getTable();
if (!layout) {
return [];
}
- return layout.scripts.map(function (script) {
+ return layout.scripts.map(function(script) {
return script.tag;
});
},
@@ -66457,7 +66431,7 @@ var { parseBuffer } = (() => {
* If not, returns 'latn' if it exists.
* If neither exist, returns undefined.
*/
- getDefaultScriptName: function () {
+ getDefaultScriptName: function() {
var layout = this.getTable();
if (!layout) {
return;
@@ -66483,7 +66457,7 @@ var { parseBuffer } = (() => {
* @param {boolean} create - forces the creation of this script table if it doesn't exist.
* @return {Object} An object with tag and script properties.
*/
- getScriptTable: function (script, create4) {
+ getScriptTable: function(script, create4) {
var layout = this.getTable(create4);
if (layout) {
script = script || "DFLT";
@@ -66512,7 +66486,7 @@ var { parseBuffer } = (() => {
* @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.
* @return {Object}
*/
- getLangSysTable: function (script, language, create4) {
+ getLangSysTable: function(script, language, create4) {
var scriptTable = this.getScriptTable(script, create4);
if (scriptTable) {
if (!language || language === "dflt" || language === "DFLT") {
@@ -66540,7 +66514,7 @@ var { parseBuffer } = (() => {
* @param {boolean} create - forces the creation of the feature table if it doesn't exist.
* @return {Object}
*/
- getFeatureTable: function (script, language, feature, create4) {
+ getFeatureTable: function(script, language, feature, create4) {
var langSysTable2 = this.getLangSysTable(script, language, create4);
if (langSysTable2) {
var featureRecord;
@@ -66578,7 +66552,7 @@ var { parseBuffer } = (() => {
* @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.
* @return {Object[]}
*/
- getLookupTables: function (script, language, feature, lookupType, create4) {
+ getLookupTables: function(script, language, feature, lookupType, create4) {
var featureTable = this.getFeatureTable(script, language, feature, create4);
var tables = [];
if (featureTable) {
@@ -66613,7 +66587,7 @@ var { parseBuffer } = (() => {
* @param {number} glyphIndex - the index of the glyph to find
* @returns {number} -1 if not found
*/
- getGlyphClass: function (classDefTable, glyphIndex) {
+ getGlyphClass: function(classDefTable, glyphIndex) {
switch (classDefTable.format) {
case 1:
if (classDefTable.startGlyph <= glyphIndex && glyphIndex < classDefTable.startGlyph + classDefTable.classes.length) {
@@ -66632,7 +66606,7 @@ var { parseBuffer } = (() => {
* @param {number} glyphIndex - the index of the glyph to find
* @returns {number} -1 if not found
*/
- getCoverageIndex: function (coverageTable, glyphIndex) {
+ getCoverageIndex: function(coverageTable, glyphIndex) {
switch (coverageTable.format) {
case 1:
var index2 = binSearch(coverageTable.glyphs, glyphIndex);
@@ -66650,7 +66624,7 @@ var { parseBuffer } = (() => {
* @param {Object} coverageTable
* @return {Array}
*/
- expandCoverage: function (coverageTable) {
+ expandCoverage: function(coverageTable) {
if (coverageTable.format === 1) {
return coverageTable.glyphs;
} else {
@@ -66672,11 +66646,11 @@ var { parseBuffer } = (() => {
Layout.call(this, font, "gpos");
}
Position.prototype = Layout.prototype;
- Position.prototype.init = function () {
+ Position.prototype.init = function() {
var script = this.getDefaultScriptName();
this.defaultKerningTables = this.getKerningTables(script);
};
- Position.prototype.getKerningValue = function (kerningLookups, leftIndex, rightIndex) {
+ Position.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) {
for (var i4 = 0; i4 < kerningLookups.length; i4++) {
var subtables = kerningLookups[i4].subtables;
for (var j = 0; j < subtables.length; j++) {
@@ -66705,7 +66679,7 @@ var { parseBuffer } = (() => {
}
return 0;
};
- Position.prototype.getKerningTables = function (script, language) {
+ Position.prototype.getKerningTables = function(script, language) {
if (this.font.tables.gpos) {
return this.getLookupTables(script, language, "kern", 2);
}
@@ -66740,7 +66714,7 @@ var { parseBuffer } = (() => {
return void 0;
}
Substitution.prototype = Layout.prototype;
- Substitution.prototype.createDefaultTable = function () {
+ Substitution.prototype.createDefaultTable = function() {
return {
version: 1,
scripts: [
@@ -66756,7 +66730,7 @@ var { parseBuffer } = (() => {
lookups: []
};
};
- Substitution.prototype.getSingle = function (feature, script, language) {
+ Substitution.prototype.getSingle = function(feature, script, language) {
var substitutions = [];
var lookupTables = this.getLookupTables(script, language, feature, 1);
for (var idx = 0; idx < lookupTables.length; idx++) {
@@ -66781,7 +66755,7 @@ var { parseBuffer } = (() => {
}
return substitutions;
};
- Substitution.prototype.getMultiple = function (feature, script, language) {
+ Substitution.prototype.getMultiple = function(feature, script, language) {
var substitutions = [];
var lookupTables = this.getLookupTables(script, language, feature, 2);
for (var idx = 0; idx < lookupTables.length; idx++) {
@@ -66799,7 +66773,7 @@ var { parseBuffer } = (() => {
}
return substitutions;
};
- Substitution.prototype.getAlternates = function (feature, script, language) {
+ Substitution.prototype.getAlternates = function(feature, script, language) {
var alternates = [];
var lookupTables = this.getLookupTables(script, language, feature, 3);
for (var idx = 0; idx < lookupTables.length; idx++) {
@@ -66815,7 +66789,7 @@ var { parseBuffer } = (() => {
}
return alternates;
};
- Substitution.prototype.getLigatures = function (feature, script, language) {
+ Substitution.prototype.getLigatures = function(feature, script, language) {
var ligatures = [];
var lookupTables = this.getLookupTables(script, language, feature, 4);
for (var idx = 0; idx < lookupTables.length; idx++) {
@@ -66839,7 +66813,7 @@ var { parseBuffer } = (() => {
}
return ligatures;
};
- Substitution.prototype.addSingle = function (feature, substitution, script, language) {
+ Substitution.prototype.addSingle = function(feature, substitution, script, language) {
var lookupTable = this.getLookupTables(script, language, feature, 1, true)[0];
var subtable = getSubstFormat(lookupTable, 2, {
// lookup type 1 subtable, format 2, coverage format 1
@@ -66860,7 +66834,7 @@ var { parseBuffer } = (() => {
}
subtable.substitute[pos] = substitution.by;
};
- Substitution.prototype.addMultiple = function (feature, substitution, script, language) {
+ Substitution.prototype.addMultiple = function(feature, substitution, script, language) {
check.assert(
substitution.by instanceof Array && substitution.by.length > 1,
'Multiple: "by" must be an array of two or more ids'
@@ -66885,7 +66859,7 @@ var { parseBuffer } = (() => {
}
subtable.sequences[pos] = substitution.by;
};
- Substitution.prototype.addAlternate = function (feature, substitution, script, language) {
+ Substitution.prototype.addAlternate = function(feature, substitution, script, language) {
var lookupTable = this.getLookupTables(script, language, feature, 3, true)[0];
var subtable = getSubstFormat(lookupTable, 1, {
// lookup type 3 subtable, format 1, coverage format 1
@@ -66906,7 +66880,7 @@ var { parseBuffer } = (() => {
}
subtable.alternateSets[pos] = substitution.by;
};
- Substitution.prototype.addLigature = function (feature, ligature, script, language) {
+ Substitution.prototype.addLigature = function(feature, ligature, script, language) {
var lookupTable = this.getLookupTables(script, language, feature, 4, true)[0];
var subtable = lookupTable.subtables[0];
if (!subtable) {
@@ -66943,7 +66917,7 @@ var { parseBuffer } = (() => {
subtable.ligatureSets.splice(pos, 0, [ligatureTable]);
}
};
- Substitution.prototype.getFeature = function (feature, script, language) {
+ Substitution.prototype.getFeature = function(feature, script, language) {
if (/ss\d\d/.test(feature)) {
return this.getSingle(feature, script, language);
}
@@ -66962,7 +66936,7 @@ var { parseBuffer } = (() => {
}
return void 0;
};
- Substitution.prototype.add = function (feature, sub3, script, language) {
+ Substitution.prototype.add = function(feature, sub3, script, language) {
if (/ss\d\d/.test(feature)) {
return this.addSingle(feature, sub3, script, language);
}
@@ -67246,7 +67220,7 @@ var { parseBuffer } = (() => {
}
function parseGlyfTableOnLowMemory(data, start, loca2, font) {
var glyphs = new glyphset.GlyphSet(font);
- font._push = function (i4) {
+ font._push = function(i4) {
var offset = loca2[i4];
var nextOffset = loca2[i4 + 1];
if (offset !== nextOffset) {
@@ -67271,7 +67245,7 @@ var { parseBuffer } = (() => {
var execComponent;
function Hinting(font) {
this.font = font;
- this.getCommands = function (hPoints) {
+ this.getCommands = function(hPoints) {
return glyf.getPath(hPoints).commands;
};
this._fpgmState = this._prepState = void 0;
@@ -67295,7 +67269,7 @@ var { parseBuffer } = (() => {
function roundDownToGrid(v5) {
return Math.sign(v5) * Math.floor(Math.abs(v5));
}
- var roundSuper = function (v5) {
+ var roundSuper = function(v5) {
var period = this.srPeriod;
var phase = this.srPhase;
var threshold = this.srThreshold;
@@ -67318,7 +67292,7 @@ var { parseBuffer } = (() => {
axis: "x",
// Gets the projected distance between two points.
// o1/o2 ... if true, respective original position is used.
- distance: function (p1, p2, o1, o2) {
+ distance: function(p1, p2, o1, o2) {
return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x);
},
// Moves point p so the moved position has the same relative
@@ -67326,7 +67300,7 @@ var { parseBuffer } = (() => {
// original positions had.
//
// See APPENDIX on INTERPOLATE at the bottom of this file.
- interpolate: function (p2, rp1, rp2, pv) {
+ interpolate: function(p2, rp1, rp2, pv) {
var do1;
var do2;
var doa1;
@@ -67374,7 +67348,7 @@ var { parseBuffer } = (() => {
// d ... distance on projection vector
// pv ... projection vector (undefined = this)
// org ... if true, uses the original position of rp as reference.
- setRelative: function (p2, rp, d2, pv, org) {
+ setRelative: function(p2, rp, d2, pv, org) {
if (!pv || pv === this) {
p2.x = (org ? rp.xo : rp.x) + d2;
return;
@@ -67388,15 +67362,15 @@ var { parseBuffer } = (() => {
// Slope of vector line.
slope: 0,
// Touches the point p.
- touch: function (p2) {
+ touch: function(p2) {
p2.xTouched = true;
},
// Tests if a point p is touched.
- touched: function (p2) {
+ touched: function(p2) {
return p2.xTouched;
},
// Untouches the point p.
- untouch: function (p2) {
+ untouch: function(p2) {
p2.xTouched = false;
}
};
@@ -67406,7 +67380,7 @@ var { parseBuffer } = (() => {
axis: "y",
// Gets the projected distance between two points.
// o1/o2 ... if true, respective original position is used.
- distance: function (p1, p2, o1, o2) {
+ distance: function(p1, p2, o1, o2) {
return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y);
},
// Moves point p so the moved position has the same relative
@@ -67414,7 +67388,7 @@ var { parseBuffer } = (() => {
// original positions had.
//
// See APPENDIX on INTERPOLATE at the bottom of this file.
- interpolate: function (p2, rp1, rp2, pv) {
+ interpolate: function(p2, rp1, rp2, pv) {
var do1;
var do2;
var doa1;
@@ -67462,7 +67436,7 @@ var { parseBuffer } = (() => {
// d ... distance on projection vector
// pv ... projection vector (undefined = this)
// org ... if true, uses the original position of rp as reference.
- setRelative: function (p2, rp, d2, pv, org) {
+ setRelative: function(p2, rp, d2, pv, org) {
if (!pv || pv === this) {
p2.y = (org ? rp.yo : rp.y) + d2;
return;
@@ -67476,15 +67450,15 @@ var { parseBuffer } = (() => {
// Slope of vector line.
slope: Number.POSITIVE_INFINITY,
// Touches the point p.
- touch: function (p2) {
+ touch: function(p2) {
p2.yTouched = true;
},
// Tests if a point p is touched.
- touched: function (p2) {
+ touched: function(p2) {
return p2.yTouched;
},
// Untouches the point p.
- untouch: function (p2) {
+ untouch: function(p2) {
p2.yTouched = false;
}
};
@@ -67498,10 +67472,10 @@ var { parseBuffer } = (() => {
this.normalSlope = -x / y;
Object.freeze(this);
}
- UnitVector.prototype.distance = function (p1, p2, o1, o2) {
+ UnitVector.prototype.distance = function(p1, p2, o1, o2) {
return this.x * xUnitVector.distance(p1, p2, o1, o2) + this.y * yUnitVector.distance(p1, p2, o1, o2);
};
- UnitVector.prototype.interpolate = function (p2, rp1, rp2, pv) {
+ UnitVector.prototype.interpolate = function(p2, rp1, rp2, pv) {
var dm1;
var dm2;
var do1;
@@ -67522,7 +67496,7 @@ var { parseBuffer } = (() => {
}
this.setRelative(p2, p2, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);
};
- UnitVector.prototype.setRelative = function (p2, rp, d2, pv, org) {
+ UnitVector.prototype.setRelative = function(p2, rp, d2, pv, org) {
pv = pv || this;
var rpx = org ? rp.xo : rp.x;
var rpy = org ? rp.yo : rp.y;
@@ -67535,7 +67509,7 @@ var { parseBuffer } = (() => {
p2.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns);
p2.y = fvs * (p2.x - px) + py;
};
- UnitVector.prototype.touch = function (p2) {
+ UnitVector.prototype.touch = function(p2) {
p2.xTouched = true;
p2.yTouched = true;
};
@@ -67562,14 +67536,14 @@ var { parseBuffer } = (() => {
this.yTouched = false;
Object.preventExtensions(this);
}
- HPoint.prototype.nextTouched = function (v5) {
+ HPoint.prototype.nextTouched = function(v5) {
var p2 = this.nextPointOnContour;
while (!v5.touched(p2) && p2 !== this) {
p2 = p2.nextPointOnContour;
}
return p2;
};
- HPoint.prototype.prevTouched = function (v5) {
+ HPoint.prototype.prevTouched = function(v5) {
var p2 = this.prevPointOnContour;
while (!v5.touched(p2) && p2 !== this) {
p2 = p2.prevPointOnContour;
@@ -67601,7 +67575,7 @@ var { parseBuffer } = (() => {
this.round = roundToGrid;
}
}
- Hinting.prototype.exec = function (glyph, ppem) {
+ Hinting.prototype.exec = function(glyph, ppem) {
if (typeof ppem !== "number") {
throw new Error("Point size is not a number!");
}
@@ -67669,7 +67643,7 @@ var { parseBuffer } = (() => {
return void 0;
}
};
- execGlyph = function (glyph, prepState) {
+ execGlyph = function(glyph, prepState) {
var xScale = prepState.ppem / prepState.font.unitsPerEm;
var yScale = xScale;
var components = glyph.components;
@@ -67729,7 +67703,7 @@ var { parseBuffer } = (() => {
}
return gZone;
};
- execComponent = function (glyph, state, xScale, yScale) {
+ execComponent = function(glyph, state, xScale, yScale) {
var points = glyph.points || [];
var pLen = points.length;
var gZone = state.gZone = state.z0 = state.z1 = state.z2 = [];
@@ -67776,7 +67750,7 @@ var { parseBuffer } = (() => {
}
}
};
- exec = function (state) {
+ exec = function(state) {
var prog = state.prog;
if (!prog) {
return;
@@ -69664,13 +69638,13 @@ var { parseBuffer } = (() => {
"composeRUD",
"updateContextsRanges"
];
- coreEvents.forEach(function (eventId) {
+ coreEvents.forEach(function(eventId) {
Object.defineProperty(this$1$1.events, eventId, {
value: new Event(eventId)
});
});
if (!!events) {
- coreEvents.forEach(function (eventId) {
+ coreEvents.forEach(function(eventId) {
var event = events[eventId];
if (typeof event === "function") {
this$1$1.events[eventId].subscribe(event);
@@ -69685,7 +69659,7 @@ var { parseBuffer } = (() => {
"replaceRange",
"composeRUD"
];
- requiresContextUpdate.forEach(function (eventId) {
+ requiresContextUpdate.forEach(function(eventId) {
this$1$1.events[eventId].subscribe(this$1$1.updateContextsRanges);
});
}
@@ -69697,24 +69671,24 @@ var { parseBuffer } = (() => {
this.registeredModifiers = [];
initializeCoreEvents.call(this, events);
}
- Token.prototype.setState = function (key, value) {
+ Token.prototype.setState = function(key, value) {
this.state[key] = value;
this.activeState = { key, value: this.state[key] };
return this.activeState;
};
- Token.prototype.getState = function (stateId) {
+ Token.prototype.getState = function(stateId) {
return this.state[stateId] || null;
};
- Tokenizer.prototype.inboundIndex = function (index2) {
+ Tokenizer.prototype.inboundIndex = function(index2) {
return index2 >= 0 && index2 < this.tokens.length;
};
- Tokenizer.prototype.composeRUD = function (RUDs) {
+ Tokenizer.prototype.composeRUD = function(RUDs) {
var this$1$1 = this;
var silent = true;
- var state = RUDs.map(function (RUD) {
+ var state = RUDs.map(function(RUD) {
return this$1$1[RUD[0]].apply(this$1$1, RUD.slice(1).concat(silent));
});
- var hasFAILObject = function (obj) {
+ var hasFAILObject = function(obj) {
return typeof obj === "object" && obj.hasOwnProperty("FAIL");
};
if (state.every(hasFAILObject)) {
@@ -69724,14 +69698,14 @@ var { parseBuffer } = (() => {
};
}
this.dispatch("composeRUD", [
- state.filter(function (op) {
+ state.filter(function(op) {
return !hasFAILObject(op);
})
]);
};
- Tokenizer.prototype.replaceRange = function (startIndex, offset, tokens, silent) {
+ Tokenizer.prototype.replaceRange = function(startIndex, offset, tokens, silent) {
offset = offset !== null ? offset : this.tokens.length;
- var isTokenType = tokens.every(function (token) {
+ var isTokenType = tokens.every(function(token) {
return token instanceof Token;
});
if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) {
@@ -69744,7 +69718,7 @@ var { parseBuffer } = (() => {
return { FAIL: "replaceRange: invalid tokens or startIndex." };
}
};
- Tokenizer.prototype.replaceToken = function (index2, token, silent) {
+ Tokenizer.prototype.replaceToken = function(index2, token, silent) {
if (!isNaN(index2) && this.inboundIndex(index2) && token instanceof Token) {
var replaced = this.tokens.splice(index2, 1, token);
if (!silent) {
@@ -69755,7 +69729,7 @@ var { parseBuffer } = (() => {
return { FAIL: "replaceToken: invalid token or index." };
}
};
- Tokenizer.prototype.removeRange = function (startIndex, offset, silent) {
+ Tokenizer.prototype.removeRange = function(startIndex, offset, silent) {
offset = !isNaN(offset) ? offset : this.tokens.length;
var tokens = this.tokens.splice(startIndex, offset);
if (!silent) {
@@ -69763,7 +69737,7 @@ var { parseBuffer } = (() => {
}
return tokens;
};
- Tokenizer.prototype.removeToken = function (index2, silent) {
+ Tokenizer.prototype.removeToken = function(index2, silent) {
if (!isNaN(index2) && this.inboundIndex(index2)) {
var token = this.tokens.splice(index2, 1);
if (!silent) {
@@ -69774,8 +69748,8 @@ var { parseBuffer } = (() => {
return { FAIL: "removeToken: invalid token index." };
}
};
- Tokenizer.prototype.insertToken = function (tokens, index2, silent) {
- var tokenType = tokens.every(function (token) {
+ Tokenizer.prototype.insertToken = function(tokens, index2, silent) {
+ var tokenType = tokens.every(function(token) {
return token instanceof Token;
});
if (tokenType) {
@@ -69788,8 +69762,8 @@ var { parseBuffer } = (() => {
return { FAIL: "insertToken: invalid token(s)." };
}
};
- Tokenizer.prototype.registerModifier = function (modifierId, condition, modifier) {
- this.events.newToken.subscribe(function (token, contextParams) {
+ Tokenizer.prototype.registerModifier = function(modifierId, condition, modifier) {
+ this.events.newToken.subscribe(function(token, contextParams) {
var conditionParams = [token, contextParams];
var canApplyModifier = condition === null || condition.apply(this, conditionParams) === true;
var modifierParams = [token, contextParams];
@@ -69800,23 +69774,23 @@ var { parseBuffer } = (() => {
});
this.registeredModifiers.push(modifierId);
};
- Event.prototype.subscribe = function (eventHandler) {
+ Event.prototype.subscribe = function(eventHandler) {
if (typeof eventHandler === "function") {
return this.subscribers.push(eventHandler) - 1;
} else {
return { FAIL: "invalid '" + this.eventId + "' event handler" };
}
};
- Event.prototype.unsubscribe = function (subsId) {
+ Event.prototype.unsubscribe = function(subsId) {
this.subscribers.splice(subsId, 1);
};
- ContextParams.prototype.setCurrentIndex = function (index2) {
+ ContextParams.prototype.setCurrentIndex = function(index2) {
this.index = index2;
this.current = this.context[index2];
this.backtrack = this.context.slice(0, index2);
this.lookahead = this.context.slice(index2 + 1);
};
- ContextParams.prototype.get = function (offset) {
+ ContextParams.prototype.get = function(offset) {
switch (true) {
case offset === 0:
return this.current;
@@ -69828,23 +69802,23 @@ var { parseBuffer } = (() => {
return null;
}
};
- Tokenizer.prototype.rangeToText = function (range) {
+ Tokenizer.prototype.rangeToText = function(range) {
if (range instanceof ContextRange) {
- return this.getRangeTokens(range).map(function (token) {
+ return this.getRangeTokens(range).map(function(token) {
return token.char;
}).join("");
}
};
- Tokenizer.prototype.getText = function () {
- return this.tokens.map(function (token) {
+ Tokenizer.prototype.getText = function() {
+ return this.tokens.map(function(token) {
return token.char;
}).join("");
};
- Tokenizer.prototype.getContext = function (contextName) {
+ Tokenizer.prototype.getContext = function(contextName) {
var context12 = this.registeredContexts[contextName];
return !!context12 ? context12 : null;
};
- Tokenizer.prototype.on = function (eventName, eventHandler) {
+ Tokenizer.prototype.on = function(eventName, eventHandler) {
var event = this.events[eventName];
if (!!event) {
return event.subscribe(eventHandler);
@@ -69852,16 +69826,16 @@ var { parseBuffer } = (() => {
return null;
}
};
- Tokenizer.prototype.dispatch = function (eventName, args) {
+ Tokenizer.prototype.dispatch = function(eventName, args) {
var this$1$1 = this;
var event = this.events[eventName];
if (event instanceof Event) {
- event.subscribers.forEach(function (subscriber) {
+ event.subscribers.forEach(function(subscriber) {
subscriber.apply(this$1$1, args || []);
});
}
};
- Tokenizer.prototype.registerContextChecker = function (contextName, contextStartCheck, contextEndCheck) {
+ Tokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) {
if (!!this.getContext(contextName)) {
return {
FAIL: "context name '" + contextName + "' is already registered."
@@ -69882,11 +69856,11 @@ var { parseBuffer } = (() => {
this.contextCheckers.push(contextCheckers);
return contextCheckers;
};
- Tokenizer.prototype.getRangeTokens = function (range) {
+ Tokenizer.prototype.getRangeTokens = function(range) {
var endIndex = range.startIndex + range.endOffset;
return [].concat(this.tokens.slice(range.startIndex, endIndex));
};
- Tokenizer.prototype.getContextRanges = function (contextName) {
+ Tokenizer.prototype.getContextRanges = function(contextName) {
var context12 = this.getContext(contextName);
if (!!context12) {
return context12.ranges;
@@ -69894,7 +69868,7 @@ var { parseBuffer } = (() => {
return { FAIL: "context checker '" + contextName + "' is not registered." };
}
};
- Tokenizer.prototype.resetContextsRanges = function () {
+ Tokenizer.prototype.resetContextsRanges = function() {
var registeredContexts = this.registeredContexts;
for (var contextName in registeredContexts) {
if (registeredContexts.hasOwnProperty(contextName)) {
@@ -69903,9 +69877,9 @@ var { parseBuffer } = (() => {
}
}
};
- Tokenizer.prototype.updateContextsRanges = function () {
+ Tokenizer.prototype.updateContextsRanges = function() {
this.resetContextsRanges();
- var chars = this.tokens.map(function (token) {
+ var chars = this.tokens.map(function(token) {
return token.char;
});
for (var i4 = 0; i4 < chars.length; i4++) {
@@ -69914,7 +69888,7 @@ var { parseBuffer } = (() => {
}
this.dispatch("updateContextsRanges", [this.registeredContexts]);
};
- Tokenizer.prototype.setEndOffset = function (offset, contextName) {
+ Tokenizer.prototype.setEndOffset = function(offset, contextName) {
var startIndex = this.getContext(contextName).openRange.startIndex;
var range = new ContextRange(startIndex, offset, contextName);
var ranges = this.getContext(contextName).ranges;
@@ -69923,10 +69897,10 @@ var { parseBuffer } = (() => {
this.getContext(contextName).openRange = null;
return range;
};
- Tokenizer.prototype.runContextCheck = function (contextParams) {
+ Tokenizer.prototype.runContextCheck = function(contextParams) {
var this$1$1 = this;
var index2 = contextParams.index;
- this.contextCheckers.forEach(function (contextChecker) {
+ this.contextCheckers.forEach(function(contextChecker) {
var contextName = contextChecker.contextName;
var openRange = this$1$1.getContext(contextName).openRange;
if (!openRange && contextChecker.checkStart(contextParams)) {
@@ -69941,7 +69915,7 @@ var { parseBuffer } = (() => {
}
});
};
- Tokenizer.prototype.tokenize = function (text) {
+ Tokenizer.prototype.tokenize = function(text) {
this.tokens = [];
this.resetContextsRanges();
var chars = Array.from(text);
@@ -70122,7 +70096,7 @@ var { parseBuffer } = (() => {
}
return subtable.sequences[substituteIndex];
}
- FeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function () {
+ FeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function() {
var scripts = this.font.tables.gsub.scripts;
for (var s2 = 0; s2 < scripts.length; s2++) {
var script = scripts[s2];
@@ -70132,7 +70106,7 @@ var { parseBuffer } = (() => {
}
return [];
};
- FeatureQuery.prototype.getScriptFeaturesIndexes = function (scriptTag) {
+ FeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) {
var tables = this.font.tables;
if (!tables.gsub) {
return [];
@@ -70160,7 +70134,7 @@ var { parseBuffer } = (() => {
}
return this.getDefaultScriptFeaturesIndexes();
};
- FeatureQuery.prototype.mapTagsToFeatures = function (features, scriptTag) {
+ FeatureQuery.prototype.mapTagsToFeatures = function(features, scriptTag) {
var tags = {};
for (var i4 = 0; i4 < features.length; i4++) {
var tag = features[i4].tag;
@@ -70169,7 +70143,7 @@ var { parseBuffer } = (() => {
}
this.features[scriptTag].tags = tags;
};
- FeatureQuery.prototype.getScriptFeatures = function (scriptTag) {
+ FeatureQuery.prototype.getScriptFeatures = function(scriptTag) {
var features = this.features[scriptTag];
if (this.features.hasOwnProperty(scriptTag)) {
return features;
@@ -70179,40 +70153,40 @@ var { parseBuffer } = (() => {
return null;
}
var gsub2 = this.font.tables.gsub;
- features = featuresIndexes.map(function (index2) {
+ features = featuresIndexes.map(function(index2) {
return gsub2.features[index2];
});
this.features[scriptTag] = features;
this.mapTagsToFeatures(features, scriptTag);
return features;
};
- FeatureQuery.prototype.getSubstitutionType = function (lookupTable, subtable) {
+ FeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) {
var lookupType = lookupTable.lookupType.toString();
var substFormat = subtable.substFormat.toString();
return lookupType + substFormat;
};
- FeatureQuery.prototype.getLookupMethod = function (lookupTable, subtable) {
+ FeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) {
var this$1$1 = this;
var substitutionType = this.getSubstitutionType(lookupTable, subtable);
switch (substitutionType) {
case "11":
- return function (glyphIndex) {
+ return function(glyphIndex) {
return singleSubstitutionFormat1.apply(this$1$1, [glyphIndex, subtable]);
};
case "12":
- return function (glyphIndex) {
+ return function(glyphIndex) {
return singleSubstitutionFormat2.apply(this$1$1, [glyphIndex, subtable]);
};
case "63":
- return function (contextParams) {
+ return function(contextParams) {
return chainingSubstitutionFormat3.apply(this$1$1, [contextParams, subtable]);
};
case "41":
- return function (contextParams) {
+ return function(contextParams) {
return ligatureSubstitutionFormat1.apply(this$1$1, [contextParams, subtable]);
};
case "21":
- return function (glyphIndex) {
+ return function(glyphIndex) {
return decompositionSubstitutionFormat1.apply(this$1$1, [glyphIndex, subtable]);
};
default:
@@ -70221,7 +70195,7 @@ var { parseBuffer } = (() => {
);
}
};
- FeatureQuery.prototype.lookupFeature = function (query) {
+ FeatureQuery.prototype.lookupFeature = function(query) {
var contextParams = query.contextParams;
var currentIndex = contextParams.index;
var feature = this.getFeature({
@@ -70324,7 +70298,7 @@ var { parseBuffer } = (() => {
}
return substitutions.length ? substitutions : null;
};
- FeatureQuery.prototype.supports = function (query) {
+ FeatureQuery.prototype.supports = function(query) {
if (!query.script) {
return false;
}
@@ -70333,19 +70307,19 @@ var { parseBuffer } = (() => {
if (!query.tag) {
return supportedScript;
}
- var supportedFeature = this.features[query.script].some(function (feature) {
+ var supportedFeature = this.features[query.script].some(function(feature) {
return feature.tag === query.tag;
});
return supportedScript && supportedFeature;
};
- FeatureQuery.prototype.getLookupSubtables = function (lookupTable) {
+ FeatureQuery.prototype.getLookupSubtables = function(lookupTable) {
return lookupTable.subtables || null;
};
- FeatureQuery.prototype.getLookupByIndex = function (index2) {
+ FeatureQuery.prototype.getLookupByIndex = function(index2) {
var lookups = this.font.tables.gsub.lookups;
return lookups[index2] || null;
};
- FeatureQuery.prototype.getFeatureLookups = function (feature) {
+ FeatureQuery.prototype.getFeatureLookups = function(feature) {
return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this));
};
FeatureQuery.prototype.getFeature = function getFeature(query) {
@@ -70405,7 +70379,7 @@ var { parseBuffer } = (() => {
}
if (nextIsWhitespace) {
var arabicCharAhead = false;
- arabicCharAhead = contextParams.lookahead.some(function (c2) {
+ arabicCharAhead = contextParams.lookahead.some(function(c2) {
return isArabicChar(c2) || isTashkeelArabicChar(c2);
});
if (!arabicCharAhead) {
@@ -70428,7 +70402,7 @@ var { parseBuffer } = (() => {
tokens[index2].setState(action.tag, action.substitution);
}
function chainingSubstitutionFormat3$1(action, tokens, index2) {
- action.substitution.forEach(function (subst, offset) {
+ action.substitution.forEach(function(subst, offset) {
var token = tokens[index2 + offset];
token.setState(action.tag, subst);
});
@@ -70490,18 +70464,18 @@ var { parseBuffer } = (() => {
return;
}
var contextParams = new ContextParams(
- tokens.map(function (token) {
+ tokens.map(function(token) {
return token.getState("glyphIndex");
}),
0
);
var charContextParams = new ContextParams(
- tokens.map(function (token) {
+ tokens.map(function(token) {
return token.char;
}),
0
);
- tokens.forEach(function (token, index2) {
+ tokens.forEach(function(token, index2) {
if (isTashkeelArabicChar(token.char)) {
return;
}
@@ -70537,7 +70511,7 @@ var { parseBuffer } = (() => {
if (substitutions instanceof Error) {
return console.info(substitutions.message);
}
- substitutions.forEach(function (action, index22) {
+ substitutions.forEach(function(action, index22) {
if (action instanceof SubstitutionAction) {
applySubstitution(action, tokens, index22);
contextParams.context[index22] = action.substitution;
@@ -70546,7 +70520,7 @@ var { parseBuffer } = (() => {
});
}
function getContextParams(tokens, index2) {
- var context12 = tokens.map(function (token) {
+ var context12 = tokens.map(function(token) {
return token.activeState.value;
});
return new ContextParams(context12, index2 || 0);
@@ -70556,7 +70530,7 @@ var { parseBuffer } = (() => {
var script = "arab";
var tokens = this.tokenizer.getRangeTokens(range);
var contextParams = getContextParams(tokens);
- contextParams.context.forEach(function (glyphIndex, index2) {
+ contextParams.context.forEach(function(glyphIndex, index2) {
contextParams.setCurrentIndex(index2);
var substitutions = this$1$1.query.lookupFeature({
tag: "rlig",
@@ -70564,7 +70538,7 @@ var { parseBuffer } = (() => {
contextParams
});
if (substitutions.length) {
- substitutions.forEach(function (action) {
+ substitutions.forEach(function(action) {
return applySubstitution(action, tokens, index2);
});
contextParams = getContextParams(tokens);
@@ -70593,7 +70567,7 @@ var { parseBuffer } = (() => {
endCheck: latinWordEndCheck
};
function getContextParams$1(tokens, index2) {
- var context12 = tokens.map(function (token) {
+ var context12 = tokens.map(function(token) {
return token.activeState.value;
});
return new ContextParams(context12, index2 || 0);
@@ -70603,7 +70577,7 @@ var { parseBuffer } = (() => {
var script = "latn";
var tokens = this.tokenizer.getRangeTokens(range);
var contextParams = getContextParams$1(tokens);
- contextParams.context.forEach(function (glyphIndex, index2) {
+ contextParams.context.forEach(function(glyphIndex, index2) {
contextParams.setCurrentIndex(index2);
var substitutions = this$1$1.query.lookupFeature({
tag: "liga",
@@ -70611,7 +70585,7 @@ var { parseBuffer } = (() => {
contextParams
});
if (substitutions.length) {
- substitutions.forEach(function (action) {
+ substitutions.forEach(function(action) {
return applySubstitution(action, tokens, index2);
});
contextParams = getContextParams$1(tokens);
@@ -70623,7 +70597,7 @@ var { parseBuffer } = (() => {
this.tokenizer = new Tokenizer();
this.featuresTags = {};
}
- Bidi.prototype.setText = function (text) {
+ Bidi.prototype.setText = function(text) {
this.text = text;
};
Bidi.prototype.contextChecks = {
@@ -70644,14 +70618,14 @@ var { parseBuffer } = (() => {
function reverseArabicSentences() {
var this$1$1 = this;
var ranges = this.tokenizer.getContextRanges("arabicSentence");
- ranges.forEach(function (range) {
+ ranges.forEach(function(range) {
var rangeTokens = this$1$1.tokenizer.getRangeTokens(range);
this$1$1.tokenizer.replaceRange(range.startIndex, range.endOffset, rangeTokens.reverse());
});
}
- Bidi.prototype.registerFeatures = function (script, tags) {
+ Bidi.prototype.registerFeatures = function(script, tags) {
var this$1$1 = this;
- var supportedTags = tags.filter(function (tag) {
+ var supportedTags = tags.filter(function(tag) {
return this$1$1.query.supports({ script, tag });
});
if (!this.featuresTags.hasOwnProperty(script)) {
@@ -70660,7 +70634,7 @@ var { parseBuffer } = (() => {
this.featuresTags[script] = this.featuresTags[script].concat(supportedTags);
}
};
- Bidi.prototype.applyFeatures = function (font, features) {
+ Bidi.prototype.applyFeatures = function(font, features) {
if (!font) {
throw new Error("No valid font was provided to apply features");
}
@@ -70675,7 +70649,7 @@ var { parseBuffer } = (() => {
this.registerFeatures(feature.script, feature.tags);
}
};
- Bidi.prototype.registerModifier = function (modifierId, condition, modifier) {
+ Bidi.prototype.registerModifier = function(modifierId, condition, modifier) {
this.tokenizer.registerModifier(modifierId, condition, modifier);
};
function checkGlyphIndexStatus() {
@@ -70691,7 +70665,7 @@ var { parseBuffer } = (() => {
}
checkGlyphIndexStatus.call(this);
var ranges = this.tokenizer.getContextRanges("arabicWord");
- ranges.forEach(function (range) {
+ ranges.forEach(function(range) {
arabicPresentationForms.call(this$1$1, range);
});
}
@@ -70707,7 +70681,7 @@ var { parseBuffer } = (() => {
}
checkGlyphIndexStatus.call(this);
var ranges = this.tokenizer.getContextRanges("arabicWord");
- ranges.forEach(function (range) {
+ ranges.forEach(function(range) {
arabicRequiredLigatures.call(this$1$1, range);
});
}
@@ -70723,14 +70697,14 @@ var { parseBuffer } = (() => {
}
checkGlyphIndexStatus.call(this);
var ranges = this.tokenizer.getContextRanges("latinWord");
- ranges.forEach(function (range) {
+ ranges.forEach(function(range) {
latinLigature.call(this$1$1, range);
});
}
- Bidi.prototype.checkContextReady = function (contextId) {
+ Bidi.prototype.checkContextReady = function(contextId) {
return !!this.tokenizer.getContext(contextId);
};
- Bidi.prototype.applyFeaturesToContexts = function () {
+ Bidi.prototype.applyFeaturesToContexts = function() {
if (this.checkContextReady("arabicWord")) {
applyArabicPresentationForms.call(this);
applyArabicRequireLigatures.call(this);
@@ -70742,18 +70716,18 @@ var { parseBuffer } = (() => {
reverseArabicSentences.call(this);
}
};
- Bidi.prototype.processText = function (text) {
+ Bidi.prototype.processText = function(text) {
if (!this.text || this.text !== text) {
this.setText(text);
tokenizeText.call(this);
this.applyFeaturesToContexts();
}
};
- Bidi.prototype.getBidiText = function (text) {
+ Bidi.prototype.getBidiText = function(text) {
this.processText(text);
return this.tokenizer.getText();
};
- Bidi.prototype.getTextGlyphs = function (text) {
+ Bidi.prototype.getTextGlyphs = function(text) {
this.processText(text);
var indexes = [];
for (var i4 = 0; i4 < this.tokenizer.tokens.length; i4++) {
@@ -70816,7 +70790,7 @@ var { parseBuffer } = (() => {
this._push = null;
this._hmtxTableData = {};
Object.defineProperty(this, "hinting", {
- get: function () {
+ get: function() {
if (this._hinting) {
return this._hinting;
}
@@ -70826,13 +70800,13 @@ var { parseBuffer } = (() => {
}
});
}
- Font2.prototype.hasChar = function (c2) {
+ Font2.prototype.hasChar = function(c2) {
return this.encoding.charToGlyphIndex(c2) !== null;
};
- Font2.prototype.charToGlyphIndex = function (s2) {
+ Font2.prototype.charToGlyphIndex = function(s2) {
return this.encoding.charToGlyphIndex(s2);
};
- Font2.prototype.charToGlyph = function (c2) {
+ Font2.prototype.charToGlyph = function(c2) {
var glyphIndex = this.charToGlyphIndex(c2);
var glyph = this.glyphs.get(glyphIndex);
if (!glyph) {
@@ -70840,12 +70814,12 @@ var { parseBuffer } = (() => {
}
return glyph;
};
- Font2.prototype.updateFeatures = function (options) {
- return this.defaultRenderOptions.features.map(function (feature) {
+ Font2.prototype.updateFeatures = function(options) {
+ return this.defaultRenderOptions.features.map(function(feature) {
if (feature.script === "latn") {
return {
script: "latn",
- tags: feature.tags.filter(function (tag) {
+ tags: feature.tags.filter(function(tag) {
return options[tag];
})
};
@@ -70854,10 +70828,10 @@ var { parseBuffer } = (() => {
}
});
};
- Font2.prototype.stringToGlyphs = function (s2, options) {
+ Font2.prototype.stringToGlyphs = function(s2, options) {
var this$1$1 = this;
var bidi = new Bidi();
- var charToGlyphIndexMod = function (token) {
+ var charToGlyphIndexMod = function(token) {
return this$1$1.charToGlyphIndex(token.char);
};
bidi.registerModifier("glyphIndex", null, charToGlyphIndexMod);
@@ -70872,10 +70846,10 @@ var { parseBuffer } = (() => {
}
return glyphs;
};
- Font2.prototype.nameToGlyphIndex = function (name) {
+ Font2.prototype.nameToGlyphIndex = function(name) {
return this.glyphNames.nameToGlyphIndex(name);
};
- Font2.prototype.nameToGlyph = function (name) {
+ Font2.prototype.nameToGlyph = function(name) {
var glyphIndex = this.nameToGlyphIndex(name);
var glyph = this.glyphs.get(glyphIndex);
if (!glyph) {
@@ -70883,13 +70857,13 @@ var { parseBuffer } = (() => {
}
return glyph;
};
- Font2.prototype.glyphIndexToName = function (gid) {
+ Font2.prototype.glyphIndexToName = function(gid) {
if (!this.glyphNames.glyphIndexToName) {
return "";
}
return this.glyphNames.glyphIndexToName(gid);
};
- Font2.prototype.getKerningValue = function (leftGlyph, rightGlyph) {
+ Font2.prototype.getKerningValue = function(leftGlyph, rightGlyph) {
leftGlyph = leftGlyph.index || leftGlyph;
rightGlyph = rightGlyph.index || rightGlyph;
var gposKerning = this.position.defaultKerningTables;
@@ -70909,7 +70883,7 @@ var { parseBuffer } = (() => {
{ script: "latn", tags: ["liga", "rlig"] }
]
};
- Font2.prototype.forEachGlyph = function (text, x, y, fontSize, options, callback) {
+ Font2.prototype.forEachGlyph = function(text, x, y, fontSize, options, callback) {
x = x !== void 0 ? x : 0;
y = y !== void 0 ? y : 0;
fontSize = fontSize !== void 0 ? fontSize : 72;
@@ -70939,46 +70913,46 @@ var { parseBuffer } = (() => {
}
return x;
};
- Font2.prototype.getPath = function (text, x, y, fontSize, options) {
+ Font2.prototype.getPath = function(text, x, y, fontSize, options) {
var fullPath = new Path2();
- this.forEachGlyph(text, x, y, fontSize, options, function (glyph, gX, gY, gFontSize) {
+ this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {
var glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);
fullPath.extend(glyphPath);
});
return fullPath;
};
- Font2.prototype.getPaths = function (text, x, y, fontSize, options) {
+ Font2.prototype.getPaths = function(text, x, y, fontSize, options) {
var glyphPaths = [];
- this.forEachGlyph(text, x, y, fontSize, options, function (glyph, gX, gY, gFontSize) {
+ this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {
var glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);
glyphPaths.push(glyphPath);
});
return glyphPaths;
};
- Font2.prototype.getAdvanceWidth = function (text, fontSize, options) {
- return this.forEachGlyph(text, 0, 0, fontSize, options, function () {
+ Font2.prototype.getAdvanceWidth = function(text, fontSize, options) {
+ return this.forEachGlyph(text, 0, 0, fontSize, options, function() {
});
};
- Font2.prototype.draw = function (ctx, text, x, y, fontSize, options) {
+ Font2.prototype.draw = function(ctx, text, x, y, fontSize, options) {
this.getPath(text, x, y, fontSize, options).draw(ctx);
};
- Font2.prototype.drawPoints = function (ctx, text, x, y, fontSize, options) {
- this.forEachGlyph(text, x, y, fontSize, options, function (glyph, gX, gY, gFontSize) {
+ Font2.prototype.drawPoints = function(ctx, text, x, y, fontSize, options) {
+ this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {
glyph.drawPoints(ctx, gX, gY, gFontSize);
});
};
- Font2.prototype.drawMetrics = function (ctx, text, x, y, fontSize, options) {
- this.forEachGlyph(text, x, y, fontSize, options, function (glyph, gX, gY, gFontSize) {
+ Font2.prototype.drawMetrics = function(ctx, text, x, y, fontSize, options) {
+ this.forEachGlyph(text, x, y, fontSize, options, function(glyph, gX, gY, gFontSize) {
glyph.drawMetrics(ctx, gX, gY, gFontSize);
});
};
- Font2.prototype.getEnglishName = function (name) {
+ Font2.prototype.getEnglishName = function(name) {
var translations = this.names[name];
if (translations) {
return translations.en;
}
};
- Font2.prototype.validate = function () {
+ Font2.prototype.validate = function() {
var _this = this;
function assert(predicate) {
}
@@ -70993,14 +70967,14 @@ var { parseBuffer } = (() => {
assertNamePresent("version");
assert(this.unitsPerEm > 0);
};
- Font2.prototype.toTables = function () {
+ Font2.prototype.toTables = function() {
return sfnt.fontToTable(this);
};
- Font2.prototype.toBuffer = function () {
+ Font2.prototype.toBuffer = function() {
console.warn("Font.toBuffer is deprecated. Use Font.toArrayBuffer instead.");
return this.toArrayBuffer();
};
- Font2.prototype.toArrayBuffer = function () {
+ Font2.prototype.toArrayBuffer = function() {
var sfntTable = this.toTables();
var bytes = sfntTable.encode();
var buffer2 = new ArrayBuffer(bytes.length);
@@ -71162,13 +71136,13 @@ var { parseBuffer } = (() => {
return { axes, instances };
}
var fvar = { make: makeFvarTable, parse: parseFvarTable };
- var attachList = function () {
+ var attachList = function() {
return {
coverage: this.parsePointer(Parser2.coverage),
attachPoints: this.parseList(Parser2.pointer(Parser2.uShortList))
};
};
- var caretValue = function () {
+ var caretValue = function() {
var format = this.parseUShort();
check.argument(format === 1 || format === 2 || format === 3, "Unsupported CaretValue table version.");
if (format === 1) {
@@ -71179,16 +71153,16 @@ var { parseBuffer } = (() => {
return { coordinate: this.parseShort() };
}
};
- var ligGlyph = function () {
+ var ligGlyph = function() {
return this.parseList(Parser2.pointer(caretValue));
};
- var ligCaretList = function () {
+ var ligCaretList = function() {
return {
coverage: this.parsePointer(Parser2.coverage),
ligGlyphs: this.parseList(Parser2.pointer(ligGlyph))
};
};
- var markGlyphSets = function () {
+ var markGlyphSets = function() {
this.parseUShort();
return this.parseList(Parser2.pointer(Parser2.coverage));
};
@@ -71250,7 +71224,7 @@ var { parseBuffer } = (() => {
valueFormat2,
pairSets: this.parseList(
Parser2.pointer(
- Parser2.list(function () {
+ Parser2.list(function() {
return {
// pairValueRecord
secondGlyph: this.parseUShort(),
@@ -71278,7 +71252,7 @@ var { parseBuffer } = (() => {
class2Count,
classRecords: this.parseList(
class1Count,
- Parser2.list(class2Count, function () {
+ Parser2.list(class2Count, function() {
return {
value1: this.parseValueRecord(valueFormat1),
value2: this.parseValueRecord(valueFormat2)
@@ -71650,7 +71624,7 @@ var RGBELoader = class extends DataTextureLoader {
}
// adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html
parse(buffer2) {
- const rgbe_read_error = 1, rgbe_write_error = 2, rgbe_format_error = 3, rgbe_memory_error = 4, rgbe_error = function (rgbe_error_code, msg) {
+ const rgbe_read_error = 1, rgbe_write_error = 2, rgbe_format_error = 3, rgbe_memory_error = 4, rgbe_error = function(rgbe_error_code, msg) {
switch (rgbe_error_code) {
case rgbe_read_error:
throw new Error("THREE.RGBELoader: Read Error: " + (msg || ""));
@@ -71662,7 +71636,7 @@ var RGBELoader = class extends DataTextureLoader {
case rgbe_memory_error:
throw new Error("THREE.RGBELoader: Memory Error: " + (msg || ""));
}
- }, RGBE_VALID_PROGRAMTYPE = 1, RGBE_VALID_FORMAT = 2, RGBE_VALID_DIMENSIONS = 4, NEWLINE = "\n", fgets = function (buffer22, lineLimit, consume) {
+ }, RGBE_VALID_PROGRAMTYPE = 1, RGBE_VALID_FORMAT = 2, RGBE_VALID_DIMENSIONS = 4, NEWLINE = "\n", fgets = function(buffer22, lineLimit, consume) {
const chunkSize = 128;
lineLimit = !lineLimit ? 1024 : lineLimit;
let p2 = buffer22.pos, i4 = -1, len = 0, s2 = "", chunk = String.fromCharCode.apply(null, new Uint16Array(buffer22.subarray(p2, p2 + chunkSize)));
@@ -71678,7 +71652,7 @@ var RGBELoader = class extends DataTextureLoader {
return s2 + chunk.slice(0, i4);
}
return false;
- }, RGBE_ReadHeader = function (buffer22) {
+ }, RGBE_ReadHeader = function(buffer22) {
const magic_token_re = /^#\?(\S+)/, gamma_re = /^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/, exposure_re = /^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/, format_re = /^\s*FORMAT=(\S+)\s*$/, dimensions_re = /^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/, header = {
valid: 0,
string: "",
@@ -71734,7 +71708,7 @@ var RGBELoader = class extends DataTextureLoader {
rgbe_error(rgbe_format_error, "missing image size specifier");
}
return header;
- }, RGBE_ReadPixels_RLE = function (buffer22, w2, h2) {
+ }, RGBE_ReadPixels_RLE = function(buffer22, w2, h2) {
const scanline_width = w2;
if (
// run length encoding is not allowed so read flat
@@ -71802,7 +71776,7 @@ var RGBELoader = class extends DataTextureLoader {
}
return data_rgba;
};
- const RGBEByteToRGBFloat = function (sourceArray, sourceOffset, destArray, destOffset) {
+ const RGBEByteToRGBFloat = function(sourceArray, sourceOffset, destArray, destOffset) {
const e2 = sourceArray[sourceOffset + 3];
const scale5 = Math.pow(2, e2 - 128) / 255;
destArray[destOffset + 0] = sourceArray[sourceOffset + 0] * scale5;
@@ -71810,7 +71784,7 @@ var RGBELoader = class extends DataTextureLoader {
destArray[destOffset + 2] = sourceArray[sourceOffset + 2] * scale5;
destArray[destOffset + 3] = 1;
};
- const RGBEByteToRGBHalf = function (sourceArray, sourceOffset, destArray, destOffset) {
+ const RGBEByteToRGBHalf = function(sourceArray, sourceOffset, destArray, destOffset) {
const e2 = sourceArray[sourceOffset + 3];
const scale5 = Math.pow(2, e2 - 128) / 255;
destArray[destOffset + 0] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 0] * scale5, 65504));
@@ -72887,7 +72861,7 @@ var EXRLoader = class extends DataTextureLoader {
offset2.value = offset2.value + INT8_SIZE;
return Uint8;
}
- const parseInt64 = function (dataView, offset2) {
+ const parseInt64 = function(dataView, offset2) {
let int;
if ("getBigInt64" in DataView.prototype) {
int = Number(dataView.getBigInt64(offset2.value, true));
@@ -73287,7 +73261,7 @@ var BasisTextureLoader = (() => {
const cachedTask = _taskCache2.get(buffer2);
return cachedTask.promise.then(onLoad).catch(onError);
}
- this._createTexture([buffer2]).then(function (_texture) {
+ this._createTexture([buffer2]).then(function(_texture) {
texture.copy(_texture);
texture.needsUpdate = true;
if (onLoad)
@@ -73390,7 +73364,7 @@ var BasisTextureLoader = (() => {
config: this.workerConfig,
transcoderBinary: this.transcoderBinary
});
- worker2.onmessage = function (e2) {
+ worker2.onmessage = function(e2) {
const message = e2.data;
switch (message.type) {
case "transcode":
@@ -73405,7 +73379,7 @@ var BasisTextureLoader = (() => {
};
this.workerPool.push(worker2);
} else {
- this.workerPool.sort(function (a6, b5) {
+ this.workerPool.sort(function(a6, b5) {
return a6._taskLoad > b5._taskLoad ? -1 : 1;
});
}
@@ -73458,14 +73432,14 @@ var BasisTextureLoader = (() => {
RGB_PVRTC_4BPPV1_Format,
RGB_S3TC_DXT1_Format
});
- __publicField32(BasisTextureLoader2, "BasisWorker", function () {
+ __publicField32(BasisTextureLoader2, "BasisWorker", function() {
let config;
let transcoderPending;
let BasisModule;
const EngineFormat = _EngineFormat;
const TranscoderFormat = _TranscoderFormat;
const BasisFormat = _BasisFormat;
- onmessage = function (e2) {
+ onmessage = function(e2) {
const message = e2.data;
switch (message.type) {
case "init":
@@ -73668,10 +73642,10 @@ var BasisTextureLoader = (() => {
needsPowerOfTwo: true
}
];
- const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function (a6, b5) {
+ const ETC1S_OPTIONS = FORMAT_OPTIONS.sort(function(a6, b5) {
return a6.priorityETC1S - b5.priorityETC1S;
});
- const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function (a6, b5) {
+ const UASTC_OPTIONS = FORMAT_OPTIONS.sort(function(a6, b5) {
return a6.priorityUASTC - b5.priorityUASTC;
});
function getTranscoderFormat(basisFormat, width, height, hasAlpha) {
@@ -73748,7 +73722,7 @@ var SVGLoader = /* @__PURE__ */ (() => {
loader2.setWithCredentials(scope.withCredentials);
loader2.load(
url,
- function (text) {
+ function(text) {
try {
onLoad(scope.parse(text));
} catch (e2) {
@@ -75730,7 +75704,7 @@ var DRACOLoader = class extends Loader {
worker2._taskCosts = {};
worker2._taskLoad = 0;
worker2.postMessage({ type: "init", decoderConfig: this.decoderConfig });
- worker2.onmessage = function (e2) {
+ worker2.onmessage = function(e2) {
const message = e2.data;
switch (message.type) {
case "decode":
@@ -75745,7 +75719,7 @@ var DRACOLoader = class extends Loader {
};
this.workerPool.push(worker2);
} else {
- this.workerPool.sort(function (a6, b5) {
+ this.workerPool.sort(function(a6, b5) {
return a6._taskLoad > b5._taskLoad ? -1 : 1;
});
}
@@ -75777,13 +75751,13 @@ var DRACOLoader = class extends Loader {
function DRACOWorker() {
let decoderConfig;
let decoderPending;
- onmessage = function (e2) {
+ onmessage = function(e2) {
const message = e2.data;
switch (message.type) {
case "init":
decoderConfig = message.decoderConfig;
- decoderPending = new Promise(function (resolve) {
- decoderConfig.onModuleLoaded = function (draco) {
+ decoderPending = new Promise(function(resolve) {
+ decoderConfig.onModuleLoaded = function(draco) {
resolve({ draco });
};
DracoDecoderModule(decoderConfig);
@@ -76518,7 +76492,7 @@ var LineMaterial = class extends ShaderMaterial {
// required for clipping support
});
this.isLineMaterial = true;
- this.onBeforeCompile = function () {
+ this.onBeforeCompile = function() {
if (this.transparent) {
this.defines.USE_LINE_COLOR_ALPHA = "1";
} else {
@@ -76528,19 +76502,19 @@ var LineMaterial = class extends ShaderMaterial {
Object.defineProperties(this, {
color: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.diffuse.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.diffuse.value = value;
}
},
worldUnits: {
enumerable: true,
- get: function () {
+ get: function() {
return "WORLD_UNITS" in this.defines;
},
- set: function (value) {
+ set: function(value) {
if (value === true) {
this.defines.WORLD_UNITS = "";
} else {
@@ -76550,16 +76524,16 @@ var LineMaterial = class extends ShaderMaterial {
},
linewidth: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.linewidth.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.linewidth.value = value;
}
},
dashed: {
enumerable: true,
- get: function () {
+ get: function() {
return Boolean("USE_DASH" in this.defines);
},
set(value) {
@@ -76575,64 +76549,64 @@ var LineMaterial = class extends ShaderMaterial {
},
dashScale: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.dashScale.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.dashScale.value = value;
}
},
dashSize: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.dashSize.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.dashSize.value = value;
}
},
dashOffset: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.dashOffset.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.dashOffset.value = value;
}
},
gapSize: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.gapSize.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.gapSize.value = value;
}
},
opacity: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.opacity.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.opacity.value = value;
}
},
resolution: {
enumerable: true,
- get: function () {
+ get: function() {
return this.uniforms.resolution.value;
},
- set: function (value) {
+ set: function(value) {
this.uniforms.resolution.value.copy(value);
}
},
alphaToCoverage: {
enumerable: true,
- get: function () {
+ get: function() {
return Boolean("USE_ALPHA_TO_COVERAGE" in this.defines);
},
- set: function (value) {
+ set: function(value) {
if (Boolean(value) !== Boolean("USE_ALPHA_TO_COVERAGE" in this.defines)) {
this.needsUpdate = true;
}
@@ -77670,7 +77644,7 @@ function workerBootstrap() {
var dependencies = ref.dependencies;
if (dependencies === void 0) dependencies = [];
var init3 = ref.init;
- if (init3 === void 0) init3 = function () {
+ if (init3 === void 0) init3 = function() {
};
var getTransferables = ref.getTransferables;
if (getTransferables === void 0) getTransferables = null;
@@ -77678,9 +77652,9 @@ function workerBootstrap() {
return;
}
try {
- dependencies = dependencies.map(function (dep) {
+ dependencies = dependencies.map(function(dep) {
if (dep && dep.isWorkerModule) {
- registerModule(dep, function (depResult) {
+ registerModule(dep, function(depResult) {
if (depResult instanceof Error) {
throw depResult;
}
@@ -77722,7 +77696,7 @@ function workerBootstrap() {
try {
var result = (ref$1 = modules[id]).value.apply(ref$1, args);
if (result && typeof result.then === "function") {
- result.then(handleResult, function (rej) {
+ result.then(handleResult, function(rej) {
return callback(rej instanceof Error ? rej : new Error("" + rej));
});
} else {
@@ -77746,7 +77720,7 @@ function workerBootstrap() {
}
function rehydrate(name, str) {
var result = void 0;
- self.troikaDefine = function (r2) {
+ self.troikaDefine = function(r2) {
return result = r2;
};
var url = URL.createObjectURL(
@@ -77764,14 +77738,14 @@ function workerBootstrap() {
delete self.troikaDefine;
return result;
}
- self.addEventListener("message", function (e2) {
+ self.addEventListener("message", function(e2) {
var ref = e2.data;
var messageId = ref.messageId;
var action = ref.action;
var data = ref.data;
try {
if (action === "registerModule") {
- registerModule(data, function (result) {
+ registerModule(data, function(result) {
if (result instanceof Error) {
postMessage({
messageId,
@@ -77788,7 +77762,7 @@ function workerBootstrap() {
});
}
if (action === "callModule") {
- callModule(data, function (result, transferables) {
+ callModule(data, function(result, transferables) {
if (result instanceof Error) {
postMessage({
messageId,
@@ -77814,10 +77788,10 @@ function workerBootstrap() {
});
}
function defineMainThreadModule(options) {
- var moduleFunc = function () {
+ var moduleFunc = function() {
var args = [], len = arguments.length;
while (len--) args[len] = arguments[len];
- return moduleFunc._getInitResult().then(function (initResult) {
+ return moduleFunc._getInitResult().then(function(initResult) {
if (typeof initResult === "function") {
return initResult.apply(void 0, args);
} else {
@@ -77825,10 +77799,10 @@ function defineMainThreadModule(options) {
}
});
};
- moduleFunc._getInitResult = function () {
+ moduleFunc._getInitResult = function() {
var dependencies = options.dependencies;
var init3 = options.init;
- dependencies = Array.isArray(dependencies) ? dependencies.map(function (dep) {
+ dependencies = Array.isArray(dependencies) ? dependencies.map(function(dep) {
if (dep) {
dep = dep.onMainThread || dep;
if (dep._getInitResult) {
@@ -77837,17 +77811,17 @@ function defineMainThreadModule(options) {
}
return dep;
}) : [];
- var initPromise = Promise.all(dependencies).then(function (deps) {
+ var initPromise = Promise.all(dependencies).then(function(deps) {
return init3.apply(null, deps);
});
- moduleFunc._getInitResult = function () {
+ moduleFunc._getInitResult = function() {
return initPromise;
};
return initPromise;
};
return moduleFunc;
}
-var supportsWorkers = function () {
+var supportsWorkers = function() {
var supported = false;
if (typeof window !== "undefined" && typeof window.document !== "undefined") {
try {
@@ -77857,7 +77831,7 @@ var supportsWorkers = function () {
worker.terminate();
supported = true;
} catch (err) {
- if (typeof process !== "undefined" && false);
+ if (typeof process !== "undefined" && false) ;
else {
console.log(
"Troika createWorkerModule: web workers not allowed; falling back to main thread execution. Cause: [" + err.message + "]"
@@ -77865,7 +77839,7 @@ var supportsWorkers = function () {
}
}
}
- supportsWorkers = function () {
+ supportsWorkers = function() {
return supported;
};
return supported;
@@ -77891,7 +77865,7 @@ function defineWorkerModule(options) {
var id = "workerModule" + ++_workerModuleId;
var name = options.name || id;
var registrationPromise = null;
- dependencies = dependencies && dependencies.map(function (dep) {
+ dependencies = dependencies && dependencies.map(function(dep) {
if (typeof dep === "function" && !dep.workerModuleData) {
_allowInitAsString = true;
dep = defineWorkerModule({
@@ -77914,13 +77888,13 @@ function defineWorkerModule(options) {
}
if (!registrationPromise) {
registrationPromise = callWorker(workerId, "registerModule", moduleFunc.workerModuleData);
- var unregister = function () {
+ var unregister = function() {
registrationPromise = null;
registeredModules[workerId].delete(unregister);
};
(registeredModules[workerId] || (registeredModules[workerId] = /* @__PURE__ */ new Set())).add(unregister);
}
- return registrationPromise.then(function (ref) {
+ return registrationPromise.then(function(ref) {
var isCallable = ref.isCallable;
if (isCallable) {
return callWorker(workerId, "callModule", { id, args });
@@ -77942,7 +77916,7 @@ function defineWorkerModule(options) {
}
function terminateWorker(workerId) {
if (registeredModules[workerId]) {
- registeredModules[workerId].forEach(function (unregister) {
+ registeredModules[workerId].forEach(function(unregister) {
unregister();
});
}
@@ -77970,7 +77944,7 @@ function getWorker(workerId) {
)
)
);
- worker.onmessage = function (e2) {
+ worker.onmessage = function(e2) {
var response = e2.data;
var msgId = response.messageId;
var callback = openRequests[msgId];
@@ -77984,9 +77958,9 @@ function getWorker(workerId) {
return worker;
}
function callWorker(workerId, action, data) {
- return new Promise(function (resolve, reject) {
+ return new Promise(function(resolve, reject) {
var messageId = ++_messageId;
- openRequests[messageId] = function (response) {
+ openRequests[messageId] = function(response) {
if (response.success) {
resolve(response.result);
} else {
@@ -78003,7 +77977,7 @@ function callWorker(workerId, action, data) {
// node_modules/webgl-sdf-generator/dist/webgl-sdf-generator.mjs
function SDFGenerator() {
- var exports2 = (function (exports3) {
+ var exports2 = (function(exports3) {
function pointOnQuadraticBezier(x0, y0, x1, y1, x2, y2, t3, pointOut) {
var t22 = 1 - t3;
pointOut.x = t22 * t22 * x0 + 2 * t22 * t3 * x1 + t3 * t3 * x2;
@@ -78018,7 +77992,7 @@ function SDFGenerator() {
var segmentRE = /([MLQCZ])([^MLQCZ]*)/g;
var match, firstX, firstY, prevX, prevY;
while (match = segmentRE.exec(pathString)) {
- var args = match[2].replace(/^\s*|\s*$/g, "").split(/[,\s]+/).map(function (v5) {
+ var args = match[2].replace(/^\s*|\s*$/g, "").split(/[,\s]+/).map(function(v5) {
return parseFloat(v5);
});
switch (match[1]) {
@@ -78050,7 +78024,7 @@ function SDFGenerator() {
function pathToLineSegments(pathString, segmentCallback, curvePoints) {
if (curvePoints === void 0) curvePoints = 16;
var tempPoint = { x: 0, y: 0 };
- forEachPathCommand(pathString, function (command, startX, startY, endX, endY, ctrl1X, ctrl1Y, ctrl2X, ctrl2Y) {
+ forEachPathCommand(pathString, function(command, startX, startY, endX, endY, ctrl1X, ctrl1Y, ctrl2X, ctrl2Y) {
switch (command) {
case "L":
segmentCallback(startX, startY, endX, endY);
@@ -78113,7 +78087,7 @@ function SDFGenerator() {
var gl = glOrCanvas.getContext ? glOrCanvas.getContext("webgl", glContextParams) : glOrCanvas;
var wrapper = cache.get(gl);
if (!wrapper) {
- let getExtension2 = function (name) {
+ let getExtension2 = function(name) {
var ext = extensions2[name];
if (!ext) {
ext = extensions2[name] = gl.getExtension(name);
@@ -78122,12 +78096,12 @@ function SDFGenerator() {
}
}
return ext;
- }, compileShader = function (src, type) {
+ }, compileShader = function(src, type) {
var shader = gl.createShader(type);
gl.shaderSource(shader, src);
gl.compileShader(shader);
return shader;
- }, withProgram = function (name, vert, frag, func) {
+ }, withProgram = function(name, vert, frag, func) {
if (!programs[name]) {
var attributes = {};
var uniforms = {};
@@ -78174,7 +78148,7 @@ function SDFGenerator() {
};
}
programs[name].transaction(func);
- }, withTexture = function (name, func) {
+ }, withTexture = function(name, func) {
textureUnit++;
try {
gl.activeTexture(gl.TEXTURE0 + textureUnit);
@@ -78190,7 +78164,7 @@ function SDFGenerator() {
} finally {
textureUnit--;
}
- }, withTextureFramebuffer = function (texture, textureUnit2, func) {
+ }, withTextureFramebuffer = function(texture, textureUnit2, func) {
var framebuffer = gl.createFramebuffer();
framebufferStack.push(framebuffer);
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
@@ -78203,7 +78177,7 @@ function SDFGenerator() {
gl.deleteFramebuffer(framebuffer);
gl.bindFramebuffer(gl.FRAMEBUFFER, framebufferStack[--framebufferStack.length - 1] || null);
}
- }, handleContextLoss = function () {
+ }, handleContextLoss = function() {
extensions2 = {};
programs = {};
textures = {};
@@ -78216,7 +78190,7 @@ function SDFGenerator() {
var textures = {};
var textureUnit = -1;
var framebufferStack = [];
- gl.canvas.addEventListener("webglcontextlost", function (e2) {
+ gl.canvas.addEventListener("webglcontextlost", function(e2) {
handleContextLoss();
e2.preventDefault();
}, false);
@@ -78235,13 +78209,13 @@ function SDFGenerator() {
function renderImageData(glOrCanvas, imageData, x, y, width, height, channels, framebuffer) {
if (channels === void 0) channels = 15;
if (framebuffer === void 0) framebuffer = null;
- withWebGLContext(glOrCanvas, function (ref) {
+ withWebGLContext(glOrCanvas, function(ref) {
var gl = ref.gl;
var withProgram = ref.withProgram;
var withTexture = ref.withTexture;
- withTexture("copy", function (tex, texUnit) {
+ withTexture("copy", function(tex, texUnit) {
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, imageData);
- withProgram("copy", viewportQuadVertex, copyTexFragment, function (ref2) {
+ withProgram("copy", viewportQuadVertex, copyTexFragment, function(ref2) {
var setUniform = ref2.setUniform;
var setAttribute = ref2.setAttribute;
setAttribute("aUV", 2, gl.STATIC_DRAW, 0, new Float32Array([0, 0, 2, 0, 0, 2]));
@@ -78259,7 +78233,7 @@ function SDFGenerator() {
function resizeWebGLCanvasWithoutClearing2(canvas, newWidth, newHeight) {
var width = canvas.width;
var height = canvas.height;
- withWebGLContext(canvas, function (ref) {
+ withWebGLContext(canvas, function(ref) {
var gl = ref.gl;
var data = new Uint8Array(width * height * 4);
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, data);
@@ -78280,7 +78254,7 @@ function SDFGenerator() {
var viewBoxWidth = viewBox[2] - viewBox[0];
var viewBoxHeight = viewBox[3] - viewBox[1];
var segments = [];
- pathToLineSegments(path, function (x1, y1, x2, y2) {
+ pathToLineSegments(path, function(x1, y1, x2, y2) {
segments.push({
x1,
y1,
@@ -78292,7 +78266,7 @@ function SDFGenerator() {
maxY: Math.max(y1, y2)
});
});
- segments.sort(function (a6, b5) {
+ segments.sort(function(a6, b5) {
return a6.maxX - b5.maxX;
});
for (var sdfX = 0; sdfX < sdfWidth; sdfX++) {
@@ -78313,7 +78287,7 @@ function SDFGenerator() {
function findNearestSignedDistance(x, y) {
var closestDistSq = Infinity;
var closestDist = Infinity;
- for (var i4 = segments.length; i4--;) {
+ for (var i4 = segments.length; i4--; ) {
var seg = segments[i4];
if (seg.maxX + closestDist <= x) {
break;
@@ -78333,7 +78307,7 @@ function SDFGenerator() {
}
function isPointInPoly(x, y) {
var winding = 0;
- for (var i4 = segments.length; i4--;) {
+ for (var i4 = segments.length; i4--; ) {
var seg = segments[i4];
if (seg.maxX <= x) {
break;
@@ -78408,13 +78382,13 @@ function SDFGenerator() {
}
validateSupport(glOrCanvas);
var rgbaData = new Uint8Array(sdfWidth * sdfHeight * 4);
- withWebGLContext(glOrCanvas, function (ref) {
+ withWebGLContext(glOrCanvas, function(ref) {
var gl = ref.gl;
var withTexture = ref.withTexture;
var withTextureFramebuffer = ref.withTextureFramebuffer;
- withTexture("readable", function (texture, textureUnit) {
+ withTexture("readable", function(texture, textureUnit) {
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, sdfWidth, sdfHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
- withTextureFramebuffer(texture, textureUnit, function (framebuffer) {
+ withTextureFramebuffer(texture, textureUnit, function(framebuffer) {
generateIntoFramebuffer(
sdfWidth,
sdfHeight,
@@ -78453,11 +78427,11 @@ function SDFGenerator() {
if (channel === void 0) channel = 0;
validateSupport(glOrCanvas);
var lineSegmentCoords = [];
- pathToLineSegments(path, function (x1, y1, x2, y2) {
+ pathToLineSegments(path, function(x1, y1, x2, y2) {
lineSegmentCoords.push(x1, y1, x2, y2);
});
lineSegmentCoords = new Float32Array(lineSegmentCoords);
- withWebGLContext(glOrCanvas, function (ref) {
+ withWebGLContext(glOrCanvas, function(ref) {
var gl = ref.gl;
var isWebGL2 = ref.isWebGL2;
var getExtension2 = ref.getExtension;
@@ -78465,7 +78439,7 @@ function SDFGenerator() {
var withTexture = ref.withTexture;
var withTextureFramebuffer = ref.withTextureFramebuffer;
var handleContextLoss = ref.handleContextLoss;
- withTexture("rawDistances", function (intermediateTexture, intermediateTextureUnit) {
+ withTexture("rawDistances", function(intermediateTexture, intermediateTextureUnit) {
if (sdfWidth !== intermediateTexture._lastWidth || sdfHeight !== intermediateTexture._lastHeight) {
gl.texImage2D(
gl.TEXTURE_2D,
@@ -78479,7 +78453,7 @@ function SDFGenerator() {
null
);
}
- withProgram("main", mainVertex, mainFragment, function (ref2) {
+ withProgram("main", mainVertex, mainFragment, function(ref2) {
var setAttribute = ref2.setAttribute;
var setUniform = ref2.setUniform;
var instancingExtension = !isWebGL2 && getExtension2("ANGLE_instanced_arrays");
@@ -78489,7 +78463,7 @@ function SDFGenerator() {
setUniform.apply(void 0, ["4f", "uGlyphBounds"].concat(viewBox));
setUniform("1f", "uMaxDistance", maxDistance);
setUniform("1f", "uExponent", sdfExponent);
- withTextureFramebuffer(intermediateTexture, intermediateTextureUnit, function (framebuffer2) {
+ withTextureFramebuffer(intermediateTexture, intermediateTextureUnit, function(framebuffer2) {
gl.enable(gl.BLEND);
gl.colorMask(true, true, true, true);
gl.viewport(0, 0, sdfWidth, sdfHeight);
@@ -78504,7 +78478,7 @@ function SDFGenerator() {
}
});
});
- withProgram("post", viewportQuadVertex, postFragment, function (program) {
+ withProgram("post", viewportQuadVertex, postFragment, function(program) {
program.setAttribute("aUV", 2, gl.STATIC_DRAW, 0, viewportUVs);
program.setUniform("1i", "tex", intermediateTextureUnit);
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
@@ -78555,7 +78529,7 @@ function SDFGenerator() {
1,
glOrCanvas
);
- supported = testResult && expectedResult.length === testResult.length && testResult.every(function (val, i4) {
+ supported = testResult && expectedResult.length === testResult.length && testResult.every(function(val, i4) {
return val === expectedResult[i4];
});
if (!supported) {
@@ -78619,7 +78593,7 @@ function SDFGenerator() {
// node_modules/bidi-js/dist/bidi.mjs
function bidiFactory() {
- var bidi = (function (exports2) {
+ var bidi = (function(exports2) {
var DATA = {
"R": "13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73",
"EN": "1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9",
@@ -78648,7 +78622,7 @@ function bidiFactory() {
var TYPES_TO_NAMES = {};
TYPES.L = 1;
TYPES_TO_NAMES[1] = "L";
- Object.keys(DATA).forEach(function (type, i4) {
+ Object.keys(DATA).forEach(function(type, i4) {
TYPES[type] = 1 << i4 + 1;
TYPES_TO_NAMES[TYPES[type]] = type;
});
@@ -78662,10 +78636,10 @@ function bidiFactory() {
function parseData() {
if (!map2) {
map2 = /* @__PURE__ */ new Map();
- var loop = function (type2) {
+ var loop = function(type2) {
if (DATA.hasOwnProperty(type2)) {
var lastCode = 0;
- DATA[type2].split(",").forEach(function (range) {
+ DATA[type2].split(",").forEach(function(range) {
var ref = range.split("+");
var skip = ref[0];
var step = ref[1];
@@ -78700,7 +78674,7 @@ function bidiFactory() {
var prevPair;
encodedString.split(",").forEach(function visit(entry) {
if (entry.indexOf("+") !== -1) {
- for (var i4 = +entry; i4--;) {
+ for (var i4 = +entry; i4--; ) {
visit(prevPair);
}
} else {
@@ -78799,10 +78773,10 @@ function bidiFactory() {
}
}
var FORMATTING_TYPES = TYPE_RLE | TYPE_LRE | TYPE_RLO | TYPE_LRO | ISOLATE_INIT_TYPES | TYPE_PDI | TYPE_PDF | TYPE_B;
- var nextEven = function (n2) {
+ var nextEven = function(n2) {
return n2 + (n2 & 1 ? 1 : 2);
};
- var nextOdd = function (n2) {
+ var nextOdd = function(n2) {
return n2 + (n2 & 1 ? 2 : 1);
};
for (var paraIdx = 0; paraIdx < paragraphs.length; paraIdx++) {
@@ -78939,7 +78913,7 @@ function bidiFactory() {
var run = levelRuns[runIdx];
if (!run._startsWithPDI || run._startsWithPDI && !isolationPairs.has(run._start)) {
var seqRuns = [currentRun = run];
- for (var pdiIndex = void 0; currentRun && currentRun._endsWithIsolInit && (pdiIndex = isolationPairs.get(currentRun._end)) != null;) {
+ for (var pdiIndex = void 0; currentRun && currentRun._endsWithIsolInit && (pdiIndex = isolationPairs.get(currentRun._end)) != null; ) {
for (var i$4 = runIdx + 1; i$4 < levelRuns.length; i$4++) {
if (levelRuns[i$4]._start === pdiIndex) {
seqRuns.push(currentRun = levelRuns[i$4]);
@@ -79118,7 +79092,7 @@ function bidiFactory() {
}
}
}
- bracketPairs.sort(function (a6, b5) {
+ bracketPairs.sort(function(a6, b5) {
return a6[0] - b5[0];
});
}
@@ -79276,7 +79250,7 @@ function bidiFactory() {
var ref = parseCharacterMap(data, true);
var map3 = ref.map;
var reverseMap = ref.reverseMap;
- reverseMap.forEach(function (value, key) {
+ reverseMap.forEach(function(value, key) {
map3.set(key, value);
});
mirrorMap = map3;
@@ -79306,7 +79280,7 @@ function bidiFactory() {
start = Math.max(0, start == null ? 0 : +start);
end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);
var segments = [];
- embeddingLevelsResult.paragraphs.forEach(function (paragraph) {
+ embeddingLevelsResult.paragraphs.forEach(function(paragraph) {
var lineStart = Math.max(start, paragraph.start);
var lineEnd = Math.min(end, paragraph.end);
if (lineStart < lineEnd) {
@@ -79345,7 +79319,7 @@ function bidiFactory() {
function getReorderedString(string, embedLevelsResult, start, end) {
var indices = getReorderedIndices(string, embedLevelsResult, start, end);
var chars = [].concat(string);
- indices.forEach(function (charIndex, i4) {
+ indices.forEach(function(charIndex, i4) {
chars[i4] = (embedLevelsResult.levels[charIndex] & 1 ? getMirroredCharacter(string[charIndex]) : null) || string[charIndex];
});
return chars.join("");
@@ -79356,11 +79330,11 @@ function bidiFactory() {
for (var i4 = 0; i4 < string.length; i4++) {
indices[i4] = i4;
}
- segments.forEach(function (ref) {
+ segments.forEach(function(ref) {
var start2 = ref[0];
var end2 = ref[1];
var slice2 = indices.slice(start2, end2 + 1);
- for (var i5 = slice2.length; i5--;) {
+ for (var i5 = slice2.length; i5--; ) {
indices[end2 - i5] = slice2[i5];
}
});
@@ -79406,7 +79380,7 @@ function generateUUID() {
const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + "-" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + "-" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + "-" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + "-" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];
return uuid.toUpperCase();
}
-var assign = Object.assign || function () {
+var assign = Object.assign || function() {
let target2 = arguments[0];
for (let i4 = 1, len = arguments.length; i4 < len; i4++) {
let source = arguments[i4];
@@ -79434,7 +79408,7 @@ function createDerivedMaterial(baseMaterial, options) {
return new ctorsByDerivation[optionsKey]();
}
const privateBeforeCompileProp = `_onBeforeCompile${optionsKey}`;
- const onBeforeCompile = function (shaderInfo, renderer) {
+ const onBeforeCompile = function(shaderInfo, renderer) {
baseMaterial.onBeforeCompile.call(this, shaderInfo, renderer);
const cacheKey = this.customProgramCacheKey() + "|" + shaderInfo.vertexShader + "|" + shaderInfo.fragmentShader;
let upgradedShaders = SHADER_UPGRADE_CACHE[cacheKey];
@@ -79459,7 +79433,7 @@ function createDerivedMaterial(baseMaterial, options) {
const DerivedMaterial = function DerivedMaterial2() {
return derive(options.chained ? baseMaterial : baseMaterial.clone());
};
- const derive = function (base) {
+ const derive = function(base) {
const derived = Object.create(base, descriptor);
Object.defineProperty(derived, "baseMaterial", { value: baseMaterial });
Object.defineProperty(derived, "id", { value: materialInstanceId++ });
@@ -79483,7 +79457,7 @@ function createDerivedMaterial(baseMaterial, options) {
isDerivedFrom: {
writable: true,
configurable: true,
- value: function (testMaterial) {
+ value: function(testMaterial) {
const base = this.baseMaterial;
return testMaterial === base || base.isDerivedMaterial && base.isDerivedFrom(testMaterial) || false;
}
@@ -79491,7 +79465,7 @@ function createDerivedMaterial(baseMaterial, options) {
customProgramCacheKey: {
writable: true,
configurable: true,
- value: function () {
+ value: function() {
return baseMaterial.customProgramCacheKey() + "|" + optionsKey;
}
},
@@ -79506,7 +79480,7 @@ function createDerivedMaterial(baseMaterial, options) {
copy: {
writable: true,
configurable: true,
- value: function (source) {
+ value: function(source) {
baseMaterial.copy.call(this, source);
if (!baseMaterial.isShaderMaterial && !baseMaterial.isDerivedMaterial) {
assign(this.extensions, source.extensions);
@@ -79519,7 +79493,7 @@ function createDerivedMaterial(baseMaterial, options) {
clone: {
writable: true,
configurable: true,
- value: function () {
+ value: function() {
const newBase = new baseMaterial.constructor();
return derive(newBase).copy(this);
}
@@ -79531,7 +79505,7 @@ function createDerivedMaterial(baseMaterial, options) {
getDepthMaterial: {
writable: true,
configurable: true,
- value: function () {
+ value: function() {
let depthMaterial = this._depthMaterial;
if (!depthMaterial) {
depthMaterial = this._depthMaterial = createDerivedMaterial(
@@ -79551,7 +79525,7 @@ function createDerivedMaterial(baseMaterial, options) {
getDistanceMaterial: {
writable: true,
configurable: true,
- value: function () {
+ value: function() {
let distanceMaterial = this._distanceMaterial;
if (!distanceMaterial) {
distanceMaterial = this._distanceMaterial = createDerivedMaterial(
@@ -79699,92 +79673,88 @@ var defaultBaseMaterial = new MeshStandardMaterial({ color: 16777215, side: Doub
// node_modules/troika-three-text/dist/troika-three-text.esm.js
function typrFactory() {
- return "undefined" == typeof window && (self.window = self), (function (r2) {
- var e2 = {
- parse: function (r3) {
- var t4 = e2._bin, a7 = new Uint8Array(r3);
- if ("ttcf" == t4.readASCII(a7, 0, 4)) {
- var n2 = 4;
- t4.readUshort(a7, n2), n2 += 2, t4.readUshort(a7, n2), n2 += 2;
- var o2 = t4.readUint(a7, n2);
- n2 += 4;
- for (var s2 = [], i4 = 0; i4 < o2; i4++) {
- var h = t4.readUint(a7, n2);
- n2 += 4, s2.push(e2._readFont(a7, h));
- }
- return s2;
+ return "undefined" == typeof window && (self.window = self), (function(r2) {
+ var e2 = { parse: function(r3) {
+ var t4 = e2._bin, a7 = new Uint8Array(r3);
+ if ("ttcf" == t4.readASCII(a7, 0, 4)) {
+ var n2 = 4;
+ t4.readUshort(a7, n2), n2 += 2, t4.readUshort(a7, n2), n2 += 2;
+ var o2 = t4.readUint(a7, n2);
+ n2 += 4;
+ for (var s2 = [], i4 = 0; i4 < o2; i4++) {
+ var h = t4.readUint(a7, n2);
+ n2 += 4, s2.push(e2._readFont(a7, h));
}
- return [e2._readFont(a7, 0)];
- }, _readFont: function (r3, t4) {
- var a7 = e2._bin, n2 = t4;
- a7.readFixed(r3, t4), t4 += 4;
- var o2 = a7.readUshort(r3, t4);
- t4 += 2, a7.readUshort(r3, t4), t4 += 2, a7.readUshort(r3, t4), t4 += 2, a7.readUshort(r3, t4), t4 += 2;
- for (var s2 = ["cmap", "head", "hhea", "maxp", "hmtx", "name", "OS/2", "post", "loca", "glyf", "kern", "CFF ", "GDEF", "GPOS", "GSUB", "SVG "], i4 = { _data: r3, _offset: n2 }, h = {}, d2 = 0; d2 < o2; d2++) {
- var f2 = a7.readASCII(r3, t4, 4);
- t4 += 4, a7.readUint(r3, t4), t4 += 4;
- var u = a7.readUint(r3, t4);
- t4 += 4;
- var l2 = a7.readUint(r3, t4);
- t4 += 4, h[f2] = { offset: u, length: l2 };
- }
- for (d2 = 0; d2 < s2.length; d2++) {
- var v5 = s2[d2];
- h[v5] && (i4[v5.trim()] = e2[v5.trim()].parse(r3, h[v5].offset, h[v5].length, i4));
- }
- return i4;
- }, _tabOffset: function (r3, t4, a7) {
- for (var n2 = e2._bin, o2 = n2.readUshort(r3, a7 + 4), s2 = a7 + 12, i4 = 0; i4 < o2; i4++) {
- var h = n2.readASCII(r3, s2, 4);
- s2 += 4, n2.readUint(r3, s2), s2 += 4;
- var d2 = n2.readUint(r3, s2);
- if (s2 += 4, n2.readUint(r3, s2), s2 += 4, h == t4) return d2;
- }
- return 0;
+ return s2;
}
- };
- e2._bin = {
- readFixed: function (r3, e3) {
- return (r3[e3] << 8 | r3[e3 + 1]) + (r3[e3 + 2] << 8 | r3[e3 + 3]) / 65540;
- }, readF2dot14: function (r3, t4) {
- return e2._bin.readShort(r3, t4) / 16384;
- }, readInt: function (r3, t4) {
- return e2._bin._view(r3).getInt32(t4);
- }, readInt8: function (r3, t4) {
- return e2._bin._view(r3).getInt8(t4);
- }, readShort: function (r3, t4) {
- return e2._bin._view(r3).getInt16(t4);
- }, readUshort: function (r3, t4) {
- return e2._bin._view(r3).getUint16(t4);
- }, readUshorts: function (r3, t4, a7) {
- for (var n2 = [], o2 = 0; o2 < a7; o2++) n2.push(e2._bin.readUshort(r3, t4 + 2 * o2));
- return n2;
- }, readUint: function (r3, t4) {
- return e2._bin._view(r3).getUint32(t4);
- }, readUint64: function (r3, t4) {
- return 4294967296 * e2._bin.readUint(r3, t4) + e2._bin.readUint(r3, t4 + 4);
- }, readASCII: function (r3, e3, t4) {
- for (var a7 = "", n2 = 0; n2 < t4; n2++) a7 += String.fromCharCode(r3[e3 + n2]);
- return a7;
- }, readUnicode: function (r3, e3, t4) {
- for (var a7 = "", n2 = 0; n2 < t4; n2++) {
- var o2 = r3[e3++] << 8 | r3[e3++];
- a7 += String.fromCharCode(o2);
- }
- return a7;
- }, _tdec: "undefined" != typeof window && window.TextDecoder ? new window.TextDecoder() : null, readUTF8: function (r3, t4, a7) {
- var n2 = e2._bin._tdec;
- return n2 && 0 == t4 && a7 == r3.length ? n2.decode(r3) : e2._bin.readASCII(r3, t4, a7);
- }, readBytes: function (r3, e3, t4) {
- for (var a7 = [], n2 = 0; n2 < t4; n2++) a7.push(r3[e3 + n2]);
- return a7;
- }, readASCIIArray: function (r3, e3, t4) {
- for (var a7 = [], n2 = 0; n2 < t4; n2++) a7.push(String.fromCharCode(r3[e3 + n2]));
- return a7;
- }, _view: function (r3) {
- return r3._dataView || (r3._dataView = r3.buffer ? new DataView(r3.buffer, r3.byteOffset, r3.byteLength) : new DataView(new Uint8Array(r3).buffer));
+ return [e2._readFont(a7, 0)];
+ }, _readFont: function(r3, t4) {
+ var a7 = e2._bin, n2 = t4;
+ a7.readFixed(r3, t4), t4 += 4;
+ var o2 = a7.readUshort(r3, t4);
+ t4 += 2, a7.readUshort(r3, t4), t4 += 2, a7.readUshort(r3, t4), t4 += 2, a7.readUshort(r3, t4), t4 += 2;
+ for (var s2 = ["cmap", "head", "hhea", "maxp", "hmtx", "name", "OS/2", "post", "loca", "glyf", "kern", "CFF ", "GDEF", "GPOS", "GSUB", "SVG "], i4 = { _data: r3, _offset: n2 }, h = {}, d2 = 0; d2 < o2; d2++) {
+ var f2 = a7.readASCII(r3, t4, 4);
+ t4 += 4, a7.readUint(r3, t4), t4 += 4;
+ var u = a7.readUint(r3, t4);
+ t4 += 4;
+ var l2 = a7.readUint(r3, t4);
+ t4 += 4, h[f2] = { offset: u, length: l2 };
}
- }, e2._lctf = {}, e2._lctf.parse = function (r3, t4, a7, n2, o2) {
+ for (d2 = 0; d2 < s2.length; d2++) {
+ var v5 = s2[d2];
+ h[v5] && (i4[v5.trim()] = e2[v5.trim()].parse(r3, h[v5].offset, h[v5].length, i4));
+ }
+ return i4;
+ }, _tabOffset: function(r3, t4, a7) {
+ for (var n2 = e2._bin, o2 = n2.readUshort(r3, a7 + 4), s2 = a7 + 12, i4 = 0; i4 < o2; i4++) {
+ var h = n2.readASCII(r3, s2, 4);
+ s2 += 4, n2.readUint(r3, s2), s2 += 4;
+ var d2 = n2.readUint(r3, s2);
+ if (s2 += 4, n2.readUint(r3, s2), s2 += 4, h == t4) return d2;
+ }
+ return 0;
+ } };
+ e2._bin = { readFixed: function(r3, e3) {
+ return (r3[e3] << 8 | r3[e3 + 1]) + (r3[e3 + 2] << 8 | r3[e3 + 3]) / 65540;
+ }, readF2dot14: function(r3, t4) {
+ return e2._bin.readShort(r3, t4) / 16384;
+ }, readInt: function(r3, t4) {
+ return e2._bin._view(r3).getInt32(t4);
+ }, readInt8: function(r3, t4) {
+ return e2._bin._view(r3).getInt8(t4);
+ }, readShort: function(r3, t4) {
+ return e2._bin._view(r3).getInt16(t4);
+ }, readUshort: function(r3, t4) {
+ return e2._bin._view(r3).getUint16(t4);
+ }, readUshorts: function(r3, t4, a7) {
+ for (var n2 = [], o2 = 0; o2 < a7; o2++) n2.push(e2._bin.readUshort(r3, t4 + 2 * o2));
+ return n2;
+ }, readUint: function(r3, t4) {
+ return e2._bin._view(r3).getUint32(t4);
+ }, readUint64: function(r3, t4) {
+ return 4294967296 * e2._bin.readUint(r3, t4) + e2._bin.readUint(r3, t4 + 4);
+ }, readASCII: function(r3, e3, t4) {
+ for (var a7 = "", n2 = 0; n2 < t4; n2++) a7 += String.fromCharCode(r3[e3 + n2]);
+ return a7;
+ }, readUnicode: function(r3, e3, t4) {
+ for (var a7 = "", n2 = 0; n2 < t4; n2++) {
+ var o2 = r3[e3++] << 8 | r3[e3++];
+ a7 += String.fromCharCode(o2);
+ }
+ return a7;
+ }, _tdec: "undefined" != typeof window && window.TextDecoder ? new window.TextDecoder() : null, readUTF8: function(r3, t4, a7) {
+ var n2 = e2._bin._tdec;
+ return n2 && 0 == t4 && a7 == r3.length ? n2.decode(r3) : e2._bin.readASCII(r3, t4, a7);
+ }, readBytes: function(r3, e3, t4) {
+ for (var a7 = [], n2 = 0; n2 < t4; n2++) a7.push(r3[e3 + n2]);
+ return a7;
+ }, readASCIIArray: function(r3, e3, t4) {
+ for (var a7 = [], n2 = 0; n2 < t4; n2++) a7.push(String.fromCharCode(r3[e3 + n2]));
+ return a7;
+ }, _view: function(r3) {
+ return r3._dataView || (r3._dataView = r3.buffer ? new DataView(r3.buffer, r3.byteOffset, r3.byteLength) : new DataView(new Uint8Array(r3).buffer));
+ } }, e2._lctf = {}, e2._lctf.parse = function(r3, t4, a7, n2, o2) {
var s2 = e2._bin, i4 = {}, h = t4;
s2.readFixed(r3, t4), t4 += 4;
var d2 = s2.readUshort(r3, t4);
@@ -79793,7 +79763,7 @@ function typrFactory() {
t4 += 2;
var u = s2.readUshort(r3, t4);
return t4 += 2, i4.scriptList = e2._lctf.readScriptList(r3, h + d2), i4.featureList = e2._lctf.readFeatureList(r3, h + f2), i4.lookupList = e2._lctf.readLookupList(r3, h + u, o2), i4;
- }, e2._lctf.readLookupList = function (r3, t4, a7) {
+ }, e2._lctf.readLookupList = function(r3, t4, a7) {
var n2 = e2._bin, o2 = t4, s2 = [], i4 = n2.readUshort(r3, t4);
t4 += 2;
for (var h = 0; h < i4; h++) {
@@ -79803,7 +79773,7 @@ function typrFactory() {
s2.push(f2);
}
return s2;
- }, e2._lctf.readLookupTable = function (r3, t4, a7) {
+ }, e2._lctf.readLookupTable = function(r3, t4, a7) {
var n2 = e2._bin, o2 = t4, s2 = { tabs: [] };
s2.ltype = n2.readUshort(r3, t4), t4 += 2, s2.flag = n2.readUshort(r3, t4), t4 += 2;
var i4 = n2.readUshort(r3, t4);
@@ -79815,10 +79785,10 @@ function typrFactory() {
s2.tabs.push(u);
}
return s2;
- }, e2._lctf.numOfOnes = function (r3) {
+ }, e2._lctf.numOfOnes = function(r3) {
for (var e3 = 0, t4 = 0; t4 < 32; t4++) 0 != (r3 >>> t4 & 1) && e3++;
return e3;
- }, e2._lctf.readClassDef = function (r3, t4) {
+ }, e2._lctf.readClassDef = function(r3, t4) {
var a7 = e2._bin, n2 = [], o2 = a7.readUshort(r3, t4);
if (t4 += 2, 1 == o2) {
var s2 = a7.readUshort(r3, t4);
@@ -79833,18 +79803,18 @@ function typrFactory() {
for (h = 0; h < d2; h++) n2.push(a7.readUshort(r3, t4)), t4 += 2, n2.push(a7.readUshort(r3, t4)), t4 += 2, n2.push(a7.readUshort(r3, t4)), t4 += 2;
}
return n2;
- }, e2._lctf.getInterval = function (r3, e3) {
+ }, e2._lctf.getInterval = function(r3, e3) {
for (var t4 = 0; t4 < r3.length; t4 += 3) {
var a7 = r3[t4], n2 = r3[t4 + 1];
if (r3[t4 + 2], a7 <= e3 && e3 <= n2) return t4;
}
return -1;
- }, e2._lctf.readCoverage = function (r3, t4) {
+ }, e2._lctf.readCoverage = function(r3, t4) {
var a7 = e2._bin, n2 = {};
n2.fmt = a7.readUshort(r3, t4), t4 += 2;
var o2 = a7.readUshort(r3, t4);
return t4 += 2, 1 == n2.fmt && (n2.tab = a7.readUshorts(r3, t4, o2)), 2 == n2.fmt && (n2.tab = a7.readUshorts(r3, t4, 3 * o2)), n2;
- }, e2._lctf.coverageIndex = function (r3, t4) {
+ }, e2._lctf.coverageIndex = function(r3, t4) {
var a7 = r3.tab;
if (1 == r3.fmt) return a7.indexOf(t4);
if (2 == r3.fmt) {
@@ -79852,7 +79822,7 @@ function typrFactory() {
if (-1 != n2) return a7[n2 + 2] + (t4 - a7[n2]);
}
return -1;
- }, e2._lctf.readFeatureList = function (r3, t4) {
+ }, e2._lctf.readFeatureList = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = [], s2 = a7.readUshort(r3, t4);
t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -79864,14 +79834,14 @@ function typrFactory() {
f2.tag = h.trim(), o2.push(f2);
}
return o2;
- }, e2._lctf.readFeatureTable = function (r3, t4) {
+ }, e2._lctf.readFeatureTable = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = {}, s2 = a7.readUshort(r3, t4);
t4 += 2, s2 > 0 && (o2.featureParams = n2 + s2);
var i4 = a7.readUshort(r3, t4);
t4 += 2, o2.tab = [];
for (var h = 0; h < i4; h++) o2.tab.push(a7.readUshort(r3, t4 + 2 * h));
return o2;
- }, e2._lctf.readScriptList = function (r3, t4) {
+ }, e2._lctf.readScriptList = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = {}, s2 = a7.readUshort(r3, t4);
t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -79881,7 +79851,7 @@ function typrFactory() {
t4 += 2, o2[h.trim()] = e2._lctf.readScriptTable(r3, n2 + d2);
}
return o2;
- }, e2._lctf.readScriptTable = function (r3, t4) {
+ }, e2._lctf.readScriptTable = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = {}, s2 = a7.readUshort(r3, t4);
t4 += 2, s2 > 0 && (o2.default = e2._lctf.readLangSysTable(r3, n2 + s2));
var i4 = a7.readUshort(r3, t4);
@@ -79893,12 +79863,12 @@ function typrFactory() {
t4 += 2, o2[d2.trim()] = e2._lctf.readLangSysTable(r3, n2 + f2);
}
return o2;
- }, e2._lctf.readLangSysTable = function (r3, t4) {
+ }, e2._lctf.readLangSysTable = function(r3, t4) {
var a7 = e2._bin, n2 = {};
a7.readUshort(r3, t4), t4 += 2, n2.reqFeature = a7.readUshort(r3, t4), t4 += 2;
var o2 = a7.readUshort(r3, t4);
return t4 += 2, n2.features = a7.readUshorts(r3, t4, o2), n2;
- }, e2.CFF = {}, e2.CFF.parse = function (r3, t4, a7) {
+ }, e2.CFF = {}, e2.CFF.parse = function(r3, t4, a7) {
var n2 = e2._bin;
(r3 = new Uint8Array(r3.buffer, t4, a7))[t4 = 0], r3[++t4], r3[++t4], r3[++t4], t4++;
var o2 = [];
@@ -79938,21 +79908,21 @@ function typrFactory() {
for (i4 = 0; i4 < g + 1; i4++) f2.FDSelect.push(n2.readUshort(r3, t4), r3[t4 + 2]), t4 += 3;
}
return f2.Encoding && (f2.Encoding = e2.CFF.readEncoding(r3, f2.Encoding, f2.CharStrings.length)), f2.charset && (f2.charset = e2.CFF.readCharset(r3, f2.charset, f2.CharStrings.length)), e2.CFF._readFDict(r3, f2, l2), f2;
- }, e2.CFF._readFDict = function (r3, t4, a7) {
+ }, e2.CFF._readFDict = function(r3, t4, a7) {
var n2;
for (var o2 in t4.Private && (n2 = t4.Private[1], t4.Private = e2.CFF.readDict(r3, n2, n2 + t4.Private[0]), t4.Private.Subrs && e2.CFF.readSubrs(r3, n2 + t4.Private.Subrs, t4.Private)), t4) -1 != ["FamilyName", "FontName", "FullName", "Notice", "version", "Copyright"].indexOf(o2) && (t4[o2] = a7[t4[o2] - 426 + 35]);
- }, e2.CFF.readSubrs = function (r3, t4, a7) {
+ }, e2.CFF.readSubrs = function(r3, t4, a7) {
var n2 = e2._bin, o2 = [];
t4 = e2.CFF.readIndex(r3, t4, o2);
var s2, i4 = o2.length;
s2 = i4 < 1240 ? 107 : i4 < 33900 ? 1131 : 32768, a7.Bias = s2, a7.Subrs = [];
for (var h = 0; h < o2.length - 1; h++) a7.Subrs.push(n2.readBytes(r3, t4 + o2[h], o2[h + 1] - o2[h]));
- }, e2.CFF.tableSE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, 148, 149, 0, 0, 0, 0], e2.CFF.glyphByUnicode = function (r3, e3) {
+ }, e2.CFF.tableSE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, 148, 149, 0, 0, 0, 0], e2.CFF.glyphByUnicode = function(r3, e3) {
for (var t4 = 0; t4 < r3.charset.length; t4++) if (r3.charset[t4] == e3) return t4;
return -1;
- }, e2.CFF.glyphBySE = function (r3, t4) {
+ }, e2.CFF.glyphBySE = function(r3, t4) {
return t4 < 0 || t4 > 255 ? -1 : e2.CFF.glyphByUnicode(r3, e2.CFF.tableSE[t4]);
- }, e2.CFF.readEncoding = function (r3, t4, a7) {
+ }, e2.CFF.readEncoding = function(r3, t4, a7) {
e2._bin;
var n2 = [".notdef"], o2 = r3[t4];
if (t4++, 0 != o2) throw "error: unknown encoding format: " + o2;
@@ -79960,7 +79930,7 @@ function typrFactory() {
t4++;
for (var i4 = 0; i4 < s2; i4++) n2.push(r3[t4 + i4]);
return n2;
- }, e2.CFF.readCharset = function (r3, t4, a7) {
+ }, e2.CFF.readCharset = function(r3, t4, a7) {
var n2 = e2._bin, o2 = [".notdef"], s2 = r3[t4];
if (t4++, 0 == s2) for (var i4 = 0; i4 < a7; i4++) {
var h = n2.readUshort(r3, t4);
@@ -79968,7 +79938,7 @@ function typrFactory() {
}
else {
if (1 != s2 && 2 != s2) throw "error: format: " + s2;
- for (; o2.length < a7;) {
+ for (; o2.length < a7; ) {
h = n2.readUshort(r3, t4);
t4 += 2;
var d2 = 0;
@@ -79977,35 +79947,35 @@ function typrFactory() {
}
}
return o2;
- }, e2.CFF.readIndex = function (r3, t4, a7) {
+ }, e2.CFF.readIndex = function(r3, t4, a7) {
var n2 = e2._bin, o2 = n2.readUshort(r3, t4) + 1, s2 = r3[t4 += 2];
if (t4++, 1 == s2) for (var i4 = 0; i4 < o2; i4++) a7.push(r3[t4 + i4]);
else if (2 == s2) for (i4 = 0; i4 < o2; i4++) a7.push(n2.readUshort(r3, t4 + 2 * i4));
else if (3 == s2) for (i4 = 0; i4 < o2; i4++) a7.push(16777215 & n2.readUint(r3, t4 + 3 * i4 - 1));
else if (1 != o2) throw "unsupported offset size: " + s2 + ", count: " + o2;
return (t4 += o2 * s2) - 1;
- }, e2.CFF.getCharString = function (r3, t4, a7) {
+ }, e2.CFF.getCharString = function(r3, t4, a7) {
var n2 = e2._bin, o2 = r3[t4], s2 = r3[t4 + 1];
r3[t4 + 2], r3[t4 + 3], r3[t4 + 4];
var i4 = 1, h = null, d2 = null;
o2 <= 20 && (h = o2, i4 = 1), 12 == o2 && (h = 100 * o2 + s2, i4 = 2), 21 <= o2 && o2 <= 27 && (h = o2, i4 = 1), 28 == o2 && (d2 = n2.readShort(r3, t4 + 1), i4 = 3), 29 <= o2 && o2 <= 31 && (h = o2, i4 = 1), 32 <= o2 && o2 <= 246 && (d2 = o2 - 139, i4 = 1), 247 <= o2 && o2 <= 250 && (d2 = 256 * (o2 - 247) + s2 + 108, i4 = 2), 251 <= o2 && o2 <= 254 && (d2 = 256 * -(o2 - 251) - s2 - 108, i4 = 2), 255 == o2 && (d2 = n2.readInt(r3, t4 + 1) / 65535, i4 = 5), a7.val = null != d2 ? d2 : "o" + h, a7.size = i4;
- }, e2.CFF.readCharString = function (r3, t4, a7) {
- for (var n2 = t4 + a7, o2 = e2._bin, s2 = []; t4 < n2;) {
+ }, e2.CFF.readCharString = function(r3, t4, a7) {
+ for (var n2 = t4 + a7, o2 = e2._bin, s2 = []; t4 < n2; ) {
var i4 = r3[t4], h = r3[t4 + 1];
r3[t4 + 2], r3[t4 + 3], r3[t4 + 4];
var d2 = 1, f2 = null, u = null;
i4 <= 20 && (f2 = i4, d2 = 1), 12 == i4 && (f2 = 100 * i4 + h, d2 = 2), 19 != i4 && 20 != i4 || (f2 = i4, d2 = 2), 21 <= i4 && i4 <= 27 && (f2 = i4, d2 = 1), 28 == i4 && (u = o2.readShort(r3, t4 + 1), d2 = 3), 29 <= i4 && i4 <= 31 && (f2 = i4, d2 = 1), 32 <= i4 && i4 <= 246 && (u = i4 - 139, d2 = 1), 247 <= i4 && i4 <= 250 && (u = 256 * (i4 - 247) + h + 108, d2 = 2), 251 <= i4 && i4 <= 254 && (u = 256 * -(i4 - 251) - h - 108, d2 = 2), 255 == i4 && (u = o2.readInt(r3, t4 + 1) / 65535, d2 = 5), s2.push(null != u ? u : "o" + f2), t4 += d2;
}
return s2;
- }, e2.CFF.readDict = function (r3, t4, a7) {
- for (var n2 = e2._bin, o2 = {}, s2 = []; t4 < a7;) {
+ }, e2.CFF.readDict = function(r3, t4, a7) {
+ for (var n2 = e2._bin, o2 = {}, s2 = []; t4 < a7; ) {
var i4 = r3[t4], h = r3[t4 + 1];
r3[t4 + 2], r3[t4 + 3], r3[t4 + 4];
var d2 = 1, f2 = null, u = null;
if (28 == i4 && (u = n2.readShort(r3, t4 + 1), d2 = 3), 29 == i4 && (u = n2.readInt(r3, t4 + 1), d2 = 5), 32 <= i4 && i4 <= 246 && (u = i4 - 139, d2 = 1), 247 <= i4 && i4 <= 250 && (u = 256 * (i4 - 247) + h + 108, d2 = 2), 251 <= i4 && i4 <= 254 && (u = 256 * -(i4 - 251) - h - 108, d2 = 2), 255 == i4) throw u = n2.readInt(r3, t4 + 1) / 65535, d2 = 5, "unknown number";
if (30 == i4) {
var l2 = [];
- for (d2 = 1; ;) {
+ for (d2 = 1; ; ) {
var v5 = r3[t4 + d2];
d2++;
var c2 = v5 >> 4, p2 = 15 & v5;
@@ -80020,7 +79990,7 @@ function typrFactory() {
null != f2 ? (o2[f2] = 1 == s2.length ? s2[0] : s2, s2 = []) : s2.push(u), t4 += d2;
}
return o2;
- }, e2.cmap = {}, e2.cmap.parse = function (r3, t4, a7) {
+ }, e2.cmap = {}, e2.cmap.parse = function(r3, t4, a7) {
r3 = new Uint8Array(r3.buffer, t4, a7), t4 = 0;
var n2 = e2._bin, o2 = {};
n2.readUshort(r3, t4), t4 += 2;
@@ -80046,14 +80016,14 @@ function typrFactory() {
o2[l2] = v5;
}
return o2;
- }, e2.cmap.parse0 = function (r3, t4) {
+ }, e2.cmap.parse0 = function(r3, t4) {
var a7 = e2._bin, n2 = {};
n2.format = a7.readUshort(r3, t4), t4 += 2;
var o2 = a7.readUshort(r3, t4);
t4 += 2, a7.readUshort(r3, t4), t4 += 2, n2.map = [];
for (var s2 = 0; s2 < o2 - 6; s2++) n2.map.push(r3[t4 + s2]);
return n2;
- }, e2.cmap.parse4 = function (r3, t4) {
+ }, e2.cmap.parse4 = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = {};
o2.format = a7.readUshort(r3, t4), t4 += 2;
var s2 = a7.readUshort(r3, t4);
@@ -80063,16 +80033,16 @@ function typrFactory() {
var h = i4 / 2;
o2.searchRange = a7.readUshort(r3, t4), t4 += 2, o2.entrySelector = a7.readUshort(r3, t4), t4 += 2, o2.rangeShift = a7.readUshort(r3, t4), t4 += 2, o2.endCount = a7.readUshorts(r3, t4, h), t4 += 2 * h, t4 += 2, o2.startCount = a7.readUshorts(r3, t4, h), t4 += 2 * h, o2.idDelta = [];
for (var d2 = 0; d2 < h; d2++) o2.idDelta.push(a7.readShort(r3, t4)), t4 += 2;
- for (o2.idRangeOffset = a7.readUshorts(r3, t4, h), t4 += 2 * h, o2.glyphIdArray = []; t4 < n2 + s2;) o2.glyphIdArray.push(a7.readUshort(r3, t4)), t4 += 2;
+ for (o2.idRangeOffset = a7.readUshorts(r3, t4, h), t4 += 2 * h, o2.glyphIdArray = []; t4 < n2 + s2; ) o2.glyphIdArray.push(a7.readUshort(r3, t4)), t4 += 2;
return o2;
- }, e2.cmap.parse6 = function (r3, t4) {
+ }, e2.cmap.parse6 = function(r3, t4) {
var a7 = e2._bin, n2 = {};
n2.format = a7.readUshort(r3, t4), t4 += 2, a7.readUshort(r3, t4), t4 += 2, a7.readUshort(r3, t4), t4 += 2, n2.firstCode = a7.readUshort(r3, t4), t4 += 2;
var o2 = a7.readUshort(r3, t4);
t4 += 2, n2.glyphIdArray = [];
for (var s2 = 0; s2 < o2; s2++) n2.glyphIdArray.push(a7.readUshort(r3, t4)), t4 += 2;
return n2;
- }, e2.cmap.parse12 = function (r3, t4) {
+ }, e2.cmap.parse12 = function(r3, t4) {
var a7 = e2._bin, n2 = {};
n2.format = a7.readUshort(r3, t4), t4 += 2, t4 += 2, a7.readUint(r3, t4), t4 += 4, a7.readUint(r3, t4), t4 += 4;
var o2 = a7.readUint(r3, t4);
@@ -80082,10 +80052,10 @@ function typrFactory() {
n2.groups.push([h, d2, f2]);
}
return n2;
- }, e2.glyf = {}, e2.glyf.parse = function (r3, e3, t4, a7) {
+ }, e2.glyf = {}, e2.glyf.parse = function(r3, e3, t4, a7) {
for (var n2 = [], o2 = 0; o2 < a7.maxp.numGlyphs; o2++) n2.push(null);
return n2;
- }, e2.glyf._parseGlyf = function (r3, t4) {
+ }, e2.glyf._parseGlyf = function(r3, t4) {
var a7 = e2._bin, n2 = r3._data, o2 = e2._tabOffset(n2, "glyf", r3._offset) + r3.loca[t4];
if (r3.loca[t4] == r3.loca[t4 + 1]) return null;
var s2 = {};
@@ -80144,14 +80114,14 @@ function typrFactory() {
}
}
return s2;
- }, e2.GDEF = {}, e2.GDEF.parse = function (r3, t4, a7, n2) {
+ }, e2.GDEF = {}, e2.GDEF.parse = function(r3, t4, a7, n2) {
var o2 = t4;
t4 += 4;
var s2 = e2._bin.readUshort(r3, t4);
return { glyphClassDef: 0 === s2 ? null : e2._lctf.readClassDef(r3, o2 + s2) };
- }, e2.GPOS = {}, e2.GPOS.parse = function (r3, t4, a7, n2) {
+ }, e2.GPOS = {}, e2.GPOS.parse = function(r3, t4, a7, n2) {
return e2._lctf.parse(r3, t4, a7, n2, e2.GPOS.subt);
- }, e2.GPOS.subt = function (r3, t4, a7, n2) {
+ }, e2.GPOS.subt = function(r3, t4, a7, n2) {
var o2 = e2._bin, s2 = a7, i4 = {};
if (i4.fmt = o2.readUshort(r3, a7), a7 += 2, 1 == t4 || 2 == t4 || 3 == t4 || 7 == t4 || 8 == t4 && i4.fmt <= 2) {
var h = o2.readUshort(r3, a7);
@@ -80214,10 +80184,10 @@ function typrFactory() {
console.debug("unsupported GPOS table LookupType", t4, "format", i4.fmt);
}
return i4;
- }, e2.GPOS.readValueRecord = function (r3, t4, a7) {
+ }, e2.GPOS.readValueRecord = function(r3, t4, a7) {
var n2 = e2._bin, o2 = [];
return o2.push(1 & a7 ? n2.readShort(r3, t4) : 0), t4 += 1 & a7 ? 2 : 0, o2.push(2 & a7 ? n2.readShort(r3, t4) : 0), t4 += 2 & a7 ? 2 : 0, o2.push(4 & a7 ? n2.readShort(r3, t4) : 0), t4 += 4 & a7 ? 2 : 0, o2.push(8 & a7 ? n2.readShort(r3, t4) : 0), t4 += 8 & a7 ? 2 : 0, o2;
- }, e2.GPOS.readBaseArray = function (r3, t4, a7) {
+ }, e2.GPOS.readBaseArray = function(r3, t4, a7) {
var n2 = e2._bin, o2 = [], s2 = t4, i4 = n2.readUshort(r3, t4);
t4 += 2;
for (var h = 0; h < i4; h++) {
@@ -80225,7 +80195,7 @@ function typrFactory() {
o2.push(d2);
}
return o2;
- }, e2.GPOS.readMarkArray = function (r3, t4) {
+ }, e2.GPOS.readMarkArray = function(r3, t4) {
var a7 = e2._bin, n2 = [], o2 = t4, s2 = a7.readUshort(r3, t4);
t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -80233,12 +80203,12 @@ function typrFactory() {
h.markClass = a7.readUshort(r3, t4), n2.push(h), t4 += 4;
}
return n2;
- }, e2.GPOS.readAnchorRecord = function (r3, t4) {
+ }, e2.GPOS.readAnchorRecord = function(r3, t4) {
var a7 = e2._bin, n2 = {};
return n2.fmt = a7.readUshort(r3, t4), n2.x = a7.readShort(r3, t4 + 2), n2.y = a7.readShort(r3, t4 + 4), n2;
- }, e2.GSUB = {}, e2.GSUB.parse = function (r3, t4, a7, n2) {
+ }, e2.GSUB = {}, e2.GSUB.parse = function(r3, t4, a7, n2) {
return e2._lctf.parse(r3, t4, a7, n2, e2.GSUB.subt);
- }, e2.GSUB.subt = function (r3, t4, a7, n2) {
+ }, e2.GSUB.subt = function(r3, t4, a7, n2) {
var o2 = e2._bin, s2 = a7, i4 = {};
if (i4.fmt = o2.readUshort(r3, a7), a7 += 2, 1 != t4 && 2 != t4 && 4 != t4 && 5 != t4 && 6 != t4) return null;
if (1 == t4 || 2 == t4 || 4 == t4 || 5 == t4 && i4.fmt <= 2 || 6 == t4 && i4.fmt <= 2) {
@@ -80302,7 +80272,7 @@ function typrFactory() {
console.debug("unsupported GSUB table LookupType", t4, "format", i4.fmt);
}
return i4;
- }, e2.GSUB.readSubClassSet = function (r3, t4) {
+ }, e2.GSUB.readSubClassSet = function(r3, t4) {
var a7 = e2._bin.readUshort, n2 = t4, o2 = [], s2 = a7(r3, t4);
t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -80310,15 +80280,15 @@ function typrFactory() {
t4 += 2, o2.push(e2.GSUB.readSubClassRule(r3, n2 + h));
}
return o2;
- }, e2.GSUB.readSubClassRule = function (r3, t4) {
+ }, e2.GSUB.readSubClassRule = function(r3, t4) {
var a7 = e2._bin.readUshort, n2 = {}, o2 = a7(r3, t4), s2 = a7(r3, t4 += 2);
t4 += 2, n2.input = [];
for (var i4 = 0; i4 < o2 - 1; i4++) n2.input.push(a7(r3, t4)), t4 += 2;
return n2.substLookupRecords = e2.GSUB.readSubstLookupRecords(r3, t4, s2), n2;
- }, e2.GSUB.readSubstLookupRecords = function (r3, t4, a7) {
+ }, e2.GSUB.readSubstLookupRecords = function(r3, t4, a7) {
for (var n2 = e2._bin.readUshort, o2 = [], s2 = 0; s2 < a7; s2++) o2.push(n2(r3, t4), n2(r3, t4 + 2)), t4 += 4;
return o2;
- }, e2.GSUB.readChainSubClassSet = function (r3, t4) {
+ }, e2.GSUB.readChainSubClassSet = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = [], s2 = a7.readUshort(r3, t4);
t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -80326,14 +80296,14 @@ function typrFactory() {
t4 += 2, o2.push(e2.GSUB.readChainSubClassRule(r3, n2 + h));
}
return o2;
- }, e2.GSUB.readChainSubClassRule = function (r3, t4) {
+ }, e2.GSUB.readChainSubClassRule = function(r3, t4) {
for (var a7 = e2._bin, n2 = {}, o2 = ["backtrack", "input", "lookahead"], s2 = 0; s2 < o2.length; s2++) {
var i4 = a7.readUshort(r3, t4);
t4 += 2, 1 == s2 && i4--, n2[o2[s2]] = a7.readUshorts(r3, t4, i4), t4 += 2 * n2[o2[s2]].length;
}
i4 = a7.readUshort(r3, t4);
return t4 += 2, n2.subst = a7.readUshorts(r3, t4, 2 * i4), t4 += 2 * n2.subst.length, n2;
- }, e2.GSUB.readLigatureSet = function (r3, t4) {
+ }, e2.GSUB.readLigatureSet = function(r3, t4) {
var a7 = e2._bin, n2 = t4, o2 = [], s2 = a7.readUshort(r3, t4);
t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -80341,23 +80311,23 @@ function typrFactory() {
t4 += 2, o2.push(e2.GSUB.readLigature(r3, n2 + h));
}
return o2;
- }, e2.GSUB.readLigature = function (r3, t4) {
+ }, e2.GSUB.readLigature = function(r3, t4) {
var a7 = e2._bin, n2 = { chain: [] };
n2.nglyph = a7.readUshort(r3, t4), t4 += 2;
var o2 = a7.readUshort(r3, t4);
t4 += 2;
for (var s2 = 0; s2 < o2 - 1; s2++) n2.chain.push(a7.readUshort(r3, t4)), t4 += 2;
return n2;
- }, e2.head = {}, e2.head.parse = function (r3, t4, a7) {
+ }, e2.head = {}, e2.head.parse = function(r3, t4, a7) {
var n2 = e2._bin, o2 = {};
return n2.readFixed(r3, t4), t4 += 4, o2.fontRevision = n2.readFixed(r3, t4), t4 += 4, n2.readUint(r3, t4), t4 += 4, n2.readUint(r3, t4), t4 += 4, o2.flags = n2.readUshort(r3, t4), t4 += 2, o2.unitsPerEm = n2.readUshort(r3, t4), t4 += 2, o2.created = n2.readUint64(r3, t4), t4 += 8, o2.modified = n2.readUint64(r3, t4), t4 += 8, o2.xMin = n2.readShort(r3, t4), t4 += 2, o2.yMin = n2.readShort(r3, t4), t4 += 2, o2.xMax = n2.readShort(r3, t4), t4 += 2, o2.yMax = n2.readShort(r3, t4), t4 += 2, o2.macStyle = n2.readUshort(r3, t4), t4 += 2, o2.lowestRecPPEM = n2.readUshort(r3, t4), t4 += 2, o2.fontDirectionHint = n2.readShort(r3, t4), t4 += 2, o2.indexToLocFormat = n2.readShort(r3, t4), t4 += 2, o2.glyphDataFormat = n2.readShort(r3, t4), t4 += 2, o2;
- }, e2.hhea = {}, e2.hhea.parse = function (r3, t4, a7) {
+ }, e2.hhea = {}, e2.hhea.parse = function(r3, t4, a7) {
var n2 = e2._bin, o2 = {};
return n2.readFixed(r3, t4), t4 += 4, o2.ascender = n2.readShort(r3, t4), t4 += 2, o2.descender = n2.readShort(r3, t4), t4 += 2, o2.lineGap = n2.readShort(r3, t4), t4 += 2, o2.advanceWidthMax = n2.readUshort(r3, t4), t4 += 2, o2.minLeftSideBearing = n2.readShort(r3, t4), t4 += 2, o2.minRightSideBearing = n2.readShort(r3, t4), t4 += 2, o2.xMaxExtent = n2.readShort(r3, t4), t4 += 2, o2.caretSlopeRise = n2.readShort(r3, t4), t4 += 2, o2.caretSlopeRun = n2.readShort(r3, t4), t4 += 2, o2.caretOffset = n2.readShort(r3, t4), t4 += 2, t4 += 8, o2.metricDataFormat = n2.readShort(r3, t4), t4 += 2, o2.numberOfHMetrics = n2.readUshort(r3, t4), t4 += 2, o2;
- }, e2.hmtx = {}, e2.hmtx.parse = function (r3, t4, a7, n2) {
+ }, e2.hmtx = {}, e2.hmtx.parse = function(r3, t4, a7, n2) {
for (var o2 = e2._bin, s2 = { aWidth: [], lsBearing: [] }, i4 = 0, h = 0, d2 = 0; d2 < n2.maxp.numGlyphs; d2++) d2 < n2.hhea.numberOfHMetrics && (i4 = o2.readUshort(r3, t4), t4 += 2, h = o2.readShort(r3, t4), t4 += 2), s2.aWidth.push(i4), s2.lsBearing.push(h);
return s2;
- }, e2.kern = {}, e2.kern.parse = function (r3, t4, a7, n2) {
+ }, e2.kern = {}, e2.kern.parse = function(r3, t4, a7, n2) {
var o2 = e2._bin, s2 = o2.readUshort(r3, t4);
if (t4 += 2, 1 == s2) return e2.kern.parseV1(r3, t4 - 2, a7, n2);
var i4 = o2.readUshort(r3, t4);
@@ -80373,7 +80343,7 @@ function typrFactory() {
t4 = e2.kern.readFormat0(r3, t4, h);
}
return h;
- }, e2.kern.parseV1 = function (r3, t4, a7, n2) {
+ }, e2.kern.parseV1 = function(r3, t4, a7, n2) {
var o2 = e2._bin;
o2.readFixed(r3, t4), t4 += 4;
var s2 = o2.readUint(r3, t4);
@@ -80387,7 +80357,7 @@ function typrFactory() {
t4 = e2.kern.readFormat0(r3, t4, i4);
}
return i4;
- }, e2.kern.readFormat0 = function (r3, t4, a7) {
+ }, e2.kern.readFormat0 = function(r3, t4, a7) {
var n2 = e2._bin, o2 = -1, s2 = n2.readUshort(r3, t4);
t4 += 2, n2.readUshort(r3, t4), t4 += 2, n2.readUshort(r3, t4), t4 += 2, n2.readUshort(r3, t4), t4 += 2;
for (var i4 = 0; i4 < s2; i4++) {
@@ -80401,15 +80371,15 @@ function typrFactory() {
u.glyph2.push(d2), u.vals.push(f2), o2 = h;
}
return t4;
- }, e2.loca = {}, e2.loca.parse = function (r3, t4, a7, n2) {
+ }, e2.loca = {}, e2.loca.parse = function(r3, t4, a7, n2) {
var o2 = e2._bin, s2 = [], i4 = n2.head.indexToLocFormat, h = n2.maxp.numGlyphs + 1;
if (0 == i4) for (var d2 = 0; d2 < h; d2++) s2.push(o2.readUshort(r3, t4 + (d2 << 1)) << 1);
if (1 == i4) for (d2 = 0; d2 < h; d2++) s2.push(o2.readUint(r3, t4 + (d2 << 2)));
return s2;
- }, e2.maxp = {}, e2.maxp.parse = function (r3, t4, a7) {
+ }, e2.maxp = {}, e2.maxp.parse = function(r3, t4, a7) {
var n2 = e2._bin, o2 = {}, s2 = n2.readUint(r3, t4);
return t4 += 4, o2.numGlyphs = n2.readUshort(r3, t4), t4 += 2, 65536 == s2 && (o2.maxPoints = n2.readUshort(r3, t4), t4 += 2, o2.maxContours = n2.readUshort(r3, t4), t4 += 2, o2.maxCompositePoints = n2.readUshort(r3, t4), t4 += 2, o2.maxCompositeContours = n2.readUshort(r3, t4), t4 += 2, o2.maxZones = n2.readUshort(r3, t4), t4 += 2, o2.maxTwilightPoints = n2.readUshort(r3, t4), t4 += 2, o2.maxStorage = n2.readUshort(r3, t4), t4 += 2, o2.maxFunctionDefs = n2.readUshort(r3, t4), t4 += 2, o2.maxInstructionDefs = n2.readUshort(r3, t4), t4 += 2, o2.maxStackElements = n2.readUshort(r3, t4), t4 += 2, o2.maxSizeOfInstructions = n2.readUshort(r3, t4), t4 += 2, o2.maxComponentElements = n2.readUshort(r3, t4), t4 += 2, o2.maxComponentDepth = n2.readUshort(r3, t4), t4 += 2), o2;
- }, e2.name = {}, e2.name.parse = function (r3, t4, a7) {
+ }, e2.name = {}, e2.name.parse = function(r3, t4, a7) {
var n2 = e2._bin, o2 = {};
n2.readUshort(r3, t4), t4 += 2;
var s2 = n2.readUshort(r3, t4);
@@ -80449,7 +80419,7 @@ function typrFactory() {
break;
}
return console.debug("returning name table with languageID " + o2[i4]._lang), o2[i4];
- }, e2["OS/2"] = {}, e2["OS/2"].parse = function (r3, t4, a7) {
+ }, e2["OS/2"] = {}, e2["OS/2"].parse = function(r3, t4, a7) {
var n2 = e2._bin.readUshort(r3, t4);
t4 += 2;
var o2 = {};
@@ -80461,22 +80431,22 @@ function typrFactory() {
e2["OS/2"].version5(r3, t4, o2);
}
return o2;
- }, e2["OS/2"].version0 = function (r3, t4, a7) {
+ }, e2["OS/2"].version0 = function(r3, t4, a7) {
var n2 = e2._bin;
return a7.xAvgCharWidth = n2.readShort(r3, t4), t4 += 2, a7.usWeightClass = n2.readUshort(r3, t4), t4 += 2, a7.usWidthClass = n2.readUshort(r3, t4), t4 += 2, a7.fsType = n2.readUshort(r3, t4), t4 += 2, a7.ySubscriptXSize = n2.readShort(r3, t4), t4 += 2, a7.ySubscriptYSize = n2.readShort(r3, t4), t4 += 2, a7.ySubscriptXOffset = n2.readShort(r3, t4), t4 += 2, a7.ySubscriptYOffset = n2.readShort(r3, t4), t4 += 2, a7.ySuperscriptXSize = n2.readShort(r3, t4), t4 += 2, a7.ySuperscriptYSize = n2.readShort(r3, t4), t4 += 2, a7.ySuperscriptXOffset = n2.readShort(r3, t4), t4 += 2, a7.ySuperscriptYOffset = n2.readShort(r3, t4), t4 += 2, a7.yStrikeoutSize = n2.readShort(r3, t4), t4 += 2, a7.yStrikeoutPosition = n2.readShort(r3, t4), t4 += 2, a7.sFamilyClass = n2.readShort(r3, t4), t4 += 2, a7.panose = n2.readBytes(r3, t4, 10), t4 += 10, a7.ulUnicodeRange1 = n2.readUint(r3, t4), t4 += 4, a7.ulUnicodeRange2 = n2.readUint(r3, t4), t4 += 4, a7.ulUnicodeRange3 = n2.readUint(r3, t4), t4 += 4, a7.ulUnicodeRange4 = n2.readUint(r3, t4), t4 += 4, a7.achVendID = [n2.readInt8(r3, t4), n2.readInt8(r3, t4 + 1), n2.readInt8(r3, t4 + 2), n2.readInt8(r3, t4 + 3)], t4 += 4, a7.fsSelection = n2.readUshort(r3, t4), t4 += 2, a7.usFirstCharIndex = n2.readUshort(r3, t4), t4 += 2, a7.usLastCharIndex = n2.readUshort(r3, t4), t4 += 2, a7.sTypoAscender = n2.readShort(r3, t4), t4 += 2, a7.sTypoDescender = n2.readShort(r3, t4), t4 += 2, a7.sTypoLineGap = n2.readShort(r3, t4), t4 += 2, a7.usWinAscent = n2.readUshort(r3, t4), t4 += 2, a7.usWinDescent = n2.readUshort(r3, t4), t4 += 2;
- }, e2["OS/2"].version1 = function (r3, t4, a7) {
+ }, e2["OS/2"].version1 = function(r3, t4, a7) {
var n2 = e2._bin;
return t4 = e2["OS/2"].version0(r3, t4, a7), a7.ulCodePageRange1 = n2.readUint(r3, t4), t4 += 4, a7.ulCodePageRange2 = n2.readUint(r3, t4), t4 += 4;
- }, e2["OS/2"].version2 = function (r3, t4, a7) {
+ }, e2["OS/2"].version2 = function(r3, t4, a7) {
var n2 = e2._bin;
return t4 = e2["OS/2"].version1(r3, t4, a7), a7.sxHeight = n2.readShort(r3, t4), t4 += 2, a7.sCapHeight = n2.readShort(r3, t4), t4 += 2, a7.usDefault = n2.readUshort(r3, t4), t4 += 2, a7.usBreak = n2.readUshort(r3, t4), t4 += 2, a7.usMaxContext = n2.readUshort(r3, t4), t4 += 2;
- }, e2["OS/2"].version5 = function (r3, t4, a7) {
+ }, e2["OS/2"].version5 = function(r3, t4, a7) {
var n2 = e2._bin;
return t4 = e2["OS/2"].version2(r3, t4, a7), a7.usLowerOpticalPointSize = n2.readUshort(r3, t4), t4 += 2, a7.usUpperOpticalPointSize = n2.readUshort(r3, t4), t4 += 2;
- }, e2.post = {}, e2.post.parse = function (r3, t4, a7) {
+ }, e2.post = {}, e2.post.parse = function(r3, t4, a7) {
var n2 = e2._bin, o2 = {};
return o2.version = n2.readFixed(r3, t4), t4 += 4, o2.italicAngle = n2.readFixed(r3, t4), t4 += 4, o2.underlinePosition = n2.readShort(r3, t4), t4 += 2, o2.underlineThickness = n2.readShort(r3, t4), t4 += 2, o2;
- }, null == e2 && (e2 = {}), null == e2.U && (e2.U = {}), e2.U.codeToGlyph = function (r3, e3) {
+ }, null == e2 && (e2 = {}), null == e2.U && (e2.U = {}), e2.U.codeToGlyph = function(r3, e3) {
var t4 = r3.cmap, a7 = -1;
if (null != t4.p0e4 ? a7 = t4.p0e4 : null != t4.p3e1 ? a7 = t4.p3e1 : null != t4.p1e0 ? a7 = t4.p1e0 : null != t4.p0e3 && (a7 = t4.p0e3), -1 == a7) throw "no familiar platform and encoding!";
var n2 = t4.tables[a7];
@@ -80499,7 +80469,7 @@ function typrFactory() {
return 0;
}
throw "unknown cmap table format " + n2.format;
- }, e2.U.glyphToPath = function (r3, t4) {
+ }, e2.U.glyphToPath = function(r3, t4) {
var a7 = { cmds: [], crds: [] };
if (r3.SVG && r3.SVG.entries[t4]) {
var n2 = r3.SVG.entries[t4];
@@ -80508,16 +80478,16 @@ function typrFactory() {
if (r3.CFF) {
var o2 = { x: 0, y: 0, stack: [], nStems: 0, haveWidth: false, width: r3.CFF.Private ? r3.CFF.Private.defaultWidthX : 0, open: false }, s2 = r3.CFF, i4 = r3.CFF.Private;
if (s2.ROS) {
- for (var h = 0; s2.FDSelect[h + 2] <= t4;) h += 2;
+ for (var h = 0; s2.FDSelect[h + 2] <= t4; ) h += 2;
i4 = s2.FDArray[s2.FDSelect[h + 1]].Private;
}
e2.U._drawCFF(r3.CFF.CharStrings[t4], o2, s2, i4, a7);
} else r3.glyf && e2.U._drawGlyf(t4, r3, a7);
return a7;
- }, e2.U._drawGlyf = function (r3, t4, a7) {
+ }, e2.U._drawGlyf = function(r3, t4, a7) {
var n2 = t4.glyf[r3];
null == n2 && (n2 = t4.glyf[r3] = e2.glyf._parseGlyf(t4, r3)), null != n2 && (n2.noc > -1 ? e2.U._simpleGlyph(n2, a7) : e2.U._compoGlyph(n2, t4, a7));
- }, e2.U._simpleGlyph = function (r3, t4) {
+ }, e2.U._simpleGlyph = function(r3, t4) {
for (var a7 = 0; a7 < r3.noc; a7++) {
for (var n2 = 0 == a7 ? 0 : r3.endPts[a7 - 1] + 1, o2 = r3.endPts[a7], s2 = n2; s2 <= o2; s2++) {
var i4 = s2 == n2 ? o2 : s2 - 1, h = s2 == o2 ? n2 : s2 + 1, d2 = 1 & r3.flags[s2], f2 = 1 & r3.flags[i4], u = 1 & r3.flags[h], l2 = r3.xs[s2], v5 = r3.ys[s2];
@@ -80532,7 +80502,7 @@ function typrFactory() {
}
e2.U.P.closePath(t4);
}
- }, e2.U._compoGlyph = function (r3, t4, a7) {
+ }, e2.U._compoGlyph = function(r3, t4, a7) {
for (var n2 = 0; n2 < r3.parts.length; n2++) {
var o2 = { cmds: [], crds: [] }, s2 = r3.parts[n2];
e2.U._drawGlyf(s2.glyphIndex, t4, o2);
@@ -80542,10 +80512,10 @@ function typrFactory() {
}
for (h = 0; h < o2.cmds.length; h++) a7.cmds.push(o2.cmds[h]);
}
- }, e2.U._getGlyphClass = function (r3, t4) {
+ }, e2.U._getGlyphClass = function(r3, t4) {
var a7 = e2._lctf.getInterval(t4, r3);
return -1 == a7 ? 0 : t4[a7 + 2];
- }, e2.U._applySubs = function (r3, t4, a7, n2) {
+ }, e2.U._applySubs = function(r3, t4, a7, n2) {
for (var o2 = r3.length - t4 - 1, s2 = 0; s2 < a7.tabs.length; s2++) if (null != a7.tabs[s2]) {
var i4, h = a7.tabs[s2];
if (!h.coverage || -1 != (i4 = e2._lctf.coverageIndex(h.coverage, r3[t4]))) {
@@ -80554,7 +80524,7 @@ function typrFactory() {
var u = d2[f2], l2 = u.chain.length;
if (!(l2 > o2)) {
for (var v5 = true, c2 = 0, p2 = 0; p2 < l2; p2++) {
- for (; -1 == r3[t4 + c2 + (1 + p2)];) c2++;
+ for (; -1 == r3[t4 + c2 + (1 + p2)]; ) c2++;
u.chain[p2] != r3[t4 + c2 + (1 + p2)] && (v5 = false);
}
if (v5) {
@@ -80593,12 +80563,12 @@ function typrFactory() {
}
}
}
- }, e2.U._glsCovered = function (r3, t4, a7) {
+ }, e2.U._glsCovered = function(r3, t4, a7) {
for (var n2 = 0; n2 < t4.length; n2++) {
if (-1 == e2._lctf.coverageIndex(t4[n2], r3[a7 + n2])) return false;
}
return true;
- }, e2.U.glyphsToPath = function (r3, t4, a7) {
+ }, e2.U.glyphsToPath = function(r3, t4, a7) {
for (var n2 = { cmds: [], crds: [] }, o2 = 0, s2 = 0; s2 < t4.length; s2++) {
var i4 = t4[s2];
if (-1 != i4) {
@@ -80609,32 +80579,32 @@ function typrFactory() {
}
}
return n2;
- }, e2.U.P = {}, e2.U.P.moveTo = function (r3, e3, t4) {
+ }, e2.U.P = {}, e2.U.P.moveTo = function(r3, e3, t4) {
r3.cmds.push("M"), r3.crds.push(e3, t4);
- }, e2.U.P.lineTo = function (r3, e3, t4) {
+ }, e2.U.P.lineTo = function(r3, e3, t4) {
r3.cmds.push("L"), r3.crds.push(e3, t4);
- }, e2.U.P.curveTo = function (r3, e3, t4, a7, n2, o2, s2) {
+ }, e2.U.P.curveTo = function(r3, e3, t4, a7, n2, o2, s2) {
r3.cmds.push("C"), r3.crds.push(e3, t4, a7, n2, o2, s2);
- }, e2.U.P.qcurveTo = function (r3, e3, t4, a7, n2) {
+ }, e2.U.P.qcurveTo = function(r3, e3, t4, a7, n2) {
r3.cmds.push("Q"), r3.crds.push(e3, t4, a7, n2);
- }, e2.U.P.closePath = function (r3) {
+ }, e2.U.P.closePath = function(r3) {
r3.cmds.push("Z");
- }, e2.U._drawCFF = function (r3, t4, a7, n2, o2) {
- for (var s2 = t4.stack, i4 = t4.nStems, h = t4.haveWidth, d2 = t4.width, f2 = t4.open, u = 0, l2 = t4.x, v5 = t4.y, c2 = 0, p2 = 0, U = 0, g = 0, S = 0, m = 0, b5 = 0, y = 0, F = 0, C = 0, _ = { val: 0, size: 0 }; u < r3.length;) {
+ }, e2.U._drawCFF = function(r3, t4, a7, n2, o2) {
+ for (var s2 = t4.stack, i4 = t4.nStems, h = t4.haveWidth, d2 = t4.width, f2 = t4.open, u = 0, l2 = t4.x, v5 = t4.y, c2 = 0, p2 = 0, U = 0, g = 0, S = 0, m = 0, b5 = 0, y = 0, F = 0, C = 0, _ = { val: 0, size: 0 }; u < r3.length; ) {
e2.CFF.getCharString(r3, u, _);
var P = _.val;
if (u += _.size, "o1" == P || "o18" == P) s2.length % 2 != 0 && !h && (d2 = s2.shift() + n2.nominalWidthX), i4 += s2.length >> 1, s2.length = 0, h = true;
else if ("o3" == P || "o23" == P) {
s2.length % 2 != 0 && !h && (d2 = s2.shift() + n2.nominalWidthX), i4 += s2.length >> 1, s2.length = 0, h = true;
} else if ("o4" == P) s2.length > 1 && !h && (d2 = s2.shift() + n2.nominalWidthX, h = true), f2 && e2.U.P.closePath(o2), v5 += s2.pop(), e2.U.P.moveTo(o2, l2, v5), f2 = true;
- else if ("o5" == P) for (; s2.length > 0;) l2 += s2.shift(), v5 += s2.shift(), e2.U.P.lineTo(o2, l2, v5);
+ else if ("o5" == P) for (; s2.length > 0; ) l2 += s2.shift(), v5 += s2.shift(), e2.U.P.lineTo(o2, l2, v5);
else if ("o6" == P || "o7" == P) for (var x = s2.length, I = "o6" == P, w = 0; w < x; w++) {
var k = s2.shift();
I ? l2 += k : v5 += k, I = !I, e2.U.P.lineTo(o2, l2, v5);
}
else if ("o8" == P || "o24" == P) {
x = s2.length;
- for (var G = 0; G + 6 <= x;) c2 = l2 + s2.shift(), p2 = v5 + s2.shift(), U = c2 + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), v5 = g + s2.shift(), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5), G += 6;
+ for (var G = 0; G + 6 <= x; ) c2 = l2 + s2.shift(), p2 = v5 + s2.shift(), U = c2 + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), v5 = g + s2.shift(), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5), G += 6;
"o24" == P && (l2 += s2.shift(), v5 += s2.shift(), e2.U.P.lineTo(o2, l2, v5));
} else {
if ("o11" == P) break;
@@ -80650,10 +80620,10 @@ function typrFactory() {
} else if ("o21" == P) s2.length > 2 && !h && (d2 = s2.shift() + n2.nominalWidthX, h = true), v5 += s2.pop(), l2 += s2.pop(), f2 && e2.U.P.closePath(o2), e2.U.P.moveTo(o2, l2, v5), f2 = true;
else if ("o22" == P) s2.length > 1 && !h && (d2 = s2.shift() + n2.nominalWidthX, h = true), l2 += s2.pop(), f2 && e2.U.P.closePath(o2), e2.U.P.moveTo(o2, l2, v5), f2 = true;
else if ("o25" == P) {
- for (; s2.length > 6;) l2 += s2.shift(), v5 += s2.shift(), e2.U.P.lineTo(o2, l2, v5);
+ for (; s2.length > 6; ) l2 += s2.shift(), v5 += s2.shift(), e2.U.P.lineTo(o2, l2, v5);
c2 = l2 + s2.shift(), p2 = v5 + s2.shift(), U = c2 + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), v5 = g + s2.shift(), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5);
- } else if ("o26" == P) for (s2.length % 2 && (l2 += s2.shift()); s2.length > 0;) c2 = l2, p2 = v5 + s2.shift(), l2 = U = c2 + s2.shift(), v5 = (g = p2 + s2.shift()) + s2.shift(), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5);
- else if ("o27" == P) for (s2.length % 2 && (v5 += s2.shift()); s2.length > 0;) p2 = v5, U = (c2 = l2 + s2.shift()) + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), v5 = g, e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5);
+ } else if ("o26" == P) for (s2.length % 2 && (l2 += s2.shift()); s2.length > 0; ) c2 = l2, p2 = v5 + s2.shift(), l2 = U = c2 + s2.shift(), v5 = (g = p2 + s2.shift()) + s2.shift(), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5);
+ else if ("o27" == P) for (s2.length % 2 && (v5 += s2.shift()); s2.length > 0; ) p2 = v5, U = (c2 = l2 + s2.shift()) + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), v5 = g, e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5);
else if ("o10" == P || "o29" == P) {
var L = "o10" == P ? n2 : a7;
if (0 == s2.length) console.debug("error: empty stack");
@@ -80663,7 +80633,7 @@ function typrFactory() {
}
} else if ("o30" == P || "o31" == P) {
var V2 = s2.length, E = (G = 0, "o31" == P);
- for (G += V2 - (x = -3 & V2); G < x;) E ? (p2 = v5, U = (c2 = l2 + s2.shift()) + s2.shift(), v5 = (g = p2 + s2.shift()) + s2.shift(), x - G == 5 ? (l2 = U + s2.shift(), G++) : l2 = U, E = false) : (c2 = l2, p2 = v5 + s2.shift(), U = c2 + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), x - G == 5 ? (v5 = g + s2.shift(), G++) : v5 = g, E = true), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5), G += 4;
+ for (G += V2 - (x = -3 & V2); G < x; ) E ? (p2 = v5, U = (c2 = l2 + s2.shift()) + s2.shift(), v5 = (g = p2 + s2.shift()) + s2.shift(), x - G == 5 ? (l2 = U + s2.shift(), G++) : l2 = U, E = false) : (c2 = l2, p2 = v5 + s2.shift(), U = c2 + s2.shift(), g = p2 + s2.shift(), l2 = U + s2.shift(), x - G == 5 ? (v5 = g + s2.shift(), G++) : v5 = g, E = true), e2.U.P.curveTo(o2, c2, p2, U, g, l2, v5), G += 4;
} else {
if ("o" == (P + "").charAt(0)) throw console.debug("Unknown operation: " + P, r3), P;
s2.push(P);
@@ -80677,8 +80647,8 @@ function typrFactory() {
})({}).Typr;
}
function woff2otfFactory() {
- return (function (r2) {
- var e2 = Uint8Array, n2 = Uint16Array, t3 = Uint32Array, a6 = new e2([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0]), i4 = new e2([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0]), o2 = new e2([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), f2 = function (r3, e3) {
+ return (function(r2) {
+ var e2 = Uint8Array, n2 = Uint16Array, t3 = Uint32Array, a6 = new e2([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0]), i4 = new e2([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0]), o2 = new e2([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), f2 = function(r3, e3) {
for (var a7 = new n2(31), i5 = 0; i5 < 31; ++i5) a7[i5] = e3 += 1 << r3[i5 - 1];
var o3 = new t3(a7[30]);
for (i5 = 1; i5 < 30; ++i5) for (var f3 = a7[i5]; f3 < a7[i5 + 1]; ++f3) o3[f3] = f3 - a7[i5] << 5 | i5;
@@ -80689,7 +80659,7 @@ function woff2otfFactory() {
var h = (43690 & g) >>> 1 | (21845 & g) << 1;
h = (61680 & (h = (52428 & h) >>> 2 | (13107 & h) << 2)) >>> 4 | (3855 & h) << 4, c2[g] = ((65280 & h) >>> 8 | (255 & h) << 8) >>> 1;
}
- var w = function (r3, e3, t4) {
+ var w = function(r3, e3, t4) {
for (var a7 = r3.length, i5 = 0, o3 = new n2(e3); i5 < a7; ++i5) ++o3[r3[i5] - 1];
var f3, u2 = new n2(e3);
for (i5 = 0; i5 < e3; ++i5) u2[i5] = u2[i5 - 1] + o3[i5 - 1] << 1;
@@ -80706,25 +80676,25 @@ function woff2otfFactory() {
for (g = 280; g < 288; ++g) d2[g] = 8;
var m = new e2(32);
for (g = 0; g < 32; ++g) m[g] = 5;
- var b5 = w(d2, 9, 1), p2 = w(m, 5, 1), y = function (r3) {
+ var b5 = w(d2, 9, 1), p2 = w(m, 5, 1), y = function(r3) {
for (var e3 = r3[0], n3 = 1; n3 < r3.length; ++n3) r3[n3] > e3 && (e3 = r3[n3]);
return e3;
- }, L = function (r3, e3, n3) {
+ }, L = function(r3, e3, n3) {
var t4 = e3 / 8 | 0;
return (r3[t4] | r3[t4 + 1] << 8) >> (7 & e3) & n3;
- }, U = function (r3, e3) {
+ }, U = function(r3, e3) {
var n3 = e3 / 8 | 0;
return (r3[n3] | r3[n3 + 1] << 8 | r3[n3 + 2] << 16) >> (7 & e3);
- }, k = ["unexpected EOF", "invalid block type", "invalid length/literal", "invalid distance", "stream finished", "no stream handler", , "no callback", "invalid UTF-8 data", "extra field too long", "date not in range 1980-2099", "filename too long", "stream finishing", "invalid zip data"], T = function (r3, e3, n3) {
+ }, k = ["unexpected EOF", "invalid block type", "invalid length/literal", "invalid distance", "stream finished", "no stream handler", , "no callback", "invalid UTF-8 data", "extra field too long", "date not in range 1980-2099", "filename too long", "stream finishing", "invalid zip data"], T = function(r3, e3, n3) {
var t4 = new Error(e3 || k[r3]);
if (t4.code = r3, Error.captureStackTrace && Error.captureStackTrace(t4, T), !n3) throw t4;
return t4;
- }, O = function (r3, f3, u2) {
+ }, O = function(r3, f3, u2) {
var s3 = r3.length;
if (!s3 || u2 && !u2.l && s3 < 5) return f3 || new e2(0);
var c5 = !f3 || u2, g2 = !u2 || u2.i;
u2 || (u2 = {}), f3 || (f3 = new e2(3 * s3));
- var h2, d3 = function (r4) {
+ var h2, d3 = function(r4) {
var n3 = f3.length;
if (r4 > n3) {
var t4 = new e2(Math.max(2 * n3, r4));
@@ -80751,12 +80721,12 @@ function woff2otfFactory() {
for (var F = new e2(C), P = new e2(19), q = 0; q < z; ++q) P[o2[q]] = L(r3, k2 + 3 * q, 7);
k2 += 3 * z;
var B = y(P), G = (1 << B) - 1, H = w(P, B, 1);
- for (q = 0; q < C;) {
+ for (q = 0; q < C; ) {
var I, J = H[L(r3, k2, G)];
if (k2 += 15 & J, (I = J >>> 4) < 16) F[q++] = I;
else {
var K = 0, N = 0;
- for (16 == I ? (N = 3 + L(r3, k2, 3), k2 += 2, K = F[q - 1]) : 17 == I ? (N = 3 + L(r3, k2, 7), k2 += 3) : 18 == I && (N = 11 + L(r3, k2, 127), k2 += 7); N--;) F[q++] = K;
+ for (16 == I ? (N = 3 + L(r3, k2, 3), k2 += 2, K = F[q - 1]) : 17 == I ? (N = 3 + L(r3, k2, 7), k2 += 3) : 18 == I && (N = 11 + L(r3, k2, 127), k2 += 7); N--; ) F[q++] = K;
}
}
var Q = F.subarray(0, j), R2 = F.subarray(j);
@@ -80803,7 +80773,7 @@ function woff2otfFactory() {
}
u2.l = A2, u2.p = Y, u2.b = O2, A2 && (m2 = 1, u2.m = E, u2.d = x2, u2.n = D);
} while (!m2);
- return O2 == f3.length ? f3 : (function (r4, a7, i5) {
+ return O2 == f3.length ? f3 : (function(r4, a7, i5) {
(null == a7 || a7 < 0) && (a7 = 0), (null == i5 || i5 > r4.length) && (i5 = r4.length);
var o3 = new (r4 instanceof n2 ? n2 : r4 instanceof t3 ? t3 : e2)(i5 - a7);
return o3.set(r4.subarray(a7, i5)), o3;
@@ -80814,7 +80784,7 @@ function woff2otfFactory() {
x.decode(A, { stream: true }), 1;
} catch (r3) {
}
- return r2.convert_streams = function (r3) {
+ return r2.convert_streams = function(r3) {
var e3 = new DataView(r3), n3 = 0;
function t4() {
var r4 = e3.getUint16(n3);
@@ -80830,15 +80800,15 @@ function woff2otfFactory() {
function o3(r4) {
m2.setUint32(b6, r4), b6 += 4;
}
- for (var f3 = { signature: a7(), flavor: a7(), length: a7(), numTables: t4(), reserved: t4(), totalSfntSize: a7(), majorVersion: t4(), minorVersion: t4(), metaOffset: a7(), metaLength: a7(), metaOrigLength: a7(), privOffset: a7(), privLength: a7() }, u2 = 0; Math.pow(2, u2) <= f3.numTables;) u2++;
+ for (var f3 = { signature: a7(), flavor: a7(), length: a7(), numTables: t4(), reserved: t4(), totalSfntSize: a7(), majorVersion: t4(), minorVersion: t4(), metaOffset: a7(), metaLength: a7(), metaOrigLength: a7(), privOffset: a7(), privLength: a7() }, u2 = 0; Math.pow(2, u2) <= f3.numTables; ) u2++;
u2--;
for (var v6 = 16 * Math.pow(2, u2), s3 = 16 * f3.numTables - v6, l3 = 12, c5 = [], g2 = 0; g2 < f3.numTables; g2++) c5.push({ tag: a7(), offset: a7(), compLength: a7(), origLength: a7(), origChecksum: a7() }), l3 += 16;
- var h2, w2 = new Uint8Array(12 + 16 * c5.length + c5.reduce((function (r4, e4) {
+ var h2, w2 = new Uint8Array(12 + 16 * c5.length + c5.reduce((function(r4, e4) {
return r4 + e4.origLength + 4;
}), 0)), d3 = w2.buffer, m2 = new DataView(d3), b6 = 0;
- return o3(f3.flavor), i5(f3.numTables), i5(v6), i5(u2), i5(s3), c5.forEach((function (r4) {
+ return o3(f3.flavor), i5(f3.numTables), i5(v6), i5(u2), i5(s3), c5.forEach((function(r4) {
o3(r4.tag), o3(r4.origChecksum), o3(l3), o3(r4.origLength), r4.outOffset = l3, (l3 += r4.origLength) % 4 != 0 && (l3 += 4 - l3 % 4);
- })), c5.forEach((function (e4) {
+ })), c5.forEach((function(e4) {
var n4, t5 = r3.slice(e4.offset, e4.offset + e4.compLength);
if (e4.compLength != e4.origLength) {
var a8 = new Uint8Array(e4.origLength);
@@ -80880,7 +80850,7 @@ function parserFactory(Typr, woff2otf) {
skip = parseInt(skip, 36);
step = step ? parseInt(step, 36) : 0;
joiningTypeMap.set(lastCode += skip, m[type]);
- for (let i4 = step; i4--;) {
+ for (let i4 = step; i4--; ) {
joiningTypeMap.set(++lastCode, m[type]);
}
});
@@ -81179,33 +81149,33 @@ var workerModule = defineWorkerModule({
}
});
function unicodeFontResolverClientFactory() {
- return (function (t3) {
- var n2 = function () {
+ return (function(t3) {
+ var n2 = function() {
this.buckets = /* @__PURE__ */ new Map();
};
- n2.prototype.add = function (t4) {
+ n2.prototype.add = function(t4) {
var n3 = t4 >> 5;
this.buckets.set(n3, (this.buckets.get(n3) || 0) | 1 << (31 & t4));
- }, n2.prototype.has = function (t4) {
+ }, n2.prototype.has = function(t4) {
var n3 = this.buckets.get(t4 >> 5);
return void 0 !== n3 && 0 != (n3 & 1 << (31 & t4));
- }, n2.prototype.serialize = function () {
+ }, n2.prototype.serialize = function() {
var t4 = [];
- return this.buckets.forEach((function (n3, r3) {
+ return this.buckets.forEach((function(n3, r3) {
t4.push((+r3).toString(36) + ":" + n3.toString(36));
})), t4.join(",");
- }, n2.prototype.deserialize = function (t4) {
+ }, n2.prototype.deserialize = function(t4) {
var n3 = this;
- this.buckets.clear(), t4.split(",").forEach((function (t5) {
+ this.buckets.clear(), t4.split(",").forEach((function(t5) {
var r3 = t5.split(":");
n3.buckets.set(parseInt(r3[0], 36), parseInt(r3[1], 36));
}));
};
var r2 = Math.pow(2, 8), e2 = r2 - 1, o2 = ~e2;
function a6(t4) {
- var n3 = (function (t5) {
+ var n3 = (function(t5) {
return t5 & o2;
- })(t4).toString(16), e3 = (function (t5) {
+ })(t4).toString(16), e3 = (function(t5) {
return (t5 & o2) + r2 - 1;
})(t4).toString(16);
return "codepoint-index/plane" + (t4 >> 16) + "/" + n3 + "-" + e3 + ".json";
@@ -81216,30 +81186,30 @@ function unicodeFontResolverClientFactory() {
}
function u(t4, n3) {
var r3;
- (r3 = t4, r3.replace(/U\+/gi, "").replace(/^,+|,+$/g, "").split(/,+/).map((function (t5) {
- return t5.split("-").map((function (t6) {
+ (r3 = t4, r3.replace(/U\+/gi, "").replace(/^,+|,+$/g, "").split(/,+/).map((function(t5) {
+ return t5.split("-").map((function(t6) {
return parseInt(t6.trim(), 16);
}));
- }))).forEach((function (t5) {
+ }))).forEach((function(t5) {
var r4 = t5[0], e3 = t5[1];
void 0 === e3 && (e3 = r4), n3(r4, e3);
}));
}
function c2(t4, n3) {
- u(t4, (function (t5, r3) {
+ u(t4, (function(t5, r3) {
for (var e3 = t5; e3 <= r3; e3++) n3(e3);
}));
}
var s2 = {}, f2 = {}, l2 = /* @__PURE__ */ new WeakMap(), v5 = "https://cdn.jsdelivr.net/gh/lojjic/unicode-font-resolver@v1.0.1/packages/data";
function d2(t4) {
var r3 = l2.get(t4);
- return r3 || (r3 = new n2(), c2(t4.ranges, (function (t5) {
+ return r3 || (r3 = new n2(), c2(t4.ranges, (function(t5) {
return r3.add(t5);
})), l2.set(t4, r3)), r3;
}
var h, p2 = /* @__PURE__ */ new Map();
function g(t4, n3, r3) {
- return t4[n3] ? n3 : t4[r3] ? r3 : (function (t5) {
+ return t4[n3] ? n3 : t4[r3] ? r3 : (function(t5) {
for (var n4 in t5) return n4;
})(t4);
}
@@ -81252,13 +81222,13 @@ function unicodeFontResolverClientFactory() {
return r3;
}
function k(t4) {
- return h || (h = /* @__PURE__ */ new Set(), c2("9-D,20,85,A0,1680,2000-200A,2028-202F,205F,3000", (function (t5) {
+ return h || (h = /* @__PURE__ */ new Set(), c2("9-D,20,85,A0,1680,2000-200A,2028-202F,205F,3000", (function(t5) {
h.add(t5);
}))), h.has(t4);
}
- return t3.CodePointSet = n2, t3.clearCache = function () {
+ return t3.CodePointSet = n2, t3.clearCache = function() {
s2 = {}, f2 = {};
- }, t3.getFontsForString = function (t4, n3) {
+ }, t3.getFontsForString = function(t4, n3) {
void 0 === n3 && (n3 = {});
var r3, e3 = n3.lang;
void 0 === e3 && (e3 = new RegExp("\\p{Script=Hangul}", "u").test(r3 = t4) ? "ko" : new RegExp("\\p{Script=Hiragana}|\\p{Script=Katakana}", "u").test(r3) ? "ja" : "en");
@@ -81271,26 +81241,26 @@ function unicodeFontResolverClientFactory() {
var l3 = (n3.dataUrl || v5).replace(/\/$/g, ""), h2 = /* @__PURE__ */ new Map(), y = new Uint8Array(t4.length), b5 = {}, m = {}, A = new Array(t4.length), S = /* @__PURE__ */ new Map(), j = false;
function M(t5) {
var n4 = p2.get(t5);
- return n4 || (n4 = fetch(l3 + "/" + t5).then((function (t6) {
+ return n4 || (n4 = fetch(l3 + "/" + t5).then((function(t6) {
if (!t6.ok) throw new Error(t6.statusText);
- return t6.json().then((function (t7) {
+ return t6.json().then((function(t7) {
if (!Array.isArray(t7) || 1 !== t7[0]) throw new Error("Incorrect schema version; need 1, got " + t7[0]);
return t7[1];
}));
- })).catch((function (n5) {
+ })).catch((function(n5) {
if (l3 !== v5) return j || (console.error('unicode-font-resolver: Failed loading from dataUrl "' + l3 + '", trying default CDN. ' + n5.message), j = true), l3 = v5, p2.delete(t5), M(t5);
throw n5;
})), p2.set(t5, n4)), n4;
}
- for (var P = function (n4) {
+ for (var P = function(n4) {
var r4 = t4.codePointAt(n4), e4 = a6(r4);
- A[n4] = e4, s2[e4] || S.has(e4) || S.set(e4, M(e4).then((function (t5) {
+ A[n4] = e4, s2[e4] || S.has(e4) || S.set(e4, M(e4).then((function(t5) {
s2[e4] = t5;
}))), r4 > 65535 && (n4++, E = n4);
}, E = 0; E < t4.length; E++) P(E);
- return Promise.all(S.values()).then((function () {
+ return Promise.all(S.values()).then((function() {
S.clear();
- for (var n4 = function (n5) {
+ for (var n4 = function(n5) {
var o4 = t4.codePointAt(n5), a7 = null, u3 = s2[A[n5]], c6 = void 0;
for (var l4 in u3) {
var v6 = m[l4];
@@ -81310,12 +81280,12 @@ function unicodeFontResolverClientFactory() {
}
}
}
- a7 || (console.debug("No font coverage for U+" + o4.toString(16)), a7 = "latin"), A[n5] = a7, f2[a7] || S.has(a7) || S.set(a7, M("font-meta/" + a7 + ".json").then((function (t5) {
+ a7 || (console.debug("No font coverage for U+" + o4.toString(16)), a7 = "latin"), A[n5] = a7, f2[a7] || S.has(a7) || S.set(a7, M("font-meta/" + a7 + ".json").then((function(t5) {
f2[a7] = t5;
}))), o4 > 65535 && (n5++, r4 = n5);
}, r4 = 0; r4 < t4.length; r4++) n4(r4);
return Promise.all(S.values());
- })).then((function () {
+ })).then((function() {
for (var n4, r4 = null, e4 = 0; e4 < t4.length; e4++) {
var a7 = t4.codePointAt(e4);
if (r4 && (k(a7) || d2(r4).has(a7))) y[e4] = y[e4 - 1];
@@ -81347,7 +81317,7 @@ function createFontResolver(fontParser, unicodeFontResolverClient) {
const request = new XMLHttpRequest();
request.open("get", url, true);
request.responseType = "arraybuffer";
- request.onload = function () {
+ request.onload = function() {
if (request.status >= 400) {
onError(new Error(request.statusText));
} else if (request.status > 0) {
@@ -81382,7 +81352,7 @@ function createFontResolver(fontParser, unicodeFontResolverClient) {
});
}
}
- return function (text, callback, {
+ return function(text, callback, {
lang,
fonts: userFonts = [],
style = "normal",
@@ -81670,7 +81640,7 @@ function createTypesetter(resolveFonts, bidi) {
nextLine = new TextLine();
lineXOffset = -glyphX;
} else {
- for (let i4 = curLineCount; i4--;) {
+ for (let i4 = curLineCount; i4--; ) {
if (i4 === 0 && overflowWrap === "break-word") {
nextLine = new TextLine();
lineXOffset = -glyphX;
@@ -81679,7 +81649,7 @@ function createTypesetter(resolveFonts, bidi) {
nextLine = currentLine.splitAt(i4 + 1);
const adjustX = nextLine.glyphAt(0).x;
lineXOffset -= adjustX;
- for (let j = nextLine.count; j--;) {
+ for (let j = nextLine.count; j--; ) {
nextLine.glyphAt(j).x -= adjustX;
}
break;
@@ -81711,7 +81681,7 @@ function createTypesetter(resolveFonts, bidi) {
let totalHeight = 0;
lines.forEach((line) => {
let isTrailingWhitespace = true;
- for (let i4 = line.count; i4--;) {
+ for (let i4 = line.count; i4--; ) {
const glyphInfo = line.glyphAt(i4);
if (isTrailingWhitespace && !glyphInfo.glyphObj.isWhitespace) {
line.width = glyphInfo.x + glyphInfo.width;
@@ -81775,7 +81745,7 @@ function createTypesetter(resolveFonts, bidi) {
let { count: lineGlyphCount, width: lineWidth } = line;
if (lineGlyphCount > 0) {
let trailingWhitespaceCount = 0;
- for (let i4 = lineGlyphCount; i4-- && line.glyphAt(i4).glyphObj.isWhitespace;) {
+ for (let i4 = lineGlyphCount; i4-- && line.glyphAt(i4).glyphObj.isWhitespace; ) {
trailingWhitespaceCount++;
}
let lineXOffset2 = 0;
@@ -81786,7 +81756,7 @@ function createTypesetter(resolveFonts, bidi) {
lineXOffset2 = maxLineWidth - lineWidth;
} else if (textAlign === "justify" && line.isSoftWrapped) {
let whitespaceCount = 0;
- for (let i4 = lineGlyphCount - trailingWhitespaceCount; i4--;) {
+ for (let i4 = lineGlyphCount - trailingWhitespaceCount; i4--; ) {
if (line.glyphAt(i4).glyphObj.isWhitespace) {
whitespaceCount++;
}
@@ -82097,7 +82067,7 @@ function generateSDF_JS_Worker(width, height, path, viewBox, distance3, exponent
],
init(_createSDFGenerator, now2) {
const generate = _createSDFGenerator().javascript.generate;
- return function (...args) {
+ return function(...args) {
const start = now2();
const textureData = generate(...args);
return {
@@ -82390,7 +82360,7 @@ var typesetInWorker = defineWorkerModule({
typesetterWorkerModule
],
init(typesetter) {
- return function (args) {
+ return function(args) {
return new Promise((resolve) => {
typesetter.typeset(args, resolve);
});
@@ -82520,7 +82490,7 @@ var GlyphsGeometry = class extends InstancedBufferGeometry {
let count = this.getAttribute(glyphIndexAttrName).count;
let chunks = this._chunkedBounds;
if (chunks) {
- for (let i4 = chunks.length; i4--;) {
+ for (let i4 = chunks.length; i4--; ) {
count = chunks[i4].end;
let rect = chunks[i4].rect;
if (rect[1] < clipRect.w && rect[3] > clipRect.y && rect[0] < clipRect.z && rect[2] > clipRect.x) {
@@ -83445,7 +83415,7 @@ var Effects = React23.forwardRef(({
// node_modules/@react-three/drei/core/GradientTexture.js
var React24 = __toESM(require_react());
-var GradientType = (function (GradientType2) {
+var GradientType = (function(GradientType2) {
GradientType2["Linear"] = "linear";
GradientType2["Radial"] = "radial";
return GradientType2;
@@ -90773,7 +90743,7 @@ var _Stats = class _Stats2 {
patchThreeRenderer(renderer) {
const originalRenderMethod = renderer.render;
const statsInstance = this;
- renderer.render = function (scene, camera) {
+ renderer.render = function(scene, camera) {
statsInstance.begin();
originalRenderMethod.call(this, scene, camera);
statsInstance.end();
@@ -90873,7 +90843,7 @@ function useCamera(camera, props) {
const [raycast2] = React69.useState(() => {
const raycaster = new Raycaster();
if (props) applyProps(raycaster, props);
- return function (_, intersects) {
+ return function(_, intersects) {
raycaster.setFromCamera(pointer, camera instanceof Camera ? camera : camera.current);
const rc = this.constructor.prototype.raycast.bind(this);
if (rc) rc(raycaster, intersects);
@@ -90887,7 +90857,7 @@ var React70 = __toESM(require_react());
// node_modules/detect-gpu/dist/detect-gpu.esm.js
function e(e2, t3, r2, n2) {
- return new (r2 || (r2 = Promise))((function (o2, a6) {
+ return new (r2 || (r2 = Promise))((function(o2, a6) {
function i4(e3) {
try {
d2(n2.next(e3));
@@ -90904,7 +90874,7 @@ function e(e2, t3, r2, n2) {
}
function d2(e3) {
var t4;
- e3.done ? o2(e3.value) : (t4 = e3.value, t4 instanceof r2 ? t4 : new r2((function (e4) {
+ e3.done ? o2(e3.value) : (t4 = e3.value, t4 instanceof r2 ? t4 : new r2((function(e4) {
e4(t4);
}))).then(i4, c2);
}
@@ -90923,7 +90893,7 @@ var o = (() => {
})();
function a5(e2, t3, r2) {
if (!r2) return [t3];
- const n2 = (function (e3) {
+ const n2 = (function(e3) {
const t4 = "\n precision highp float;\n attribute vec3 aPosition;\n varying float vvv;\n void main() {\n vvv = 0.31622776601683794;\n gl_Position = vec4(aPosition, 1.0);\n }\n ", r3 = "\n precision highp float;\n varying float vvv;\n void main() {\n vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * vvv;\n enc = fract(enc);\n enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n gl_FragColor = enc;\n }\n ", n3 = e3.createShader(35633), o2 = e3.createShader(35632), a7 = e3.createProgram();
if (!(o2 && n3 && a7)) return;
e3.shaderSource(n3, t4), e3.shaderSource(o2, r3), e3.compileShader(n3), e3.compileShader(o2), e3.attachShader(a7, n3), e3.attachShader(a7, o2), e3.linkProgram(a7), e3.detachShader(a7, n3), e3.detachShader(a7, o2), e3.deleteShader(n3), e3.deleteShader(o2), e3.useProgram(a7);
@@ -90950,13 +90920,13 @@ function l(e2, t3) {
const r2 = e2;
e2.length > t3.length && (e2 = t3, t3 = r2);
let n2 = e2.length, o2 = t3.length;
- for (; n2 > 0 && e2.charCodeAt(~-n2) === t3.charCodeAt(~-o2);) n2--, o2--;
+ for (; n2 > 0 && e2.charCodeAt(~-n2) === t3.charCodeAt(~-o2); ) n2--, o2--;
let a6, i4 = 0;
- for (; i4 < n2 && e2.charCodeAt(i4) === t3.charCodeAt(i4);) i4++;
+ for (; i4 < n2 && e2.charCodeAt(i4) === t3.charCodeAt(i4); ) i4++;
if (n2 -= i4, o2 -= i4, 0 === n2) return o2;
let l2, s2, f2 = 0, u = 0, g = 0;
- for (; u < n2;) d[u] = e2.charCodeAt(i4 + u), c[u] = ++u;
- for (; g < o2;) for (a6 = t3.charCodeAt(i4 + g), l2 = g++, f2 = g, u = 0; u < n2; u++) s2 = a6 === d[u] ? l2 : l2 + 1, l2 = c[u], f2 = c[u] = l2 > f2 ? s2 > f2 ? f2 + 1 : s2 : s2 > l2 ? l2 + 1 : s2;
+ for (; u < n2; ) d[u] = e2.charCodeAt(i4 + u), c[u] = ++u;
+ for (; g < o2; ) for (a6 = t3.charCodeAt(i4 + g), l2 = g++, f2 = g, u = 0; u < n2; u++) s2 = a6 === d[u] ? l2 : l2 + 1, l2 = c[u], f2 = c[u] = l2 > f2 ? s2 > f2 ? f2 + 1 : s2 : s2 > l2 ? l2 + 1 : s2;
return f2;
}
function s(e2) {
@@ -90975,7 +90945,7 @@ var f = ({ mobileTiers: c2 = [0, 15, 30, 60], desktopTiers: d2 = [0, 15, 30, 60]
let S, b5 = "";
if (A) A = r(A), S = [A];
else {
- const e2 = u || (function (e3, t4 = false) {
+ const e2 = u || (function(e3, t4 = false) {
const r2 = { alpha: false, antialias: false, depth: false, failIfMajorPerformanceCaveat: t4, powerPreference: "high-performance", stencil: false };
e3 && delete r2.powerPreference;
const n2 = window.document.createElement("canvas"), o2 = n2.getContext("webgl", r2) || n2.getContext("experimental-webgl", r2);
@@ -90984,11 +90954,11 @@ var f = ({ mobileTiers: c2 = [0, 15, 30, 60], desktopTiers: d2 = [0, 15, 30, 60]
if (!e2) return P(0, "WEBGL_UNSUPPORTED");
const t3 = (null == o ? void 0 : o.isFirefox) ? null : e2.getExtension("WEBGL_debug_renderer_info");
if (A = t3 ? e2.getParameter(t3.UNMASKED_RENDERER_WEBGL) : e2.getParameter(e2.RENDERER), !A) return P(1, "FALLBACK");
- b5 = A, A = r(A), S = (function (e3, t4, r2) {
+ b5 = A, A = r(A), S = (function(e3, t4, r2) {
return "apple gpu" === t4 ? a5(e3, t4, r2) : [t4];
})(e2, A, v5);
}
- const E = (yield Promise.all(S.map((function (t3) {
+ const E = (yield Promise.all(S.map((function(t3) {
var r2;
return e(this, void 0, void 0, (function* () {
const e2 = ((e3) => {
@@ -91004,7 +90974,7 @@ var f = ({ mobileTiers: c2 = [0, 15, 30, 60], desktopTiers: d2 = [0, 15, 30, 60]
if (e3 instanceof i2) throw e3;
return;
}
- const c5 = (function (e3) {
+ const c5 = (function(e3) {
var t4;
const r3 = (e3 = e3.replace(/\([^)]+\)/, "")).match(/\d+/) || e3.match(/(\W|^)([A-Za-z]{1,3})(\W|$)/g);
return null !== (t4 = null == r3 ? void 0 : r3.join("").replace(/\W|amd/g, "")) && void 0 !== t4 ? t4 : "";
@@ -91779,7 +91749,7 @@ var SeparatingAxisBounds = class {
return this.min > other.max || other.min > this.max;
}
};
-SeparatingAxisBounds.prototype.setFromBox = (function () {
+SeparatingAxisBounds.prototype.setFromBox = (function() {
const p2 = new Vector3();
return function setFromBox(axis, box) {
const boxMin = box.min;
@@ -91802,7 +91772,7 @@ SeparatingAxisBounds.prototype.setFromBox = (function () {
this.max = max2;
};
})();
-var areIntersecting = (function () {
+var areIntersecting = (function() {
const cacheSatBounds = new SeparatingAxisBounds();
return function areIntersecting2(shape1, shape2) {
const points1 = shape1.points;
@@ -91827,7 +91797,7 @@ var areIntersecting = (function () {
})();
// node_modules/three-mesh-bvh/src/math/MathUtilities.js
-var closestPointLineToLine = (function () {
+var closestPointLineToLine = (function() {
const dir1 = new Vector3();
const dir2 = new Vector3();
const v02 = new Vector3();
@@ -91856,7 +91826,7 @@ var closestPointLineToLine = (function () {
result.y = d22;
};
})();
-var closestPointsSegmentToSegment = (function () {
+var closestPointsSegmentToSegment = (function() {
const paramResult = new Vector2();
const temp14 = new Vector3();
const temp23 = new Vector3();
@@ -91913,7 +91883,7 @@ var closestPointsSegmentToSegment = (function () {
}
};
})();
-var sphereIntersectTriangle = (function () {
+var sphereIntersectTriangle = (function() {
const closestPointTemp = new Vector3();
const projectedPointTemp = new Vector3();
const planeTemp = new Plane();
@@ -91991,7 +91961,7 @@ var ExtendedTriangle = class extends Triangle {
this.needsUpdate = false;
}
};
-ExtendedTriangle.prototype.closestPointToSegment = (function () {
+ExtendedTriangle.prototype.closestPointToSegment = (function() {
const point1 = new Vector3();
const point2 = new Vector3();
const edge = new Line3();
@@ -92029,7 +91999,7 @@ ExtendedTriangle.prototype.closestPointToSegment = (function () {
return Math.sqrt(closestDistanceSq);
};
})();
-ExtendedTriangle.prototype.intersectsTriangle = (function () {
+ExtendedTriangle.prototype.intersectsTriangle = (function() {
const saTri2 = new ExtendedTriangle();
const arr1 = new Array(3);
const arr2 = new Array(3);
@@ -92193,14 +92163,14 @@ ExtendedTriangle.prototype.intersectsTriangle = (function () {
}
};
})();
-ExtendedTriangle.prototype.distanceToPoint = (function () {
+ExtendedTriangle.prototype.distanceToPoint = (function() {
const target2 = new Vector3();
return function distanceToPoint(point) {
this.closestPointToPoint(point, target2);
return point.distanceTo(target2);
};
})();
-ExtendedTriangle.prototype.distanceToTriangle = (function () {
+ExtendedTriangle.prototype.distanceToTriangle = (function() {
const point = new Vector3();
const point2 = new Vector3();
const cornerFields = ["a", "b", "c"];
@@ -92287,7 +92257,7 @@ var OrientedBox = class {
this.needsUpdate = true;
}
};
-OrientedBox.prototype.update = /* @__PURE__ */ (function () {
+OrientedBox.prototype.update = /* @__PURE__ */ (function() {
return function update2() {
const matrix6 = this.matrix;
const min = this.min;
@@ -92324,7 +92294,7 @@ OrientedBox.prototype.update = /* @__PURE__ */ (function () {
this.needsUpdate = false;
};
})();
-OrientedBox.prototype.intersectsBox = (function () {
+OrientedBox.prototype.intersectsBox = (function() {
const aabbBounds = new SeparatingAxisBounds();
return function intersectsBox(box) {
if (this.needsUpdate) {
@@ -92353,7 +92323,7 @@ OrientedBox.prototype.intersectsBox = (function () {
return true;
};
})();
-OrientedBox.prototype.intersectsTriangle = (function () {
+OrientedBox.prototype.intersectsTriangle = (function() {
const saTri = new ExtendedTriangle();
const pointsArr = new Array(3);
const cachedSatBounds = new SeparatingAxisBounds();
@@ -92403,7 +92373,7 @@ OrientedBox.prototype.intersectsTriangle = (function () {
return true;
};
})();
-OrientedBox.prototype.closestPointToPoint = /* @__PURE__ */ (function () {
+OrientedBox.prototype.closestPointToPoint = /* @__PURE__ */ (function() {
return function closestPointToPoint2(point, target1) {
if (this.needsUpdate) {
this.update();
@@ -92412,14 +92382,14 @@ OrientedBox.prototype.closestPointToPoint = /* @__PURE__ */ (function () {
return target1;
};
})();
-OrientedBox.prototype.distanceToPoint = (function () {
+OrientedBox.prototype.distanceToPoint = (function() {
const target2 = new Vector3();
return function distanceToPoint(point) {
this.closestPointToPoint(point, target2);
return point.distanceTo(target2);
};
})();
-OrientedBox.prototype.distanceToBox = (function () {
+OrientedBox.prototype.distanceToBox = (function() {
const xyzFields = ["x", "y", "z"];
const segments1 = new Array(12).fill().map(() => new Line3());
const segments2 = new Array(12).fill().map(() => new Line3());
@@ -92608,7 +92578,7 @@ function shapecastTraverse(nodeIndex32, geometry3, intersectsBoundsFunc, interse
arrayToBox(BOUNDING_DATA_INDEX(nodeIndex32), float32Array2, _box1);
return intersectsRangeFunc(offset, count, false, depth, nodeIndexByteOffset + nodeIndex32, _box1);
} else {
- let getLeftOffset = function (nodeIndex322) {
+ let getLeftOffset = function(nodeIndex322) {
const { uint16Array: uint16Array3, uint32Array: uint32Array3 } = BufferStack;
let nodeIndex162 = nodeIndex322 * 2;
while (!IS_LEAF(nodeIndex162, uint16Array3)) {
@@ -92616,7 +92586,7 @@ function shapecastTraverse(nodeIndex32, geometry3, intersectsBoundsFunc, interse
nodeIndex162 = nodeIndex322 * 2;
}
return OFFSET(nodeIndex322, uint32Array3);
- }, getRightEndOffset = function (nodeIndex322) {
+ }, getRightEndOffset = function(nodeIndex322) {
const { uint16Array: uint16Array3, uint32Array: uint32Array3 } = BufferStack;
let nodeIndex162 = nodeIndex322 * 2;
while (!IS_LEAF(nodeIndex162, uint16Array3)) {
@@ -94323,7 +94293,7 @@ var MeshBVH = class _MeshBVH {
};
if (intersectsRanges) {
const originalIntersectsRanges = intersectsRanges;
- intersectsRanges = function (offset1, count1, offset2, count2, depth1, index1, depth2, index2) {
+ intersectsRanges = function(offset1, count1, offset2, count2, depth1, index1, depth2, index2) {
if (!originalIntersectsRanges(offset1, count1, offset2, count2, depth1, index1, depth2, index2)) {
return iterateOverDoubleTriangles(offset1, count1, offset2, count2, depth1, index1, depth2, index2);
}
@@ -97359,7 +97329,7 @@ var MeshTransmissionMaterialImpl = class extends MeshPhysicalMaterial {
if (transmissionSampler) shader.defines.USE_SAMPLER = "";
else shader.defines.USE_TRANSMISSION = "";
shader.fragmentShader = /*glsl*/
- `
+ `
uniform float chromaticAberration;
uniform float anisotropicBlur;
uniform float time;
@@ -98065,7 +98035,7 @@ var Resize = React95.forwardRef(({
// node_modules/@react-three/drei/core/Bounds.js
var React96 = __toESM(require_react());
-var AnimationState = (function (AnimationState2) {
+var AnimationState = (function(AnimationState2) {
AnimationState2[AnimationState2["NONE"] = 0] = "NONE";
AnimationState2[AnimationState2["START"] = 1] = "START";
AnimationState2[AnimationState2["ACTIVE"] = 2] = "ACTIVE";
@@ -101815,7 +101785,7 @@ var WireframeMaterialShaders = {
)
};
var WireframeMaterial = shaderMaterial(WireframeMaterialShaders.uniforms, WireframeMaterialShaders.vertex + /* glsl */
- `
+`
void main() {
initWireframe();
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
@@ -104850,13 +104820,13 @@ var import_react26 = __toESM(require_react());
// node_modules/@react-three/drei/web/Facemesh.js
var React139 = __toESM(require_react());
var defaultLookAt = new Vector3(0, 0, -1);
-var normal = (function () {
+var normal = (function() {
const a6 = new Vector3();
const b5 = new Vector3();
const c2 = new Vector3();
const ab2 = new Vector3();
const ac = new Vector3();
- return function (v13, v22, v32, v5) {
+ return function(v13, v22, v32, v5) {
a6.copy(v13);
b5.copy(v22);
c2.copy(v32);
@@ -109424,7 +109394,7 @@ var FaceControls = (0, import_react26.forwardRef)(({
return target2;
}, [explCamera, irisLeftDirPos, irisLeftLookAt, irisRightDirPos, irisRightLookAt, scene, target2]);
const [current] = (0, import_react26.useState)(() => new Object3D());
- const update2 = (0, import_react26.useCallback)(function (delta, target3) {
+ const update2 = (0, import_react26.useCallback)(function(delta, target3) {
if (explCamera) {
var _target;
(_target = target3) !== null && _target !== void 0 ? _target : target3 = computeTarget();
diff --git a/app/node_modules/.vite/deps/@react-three_fiber.js b/app/node_modules/.vite/deps/@react-three_fiber.js
index 64140d2f..5d50e64e 100644
--- a/app/node_modules/.vite/deps/@react-three_fiber.js
+++ b/app/node_modules/.vite/deps/@react-three_fiber.js
@@ -28,23 +28,13 @@ import {
useLoader,
useStore,
useThree
-<<<<<<< HEAD
-} from "./chunk-5ESDTKMP.js";
-import "./chunk-NJ4V5H3P.js";
-import "./chunk-L3Z576C2.js";
-import "./chunk-GUQHL3N7.js";
-import "./chunk-TXHHHGR3.js";
-import "./chunk-2YVA4HRZ.js";
-import "./chunk-WUR7D6NS.js";
-=======
-} from "./chunk-CSHY5MMV.js";
-import "./chunk-LTNRPUSL.js";
+} from "./chunk-JRJA23OI.js";
import "./chunk-INS7YHTD.js";
import "./chunk-QURGMCZB.js";
+import "./chunk-LTNRPUSL.js";
import "./chunk-642Z5WD3.js";
import "./chunk-USXRE7Q2.js";
import "./chunk-ZNKPWGXJ.js";
->>>>>>> feat/#15
import "./chunk-G3PMV62Z.js";
export {
Canvas,
diff --git a/app/node_modules/.vite/deps/_metadata.json b/app/node_modules/.vite/deps/_metadata.json
index d5bb79cf..fa94fb62 100644
--- a/app/node_modules/.vite/deps/_metadata.json
+++ b/app/node_modules/.vite/deps/_metadata.json
@@ -1,343 +1,196 @@
{
-<<<<<<< HEAD
- "hash": "b2c5007d",
- "configHash": "d9a82a01",
- "lockfileHash": "8a04eea8",
- "browserHash": "c208d4ff",
-=======
"hash": "48124858",
- "configHash": "2be684c6",
- "lockfileHash": "dbdb05fd",
- "browserHash": "4b08622a",
->>>>>>> feat/#15
+ "configHash": "2be684c6",
+ "lockfileHash": "dbdb05fd",
+ "browserHash": "bc295ff7",
"optimized": {
- "react": {
- "src": "../../react/index.js",
- "file": "react.js",
-<<<<<<< HEAD
- "fileHash": "a26efb1d",
-=======
- "fileHash": "54ab4c2f",
->>>>>>> feat/#15
+ "react": {
+ "src": "../../react/index.js",
+ "file": "react.js",
+ "fileHash": "ca909492",
"needsInterop": true
- },
- "react-dom": {
- "src": "../../react-dom/index.js",
- "file": "react-dom.js",
-<<<<<<< HEAD
- "fileHash": "c6e68a6f",
-=======
- "fileHash": "ae1b5cb6",
->>>>>>> feat/#15
+ },
+ "react-dom": {
+ "src": "../../react-dom/index.js",
+ "file": "react-dom.js",
+ "fileHash": "9ea60d36",
"needsInterop": true
- },
- "react/jsx-dev-runtime": {
- "src": "../../react/jsx-dev-runtime.js",
- "file": "react_jsx-dev-runtime.js",
-<<<<<<< HEAD
- "fileHash": "7531df54",
-=======
- "fileHash": "835e3f15",
->>>>>>> feat/#15
+ },
+ "react/jsx-dev-runtime": {
+ "src": "../../react/jsx-dev-runtime.js",
+ "file": "react_jsx-dev-runtime.js",
+ "fileHash": "f778ce34",
"needsInterop": true
- },
- "react/jsx-runtime": {
- "src": "../../react/jsx-runtime.js",
- "file": "react_jsx-runtime.js",
-<<<<<<< HEAD
- "fileHash": "a247453f",
-=======
- "fileHash": "4c9e32b0",
->>>>>>> feat/#15
+ },
+ "react/jsx-runtime": {
+ "src": "../../react/jsx-runtime.js",
+ "file": "react_jsx-runtime.js",
+ "fileHash": "afe32f9c",
"needsInterop": true
- },
- "@radix-ui/react-avatar": {
- "src": "../../@radix-ui/react-avatar/dist/index.mjs",
- "file": "@radix-ui_react-avatar.js",
-<<<<<<< HEAD
- "fileHash": "d86de0d6",
-=======
- "fileHash": "953014a7",
->>>>>>> feat/#15
+ },
+ "@radix-ui/react-avatar": {
+ "src": "../../@radix-ui/react-avatar/dist/index.mjs",
+ "file": "@radix-ui_react-avatar.js",
+ "fileHash": "78604ab7",
"needsInterop": false
- },
- "@radix-ui/react-dropdown-menu": {
- "src": "../../@radix-ui/react-dropdown-menu/dist/index.mjs",
- "file": "@radix-ui_react-dropdown-menu.js",
-<<<<<<< HEAD
- "fileHash": "51cbea4a",
-=======
- "fileHash": "793919d7",
->>>>>>> feat/#15
+ },
+ "@radix-ui/react-dropdown-menu": {
+ "src": "../../@radix-ui/react-dropdown-menu/dist/index.mjs",
+ "file": "@radix-ui_react-dropdown-menu.js",
+ "fileHash": "7e6567c2",
"needsInterop": false
- },
- "@radix-ui/react-slot": {
- "src": "../../@radix-ui/react-slot/dist/index.mjs",
- "file": "@radix-ui_react-slot.js",
-<<<<<<< HEAD
- "fileHash": "d49e4181",
-=======
- "fileHash": "4ee317ec",
->>>>>>> feat/#15
+ },
+ "@radix-ui/react-slot": {
+ "src": "../../@radix-ui/react-slot/dist/index.mjs",
+ "file": "@radix-ui_react-slot.js",
+ "fileHash": "4f153a2d",
"needsInterop": false
- },
- "@react-three/drei": {
- "src": "../../@react-three/drei/index.js",
- "file": "@react-three_drei.js",
-<<<<<<< HEAD
- "fileHash": "49af0e0c",
-=======
- "fileHash": "bb1a1525",
->>>>>>> feat/#15
+ },
+ "@react-three/drei": {
+ "src": "../../@react-three/drei/index.js",
+ "file": "@react-three_drei.js",
+ "fileHash": "313a1f02",
"needsInterop": false
- },
- "@react-three/fiber": {
- "src": "../../@react-three/fiber/dist/react-three-fiber.esm.js",
- "file": "@react-three_fiber.js",
-<<<<<<< HEAD
- "fileHash": "6e6f65b1",
-=======
- "fileHash": "7a3ce954",
->>>>>>> feat/#15
+ },
+ "@react-three/fiber": {
+ "src": "../../@react-three/fiber/dist/react-three-fiber.esm.js",
+ "file": "@react-three_fiber.js",
+ "fileHash": "5e5643b4",
"needsInterop": false
- },
- "class-variance-authority": {
- "src": "../../class-variance-authority/dist/index.mjs",
- "file": "class-variance-authority.js",
-<<<<<<< HEAD
- "fileHash": "0e514934",
-=======
- "fileHash": "80d8c035",
->>>>>>> feat/#15
+ },
+ "class-variance-authority": {
+ "src": "../../class-variance-authority/dist/index.mjs",
+ "file": "class-variance-authority.js",
+ "fileHash": "69d37784",
"needsInterop": false
- },
- "clsx": {
- "src": "../../clsx/dist/clsx.mjs",
- "file": "clsx.js",
-<<<<<<< HEAD
- "fileHash": "e71ef32c",
-=======
- "fileHash": "bb4a0943",
->>>>>>> feat/#15
+ },
+ "clsx": {
+ "src": "../../clsx/dist/clsx.mjs",
+ "file": "clsx.js",
+ "fileHash": "861ef14c",
"needsInterop": false
- },
- "framer-motion": {
- "src": "../../framer-motion/dist/es/index.mjs",
- "file": "framer-motion.js",
-<<<<<<< HEAD
- "fileHash": "5b5818ee",
-=======
- "fileHash": "9729455b",
->>>>>>> feat/#15
+ },
+ "framer-motion": {
+ "src": "../../framer-motion/dist/es/index.mjs",
+ "file": "framer-motion.js",
+ "fileHash": "3f8d4bda",
"needsInterop": false
- },
- "lucide-react": {
- "src": "../../lucide-react/dist/esm/lucide-react.js",
- "file": "lucide-react.js",
-<<<<<<< HEAD
- "fileHash": "fb6a8921",
-=======
- "fileHash": "cdd57b8d",
->>>>>>> feat/#15
+ },
+ "lucide-react": {
+ "src": "../../lucide-react/dist/esm/lucide-react.js",
+ "file": "lucide-react.js",
+ "fileHash": "f8a0e731",
"needsInterop": false
- },
- "react-dom/client": {
- "src": "../../react-dom/client.js",
- "file": "react-dom_client.js",
-<<<<<<< HEAD
- "fileHash": "032f0a73",
-=======
- "fileHash": "49cc8986",
->>>>>>> feat/#15
+ },
+ "react-dom/client": {
+ "src": "../../react-dom/client.js",
+ "file": "react-dom_client.js",
+ "fileHash": "bb1fb188",
"needsInterop": true
- },
- "react-router-dom": {
- "src": "../../react-router-dom/dist/index.mjs",
- "file": "react-router-dom.js",
-<<<<<<< HEAD
- "fileHash": "fa45c285",
-=======
- "fileHash": "9982d9b7",
->>>>>>> feat/#15
+ },
+ "react-router-dom": {
+ "src": "../../react-router-dom/dist/index.mjs",
+ "file": "react-router-dom.js",
+ "fileHash": "69a5af47",
"needsInterop": false
- },
- "recharts": {
- "src": "../../recharts/es6/index.js",
- "file": "recharts.js",
-<<<<<<< HEAD
- "fileHash": "b3d6765a",
-=======
- "fileHash": "a27d1b2d",
->>>>>>> feat/#15
+ },
+ "recharts": {
+ "src": "../../recharts/es6/index.js",
+ "file": "recharts.js",
+ "fileHash": "8c3719f7",
"needsInterop": false
- },
- "tailwind-merge": {
- "src": "../../tailwind-merge/dist/bundle-mjs.mjs",
- "file": "tailwind-merge.js",
-<<<<<<< HEAD
- "fileHash": "47183e49",
-=======
- "fileHash": "3b07b318",
->>>>>>> feat/#15
+ },
+ "sonner": {
+ "src": "../../sonner/dist/index.mjs",
+ "file": "sonner.js",
+ "fileHash": "ff7fef4b",
"needsInterop": false
- },
- "three": {
- "src": "../../three/build/three.module.js",
- "file": "three.js",
-<<<<<<< HEAD
- "fileHash": "d78c89ed",
-=======
- "fileHash": "a18f1fc6",
->>>>>>> feat/#15
+ },
+ "tailwind-merge": {
+ "src": "../../tailwind-merge/dist/bundle-mjs.mjs",
+ "file": "tailwind-merge.js",
+ "fileHash": "b1f20ce9",
"needsInterop": false
- },
- "zustand": {
- "src": "../../zustand/esm/index.mjs",
- "file": "zustand.js",
-<<<<<<< HEAD
- "fileHash": "39f09270",
-=======
- "fileHash": "179748be",
->>>>>>> feat/#15
+ },
+ "three": {
+ "src": "../../three/build/three.module.js",
+ "file": "three.js",
+ "fileHash": "cae86099",
"needsInterop": false
- },
- "zustand/middleware": {
- "src": "../../zustand/esm/middleware.mjs",
- "file": "zustand_middleware.js",
-<<<<<<< HEAD
- "fileHash": "ce09abfc",
- "needsInterop": false
- },
- "sonner": {
- "src": "../../sonner/dist/index.mjs",
- "file": "sonner.js",
- "fileHash": "b1e28aee",
-=======
- "fileHash": "89cbbc77",
->>>>>>> feat/#15
+ },
+ "zustand": {
+ "src": "../../zustand/esm/index.mjs",
+ "file": "zustand.js",
+ "fileHash": "60f9f3ea",
"needsInterop": false
- }
- },
- "chunks": {
- "hls-Q6LDPZPT": {
- "file": "hls-Q6LDPZPT.js"
- },
- "vision_bundle-ZAS5UOAV": {
- "file": "vision_bundle-ZAS5UOAV.js"
- },
- "chunk-QJTQF54Q": {
- "file": "chunk-QJTQF54Q.js"
- },
-<<<<<<< HEAD
- "chunk-O4L7C4YS": {
- "file": "chunk-O4L7C4YS.js"
- },
- "chunk-7GZ4CI6Q": {
- "file": "chunk-7GZ4CI6Q.js"
- },
- "chunk-7GZ4CI6Q": {
- "file": "chunk-7GZ4CI6Q.js"
- },
- "chunk-OAEA5FZL": {
- "file": "chunk-OAEA5FZL.js"
- },
- "chunk-5ESDTKMP": {
- "file": "chunk-5ESDTKMP.js""chunk-5ESDTKMP": {
- "file": "chunk-5ESDTKMP.js"
- },
- "chunk-NJ4V5H3P": {
- "file": "chunk-NJ4V5H3P.js""chunk-NJ4V5H3P": {
- "file": "chunk-NJ4V5H3P.js"
- },
- "chunk-L3Z576C2": {
- "file": "chunk-L3Z576C2.js"
- },
- "chunk-6MXH2QM6": {
- "file": "chunk-6MXH2QM6.js""chunk-6MXH2QM6": {
- "file": "chunk-6MXH2QM6.js"
- },
- "chunk-GUQHL3N7": {
- "file": "chunk-GUQHL3N7.js""chunk-GUQHL3N7": {
- "file": "chunk-GUQHL3N7.js"
- },
- "chunk-EQCCHGRT": {
- "file": "chunk-EQCCHGRT.js"
- },
- "chunk-YWBEB5PG": {
- "file": "chunk-YWBEB5PG.js"
- },
- "chunk-YWBEB5PG": {
- "file": "chunk-YWBEB5PG.js"
- },
- "chunk-TXHHHGR3": {
- "file": "chunk-TXHHHGR3.js"
- },
- "chunk-23FVUG5N": {
- "file": "chunk-23FVUG5N.js"
- },
- "chunk-2VUH7NEY": {
- "file": "chunk-2VUH7NEY.js"
- },
- "chunk-23FVUG5N": {
- "file": "chunk-23FVUG5N.js"
- },
- "chunk-2VUH7NEY": {
- "file": "chunk-2VUH7NEY.js"
- },
- "chunk-YF4B4G2L": {
- "file": "chunk-YF4B4G2L.js"
-=======
+ },
+ "zustand/middleware": {
+ "src": "../../zustand/esm/middleware.mjs",
+ "file": "zustand_middleware.js",
+ "fileHash": "3b17a615",
+ "needsInterop": false
+ }
+ },
+ "chunks": {
+ "hls-Q6LDPZPT": {
+ "file": "hls-Q6LDPZPT.js"
+ },
+ "vision_bundle-ZAS5UOAV": {
+ "file": "vision_bundle-ZAS5UOAV.js"
+ },
+ "chunk-H4GSM2WL": {
+ "file": "chunk-H4GSM2WL.js"
+ },
"chunk-XGWIEMTH": {
- "file": "chunk-XGWIEMTH.js"
- },
- "chunk-H4GSM2WL": {
- "file": "chunk-H4GSM2WL.js"
- },
- "chunk-OAEA5FZL": {
- "file": "chunk-OAEA5FZL.js"
- },
- "chunk-CSHY5MMV": {
- "file": "chunk-CSHY5MMV.js"
- },
- "chunk-LTNRPUSL": {
- "file": "chunk-LTNRPUSL.js"
- },
- "chunk-INS7YHTD": {
- "file": "chunk-INS7YHTD.js"
- },
- "chunk-AFNBKP7P": {
- "file": "chunk-AFNBKP7P.js"
- },
- "chunk-QURGMCZB": {
- "file": "chunk-QURGMCZB.js"
- },
- "chunk-GRXJTWBV": {
- "file": "chunk-GRXJTWBV.js"
- },
- "chunk-642Z5WD3": {
- "file": "chunk-642Z5WD3.js"
- },
- "chunk-YLZ34CCM": {
- "file": "chunk-YLZ34CCM.js"
->>>>>>> feat/#15
- },
- "chunk-5HUACAZ7": {
- "file": "chunk-5HUACAZ7.js"
- },
- "chunk-HPBHRBIF": {
- "file": "chunk-HPBHRBIF.js"
- },
- "chunk-USXRE7Q2": {
- "file": "chunk-USXRE7Q2.js"
- },
- "chunk-ZNKPWGXJ": {
- "file": "chunk-ZNKPWGXJ.js"
- },
- "chunk-U7P2NEEE": {
- "file": "chunk-U7P2NEEE.js"
- },
- "chunk-G3PMV62Z": {
- "file": "chunk-G3PMV62Z.js"
- }
- }
- }
\ No newline at end of file
+ "file": "chunk-XGWIEMTH.js"
+ },
+ "chunk-OAEA5FZL": {
+ "file": "chunk-OAEA5FZL.js"
+ },
+ "chunk-AFNBKP7P": {
+ "file": "chunk-AFNBKP7P.js"
+ },
+ "chunk-QJTQF54Q": {
+ "file": "chunk-QJTQF54Q.js"
+ },
+ "chunk-JRJA23OI": {
+ "file": "chunk-JRJA23OI.js"
+ },
+ "chunk-INS7YHTD": {
+ "file": "chunk-INS7YHTD.js"
+ },
+ "chunk-QURGMCZB": {
+ "file": "chunk-QURGMCZB.js"
+ },
+ "chunk-LTNRPUSL": {
+ "file": "chunk-LTNRPUSL.js"
+ },
+ "chunk-U7P2NEEE": {
+ "file": "chunk-U7P2NEEE.js"
+ },
+ "chunk-GRXJTWBV": {
+ "file": "chunk-GRXJTWBV.js"
+ },
+ "chunk-YLZ34CCM": {
+ "file": "chunk-YLZ34CCM.js"
+ },
+ "chunk-642Z5WD3": {
+ "file": "chunk-642Z5WD3.js"
+ },
+ "chunk-5HUACAZ7": {
+ "file": "chunk-5HUACAZ7.js"
+ },
+ "chunk-HPBHRBIF": {
+ "file": "chunk-HPBHRBIF.js"
+ },
+ "chunk-USXRE7Q2": {
+ "file": "chunk-USXRE7Q2.js"
+ },
+ "chunk-ZNKPWGXJ": {
+ "file": "chunk-ZNKPWGXJ.js"
+ },
+ "chunk-G3PMV62Z": {
+ "file": "chunk-G3PMV62Z.js"
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/node_modules/.vite/deps/recharts.js b/app/node_modules/.vite/deps/recharts.js
index 83acd7d7..020a12ce 100644
--- a/app/node_modules/.vite/deps/recharts.js
+++ b/app/node_modules/.vite/deps/recharts.js
@@ -1,15 +1,15 @@
import {
_extends
} from "./chunk-H4GSM2WL.js";
+import {
+ clsx_default
+} from "./chunk-U7P2NEEE.js";
import {
require_react_dom
} from "./chunk-YLZ34CCM.js";
import {
require_react
} from "./chunk-ZNKPWGXJ.js";
-import {
- clsx_default
-} from "./chunk-U7P2NEEE.js";
import {
__commonJS,
__export,
diff --git a/backend/__pycache__/__init__.cpython-314.pyc b/backend/__pycache__/__init__.cpython-314.pyc
index c7ee4646..a795e147 100644
Binary files a/backend/__pycache__/__init__.cpython-314.pyc and b/backend/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/__pycache__/main.cpython-314.pyc b/backend/__pycache__/main.cpython-314.pyc
index 1f35b152..895d224e 100644
Binary files a/backend/__pycache__/main.cpython-314.pyc and b/backend/__pycache__/main.cpython-314.pyc differ
diff --git a/backend/api/__pycache__/routes_catalyst.cpython-314.pyc b/backend/api/__pycache__/routes_catalyst.cpython-314.pyc
index 66ee7004..a9cbf4a9 100644
Binary files a/backend/api/__pycache__/routes_catalyst.cpython-314.pyc and b/backend/api/__pycache__/routes_catalyst.cpython-314.pyc differ
diff --git a/backend/api/__pycache__/routes_crm.cpython-314.pyc b/backend/api/__pycache__/routes_crm.cpython-314.pyc
new file mode 100644
index 00000000..c6083d64
Binary files /dev/null and b/backend/api/__pycache__/routes_crm.cpython-314.pyc differ
diff --git a/backend/api/__pycache__/routes_oracle.cpython-314.pyc b/backend/api/__pycache__/routes_oracle.cpython-314.pyc
new file mode 100644
index 00000000..d6f15918
Binary files /dev/null and b/backend/api/__pycache__/routes_oracle.cpython-314.pyc differ
diff --git a/backend/auth/__pycache__/__init__.cpython-314.pyc b/backend/auth/__pycache__/__init__.cpython-314.pyc
index 1a12adc9..e052223f 100644
Binary files a/backend/auth/__pycache__/__init__.cpython-314.pyc and b/backend/auth/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/auth/__pycache__/dependencies.cpython-314.pyc b/backend/auth/__pycache__/dependencies.cpython-314.pyc
index 344dcf38..074b7ec7 100644
Binary files a/backend/auth/__pycache__/dependencies.cpython-314.pyc and b/backend/auth/__pycache__/dependencies.cpython-314.pyc differ
diff --git a/backend/db/__pycache__/__init__.cpython-314.pyc b/backend/db/__pycache__/__init__.cpython-314.pyc
index 47ab8034..092de460 100644
Binary files a/backend/db/__pycache__/__init__.cpython-314.pyc and b/backend/db/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/db/__pycache__/pool.cpython-314.pyc b/backend/db/__pycache__/pool.cpython-314.pyc
index 6b7d094c..ff516a62 100644
Binary files a/backend/db/__pycache__/pool.cpython-314.pyc and b/backend/db/__pycache__/pool.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/__init__.cpython-314.pyc b/backend/oracle/__pycache__/__init__.cpython-314.pyc
new file mode 100644
index 00000000..1668cb8e
Binary files /dev/null and b/backend/oracle/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/action_service.cpython-314.pyc b/backend/oracle/__pycache__/action_service.cpython-314.pyc
new file mode 100644
index 00000000..7b5976c1
Binary files /dev/null and b/backend/oracle/__pycache__/action_service.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/canvas_service.cpython-314.pyc b/backend/oracle/__pycache__/canvas_service.cpython-314.pyc
new file mode 100644
index 00000000..a93368bc
Binary files /dev/null and b/backend/oracle/__pycache__/canvas_service.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/collaboration_service.cpython-314.pyc b/backend/oracle/__pycache__/collaboration_service.cpython-314.pyc
new file mode 100644
index 00000000..8033ff64
Binary files /dev/null and b/backend/oracle/__pycache__/collaboration_service.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/data_access_gateway.cpython-314.pyc b/backend/oracle/__pycache__/data_access_gateway.cpython-314.pyc
new file mode 100644
index 00000000..5cff8f81
Binary files /dev/null and b/backend/oracle/__pycache__/data_access_gateway.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/persona_service.cpython-314.pyc b/backend/oracle/__pycache__/persona_service.cpython-314.pyc
new file mode 100644
index 00000000..6a26f409
Binary files /dev/null and b/backend/oracle/__pycache__/persona_service.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/policy_service.cpython-314.pyc b/backend/oracle/__pycache__/policy_service.cpython-314.pyc
new file mode 100644
index 00000000..45e7b172
Binary files /dev/null and b/backend/oracle/__pycache__/policy_service.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/prompt_orchestrator.cpython-314.pyc b/backend/oracle/__pycache__/prompt_orchestrator.cpython-314.pyc
new file mode 100644
index 00000000..53359130
Binary files /dev/null and b/backend/oracle/__pycache__/prompt_orchestrator.cpython-314.pyc differ
diff --git a/backend/oracle/__pycache__/router_v1.cpython-314.pyc b/backend/oracle/__pycache__/router_v1.cpython-314.pyc
new file mode 100644
index 00000000..dbc9541e
Binary files /dev/null and b/backend/oracle/__pycache__/router_v1.cpython-314.pyc differ
diff --git a/backend/routers/__pycache__/__init__.cpython-314.pyc b/backend/routers/__pycache__/__init__.cpython-314.pyc
index 4601017f..d00a93b5 100644
Binary files a/backend/routers/__pycache__/__init__.cpython-314.pyc and b/backend/routers/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/routers/__pycache__/cctv.cpython-314.pyc b/backend/routers/__pycache__/cctv.cpython-314.pyc
index 77b80a45..7d04670d 100644
Binary files a/backend/routers/__pycache__/cctv.cpython-314.pyc and b/backend/routers/__pycache__/cctv.cpython-314.pyc differ
diff --git a/backend/routers/__pycache__/scenes.cpython-314.pyc b/backend/routers/__pycache__/scenes.cpython-314.pyc
index 179cff8d..30a72bfe 100644
Binary files a/backend/routers/__pycache__/scenes.cpython-314.pyc and b/backend/routers/__pycache__/scenes.cpython-314.pyc differ
diff --git a/backend/routers/__pycache__/sentinel.cpython-314.pyc b/backend/routers/__pycache__/sentinel.cpython-314.pyc
index a4a9e2cc..5b0612ef 100644
Binary files a/backend/routers/__pycache__/sentinel.cpython-314.pyc and b/backend/routers/__pycache__/sentinel.cpython-314.pyc differ
diff --git a/backend/routers/__pycache__/vault.cpython-314.pyc b/backend/routers/__pycache__/vault.cpython-314.pyc
index 480dec7d..62f9e5a0 100644
Binary files a/backend/routers/__pycache__/vault.cpython-314.pyc and b/backend/routers/__pycache__/vault.cpython-314.pyc differ
diff --git a/backend/routers/__pycache__/videos.cpython-314.pyc b/backend/routers/__pycache__/videos.cpython-314.pyc
index 6dcc1279..d2ba80d1 100644
Binary files a/backend/routers/__pycache__/videos.cpython-314.pyc and b/backend/routers/__pycache__/videos.cpython-314.pyc differ
diff --git a/backend/services/__pycache__/__init__.cpython-314.pyc b/backend/services/__pycache__/__init__.cpython-314.pyc
index 2ccc4ff2..71539b9c 100644
Binary files a/backend/services/__pycache__/__init__.cpython-314.pyc and b/backend/services/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/services/__pycache__/ad_network_service.cpython-314.pyc b/backend/services/__pycache__/ad_network_service.cpython-314.pyc
new file mode 100644
index 00000000..06919339
Binary files /dev/null and b/backend/services/__pycache__/ad_network_service.cpython-314.pyc differ
diff --git a/backend/services/__pycache__/auto_mode_matcher.cpython-314.pyc b/backend/services/__pycache__/auto_mode_matcher.cpython-314.pyc
index 4563ad66..f1ec201f 100644
Binary files a/backend/services/__pycache__/auto_mode_matcher.cpython-314.pyc and b/backend/services/__pycache__/auto_mode_matcher.cpython-314.pyc differ
diff --git a/backend/services/__pycache__/mcp_registry.cpython-314.pyc b/backend/services/__pycache__/mcp_registry.cpython-314.pyc
new file mode 100644
index 00000000..8a00b3f4
Binary files /dev/null and b/backend/services/__pycache__/mcp_registry.cpython-314.pyc differ
diff --git a/backend/services/__pycache__/nemoclaw_client.cpython-314.pyc b/backend/services/__pycache__/nemoclaw_client.cpython-314.pyc
index 0b89c476..0c518efe 100644
Binary files a/backend/services/__pycache__/nemoclaw_client.cpython-314.pyc and b/backend/services/__pycache__/nemoclaw_client.cpython-314.pyc differ
diff --git a/backend/services/__pycache__/nemoclaw_runtime.cpython-314.pyc b/backend/services/__pycache__/nemoclaw_runtime.cpython-314.pyc
new file mode 100644
index 00000000..61469815
Binary files /dev/null and b/backend/services/__pycache__/nemoclaw_runtime.cpython-314.pyc differ
diff --git a/backend/tests/__pycache__/__init__.cpython-314.pyc b/backend/tests/__pycache__/__init__.cpython-314.pyc
new file mode 100644
index 00000000..e84ac059
Binary files /dev/null and b/backend/tests/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/tests/__pycache__/test_catalyst_routes.cpython-314-pytest-9.0.2.pyc b/backend/tests/__pycache__/test_catalyst_routes.cpython-314-pytest-9.0.2.pyc
new file mode 100644
index 00000000..a17fcd54
Binary files /dev/null and b/backend/tests/__pycache__/test_catalyst_routes.cpython-314-pytest-9.0.2.pyc differ
diff --git a/backend/tests/__pycache__/test_crm_routes.cpython-314-pytest-9.0.2.pyc b/backend/tests/__pycache__/test_crm_routes.cpython-314-pytest-9.0.2.pyc
new file mode 100644
index 00000000..5c4851f8
Binary files /dev/null and b/backend/tests/__pycache__/test_crm_routes.cpython-314-pytest-9.0.2.pyc differ
diff --git a/backend/tests/__pycache__/test_crm_routes.cpython-314.pyc b/backend/tests/__pycache__/test_crm_routes.cpython-314.pyc
new file mode 100644
index 00000000..c98ce5f4
Binary files /dev/null and b/backend/tests/__pycache__/test_crm_routes.cpython-314.pyc differ
diff --git a/backend/tests/__pycache__/test_crm_websocket.cpython-314-pytest-9.0.2.pyc b/backend/tests/__pycache__/test_crm_websocket.cpython-314-pytest-9.0.2.pyc
new file mode 100644
index 00000000..ce60e058
Binary files /dev/null and b/backend/tests/__pycache__/test_crm_websocket.cpython-314-pytest-9.0.2.pyc differ
diff --git a/backend/tests/__pycache__/test_nemoclaw_runtime.cpython-314-pytest-9.0.2.pyc b/backend/tests/__pycache__/test_nemoclaw_runtime.cpython-314-pytest-9.0.2.pyc
new file mode 100644
index 00000000..28e78c95
Binary files /dev/null and b/backend/tests/__pycache__/test_nemoclaw_runtime.cpython-314-pytest-9.0.2.pyc differ
diff --git a/backend/tests/__pycache__/test_nemoclaw_runtime.cpython-314.pyc b/backend/tests/__pycache__/test_nemoclaw_runtime.cpython-314.pyc
new file mode 100644
index 00000000..13f79a14
Binary files /dev/null and b/backend/tests/__pycache__/test_nemoclaw_runtime.cpython-314.pyc differ
diff --git a/backend/tests/__pycache__/test_oracle_routes.cpython-314-pytest-9.0.2.pyc b/backend/tests/__pycache__/test_oracle_routes.cpython-314-pytest-9.0.2.pyc
new file mode 100644
index 00000000..aca95c4d
Binary files /dev/null and b/backend/tests/__pycache__/test_oracle_routes.cpython-314-pytest-9.0.2.pyc differ
diff --git a/backend/tests/oracle/__pycache__/__init__.cpython-314.pyc b/backend/tests/oracle/__pycache__/__init__.cpython-314.pyc
new file mode 100644
index 00000000..621cf867
Binary files /dev/null and b/backend/tests/oracle/__pycache__/__init__.cpython-314.pyc differ
diff --git a/backend/tests/oracle/__pycache__/test_persona_service.cpython-314-pytest-9.0.2.pyc b/backend/tests/oracle/__pycache__/test_persona_service.cpython-314-pytest-9.0.2.pyc
new file mode 100644
index 00000000..3c7b4920
Binary files /dev/null and b/backend/tests/oracle/__pycache__/test_persona_service.cpython-314-pytest-9.0.2.pyc differ
diff --git a/backend/tests/oracle/__pycache__/test_persona_service.cpython-314.pyc b/backend/tests/oracle/__pycache__/test_persona_service.cpython-314.pyc
new file mode 100644
index 00000000..2cadac38
Binary files /dev/null and b/backend/tests/oracle/__pycache__/test_persona_service.cpython-314.pyc differ
diff --git a/infrastructure/desineuron_ingress/Caddyfile b/infrastructure/desineuron_ingress/Caddyfile
index 334f13cf..6b4863ac 100644
--- a/infrastructure/desineuron_ingress/Caddyfile
+++ b/infrastructure/desineuron_ingress/Caddyfile
@@ -42,18 +42,4 @@ ops.desineuron.in {
}
}
-comfy.desineuron.in {
- log {
- output file /var/log/caddy/access.log
- format json
- }
-
- reverse_proxy http://172.31.46.190:8188 {
- header_up Host {host}
- header_up X-Forwarded-Host {host}
- header_up X-Forwarded-Proto {scheme}
- header_up X-Forwarded-For {remote_host}
- }
-}
-
import /etc/caddy/managed/*.caddy
diff --git a/infrastructure/desineuron_ingress/TEAM_HANDOFF_2026-04-08.md b/infrastructure/desineuron_ingress/TEAM_HANDOFF_2026-04-08.md
index 2da103e6..45d4376c 100644
--- a/infrastructure/desineuron_ingress/TEAM_HANDOFF_2026-04-08.md
+++ b/infrastructure/desineuron_ingress/TEAM_HANDOFF_2026-04-08.md
@@ -19,7 +19,7 @@ Date: 2026-04-08
13. Remaining Improvement Ideas
14. Rollback
15. Team Summary
-16. Current Status Snapshot - 2026-04-11
+16. Current Status Snapshot - 2026-04-12
17. Linux Ops Control Plane
### Outcome
@@ -87,7 +87,7 @@ Current GPU worker:
- Type: `g6.12xlarge`
- Region: `us-east-1`
- Private IP: `172.31.46.190`
-- Current public IP: `18.208.176.121`
+- Current public IP: `100.31.64.121`
- Launch time: `2026-04-11T06:14:04Z`
Open ingress ports:
@@ -168,7 +168,7 @@ Public hostname checks through the new ingress:
- `talk.desineuron.in` -> `200 /login` on `talk.desineuron.in`
- `vpn.desineuron.in` -> `200`
- `ops.desineuron.in/login` -> `200`
-- `comfy.desineuron.in` -> `502`
+- `comfy.desineuron.in` -> `200`
Important note:
@@ -203,9 +203,8 @@ Current live path:
Current public result:
-- `comfy.desineuron.in` currently returns `502 Bad Gateway`
-- ingress route is present and Caddy is healthy
-- the current GPU backend is not yet listening on `172.31.46.190:8188`, so this is a backend readiness issue, not a DNS or edge-TLS issue
+- `comfy.desineuron.in` currently returns `200 OK`
+- ingress route is now managed dynamically instead of hardcoded to one GPU private IP
Current GPU service:
@@ -214,11 +213,20 @@ Current GPU service:
- log path: `/var/log/comfyui/service.log`
- port: `8188/tcp`
-Current backend state on `2026-04-11`:
+Current backend state on `2026-04-12`:
-- `comfyui.service` is `activating`
-- latest log shows ComfyUI startup and `Starting server`
-- the process is still not binding `8188`, so ingress sees the backend as unavailable
+- `comfyui.service` is `active`
+- `main.py` is present under `/opt/dlami/nvme/ComfyUI`
+- the process is listening on `0.0.0.0:8188`
+- the public ingress path is healthy again
+
+Auto-healing fix applied:
+
+- ComfyUI `systemd` service now runs an `ExecStartPre` recovery script at `/usr/local/bin/desineuron-ensure-comfyui.sh`
+- that script reclones/repairs `/opt/dlami/nvme/ComfyUI` if the tree is missing or damaged
+- Linux now runs `desineuron-comfy-route-sync.timer`
+- the timer updates the managed Caddy route for `comfy.desineuron.in` to the current private IP of the AWS instance tagged `DesineuronRole=comfyui`
+- this protects the public route from GPU instance IP drift without manual Caddy edits
Expected endpoints:
@@ -244,6 +252,10 @@ Infrastructure artifacts in repo:
- [desineuron-ingress-home-ip-sync.service](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/desineuron-ingress-home-ip-sync.service)
- [desineuron-ingress-home-ip-sync.timer](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/desineuron-ingress-home-ip-sync.timer)
- [install_linux_ingress_ip_sync.sh](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/install_linux_ingress_ip_sync.sh)
+- [sync_comfy_route.py](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/sync_comfy_route.py)
+- [desineuron-comfy-route-sync.service](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.service)
+- [desineuron-comfy-route-sync.timer](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.timer)
+- [install_linux_comfy_route_sync.sh](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/desineuron_ingress/install_linux_comfy_route_sync.sh)
- [README.md](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/infrastructure/ops_control_plane/README.md)
- [Desineuron Ops Control Plane Bibel.md](/F:/Workin%20In%20Progress/DESINEURON/GITLAB/Project_Velocity/.Agent%20Context/Bibels/Desineuron%20Ops%20Control%20Plane%20Bibel.md)
@@ -290,6 +302,37 @@ Current state:
- Last recorded home public IP: `223.185.28.89`
- Ingress SSH rule CIDR: `223.185.28.89/32`
+### Dynamic Comfy Route Sync
+
+Purpose:
+
+- keep `comfy.desineuron.in` mapped to the correct AWS GPU private IP even if the GPU instance public/private IP changes
+- remove the need to hand-edit `/etc/caddy/Caddyfile` for ComfyUI moves
+
+Design:
+
+- Linux runs `desineuron-comfy-route-sync.timer`
+- timer fires on boot and every 2 minutes
+- service looks for the newest running EC2 instance tagged `DesineuronRole=comfyui`
+- service reads its current private IP
+- service connects to the ingress node and updates the managed Caddy route with `/usr/local/bin/manage_desineuron_routes.py`
+- Caddy is validated and reloaded only after a successful route update
+
+Installed Linux paths:
+
+- `/usr/local/bin/sync_comfy_route.py`
+- `/etc/systemd/system/desineuron-comfy-route-sync.service`
+- `/etc/systemd/system/desineuron-comfy-route-sync.timer`
+- `/etc/desineuron-comfy-route-sync.env`
+- `/opt/desineuron-comfy-route-sync/.venv`
+- `/var/lib/desineuron-comfy-route-sync/current_target.txt`
+
+Current state:
+
+- Timer: enabled and active
+- Current synced target: `172.31.46.190`
+- Current target instance tag: `DesineuronRole=comfyui`
+
### Operational Commands
Check AWS ingress status:
@@ -319,6 +362,7 @@ ssh -i "$env:USERPROFILE\.ssh\id_ed25519_desineuron_lan" desineuron-node-01@192.
ssh -i "$env:USERPROFILE\.ssh\id_ed25519_desineuron_lan" desineuron-node-01@192.168.1.4 "echo '***' | sudo -S journalctl -u desineuron-ingress-home-ip-sync -n 50 --no-pager"
ssh -i "$env:USERPROFILE\.ssh\id_ed25519_desineuron_lan" desineuron-node-01@192.168.1.4 "echo '***' | sudo -S systemctl status desineuron-ops-control-plane.service --no-pager"
ssh -i "$env:USERPROFILE\.ssh\id_ed25519_desineuron_lan" desineuron-node-01@192.168.1.4 "echo '***' | sudo -S docker compose -f /opt/desineuron-ops-control-plane/docker-compose.yml ps"
+ssh -i "$env:USERPROFILE\.ssh\id_ed25519_desineuron_lan" desineuron-node-01@192.168.1.4 "echo '***' | sudo -S systemctl status desineuron-comfy-route-sync.service desineuron-comfy-route-sync.timer --no-pager"
```
Public endpoint validation:
@@ -449,14 +493,15 @@ Additional mapped route:
- `comfy.desineuron.in` now terminates on the same stable ingress and forwards to the GPU node's private address `172.31.46.190:8188`.
- No further DNS change is needed for ComfyUI.
-- The backend is supervised by `systemd`, but the current worker is not yet binding `8188`, so public access is currently degraded with `502`.
+- The backend is supervised by `systemd` and currently healthy.
+- The route is now auto-synced from Linux based on the tagged AWS ComfyUI worker, so future IP changes do not require manual ingress edits.
- The team can use:
- `https://comfy.desineuron.in/prompt`
- `https://comfy.desineuron.in/history/{prompt_id}`
- `https://comfy.desineuron.in/queue`
- `https://comfy.desineuron.in/upload/image`
-### Current Status Snapshot - 2026-04-11
+### Current Status Snapshot - 2026-04-12
Live public service state:
@@ -467,7 +512,7 @@ Live public service state:
- `talk.desineuron.in` -> `200`
- `vpn.desineuron.in` -> `200`
- `ops.desineuron.in/login` -> `200`
-- `comfy.desineuron.in` -> `502`
+- `comfy.desineuron.in` -> `200`
Linux-origin health:
@@ -490,10 +535,16 @@ Ingress health:
GPU ComfyUI state:
-- `comfyui.service` -> `activating`
-- latest logs show ComfyUI startup sequence completing toward `Starting server`
-- no active listener on `8188` yet
-- ingress cannot connect to `172.31.46.190:8188`, which is why the public result is `502`
+- `comfyui.service` -> `active`
+- `main.py` present under `/opt/dlami/nvme/ComfyUI`
+- listener present on `0.0.0.0:8188`
+- public ingress path is healthy
+
+Comfy auto-heal state:
+
+- `desineuron-comfy-route-sync.timer` -> `active`
+- synced target file -> `/var/lib/desineuron-comfy-route-sync/current_target.txt`
+- current synced target -> `172.31.46.190`
### Linux Ops Control Plane
diff --git a/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.service b/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.service
new file mode 100644
index 00000000..ddc09b13
--- /dev/null
+++ b/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Sync comfy.desineuron.in managed route to current GPU private IP
+After=network-online.target
+Wants=network-online.target
+
+[Service]
+Type=oneshot
+EnvironmentFile=/etc/desineuron-comfy-route-sync.env
+ExecStart=/opt/desineuron-comfy-route-sync/.venv/bin/python /usr/local/bin/sync_comfy_route.py
diff --git a/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.timer b/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.timer
new file mode 100644
index 00000000..e279a8b7
--- /dev/null
+++ b/infrastructure/desineuron_ingress/desineuron-comfy-route-sync.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Run comfy route sync on boot and every 2 minutes
+
+[Timer]
+OnBootSec=1min
+OnUnitActiveSec=2min
+Unit=desineuron-comfy-route-sync.service
+
+[Install]
+WantedBy=timers.target
diff --git a/infrastructure/desineuron_ingress/install_gpu_comfyui_service.sh b/infrastructure/desineuron_ingress/install_gpu_comfyui_service.sh
index 3c44f4bc..55bfbca9 100644
--- a/infrastructure/desineuron_ingress/install_gpu_comfyui_service.sh
+++ b/infrastructure/desineuron_ingress/install_gpu_comfyui_service.sh
@@ -4,22 +4,41 @@ set -euo pipefail
COMFY_DIR="/opt/dlami/nvme/ComfyUI"
SERVICE_NAME="comfyui"
LOG_DIR="/var/log/comfyui"
+ENSURE_SCRIPT="/usr/local/bin/desineuron-ensure-comfyui.sh"
if ! command -v git >/dev/null 2>&1; then
sudo apt-get update
sudo apt-get install -y git
fi
+sudo tee "${ENSURE_SCRIPT}" >/dev/null <<'EOF'
+#!/usr/bin/env bash
+set -euo pipefail
+
+COMFY_DIR="/opt/dlami/nvme/ComfyUI"
+
+sudo mkdir -p /opt/dlami/nvme
+sudo chown -R ubuntu:ubuntu /opt/dlami/nvme
+
if [ ! -d "${COMFY_DIR}/.git" ]; then
- sudo mkdir -p /opt/dlami/nvme
- sudo chown -R ubuntu:ubuntu /opt/dlami/nvme
+ rm -rf "${COMFY_DIR}"
git clone https://github.com/comfyanonymous/ComfyUI.git "${COMFY_DIR}"
else
- git -C "${COMFY_DIR}" pull --ff-only
+ git -C "${COMFY_DIR}" fetch --all --prune
+ git -C "${COMFY_DIR}" reset --hard origin/master
fi
python3 -m pip install -r "${COMFY_DIR}/requirements.txt"
+if [ ! -f "${COMFY_DIR}/main.py" ]; then
+ echo "ComfyUI main.py missing after ensure step" >&2
+ exit 1
+fi
+EOF
+sudo chmod 0755 "${ENSURE_SCRIPT}"
+
+sudo -u ubuntu "${ENSURE_SCRIPT}"
+
sudo mkdir -p "${LOG_DIR}"
sudo chown -R ubuntu:ubuntu "${LOG_DIR}"
@@ -36,6 +55,7 @@ Group=ubuntu
WorkingDirectory=/opt/dlami/nvme/ComfyUI
Environment=HOME=/home/ubuntu
Environment=PYTHONUNBUFFERED=1
+ExecStartPre=/usr/local/bin/desineuron-ensure-comfyui.sh
ExecStart=/usr/bin/python3 /opt/dlami/nvme/ComfyUI/main.py --listen 0.0.0.0 --port 8188 --disable-auto-launch
Restart=always
RestartSec=5
diff --git a/infrastructure/desineuron_ingress/install_linux_comfy_route_sync.sh b/infrastructure/desineuron_ingress/install_linux_comfy_route_sync.sh
new file mode 100644
index 00000000..05e0a49f
--- /dev/null
+++ b/infrastructure/desineuron_ingress/install_linux_comfy_route_sync.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+APP_ROOT=/opt/desineuron-comfy-route-sync
+VENV_PATH="$APP_ROOT/.venv"
+ENV_FILE=/etc/desineuron-comfy-route-sync.env
+SCRIPT_PATH=/usr/local/bin/sync_comfy_route.py
+SERVICE_FILE=/etc/systemd/system/desineuron-comfy-route-sync.service
+TIMER_FILE=/etc/systemd/system/desineuron-comfy-route-sync.timer
+
+sudo mkdir -p "$APP_ROOT" /var/lib/desineuron-comfy-route-sync
+python3 -m venv "$VENV_PATH"
+"$VENV_PATH/bin/pip" install --upgrade pip boto3
+
+sudo install -m 0755 /tmp/desineuron_ingress/sync_comfy_route.py "$SCRIPT_PATH"
+sudo install -m 0644 /tmp/desineuron_ingress/desineuron-comfy-route-sync.service "$SERVICE_FILE"
+sudo install -m 0644 /tmp/desineuron_ingress/desineuron-comfy-route-sync.timer "$TIMER_FILE"
+
+sudo tee "$ENV_FILE" >/dev/null < dict[str, str]:
+ data: dict[str, str] = {}
+ if not path.exists():
+ return data
+ for line in path.read_text(encoding="utf-8").splitlines():
+ line = line.strip()
+ if not line or line.startswith("#") or "=" not in line:
+ continue
+ key, value = line.split("=", 1)
+ data[key.strip()] = value.strip()
+ return data
+
+
+def env(name: str, default: str = "") -> str:
+ return os.environ.get(name, default)
+
+
+def resolve_target_instance(ec2) -> dict | None:
+ explicit_instance_id = env("COMFY_INSTANCE_ID")
+ if explicit_instance_id:
+ reservations = ec2.describe_instances(InstanceIds=[explicit_instance_id])["Reservations"]
+ for reservation in reservations:
+ for instance in reservation["Instances"]:
+ if instance["State"]["Name"] == "running":
+ return instance
+ return None
+
+ tag_key = env("COMFY_INSTANCE_TAG_KEY", "DesineuronRole")
+ tag_value = env("COMFY_INSTANCE_TAG_VALUE", "comfyui")
+ filters = [
+ {"Name": "instance-state-name", "Values": ["running"]},
+ {"Name": f"tag:{tag_key}", "Values": [tag_value]},
+ ]
+ reservations = ec2.describe_instances(Filters=filters)["Reservations"]
+ instances = [instance for reservation in reservations for instance in reservation["Instances"]]
+ if not instances:
+ return None
+ instances.sort(key=lambda row: row["LaunchTime"], reverse=True)
+ return instances[0]
+
+
+def upsert_route(hostname: str, private_ip: str, port: int) -> subprocess.CompletedProcess[str]:
+ ingress_host = env("INGRESS_SSH_HOST")
+ ingress_user = env("INGRESS_SSH_USER", "ec2-user")
+ ingress_port = env("INGRESS_SSH_PORT", "22")
+ ingress_key = env("INGRESS_SSH_KEY_PATH")
+ helper = env("INGRESS_ROUTE_HELPER", "/usr/local/bin/manage_desineuron_routes.py")
+ payload = json.dumps(
+ {
+ "hostname": hostname,
+ "scheme": "http",
+ "target_host": private_ip,
+ "target_port": port,
+ }
+ )
+ command = (
+ f"sudo {helper} upsert '{payload}'"
+ " && sudo caddy validate --config /etc/caddy/Caddyfile"
+ " && sudo systemctl reload caddy"
+ )
+ return subprocess.run(
+ [
+ "ssh",
+ "-o",
+ "StrictHostKeyChecking=no",
+ "-o",
+ "UserKnownHostsFile=/dev/null",
+ "-i",
+ ingress_key,
+ "-p",
+ ingress_port,
+ f"{ingress_user}@{ingress_host}",
+ command,
+ ],
+ capture_output=True,
+ text=True,
+ check=False,
+ )
+
+
+def main() -> int:
+ ops_env = load_env_file(Path(env("OPS_ENV_FILE", "/opt/desineuron-ops-control-plane/.env")))
+ for key in ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_DEFAULT_REGION"]:
+ if key not in os.environ and key in ops_env:
+ os.environ[key] = ops_env[key]
+ os.environ.setdefault("AWS_DEFAULT_REGION", ops_env.get("OPS_DEFAULT_REGION", "us-east-1"))
+ os.environ.setdefault("INGRESS_SSH_HOST", ops_env.get("OPS_INGRESS_SSH_HOST", ""))
+ os.environ.setdefault("INGRESS_SSH_USER", ops_env.get("OPS_INGRESS_SSH_USER", "ec2-user"))
+ os.environ.setdefault("INGRESS_SSH_PORT", ops_env.get("OPS_INGRESS_SSH_PORT", "22"))
+ normalized_key_path = ops_env.get("OPS_SSH_KEY_PATH", "/opt/desineuron-ops-control-plane/state/desineuron-l4-node.pem")
+ if normalized_key_path.startswith("/app/state/"):
+ normalized_key_path = normalized_key_path.replace("/app/state/", "/opt/desineuron-ops-control-plane/state/")
+ os.environ.setdefault("INGRESS_SSH_KEY_PATH", normalized_key_path)
+ os.environ.setdefault("INGRESS_ROUTE_HELPER", ops_env.get("OPS_INGRESS_ROUTE_HELPER", "/usr/local/bin/manage_desineuron_routes.py"))
+
+ region = os.environ["AWS_DEFAULT_REGION"]
+ hostname = env("COMFY_ROUTE_HOSTNAME", "comfy.desineuron.in")
+ port = int(env("COMFY_ROUTE_PORT", "8188"))
+ state_file = Path(env("COMFY_ROUTE_STATE_FILE", "/var/lib/desineuron-comfy-route-sync/current_target.txt"))
+
+ ec2 = boto3.client("ec2", region_name=region)
+ instance = resolve_target_instance(ec2)
+ if not instance:
+ print("No running comfyui target instance found", file=sys.stderr)
+ return 1
+
+ private_ip = instance.get("PrivateIpAddress")
+ if not private_ip:
+ print("Target instance has no private IP", file=sys.stderr)
+ return 1
+
+ current = state_file.read_text(encoding="utf-8").strip() if state_file.exists() else ""
+ if current == private_ip:
+ print(json.dumps({"status": "noop", "hostname": hostname, "target_host": private_ip}))
+ return 0
+
+ result = upsert_route(hostname, private_ip, port)
+ if result.returncode != 0:
+ print(result.stdout)
+ print(result.stderr, file=sys.stderr)
+ return result.returncode
+
+ state_file.parent.mkdir(parents=True, exist_ok=True)
+ state_file.write_text(private_ip, encoding="utf-8")
+ print(json.dumps({"status": "updated", "hostname": hostname, "target_host": private_ip}))
+ return 0
+
+
+if __name__ == "__main__":
+ raise SystemExit(main())